[prev in list] [next in list] [prev in thread] [next in thread]
List: kmail-devel
Subject: Return of the mutant mailing-list aware folders springtime patch
From: Guillaume Laurent <glaurent () telegraph-road ! org>
Date: 2000-08-30 23:52:15
[Download RAW message or body]
(To store in the fridge for post-freeze time)
Now middle-clicking on a mailing-list folder pops up a composer with the 'To'
field set to the mailing-list address.
--
Guillaume.
http://www.telegraph-road.org
["kmail_mailing_list_folder_patch" (text/plain)]
Only in kmail: .libs
Only in kmail: kmail
Only in kmail: kmailIface.kidl
Only in kmail: kmailIface_skel.cpp
Only in kmail: kmailIface_stub.cpp
Only in kmail: kmailIface_stub.h
Only in kmail: kmail_meta_unload.cpp
diff -x *.moc -x *.sniffdir -x *.o -x *.proj -x *~ -x Makefile -b -u -r \
kmail.old/kmcomposewin.cpp kmail/kmcomposewin.cpp
--- kmail.old/kmcomposewin.cpp Thu Aug 17 10:09:34 2000
+++ kmail/kmcomposewin.cpp Thu Aug 31 00:55:09 2000
@@ -1936,6 +1936,7 @@
signatures and we should respect it: */
mEditor->insertLine("-- ", -1);
mEditor->insertLine(sigText, -1);
+ mEditor->update();
mEditor->setModified(mod);
}
}
diff -x *.moc -x *.sniffdir -x *.o -x *.proj -x *~ -x Makefile -b -u -r \
kmail.old/kmfolder.cpp kmail/kmfolder.cpp
--- kmail.old/kmfolder.cpp Thu Aug 17 10:09:34 2000
+++ kmail/kmfolder.cpp Wed Aug 30 00:23:07 2000
@@ -2,6 +2,7 @@
// Author: Stefan Taferner <taferner@alpin.or.at>
#include <qfileinfo.h>
+#include <qtextstream.h>
#include "kmglobal.h"
#include "kmfolder.h"
@@ -102,9 +103,8 @@
//-----------------------------------------------------------------------------
const QString KMFolder::location() const
{
- QString sLocation;
+ QString sLocation(path());
- sLocation = path().copy();
if (!sLocation.isEmpty()) sLocation += '/';
sLocation += name();
@@ -115,9 +115,8 @@
//-----------------------------------------------------------------------------
const QString KMFolder::indexLocation() const
{
- QString sLocation;
+ QString sLocation(path());
- sLocation = path().copy();
if (!sLocation.isEmpty()) sLocation += '/';
sLocation += '.';
sLocation += name();
@@ -129,9 +128,8 @@
//-----------------------------------------------------------------------------
const QString KMFolder::subdirLocation() const
{
- QString sLocation;
+ QString sLocation(path());
- sLocation = path().copy();
if (!sLocation.isEmpty()) sLocation += '/';
sLocation += '.';
sLocation += name();
@@ -591,7 +589,6 @@
return 0;
}
-
//-----------------------------------------------------------------------------
void KMFolder::setAutoCreateIndex(bool autoIndex)
{
@@ -663,7 +660,6 @@
}
}
-
//-----------------------------------------------------------------------------
void KMFolder::markNewAsUnread()
{
@@ -1369,6 +1365,8 @@
KConfig* config = kapp->config();
config->setGroup("Folder-" + idString());
unreadMsgs = config->readNumEntry("UnreadMsgs", -1);
+ mMailingListPostingAddress = config->readEntry("MailingListPostingAddress");
+ mMailingListAdminAddress = config->readEntry("MailingListAdminAddress");
}
//-----------------------------------------------------------------------------
@@ -1377,6 +1375,8 @@
KConfig* config = kapp->config();
config->setGroup("Folder-" + idString());
config->writeEntry("UnreadMsgs", countUnread());
+ config->writeEntry("MailingListPostingAddress", mMailingListPostingAddress);
+ config->writeEntry("MailingListAdminAddress", mMailingListAdminAddress);
}
//-----------------------------------------------------------------------------
diff -x *.moc -x *.sniffdir -x *.o -x *.proj -x *~ -x Makefile -b -u -r \
kmail.old/kmfolder.h kmail/kmfolder.h
--- kmail.old/kmfolder.h Sun May 21 08:37:14 2000
+++ kmail/kmfolder.h Wed Aug 30 00:39:02 2000
@@ -212,6 +212,14 @@
/** Returns TRUE if accounts are associated with this folder. */
bool hasAccounts() const { return (mAcctList != NULL); }
+ /** Returns TRUE if this folder is associated with a mailing-list. */
+ bool isMailingList() const { return (mMailingListPostingAddress != QString::null) \
&& !mMailingListPostingAddress.isEmpty(); } + void setMailingListPostAddress(const \
QString &address) { mMailingListPostingAddress = address; } + const QString& \
mailingListPostAddress() const { return mMailingListPostingAddress; } +
+ void setMailingListAdminAddress(const QString &address) { mMailingListAdminAddress \
= address; } + const QString& mailingListAdminAddress() const { return \
mMailingListAdminAddress; } +
/** Tell the folder that a header field that is usually used for
the index (subject, from, ...) has changed of given message.
This method is usually called from within KMMessage::setSubject/set... */
@@ -306,6 +314,10 @@
QString mWhoField; // name of the field that is used for "From" in listbox
bool mIsSystemFolder;
KMAcctList* mAcctList;
+
+ QString mMailingListPostingAddress;
+ QString mMailingListAdminAddress;
+
long unreadMsgs; // number of unread messages, -1 if not yet set
bool needsCompact; //sven: true if on destruct folder needs to be compacted.
KMFolderDir* mChild;
diff -x *.moc -x *.sniffdir -x *.o -x *.proj -x *~ -x Makefile -b -u -r \
kmail.old/kmfolderdia.cpp kmail/kmfolderdia.cpp
--- kmail.old/kmfolderdia.cpp Sat Jul 15 12:03:47 2000
+++ kmail/kmfolderdia.cpp Wed Aug 30 00:40:34 2000
@@ -2,6 +2,7 @@
#include <assert.h>
+#include <qcheckbox.h>
#include <qdir.h>
#include <qfile.h>
#include <qlabel.h>
@@ -11,9 +12,11 @@
#include <qpushbutton.h>
#include <qstring.h>
#include <qtextstream.h>
+#include <qvbox.h>
#include <klocale.h>
#include <kmessagebox.h>
+#include <kdebug.h>
#include "kmmainwin.h"
#include "kmglobal.h"
@@ -28,12 +31,22 @@
//-----------------------------------------------------------------------------
KMFolderDialog::KMFolderDialog(KMFolder* aFolder, KMFolderDir *aFolderDir,
QWidget *aParent, const QString& aCap):
- KMFolderDialogInherited( aParent, "KMFolderDialog", TRUE,
- aCap, KDialogBase::Ok|KDialogBase::Cancel ),
+// KMFolderDialogInherited( aParent, "KMFolderDialog", TRUE,
+// aCap, KDialogBase::Ok|KDialogBase::Cancel ),
+ KMFolderDialogInherited( KDialogBase::Tabbed,
+ aCap, KDialogBase::Ok|KDialogBase::Cancel,
+ KDialogBase::Ok, aParent, "KMFolderDialog", TRUE ),
folder((KMAcctFolder*)aFolder),mFolderDir( aFolderDir )
{
- QWidget *page = new QWidget(this);
- setMainWidget( page );
+
+// QWidget *page = new QWidget(this);
+// setMainWidget( page );
+// QVBoxLayout *topLayout = new QVBoxLayout( page, 0, spacingHint() );
+
+ // Main tab
+ //
+ QFrame *page = addPage(i18n("Folder Position"), i18n("Where the folder is located \
in the tree") ); +
QVBoxLayout *topLayout = new QVBoxLayout( page, 0, spacingHint() );
QHBoxLayout *hl = new QHBoxLayout();
@@ -78,6 +91,56 @@
if (curFolder->child() == aFolderDir)
fileInFolder->setCurrentItem( i );
}
+
+ // Mailing-list data tab
+ //
+ page = addPage(i18n("Associated Mailing List"), i18n("Email addresses of the \
mailing-list related to this folder") ); +
+ topLayout = new QVBoxLayout( page, 0, spacingHint() );
+
+ hl = new QHBoxLayout();
+ topLayout->addSpacing( spacingHint()*2 );
+
+ holdsMailingList = new QCheckBox( i18n("folder holds a mailing-list"), page);
+ QObject::connect(holdsMailingList, SIGNAL(toggled(bool)),
+ this, SLOT(slotHoldsML(bool)));
+
+ topLayout->addWidget(holdsMailingList);
+
+ topLayout->addSpacing( spacingHint()*2 );
+ topLayout->addLayout( hl );
+ topLayout->addSpacing( spacingHint()*2 );
+
+
+ label = new QLabel( i18n("Post Address:"), page );
+ hl->addWidget( label );
+ mailingListPostAddress = new QLineEdit( page );
+ mailingListPostAddress->setMinimumSize(mailingListPostAddress->sizeHint());
+ hl->addWidget( mailingListPostAddress );
+
+ hl = new QHBoxLayout();
+ topLayout->addLayout( hl );
+
+ label = new QLabel( i18n("Admin Address:"), page );
+ hl->addWidget( label );
+ mailingListAdminAddress = new QLineEdit( page );
+ mailingListAdminAddress->setMinimumSize(mailingListAdminAddress->sizeHint());
+ hl->addWidget( mailingListAdminAddress );
+
+ if (folder && folder->isMailingList())
+ {
+ mailingListPostAddress->setText(folder->mailingListPostAddress());
+ mailingListAdminAddress->setText(folder->mailingListAdminAddress());
+
+ mailingListPostAddress->setEnabled(true);
+ mailingListAdminAddress->setEnabled(true);
+ holdsMailingList->setChecked(true);
+ }
+ else {
+ mailingListPostAddress->setEnabled(false);
+ mailingListAdminAddress->setEnabled(false);
+ holdsMailingList->setChecked(false);
+ }
}
@@ -145,5 +208,33 @@
kernel->folderMgr()->contentsChanged();
}
+ if (holdsMailingList->isChecked())
+ {
+ folder->setMailingListPostAddress(mailingListPostAddress->text());
+ folder->setMailingListAdminAddress(mailingListAdminAddress->text());
+ } else
+ {
+ folder->setMailingListPostAddress(QString::null);
+ folder->setMailingListAdminAddress(QString::null);
+ }
+
KMFolderDialogInherited::slotOk();
}
+
+//-----------------------------------------------------------------------------
+void KMFolderDialog::slotHoldsML( bool holdsML )
+{
+ if ( holdsML )
+ {
+ mailingListPostAddress->setEnabled(true);
+ mailingListAdminAddress->setEnabled(true);
+ }
+ else
+ {
+ mailingListPostAddress->clear();
+ mailingListAdminAddress->clear();
+ mailingListPostAddress->setEnabled(false);
+ mailingListAdminAddress->setEnabled(false);
+ }
+}
+
diff -x *.moc -x *.sniffdir -x *.o -x *.proj -x *~ -x Makefile -b -u -r \
kmail.old/kmfolderdia.h kmail/kmfolderdia.h
--- kmail.old/kmfolderdia.h Sun Jul 2 18:53:11 2000
+++ kmail/kmfolderdia.h Tue Aug 29 02:20:11 2000
@@ -7,6 +7,7 @@
#include <qlist.h>
class KMAcctFolder;
+class QCheckBox;
class QPushButton;
class QLineEdit;
class QListBox;
@@ -25,6 +26,7 @@
protected slots:
virtual void slotOk( void );
+ virtual void slotHoldsML( bool );
protected:
QComboBox *fileInFolder;
@@ -32,6 +34,10 @@
KMAcctFolder* folder;
KMFolderDir* mFolderDir;
QValueList<QGuardedPtr<KMFolder> > mFolders;
+
+ QCheckBox *holdsMailingList;
+ QLineEdit *mailingListPostAddress;
+ QLineEdit *mailingListAdminAddress;
};
#endif /*__KMFOLDERDIA*/
diff -x *.moc -x *.sniffdir -x *.o -x *.proj -x *~ -x Makefile -b -u -r \
kmail.old/kmfoldertree.cpp kmail/kmfoldertree.cpp
--- kmail.old/kmfoldertree.cpp Thu Aug 17 10:09:34 2000
+++ kmail/kmfoldertree.cpp Thu Aug 31 01:38:15 2000
@@ -22,6 +22,7 @@
#include "kmfolder.h"
#include "kmfoldertree.h"
#include "kmfolderdia.h"
+#include "kmcomposewin.h"
QPixmap* KMFolderTree::pixDir = 0;
QPixmap* KMFolderTree::pixNode = 0;
@@ -202,6 +203,9 @@
connect( this, SIGNAL( rightButtonPressed( QListViewItem*, const QPoint &, int)),
this, SLOT( rightButtonPressed( QListViewItem*, const QPoint &, int)));
+
+ connect( this, SIGNAL( mouseButtonPressed( int, QListViewItem*, const QPoint &, \
int)), + this, SLOT( mouseButtonPressed( int, QListViewItem*, const QPoint &, \
int))); }
bool KMFolderTree::event(QEvent *e)
@@ -562,6 +566,29 @@
folderMenu->exec (p, 0);
triggerUpdate();
delete folderMenu;
+}
+
+//-----------------------------------------------------------------------------
+// If middle button and folder holds mailing-list, create a message to that list
+
+void KMFolderTree::mouseButtonPressed(int btn, QListViewItem *lvi, const QPoint &p, \
int) +{
+ // react on middle-button only
+ if (btn != Qt::MidButton) return;
+
+ // get underlying folder
+ KMFolderTreeItem* fti = dynamic_cast<KMFolderTreeItem*>(lvi);
+
+ if (!fti || !fti->folder)
+ return;
+ if (!fti->folder->isMailingList())
+ return;
+
+ KMMessage *msg = new KMMessage;
+ msg->setTo(fti->folder->mailingListPostAddress());
+ KMComposeWin *win = new KMComposeWin(msg);
+ win->show();
+
}
//-----------------------------------------------------------------------------
diff -x *.moc -x *.sniffdir -x *.o -x *.proj -x *~ -x Makefile -b -u -r \
kmail.old/kmfoldertree.h kmail/kmfoldertree.h
--- kmail.old/kmfoldertree.h Thu Aug 17 10:09:34 2000
+++ kmail/kmfoldertree.h Thu Aug 31 01:20:22 2000
@@ -125,6 +125,7 @@
protected slots:
void autoScroll();
void rightButtonPressed( QListViewItem *, const QPoint &, int);
+ void mouseButtonPressed( int btn, QListViewItem *, const QPoint &, int);
};
#endif
diff -x *.moc -x *.sniffdir -x *.o -x *.proj -x *~ -x Makefile -b -u -r \
kmail.old/kmmessage.cpp kmail/kmmessage.cpp
--- kmail.old/kmmessage.cpp Thu Aug 17 10:09:35 2000
+++ kmail/kmmessage.cpp Wed Aug 30 22:04:26 2000
@@ -669,6 +669,14 @@
if (replyToAll)
{
+ // glaurent - check if the folder holds a mailing-list
+ if (parent()->isMailingList())
+ {
+ // Reply to mailing-list posting address
+ toStr = parent()->mailingListPostAddress();
+ }
+ else // normal reply
+ {
int i;
// sanders only include the replyTo address if it's != to the from address
QString rep = replyToStr;
@@ -720,6 +728,7 @@
ccStr.truncate(ccStr.length()-1);
msg->setCc(ccStr);
}
+ }
}
else
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic