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

List:       kde-commits
Subject:    KDE_3_3_BRANCH: kdepim/kmail
From:       Till Adam <adam () kde ! org>
Date:       2004-08-20 23:53:21
Message-ID: 20040820235321.860046DA9 () office ! kde ! org
[Download RAW message or body]

CVS commit by tilladam: 

Don't crash when a folder which is a resource folder is deleted, because
the resource is not removed properly from KOrganizer etc since no signals
were emitted in that case. Aggregate the folderRemoved signals of all 
folder managers and emit a central folderRemoved(KMFolder*) which stuff 
can listen to. Port the filter manager to that.


  M +10 -0     kmailicalifaceimpl.cpp   1.46.2.68
  M +1 -0      kmailicalifaceimpl.h   1.21.2.25
  M +7 -0      kmfiltermgr.cpp   1.70.2.1
  M +2 -0      kmfiltermgr.h   1.28.2.1
  M +4 -9      kmkernel.cpp   1.298.2.3
  M +1 -1      kmkernel.h   1.116.2.1


--- kdepim/kmail/kmailicalifaceimpl.cpp  #1.46.2.67:1.46.2.68
@@ -127,4 +127,6 @@ KMailICalIfaceImpl::KMailICalIfaceImpl()
   // Listen to config changes
   connect( kmkernel, SIGNAL( configChanged() ), this, SLOT( readConfig() ) );
+  connect( kmkernel, SIGNAL( folderRemoved( KMFolder* ) ),
+           this, SLOT( slotFolderRemoved( KMFolder* ) ) );
 
   mExtraFolders.setAutoDelete( true );
@@ -928,4 +930,12 @@ KURL KMailICalIfaceImpl::getAttachment( 
 }
 
+
+void KMailICalIfaceImpl::slotFolderRemoved( KMFolder* folder )
+{
+  // pretend the folder just changed back to the mail type, which
+  // does the right thing, namely remove resource
+  folderContentsTypeChanged( folder, KMail::ContentsTypeMail );
+}
+
 // KMail added a file to one of the groupware folders
 void KMailICalIfaceImpl::slotIncidenceAdded( KMFolder* folder,

--- kdepim/kmail/kmailicalifaceimpl.h  #1.21.2.24:1.21.2.25
@@ -162,4 +162,5 @@ public slots:
   /* (Re-)Read configuration file */
   void readConfig();
+  void slotFolderRemoved( KMFolder* folder );
 
   void slotIncidenceAdded( KMFolder* folder, Q_UINT32 sernum );

--- kdepim/kmail/kmfiltermgr.cpp  #1.70:1.70.2.1
@@ -40,4 +40,6 @@ KMFilterMgr::KMFilterMgr( bool popFilter
     kdDebug(5006) << "pPopFilter set" << endl;
   setAutoDelete(TRUE);
+  connect( kmkernel, SIGNAL( folderRemoved( KMFolder* ) ),
+           this, SLOT( slotFolderRemoved( KMFolder* ) ) );
 }
 
@@ -323,4 +325,9 @@ void KMFilterMgr::appendFilter( KMFilter
 
 
+void KMFilterMgr::slotFolderRemoved( KMFolder * aFolder )
+{
+  folderRemoved( aFolder, 0 );
+}
+
 //-----------------------------------------------------------------------------
 bool KMFilterMgr::folderRemoved(KMFolder* aFolder, KMFolder* aNewFolder)

--- kdepim/kmail/kmfiltermgr.h  #1.28:1.28.2.1
@@ -115,4 +115,6 @@ public:
     return mShowLater;
   }
+public slots:
+  void slotFolderRemoved( KMFolder *aFolder );
 
 signals:

--- kdepim/kmail/kmkernel.cpp  #1.298.2.2:1.298.2.3
@@ -1024,11 +1024,11 @@ void KMKernel::init()
 
   connect( the_folderMgr, SIGNAL( folderRemoved(KMFolder*) ),
-           this, SLOT( slotFolderRemoved(KMFolder*) ) );
+           this, SIGNAL( folderRemoved(KMFolder*) ) );
   connect( the_dimapFolderMgr, SIGNAL( folderRemoved(KMFolder*) ),
-           this, SLOT( slotFolderRemoved(KMFolder*) ) );
+           this, SIGNAL( folderRemoved(KMFolder*) ) );
   connect( the_imapFolderMgr, SIGNAL( folderRemoved(KMFolder*) ),
-           this, SLOT( slotFolderRemoved(KMFolder*) ) );
+           this, SIGNAL( folderRemoved(KMFolder*) ) );
   connect( the_searchFolderMgr, SIGNAL( folderRemoved(KMFolder*) ),
-           this, SLOT( slotFolderRemoved(KMFolder*) ) );
+           this, SIGNAL( folderRemoved(KMFolder*) ) );
 
   mBackgroundTasksTimer = new QTimer( this );
@@ -1680,9 +1680,4 @@ KMMainWidget *KMKernel::getKMMainWidget(
 }
 
-void KMKernel::slotFolderRemoved( KMFolder * aFolder )
-{
-  if ( the_filterMgr ) the_filterMgr->folderRemoved( aFolder, 0 );
-}
-
 void KMKernel::slotRunBackgroundTasks() // called regularly by timer
 {

--- kdepim/kmail/kmkernel.h  #1.116:1.116.2.1
@@ -294,8 +294,8 @@ protected slots:
   void slotResult(KIO::Job*);
   void slotConfigChanged();
-  void slotFolderRemoved(KMFolder*);
 
 signals:
   void configChanged();
+  void folderRemoved( KMFolder* aFolder );
 
 private:


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

Configure | About | News | Add a list | Sponsored by KoreLogic