24 #include <kio/global.h>
30 #include <QTextStream>
40 m_only_new( onlynew ),
41 m_savetime( savetime ),
43 m_prev_status( false ),
47 if(
m_info->type() == UrlInfo::invalid )
50 if( !open( savetime ) )
53 if(
m_info->type() == UrlInfo::message )
65 return m_current_line;
78 m_current_line = m_stream->readLine();
79 m_atend = m_current_line.isNull();
83 m_prev_status = m_status;
88 if( m_current_line.left( 5 ) ==
"From " )
90 m_current_id = m_current_line;
91 m_prev_status = m_status;
95 }
else if( m_only_new )
97 if( m_header && m_current_line.left( 7 ) ==
"Status:" &&
98 ! m_current_line.contains(
"U" ) && ! m_current_line.contains(
"N" ) )
104 if( m_current_line.trimmed().isEmpty() )
115 while( !m_atend && m_current_id !=
id )
118 return m_current_id == id;
123 unsigned int result = m_current_line.length();
129 result += m_current_line.length();
139 m_stream->device()->reset();
140 m_atend = m_stream->atEnd();
148 return m_atend || (
m_info->type() == UrlInfo::message && m_current_id !=
m_info->id() );
153 return !m_only_new || m_prev_status;
156 bool ReadMBox::open(
bool savetime )
160 QFileInfo info(
m_info->filename() );
162 m_prev_time =
new utimbuf;
163 m_prev_time->actime = info.lastRead().toTime_t();
164 m_prev_time->modtime = info.lastModified().toTime_t();
170 m_file =
new QFile(
m_info->filename() );
171 if( !m_file->open( QIODevice::ReadOnly ) )
177 m_stream =
new QTextStream( m_file );
183 void ReadMBox::close()
188 delete m_stream; m_stream = 0;
190 delete m_file; m_file = 0;
194 utime( QFile::encodeName(
m_info->filename() ), m_prev_time );
195 delete m_prev_time; m_prev_time = 0;