[prev in list] [next in list] [prev in thread] [next in thread]
List: kmail-devel
Subject: [Patch] Updated threading patch
From: Matt Newell <newellm () proaxis ! com>
Date: 2001-01-31 2:29:26
[Download RAW message or body]
This patch fixes the two issues that you described earlier.
Matt Newell
["thread2.diff" (text/x-diff)]
Common subdirectories: kmail/.deps and threadkmail/.deps
Common subdirectories: kmail/CVS and threadkmail/CVS
diff -u kmail/configuredialog.cpp threadkmail/configuredialog.cpp
--- kmail/configuredialog.cpp Mon Jan 29 19:25:08 2001
+++ threadkmail/configuredialog.cpp Tue Jan 30 16:47:09 2001
@@ -849,10 +849,23 @@
new QCheckBox( i18n("Display message sizes"), page3 );
vlay->addWidget( mAppearance.messageSizeCheck );
- mAppearance.nestedMessagesCheck =
+ mAppearance.nestedMessagesCheck =
new QCheckBox( i18n("Thread list of message headers"), page3 );
vlay->addWidget( mAppearance.nestedMessagesCheck );
+ QButtonGroup *threadGroup = new QButtonGroup( i18n("Message header threading \
options"), page3 ); + vlay->addWidget( threadGroup );
+ QVBoxLayout * vthread = new QVBoxLayout( threadGroup, spacingHint() );
+ vthread->addSpacing( fontMetrics().lineSpacing() );
+ mAppearance.rdAlwaysOpen = new QRadioButton( i18n("Always keep threads open"), \
threadGroup ); + vthread->addWidget( mAppearance.rdAlwaysOpen );
+ mAppearance.rdDefaultOpen = new QRadioButton( i18n("Threads default to open"), \
threadGroup ); + vthread->addWidget( mAppearance.rdDefaultOpen );
+ mAppearance.rdDefaultClosed = new QRadioButton( i18n("Threads default to closed"), \
threadGroup ); + vthread->addWidget( mAppearance.rdDefaultClosed );
+ mAppearance.rdUnreadOpen = new QRadioButton( i18n("Open threads that contain new \
or unread messages"), threadGroup ); + vthread->addWidget( mAppearance.rdUnreadOpen \
); +
QButtonGroup *group = new QButtonGroup( i18n("HTML"), page3 );
vlay->addWidget( group );
QVBoxLayout *vlay2 = new QVBoxLayout( group, spacingHint() );
@@ -1499,6 +1512,24 @@
state = config.readBoolEntry( "nestedMessages", false );
mAppearance.nestedMessagesCheck->setChecked( state );
+ switch( config.readNumEntry( "nestingPolicy", 3 ) )
+ {
+ case 0:
+ mAppearance.rdAlwaysOpen->setChecked( true );
+ break;
+ case 1:
+ mAppearance.rdDefaultOpen->setChecked( true );
+ break;
+ case 2:
+ mAppearance.rdDefaultClosed->setChecked( true );
+ break;
+ case 3:
+ mAppearance.rdUnreadOpen->setChecked( true );
+ break;
+ default:
+ mAppearance.rdUnreadOpen->setChecked( true );
+ break;
+ }
config.setGroup("Reader");
state = config.readBoolEntry( "htmlMail", false );
mAppearance.htmlMailCheck->setChecked( !state );
@@ -1955,6 +1986,16 @@
bool nestedMessages = mAppearance.nestedMessagesCheck->isChecked();
config.writeEntry( "nestedMessages", nestedMessages );
+
+ int threadPolicy = 3;
+ if( mAppearance.rdAlwaysOpen->isChecked() )
+ threadPolicy = 0;
+ else if( mAppearance.rdDefaultOpen->isChecked() )
+ threadPolicy = 1;
+ else if( mAppearance.rdDefaultClosed->isChecked() )
+ threadPolicy = 2;
+
+ config.writeEntry( "nestingPolicy", threadPolicy );
config.setGroup("Reader");
bool htmlMail = mAppearance.htmlMailCheck->isChecked();
diff -u kmail/configuredialog.h threadkmail/configuredialog.h
--- kmail/configuredialog.h Mon Jan 29 19:25:08 2001
+++ threadkmail/configuredialog.h Tue Jan 30 16:47:09 2001
@@ -293,6 +293,10 @@
QCheckBox *longFolderCheck;
QCheckBox *messageSizeCheck;
QCheckBox *nestedMessagesCheck;
+ QRadioButton *rdAlwaysOpen;
+ QRadioButton *rdDefaultOpen;
+ QRadioButton *rdDefaultClosed;
+ QRadioButton *rdUnreadOpen;
QCheckBox *htmlMailCheck;
int activeFontIndex;
QFont font[6];
diff -u kmail/kmfolder.cpp threadkmail/kmfolder.cpp
--- kmail/kmfolder.cpp Mon Jan 29 19:25:08 2001
+++ threadkmail/kmfolder.cpp Tue Jan 30 16:47:10 2001
@@ -1520,7 +1520,6 @@
relativePath = relativePath.right( relativePath.length() - 1 ) + "/";
return relativePath + QString(name());
}
-
//-----------------------------------------------------------------------------
void KMFolder::readConfig()
{
diff -u kmail/kmheaders.cpp threadkmail/kmheaders.cpp
--- kmail/kmheaders.cpp Mon Jan 29 19:25:08 2001
+++ threadkmail/kmheaders.cpp Tue Jan 30 18:26:46 2001
@@ -120,6 +120,11 @@
KMMsgStatus flag;
QString fromStr, subjStr;
KMMsgBase *mMsgBase = mFolder->getMsgBase( mMsgId );
+ KMHeaderItem * topOfThread = this;
+ int threadingPolicy = ((KMHeaders*)listView())->getNestingPolicy();
+ while(topOfThread->parent())
+ topOfThread = (KMHeaderItem*)topOfThread->parent();
+
if(mMsgBase==NULL)
return;
@@ -147,15 +152,20 @@
setText( mPaintInfo->sizeCol, QString( "%1" ).arg( mMsgBase->msgSize()));
mColor = &mPaintInfo->colFore;
+
switch (flag)
{
case KMMsgStatusNew:
setPixmap( 0, *KMHeaders::pixNew );
mColor = &mPaintInfo->colNew;
+ if(threadingPolicy==3)
+ threadingPolicy=1;
break;
case KMMsgStatusUnread:
setPixmap( 0, *KMHeaders::pixUns );
mColor = &mPaintInfo->colUnread;
+ if(threadingPolicy==3)
+ threadingPolicy=1;
break;
case KMMsgStatusDeleted:
setPixmap( 0, *KMHeaders::pixDel );
@@ -177,6 +187,9 @@
break;
};
+ if(threadingPolicy < 2)
+ topOfThread->setOpen( true );
+
mSortArrival = QString( "%1" ).arg( mMsgId, 8, 36 );
const int dateLength = 30;
@@ -205,6 +218,21 @@
mColor = c;
repaint();
}
+ //Opens all children in the thread
+ void setOpen( bool open )
+ {
+ if(open){
+ QListViewItem * lvchild;
+ lvchild = firstChild();
+ while(lvchild){
+ lvchild->setOpen( true );
+ lvchild = lvchild->nextSibling();
+ }
+ QListViewItem::setOpen( true );
+ }else
+ QListViewItem::setOpen( false );
+ }
+
void paintCell( QPainter * p, const QColorGroup & cg,
int column, int width, int align )
@@ -276,6 +304,7 @@
setMultiSelection( TRUE );
setAllColumnsShowFocus( TRUE );
mNested = false;
+ nestingPolicy = 3;
mNestedOverride = false;
mousePressed = FALSE;
@@ -441,11 +470,22 @@
void KMHeaders::refreshNestedState(void)
{
bool oldState = mNested;
+ int oldNestPolicy = nestingPolicy;
KConfig* config = kapp->config();
config->setGroup("Geometry");
mNested = config->readBoolEntry( "nestedMessages", FALSE );
- if (oldState != mNested)
+
+ nestingPolicy = config->readNumEntry( "nestingPolicy", 3 );
+ if ((nestingPolicy!=oldNestPolicy)||(oldState != mNested))
+ {
+ if( (nestingPolicy == 0)||(!mNested) )
+ setRootIsDecorated( false );
+ else
+ setRootIsDecorated( mNestedOverride||mNested );
+
reset();
+ }
+
}
//-----------------------------------------------------------------------------
@@ -480,6 +520,13 @@
config->setGroup("Geometry");
mNested = config->readBoolEntry( "nestedMessages", FALSE );
+ nestingPolicy = config->readNumEntry( "nestingPolicy", 3 );
+
+ if( (nestingPolicy == 0)||(!mNested) )
+ setRootIsDecorated( false );
+ else
+ setRootIsDecorated( mNestedOverride||mNested );
+
}
@@ -705,10 +752,10 @@
if (replyToId.isEmpty() || !mIdTree[replyToId])
hi = new KMHeaderItem( this, mFolder, id, &mPaintInfo );
else {
+
KMHeaderItem *parent = mIdTree[replyToId];
assert(parent);
hi = new KMHeaderItem( parent, mFolder, id, &mPaintInfo );
- parent->setOpen( true );
}
if (!mIdTree[msgId])
mIdTree.replace( msgId, hi );
@@ -1711,7 +1758,6 @@
recursivelyAddChildren( *it, hi );
}
- parent->setOpen( true );
}
@@ -1964,8 +2010,8 @@
mousePressed = TRUE;
if (!(lvi->isSelected())) {
clearSelection();
- KMHeadersInherited::contentsMousePressEvent(e);
}
+ KMHeadersInherited::contentsMousePressEvent(e);
}
else if ((e->button() == LeftButton) && (e->state() & ShiftButton)) {
if (!shiftSelection( beginSelection, lvi ))
@@ -2179,8 +2225,8 @@
//-----------------------------------------------------------------------------
void KMHeaders::setOpen( QListViewItem *item, bool open )
{
- if (open)
- KMHeadersInherited::setOpen( item, open );
+ if( (nestingPolicy) || open )
+ KMHeadersInherited::setOpen( item, open );
}
//-----------------------------------------------------------------------------
diff -u kmail/kmheaders.h threadkmail/kmheaders.h
--- kmail/kmheaders.h Mon Jan 29 19:25:08 2001
+++ threadkmail/kmheaders.h Tue Jan 30 16:47:10 2001
@@ -142,6 +142,7 @@
// Double force items to always be open
virtual void setOpen ( QListViewItem *, bool );
+ int getNestingPolicy(){ return nestingPolicy; }
signals:
// emitted when the list view item corresponding to this message
// has been selected
@@ -256,6 +257,7 @@
QDict< bool > mTreeSeen;
QDict< bool > mTreeToplevel;
bool mNested, mNestedOverride;
+ int nestingPolicy;
static bool mTrue, mFalse; // These must replaced by something better!
Common subdirectories: kmail/pics and threadkmail/pics
_______________________________________________
Kmail Developers mailing list
Kmail@master.kde.org
http://master.kde.org/mailman/listinfo/kmail
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic