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

List:       kde-core-devel
Subject:    KNode patch
From:       Christian Gebauer <gebauer () bigfoot ! com>
Date:       2000-09-29 1:34:00
[Download RAW message or body]

Hi,

huge patch, but 95% a trivial changes. During the XML-GUI port
I made the decision to move the KActions into the manager classes
to ease the process of (de)activating them. I used a separate
action collection for every manager class and merged them into
the main action collection before calling createGUI(). This was a bad
idea because this breaks the keyboard configuration dialog (#11794),
now all actions are inserted into the global action collection.

The patch also fixes some crashes that happen when the user
chooses to expire or unsubscribe from a group while downloading
articles in the same group. 

Christian
-- 
>><< Christian Gebauer >><< gebauer@bigfoot.com >><< ICQ 14916141 >><<
["knode.diff" (text/plain)]

Index: knaccountmanager.cpp
===================================================================
RCS file: /home/kde/kdenetwork/knode/knaccountmanager.cpp,v
retrieving revision 1.14
diff -u -3 -p -r1.14 knaccountmanager.cpp
--- knaccountmanager.cpp	2000/09/23 22:02:43	1.14
+++ knaccountmanager.cpp	2000/09/29 01:20:04
@@ -41,8 +41,8 @@
 #include "knaccountmanager.h"
 
 
-KNAccountManager::KNAccountManager(KNGroupManager *gm, KNListView *v, QObject * \
                parent, const char * name)
-  : QObject(parent, name), gManager(gm), view(v)
+KNAccountManager::KNAccountManager(KNGroupManager *gm, KNListView *v, \
KActionCollection* actColl, QObject * parent, const char * name) +  : QObject(parent, \
name), gManager(gm), view(v), actionCollection(actColl)  {
   accList=new QList<KNNntpAccount>;
   accList->setAutoDelete(true);
@@ -53,15 +53,15 @@ KNAccountManager::KNAccountManager(KNGro
   loadAccounts();
   
   actProperties = new KAction(i18n("&Properties..."), 0, this, \
                SLOT(slotProperties()),
-                              &actionCollection, "account_properties");
+                              actionCollection, "account_properties");
   actSubscribe = new KAction(i18n("&Subscribe to Newsgroups..."),"news_subscribe", \
                0, this, SLOT(slotSubscribe()),
-                             &actionCollection, "account_subscribe");
+                             actionCollection, "account_subscribe");
   actLoadHdrs = new KAction(i18n("&Get New Articles"), "mail_get", 0, this, \
                SLOT(slotLoadHdrs()),
-                            &actionCollection, "account_dnlHeaders");
+                            actionCollection, "account_dnlHeaders");
   actDelete = new KAction(i18n("&Delete"), 0, this, SLOT(slotDelete()),
-                          &actionCollection, "account_delete");
+                          actionCollection, "account_delete");
   actPostNewArticle = new KAction(i18n("&Post new article"), "filenew", Key_P , \
                this, SLOT(slotPostNewArticle()),
-                                  &actionCollection, "article_postNew");
+                                  actionCollection, "article_postNew");
   
   setCurrentAccount(0);
 }
Index: knaccountmanager.h
===================================================================
RCS file: /home/kde/kdenetwork/knode/knaccountmanager.h,v
retrieving revision 1.7
diff -u -3 -p -r1.7 knaccountmanager.h
--- knaccountmanager.h	2000/09/23 22:02:43	1.7
+++ knaccountmanager.h	2000/09/29 01:20:04
@@ -33,11 +33,9 @@ class KNAccountManager : public QObject
   Q_OBJECT
   
   public:
-    KNAccountManager(KNGroupManager *gm, KNListView *v, QObject * parent=0, const \
char * name=0); +    KNAccountManager(KNGroupManager *gm, KNListView *v, \
KActionCollection* actColl, QObject * parent=0, const char * name=0);  \
~KNAccountManager();  
-    const KActionCollection& actions()      { return actionCollection; }
-      
     void readConfig();
     void saveYourself();
     void setCurrentAccount(KNNntpAccount *a);
@@ -67,7 +65,7 @@ class KNAccountManager : public QObject
     
     KNListView *view;   
     KAction *actProperties, *actSubscribe, *actLoadHdrs, *actDelete, \
                *actPostNewArticle;
-    KActionCollection actionCollection;
+    KActionCollection *actionCollection;
         
   protected slots:  
     void slotProperties();
Index: knarticlewidget.cpp
===================================================================
RCS file: /home/kde/kdenetwork/knode/knarticlewidget.cpp,v
retrieving revision 1.34
diff -u -3 -p -r1.34 knarticlewidget.cpp
--- knarticlewidget.cpp	2000/09/18 01:02:00	1.34
+++ knarticlewidget.cpp	2000/09/29 01:20:04
@@ -199,8 +199,8 @@ bool KNArticleWidget::fullHeaders()
 
 
 
-KNArticleWidget::KNArticleWidget(QWidget *parent, const char *name )
-    : QTextBrowser(parent, name), a_rticle(0), c_oll(0), att(0), h_tmlDone(false)
+KNArticleWidget::KNArticleWidget(KActionCollection* actColl, QWidget *parent, const \
char *name ) +    : QTextBrowser(parent, name), a_rticle(0), c_oll(0), att(0), \
h_tmlDone(false), actionCollection(actColl)  {
   instances.append(this);
 
@@ -225,13 +225,13 @@ KNArticleWidget::KNArticleWidget(QWidget
   attPopup->insertItem(i18n("Save"), PUP_SAVE);
 
   //actions
-  actSave = KStdAction::save(this, SLOT(slotSave()), &actionCollection);
+  actSave = KStdAction::save(this, SLOT(slotSave()), actionCollection);
   actSave->setEnabled(false);
-  actPrint = KStdAction::print(this, SLOT(slotPrint()), &actionCollection);
+  actPrint = KStdAction::print(this, SLOT(slotPrint()), actionCollection);
   actPrint->setEnabled(false);
-  actSelAll =  KStdAction::selectAll(this, SLOT(slotSelectAll()), \
&actionCollection); +  actSelAll =  KStdAction::selectAll(this, \
SLOT(slotSelectAll()), actionCollection);  actSelAll->setEnabled(false);
-  actCopy = KStdAction::copy(this, SLOT(copy()), &actionCollection);
+  actCopy = KStdAction::copy(this, SLOT(copy()), actionCollection);
   actCopy->setEnabled(false);
 
   applyConfig();
Index: knarticlewidget.h
===================================================================
RCS file: /home/kde/kdenetwork/knode/knarticlewidget.h,v
retrieving revision 1.12
diff -u -3 -p -r1.12 knarticlewidget.h
--- knarticlewidget.h	2000/08/13 16:13:23	1.12
+++ knarticlewidget.h	2000/09/29 01:20:04
@@ -44,7 +44,7 @@ class KNArticleWidget : public QTextBrow
     enum browserType { BTkonqueror=0 , BTnetscape=1 };
     enum anchorType { ATurl, ATauthor, ATreference, ATattachment, ATunknown };
 
-    KNArticleWidget(QWidget *parent=0, const char *name=0 );
+    KNArticleWidget(KActionCollection* actColl, QWidget *parent=0, const char \
*name=0 );  ~KNArticleWidget();
 
 //=======================================
@@ -59,8 +59,6 @@ class KNArticleWidget : public QTextBrow
     static bool fullHeaders();
 //=======================================
 
-    const KActionCollection& actions()      { return actionCollection; }
-
     bool scrollingDownPossible();       // needed for "read-through"
     void scrollDown();
 
@@ -98,7 +96,7 @@ class KNArticleWidget : public QTextBrow
 
     KPopupMenu *urlPopup, *attPopup;
     KAction *actSave, *actPrint, *actSelAll, *actCopy;
-    KActionCollection actionCollection;
+    KActionCollection *actionCollection;
 
     static bool showSig, fullHdrs, inlineAtt, openAtt, altAsAtt;
     static QString hexColors[4];
@@ -106,7 +104,6 @@ class KNArticleWidget : public QTextBrow
     static QFont htmlFont;
     static browserType browser;
     static QList<KNArticleWidget> instances;
-
 
   protected slots:
     void slotSave();
Index: knarticlewindow.cpp
===================================================================
RCS file: /home/kde/kdenetwork/knode/knarticlewindow.cpp,v
retrieving revision 1.21
diff -u -3 -p -r1.21 knarticlewindow.cpp
--- knarticlewindow.cpp	2000/09/20 00:04:19	1.21
+++ knarticlewindow.cpp	2000/09/29 01:20:04
@@ -54,12 +54,10 @@ KNArticleWindow::KNArticleWindow(KNArtic
     setCaption(art->subject());
   //setIcon(UserIcon("posting"));
 
-  artW=new KNArticleWidget(this);
+  artW=new KNArticleWidget(actionCollection(),this);
   artW->setData(art, col);
   setCentralWidget(artW);
   connect(artW, SIGNAL(articleLoaded()), SLOT(slotArticleLoaded()));
-
-  *actionCollection() += artW->actions();        // include the actions of the \
article widget  
   // file menu
   KStdAction::close(this, SLOT(slotFileClose()),actionCollection());
Index: knfetcharticle.cpp
===================================================================
RCS file: /home/kde/kdenetwork/knode/knfetcharticle.cpp,v
retrieving revision 1.11
diff -u -3 -p -r1.11 knfetcharticle.cpp
--- knfetcharticle.cpp	2000/09/19 12:53:34	1.11
+++ knfetcharticle.cpp	2000/09/29 01:20:04
@@ -19,7 +19,8 @@
 #include "knfetcharticle.h"
 
 
-KNFetchArticle::KNFetchArticle() : t_hreaded(true), i_dRef(-1), l_ines(-1), \
thrLevel(0), s_core(50),  newFups(0), unrFups(0) \
+KNFetchArticle::KNFetchArticle(KNGroup *grp) + : g_roup(grp), t_hreaded(true), \
i_dRef(-1), l_ines(-1), thrLevel(0), s_core(50),  newFups(0), unrFups(0)  {
   flags.fill(false,8);
 }
Index: knfetcharticle.h
===================================================================
RCS file: /home/kde/kdenetwork/knode/knfetcharticle.h,v
retrieving revision 1.6
diff -u -3 -p -r1.6 knfetcharticle.h
--- knfetcharticle.h	2000/08/09 15:50:38	1.6
+++ knfetcharticle.h	2000/09/29 01:20:04
@@ -22,11 +22,13 @@
 #include <qbitarray.h>
 #include "knarticle.h"
 
+class KNGroup;
 
+
 class KNFetchArticle : public KNArticle  {
   
   public:
-    KNFetchArticle();
+    KNFetchArticle(KNGroup *grp);
     ~KNFetchArticle();
         
     void parse();
@@ -39,6 +41,7 @@ class KNFetchArticle : public KNArticle 
     void updateListItem();
         
     //get
+    KNGroup* group()                        { return g_roup; }
     articleStatus status()                  { return AStemp; }
     articleType type()                      { return ATfetch; }
     virtual const QCString& messageId()     { return m_Id; }
@@ -90,6 +93,7 @@ class KNFetchArticle : public KNArticle 
   
         
   protected:
+    KNGroup *g_roup;
     bool t_hreaded;
     QCString m_Id, f_rom, e_mail;
     int i_dRef, l_ines;
Index: knfetcharticlemanager.cpp
===================================================================
RCS file: /home/kde/kdenetwork/knode/knfetcharticlemanager.cpp,v
retrieving revision 1.28
diff -u -3 -p -r1.28 knfetcharticlemanager.cpp
--- knfetcharticlemanager.cpp	2000/09/17 02:49:18	1.28
+++ knfetcharticlemanager.cpp	2000/09/29 01:20:04
@@ -48,8 +48,8 @@
 #include "knglobals.h"
 
 
-KNFetchArticleManager::KNFetchArticleManager(KNListView *v, KNFilterManager* \
                fiManager, QObject * parent, const char * name)
-  : QObject(parent, name), KNArticleManager(v), g_roup(0), c_urrent(0), n_ext(0), \
tOut(3000), sDlg(0) +KNFetchArticleManager::KNFetchArticleManager(KNListView *v, \
KNFilterManager* fiManager, KActionCollection* actColl, QObject * parent, const char \
* name) +  : QObject(parent, name), KNArticleManager(v), g_roup(0), c_urrent(0), \
n_ext(0), tOut(3000), sDlg(0), actionCollection(actColl)  {
   connect(fiManager, SIGNAL(filterChanged(KNArticleFilter*)), this, \
SLOT(slotFilterChanged(KNArticleFilter*)));  f_ilter = fiManager->currentFilter();
@@ -61,60 +61,60 @@ KNFetchArticleManager::KNFetchArticleMan
   readOptions();
 
   actShowThreads = new KToggleAction(i18n("Show T&hreads"), 0 , this, \
                SLOT(slotToggleShowThreads()),
-                                     &actionCollection, "view_showThreads");
+                                     actionCollection, "view_showThreads");
   actShowThreads->setChecked(t_hreaded);
   actShowThreads->setEnabled(false);
   actExpandAll = new KAction(i18n("&Expand all threads"), 0 , this, \
                SLOT(slotThreadsExpand()),
-                             &actionCollection, "view_ExpandAll");
+                             actionCollection, "view_ExpandAll");
   actExpandAll->setEnabled(false);
   actCollapseAll = new KAction(i18n("&Collapse all threads"), 0 , this, \
                SLOT(slotThreadsCollapse()),
-                               &actionCollection, "view_CollapseAll");
+                               actionCollection, "view_CollapseAll");
   actCollapseAll->setEnabled(false);
   actRefresh = new KAction(i18n("&Refresh List"),"reload", \
                KStdAccel::key(KStdAccel::Reload), this, SLOT(slotRefresh()),
-                           &actionCollection, "view_Refresh");
+                           actionCollection, "view_Refresh");
   actRefresh->setEnabled(false);
   actAllRead = new KAction(i18n("Mark all as &read"), "goto", 0, this, \
                SLOT(slotAllRead()),
-                           &actionCollection, "group_allRead");
+                           actionCollection, "group_allRead");
   actAllRead->setEnabled(false);
   actAllUnread = new KAction(i18n("Mark all as u&nread"), 0, this, \
                SLOT(slotAllUnread()),
-                             &actionCollection, "group_allUnread");
+                             actionCollection, "group_allUnread");
   actAllUnread->setEnabled(false);
   actPostReply = new KAction(i18n("Post &reply"),"message_reply", Key_R , this, \
                SLOT(slotReply()),
-                             &actionCollection, "article_postReply");
+                             actionCollection, "article_postReply");
   actPostReply->setEnabled(false);
 
   actMailReply = new KAction(i18n("&Mail reply"),"mail_reply", Key_A , this, \
                SLOT(slotRemail()),
-                             &actionCollection, "article_mailReply");
+                             actionCollection, "article_mailReply");
   actMailReply->setEnabled(false);
   actForward = new KAction(i18n("&Forward"),"mail_forward", Key_F , this, \
                SLOT(slotForward()),
-                           &actionCollection, "article_forward");
+                           actionCollection, "article_forward");
   actForward->setEnabled(false);
   actMarkRead = new KAction(i18n("M&ark as read"), Key_D , this, \
                SLOT(slotMarkRead()),
-                            &actionCollection, "article_read");
+                            actionCollection, "article_read");
   actMarkRead->setEnabled(false);
   actMarkUnread = new KAction(i18n("Mar&k as unread"), Key_U , this, \
                SLOT(slotMarkUnread()),
-                              &actionCollection, "article_unread");
+                              actionCollection, "article_unread");
   actMarkUnread->setEnabled(false);
   actThreadRead = new KAction(i18n("Mark thread as r&ead"), CTRL+Key_D , this, \
                SLOT(slotThreadRead()),
-                              &actionCollection, "thread_read");
+                              actionCollection, "thread_read");
   actThreadRead->setEnabled(false);
   actThreadUnread = new KAction(i18n("Mark thread as u&nread"), CTRL+Key_U , this, \
                SLOT(slotThreadUnread()),
-                                &actionCollection, "thread_unread");
+                                actionCollection, "thread_unread");
   actThreadUnread->setEnabled(false);
   actThreadSetScore = new KAction(i18n("Set &Score..."), "rotate", Key_S , this, \
                SLOT(slotThreadScore()),
-                                  &actionCollection, "thread_setScore");
+                                  actionCollection, "thread_setScore");
   actThreadSetScore->setEnabled(false);
   actThreadWatch = new KAction(i18n("&Watch"), "top", Key_W , this, \
                SLOT(slotThreadWatch()),
-                               &actionCollection, "thread_watch");
+                               actionCollection, "thread_watch");
   actThreadWatch->setEnabled(false);
   actThreadIgnore = new KAction(i18n("&Ignore"), "bottom", Key_I , this, \
                SLOT(slotThreadIgnore()),
-                                &actionCollection, "thread_ignore");
+                                actionCollection, "thread_ignore");
   actThreadIgnore->setEnabled(false);
   actOwnWindow = new KAction(i18n("&Open in own window"), "viewmag+", Key_O , this, \
                SLOT(slotOwnWindow()),
-                             &actionCollection, "article_ownWindow");
+                             actionCollection, "article_ownWindow");
   actOwnWindow->setEnabled(false);
   actSearch = new KAction(i18n("&Search..."),"find" , Key_F4 , this, \
                SLOT(slotSearch()),
-                          &actionCollection, "article_search");
+                          actionCollection, "article_search");
   actSearch->setEnabled(false);
 }
 
Index: knfetcharticlemanager.h
===================================================================
RCS file: /home/kde/kdenetwork/knode/knfetcharticlemanager.h,v
retrieving revision 1.8
diff -u -3 -p -r1.8 knfetcharticlemanager.h
--- knfetcharticlemanager.h	2000/09/08 01:19:46	1.8
+++ knfetcharticlemanager.h	2000/09/29 01:20:04
@@ -39,11 +39,9 @@ class KNFetchArticleManager : public QOb
   Q_OBJECT
   
   public:
-    KNFetchArticleManager(KNListView *v, KNFilterManager* fiManager, QObject * \
parent=0, const char * name=0); +    KNFetchArticleManager(KNListView *v, \
KNFilterManager* fiManager, KActionCollection* actColl, QObject * parent=0, const \
char * name=0);  ~KNFetchArticleManager();
     
-    const KActionCollection& actions()      { return actionCollection; }
-    
     void readOptions();
     void saveOptions();
         
@@ -95,7 +93,7 @@ class KNFetchArticleManager : public QOb
             *actMarkRead, *actMarkUnread, *actOwnWindow,  *actSearch, \
                *actThreadRead,
             *actThreadUnread, *actThreadSetScore, *actThreadWatch,*actThreadIgnore;
     KToggleAction *actShowThreads;
-    KActionCollection actionCollection;
+    KActionCollection *actionCollection;
           
   public slots:
     void slotFilterChanged(KNArticleFilter *f);
Index: knfiltermanager.cpp
===================================================================
RCS file: /home/kde/kdenetwork/knode/knfiltermanager.cpp,v
retrieving revision 1.14
diff -u -3 -p -r1.14 knfiltermanager.cpp
--- knfiltermanager.cpp	2000/09/17 00:10:56	1.14
+++ knfiltermanager.cpp	2000/09/29 01:20:04
@@ -128,12 +128,12 @@ void KNFilterSelectAction::slotMenuActiv
 
 
 
-KNFilterManager::KNFilterManager( QObject * parent, const char * name)
- : QObject(parent,name), fset(0), currFilter(0), isAGroup(false)
+KNFilterManager::KNFilterManager(KActionCollection* actColl, QObject * parent, const \
char * name) + : QObject(parent,name), fset(0), currFilter(0), \
actionCollection(actColl), isAGroup(false)  {
   fList.setAutoDelete(true);
 
-  actFilter = new KNFilterSelectAction(i18n("&Filter"), "filter", 0 , \
&actionCollection, "view_Filter"); +  actFilter = new \
KNFilterSelectAction(i18n("&Filter"), "filter", 0 , actionCollection, "view_Filter"); \
connect(actFilter, SIGNAL(activated(int)), this,  SLOT(slotMenuActivated(int)));  \
actFilter->setEnabled(false);  
Index: knfiltermanager.h
===================================================================
RCS file: /home/kde/kdenetwork/knode/knfiltermanager.h,v
retrieving revision 1.12
diff -u -3 -p -r1.12 knfiltermanager.h
--- knfiltermanager.h	2000/09/17 00:10:56	1.12
+++ knfiltermanager.h	2000/09/29 01:20:04
@@ -64,11 +64,9 @@ class KNFilterManager : public QObject
   Q_OBJECT
 
   public:
-    KNFilterManager(QObject * parent=0, const char * name=0);
+    KNFilterManager(KActionCollection* actColl, QObject * parent=0, const char * \
name=0);  ~KNFilterManager();
     
-    const KActionCollection& actions()      { return actionCollection; }
-
     void readOptions();
     void saveOptions();
 
@@ -98,7 +96,7 @@ class KNFilterManager : public QObject
     KNArticleFilter *currFilter;
     KNFilterSelectAction *actFilter;
     QValueList<int> menuOrder;  
-    KActionCollection actionCollection;
+    KActionCollection *actionCollection;
     bool isAGroup, commitNeeded;
   
   protected slots:
Index: knfoldermanager.cpp
===================================================================
RCS file: /home/kde/kdenetwork/knode/knfoldermanager.cpp,v
retrieving revision 1.11
diff -u -3 -p -r1.11 knfoldermanager.cpp
--- knfoldermanager.cpp	2000/09/20 00:04:19	1.11
+++ knfoldermanager.cpp	2000/09/29 01:20:04
@@ -40,8 +40,8 @@
 #include "knfoldermanager.h"
 
 
-KNFolderManager::KNFolderManager(KNSavedArticleManager *a, KNListView *v,  QObject * \
                parent, const char * name)
-  : QObject(parent, name), view(v), aManager(a), lastId(3), c_ount(3)
+KNFolderManager::KNFolderManager(KNSavedArticleManager *a, KNListView *v, \
KActionCollection* actColl, QObject * parent, const char * name) +  : QObject(parent, \
name), view(v), aManager(a), lastId(3), c_ount(3), actionCollection(actColl)  {
   fList=new QList<KNFolder>;
   fList->setAutoDelete(true);
@@ -50,9 +50,9 @@ KNFolderManager::KNFolderManager(KNSaved
   showListItems();
     
   actCompactFolder = new KAction(i18n("&Compact Folder"), "wizard", 0, this, \
                SLOT(slotCompactFolder()),
-                                 &actionCollection, "folder_compact");
+                                 actionCollection, "folder_compact");
   actEmptyFolder = new KAction(i18n("&Empty Folder"), 0, this, \
                SLOT(slotEmptyFolder()),
-                               &actionCollection, "folder_empty");
+                               actionCollection, "folder_empty");
 
   setCurrentFolder(0);  
 }
Index: knfoldermanager.h
===================================================================
RCS file: /home/kde/kdenetwork/knode/knfoldermanager.h,v
retrieving revision 1.4
diff -u -3 -p -r1.4 knfoldermanager.h
--- knfoldermanager.h	2000/07/27 19:44:04	1.4
+++ knfoldermanager.h	2000/09/29 01:20:04
@@ -34,11 +34,9 @@ class KNFolderManager : public QObject
   
   public:
     enum stFolder { SFdrafts=0, SFoutbox=1, SFsent=2 };
-    KNFolderManager(KNSavedArticleManager *a, KNListView *v, QObject * parent=0, \
const char * name=0); +    KNFolderManager(KNSavedArticleManager *a, KNListView *v, \
KActionCollection* actColl, QObject * parent=0, const char * name=0);  \
                ~KNFolderManager();
-    
-    const KActionCollection& actions()    { return actionCollection; }  
-    
+
     int count()                           { return c_ount; }
     KNFolder* currentFolder()             { return c_urrentFolder; }
     bool hasCurrentFolder()               { return (c_urrentFolder!=0); }
@@ -67,7 +65,7 @@ class KNFolderManager : public QObject
     KNSavedArticleManager *aManager;
     int lastId, c_ount;
     KAction *actCompactFolder, *actEmptyFolder;
-    KActionCollection actionCollection;
+    KActionCollection *actionCollection;
     
   protected slots:  
     void slotCompactFolder()              { compactFolder(); }
Index: kngroup.cpp
===================================================================
RCS file: /home/kde/kdenetwork/knode/kngroup.cpp,v
retrieving revision 1.15
diff -u -3 -p -r1.15 kngroup.cpp
--- kngroup.cpp	2000/09/28 21:42:30	1.15
+++ kngroup.cpp	2000/09/29 01:20:05
@@ -39,7 +39,7 @@
 
 KNGroup::KNGroup(KNCollection *p)
   : KNArticleCollection(p), n_ewCount(0), r_eadCount(0),
-    l_astNr(0), m_axFetch(0), u_ser(0), l_ocked(false)
+    l_astNr(0), m_axFetch(0), u_ser(0), l_ocked(false), l_oading(0)
 {
 }
 
@@ -193,7 +193,7 @@ bool KNGroup::loadHdrs()
         }
         
         split.init(buff, "\t");
-        art=new KNFetchArticle();
+        art=new KNFetchArticle(this);
         split.first();
         art->setMessageId(split.string());
     
@@ -330,7 +330,7 @@ void KNGroup::insortNewHeaders(QStrList 
     split.init(line, "\t");
       
     //new Header-Object
-    art=new KNFetchArticle();
+    art=new KNFetchArticle(this);
     art->setNew(true);
     //art->setFetchTime(fTimeT);
         
Index: kngroup.h
===================================================================
RCS file: /home/kde/kdenetwork/knode/kngroup.h,v
retrieving revision 1.6
diff -u -3 -p -r1.6 kngroup.h
--- kngroup.h	2000/07/27 19:44:04	1.6
+++ kngroup.h	2000/09/29 01:20:05
@@ -67,6 +67,7 @@ class KNGroup : public KNArticleCollecti
     int statThrWithNew();
     int statThrWithUnread();
     bool locked()                       { return l_ocked; }
+    int loading()                       { return l_oading; }
     
     //set
     void setGroupname(const QCString &s)  { g_roupname=s; }
@@ -81,6 +82,7 @@ class KNGroup : public KNArticleCollecti
     void setMaxFetch(int i)               { m_axFetch=i; }
     void setUser(KNUserEntry *u)          { u_ser=u; }
     void setLocked(bool l)                { l_ocked=l; }
+    void setLoading(int i)                { l_oading=i; }
                 
   protected:
     void sortHdrs(int cnt);
@@ -90,7 +92,7 @@ class KNGroup : public KNArticleCollecti
     QCString g_roupname, d_escription;
     KNUserEntry *u_ser;
     bool l_ocked;
-    
+    int l_oading;
     
     class dynData {
       
Index: kngroupmanager.cpp
===================================================================
RCS file: /home/kde/kdenetwork/knode/kngroupmanager.cpp,v
retrieving revision 1.25
diff -u -3 -p -r1.25 kngroupmanager.cpp
--- kngroupmanager.cpp	2000/09/20 00:04:19	1.25
+++ kngroupmanager.cpp	2000/09/29 01:20:05
@@ -191,8 +191,8 @@ QSortedList<KNGroupInfo>* KNGroupListDat
 //===============================================================================
 
 
-KNGroupManager::KNGroupManager(KNFetchArticleManager *a, QObject * parent, const \
                char * name)
-  : QObject(parent,name), aManager(a)
+KNGroupManager::KNGroupManager(KNFetchArticleManager *a, KActionCollection* actColl, \
QObject * parent, const char * name) +  : QObject(parent,name), aManager(a), \
actionCollection(actColl)  {
   gList=new QList<KNGroup>;
   gList->setAutoDelete(true);
@@ -200,15 +200,15 @@ KNGroupManager::KNGroupManager(KNFetchAr
   readConfig(); 
   
   actProperties = new KAction(i18n("&Properties..."), 0, this, \
                SLOT(slotProperties()),
-                              &actionCollection, "group_properties");
+                              actionCollection, "group_properties");
   actLoadHdrs = new KAction(i18n("&Get New Articles"), "mail_get" , 0, this, \
                SLOT(slotLoadHdrs()),
-                            &actionCollection, "group_dnlHeaders");
+                            actionCollection, "group_dnlHeaders");
   actExpire = new KAction(i18n("E&xpire Now"), "wizard", 0, this, \
                SLOT(slotExpire()),
-                          &actionCollection, "group_expire");
+                          actionCollection, "group_expire");
   actResort = new KAction(i18n("Res&ort"), 0, this, SLOT(slotResort()),
-                          &actionCollection, "group_resort");
+                          actionCollection, "group_resort");
   actUnsubscribe = new KAction(i18n("&Unsubscribe"), 0, this, \
                SLOT(slotUnsubscribe()),
-                               &actionCollection, "group_unsubscribe");     
+                               actionCollection, "group_unsubscribe");
   
   setCurrentGroup(0);
 }
@@ -334,6 +334,8 @@ void KNGroupManager::expireAll(KNPurgePr
   }
 
   for(KNGroup *var=gList->first(); var; var=gList->next()) {
+    if((var->locked()) || (var->loading()>0))
+      continue;
     if(dlg) {
       dlg->setInfo(var->groupname());
       kapp->processEvents();
@@ -415,7 +417,7 @@ void KNGroupManager::unsubscribeGroup(KN
   if(!g) g=c_urrentGroup;
   if(!g) return;
 
-  if(g->locked()) {
+  if((g->locked()) || (g->loading()>0)) {
     KMessageBox::sorry(knGlobals.topWidget, QString(i18n("The group \"%1\" is being \
updated currently.\nIt is not possible to unsubscribe it at the \
moment.")).arg(g->groupname()));  return;
   }
@@ -472,6 +474,11 @@ void KNGroupManager::expireGroupNow(KNGr
 {
   if(!g) g=c_urrentGroup;
   if(!g) return;
+
+  if((g->locked()) || (g->loading()>0)) {
+    // add error message after 2.0!!!!!!!!!
+    return;
+  }
 
   KNArticleWindow::closeAllWindowsForCollection(g);
 
Index: kngroupmanager.h
===================================================================
RCS file: /home/kde/kdenetwork/knode/kngroupmanager.h,v
retrieving revision 1.8
diff -u -3 -p -r1.8 kngroupmanager.h
--- kngroupmanager.h	2000/08/03 03:37:30	1.8
+++ kngroupmanager.h	2000/09/29 01:20:05
@@ -82,12 +82,10 @@ class KNGroupManager : public QObject {
   Q_OBJECT
       
   public:
-    KNGroupManager(KNFetchArticleManager *a, QObject * parent=0, const char * \
name=0); +    KNGroupManager(KNFetchArticleManager *a, KActionCollection* actColl, \
QObject * parent=0, const char * name=0);  ~KNGroupManager();
-    
-    const KActionCollection& actions()    { return actionCollection; }  
-    
-    void readConfig();    
+
+    void readConfig();
     void loadGroups(KNNntpAccount *a);
     void getSubscribed(KNNntpAccount *a, QStrList* l);
     void getGroupsOfAccount(KNNntpAccount *a, QList<KNGroup> *l);   
@@ -125,7 +123,7 @@ class KNGroupManager : public QObject {
     int defaultMaxFetch;
     bool a_utoCheck;
     KAction *actProperties, *actLoadHdrs, *actExpire, *actResort, *actUnsubscribe;
-    KActionCollection actionCollection;
+    KActionCollection *actionCollection;
         
   protected slots:  
     void slotProperties()                 { showGroupProperties(); }
Index: knjobdata.cpp
===================================================================
RCS file: /home/kde/kdenetwork/knode/knjobdata.cpp,v
retrieving revision 1.4
diff -u -3 -p -r1.4 knjobdata.cpp
--- knjobdata.cpp	2000/07/27 19:44:04	1.4
+++ knjobdata.cpp	2000/09/29 01:20:05
@@ -28,8 +28,11 @@ KNJobData::KNJobData(jobType t, KNServer
  : t_ype(t), d_ata(d), a_ccount(a), c_anceled(false)
 {
   if(t_ype==JTfetchNewHeaders) ((KNGroup*)d_ata)->setLocked(true);
-  else if(t_ype==JTfetchArticle) ((KNFetchArticle*)d_ata)->setLocked(true);
-  else if(t_ype==JTpostArticle || t_ype==JTmail) \
((KNSavedArticle*)d_ata)->setLocked(true); +  else if(t_ype==JTfetchArticle) {
+    KNFetchArticle *art =(KNFetchArticle*)d_ata;
+    art->setLocked(true);
+    art->group()->setLoading(art->group()->loading()+1);
+  } else if(t_ype==JTpostArticle || t_ype==JTmail) \
((KNSavedArticle*)d_ata)->setLocked(true);  }
 
 
@@ -37,6 +40,10 @@ KNJobData::KNJobData(jobType t, KNServer
 KNJobData::~KNJobData()
 {
   if(t_ype==JTfetchNewHeaders) ((KNGroup*)d_ata)->setLocked(false);
-  else if(t_ype==JTfetchArticle) ((KNFetchArticle*)d_ata)->setLocked(false);
-  else if(t_ype==JTpostArticle || t_ype==JTmail) \
((KNSavedArticle*)d_ata)->setLocked(false); +  else if(t_ype==JTfetchArticle) {
+    KNFetchArticle *art =(KNFetchArticle*)d_ata;
+    art->setLocked(false);
+    if (art->group()->loading()>0)
+      art->group()->setLoading(art->group()->loading()-1);
+  } else if(t_ype==JTpostArticle || t_ype==JTmail) \
((KNSavedArticle*)d_ata)->setLocked(false);  }
Index: knnetaccess.cpp
===================================================================
RCS file: /home/kde/kdenetwork/knode/knnetaccess.cpp,v
retrieving revision 1.11
diff -u -3 -p -r1.11 knnetaccess.cpp
--- knnetaccess.cpp	2000/09/16 20:47:05	1.11
+++ knnetaccess.cpp	2000/09/29 01:20:05
@@ -35,8 +35,8 @@
 #include "knnetaccess.h"
 
 
-KNNetAccess::KNNetAccess(QObject *parent, const char *name )
-: QObject(parent,name), currentNntpJob(0L), currentSmtpJob(0L)
+KNNetAccess::KNNetAccess(KActionCollection* actColl, QObject *parent, const char \
*name ) +: QObject(parent,name), currentNntpJob(0L), currentSmtpJob(0L), \
actionCollection(actColl)  {
   if((pipe(nntpInPipe)==-1)||
      (pipe(nntpOutPipe)==-1)||
@@ -78,7 +78,7 @@ KNNetAccess::KNNetAccess(QObject *parent
   smtpJobQueue.setAutoDelete(false);    
   
   actNetStop = new KAction(i18n("Stop &Network"),"stop",0, this, \
                SLOT(slotCancelAllJobs()),
-                           &actionCollection, "net_stop");
+                           actionCollection, "net_stop");
   actNetStop->setEnabled(false);
 }
 
Index: knnetaccess.h
===================================================================
RCS file: /home/kde/kdenetwork/knode/knnetaccess.h,v
retrieving revision 1.6
diff -u -3 -p -r1.6 knnetaccess.h
--- knnetaccess.h	2000/09/16 20:47:05	1.6
+++ knnetaccess.h	2000/09/29 01:20:05
@@ -39,11 +39,9 @@ class KNNetAccess : public QObject  {
 
   public:
 
-    KNNetAccess(QObject *parent=0, const char *name=0);
+    KNNetAccess(KActionCollection* actColl, QObject *parent=0, const char *name=0);
     ~KNNetAccess();
-    
-    const KActionCollection& actions()    { return actionCollection; }  
-    
+
     void addJob(KNJobData *job);
     void stopJobsNntp(int type);         // type==0 => all jobs
     void stopJobsSmtp(int type);         // type==0 => all jobs
@@ -69,7 +67,7 @@ class KNNetAccess : public QObject  {
     int nntpInPipe[2], nntpOutPipe[2], smtpInPipe[2], smtpOutPipe[2];
     QSocketNotifier *nntpNotifier,*smtpNotifier;
     KAction* actNetStop;
-    KActionCollection actionCollection;
+    KActionCollection *actionCollection;
   
   protected slots:
     void slotThreadSignal(int i);
Index: knode.cpp
===================================================================
RCS file: /home/kde/kdenetwork/knode/knode.cpp,v
retrieving revision 1.47
diff -u -3 -p -r1.47 knode.cpp
--- knode.cpp	2000/09/23 22:11:12	1.47
+++ knode.cpp	2000/09/29 01:20:05
@@ -166,31 +166,31 @@ KNodeApp::KNodeApp()
   initStatusBar();
 
   //init Net
-  NAcc=new KNNetAccess();
+  NAcc=new KNNetAccess(actionCollection());
   knGlobals.netAccess = NAcc;
 
   //init filter manager
-  FiManager=new KNFilterManager();
+  FiManager=new KNFilterManager(actionCollection());
   knGlobals.fiManager = FiManager;
 
   //init Fetch-Article Manager
-  FAManager=new KNFetchArticleManager(view->hdrView, FiManager);
+  FAManager=new KNFetchArticleManager(view->hdrView, FiManager, actionCollection());
   knGlobals.fArtManager = FAManager;
 
   //init Group Manager
-  GManager=new KNGroupManager(FAManager);
+  GManager=new KNGroupManager(FAManager, actionCollection());
   knGlobals.gManager = GManager;
 
   //init Account Manager
-  AManager=new KNAccountManager(GManager, view->collectionView);
+  AManager=new KNAccountManager(GManager, view->collectionView, actionCollection());
   knGlobals.accManager = AManager;
 
   //init Saved-Article Manager
-  SAManager=new KNSavedArticleManager(view->hdrView, AManager);
+  SAManager=new KNSavedArticleManager(view->hdrView, AManager, actionCollection());
   knGlobals.sArtManager = SAManager;
 
   //init Folder Manager
-  FoManager=new KNFolderManager(SAManager, view->collectionView);
+  FoManager=new KNFolderManager(SAManager, view->collectionView, \
actionCollection());  knGlobals.foManager = FoManager;
 
   // all components that provide actions are created, now
@@ -373,7 +373,7 @@ void KNodeApp::initView()
 {
   KNArticleWidget::readOptions();
   KNViewHeader::loadAll();
-  view = new KNodeView(this,"knodeView");
+  view = new KNodeView(actionCollection(),this,"knodeView");
   setCentralWidget(view);
 
   connect(view->collectionView, SIGNAL(clicked(QListViewItem *)),
@@ -439,16 +439,6 @@ void KNodeApp::initActions()
   KStdAction::keyBindings(this, SLOT(slotConfKeys()), actionCollection());
   KStdAction::configureToolbars(this, SLOT(slotConfToolbar()), actionCollection());
   KStdAction::preferences(this, SLOT(slotSettings()), actionCollection());
-
-  // add all external actions...
-  *actionCollection() += AManager->actions();
-  *actionCollection() += FoManager->actions();
-  *actionCollection() += GManager->actions();
-  *actionCollection() += FAManager->actions();
-  *actionCollection() += SAManager->actions();
-  *actionCollection() += FiManager->actions();
-  *actionCollection() += NAcc->actions();
-  *actionCollection() += view->actions();
 
   createGUI("knodeui.rc");
 }
Index: knodeview.cpp
===================================================================
RCS file: /home/kde/kdenetwork/knode/knodeview.cpp,v
retrieving revision 1.14
diff -u -3 -p -r1.14 knodeview.cpp
--- knodeview.cpp	2000/09/17 02:49:18	1.14
+++ knodeview.cpp	2000/09/29 01:20:05
@@ -35,8 +35,8 @@
 #include "knodeview.h"
 
 
-KNodeView::KNodeView(QWidget *parent, const char * name)
-  : QSplitter(parent,name), longView(true), notAFolder(true)
+KNodeView::KNodeView(KActionCollection* actColl, QWidget *parent, const char * name)
+  : QSplitter(parent,name), longView(true), actionCollection(actColl), \
notAFolder(true)  {
   setOpaqueResize(true);
   colFocus=new KNFocusWidget(this,"colFocus");
@@ -53,7 +53,7 @@ KNodeView::KNodeView(QWidget *parent, co
   secSplitter->setResizeMode(hdrFocus, QSplitter::KeepSize);
 
   artFocus=new KNFocusWidget(secSplitter,"artFocus");
-  artView=new KNArticleWidget(artFocus,"artView");
+  artView=new KNArticleWidget(actionCollection, artFocus,"artView");
   artFocus->setWidget(artView);
   
   initCollectionView();
@@ -62,7 +62,7 @@ KNodeView::KNodeView(QWidget *parent, co
   setTabOrder(hdrView, artView);
   setTabOrder(artView, collectionView);
 
-  actSortSelect = new KSelectAction(i18n("&Sort"), 0, &actionCollection, \
"view_Sort"); +  actSortSelect = new KSelectAction(i18n("&Sort"), 0, \
actionCollection, "view_Sort");  connect(actSortSelect, SIGNAL(activated(int)), this, \
SLOT(slotSortMenuSelect(int)));  connect(hdrView, SIGNAL(sortingChanged(int)), this, \
SLOT(slotSortHdrSelect(int)));  QStringList items;
@@ -73,24 +73,22 @@ KNodeView::KNodeView(QWidget *parent, co
   actSortSelect->setItems(items);
     
   actNextArt = new KAction(i18n("&Next article"), "next", Key_N , this, \
                SLOT(slotNextArticle()),
-                           &actionCollection, "go_nextArticle");
+                           actionCollection, "go_nextArticle");
   actPrevArt = new KAction(i18n("&Previous article"), "previous", Key_B , this, \
                SLOT(slotPrevArticle()),
-                           &actionCollection, "go_prevArticle");
+                           actionCollection, "go_prevArticle");
   actNextUnreadArt = new KAction(i18n("Next unread &article"), "1rightarrow", \
                ALT+Key_Space , this, SLOT(slotNextUnreadArticle()),
-                                 &actionCollection, "go_nextUnreadArticle");
+                                 actionCollection, "go_nextUnreadArticle");
   actReadThrough = new KAction(i18n("Read &through articles"), Key_Space , this, \
                SLOT(slotReadThrough()),
-                               &actionCollection, "go_readThrough");
+                               actionCollection, "go_readThrough");
   actNextUnreadThread =  new KAction(i18n("Next unread &thread"),"2rightarrow", \
                CTRL+Key_Space , this, SLOT(slotNextUnreadThread()),
-                                     &actionCollection, "go_nextUnreadThread");
+                                     actionCollection, "go_nextUnreadThread");
   actNextGroup = new KAction(i18n("Ne&xt group"), "down", Key_Plus , this, \
                SLOT(slotNextGroup()),
-                             &actionCollection, "go_nextGroup");
+                             actionCollection, "go_nextGroup");
   actPrevGroup = new KAction(i18n("Pre&vious group"), "up", Key_Minus , this, \
                SLOT(slotPrevGroup()),
-                             &actionCollection, "go_prevGroup");
+                             actionCollection, "go_prevGroup");
   actToggleThread = new KAction(i18n("&Toggle Subthread"), Key_T, this, \
                SLOT(slotToggleThread()),
-                                &actionCollection, "thread_toggle");
+                                actionCollection, "thread_toggle");
   actToggleThread->setEnabled(false);
-
-  actionCollection += artView->actions();
 
   readOptions();
 
Index: knodeview.h
===================================================================
RCS file: /home/kde/kdenetwork/knode/knodeview.h,v
retrieving revision 1.9
diff -u -3 -p -r1.9 knodeview.h
--- knodeview.h	2000/08/13 16:13:23	1.9
+++ knodeview.h	2000/09/29 01:20:05
@@ -36,11 +36,9 @@ class KNodeView : public QSplitter
   
   public:
       
-    KNodeView(QWidget *parent=0,const char * name=0);
+    KNodeView(KActionCollection* actColl, QWidget *parent=0,const char * name=0);
     ~KNodeView();
-    
-    const KActionCollection& actions()      { return actionCollection; }    
-    
+
     void readOptions();
     void saveOptions();
 
@@ -66,7 +64,7 @@ class KNodeView : public QSplitter
     KSelectAction *actSortSelect;
     KAction *actNextArt, *actPrevArt, *actNextUnreadArt, *actReadThrough, \
                *actNextUnreadThread,
             *actNextGroup, *actPrevGroup, *actToggleThread;
-    KActionCollection actionCollection;
+    KActionCollection *actionCollection;
     bool notAFolder;
 
   protected slots:
Index: knsavedarticlemanager.cpp
===================================================================
RCS file: /home/kde/kdenetwork/knode/knsavedarticlemanager.cpp,v
retrieving revision 1.36
diff -u -3 -p -r1.36 knsavedarticlemanager.cpp
--- knsavedarticlemanager.cpp	2000/09/20 00:04:19	1.36
+++ knsavedarticlemanager.cpp	2000/09/29 01:20:06
@@ -48,8 +48,8 @@
 #include "knsavedarticlemanager.h"
 
 
-KNSavedArticleManager::KNSavedArticleManager(KNListView *v, KNAccountManager *am, \
                QObject * parent, const char * name) :
-  QObject(parent,name), KNArticleManager(v), f_older(0), sedlg(0), sDlg(0), accM(am)
+KNSavedArticleManager::KNSavedArticleManager(KNListView *v, KNAccountManager *am, \
KActionCollection* actColl, QObject * parent, const char * name) : +  \
QObject(parent,name), KNArticleManager(v), f_older(0), sedlg(0), sDlg(0), accM(am), \
actionCollection(actColl)  {
   //f_ilter=0;
 
@@ -58,19 +58,19 @@ KNSavedArticleManager::KNSavedArticleMan
   readConfig();
 
   actSendOutbox = new KAction(i18n("Sen&d pending messages"), "mail_send", 0, this, \
                SLOT(slotSendOutbox()),
-                              &actionCollection, "net_sendPending");
+                              actionCollection, "net_sendPending");
   actSendOutbox->setEnabled(false);
   actEdit = new KAction(i18n("edit article","&Edit"), "signature", Key_E , this, \
                SLOT(slotEdit()),
-                        &actionCollection, "article_edit");
+                        actionCollection, "article_edit");
   actEdit->setEnabled(false);
   actDelete = new KAction(i18n("&Delete"), "editdelete", Key_Delete, this, \
                SLOT(slotDelete()),
-                          &actionCollection, "article_delete");
+                          actionCollection, "article_delete");
   actDelete->setEnabled(false);
   actSendNow = new KAction(i18n("Send &now"),"mail_send", 0 , this, \
                SLOT(slotSendNow()),
-                           &actionCollection, "article_sendNow");
+                           actionCollection, "article_sendNow");
   actSendNow->setEnabled(false);
   actSendLater = new KAction(i18n("Send &later"), "queue", 0 , this, \
                SLOT(slotSendLater()),
-                             &actionCollection, "article_sendLater");
+                             actionCollection, "article_sendLater");
   actSendLater->setEnabled(false);
 }
 
Index: knsavedarticlemanager.h
===================================================================
RCS file: /home/kde/kdenetwork/knode/knsavedarticlemanager.h,v
retrieving revision 1.14
diff -u -3 -p -r1.14 knsavedarticlemanager.h
--- knsavedarticlemanager.h	2000/09/20 00:04:19	1.14
+++ knsavedarticlemanager.h	2000/09/29 01:20:06
@@ -45,11 +45,9 @@ class KNSavedArticleManager : public QOb
   Q_OBJECT  
 
   public:
-    KNSavedArticleManager(KNListView *v, KNAccountManager *am, QObject * parent=0, \
const char * name=0); +    KNSavedArticleManager(KNListView *v, KNAccountManager *am, \
KActionCollection* actColl, QObject * parent=0, const char * name=0);  \
                ~KNSavedArticleManager();
-    
-    const KActionCollection& actions()    { return actionCollection; }    
-    
+
     void readConfig();
     void setStandardFolders(KNFolder *d, KNFolder *o, KNFolder *s);
     void setFolder(KNFolder *f);
@@ -112,7 +110,7 @@ class KNSavedArticleManager : public QOb
     KNAccountManager *accM;
     QList<KNComposer> *comList;
     KAction *actSendOutbox, *actEdit, *actDelete, *actSendNow, *actSendLater;
-    KActionCollection actionCollection;   
+    KActionCollection *actionCollection;
         
   protected slots:
     void slotComposerDone(KNComposer *com);



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

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