summaryrefslogtreecommitdiff
authoralwin <alwin>2004-10-26 01:08:58 (UTC)
committer alwin <alwin>2004-10-26 01:08:58 (UTC)
commitcd3245ade209b4672ab5c51003aa66b5908c67a1 (patch) (side-by-side diff)
treedfd4246557ff5d8804204387660de7e0afbd4032
parent9e97864f04686ca8fc672de950cbbef4ff6a5ec6 (diff)
downloadopie-cd3245ade209b4672ab5c51003aa66b5908c67a1.zip
opie-cd3245ade209b4672ab5c51003aa66b5908c67a1.tar.gz
opie-cd3245ade209b4672ab5c51003aa66b5908c67a1.tar.bz2
Resolved a feature request:
unique display of date-time of a mail maillist now sorted for mail-date as default, user can switch sort order to all other items (subject, author, size)
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/mail/libmailwrapper/genericwrapper.cpp10
-rw-r--r--noncore/net/mail/libmailwrapper/imapwrapper.cpp5
-rw-r--r--noncore/net/mail/libmailwrapper/mailstatics.cpp25
-rw-r--r--noncore/net/mail/libmailwrapper/mailstatics.h4
-rw-r--r--noncore/net/mail/libmailwrapper/mailtypes.cpp28
-rw-r--r--noncore/net/mail/libmailwrapper/mailtypes.h11
-rw-r--r--noncore/net/mail/mailistviewitem.cpp20
-rw-r--r--noncore/net/mail/mailistviewitem.h1
-rw-r--r--noncore/net/mail/mainwindow.cpp17
-rw-r--r--noncore/net/mail/viewmail.cpp6
10 files changed, 81 insertions, 46 deletions
diff --git a/noncore/net/mail/libmailwrapper/genericwrapper.cpp b/noncore/net/mail/libmailwrapper/genericwrapper.cpp
index 703235d..0ac842d 100644
--- a/noncore/net/mail/libmailwrapper/genericwrapper.cpp
+++ b/noncore/net/mail/libmailwrapper/genericwrapper.cpp
@@ -385,5 +385,5 @@ QStringList Genericwrapper::parseInreplies(mailimf_in_reply_to * in_replies)
void Genericwrapper::parseList(QValueList<Opie::Core::OSmartPointer<RecMail> > &target,mailsession*session,const QString&mailbox,bool mbox_as_to)
{
- int r;
+ int r,toffset;
mailmessage_list * env_list = 0;
r = mailsession_get_messages_list(session,&env_list);
@@ -438,11 +438,11 @@ void Genericwrapper::parseList(QValueList<Opie::Core::OSmartPointer<RecMail> > &
if (single_fields.fld_bcc)
mail->setBcc( parseAddressList( single_fields.fld_bcc->bcc_addr_list ) );
- if (single_fields.fld_orig_date)
- mail->setDate( parseDateTime( single_fields.fld_orig_date->dt_date_time ) );
- // crashes when accessing pop3 account?
+ if (single_fields.fld_orig_date) {
+ QDateTime d = parseDateTime( single_fields.fld_orig_date->dt_date_time,toffset);
+ mail->setDate( d,toffset );
+ }
if (single_fields.fld_message_id && single_fields.fld_message_id->mid_value) {
mail->setMsgid(QString(single_fields.fld_message_id->mid_value));
}
-
if (single_fields.fld_reply_to) {
QStringList t = parseAddressList(single_fields.fld_reply_to->rt_addr_list);
diff --git a/noncore/net/mail/libmailwrapper/imapwrapper.cpp b/noncore/net/mail/libmailwrapper/imapwrapper.cpp
index 56efa0b..8e5212b 100644
--- a/noncore/net/mail/libmailwrapper/imapwrapper.cpp
+++ b/noncore/net/mail/libmailwrapper/imapwrapper.cpp
@@ -373,5 +373,5 @@ RecMail*IMAPwrapper::parse_list_result(mailimap_msg_att* m_att)
mailimap_msg_att_dynamic*flist;
mailimap_flag_fetch*cflag;
- int size;
+ int size,toffset;
QBitArray mFlags(7);
QStringList addresslist;
@@ -425,5 +425,6 @@ RecMail*IMAPwrapper::parse_list_result(mailimap_msg_att* m_att)
if (item->att_data.att_static->att_type==MAILIMAP_MSG_ATT_ENVELOPE) {
mailimap_envelope * head = item->att_data.att_static->att_data.att_env;
- m->setDate(parseDateTime(head->env_date));
+ QDateTime d = parseDateTime(head->env_date,toffset);
+ m->setDate(d,toffset);
m->setSubject(convert_String((const char*)head->env_subject));
if (head->env_from!=NULL) {
diff --git a/noncore/net/mail/libmailwrapper/mailstatics.cpp b/noncore/net/mail/libmailwrapper/mailstatics.cpp
index 4878dc9..033ec28 100644
--- a/noncore/net/mail/libmailwrapper/mailstatics.cpp
+++ b/noncore/net/mail/libmailwrapper/mailstatics.cpp
@@ -1,25 +1,26 @@
#include "mailstatics.h"
#include <libetpan/libetpan.h>
-#include <qpe/timestring.h>
+//#include <qpe/timestring.h>
-QString MailStatics::parseDateTime(const mailimf_date_time *date )
+QDateTime MailStatics::parseDateTime(const mailimf_date_time *date,int&offset )
{
- if (!date) return "";
+ offset = 0;
+ if (!date) {
+ return QDateTime();
+ }
QDateTime da(QDate(date->dt_year,date->dt_month,date->dt_day),QTime(date->dt_hour,date->dt_min,date->dt_sec));
- QString timestring = TimeString::numberDateString(QDate(date->dt_year,date->dt_month,date->dt_day))+" ";
- timestring+=TimeString::timeString(QTime(date->dt_hour,date->dt_min,date->dt_sec))+" ";
- timestring.sprintf(timestring+" %+05i",date->dt_zone);
- return timestring;
+ offset = date->dt_zone;
+ return da;
}
-QString MailStatics::parseDateTime(const char*date)
+QDateTime MailStatics::parseDateTime(const char*date,int&offset)
{
- mailimf_date_time * date_time;
- QString d = "";
+ mailimf_date_time * date_time=0;
+ QDateTime d;
size_t cur_tok = 0;
if (!date) return d;
int r = mailimf_date_time_parse(date,strlen(date),&cur_tok,&date_time);
if (r==MAILIMF_NO_ERROR) {
- d = parseDateTime(date_time);
+ d = parseDateTime(date_time,offset);
}
if (date_time) {
@@ -27,3 +28,3 @@ QString MailStatics::parseDateTime(const char*date)
}
return d;
-} \ No newline at end of file
+}
diff --git a/noncore/net/mail/libmailwrapper/mailstatics.h b/noncore/net/mail/libmailwrapper/mailstatics.h
index 841d14d..c714ead 100644
--- a/noncore/net/mail/libmailwrapper/mailstatics.h
+++ b/noncore/net/mail/libmailwrapper/mailstatics.h
@@ -10,6 +10,6 @@ class MailStatics
{
protected:
- static QString parseDateTime(const mailimf_date_time * date);
- static QString parseDateTime(const char*date);
+ static QDateTime parseDateTime(const mailimf_date_time * date,int&offset);
+ static QDateTime parseDateTime(const char*date,int&offset);
MailStatics(){};
virtual ~MailStatics(){};
diff --git a/noncore/net/mail/libmailwrapper/mailtypes.cpp b/noncore/net/mail/libmailwrapper/mailtypes.cpp
index d4395a2..b009b75 100644
--- a/noncore/net/mail/libmailwrapper/mailtypes.cpp
+++ b/noncore/net/mail/libmailwrapper/mailtypes.cpp
@@ -2,4 +2,5 @@
#include <opie2/odebug.h>
+#include <qpe/timestring.h>
#include <stdlib.h>
@@ -7,5 +8,5 @@
using namespace Opie::Core;
RecMail::RecMail()
- :Opie::Core::ORefCount(),subject(""),date(""),from(""),mbox(""),msg_id(""),msg_number(0),msg_size(0),msg_flags(7)
+ :Opie::Core::ORefCount(),subject(""),from(""),mbox(""),msg_id(""),msg_number(0),msg_size(0),msg_flags(7),maildate(),date("")
{
init();
@@ -13,9 +14,9 @@ RecMail::RecMail()
RecMail::RecMail(const RecMail&old)
- :Opie::Core::ORefCount(),subject(""),date(""),from(""),mbox(""),msg_id(""),msg_number(0),msg_flags(7)
+ :Opie::Core::ORefCount(),subject(""),from(""),mbox(""),msg_id(""),msg_number(0),msg_flags(7),maildate(),date("")
{
init();
copy_old(old);
- odebug << "Copy constructor RecMail" << oendl;
+ odebug << "Copy constructor RecMail" << oendl;
}
@@ -28,4 +29,5 @@ void RecMail::copy_old(const RecMail&old)
{
subject = old.subject;
+ maildate = old.maildate;
date = old.date;
mbox = old.mbox;
@@ -54,4 +56,15 @@ void RecMail::init()
}
+void RecMail::setDate( const QDateTime&a,int offset)
+{
+ QString timestring = TimeString::numberDateString(a.date())+" ";
+ timestring+=TimeString::timeString(a.time());
+ if (offset > 0) {
+ timestring.sprintf(timestring+" %+05i",offset);
+ }
+ date = timestring;
+ maildate = a;
+}
+
void RecMail::setWrapper(AbstractMail*awrapper)
{
@@ -135,5 +148,5 @@ RecPart::RecPart(const RecPart&old)
m_Parameters = old.m_Parameters;
m_poslist = old.m_poslist;
- odebug << "RecPart copy constructor" << oendl;
+ odebug << "RecPart copy constructor" << oendl;
}
@@ -259,5 +272,5 @@ RecBody::RecBody(const RecBody&old)
m_PartsList = old.m_PartsList;
m_description = old.m_description;
- odebug << "Recbody copy constructor" << oendl;
+ odebug << "Recbody copy constructor" << oendl;
}
@@ -324,5 +337,5 @@ encodedString::encodedString(const encodedString&old)
init();
copy_old(old);
- odebug << "encodedeString: copy constructor!" << oendl;
+ odebug << "encodedeString: copy constructor!" << oendl;
}
@@ -331,5 +344,5 @@ encodedString& encodedString::operator=(const encodedString&old)
init();
copy_old(old);
- odebug << "encodedString: assign operator!" << oendl;
+ odebug << "encodedString: assign operator!" << oendl;
return *this;
}
@@ -397,3 +410,2 @@ folderStat&folderStat::operator=(const folderStat&old)
return *this;
}
-
diff --git a/noncore/net/mail/libmailwrapper/mailtypes.h b/noncore/net/mail/libmailwrapper/mailtypes.h
index c317880..272514c 100644
--- a/noncore/net/mail/libmailwrapper/mailtypes.h
+++ b/noncore/net/mail/libmailwrapper/mailtypes.h
@@ -16,4 +16,5 @@
#include <qmap.h>
#include <qvaluelist.h>
+#include <qdatetime.h>
class AbstractMail;
@@ -39,6 +40,4 @@ public:
const unsigned int getNumber()const{return msg_number;}
void setNumber(unsigned int number){msg_number=number;}
- const QString&getDate()const{ return date; }
- void setDate( const QString&a ) { date = a; }
const QString&getFrom()const{ return from; }
void setFrom( const QString&a ) { from = a; }
@@ -72,6 +71,10 @@ public:
AbstractMail* Wrapper();
+ const QDateTime&getDate()const{ return maildate; }
+ const QString&getStringDate()const{return date;}
+ void setDate( const QDateTime&a,int offset=0 );
+
protected:
- QString subject,date,from,mbox,msg_id,replyto;
+ QString subject,from,mbox,msg_id,replyto;
unsigned int msg_number,msg_size;
QBitArray msg_flags;
@@ -80,4 +83,6 @@ protected:
void init();
void copy_old(const RecMail&old);
+ QDateTime maildate;
+ QString date;
};
diff --git a/noncore/net/mail/mailistviewitem.cpp b/noncore/net/mail/mailistviewitem.cpp
index 0b926da..d3a0723 100644
--- a/noncore/net/mail/mailistviewitem.cpp
+++ b/noncore/net/mail/mailistviewitem.cpp
@@ -3,4 +3,5 @@
#include <qtextstream.h>
#include <qpe/resource.h>
+#include <qpe/timestring.h>
MailListViewItem::MailListViewItem(QListView * parent, MailListViewItem * item )
@@ -14,5 +15,5 @@ void MailListViewItem::showEntry()
setPixmap( 0, Resource::loadPixmap( "mail/kmmsgreplied") );
} else if ( mail_data->getFlags().testBit( FLAG_SEEN ) == true ) {
- /* I think it looks nicer if there are not such a log of icons but only on mails
+ /* I think it looks nicer if there are not such a lot of icons but only on mails
replied or new - Alwin*/
//setPixmap( 0, Resource::loadPixmap( "mail/kmmsgunseen") );
@@ -49,9 +50,22 @@ void MailListViewItem::showEntry()
o << s << " " << q << "Byte";
}
-
setText(1,mail_data->getSubject());
setText(2,mail_data->getFrom());
setText(3,fsize);
- setText(4,mail_data->getDate());
+ setText(4,mail_data->getStringDate());
+}
+
+QString MailListViewItem::key(int col,bool) const
+{
+ QString temp;
+ if (col == 4) {
+ temp.sprintf( "%08d",QDateTime().secsTo(mail_data->getDate()));
+ return temp;
+ }
+ if (col == 3) {
+ temp.sprintf( "%020d",mail_data->Msgsize());
+ return temp;
+ }
+ return text(col);
}
diff --git a/noncore/net/mail/mailistviewitem.h b/noncore/net/mail/mailistviewitem.h
index d953d83..ce64ca9 100644
--- a/noncore/net/mail/mailistviewitem.h
+++ b/noncore/net/mail/mailistviewitem.h
@@ -17,4 +17,5 @@ public:
MAILLIB::ATYPE wrapperType();
+ virtual QString key(int col,bool) const;
protected:
RecMailP mail_data;
diff --git a/noncore/net/mail/mainwindow.cpp b/noncore/net/mail/mainwindow.cpp
index 6252fc2..c115b32 100644
--- a/noncore/net/mail/mainwindow.cpp
+++ b/noncore/net/mail/mainwindow.cpp
@@ -104,5 +104,6 @@ MainWindow::MainWindow( QWidget *parent, const char *name, WFlags flags )
mailView->addColumn( tr( "Date" ));
mailView->setAllColumnsShowFocus(true);
- mailView->setSorting(-1);
+ mailView->setShowSortIndicator(true);
+ mailView->setSorting(4,false);
statusWidget = new StatusWidget( wrapperBox );
@@ -144,5 +145,5 @@ MainWindow::~MainWindow()
void MainWindow::appMessage(const QCString &, const QByteArray &)
{
- odebug << "appMessage not reached" << oendl;
+ odebug << "appMessage not reached" << oendl;
}
@@ -178,30 +179,30 @@ void MainWindow::slotEditSettings()
void MainWindow::slotShowFolders( bool )
{
- odebug << "slotShowFolders not reached" << oendl;
+ odebug << "slotShowFolders not reached" << oendl;
}
void MainWindow::refreshMailView(const QValueList<RecMailP>&)
{
- odebug << "refreshMailView not reached" << oendl;
+ odebug << "refreshMailView not reached" << oendl;
}
void MainWindow::mailLeftClicked(int, QListViewItem *,const QPoint&,int )
{
- odebug << "mailLeftClicked not reached" << oendl;
+ odebug << "mailLeftClicked not reached" << oendl;
}
void MainWindow::displayMail()
{
- odebug << "displayMail not reached" << oendl;
+ odebug << "displayMail not reached" << oendl;
}
void MainWindow::slotDeleteMail()
{
- odebug << "deleteMail not reached" << oendl;
+ odebug << "deleteMail not reached" << oendl;
}
void MainWindow::mailHold(int, QListViewItem *,const QPoint&,int )
{
- odebug << "mailHold not reached" << oendl;
+ odebug << "mailHold not reached" << oendl;
}
diff --git a/noncore/net/mail/viewmail.cpp b/noncore/net/mail/viewmail.cpp
index ce694d5..d5f9b7f 100644
--- a/noncore/net/mail/viewmail.cpp
+++ b/noncore/net/mail/viewmail.cpp
@@ -145,5 +145,5 @@ void ViewMail::setBody(const RecBodyP&body )
for (;it!=body->Parts()[i]->Parameters().end();++it)
{
- odebug << it.key() << oendl;
+ odebug << it.key() << oendl;
if (it.key().lower()=="name")
{
@@ -248,5 +248,5 @@ void ViewMail::slotItemClicked( QListViewItem * item , const QPoint & point, int
break ;
- case 2:
+ case 2:
{
QString tmpfile = "/tmp/opiemail-image";
@@ -290,5 +290,5 @@ void ViewMail::setMail(const RecMailP&mail )
m_mail[0] = mail->getFrom();
m_mail[1] = mail->getSubject();
- m_mail[3] = mail->getDate();
+ m_mail[3] = mail->getStringDate();
m_mail[4] = mail->Msgid();