[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kmail-devel
Subject:    Re: PATCH : scoring
From:       Guillaume Laurent <glaurent () telegraph-road ! org>
Date:       2001-04-08 20:17:02
[Download RAW message or body]

On Sunday 08 April 2001 20:24, Don Sanders wrote:
> On Sunday 08 April 2001 20:03, Guillaume Laurent wrote:
> > This patch is to add message scoring to kmail. If everybody is fine with
> > it, I'll commit it.
>
> Please attach the patch.

Duh. Here it is.

-- 
					Guillaume.
					http://www.telegraph-road.org

["kmail_score_patch" (text/x-c)]

? patch
? kmscoring.h
? kmscoring.cpp
Index: Makefile.am
===================================================================
RCS file: /home/kde/kdenetwork/kmail/Makefile.am,v
retrieving revision 1.109
diff -u -r1.109 Makefile.am
--- Makefile.am	2001/04/08 15:34:35	1.109
+++ Makefile.am	2001/04/08 17:59:01
@@ -25,6 +25,7 @@
 		kmnewiostatus.cpp kmnewiostatuswdg.cpp \
 		kmtopwidget.cpp kmacctimap.cpp \
 		kmundostack.cpp kmbroadcaststatus.cpp \
+		kmscoring.cpp \
 		kmacctexppop.cpp configuredialog.cpp colorlistbox.cpp \
                 kmkernel.cpp kmailIface.skel kmailIface.stub main.cpp \
 		accountdialog.cpp kmfldsearch.cpp addtoaddressbook.cpp \
Index: configuredialog.cpp
===================================================================
RCS file: /home/kde/kdenetwork/kmail/configuredialog.cpp,v
retrieving revision 1.92
diff -u -r1.92 configuredialog.cpp
--- configuredialog.cpp	2001/04/05 20:19:09	1.92
+++ configuredialog.cpp	2001/04/08 17:59:08
@@ -50,6 +50,7 @@
 #include <kcharsets.h>
 #include <kcolorbtn.h>
 #include <kconfig.h>
+#include <kdebug.h>
 #include <kfiledialog.h>
 #include <kfontdialog.h>
 #include <kiconloader.h>
@@ -64,6 +65,8 @@
 #include <kstddirs.h>
 #include <kurlrequester.h>
 #include <kglobalsettings.h>
+#include <kscoring.h>
+#include <kscoringeditor.h>
 
 
 #include "accountdialog.h"
@@ -79,6 +82,7 @@
 #include "kmmessage.h"
 #include "kmsender.h"
 #include "kmtopwidget.h"
+#include "kmscoring.h"
 
 #include "configuredialog.moc"
 
@@ -488,6 +492,7 @@
   makeMimePage();
   makeSecurityPage();
   makeMiscPage();
+  makeScorePage();
 }
 
 
@@ -1435,6 +1440,20 @@
   topLevel->addStretch( 10 );
 }
 
+void ConfigureDialog::makeScorePage( void )
+{
+  QFrame *page = addPage( i18n("Score"), i18n("Messages Scoring"),
+    KGlobal::instance()->iconLoader()->loadIcon( "misc", KIcon::NoGroup,
+    KIcon::SizeMedium ));
+  QVBoxLayout *topLevel = new QVBoxLayout( page, 0, spacingHint() );
+  mScore.pageIndex = pageIndex(page);
+
+  KScoringRulesConfig* ksc =
+      new KScoringRulesConfig(KMScoringManager::globalScoringManager(),
+                              page);
+  topLevel->addWidget( ksc );
+
+}
 
 
 void ConfigureDialog::setup( void )
@@ -1446,6 +1465,7 @@
   setupMimePage();
   setupSecurityPage();
   setupMiscPage();
+  setupScorePage();
 }
 
 
@@ -1819,6 +1839,11 @@
   slotMailCommandSelectionChanged();
 }
 
+void ConfigureDialog::setupScorePage( void )
+{
+}
+
+
 
 void ConfigureDialog::installProfile( void )
 {
@@ -2246,6 +2271,9 @@
     config.writeEntry( "exec-on-mail-cmd",
 		       mMisc.mailCommandEdit->text() );
   }
+
+  kdDebug() << "KMScoringManager::globalScoringManager()->save();" << endl;
+  KMScoringManager::globalScoringManager()->save();
 
   //
   // Always
Index: configuredialog.h
===================================================================
RCS file: /home/kde/kdenetwork/kmail/configuredialog.h,v
retrieving revision 1.36
diff -u -r1.36 configuredialog.h
--- configuredialog.h	2001/03/26 00:02:06	1.36
+++ configuredialog.h	2001/04/08 17:59:09
@@ -236,6 +236,8 @@
     QString *i18nPath;
 };
 
+class KScoringRulesConfig;
+
 class ConfigureDialog : public KDialogBase
 {
   Q_OBJECT
@@ -424,6 +426,12 @@
       QLabel      *mailCommandLabel;
     };
 
+    struct ScoreListWidget
+    {
+        int pageIndex;
+        KScoringRulesConfig *ksc;
+    };
+
     enum EPage
     {
       page_identity = 0,
@@ -457,6 +465,7 @@
     void makeMimePage( void );
     void makeSecurityPage( void );
     void makeMiscPage( void );
+    void makeScorePage( void );
 
     void setupIdentityPage( void );
     void setupNetworkPage( void );
@@ -465,6 +474,7 @@
     void setupMimePage( void );
     void setupSecurityPage( void );
     void setupMiscPage( void );
+    void setupScorePage( void );
     void installProfile( void );
 
     void updateFontSelector( void );
@@ -531,6 +541,7 @@
     MimeWidget       mMime;
     SecurityWidget   mSecurity;
     MiscWidget       mMisc;
+    ScoreListWidget  mScore;
 
     IdentityList     mIdentityList;
     QValueList<QGuardedPtr<KMAccount> > mAccountsToDelete;
Index: kmfolder.cpp
===================================================================
RCS file: /home/kde/kdenetwork/kmail/kmfolder.cpp,v
retrieving revision 1.147
diff -u -r1.147 kmfolder.cpp
--- kmfolder.cpp	2001/04/03 19:04:36	1.147
+++ kmfolder.cpp	2001/04/08 17:59:13
@@ -11,6 +11,7 @@
 #include "kbusyptr.h"
 #include "kmundostack.h"
 #include "kmacctimap.h"
+#include "kmscoring.h"
 
 #include <kapp.h>
 #include <kconfig.h>
@@ -1808,5 +1809,37 @@
 {
   mProcmailLockFileName = fname;
 }
+
+//-----------------------------------------------------------------------------
+void KMFolder::scoreMessages()
+{
+  KMScoringManager* sm = KMScoringManager::globalScoringManager();
+  if (!sm) {
+    kdDebug() << "KMFolder::scoreMessages() : no globalScoringManager"
+              << endl;
+    return;
+  }
+
+  KMMessage* msg;
+  int i;
+
+  if (name()) sm->initCache(name());
+  
+  kdDebug() << "KMFolder::scoreMessages() : starting score" << endl;
+  for (i=0; i<mMsgList.high(); i++)
+  {
+    msg = getMsg(i);
+      
+    if (!msg) {
+      kdDebug() << "KMFolder::scoreMessages() : Skipping msg" << endl;
+      continue;
+    }
+    KMScorableArticle smsg(msg);
+    
+    sm->applyRules(smsg);
+    kdDebug() << "KMFolder::scoreMessages() : score = " << msg->score() << endl;
+  }
+}
+
 
 #include "kmfolder.moc"
Index: kmfolder.h
===================================================================
RCS file: /home/kde/kdenetwork/kmail/kmfolder.h,v
retrieving revision 1.44
diff -u -r1.44 kmfolder.h
--- kmfolder.h	2001/03/21 21:01:16	1.44
+++ kmfolder.h	2001/04/08 17:59:13
@@ -283,6 +283,8 @@
 
   void setProcmailLockFileName( const QString& );
 
+  void scoreMessages();
+
 signals:
   /** Emitted when the status, name, or associated accounts of this
     folder changed. */
Index: kmheaders.cpp
===================================================================
RCS file: /home/kde/kdenetwork/kmail/kmheaders.cpp,v
retrieving revision 1.259
diff -u -r1.259 kmheaders.cpp
--- kmheaders.cpp	2001/04/06 10:10:00	1.259
+++ kmheaders.cpp	2001/04/08 17:59:18
@@ -152,6 +152,8 @@
     if (mPaintInfo->showSize)
       setText( mPaintInfo->sizeCol, QString( "%1" ).arg( mMsgBase->msgSize()));
 
+    setText( mPaintInfo->scoreCol, QString( "%1" ).arg( mMsgBase->score()));
+
     mColor = &mPaintInfo->colFore;
 
     switch (flag)
@@ -321,10 +323,11 @@
   readConfig();
 
   mPaintInfo.flagCol = -1;
-  mPaintInfo.subCol = mPaintInfo.flagCol + 1;
-  mPaintInfo.senderCol = mPaintInfo.subCol + 1;
-  mPaintInfo.dateCol = mPaintInfo.senderCol + 1;
-  mPaintInfo.sizeCol = mPaintInfo.dateCol + 1;
+  mPaintInfo.subCol    = mPaintInfo.flagCol   + 1;
+  mPaintInfo.senderCol = mPaintInfo.subCol    + 1;
+  mPaintInfo.dateCol   = mPaintInfo.senderCol + 1;
+  mPaintInfo.sizeCol   = mPaintInfo.dateCol   + 1;
+  mPaintInfo.scoreCol  = mPaintInfo.sizeCol   + 1;
   mSortCol = KMMsgList::sfDate;
   mSortDescending = FALSE;
   setShowSortIndicator(true);
@@ -341,6 +344,8 @@
     showingSize = false;
   }
 
+  addColumn( i18n("Score"), 80 );
+
   if (!pixmapsLoaded)
   {
     pixmapsLoaded = TRUE;
@@ -625,6 +630,7 @@
 
       readFolderConfig();
       mFolder->open();
+      mFolder->scoreMessages();
 
       if ((mNested && !mNestedOverride) || (!mNested && mNestedOverride)) {
 	clear();
@@ -704,6 +710,9 @@
       showingSize = false;
     }
   }
+
+  colText = i18n( "Score" );
+  setColumnText( mPaintInfo.scoreCol, colText);
 
 }
 
Index: kmheaders.h
===================================================================
RCS file: /home/kde/kdenetwork/kmail/kmheaders.h,v
retrieving revision 1.68
diff -u -r1.68 kmheaders.h
--- kmheaders.h	2001/04/05 20:19:09	1.68
+++ kmheaders.h	2001/04/08 17:59:18
@@ -49,6 +49,7 @@
   int subCol;
   int dateCol;
   int sizeCol;
+  int scoreCol;
 };
 
 #define KMHeadersInherited QListView
Index: kmmessage.cpp
===================================================================
RCS file: /home/kde/kdenetwork/kmail/kmmessage.cpp,v
retrieving revision 1.183
diff -u -r1.183 kmmessage.cpp
--- kmmessage.cpp	2001/04/08 15:34:35	1.183
+++ kmmessage.cpp	2001/04/08 17:59:25
@@ -57,12 +57,12 @@
 
 //-----------------------------------------------------------------------------
 KMMessage::KMMessage(DwMessage* aMsg)
+  : mMsg(aMsg),
+    mNeedsAssembly(true),
+    mIsComplete(false),
+    mTransferInProgress(false),
+    mCodec(0)
 {
-  mNeedsAssembly = TRUE;
-  mMsg = aMsg;
-  mCodec = NULL;
-  mIsComplete = FALSE;
-  mTransferInProgress = FALSE;
 }
 
 
Index: kmmsgbase.cpp
===================================================================
RCS file: /home/kde/kdenetwork/kmail/kmmsgbase.cpp,v
retrieving revision 1.69
diff -u -r1.69 kmmsgbase.cpp
--- kmmsgbase.cpp	2001/04/06 08:50:37	1.69
+++ kmmsgbase.cpp	2001/04/08 17:59:26
@@ -27,13 +27,14 @@
 
 //-----------------------------------------------------------------------------
 KMMsgBase::KMMsgBase(KMFolder* aParent)
+  : mParent(aParent),
+    mFolderOffset(0),
+    mMsgSize(0),
+    mDate(0),
+    mStatus(KMMsgStatusNew),
+    mScore(0),
+    mDirty(false)
 {
-  mParent  = aParent;
-  mDirty   = FALSE;
-  mMsgSize = 0;
-  mFolderOffset = 0;
-  mStatus  = KMMsgStatusNew;
-  mDate    = 0;
 }
 
 
Index: kmmsgbase.h
===================================================================
RCS file: /home/kde/kdenetwork/kmail/kmmsgbase.h,v
retrieving revision 1.25
diff -u -r1.25 kmmsgbase.h
--- kmmsgbase.h	2001/04/05 20:19:09	1.25
+++ kmmsgbase.h	2001/04/08 17:59:27
@@ -114,6 +114,16 @@
   /** Copy all values from other to this object. */
   void assign(const KMMsgBase* other);
 
+  /** Set article score */
+  void setScore(short s) { mScore = s; }
+
+  /** Add article score */
+  void addScore(short s) { mScore += s; }
+
+  /** Return article's score */
+  short score() const   { return mScore; }
+
+
   /** Assignment operator that simply calls assign(). */
   KMMsgBase& operator=(const KMMsgBase& other);
 
@@ -157,6 +167,7 @@
   unsigned long mFolderOffset, mMsgSize;
   time_t mDate;
   KMMsgStatus mStatus;
+  short mScore;
   bool mDirty;
 };
 

_______________________________________________
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