• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdepim API Reference
  • KDE Home
  • Contact Us
 

knode

  • sources
  • kde-4.12
  • kdepim
  • knode
knmainwidget.cpp
Go to the documentation of this file.
1 /*
2  KNode, the KDE newsreader
3  Copyright (c) 2003 Zack Rusin <zack@kde.org>
4  Copyright (c) 2004-2006 Volker Krause <vkrause@kde.org>
5 
6  This program is free software; you can redistribute it and/or modify
7  it under the terms of the GNU General Public License as published by
8  the Free Software Foundation; either version 2 of the License, or
9  (at your option) any later version.
10  You should have received a copy of the GNU General Public License
11  along with this program; if not, write to the Free Software Foundation,
12  Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, US
13 */
14 
15 #include "knmainwidget.h"
16 
17 #include "headerview.h"
18 
19 #include <Q3Accel>
20 #include <QEvent>
21 #include <QLabel>
22 #include <QVBoxLayout>
23 #include <QMenu>
24 #include <QSplitter>
25 #include <ktoolbar.h>
26 #include <kicon.h>
27 #include <kactioncollection.h>
28 #include <kinputdialog.h>
29 #include <kmessagebox.h>
30 #include <kedittoolbar.h>
31 #include <kstandardaction.h>
32 #include <kdebug.h>
33 #include <kmenubar.h>
34 #include <kiconloader.h>
35 #include <kstatusbar.h>
36 #include <klocale.h>
37 #include <kcmdlineargs.h>
38 #include <k3listviewsearchline.h>
39 #include <khbox.h>
40 #include <kselectaction.h>
41 #include <kstandardshortcut.h>
42 #include <ktoggleaction.h>
43 #include <kxmlguiclient.h>
44 #include <kxmlguifactory.h>
45 #include <ksqueezedtextlabel.h>
46 
47 #include "libkdepim/misc/uistatesaver.h"
48 #include "libkdepim/misc/broadcaststatus.h"
49 #include "libkdepim/addressline/recentaddresses.h"
50 using KPIM::BroadcastStatus;
51 using KPIM::RecentAddresses;
52 
53 #include <mailtransport/transportmanager.h>
54 using MailTransport::TransportManager;
55 
56 //GUI
57 #include "knarticlewindow.h"
58 #include "kncollectionview.h"
59 #include "kncollectionviewitem.h"
60 #include "knhdrviewitem.h"
61 
62 //Core
63 #include "articlewidget.h"
64 #include "knglobals.h"
65 #include "knconfigmanager.h"
66 #include "knarticlemanager.h"
67 #include "knarticlefactory.h"
68 #include "kngroupmanager.h"
69 #include "knnntpaccount.h"
70 #include "knaccountmanager.h"
71 #include "knfiltermanager.h"
72 #include "knfoldermanager.h"
73 #include "knfolder.h"
74 #include "kncleanup.h"
75 #include "utilities.h"
76 #include "knscoring.h"
77 #include "knmemorymanager.h"
78 #include "scheduler.h"
79 #include "settings.h"
80 
81 #include "knodeadaptor.h"
82 
83 using namespace KNode;
84 
85 KNMainWidget::KNMainWidget( KXMLGUIClient* client, QWidget* parent ) :
86  KVBox( parent ),
87  c_olView( 0 ),
88  b_lockui( false ),
89  m_GUIClient( client )
90 {
91  (void) new KnodeAdaptor( this );
92  QDBusConnection::sessionBus().registerObject("/KNode", this);
93  knGlobals.top=this;
94  knGlobals.topWidget=this;
95 
96  //------------------------------- <CONFIG> ----------------------------------
97  c_fgManager = knGlobals.configManager();
98  //------------------------------- </CONFIG> ----------------------------------
99 
100  //-------------------------------- <GUI> ------------------------------------
101  // this will enable keyboard-only actions like that don't appear in any menu
102  //actionCollection()->setDefaultShortcutContext( Qt::WindowShortcut );
103 
104  Q3Accel *accel = new Q3Accel( this );
105  initStatusBar();
106  setSpacing( 0 );
107  setMargin( 0 );
108  setLineWidth( 0 );
109 
110  // splitters
111  mPrimarySplitter = new QSplitter( Qt::Horizontal, this );
112  mPrimarySplitter->setObjectName( "mPrimarySplitter" );
113  mSecondSplitter = new QSplitter( Qt::Vertical, mPrimarySplitter );
114  mSecondSplitter->setObjectName( "mSecondSplitter" );
115 
116  //article view
117  mArticleViewer = new ArticleWidget( mPrimarySplitter, client, actionCollection(), true/*main viewer*/ );
118 
119  //collection view
120  c_olView = new KNCollectionView( mSecondSplitter );
121 
122  connect( c_olView, SIGNAL(itemSelectionChanged()),
123  this, SLOT(slotCollectionSelected()) );
124  connect( c_olView, SIGNAL(contextMenu(QTreeWidgetItem*,QPoint)),
125  this, SLOT(slotCollectionRMB(QTreeWidgetItem*,QPoint)) );
126  connect( c_olView, SIGNAL(renamed(QTreeWidgetItem*)),
127  this, SLOT(slotCollectionRenamed(QTreeWidgetItem*)) );
128 
129  accel->connectItem( accel->insertItem(Qt::Key_Up), mArticleViewer, SLOT(scrollUp()) );
130  accel->connectItem( accel->insertItem(Qt::Key_Down), mArticleViewer, SLOT(scrollDown()) );
131  accel->connectItem( accel->insertItem(Qt::Key_PageUp), mArticleViewer, SLOT(scrollPrior()) );
132  accel->connectItem( accel->insertItem(Qt::Key_PageDown), mArticleViewer, SLOT(scrollNext()) );
133 
134  //header view
135  QWidget *dummy = new QWidget( mSecondSplitter );
136  QVBoxLayout *vlay = new QVBoxLayout(dummy);
137  vlay->setSpacing( 0 );
138  vlay->setMargin( 0 );
139  h_drView = new KNHeaderView( dummy );
140 
141  q_uicksearch = new KToolBar( dummy );
142  QLabel *lbl = new QLabel(i18n("&Search:"),dummy);
143  lbl->setObjectName("kde toolbar widget");
144  q_uicksearch->addWidget( lbl );
145  s_earchLineEdit = new K3ListViewSearchLine( q_uicksearch, h_drView );
146  q_uicksearch->addWidget( s_earchLineEdit );
147  lbl->setBuddy(s_earchLineEdit);
148 
149  vlay->addWidget(q_uicksearch);
150  vlay->addWidget(h_drView);
151 
152  connect(h_drView, SIGNAL(itemSelected(Q3ListViewItem*)),
153  SLOT(slotArticleSelected(Q3ListViewItem*)));
154  connect(h_drView, SIGNAL(selectionChanged()),
155  SLOT(slotArticleSelectionChanged()));
156  connect(h_drView, SIGNAL(contextMenu(K3ListView*,Q3ListViewItem*,QPoint)),
157  SLOT(slotArticleRMB(K3ListView*,Q3ListViewItem*,QPoint)));
158  connect(h_drView, SIGNAL(doubleClick(Q3ListViewItem*)),
159  SLOT(slotOpenArticle(Q3ListViewItem*)));
160  connect(h_drView, SIGNAL(sortingChanged(int)),
161  SLOT(slotHdrViewSortingChanged(int)));
162 
163  //actions
164  initActions();
165 
166  // splitter setup
167  mPrimarySplitter->addWidget( c_olView );
168  mPrimarySplitter->addWidget( mSecondSplitter );
169  mSecondSplitter->addWidget( dummy );
170  mSecondSplitter->addWidget( mArticleViewer );
171 
172  //-------------------------------- </GUI> ------------------------------------
173 
174  //-------------------------------- <CORE> ------------------------------------
175 
176  //Network
177  connect( knGlobals.scheduler(), SIGNAL(netActive(bool)), this, SLOT(slotNetworkActive(bool)) );
178 
179  //Filter Manager
180  f_ilManager = knGlobals.filterManager();
181  f_ilManager->setMenuAction(a_ctArtFilter, a_ctArtFilterKeyb);
182 
183  //Article Manager
184  a_rtManager = knGlobals.articleManager();
185  a_rtManager->setView(h_drView);
186 
187  //Group Manager
188  g_rpManager = knGlobals.groupManager();
189 
190  //Folder Manager
191  f_olManager = knGlobals.folderManager();
192 
193  //Account Manager
194  a_ccManager = knGlobals.accountManager();
195 
196  //Article Factory
197  a_rtFactory = KNGlobals::self()->articleFactory();
198 
199  // Score Manager
200  s_coreManager = knGlobals.scoringManager();
201  //connect(s_coreManager, SIGNAL(changedRules()), SLOT(slotReScore()));
202  connect(s_coreManager, SIGNAL(finishedEditing()), SLOT(slotReScore()));
203 
204  QDBusConnection::sessionBus().registerObject( "/", this, QDBusConnection::ExportScriptableSlots );
205  //-------------------------------- </CORE> -----------------------------------
206 
207  //apply saved options
208  readOptions();
209 
210  //apply configuration
211  configChanged();
212 
213  // set the keyboard focus indicator on the first item in the Collection View
214  if( c_olView->firstItem() ) {
215  QTreeWidgetItem *i = c_olView->firstItem();
216  bool open = i->isExpanded();
217  c_olView->setActive( i );
218  i->setExpanded( open );
219  }
220 
221  c_olView->setFocus();
222 
223  setStatusMsg();
224 
225  if( firstStart() ) { // open the config dialog on the first start
226  show(); // the settings dialog must appear in front of the main window!
227  slotSettings();
228  }
229 
230  actionCollection()->addAssociatedWidget( this );
231  foreach (QAction* action, actionCollection()->actions())
232  action->setShortcutContext(Qt::WidgetWithChildrenShortcut);
233 }
234 
235 KNMainWidget::~KNMainWidget()
236 {
237  // Avoid that removals of items from c_olView call this object back and lead to a crash.
238  disconnect( c_olView, SIGNAL(itemSelectionChanged()),
239  this, SLOT(slotCollectionSelected()) );
240 
241  knGlobals.reset(); // cleanup
242 
243  h_drView->clear(); //avoid some random crashes in KNHdrViewItem::~KNHdrViewItem()
244 }
245 
246 void KNMainWidget::initStatusBar()
247 {
248  //statusbar
249  KMainWindow *mainWin = dynamic_cast<KMainWindow*>(topLevelWidget());
250  KStatusBar *sb = mainWin ? mainWin->statusBar() : 0;
251  s_tatusFilter = new KSqueezedTextLabel( QString(), sb );
252  s_tatusFilter->setTextElideMode( Qt::ElideRight );
253  s_tatusFilter->setAlignment( Qt::AlignLeft | Qt::AlignVCenter );
254  s_tatusGroup = new KSqueezedTextLabel( QString(), sb );
255  s_tatusGroup->setTextElideMode( Qt::ElideRight );
256  s_tatusGroup->setAlignment( Qt::AlignLeft | Qt::AlignVCenter );
257 }
258 
259 //================================== GUI =================================
260 
261 void KNMainWidget::setStatusMsg(const QString& text, int id)
262 {
263  KMainWindow *mainWin = dynamic_cast<KMainWindow*>(topLevelWidget());
264  KStatusBar *bar = mainWin ? mainWin->statusBar() : 0;
265  if ( !bar )
266  return;
267  bar->clearMessage();
268  if (text.isEmpty() && (id==SB_MAIN)) {
269  BroadcastStatus::instance()->setStatusMsg(i18n(" Ready"));
270  } else {
271  switch(id) {
272  case SB_MAIN:
273  BroadcastStatus::instance()->setStatusMsg(text); break;
274  case SB_GROUP:
275  s_tatusGroup->setText(text); break;
276  case SB_FILTER:
277  s_tatusFilter->setText(text); break;
278  }
279  }
280 }
281 
282 
283 void KNMainWidget::setStatusHelpMsg(const QString& text)
284 {
285  KMainWindow *mainWin = dynamic_cast<KMainWindow*>(topLevelWidget());
286  KStatusBar *bar = mainWin ? mainWin->statusBar() : 0;
287  if ( bar )
288  bar->showMessage(text, 2000);
289 }
290 
291 
292 void KNMainWidget::updateCaption()
293 {
294  QString newCaption=i18n("KDE News Reader");
295  if (g_rpManager->currentGroup()) {
296  newCaption = g_rpManager->currentGroup()->name();
297  if (g_rpManager->currentGroup()->status()==KNGroup::moderated)
298  newCaption += i18n(" (moderated)");
299  } else if (a_ccManager->currentAccount()) {
300  newCaption = a_ccManager->currentAccount()->name();
301  } else if (f_olManager->currentFolder()) {
302  newCaption = f_olManager->currentFolder()->name();
303  }
304  emit signalCaptionChangeRequest(newCaption);
305 }
306 
307 void KNMainWidget::disableAccels(bool b)
308 {
309 #ifdef __GNUC__
310 #warning Port me!
311 #endif
312  /*a_ccel->setEnabled(!b);
313  KMainWindow *mainWin = dynamic_cast<KMainWindow*>(topLevelWidget());
314  KAccel *naccel = mainWin ? mainWin->accel() : 0;
315  if ( naccel )
316  naccel->setEnabled(!b);*/
317  if (b)
318  installEventFilter(this);
319  else
320  removeEventFilter(this);
321 }
322 
323 
324 // processEvents with some blocking
325 void KNMainWidget::secureProcessEvents()
326 {
327  b_lockui = true;
328  KMainWindow *mainWin = dynamic_cast<KMainWindow*>(topLevelWidget());
329  KMenuBar *mbar = mainWin ? mainWin->menuBar() : 0;
330  if ( mbar )
331  mbar->setEnabled(false);
332 #ifdef __GNUC__
333 #warning Port me!
334 #endif
335  /*a_ccel->setEnabled(false);
336  KAccel *naccel = mainWin ? mainWin->accel() : 0;
337  if ( naccel )
338  naccel->setEnabled(false);*/
339  installEventFilter(this);
340 
341  qApp->processEvents();
342 
343  b_lockui = false;
344  if ( mbar )
345  mbar->setEnabled(true);
346 #ifdef __GNUC__
347 #warning Port me!
348 #endif
349 // a_ccel->setEnabled(true);
350 // if ( naccel )
351 // naccel->setEnabled(true);
352  removeEventFilter(this);
353 }
354 
355 
356 QSize KNMainWidget::sizeHint() const
357 {
358  return QSize(759,478); // default optimized for 800x600
359 }
360 
361 
362 void KNMainWidget::openURL(const QString &url)
363 {
364  openURL(KUrl(url));
365 }
366 
367 void KNMainWidget::openURL(const KUrl &url)
368 {
369  kDebug(5003) << url;
370  QString host = url.host();
371  short int port = url.port();
372  KNNntpAccount::Ptr acc;
373 
374  if (url.url().left(7) == "news://") {
375 
376  // lets see if we already have an account for this host...
377  KNNntpAccount::List list = a_ccManager->accounts();
378  for ( KNNntpAccount::List::Iterator it = list.begin(); it != list.end(); ++it ) {
379  if ( (*it)->server().toLower() == host.toLower() && ( port==-1 || (*it)->port() == port ) ) {
380  acc = *it;
381  break;
382  }
383  }
384 
385  if(!acc) {
386  acc = KNNntpAccount::Ptr( new KNNntpAccount() );
387  acc->setName(host);
388  acc->setServer(host);
389 
390  if(port!=-1)
391  acc->setPort(port);
392 
393  if(url.hasUser() && url.hasPass()) {
394  acc->setNeedsLogon(true);
395  acc->setUser(url.user());
396  acc->setPass(url.pass());
397  }
398 
399  if(!a_ccManager->newAccount(acc))
400  return;
401  }
402  } else {
403  if (url.url().left(5) == "news:") {
404  // TODO: make the default server configurable
405  acc = a_ccManager->currentAccount();
406  if ( acc == 0 )
407  acc = a_ccManager->first();
408  } else {
409  kDebug(5003) <<"KNMainWidget::openURL() URL is not a valid news URL";
410  }
411  }
412 
413  if (acc) {
414  QString decodedUrl = KUrl::fromPercentEncoding( url.url().toLatin1() );
415  bool isMID=decodedUrl.contains('@' );
416 
417  if (!isMID) {
418  QString groupname=url.path( KUrl::RemoveTrailingSlash );
419  while(groupname.startsWith('/'))
420  groupname.remove(0,1);
421  QTreeWidgetItem *item=0;
422  if ( groupname.isEmpty() ) {
423  item=acc->listItem();
424  } else {
425  KNGroup::Ptr grp = g_rpManager->group( groupname, acc );
426 
427  if(!grp) {
428  KNGroupInfo inf(groupname, "");
429  g_rpManager->subscribeGroup(&inf, acc);
430  grp=g_rpManager->group(groupname, acc);
431  if(grp)
432  item=grp->listItem();
433  }
434  else
435  item=grp->listItem();
436  }
437 
438  if (item) {
439  c_olView->setActive( item );
440  }
441  } else {
442  QString groupname = decodedUrl.mid( url.protocol().length()+1 );
443  KNGroup::Ptr g = g_rpManager->currentGroup();
444  if (g == 0)
445  g = g_rpManager->firstGroupOfAccount(acc);
446 
447  if (g) {
448  if ( !ArticleWindow::raiseWindowForArticle( groupname.toLatin1() ) ) { //article not yet opened
449  KNRemoteArticle::Ptr a( new KNRemoteArticle(g) );
450  QString messageID = '<' + groupname + '>';
451  a->messageID()->from7BitString(messageID.toLatin1());
452  ArticleWindow *awin = new ArticleWindow( a );
453  awin->show();
454  }
455  } else {
456  // TODO: fetch without group
457  kDebug(5003) <<"KNMainWidget::openURL() account has no groups";
458  }
459  }
460  }
461 }
462 
463 
464 // update fonts and colors
465 void KNMainWidget::configChanged()
466 {
467  h_drView->readConfig();
468  c_olView->readConfig();
469  a_rtManager->updateListViewItems();
470 }
471 
472 
473 void KNMainWidget::initActions()
474 {
475  //a_ccel=new KAccel(this);
476 
477  //navigation
478  a_ctNavNextArt = actionCollection()->addAction("go_nextArticle" );
479  a_ctNavNextArt->setText(i18n("&Next Article"));
480  a_ctNavNextArt->setToolTip(i18n("Go to next article"));
481  a_ctNavNextArt->setShortcuts(KShortcut("N; Right"));
482  connect(a_ctNavNextArt, SIGNAL(triggered(bool)), h_drView, SLOT(nextArticle()));
483 
484  a_ctNavPrevArt = actionCollection()->addAction("go_prevArticle" );
485  a_ctNavPrevArt->setText(i18n("&Previous Article"));
486  a_ctNavPrevArt->setShortcuts(KShortcut("P; Left"));
487  a_ctNavPrevArt->setToolTip(i18n("Go to previous article"));
488  connect(a_ctNavPrevArt, SIGNAL(triggered(bool)), h_drView, SLOT(prevArticle()));
489 
490  a_ctNavNextUnreadArt = actionCollection()->addAction("go_nextUnreadArticle");
491  a_ctNavNextUnreadArt->setIcon(KIcon("go-next"));
492  a_ctNavNextUnreadArt->setText(i18n("Next Unread &Article"));
493  connect(a_ctNavNextUnreadArt, SIGNAL(triggered(bool)), SLOT(slotNavNextUnreadArt()));
494  a_ctNavNextUnreadArt->setShortcut(QKeySequence(Qt::ALT+Qt::SHIFT+Qt::Key_Space));
495 
496  a_ctNavNextUnreadThread = actionCollection()->addAction("go_nextUnreadThread");
497  a_ctNavNextUnreadThread->setIcon(KIcon("go-last"));
498  a_ctNavNextUnreadThread->setText(i18n("Next Unread &Thread"));
499  connect(a_ctNavNextUnreadThread, SIGNAL(triggered(bool)), SLOT(slotNavNextUnreadThread()));
500  a_ctNavNextUnreadThread->setShortcut(QKeySequence(Qt::SHIFT+Qt::Key_Space));
501 
502  a_ctNavNextGroup = actionCollection()->addAction("go_nextGroup");
503  a_ctNavNextGroup->setIcon(KIcon("go-down"));
504  a_ctNavNextGroup->setText(i18n("Ne&xt Group"));
505  connect(a_ctNavNextGroup, SIGNAL(triggered(bool)), c_olView, SLOT(nextGroup()));
506  a_ctNavNextGroup->setShortcut(QKeySequence(Qt::Key_Plus));
507 
508  a_ctNavPrevGroup = actionCollection()->addAction("go_prevGroup");
509  a_ctNavPrevGroup->setIcon(KIcon("go-up"));
510  a_ctNavPrevGroup->setText(i18n("Pre&vious Group"));
511  connect(a_ctNavPrevGroup, SIGNAL(triggered(bool)), c_olView, SLOT(prevGroup()));
512  a_ctNavPrevGroup->setShortcut(QKeySequence(Qt::Key_Minus));
513 
514  a_ctNavReadThrough = actionCollection()->addAction("go_readThrough");
515  a_ctNavReadThrough->setText(i18n("Read &Through Articles"));
516  connect(a_ctNavReadThrough, SIGNAL(triggered(bool)), SLOT(slotNavReadThrough()));
517  a_ctNavReadThrough->setShortcut(QKeySequence(Qt::Key_Space));
518 
519  KAction *action = actionCollection()->addAction("inc_current_folder");
520  action->setText(i18n("Focus on Next Folder"));
521  connect(action, SIGNAL(triggered(bool)), c_olView, SLOT(incCurrentFolder()));
522  action->setShortcut(QKeySequence(Qt::CTRL+Qt::Key_Right));
523 
524  action = actionCollection()->addAction("dec_current_folder");
525  action->setText(i18n("Focus on Previous Folder"));
526  connect(action, SIGNAL(triggered(bool)), c_olView, SLOT(decCurrentFolder()));
527  action->setShortcut(QKeySequence(Qt::CTRL+Qt::Key_Left));
528 
529  action = actionCollection()->addAction("select_current_folder");
530  action->setText(i18n("Select Folder with Focus"));
531  connect(action, SIGNAL(triggered(bool)), c_olView, SLOT(selectCurrentFolder()));
532  action->setShortcut(QKeySequence(Qt::CTRL+Qt::Key_Space));
533 
534  action = actionCollection()->addAction("inc_current_article");
535  action->setText(i18n("Focus on Next Article"));
536  connect(action, SIGNAL(triggered(bool)), h_drView, SLOT(incCurrentArticle()));
537  action->setShortcut(QKeySequence(Qt::ALT+Qt::Key_Right));
538 
539  action = actionCollection()->addAction("dec_current_article");
540  action->setText(i18n("Focus on Previous Article"));
541  connect(action, SIGNAL(triggered(bool)), h_drView, SLOT(decCurrentArticle()));
542  action->setShortcut(QKeySequence(Qt::ALT+Qt::Key_Left));
543 
544  action = actionCollection()->addAction("select_current_article");
545  action->setText(i18n("Select Article with Focus"));
546  connect(action, SIGNAL(triggered(bool)), h_drView, SLOT(selectCurrentArticle()));
547  action->setShortcut(QKeySequence(Qt::ALT+Qt::Key_Space));
548 
549  //collection-view - accounts
550  a_ctAccProperties = actionCollection()->addAction("account_properties");
551  a_ctAccProperties->setIcon(KIcon("document-properties"));
552  a_ctAccProperties->setText(i18n("Account &Properties"));
553  connect(a_ctAccProperties, SIGNAL(triggered(bool)), SLOT(slotAccProperties()));
554 
555  a_ctAccRename = actionCollection()->addAction("account_rename");
556  a_ctAccRename->setIcon(KIcon("edit-rename"));
557  a_ctAccRename->setText(i18n("&Rename Account"));
558  connect(a_ctAccRename, SIGNAL(triggered(bool)), SLOT(slotAccRename()));
559 
560  a_ctAccSubscribe = actionCollection()->addAction("account_subscribe");
561  a_ctAccSubscribe->setIcon(KIcon("news-subscribe"));
562  a_ctAccSubscribe->setText(i18n("&Subscribe to Newsgroups..."));
563  connect(a_ctAccSubscribe, SIGNAL(triggered(bool)), SLOT(slotAccSubscribe()));
564 
565  a_ctAccExpireAll = actionCollection()->addAction("account_expire_all");
566  a_ctAccExpireAll->setText(i18n("&Expire All Groups"));
567  connect(a_ctAccExpireAll, SIGNAL(triggered(bool)), SLOT(slotAccExpireAll()));
568 
569  a_ctAccGetNewHdrs = actionCollection()->addAction("account_dnlHeaders");
570  a_ctAccGetNewHdrs->setIcon(KIcon("mail-receive"));
571  a_ctAccGetNewHdrs->setText(i18n("&Get New Articles in All Groups"));
572  connect(a_ctAccGetNewHdrs, SIGNAL(triggered(bool)), SLOT(slotAccGetNewHdrs()));
573 
574  a_ctAccGetNewHdrsAll = actionCollection()->addAction("account_dnlAllHeaders");
575  a_ctAccGetNewHdrsAll->setIcon(KIcon("mail-receive-all"));
576  a_ctAccGetNewHdrsAll->setText(i18n("&Get New Articles in All Accounts"));
577  connect(a_ctAccGetNewHdrsAll, SIGNAL(triggered(bool)), SLOT(slotAccGetNewHdrsAll()));
578 
579  a_ctAccDelete = actionCollection()->addAction("account_delete");
580  a_ctAccDelete->setIcon(KIcon("edit-delete"));
581  a_ctAccDelete->setText(i18n("&Delete Account"));
582  connect(a_ctAccDelete, SIGNAL(triggered(bool)), SLOT(slotAccDelete()));
583 
584  a_ctAccPostNewArticle = actionCollection()->addAction("article_postNew");
585  a_ctAccPostNewArticle->setIcon(KIcon("mail-message-new"));
586  a_ctAccPostNewArticle->setText(i18n("&Post to Newsgroup..."));
587  connect(a_ctAccPostNewArticle, SIGNAL(triggered(bool)), SLOT(slotAccPostNewArticle()));
588  a_ctAccPostNewArticle->setShortcut(QKeySequence(Qt::CTRL+Qt::Key_N));
589 
590  //collection-view - groups
591  a_ctGrpProperties = actionCollection()->addAction("group_properties");
592  a_ctGrpProperties->setIcon(KIcon("document-properties"));
593  a_ctGrpProperties->setText(i18n("Group &Properties"));
594  connect(a_ctGrpProperties, SIGNAL(triggered(bool)), SLOT(slotGrpProperties()));
595 
596  a_ctGrpRename = actionCollection()->addAction("group_rename");
597  a_ctGrpRename->setIcon(KIcon("edit-rename"));
598  a_ctGrpRename->setText(i18n("Rename &Group"));
599  connect(a_ctGrpRename, SIGNAL(triggered(bool)), SLOT(slotGrpRename()));
600 
601  a_ctGrpGetNewHdrs = actionCollection()->addAction("group_dnlHeaders");
602  a_ctGrpGetNewHdrs->setIcon(KIcon("mail-receive"));
603  a_ctGrpGetNewHdrs->setText(i18n("&Get New Articles"));
604  connect(a_ctGrpGetNewHdrs, SIGNAL(triggered(bool)), SLOT(slotGrpGetNewHdrs()));
605 
606  a_ctGrpExpire = actionCollection()->addAction("group_expire");
607  a_ctGrpExpire->setText(i18n("E&xpire Group"));
608  connect(a_ctGrpExpire, SIGNAL(triggered(bool)), SLOT(slotGrpExpire()));
609 
610  a_ctGrpReorganize = actionCollection()->addAction("group_reorg");
611  a_ctGrpReorganize->setText(i18n("Re&organize Group"));
612  connect(a_ctGrpReorganize, SIGNAL(triggered(bool)), SLOT(slotGrpReorganize()));
613 
614  a_ctGrpUnsubscribe = actionCollection()->addAction("group_unsubscribe");
615  a_ctGrpUnsubscribe->setIcon(KIcon("news-unsubscribe"));
616  a_ctGrpUnsubscribe->setText(i18n("&Unsubscribe From Group"));
617  connect(a_ctGrpUnsubscribe, SIGNAL(triggered(bool)), SLOT(slotGrpUnsubscribe()));
618 
619  a_ctGrpSetAllRead = actionCollection()->addAction("group_allRead");
620  a_ctGrpSetAllRead->setIcon(KIcon("mail-mark-read"));
621  a_ctGrpSetAllRead->setText(i18n("Mark All as &Read"));
622  connect(a_ctGrpSetAllRead, SIGNAL(triggered(bool)), SLOT(slotGrpSetAllRead()));
623 
624  a_ctGrpSetAllUnread = actionCollection()->addAction("group_allUnread");
625  a_ctGrpSetAllUnread->setText(i18n("Mark All as U&nread"));
626  connect(a_ctGrpSetAllUnread, SIGNAL(triggered(bool)), SLOT(slotGrpSetAllUnread()));
627 
628  a_ctGrpSetUnread = actionCollection()->addAction("group_unread");
629  a_ctGrpSetUnread->setText(i18n("Mark Last as Unr&ead..."));
630  connect(a_ctGrpSetUnread, SIGNAL(triggered(bool)), SLOT(slotGrpSetUnread()));
631 
632  action = actionCollection()->addAction("knode_configure_knode");
633  action->setIcon(KIcon("configure"));
634  action->setText(i18n("&Configure KNode..."));
635  connect(action, SIGNAL(triggered(bool)), SLOT(slotSettings()));
636 
637  //collection-view - folder
638  a_ctFolNew = actionCollection()->addAction("folder_new");
639  a_ctFolNew->setIcon(KIcon("folder-new"));
640  a_ctFolNew->setText(i18n("&New Folder"));
641  connect(a_ctFolNew, SIGNAL(triggered(bool)), SLOT(slotFolNew()));
642 
643  a_ctFolNewChild = actionCollection()->addAction("folder_newChild");
644  a_ctFolNewChild->setIcon(KIcon("folder-new"));
645  a_ctFolNewChild->setText(i18n("New &Subfolder"));
646  connect(a_ctFolNewChild, SIGNAL(triggered(bool)), SLOT(slotFolNewChild()));
647 
648  a_ctFolDelete = actionCollection()->addAction("folder_delete");
649  a_ctFolDelete->setIcon(KIcon("edit-delete"));
650  a_ctFolDelete->setText(i18n("&Delete Folder"));
651  connect(a_ctFolDelete, SIGNAL(triggered(bool)), SLOT(slotFolDelete()));
652 
653  a_ctFolRename = actionCollection()->addAction("folder_rename");
654  a_ctFolRename->setIcon(KIcon("edit-rename"));
655  a_ctFolRename->setText(i18n("&Rename Folder"));
656  connect(a_ctFolRename, SIGNAL(triggered(bool)), SLOT(slotFolRename()));
657 
658  a_ctFolCompact = actionCollection()->addAction("folder_compact");
659  a_ctFolCompact->setText(i18n("C&ompact Folder"));
660  connect(a_ctFolCompact, SIGNAL(triggered(bool)), SLOT(slotFolCompact()));
661 
662  a_ctFolCompactAll = actionCollection()->addAction("folder_compact_all");
663  a_ctFolCompactAll->setText(i18n("Co&mpact All Folders"));
664  connect(a_ctFolCompactAll, SIGNAL(triggered(bool)), SLOT(slotFolCompactAll()));
665 
666  a_ctFolEmpty = actionCollection()->addAction("folder_empty");
667  a_ctFolEmpty->setText(i18n("&Empty Folder"));
668  connect(a_ctFolEmpty, SIGNAL(triggered(bool)), SLOT(slotFolEmpty()));
669 
670  a_ctFolMboxImport = actionCollection()->addAction("folder_MboxImport");
671  a_ctFolMboxImport->setText(i18n("&Import MBox Folder..."));
672  connect(a_ctFolMboxImport, SIGNAL(triggered(bool)), SLOT(slotFolMBoxImport()));
673 
674  a_ctFolMboxExport = actionCollection()->addAction("folder_MboxExport");
675  a_ctFolMboxExport->setText(i18n("E&xport as MBox Folder..."));
676  connect(a_ctFolMboxExport, SIGNAL(triggered(bool)), SLOT(slotFolMBoxExport()));
677 
678  //header-view - list-handling
679  a_ctArtSortHeaders = actionCollection()->add<KSelectAction>("view_Sort");
680  a_ctArtSortHeaders->setText(i18n("S&ort"));
681  QStringList items;
682  items += i18n("By &Subject");
683  items += i18n("By S&ender");
684  items += i18n("By S&core");
685  items += i18n("By &Lines");
686  items += i18n("By &Date");
687  a_ctArtSortHeaders->setItems(items);
688  a_ctArtSortHeaders->setShortcutConfigurable(false);
689  connect(a_ctArtSortHeaders, SIGNAL(activated(int)), this, SLOT(slotArtSortHeaders(int)));
690 
691  a_ctArtSortHeadersKeyb = actionCollection()->addAction("view_Sort_Keyb");
692  a_ctArtSortHeadersKeyb->setText(i18n("Sort"));
693  connect(a_ctArtSortHeadersKeyb, SIGNAL(triggered(bool)), SLOT(slotArtSortHeadersKeyb()));
694  a_ctArtSortHeadersKeyb->setShortcut(QKeySequence(Qt::Key_F7));
695 
696  a_ctArtFilter = new KNFilterSelectAction(i18n("&Filter"), "view-filter",
697  actionCollection(), "view_Filter");
698  a_ctArtFilter->setShortcutConfigurable(false);
699 
700  a_ctArtFilterKeyb = actionCollection()->addAction("view_Filter_Keyb");
701  a_ctArtFilterKeyb->setText(i18n("Filter"));
702  a_ctArtFilterKeyb->setShortcut(QKeySequence(Qt::Key_F6));
703 
704  a_ctArtSearch = actionCollection()->addAction("article_search");
705  a_ctArtSearch->setIcon(KIcon("edit-find-mail"));
706  a_ctArtSearch->setText(i18n("&Search Articles..."));
707  connect(a_ctArtSearch, SIGNAL(triggered(bool)), SLOT(slotArtSearch()));
708  a_ctArtSearch->setShortcut(QKeySequence(Qt::Key_F4));
709 
710  a_ctArtRefreshList = actionCollection()->addAction("view_Refresh");
711  a_ctArtRefreshList->setIcon(KIcon("view-refresh"));
712  a_ctArtRefreshList->setText(i18n("&Refresh List"));
713  connect(a_ctArtRefreshList, SIGNAL(triggered(bool)), SLOT(slotArtRefreshList()));
714  a_ctArtRefreshList->setShortcuts(KStandardShortcut::shortcut(KStandardShortcut::Reload));
715 
716  a_ctArtCollapseAll = actionCollection()->addAction("view_CollapseAll");
717  a_ctArtCollapseAll->setText(i18n("&Collapse All Threads"));
718  connect(a_ctArtCollapseAll, SIGNAL(triggered(bool)), SLOT(slotArtCollapseAll()));
719 
720  a_ctArtExpandAll = actionCollection()->addAction("view_ExpandAll");
721  a_ctArtExpandAll->setText(i18n("E&xpand All Threads"));
722  connect(a_ctArtExpandAll, SIGNAL(triggered(bool)), SLOT(slotArtExpandAll()));
723 
724  a_ctArtToggleThread = actionCollection()->addAction("thread_toggle");
725  a_ctArtToggleThread->setText(i18n("&Toggle Subthread"));
726  connect(a_ctArtToggleThread, SIGNAL(triggered(bool)), SLOT(slotArtToggleThread()));
727  a_ctArtToggleThread->setShortcut(QKeySequence(Qt::Key_T));
728 
729  a_ctArtToggleShowThreads = actionCollection()->add<KToggleAction>("view_showThreads");
730  a_ctArtToggleShowThreads->setText(i18n("Show T&hreads"));
731  connect(a_ctArtToggleShowThreads, SIGNAL(triggered(bool)), SLOT(slotArtToggleShowThreads()));
732 
733  a_ctArtToggleShowThreads->setChecked( knGlobals.settings()->showThreads() );
734 
735  //header-view - remote articles
736  a_ctArtSetArtRead = actionCollection()->addAction("article_read");
737  a_ctArtSetArtRead->setIcon(KIcon("mail-mark-read"));
738  a_ctArtSetArtRead->setText(i18n("Mark as &Read"));
739  connect(a_ctArtSetArtRead, SIGNAL(triggered(bool)), SLOT(slotArtSetArtRead()));
740  a_ctArtSetArtRead->setShortcut(QKeySequence(Qt::Key_D));
741 
742  a_ctArtSetArtUnread = actionCollection()->addAction("article_unread");
743  a_ctArtSetArtUnread->setIcon(KIcon("mail-mark-unread"));
744  a_ctArtSetArtUnread->setText(i18n("Mar&k as Unread"));
745  connect(a_ctArtSetArtUnread, SIGNAL(triggered(bool)), SLOT(slotArtSetArtUnread()));
746  a_ctArtSetArtUnread->setShortcut(QKeySequence(Qt::Key_U));
747 
748  a_ctArtSetThreadRead = actionCollection()->addAction("thread_read");
749  a_ctArtSetThreadRead->setText(i18n("Mark &Thread as Read"));
750  connect(a_ctArtSetThreadRead, SIGNAL(triggered(bool)), SLOT(slotArtSetThreadRead()));
751  a_ctArtSetThreadRead->setShortcut(QKeySequence(Qt::CTRL+Qt::Key_D));
752 
753  a_ctArtSetThreadUnread = actionCollection()->addAction("thread_unread");
754  a_ctArtSetThreadUnread->setText(i18n("Mark T&hread as Unread"));
755  connect(a_ctArtSetThreadUnread, SIGNAL(triggered(bool)), SLOT(slotArtSetThreadUnread()));
756  a_ctArtSetThreadUnread->setShortcut(QKeySequence(Qt::CTRL+Qt::Key_U));
757 
758  a_ctArtOpenNewWindow = actionCollection()->addAction("article_ownWindow");
759  a_ctArtOpenNewWindow->setIcon(KIcon("window-new"));
760  a_ctArtOpenNewWindow->setText(i18n("Open in Own &Window"));
761  connect(a_ctArtOpenNewWindow, SIGNAL(triggered(bool)), SLOT(slotArtOpenNewWindow()));
762  a_ctArtOpenNewWindow->setShortcut(QKeySequence(Qt::Key_O));
763 
764  // scoring
765  a_ctScoresEdit = actionCollection()->addAction("scoreedit");
766  a_ctScoresEdit->setIcon(KIcon("document-properties"));
767  a_ctScoresEdit->setText(i18n("&Edit Scoring Rules..."));
768  connect(a_ctScoresEdit, SIGNAL(triggered(bool)), SLOT(slotScoreEdit()));
769  a_ctScoresEdit->setShortcut(QKeySequence(Qt::CTRL+Qt::Key_E));
770 
771  a_ctReScore = actionCollection()->addAction("rescore");
772  a_ctReScore->setText(i18n("Recalculate &Scores"));
773  connect(a_ctReScore, SIGNAL(triggered(bool)), SLOT(slotReScore()));
774 
775  a_ctScoreLower = actionCollection()->addAction("scorelower");
776  a_ctScoreLower->setText(i18n("&Lower Score for Author..."));
777  connect(a_ctScoreLower, SIGNAL(triggered(bool)), SLOT(slotScoreLower()));
778  a_ctScoreLower->setShortcut(QKeySequence(Qt::CTRL+Qt::Key_L));
779 
780  a_ctScoreRaise = actionCollection()->addAction("scoreraise");
781  a_ctScoreRaise->setText(i18n("&Raise Score for Author..."));
782  connect(a_ctScoreRaise, SIGNAL(triggered(bool)), SLOT(slotScoreRaise()));
783  a_ctScoreRaise->setShortcut(QKeySequence(Qt::CTRL+Qt::Key_I));
784 
785  a_ctArtToggleIgnored = actionCollection()->addAction("thread_ignore");
786  a_ctArtToggleIgnored->setIcon(KIcon("go-bottom"));
787  a_ctArtToggleIgnored->setText(i18n("&Ignore Thread"));
788  connect(a_ctArtToggleIgnored, SIGNAL(triggered(bool)), SLOT(slotArtToggleIgnored()));
789  a_ctArtToggleIgnored->setShortcut(QKeySequence(Qt::Key_I));
790 
791  a_ctArtToggleWatched = actionCollection()->addAction("thread_watch");
792  a_ctArtToggleWatched->setIcon(KIcon("go-top"));
793  a_ctArtToggleWatched->setText(i18n("&Watch Thread"));
794  connect(a_ctArtToggleWatched, SIGNAL(triggered(bool)), SLOT(slotArtToggleWatched()));
795  a_ctArtToggleWatched->setShortcut(QKeySequence(Qt::Key_W));
796 
797  //header-view local articles
798  a_ctArtSendOutbox = actionCollection()->addAction("net_sendPending");
799  a_ctArtSendOutbox->setIcon(KIcon("mail-send"));
800  a_ctArtSendOutbox->setText(i18n("Sen&d Pending Messages"));
801  connect(a_ctArtSendOutbox, SIGNAL(triggered(bool)), SLOT(slotArtSendOutbox()));
802 
803  a_ctArtDelete = actionCollection()->addAction("article_delete");
804  a_ctArtDelete->setIcon(KIcon("edit-delete"));
805  a_ctArtDelete->setText(i18n("&Delete Article"));
806  connect(a_ctArtDelete, SIGNAL(triggered(bool)), SLOT(slotArtDelete()));
807  a_ctArtDelete->setShortcut(QKeySequence(Qt::Key_Delete));
808 
809  a_ctArtSendNow = actionCollection()->addAction("article_sendNow");
810  a_ctArtSendNow->setIcon(KIcon("mail-send"));
811  a_ctArtSendNow->setText(i18n("Send &Now"));
812  connect(a_ctArtSendNow, SIGNAL(triggered(bool)), SLOT(slotArtSendNow()));
813 
814  a_ctArtEdit = actionCollection()->addAction("article_edit");
815  a_ctArtEdit->setIcon(KIcon("document-properties"));
816  a_ctArtEdit->setText(i18nc("edit article","&Edit Article..."));
817  connect(a_ctArtEdit, SIGNAL(triggered(bool)), SLOT(slotArtEdit()));
818  a_ctArtEdit->setShortcut(QKeySequence(Qt::Key_E));
819 
820  //network
821  a_ctNetCancel = actionCollection()->addAction("net_stop");
822  a_ctNetCancel->setIcon(KIcon("process-stop"));
823  a_ctNetCancel->setText(i18n("Stop &Network"));
824  connect(a_ctNetCancel, SIGNAL(triggered(bool)), SLOT(slotNetCancel()));
825  a_ctNetCancel->setEnabled(false);
826 
827  a_ctFetchArticleWithID = actionCollection()->addAction("fetch_article_with_id");
828  a_ctFetchArticleWithID->setText(i18n("&Fetch Article with ID..."));
829  connect(a_ctFetchArticleWithID, SIGNAL(triggered(bool)), SLOT(slotFetchArticleWithID()));
830  a_ctFetchArticleWithID->setEnabled(false);
831 
832  a_ctToggleQuickSearch = actionCollection()->add<KToggleAction>("settings_show_quickSearch");
833  a_ctToggleQuickSearch->setText(i18n("Show Quick Search"));
834  connect(a_ctToggleQuickSearch, SIGNAL(triggered(bool)), SLOT(slotToggleQuickSearch()));
835 }
836 
837 bool KNMainWidget::firstStart()
838 {
839  KConfigGroup conf(knGlobals.config(), "GENERAL");
840  QString ver = conf.readEntry("Version");
841  if(!ver.isEmpty())
842  return false;
843 
844  if ( TransportManager::self()->isEmpty() )
845  TransportManager::self()->createDefaultTransport();
846 
847  conf.writeEntry("Version", KNODE_VERSION);
848 
849  return true;
850 }
851 
852 
853 void KNMainWidget::readOptions()
854 {
855  KConfigGroup conf(knGlobals.config(), "APPEARANCE");
856 
857  if (conf.readEntry("quicksearch", true))
858  a_ctToggleQuickSearch->setChecked(true);
859  else
860  q_uicksearch->hide();
861  c_olView->readConfig();
862  h_drView->readConfig();
863  a_ctArtSortHeaders->setCurrentItem( h_drView->sortColumn() );
864 
865  resize(787,478); // default optimized for 800x600
866  //applyMainWindowSettings(KGlobal::config(),"mainWindow_options");
867 
868  KPIM::UiStateSaver::restoreState( this, KConfigGroup( knGlobals.config(), "UI State" ) );
869 }
870 
871 
872 void KNMainWidget::saveOptions()
873 {
874  KConfigGroup conf(knGlobals.config(), "APPEARANCE");
875 
876  conf.writeEntry("quicksearch", !q_uicksearch->isHidden());
877  //saveMainWindowSettings(KGlobal::config(),"mainWindow_options");
878 
879  c_olView->writeConfig();
880  h_drView->writeConfig();
881  mArticleViewer->writeConfig();
882 
883  KConfigGroup cfg( knGlobals.config(), "UI State" );
884  KPIM::UiStateSaver::saveState( this, cfg );
885 }
886 
887 
888 bool KNMainWidget::requestShutdown()
889 {
890  kDebug(5003) <<"KNMainWidget::requestShutdown()";
891 
892  if( a_rtFactory->jobsPending() &&
893  KMessageBox::No==KMessageBox::warningYesNo(this, i18n(
894 "KNode is currently sending articles. If you quit now you might lose these \
895 articles.\nDo you want to quit anyway?"), QString(), KStandardGuiItem::quit(), KStandardGuiItem::cancel())
896  )
897  return false;
898 
899  if(!a_rtFactory->closeComposeWindows())
900  return false;
901 
902  return true;
903 }
904 
905 
906 void KNMainWidget::prepareShutdown()
907 {
908  kDebug(5003) <<"KNMainWidget::prepareShutdown()";
909 
910  //cleanup article-views
911  ArticleWidget::cleanup();
912 
913  // expire groups (if necessary)
914  KNCleanUp *cup = new KNCleanUp();
915  g_rpManager->expireAll(cup);
916  cup->start();
917 
918  // compact folders
919  KNode::Cleanup *conf=c_fgManager->cleanup();
920  if (conf->compactToday()) {
921  cup->reset();
922  f_olManager->compactAll(cup);
923  cup->start();
924  conf->setLastCompactDate();
925  }
926 
927  delete cup;
928 
929  saveOptions();
930  RecentAddresses::self(knGlobals.config())->save( knGlobals.config() );
931  c_fgManager->syncConfig();
932  a_rtManager->deleteTempFiles();
933  g_rpManager->syncGroups();
934  f_olManager->syncFolders();
935  f_ilManager->prepareShutdown();
936  a_ccManager->prepareShutdown();
937  s_coreManager->save();
938 }
939 
940 
941 bool KNMainWidget::queryClose()
942 {
943  if(b_lockui)
944  return false;
945 
946  if(!requestShutdown())
947  return false;
948 
949  prepareShutdown();
950 
951  return true;
952 }
953 
954 
955 void KNMainWidget::fontChange( const QFont & )
956 {
957  a_rtFactory->configChanged();
958  ArticleWidget::configChanged();
959  configChanged();
960 }
961 
962 
963 void KNMainWidget::paletteChange( const QPalette & )
964 {
965  ArticleWidget::configChanged();
966  configChanged();
967 }
968 
969 
970 bool KNMainWidget::eventFilter(QObject *o, QEvent *e)
971 {
972  if (((e->type() == QEvent::KeyPress) ||
973  (e->type() == QEvent::KeyRelease) ||
974  (e->type() == QEvent::Shortcut) ||
975  (e->type() == QEvent::ShortcutOverride)) &&
976  b_lockui)
977  return true;
978  return QWidget::eventFilter(o, e);
979 }
980 
981 
982 void KNMainWidget::getSelectedArticles(KNArticle::List &l)
983 {
984  if(!g_rpManager->currentGroup() && !f_olManager->currentFolder())
985  return;
986 
987  for(Q3ListViewItem *i=h_drView->firstChild(); i; i=i->itemBelow())
988  if(i->isSelected() || (static_cast<KNHdrViewItem*>(i)->isActive()))
989  l.append( boost::static_pointer_cast<KNArticle>( static_cast<KNHdrViewItem*>( i )->art ) );
990 }
991 
992 
993 void KNMainWidget::getSelectedArticles(KNRemoteArticle::List &l)
994 {
995  if(!g_rpManager->currentGroup()) return;
996 
997  for(Q3ListViewItem *i=h_drView->firstChild(); i; i=i->itemBelow())
998  if(i->isSelected() || (static_cast<KNHdrViewItem*>(i)->isActive()))
999  l.append( boost::static_pointer_cast<KNRemoteArticle>( static_cast<KNHdrViewItem*>(i)->art ) );
1000 }
1001 
1002 
1003 void KNMainWidget::getSelectedThreads(KNRemoteArticle::List &l)
1004 {
1005  KNRemoteArticle::Ptr art;
1006  for(Q3ListViewItem *i=h_drView->firstChild(); i; i=i->itemBelow())
1007  if(i->isSelected() || (static_cast<KNHdrViewItem*>(i)->isActive())) {
1008  art = boost::static_pointer_cast<KNRemoteArticle>( static_cast<KNHdrViewItem*>( i )->art );
1009  // ignore the article if it is already in the list
1010  // (multiple aritcles are selected in one thread)
1011  if ( !l.contains(art) )
1012  art->thread(l);
1013  }
1014 }
1015 
1016 
1017 void KNMainWidget::getSelectedArticles( KNLocalArticle::List &l )
1018 {
1019  if(!f_olManager->currentFolder()) return;
1020 
1021  for(Q3ListViewItem *i=h_drView->firstChild(); i; i=i->itemBelow())
1022  if(i->isSelected() || (static_cast<KNHdrViewItem*>(i)->isActive()))
1023  l.append( boost::static_pointer_cast<KNLocalArticle>( static_cast<KNHdrViewItem*>(i)->art ) );
1024 }
1025 
1026 
1027 void KNMainWidget::closeCurrentThread()
1028 {
1029  Q3ListViewItem *item = h_drView->currentItem();
1030  if (item) {
1031  while (item->parent())
1032  item = item->parent();
1033  h_drView->setCurrentItem(item);
1034  item->setOpen(false);
1035  h_drView->ensureItemVisible(item);
1036  }
1037 }
1038 
1039 void KNMainWidget::slotArticleSelected(Q3ListViewItem *i)
1040 {
1041  kDebug(5003) <<"KNMainWidget::slotArticleSelected(QListViewItem *i)";
1042  if(b_lockui)
1043  return;
1044  KNArticle::Ptr selectedArticle;
1045 
1046  if(i)
1047  selectedArticle=(static_cast<KNHdrViewItem*>(i))->art;
1048 
1049  mArticleViewer->setArticle( selectedArticle );
1050 
1051  //actions
1052  bool enabled;
1053 
1054  enabled=( selectedArticle && selectedArticle->type()==KNArticle::ATremote );
1055  if(a_ctArtSetArtRead->isEnabled() != enabled) {
1056  a_ctArtSetArtRead->setEnabled(enabled);
1057  a_ctArtSetArtUnread->setEnabled(enabled);
1058  a_ctArtSetThreadRead->setEnabled(enabled);
1059  a_ctArtSetThreadUnread->setEnabled(enabled);
1060  a_ctArtToggleIgnored->setEnabled(enabled);
1061  a_ctArtToggleWatched->setEnabled(enabled);
1062  a_ctScoreLower->setEnabled(enabled);
1063  a_ctScoreRaise->setEnabled(enabled);
1064  }
1065 
1066  a_ctArtOpenNewWindow->setEnabled( selectedArticle && (f_olManager->currentFolder()!=f_olManager->outbox())
1067  && (f_olManager->currentFolder()!=f_olManager->drafts()));
1068 
1069  enabled=( selectedArticle && selectedArticle->type()==KNArticle::ATlocal );
1070  a_ctArtDelete->setEnabled(enabled);
1071  a_ctArtSendNow->setEnabled(enabled && (f_olManager->currentFolder()==f_olManager->outbox()));
1072  a_ctArtEdit->setEnabled(enabled && ((f_olManager->currentFolder()==f_olManager->outbox())||
1073  (f_olManager->currentFolder()==f_olManager->drafts())));
1074 }
1075 
1076 
1077 void KNMainWidget::slotArticleSelectionChanged()
1078 {
1079  // enable all actions that work with multiple selection
1080 
1081  //actions
1082  bool enabled = (g_rpManager->currentGroup()!=0);
1083 
1084  if(a_ctArtSetArtRead->isEnabled() != enabled) {
1085  a_ctArtSetArtRead->setEnabled(enabled);
1086  a_ctArtSetArtUnread->setEnabled(enabled);
1087  a_ctArtSetThreadRead->setEnabled(enabled);
1088  a_ctArtSetThreadUnread->setEnabled(enabled);
1089  a_ctArtToggleIgnored->setEnabled(enabled);
1090  a_ctArtToggleWatched->setEnabled(enabled);
1091  a_ctScoreLower->setEnabled(enabled);
1092  a_ctScoreRaise->setEnabled(enabled);
1093  }
1094 
1095  enabled = (f_olManager->currentFolder()!=0);
1096  a_ctArtDelete->setEnabled(enabled);
1097  a_ctArtSendNow->setEnabled(enabled && (f_olManager->currentFolder()==f_olManager->outbox()));
1098 }
1099 
1100 
1101 void KNMainWidget::slotCollectionSelected()
1102 {
1103  kDebug(5003) <<"KNMainWidget::slotCollectionSelected(QListViewItem *i)";
1104  if(b_lockui)
1105  return;
1106  KNCollection::Ptr c;
1107  KNNntpAccount::Ptr selectedAccount;
1108  KNGroup::Ptr selectedGroup;
1109  KNFolder::Ptr selectedFolder;
1110 
1111  s_earchLineEdit->clear();
1112  h_drView->clear();
1113  slotArticleSelected(0);
1114 
1115  // mark all articles in current group as not new/read
1116  if ( knGlobals.settings()->leaveGroupMarkAsRead() )
1117  a_rtManager->setAllRead( true );
1118  a_rtManager->setAllNotNew();
1119 
1120  QTreeWidgetItem *i = c_olView->selectedItems().value( 0 ); // Single item selection
1121  if(i) {
1122  c = static_cast<KNCollectionViewItem*>( i )->collection();
1123  switch(c->type()) {
1124  case KNCollection::CTnntpAccount :
1125  selectedAccount = boost::static_pointer_cast<KNNntpAccount>( c );
1126  if( !i->isExpanded() ) {
1127  i->setExpanded( true );
1128  }
1129  break;
1130  case KNCollection::CTgroup :
1131  if ( !h_drView->hasFocus() && !mArticleViewer->hasFocus() )
1132  h_drView->setFocus();
1133  selectedGroup = boost::static_pointer_cast<KNGroup>( c );
1134  selectedAccount=selectedGroup->account();
1135  break;
1136 
1137  case KNCollection::CTfolder :
1138  if ( !h_drView->hasFocus() && !mArticleViewer->hasFocus() )
1139  h_drView->setFocus();
1140  selectedFolder = boost::static_pointer_cast<KNFolder>( c );
1141  break;
1142 
1143  default: break;
1144  }
1145  }
1146 
1147  a_ccManager->setCurrentAccount(selectedAccount);
1148  g_rpManager->setCurrentGroup(selectedGroup);
1149  f_olManager->setCurrentFolder(selectedFolder);
1150  if (!selectedGroup && !selectedFolder) // called from showHeaders() otherwise
1151  a_rtManager->updateStatusString();
1152 
1153  updateCaption();
1154 
1155  //actions
1156  bool enabled;
1157 
1158  enabled=(selectedGroup) || (selectedFolder && !selectedFolder->isRootFolder());
1159  if(a_ctNavNextArt->isEnabled() != enabled) {
1160  a_ctNavNextArt->setEnabled(enabled);
1161  a_ctNavPrevArt->setEnabled(enabled);
1162  }
1163 
1164  enabled=( selectedGroup!=0 );
1165  if(a_ctNavNextUnreadArt->isEnabled() != enabled) {
1166  a_ctNavNextUnreadArt->setEnabled(enabled);
1167  a_ctNavNextUnreadThread->setEnabled(enabled);
1168  a_ctNavReadThrough->setEnabled(enabled);
1169  a_ctFetchArticleWithID->setEnabled(enabled);
1170  }
1171 
1172  enabled=( selectedAccount!=0 );
1173  if(a_ctAccProperties->isEnabled() != enabled) {
1174  a_ctAccProperties->setEnabled(enabled);
1175  a_ctAccRename->setEnabled(enabled);
1176  a_ctAccSubscribe->setEnabled(enabled);
1177  a_ctAccExpireAll->setEnabled(enabled);
1178  a_ctAccGetNewHdrs->setEnabled(enabled);
1179  a_ctAccGetNewHdrsAll->setEnabled(enabled);
1180  a_ctAccDelete->setEnabled(enabled);
1181  //Laurent fix me
1182  //a_ctAccPostNewArticle->setEnabled(enabled);
1183  }
1184 
1185  enabled=( selectedGroup!=0 );
1186  if(a_ctGrpProperties->isEnabled() != enabled) {
1187  a_ctGrpProperties->setEnabled(enabled);
1188  a_ctGrpRename->setEnabled(enabled);
1189  a_ctGrpGetNewHdrs->setEnabled(enabled);
1190  a_ctGrpExpire->setEnabled(enabled);
1191  a_ctGrpReorganize->setEnabled(enabled);
1192  a_ctGrpUnsubscribe->setEnabled(enabled);
1193  a_ctGrpSetAllRead->setEnabled(enabled);
1194  a_ctGrpSetAllUnread->setEnabled(enabled);
1195  a_ctGrpSetUnread->setEnabled(enabled);
1196  a_ctArtFilter->setEnabled(enabled);
1197  a_ctArtFilterKeyb->setEnabled(enabled);
1198  a_ctArtRefreshList->setEnabled(enabled);
1199  a_ctArtCollapseAll->setEnabled(enabled);
1200  a_ctArtExpandAll->setEnabled(enabled);
1201  a_ctArtToggleShowThreads->setEnabled(enabled);
1202  a_ctReScore->setEnabled(enabled);
1203  }
1204 
1205  a_ctFolNewChild->setEnabled(selectedFolder!=0);
1206 
1207  enabled=( selectedFolder!=0 && !selectedFolder->isRootFolder() && !selectedFolder->isStandardFolder() );
1208  if(a_ctFolDelete->isEnabled() != enabled) {
1209  a_ctFolDelete->setEnabled(enabled);
1210  a_ctFolRename->setEnabled(enabled);
1211  }
1212 
1213  enabled=( selectedFolder!=0 && !selectedFolder->isRootFolder() );
1214  if(a_ctFolCompact->isEnabled() != enabled) {
1215  a_ctFolCompact->setEnabled(enabled);
1216  a_ctFolEmpty->setEnabled(enabled);
1217  a_ctFolMboxImport->setEnabled(enabled);
1218  a_ctFolMboxExport->setEnabled(enabled);
1219  }
1220 }
1221 
1222 
1223 void KNMainWidget::slotCollectionRenamed(QTreeWidgetItem *i)
1224 {
1225  kDebug(5003) <<"KNMainWidget::slotCollectionRenamed(QListViewItem *i)";
1226 
1227  if (i) {
1228  static_cast<KNCollectionViewItem*>( i )->collection()->setName( i->text( 0 ) );
1229  updateCaption();
1230  a_rtManager->updateStatusString();
1231  if ( static_cast<KNCollectionViewItem*>( i )->collection()->type() == KNCollection::CTnntpAccount ) {
1232  a_ccManager->accountRenamed( boost::static_pointer_cast<KNNntpAccount>( static_cast<KNCollectionViewItem*>( i )->collection() ) );
1233  }
1234  disableAccels(false);
1235  }
1236 }
1237 
1238 
1239 void KNMainWidget::slotArticleRMB(K3ListView*, Q3ListViewItem *i, const QPoint &p)
1240 {
1241  if(b_lockui)
1242  return;
1243 
1244  if(i) {
1245  QMenu *popup;
1246  if( (static_cast<KNHdrViewItem*>(i))->art->type()==KNArticle::ATremote) {
1247  popup = popupMenu( "remote_popup" );
1248  } else {
1249  popup = popupMenu( "local_popup" );
1250  }
1251 
1252  if ( popup )
1253  popup->popup(p);
1254  }
1255 }
1256 
1257 
1258 void KNMainWidget::slotCollectionRMB( QTreeWidgetItem *i, const QPoint &pos )
1259 {
1260  if(b_lockui)
1261  return;
1262 
1263  if(i) {
1264  QMenu *popup = 0;
1265  if( static_cast<KNCollectionViewItem*>( i )->collection()->type() == KNCollection::CTgroup ) {
1266  popup = popupMenu( "group_popup" );
1267  } else if ( static_cast<KNCollectionViewItem*>( i )->collection()->type() == KNCollection::CTfolder ) {
1268  if ( boost::static_pointer_cast<KNFolder>( static_cast<KNCollectionViewItem*>( i )->collection() )->isRootFolder() ) {
1269  popup = popupMenu( "root_folder_popup" );
1270  } else {
1271  popup = popupMenu( "folder_popup" );
1272  }
1273  } else {
1274  popup = popupMenu( "account_popup" );
1275  }
1276  if ( popup ) {
1277  popup->popup( pos );
1278  }
1279  }
1280 }
1281 
1282 
1283 void KNMainWidget::slotOpenArticle(Q3ListViewItem *item)
1284 {
1285  if(b_lockui)
1286  return;
1287 
1288  if (item) {
1289  KNArticle::Ptr art = (static_cast<KNHdrViewItem*>(item))->art;
1290 
1291  if ((art->type()==KNArticle::ATlocal) && ((f_olManager->currentFolder()==f_olManager->outbox())||
1292  (f_olManager->currentFolder()==f_olManager->drafts()))) {
1293  a_rtFactory->edit( boost::static_pointer_cast<KNLocalArticle>( art ) );
1294  } else {
1295  if ( !ArticleWindow::raiseWindowForArticle( art ) ) {
1296  ArticleWindow *w = new ArticleWindow( art );
1297  w->show();
1298  }
1299  }
1300  }
1301 }
1302 
1303 
1304 void KNMainWidget::slotHdrViewSortingChanged(int i)
1305 {
1306  a_ctArtSortHeaders->setCurrentItem(i);
1307 }
1308 
1309 
1310 void KNMainWidget::slotNetworkActive(bool b)
1311 {
1312  a_ctNetCancel->setEnabled(b);
1313 }
1314 
1315 
1316 //------------------------------ <Actions> --------------------------------
1317 
1318 
1319 void KNMainWidget::slotNavNextUnreadArt()
1320 {
1321  if ( !h_drView->nextUnreadArticle() )
1322  c_olView->nextGroup();
1323 }
1324 
1325 
1326 void KNMainWidget::slotNavNextUnreadThread()
1327 {
1328  if ( !h_drView->nextUnreadThread() )
1329  c_olView->nextGroup();
1330 }
1331 
1332 
1333 void KNMainWidget::slotNavReadThrough()
1334 {
1335  kDebug(5003) <<"KNMainWidget::slotNavReadThrough()";
1336  if ( !mArticleViewer->atBottom() )
1337  mArticleViewer->scrollNext();
1338  else if(g_rpManager->currentGroup() != 0)
1339  slotNavNextUnreadArt();
1340 }
1341 
1342 
1343 void KNMainWidget::slotAccProperties()
1344 {
1345  kDebug(5003) <<"KNMainWidget::slotAccProperties()";
1346  if(a_ccManager->currentAccount())
1347  a_ccManager->editProperties(a_ccManager->currentAccount());
1348  updateCaption();
1349  a_rtManager->updateStatusString();
1350 }
1351 
1352 
1353 void KNMainWidget::slotAccRename()
1354 {
1355  kDebug(5003) <<"KNMainWidget::slotAccRename()";
1356  if(a_ccManager->currentAccount()) {
1357 // disableAccels(true); // hack: global accels break the inplace renaming
1358  c_olView->editItem( a_ccManager->currentAccount()->listItem(), c_olView->labelColumnIndex() );
1359  }
1360 }
1361 
1362 
1363 void KNMainWidget::slotAccSubscribe()
1364 {
1365  kDebug(5003) <<"KNMainWidget::slotAccSubscribe()";
1366  if(a_ccManager->currentAccount())
1367  g_rpManager->showGroupDialog(a_ccManager->currentAccount());
1368 }
1369 
1370 
1371 void KNMainWidget::slotAccExpireAll()
1372 {
1373  kDebug(5003) <<"KNMainWidget::slotAccExpireAll()";
1374  if(a_ccManager->currentAccount())
1375  g_rpManager->expireAll(a_ccManager->currentAccount());
1376 }
1377 
1378 
1379 void KNMainWidget::slotAccGetNewHdrs()
1380 {
1381  kDebug(5003) <<"KNMainWidget::slotAccGetNewHdrs()";
1382  if(a_ccManager->currentAccount())
1383  g_rpManager->checkAll(a_ccManager->currentAccount());
1384 }
1385 
1386 
1387 
1388 void KNMainWidget::slotAccDelete()
1389 {
1390  kDebug(5003) <<"KNMainWidget::slotAccDelete()";
1391  if(a_ccManager->currentAccount()) {
1392  if (a_ccManager->removeAccount(a_ccManager->currentAccount()))
1393  slotCollectionSelected();
1394  }
1395 }
1396 
1397 void KNMainWidget::slotAccGetNewHdrsAll()
1398 {
1399  KNNntpAccount::List list = a_ccManager->accounts();
1400  for ( KNNntpAccount::List::Iterator it = list.begin(); it != list.end(); ++it )
1401  g_rpManager->checkAll( *it );
1402 }
1403 
1404 void KNMainWidget::slotAccPostNewArticle()
1405 {
1406  kDebug(5003) <<"KNMainWidget::slotAccPostNewArticle()";
1407  if(g_rpManager->currentGroup())
1408  a_rtFactory->createPosting(g_rpManager->currentGroup());
1409  else if(a_ccManager->currentAccount())
1410  a_rtFactory->createPosting(a_ccManager->currentAccount());
1411 }
1412 
1413 
1414 void KNMainWidget::slotGrpProperties()
1415 {
1416  kDebug(5003) <<"slotGrpProperties()";
1417  if(g_rpManager->currentGroup())
1418  g_rpManager->showGroupProperties(g_rpManager->currentGroup());
1419  updateCaption();
1420  a_rtManager->updateStatusString();
1421 }
1422 
1423 
1424 void KNMainWidget::slotGrpRename()
1425 {
1426  kDebug(5003) <<"slotGrpRename()";
1427  if(g_rpManager->currentGroup()) {
1428 // disableAccels(true); // hack: global accels break the inplace renaming
1429  c_olView->editItem( g_rpManager->currentGroup()->listItem(), c_olView->labelColumnIndex() );
1430  }
1431 }
1432 
1433 
1434 void KNMainWidget::slotGrpGetNewHdrs()
1435 {
1436  kDebug(5003) <<"KNMainWidget::slotGrpGetNewHdrs()";
1437  if(g_rpManager->currentGroup())
1438  g_rpManager->checkGroupForNewHeaders(g_rpManager->currentGroup());
1439 }
1440 
1441 
1442 void KNMainWidget::slotGrpExpire()
1443 {
1444  kDebug(5003) <<"KNMainWidget::slotGrpExpire()";
1445  if(g_rpManager->currentGroup())
1446  g_rpManager->expireGroupNow(g_rpManager->currentGroup());
1447 }
1448 
1449 
1450 void KNMainWidget::slotGrpReorganize()
1451 {
1452  kDebug(5003) <<"KNMainWidget::slotGrpReorganize()";
1453  g_rpManager->reorganizeGroup(g_rpManager->currentGroup());
1454 }
1455 
1456 
1457 void KNMainWidget::slotGrpUnsubscribe()
1458 {
1459  kDebug(5003) <<"KNMainWidget::slotGrpUnsubscribe()";
1460  if(g_rpManager->currentGroup()) {
1461  if(KMessageBox::Yes==KMessageBox::questionYesNo(knGlobals.topWidget,
1462  i18n("Do you really want to unsubscribe from %1?", g_rpManager->currentGroup()->groupname()), QString(), KGuiItem(i18n("Unsubscribe")), KStandardGuiItem::cancel()))
1463  if (g_rpManager->unsubscribeGroup(g_rpManager->currentGroup()))
1464  slotCollectionSelected();
1465  }
1466 }
1467 
1468 
1469 void KNMainWidget::slotGrpSetAllRead()
1470 {
1471  kDebug(5003) <<"KNMainWidget::slotGrpSetAllRead()";
1472 
1473  a_rtManager->setAllRead(true);
1474  if ( knGlobals.settings()->markAllReadGoNext() )
1475  c_olView->nextGroup();
1476 }
1477 
1478 
1479 void KNMainWidget::slotGrpSetAllUnread()
1480 {
1481  kDebug(5003) <<"KNMainWidget::slotGrpSetAllUnread()";
1482  a_rtManager->setAllRead(false);
1483 }
1484 
1485 void KNMainWidget::slotGrpSetUnread()
1486 {
1487  kDebug(5003) <<"KNMainWidget::slotGrpSetUnread()";
1488  int groupLength = g_rpManager->currentGroup()->length();
1489 
1490  bool ok = false;
1491  int res = KInputDialog::getInteger(
1492  i18n( "Mark Last as Unread" ),
1493  i18n( "Enter how many articles should be marked unread:" ), groupLength, 1, groupLength, 1, &ok, this );
1494  if ( ok )
1495  a_rtManager->setAllRead( false, res );
1496 }
1497 
1498 void KNMainWidget::slotFolNew()
1499 {
1500  kDebug(5003) <<"KNMainWidget::slotFolNew()";
1501  KNFolder::Ptr f = f_olManager->newFolder( KNFolder::Ptr() );
1502 
1503  if (f) {
1504  f_olManager->setCurrentFolder(f);
1505  c_olView->setActive( f->listItem() );
1506  slotFolRename();
1507  }
1508 }
1509 
1510 
1511 void KNMainWidget::slotFolNewChild()
1512 {
1513  kDebug(5003) <<"KNMainWidget::slotFolNew()";
1514  if(f_olManager->currentFolder()) {
1515  KNFolder::Ptr f = f_olManager->newFolder( f_olManager->currentFolder() );
1516 
1517  if (f) {
1518  f_olManager->setCurrentFolder(f);
1519  c_olView->setActive( f->listItem() );
1520  slotFolRename();
1521  }
1522  }
1523 }
1524 
1525 
1526 void KNMainWidget::slotFolDelete()
1527 {
1528  kDebug(5003) <<"KNMainWidget::slotFolDelete()";
1529 
1530  if(!f_olManager->currentFolder() || f_olManager->currentFolder()->isRootFolder())
1531  return;
1532 
1533  if(f_olManager->currentFolder()->isStandardFolder())
1534  KMessageBox::sorry(knGlobals.topWidget, i18n("You cannot delete a standard folder."));
1535 
1536  else if( KMessageBox::Continue==KMessageBox::warningContinueCancel(knGlobals.topWidget,
1537  i18n("Do you really want to delete this folder and all its children?"),"",KGuiItem(i18n("&Delete"),"edit-delete")) ) {
1538 
1539  if(!f_olManager->deleteFolder(f_olManager->currentFolder()))
1540  KMessageBox::sorry(knGlobals.topWidget,
1541  i18n("This folder cannot be deleted because some of\n its articles are currently in use.") );
1542  else
1543  slotCollectionSelected();
1544  }
1545 }
1546 
1547 
1548 void KNMainWidget::slotFolRename()
1549 {
1550  kDebug(5003) <<"KNMainWidget::slotFolRename()";
1551 
1552  if(f_olManager->currentFolder() && !f_olManager->currentFolder()->isRootFolder()) {
1553  if(f_olManager->currentFolder()->isStandardFolder())
1554  KMessageBox::sorry(knGlobals.topWidget, i18n("You cannot rename a standard folder."));
1555  else {
1556 // disableAccels(true); // hack: global accels break the inplace renaming
1557  c_olView->editItem( f_olManager->currentFolder()->listItem(), c_olView->labelColumnIndex() );
1558  }
1559  }
1560 }
1561 
1562 
1563 void KNMainWidget::slotFolCompact()
1564 {
1565  kDebug(5003) <<"KNMainWidget::slotFolCompact()";
1566  if(f_olManager->currentFolder() && !f_olManager->currentFolder()->isRootFolder())
1567  f_olManager->compactFolder(f_olManager->currentFolder());
1568 }
1569 
1570 
1571 void KNMainWidget::slotFolCompactAll()
1572 {
1573  kDebug(5003) <<"KNMainWidget::slotFolCompactAll()";
1574  f_olManager->compactAll();
1575 }
1576 
1577 
1578 void KNMainWidget::slotFolEmpty()
1579 {
1580  kDebug(5003) <<"KNMainWidget::slotFolEmpty()";
1581  if(f_olManager->currentFolder() && !f_olManager->currentFolder()->isRootFolder()) {
1582  if(f_olManager->currentFolder()->lockedArticles()>0) {
1583  KMessageBox::sorry(this,
1584  i18n("This folder cannot be emptied at the moment\nbecause some of its articles are currently in use.") );
1585  return;
1586  }
1587  if( KMessageBox::Continue == KMessageBox::warningContinueCancel(
1588  this, i18n("Do you really want to delete all articles in %1?", f_olManager->currentFolder()->name()),"",KGuiItem(i18n("&Delete"),"edit-delete")) )
1589  f_olManager->emptyFolder(f_olManager->currentFolder());
1590  }
1591 }
1592 
1593 
1594 void KNMainWidget::slotFolMBoxImport()
1595 {
1596  kDebug(5003) <<"KNMainWidget::slotFolMBoxImport()";
1597  if(f_olManager->currentFolder() && !f_olManager->currentFolder()->isRootFolder()) {
1598  f_olManager->importFromMBox(f_olManager->currentFolder());
1599  }
1600 }
1601 
1602 
1603 void KNMainWidget::slotFolMBoxExport()
1604 {
1605  kDebug(5003) <<"KNMainWidget::slotFolMBoxExport()";
1606  if(f_olManager->currentFolder() && !f_olManager->currentFolder()->isRootFolder()) {
1607  f_olManager->exportToMBox(f_olManager->currentFolder());
1608  }
1609 }
1610 
1611 
1612 void KNMainWidget::slotArtSortHeaders(int i)
1613 {
1614  kDebug(5003) <<"KNMainWidget::slotArtSortHeaders(int i)";
1615  h_drView->setSorting( i );
1616 }
1617 
1618 
1619 void KNMainWidget::slotArtSortHeadersKeyb()
1620 {
1621  kDebug(5003) <<"KNMainWidget::slotArtSortHeadersKeyb()";
1622 
1623  int newCol = KNHelper::selectDialog(this, i18n("Select Sort Column"), a_ctArtSortHeaders->items(), a_ctArtSortHeaders->currentItem());
1624  if (newCol != -1)
1625  h_drView->setSorting( newCol );
1626 }
1627 
1628 
1629 void KNMainWidget::slotArtSearch()
1630 {
1631  kDebug(5003) <<"KNMainWidget::slotArtSearch()";
1632  a_rtManager->search();
1633 }
1634 
1635 
1636 void KNMainWidget::slotArtRefreshList()
1637 {
1638  kDebug(5003) <<"KNMainWidget::slotArtRefreshList()";
1639  a_rtManager->showHdrs(true);
1640 }
1641 
1642 
1643 void KNMainWidget::slotArtCollapseAll()
1644 {
1645  kDebug(5003) <<"KNMainWidget::slotArtCollapseAll()";
1646 
1647  closeCurrentThread();
1648  a_rtManager->setAllThreadsOpen(false);
1649  if (h_drView->currentItem())
1650  h_drView->ensureItemVisible(h_drView->currentItem());
1651 }
1652 
1653 
1654 void KNMainWidget::slotArtExpandAll()
1655 {
1656  kDebug(5003) <<"KNMainWidget::slotArtExpandAll()";
1657 
1658  a_rtManager->setAllThreadsOpen(true);
1659  if (h_drView->currentItem())
1660  h_drView->ensureItemVisible(h_drView->currentItem());
1661 }
1662 
1663 
1664 void KNMainWidget::slotArtToggleThread()
1665 {
1666  kDebug(5003) <<"KNMainWidget::slotArtToggleThread()";
1667  if( mArticleViewer->article() && mArticleViewer->article()->listItem()->isExpandable() ) {
1668  bool o = !(mArticleViewer->article()->listItem()->isOpen());
1669  mArticleViewer->article()->listItem()->setOpen( o );
1670  }
1671 }
1672 
1673 
1674 void KNMainWidget::slotArtToggleShowThreads()
1675 {
1676  kDebug(5003) <<"KNMainWidget::slotArtToggleShowThreads()";
1677  if(g_rpManager->currentGroup()) {
1678  knGlobals.settings()->setShowThreads( !knGlobals.settings()->showThreads() );
1679  a_rtManager->showHdrs(true);
1680  }
1681 }
1682 
1683 
1684 void KNMainWidget::slotArtSetArtRead()
1685 {
1686  kDebug(5003) <<"KNMainWidget::slotArtSetArtRead()";
1687  if(!g_rpManager->currentGroup())
1688  return;
1689 
1690  KNRemoteArticle::List l;
1691  getSelectedArticles(l);
1692  a_rtManager->setRead(l, true);
1693 }
1694 
1695 
1696 void KNMainWidget::slotArtSetArtUnread()
1697 {
1698  kDebug(5003) <<"KNMainWidget::slotArtSetArtUnread()";
1699  if(!g_rpManager->currentGroup())
1700  return;
1701 
1702  KNRemoteArticle::List l;
1703  getSelectedArticles(l);
1704  a_rtManager->setRead(l, false);
1705 }
1706 
1707 
1708 void KNMainWidget::slotArtSetThreadRead()
1709 {
1710  kDebug(5003) <<"slotArtSetThreadRead()";
1711  if( !g_rpManager->currentGroup() )
1712  return;
1713 
1714  KNRemoteArticle::List l;
1715  getSelectedThreads(l);
1716  a_rtManager->setRead(l, true);
1717 
1718  if (h_drView->currentItem()) {
1719  if ( knGlobals.settings()->markThreadReadCloseThread() )
1720  closeCurrentThread();
1721  if ( knGlobals.settings()->markThreadReadGoNext() )
1722  slotNavNextUnreadThread();
1723  }
1724 }
1725 
1726 
1727 void KNMainWidget::slotArtSetThreadUnread()
1728 {
1729  kDebug(5003) <<"KNMainWidget::slotArtSetThreadUnread()";
1730  if( !g_rpManager->currentGroup() )
1731  return;
1732 
1733  KNRemoteArticle::List l;
1734  getSelectedThreads(l);
1735  a_rtManager->setRead(l, false);
1736 }
1737 
1738 
1739 void KNMainWidget::slotScoreEdit()
1740 {
1741  kDebug(5003) <<"KNMainWidget::slotScoreEdit()";
1742  s_coreManager->configure();
1743 }
1744 
1745 
1746 void KNMainWidget::slotReScore()
1747 {
1748  kDebug(5003) <<"KNMainWidget::slotReScore()";
1749  if( !g_rpManager->currentGroup() )
1750  return;
1751 
1752  g_rpManager->currentGroup()->scoreArticles(false);
1753  a_rtManager->showHdrs(true);
1754 }
1755 
1756 
1757 void KNMainWidget::slotScoreLower()
1758 {
1759  kDebug(5003) <<"KNMainWidget::slotScoreLower() start";
1760  if( !g_rpManager->currentGroup() )
1761  return;
1762 
1763  if ( mArticleViewer->article() && mArticleViewer->article()->type() == KNArticle::ATremote ) {
1764  KNRemoteArticle::Ptr ra = boost::static_pointer_cast<KNRemoteArticle>( mArticleViewer->article() );
1765  s_coreManager->addRule(KNScorableArticle(ra), g_rpManager->currentGroup()->groupname(), -10);
1766  }
1767 }
1768 
1769 
1770 void KNMainWidget::slotScoreRaise()
1771 {
1772  kDebug(5003) <<"KNMainWidget::slotScoreRaise() start";
1773  if( !g_rpManager->currentGroup() )
1774  return;
1775 
1776  if ( mArticleViewer->article() && mArticleViewer->article()->type() == KNArticle::ATremote ) {
1777  KNRemoteArticle::Ptr ra = boost::static_pointer_cast<KNRemoteArticle>( mArticleViewer->article() );
1778  s_coreManager->addRule(KNScorableArticle(ra), g_rpManager->currentGroup()->groupname(), +10);
1779  }
1780 }
1781 
1782 
1783 void KNMainWidget::slotArtToggleIgnored()
1784 {
1785  kDebug(5003) <<"KNMainWidget::slotArtToggleIgnored()";
1786  if( !g_rpManager->currentGroup() )
1787  return;
1788 
1789  KNRemoteArticle::List l;
1790  getSelectedThreads(l);
1791  bool revert = !a_rtManager->toggleIgnored(l);
1792  a_rtManager->rescoreArticles(l);
1793 
1794  if (h_drView->currentItem() && !revert) {
1795  if ( knGlobals.settings()->ignoreThreadCloseThread() )
1796  closeCurrentThread();
1797  if ( knGlobals.settings()->ignoreThreadGoNext() )
1798  slotNavNextUnreadThread();
1799  }
1800 }
1801 
1802 
1803 void KNMainWidget::slotArtToggleWatched()
1804 {
1805  kDebug(5003) <<"KNMainWidget::slotArtToggleWatched()";
1806  if( !g_rpManager->currentGroup() )
1807  return;
1808 
1809  KNRemoteArticle::List l;
1810  getSelectedThreads(l);
1811  a_rtManager->toggleWatched(l);
1812  a_rtManager->rescoreArticles(l);
1813 }
1814 
1815 
1816 void KNMainWidget::slotArtOpenNewWindow()
1817 {
1818  kDebug(5003) <<"KNMainWidget::slotArtOpenNewWindow()";
1819 
1820  if( mArticleViewer->article() ) {
1821  if ( !ArticleWindow::raiseWindowForArticle( mArticleViewer->article() ) ) {
1822  ArticleWindow *win = new ArticleWindow( mArticleViewer->article() );
1823  win->show();
1824  }
1825  }
1826 }
1827 
1828 
1829 void KNMainWidget::slotArtSendOutbox()
1830 {
1831  kDebug(5003) <<"KNMainWidget::slotArtSendOutbox()";
1832  a_rtFactory->sendOutbox();
1833 }
1834 
1835 
1836 void KNMainWidget::slotArtDelete()
1837 {
1838  kDebug(5003) <<"KNMainWidget::slotArtDelete()";
1839  if (!f_olManager->currentFolder())
1840  return;
1841 
1842  KNLocalArticle::List lst;
1843  getSelectedArticles(lst);
1844 
1845  if(!lst.isEmpty())
1846  a_rtManager->deleteArticles(lst);
1847 
1848  if(h_drView->currentItem())
1849  h_drView->setActive( h_drView->currentItem() );
1850 }
1851 
1852 
1853 void KNMainWidget::slotArtSendNow()
1854 {
1855  kDebug(5003) <<"KNMainWidget::slotArtSendNow()";
1856  if (!f_olManager->currentFolder())
1857  return;
1858 
1859  KNLocalArticle::List lst;
1860  getSelectedArticles(lst);
1861 
1862  if(!lst.isEmpty())
1863  a_rtFactory->sendArticles( lst, true );
1864 }
1865 
1866 
1867 void KNMainWidget::slotArtEdit()
1868 {
1869  kDebug(5003) <<"KNodeVew::slotArtEdit()";
1870  if (!f_olManager->currentFolder())
1871  return;
1872 
1873  if ( mArticleViewer->article() && mArticleViewer->article()->type() == KNArticle::ATlocal )
1874  a_rtFactory->edit( boost::static_pointer_cast<KNLocalArticle>( mArticleViewer->article() ) );
1875 }
1876 
1877 
1878 void KNMainWidget::slotNetCancel()
1879 {
1880  kDebug(5003) <<"KNMainWidget::slotNetCancel()";
1881  knGlobals.scheduler()->cancelJobs();
1882 }
1883 
1884 
1885 void KNMainWidget::slotFetchArticleWithID()
1886 {
1887  kDebug(5003) <<"KNMainWidget::slotFetchArticleWithID()";
1888  if( !g_rpManager->currentGroup() )
1889  return;
1890 
1891  FetchArticleIdDlg *dlg = new FetchArticleIdDlg( this );
1892  dlg->setObjectName( "messageid" );
1893 
1894  if (dlg->exec()) {
1895  QString id = dlg->messageId().simplified();
1896  if ( id.indexOf( QRegExp("*@*", Qt::CaseInsensitive, QRegExp::Wildcard) ) != -1 ) {
1897  if ( id.indexOf( QRegExp("<*>", Qt::CaseInsensitive, QRegExp::Wildcard) ) == -1 ) // add "<>" when necessary
1898  id = QString("<%1>").arg(id);
1899 
1900  if ( !ArticleWindow::raiseWindowForArticle( id.toLatin1() ) ) { //article not yet opened
1901  KNRemoteArticle::Ptr a( new KNRemoteArticle( g_rpManager->currentGroup() ) );
1902  a->messageID()->from7BitString(id.toLatin1());
1903  ArticleWindow *awin = new ArticleWindow( a );
1904  awin->show();
1905  }
1906  }
1907  }
1908 
1909  KNHelper::saveWindowSize("fetchArticleWithID",dlg->size());
1910  delete dlg;
1911 }
1912 
1913 
1914 void KNMainWidget::slotToggleQuickSearch()
1915 {
1916  if (q_uicksearch->isHidden())
1917  q_uicksearch->show();
1918  else
1919  q_uicksearch->hide();
1920 }
1921 
1922 
1923 void KNMainWidget::slotSettings()
1924 {
1925  c_fgManager->configure();
1926 }
1927 
1928 KActionCollection* KNMainWidget::actionCollection() const
1929 {
1930  return m_GUIClient->actionCollection();
1931 }
1932 
1933 QMenu * KNMainWidget::popupMenu( const QString &name ) const
1934 {
1935  Q_ASSERT( m_GUIClient );
1936  Q_ASSERT( m_GUIClient->factory() );
1937  return static_cast<QMenu*>( m_GUIClient->factory()->container( name, m_GUIClient ) );
1938 }
1939 
1940 //--------------------------------
1941 
1942 
1943 KNode::FetchArticleIdDlg::FetchArticleIdDlg( QWidget *parent ) :
1944  KDialog( parent )
1945 {
1946  setCaption( i18n("Fetch Article with ID") );
1947  setButtons( KDialog::Ok | KDialog::Cancel );
1948  setModal( true );
1949  KHBox *page = new KHBox( this );
1950  setMainWidget( page );
1951 
1952  QLabel *label = new QLabel(i18n("&Message-ID:"),page);
1953  edit = new KLineEdit(page);
1954  label->setBuddy(edit);
1955  edit->setFocus();
1956  enableButtonOk( false );
1957  setButtonText( KDialog::Ok, i18n("&Fetch") );
1958  connect( edit, SIGNAL(textChanged(QString)), this, SLOT(slotTextChanged(QString)));
1959  KNHelper::restoreWindowSize("fetchArticleWithID", this, QSize(325,66));
1960 }
1961 
1962 QString KNode::FetchArticleIdDlg::messageId() const
1963 {
1964  return edit->text();
1965 }
1966 
1967 void KNode::FetchArticleIdDlg::slotTextChanged(const QString &_text )
1968 {
1969  enableButtonOk( !_text.isEmpty() );
1970 }
1971 
1972 
1975 // Move to the next article
1976 void KNMainWidget::nextArticle()
1977 {
1978  h_drView->nextArticle();
1979 }
1980 
1981 // Move to the previous article
1982 void KNMainWidget::previousArticle()
1983 {
1984  h_drView->prevArticle();
1985 }
1986 
1987 // Move to the next unread article
1988 void KNMainWidget::nextUnreadArticle()
1989 {
1990  slotNavNextUnreadArt();
1991 }
1992 
1993 // Move to the next unread thread
1994 void KNMainWidget::nextUnreadThread()
1995 {
1996  slotNavNextUnreadThread();
1997 }
1998 
1999 // Move to the next group
2000 void KNMainWidget::nextGroup()
2001 {
2002  c_olView->nextGroup();
2003 }
2004 
2005 // Move to the previous group
2006 void KNMainWidget::previousGroup()
2007 {
2008  c_olView->prevGroup();
2009 }
2010 
2011 void KNMainWidget::fetchHeaders()
2012 {
2013  // Simply call the slot
2014  slotAccGetNewHdrs();
2015 }
2016 
2017 void KNMainWidget::expireArticles()
2018 {
2019  slotAccExpireAll();
2020 }
2021 
2022 // Open the editor to post a new article in the selected group
2023 void KNMainWidget::postArticle()
2024 {
2025  slotAccPostNewArticle();
2026 }
2027 
2028 // Fetch the new headers in the selected groups
2029 void KNMainWidget::fetchHeadersInCurrentGroup()
2030 {
2031  slotGrpGetNewHdrs();
2032 }
2033 
2034 // Expire the articles in the current group
2035 void KNMainWidget::expireArticlesInCurrentGroup()
2036 {
2037  slotGrpExpire();
2038 }
2039 
2040 // Mark all the articles in the current group as read
2041 void KNMainWidget::markAllAsRead()
2042 {
2043  slotGrpSetAllRead();
2044 }
2045 
2046 // Mark all the articles in the current group as unread
2047 void KNMainWidget::markAllAsUnread()
2048 {
2049  slotGrpSetAllUnread();
2050 }
2051 
2052 // Mark the current article as read
2053 void KNMainWidget::markAsRead()
2054 {
2055  slotArtSetArtRead();
2056 }
2057 
2058 // Mark the current article as unread
2059 void KNMainWidget::markAsUnread()
2060 {
2061  slotArtSetArtUnread();
2062 }
2063 
2064 // Mark the current thread as read
2065 void KNMainWidget::markThreadAsRead()
2066 {
2067  slotArtSetThreadRead();
2068 }
2069 
2070 // Mark the current thread as unread
2071 void KNMainWidget::markThreadAsUnread()
2072 {
2073  slotArtSetThreadUnread();
2074 }
2075 
2076 // Send the pending articles
2077 void KNMainWidget::sendPendingMessages()
2078 {
2079  slotArtSendOutbox();
2080 }
2081 
2082 // Delete the current article
2083 void KNMainWidget::deleteArticle()
2084 {
2085  slotArtDelete();
2086 }
2087 
2088 // Send the current article
2089 void KNMainWidget::sendNow()
2090 {
2091  slotArtSendNow();
2092 }
2093 
2094 // Edit the current article
2095 void KNMainWidget::editArticle()
2096 {
2097  slotArtEdit();
2098 }
2099 
2100 bool KNMainWidget::handleCommandLine()
2101 {
2102  bool doneSomething = false;
2103  KCmdLineArgs *args = KCmdLineArgs::parsedArgs();
2104  if (args->count()>0) {
2105  KUrl url=args->url(0); // we take only one URL
2106  openURL(url);
2107  doneSomething = true;
2108  }
2109  args->clear();
2110  return doneSomething;
2111 }
2112 
2115 
2116 #include "knmainwidget.moc"
KNMainWidget::a_ctArtExpandAll
KAction * a_ctArtExpandAll
Definition: knmainwidget.h:272
KPIM::UiStateSaver::saveState
KDEPIM_EXPORT void saveState(QWidget *widget, KConfigGroup &config)
KNNntpAccount
Represents an account on a news server.
Definition: knnntpaccount.h:56
KNMainWidget::slotFolNewChild
void slotFolNewChild()
Definition: knmainwidget.cpp:1511
KNMainWidget::slotGrpGetNewHdrs
void slotGrpGetNewHdrs()
Definition: knmainwidget.cpp:1434
KNMainWidget::a_ctGrpSetAllRead
KAction * a_ctGrpSetAllRead
Definition: knmainwidget.h:248
KNMainWidget::f_olManager
KNFolderManager * f_olManager
Definition: knmainwidget.h:202
KNMainWidget::requestShutdown
bool requestShutdown()
Definition: knmainwidget.cpp:888
KNGroupManager::syncGroups
void syncGroups()
Definition: kngroupmanager.cpp:248
KNode::ArticleWidget::setArticle
void setArticle(KNArticle::Ptr article)
display the given article
Definition: articlewidget.cpp:379
KNMainWidget::slotArtEdit
void slotArtEdit()
Definition: knmainwidget.cpp:1867
KNMainWidget::slotSettings
void slotSettings()
Definition: knmainwidget.cpp:1923
KNMainWidget::a_ctGrpSetUnread
KAction * a_ctGrpSetUnread
Definition: knmainwidget.h:248
KNMainWidget::a_ctArtSortHeadersKeyb
KAction * a_ctArtSortHeadersKeyb
Definition: knmainwidget.h:272
KNMainWidget::a_ctArtToggleShowThreads
KToggleAction * a_ctArtToggleShowThreads
Definition: knmainwidget.h:279
KNGroupManager::expireGroupNow
void expireGroupNow(KNGroup::Ptr g=KNGroup::Ptr())
Definition: kngroupmanager.cpp:520
KNMainWidget::slotNavNextUnreadArt
void slotNavNextUnreadArt()
Definition: knmainwidget.cpp:1319
KNScoringManager::configure
void configure()
Definition: knscoring.cpp:130
KNMainWidget::slotArticleSelected
void slotArticleSelected(Q3ListViewItem *)
Definition: knmainwidget.cpp:1039
KNMainWidget::a_ctArtToggleWatched
KAction * a_ctArtToggleWatched
Definition: knmainwidget.h:289
KNMainWidget::editArticle
Q_SCRIPTABLE void editArticle()
Edit the current article.
Definition: knmainwidget.cpp:2095
KNMainWidget::readOptions
void readOptions()
Definition: knmainwidget.cpp:853
KVBox
KNMainWidget::slotFolMBoxImport
void slotFolMBoxImport()
Definition: knmainwidget.cpp:1594
KNMainWidget::slotNetCancel
void slotNetCancel()
Definition: knmainwidget.cpp:1878
KNHeaderView
Header view, displays the article listing of the currently selected news group or folder...
Definition: headerview.h:130
KNode::ArticleWidget::writeConfig
void writeConfig()
write config settings (call only for the main viewer)
Definition: articlewidget.cpp:362
KNArticle::ATremote
Definition: knarticle.h:45
KNMainWidget::a_ctFolCompactAll
KAction * a_ctFolCompactAll
Definition: knmainwidget.h:259
KNMainWidget::~KNMainWidget
~KNMainWidget()
Definition: knmainwidget.cpp:235
KNMainWidget::slotGrpSetAllUnread
void slotGrpSetAllUnread()
Definition: knmainwidget.cpp:1479
KNMainWidget::b_lockui
bool b_lockui
Definition: knmainwidget.h:192
KNHeaderView::readConfig
void readConfig()
Definition: headerview.cpp:104
KNHelper::saveWindowSize
static void saveWindowSize(const QString &name, const QSize &s)
Definition: utilities.cpp:205
KNMainWidget::a_ctGrpUnsubscribe
KAction * a_ctGrpUnsubscribe
Definition: knmainwidget.h:248
KNMainWidget::slotAccRename
void slotAccRename()
Definition: knmainwidget.cpp:1353
KNMainWidget::slotAccDelete
void slotAccDelete()
Definition: knmainwidget.cpp:1388
knmemorymanager.h
KNMainWidget::a_ctNavNextGroup
KAction * a_ctNavNextGroup
Definition: knmainwidget.h:229
KNMainWidget::c_fgManager
KNConfigManager * c_fgManager
Definition: knmainwidget.h:197
KNJobConsumer::jobsPending
bool jobsPending() const
Returns true if we are waiting for at least one job to be completed.
Definition: knjobdata.h:58
KNFolderManager::outbox
KNFolder::Ptr outbox() const
Returns the outbox folder.
Definition: knfoldermanager.h:48
KNMainWidget::a_ctNavNextUnreadThread
KAction * a_ctNavNextUnreadThread
Definition: knmainwidget.h:229
KNGroupManager::showGroupDialog
void showGroupDialog(KNNntpAccount::Ptr a, QWidget *parent=0)
Definition: kngroupmanager.cpp:401
KNode::Cleanup::compactToday
bool compactToday()
Definition: knconfig.cpp:306
KNGroupManager::reorganizeGroup
void reorganizeGroup(KNGroup::Ptr g=KNGroup::Ptr())
Definition: kngroupmanager.cpp:545
KNMainWidget::f_ilManager
KNFilterManager * f_ilManager
Definition: knmainwidget.h:203
KNFolderManager::compactAll
void compactAll(KNCleanUp *cup)
Definition: knfoldermanager.cpp:274
KNGroup::moderated
Definition: kngroup.h:50
KNMainWidget::slotCollectionRenamed
void slotCollectionRenamed(QTreeWidgetItem *i)
Called when a collection is renamed.
Definition: knmainwidget.cpp:1223
utilities.h
KNMainWidget::slotArtExpandAll
void slotArtExpandAll()
Definition: knmainwidget.cpp:1654
KNMainWidget::a_ctAccExpireAll
KAction * a_ctAccExpireAll
Definition: knmainwidget.h:238
KNMainWidget::slotAccGetNewHdrsAll
void slotAccGetNewHdrsAll()
Definition: knmainwidget.cpp:1397
KNode::Cleanup::setLastCompactDate
void setLastCompactDate()
Definition: knconfig.cpp:319
KNMainWidget::sendNow
Q_SCRIPTABLE void sendNow()
Send the current article.
Definition: knmainwidget.cpp:2089
knfolder.h
KNGroupManager::checkAll
void checkAll(KNNntpAccount::Ptr a, bool silent=false)
Definition: kngroupmanager.cpp:573
KNMainWidget::a_ctArtRefreshList
KAction * a_ctArtRefreshList
Definition: knmainwidget.h:272
KNAccountManager::removeAccount
bool removeAccount(KNNntpAccount::Ptr a=KNNntpAccount::Ptr())
Remove an existing account.
Definition: knaccountmanager.cpp:132
text
virtual QByteArray text(quint32 serialNumber) const =0
KNMainWidget::slotArtSetThreadUnread
void slotArtSetThreadUnread()
Definition: knmainwidget.cpp:1727
KNMainWidget::slotArtSortHeadersKeyb
void slotArtSortHeadersKeyb()
Definition: knmainwidget.cpp:1619
KNMainWidget::nextGroup
Q_SCRIPTABLE void nextGroup()
Move to the next group.
Definition: knmainwidget.cpp:2000
KNMainWidget::a_ctGrpGetNewHdrs
KAction * a_ctGrpGetNewHdrs
Definition: knmainwidget.h:248
KNGroupManager::group
KNGroup::Ptr group(const QString &gName, const KNServerInfo::Ptr s)
Returns a group named gName in the server s, or null if none is found.
Definition: kngroupmanager.cpp:338
KNFolderManager::exportToMBox
void exportToMBox(KNFolder::Ptr f)
Definition: knfoldermanager.cpp:393
KNMainWidget::slotArtToggleIgnored
void slotArtToggleIgnored()
Definition: knmainwidget.cpp:1783
KNArticleManager::setAllNotNew
void setAllNotNew()
mark all articles in the current group as not new
Definition: knarticlemanager.cpp:735
articlewidget.h
QWidget
KNMainWidget::slotHdrViewSortingChanged
void slotHdrViewSortingChanged(int i)
Definition: knmainwidget.cpp:1304
knarticlefactory.h
KNMainWidget::getSelectedThreads
void getSelectedThreads(KNRemoteArticle::List &l)
Definition: knmainwidget.cpp:1003
KNMainWidget::expireArticlesInCurrentGroup
Q_SCRIPTABLE void expireArticlesInCurrentGroup()
Expire the articles in the current group.
Definition: knmainwidget.cpp:2035
KNArticleFactory::closeComposeWindows
bool closeComposeWindows()
Definition: knarticlefactory.cpp:676
KNMainWidget::a_ctFolNew
KAction * a_ctFolNew
Definition: knmainwidget.h:259
KNMainWidget::configChanged
void configChanged()
update fonts and colors
Definition: knmainwidget.cpp:465
KNMainWidget::a_ctFolMboxImport
KAction * a_ctFolMboxImport
Definition: knmainwidget.h:259
KNHeaderView::nextUnreadThread
bool nextUnreadThread()
Definition: headerview.cpp:341
KNConfigManager::cleanup
KNode::Cleanup * cleanup() const
Definition: knconfigmanager.h:38
KNHelper::restoreWindowSize
static void restoreWindowSize(const QString &name, QWidget *d, const QSize &defaultSize)
Definition: utilities.cpp:212
knaccountmanager.h
KNMainWidget::a_ctReScore
KAction * a_ctReScore
Definition: knmainwidget.h:289
KNMainWidget::slotFolCompactAll
void slotFolCompactAll()
Definition: knmainwidget.cpp:1571
KNArticleManager::setRead
void setRead(KNRemoteArticle::List &l, bool r=true, bool handleXPosts=true)
Definition: knarticlemanager.cpp:650
KNMainWidget::slotFolEmpty
void slotFolEmpty()
Definition: knmainwidget.cpp:1578
KNMainWidget::slotReScore
void slotReScore()
Definition: knmainwidget.cpp:1746
KNMainWidget::slotAccPostNewArticle
void slotAccPostNewArticle()
Definition: knmainwidget.cpp:1404
KNFolderManager::syncFolders
void syncFolders()
Definition: knfoldermanager.cpp:439
KNGroupManager::unsubscribeGroup
bool unsubscribeGroup(KNGroup::Ptr g=KNGroup::Ptr())
Definition: kngroupmanager.cpp:454
KNMainWidget::slotFolDelete
void slotFolDelete()
Definition: knmainwidget.cpp:1526
KNCleanUp::reset
void reset()
Definition: kncleanup.cpp:80
KNGlobals::self
static KNGlobals * self()
Return the KNGlobals instance.
Definition: knglobals.cpp:72
KNMainWidget::slotArtSendOutbox
void slotArtSendOutbox()
Definition: knmainwidget.cpp:1829
KDialog
KNMainWidget::slotGrpExpire
void slotGrpExpire()
Definition: knmainwidget.cpp:1442
KNMainWidget::paletteChange
virtual void paletteChange(const QPalette &)
Definition: knmainwidget.cpp:963
KNMainWidget::a_rtManager
KNArticleManager * a_rtManager
Definition: knmainwidget.h:200
kngroupmanager.h
KNArticleManager::deleteTempFiles
void deleteTempFiles()
Definition: knarticlemanager.cpp:73
KNArticleFactory::createPosting
void createPosting(KNNntpAccount::Ptr a)
Definition: knarticlefactory.cpp:67
knfiltermanager.h
KNMainWidget::a_ctArtSetThreadUnread
KAction * a_ctArtSetThreadUnread
Definition: knmainwidget.h:282
KNGroup
Representation of a news group.
Definition: kngroup.h:41
KNMainWidget::a_ctNavPrevArt
KAction * a_ctNavPrevArt
Definition: knmainwidget.h:229
KNode::ArticleWidget::scrollNext
void scrollNext()
scroll down by one page
Definition: articlewidget.cpp:1166
QObject
KNode::Cleanup
Expirery/cleaup settings (globally or per account/group/folder).
Definition: knconfig.h:132
knarticlemanager.h
KNFolder::Ptr
boost::shared_ptr< KNFolder > Ptr
Shared pointer to a KNFolder.
Definition: knfolder.h:38
KNFolderManager::setCurrentFolder
void setCurrentFolder(KNFolder::Ptr f)
Definition: knfoldermanager.cpp:77
KNMainWidget::secureProcessEvents
void secureProcessEvents()
processEvents with some blocking
Definition: knmainwidget.cpp:325
KNMainWidget::slotArtToggleWatched
void slotArtToggleWatched()
Definition: knmainwidget.cpp:1803
knarticlewindow.h
KNNntpAccount::Ptr
boost::shared_ptr< KNNntpAccount > Ptr
Shared pointer to a KNNntpAccount.
Definition: knnntpaccount.h:62
KNAccountManager::currentAccount
KNNntpAccount::Ptr currentAccount() const
Returns the current account.
Definition: knaccountmanager.h:73
KNMainWidget::a_ctFolMboxExport
KAction * a_ctFolMboxExport
Definition: knmainwidget.h:259
KNConfigManager::configure
void configure()
Definition: knconfigmanager.cpp:45
KNMainWidget::slotArticleSelectionChanged
void slotArticleSelectionChanged()
Definition: knmainwidget.cpp:1077
KNCleanUp
This class handles group expiration and folder compaction.
Definition: kncleanup.h:36
SB_MAIN
#define SB_MAIN
Definition: resource.h:26
knnntpaccount.h
KNMainWidget::slotArtSetArtRead
void slotArtSetArtRead()
Definition: knmainwidget.cpp:1684
KNMainWidget::a_ctNavPrevGroup
KAction * a_ctNavPrevGroup
Definition: knmainwidget.h:229
KNMainWidget::a_rtFactory
KNArticleFactory * a_rtFactory
Definition: knmainwidget.h:201
KNMainWidget::postArticle
Q_SCRIPTABLE void postArticle()
Open the editor to post a new article in the selected group.
Definition: knmainwidget.cpp:2023
scheduler.h
KNMainWidget::slotArtToggleShowThreads
void slotArtToggleShowThreads()
Definition: knmainwidget.cpp:1674
KNMainWidget::slotFolMBoxExport
void slotFolMBoxExport()
Definition: knmainwidget.cpp:1603
KNGroupManager::expireAll
void expireAll(KNCleanUp *cup)
Definition: kngroupmanager.cpp:358
KNArticleManager::setView
void setView(KNHeaderView *v)
Allow to delay the setup of UI elements, since the knode part may not be available when the config di...
Definition: knarticlemanager.cpp:1100
KNMainWidget::a_ctNavNextArt
KAction * a_ctNavNextArt
Definition: knmainwidget.h:229
KNMainWidget::a_ctArtToggleIgnored
KAction * a_ctArtToggleIgnored
Definition: knmainwidget.h:289
KNMainWidget::eventFilter
bool eventFilter(QObject *, QEvent *)
Definition: knmainwidget.cpp:970
KNMainWidget::slotArtDelete
void slotArtDelete()
Definition: knmainwidget.cpp:1836
KNMainWidget::h_drView
KNHeaderView * h_drView
Definition: knmainwidget.h:191
KNMainWidget::a_ctAccDelete
KAction * a_ctAccDelete
Definition: knmainwidget.h:238
KNMainWidget::a_ctArtSearch
KAction * a_ctArtSearch
Definition: knmainwidget.h:272
KNMainWidget::markAsRead
Q_SCRIPTABLE void markAsRead()
Mark the current article as read.
Definition: knmainwidget.cpp:2053
KNMainWidget::q_uicksearch
KToolBar * q_uicksearch
Definition: knmainwidget.h:193
KNMainWidget::a_ctToggleQuickSearch
KToggleAction * a_ctToggleQuickSearch
Definition: knmainwidget.h:308
KNGroupManager::subscribeGroup
void subscribeGroup(const KNGroupInfo *gi, KNNntpAccount::Ptr a)
Definition: kngroupmanager.cpp:442
KNMainWidget::a_ctNetCancel
KAction * a_ctNetCancel
Definition: knmainwidget.h:303
KNMainWidget::slotNetworkActive
void slotNetworkActive(bool b)
Definition: knmainwidget.cpp:1310
KNMainWidget::markAsUnread
Q_SCRIPTABLE void markAsUnread()
Mark the current article as unread.
Definition: knmainwidget.cpp:2059
KNMainWidget::g_rpManager
KNGroupManager * g_rpManager
Definition: knmainwidget.h:199
KNArticleManager::toggleWatched
bool toggleWatched(KNRemoteArticle::List &l)
Definition: knarticlemanager.cpp:753
KNMainWidget::a_ctGrpReorganize
KAction * a_ctGrpReorganize
Definition: knmainwidget.h:248
KNArticleFactory::configChanged
void configChanged()
Definition: knarticlefactory.cpp:707
KNMainWidget::slotArtSetThreadRead
void slotArtSetThreadRead()
Definition: knmainwidget.cpp:1708
KNArticleManager::updateListViewItems
void updateListViewItems()
Definition: knarticlemanager.cpp:343
KNMainWidget::handleCommandLine
Q_SCRIPTABLE bool handleCommandLine()
Process command-line options.
Definition: knmainwidget.cpp:2100
KNMainWidget::a_ctGrpProperties
KAction * a_ctGrpProperties
Definition: knmainwidget.h:248
KNMainWidget::slotArtCollapseAll
void slotArtCollapseAll()
Definition: knmainwidget.cpp:1643
KNAccountManager::newAccount
bool newAccount(KNNntpAccount::Ptr a)
Add a new account.
Definition: knaccountmanager.cpp:102
KNMainWidget::slotGrpSetAllRead
void slotGrpSetAllRead()
Definition: knmainwidget.cpp:1469
KNArticleManager::deleteArticles
bool deleteArticles(KNLocalArticle::List &l, bool ask=true)
Definition: knarticlemanager.cpp:570
KNode::ArticleWidget::atBottom
bool atBottom() const
checks whether the readers is scrolled down to the bottom
Definition: articlewidget.cpp:1145
KNode::FetchArticleIdDlg
Dialog to request a message ID.
Definition: knmainwidget.h:391
KNMainWidget::slotGrpUnsubscribe
void slotGrpUnsubscribe()
Definition: knmainwidget.cpp:1457
KNMainWidget::sizeHint
virtual QSize sizeHint() const
useful default value
Definition: knmainwidget.cpp:356
KNArticle::ATlocal
Definition: knarticle.h:46
KNMainWidget::nextUnreadArticle
Q_SCRIPTABLE void nextUnreadArticle()
Move to the next unread article.
Definition: knmainwidget.cpp:1988
KNMainWidget::disableAccels
void disableAccels(bool b=true)
Definition: knmainwidget.cpp:307
KNMainWidget::closeCurrentThread
void closeCurrentThread()
Definition: knmainwidget.cpp:1027
KNGroupManager::checkGroupForNewHeaders
void checkGroupForNewHeaders(KNGroup::Ptr g=KNGroup::Ptr())
Definition: kngroupmanager.cpp:506
KNMainWidget::deleteArticle
Q_SCRIPTABLE void deleteArticle()
Delete the current article.
Definition: knmainwidget.cpp:2083
KNMainWidget::a_ctFetchArticleWithID
KAction * a_ctFetchArticleWithID
Definition: knmainwidget.h:305
KNGlobals::articleFactory
KNArticleFactory * articleFactory()
Returns the article factory.
Definition: knglobals.cpp:131
KNMainWidget::a_ctArtSendNow
KAction * a_ctArtSendNow
Definition: knmainwidget.h:297
KNArticleFactory::edit
void edit(KNLocalArticle::Ptr a)
Definition: knarticlefactory.cpp:560
KNFolderManager::compactFolder
void compactFolder(KNFolder::Ptr f)
Definition: knfoldermanager.cpp:264
KNMainWidget::slotFetchArticleWithID
void slotFetchArticleWithID()
Definition: knmainwidget.cpp:1885
KNMainWidget::c_olView
KNCollectionView * c_olView
Definition: knmainwidget.h:190
KNMainWidget::a_ctAccSubscribe
KAction * a_ctAccSubscribe
Definition: knmainwidget.h:238
KNMainWidget::a_ctArtToggleThread
KAction * a_ctArtToggleThread
Definition: knmainwidget.h:272
KNHdrViewItem
Header view item.
Definition: knhdrviewitem.h:26
KNMainWidget::nextArticle
Q_SCRIPTABLE void nextArticle()
Move to the next article.
Definition: knmainwidget.cpp:1976
KNMainWidget::KNMainWidget
KNMainWidget(KXMLGUIClient *client, QWidget *parent)
Definition: knmainwidget.cpp:85
KNFolderManager::emptyFolder
void emptyFolder(KNFolder::Ptr f)
Definition: knfoldermanager.cpp:190
KNMainWidget::slotFolNew
void slotFolNew()
Definition: knmainwidget.cpp:1498
kncollectionview.h
KNMainWidget::popupMenu
QMenu * popupMenu(const QString &name) const
Returns the menu from knodeui.rc whose name is name.
Definition: knmainwidget.cpp:1933
KNMainWidget::markThreadAsUnread
Q_SCRIPTABLE void markThreadAsUnread()
Mark the current thread as unread.
Definition: knmainwidget.cpp:2071
KNMainWidget::slotNavReadThrough
void slotNavReadThrough()
Definition: knmainwidget.cpp:1333
KNMainWidget::slotArtSearch
void slotArtSearch()
Definition: knmainwidget.cpp:1629
KPIM::KScoringManager::save
void save()
Definition: kscoring.cpp:872
KNMainWidget::setStatusMsg
void setStatusMsg(const QString &=QString(), int id=SB_MAIN)
Definition: knmainwidget.cpp:261
knmainwidget.h
KNCollectionView
The group/folder tree.
Definition: kncollectionview.h:30
KNMainWidget::a_ctAccRename
KAction * a_ctAccRename
Definition: knmainwidget.h:238
KNCollectionView::setActive
void setActive(QTreeWidgetItem *item)
Selects item and set it the current item.
Definition: kncollectionview.cpp:276
kncollectionviewitem.h
KNMainWidget::slotArtSendNow
void slotArtSendNow()
Definition: knmainwidget.cpp:1853
KNMainWidget::a_ctArtCollapseAll
KAction * a_ctArtCollapseAll
Definition: knmainwidget.h:272
KNMainWidget::a_ctAccProperties
KAction * a_ctAccProperties
Definition: knmainwidget.h:238
KNMainWidget::firstStart
bool firstStart()
checks if run for the first time, sets some global defaults (email configuration) ...
Definition: knmainwidget.cpp:837
KNMainWidget::markThreadAsRead
Q_SCRIPTABLE void markThreadAsRead()
Mark the current thread as read.
Definition: knmainwidget.cpp:2065
KNMainWidget::mArticleViewer
KNode::ArticleWidget * mArticleViewer
Definition: knmainwidget.h:189
KNHeaderView::nextUnreadArticle
bool nextUnreadArticle()
Definition: headerview.cpp:295
KNode::ArticleWindow
A stand-alone article viewer window.
Definition: knarticlewindow.h:31
KNMainWidget::a_ctFolEmpty
KAction * a_ctFolEmpty
Definition: knmainwidget.h:259
KNHeaderView::writeConfig
void writeConfig()
Definition: headerview.cpp:129
KNMainWidget::a_ctScoreRaise
KAction * a_ctScoreRaise
Definition: knmainwidget.h:289
KNMainWidget::a_ctFolNewChild
KAction * a_ctFolNewChild
Definition: knmainwidget.h:259
KNFolderManager::newFolder
KNFolder::Ptr newFolder(KNFolder::Ptr p)
Definition: knfoldermanager.cpp:139
uistatesaver.h
K3ListView
KPIM::KScoringManager::addRule
KScoringRule * addRule(KScoringRule *)
Definition: kscoring.cpp:991
KNMainWidget::slotArtRefreshList
void slotArtRefreshList()
Definition: knmainwidget.cpp:1636
KPIM::UiStateSaver::restoreState
KDEPIM_EXPORT void restoreState(QWidget *widget, const KConfigGroup &config)
KNMainWidget::a_ctScoreLower
KAction * a_ctScoreLower
Definition: knmainwidget.h:289
KNMainWidget::a_ctArtEdit
KAction * a_ctArtEdit
Definition: knmainwidget.h:297
KNArticleManager::search
void search()
Definition: knarticlemanager.cpp:388
KNode::FetchArticleIdDlg::slotTextChanged
void slotTextChanged(const QString &)
Definition: knmainwidget.cpp:1967
KNMainWidget::a_ctFolDelete
KAction * a_ctFolDelete
Definition: knmainwidget.h:259
KNCleanUp::start
void start()
Definition: kncleanup.cpp:52
Q3ListViewItem
KNAccountManager::first
KNNntpAccount::Ptr first() const
Returns the first account (used as fallback sometimes).
Definition: knaccountmanager.cpp:199
KNMainWidget::slotAccSubscribe
void slotAccSubscribe()
Definition: knmainwidget.cpp:1363
QTreeWidgetItem
KNGroupManager::setCurrentGroup
void setCurrentGroup(KNGroup::Ptr g)
Definition: kngroupmanager.cpp:555
KNArticleFactory::sendArticles
void sendArticles(KNLocalArticle::List &l, bool now=true)
Definition: knarticlefactory.cpp:590
KNMainWidget::prepareShutdown
void prepareShutdown()
Definition: knmainwidget.cpp:906
KNMainWidget::slotArtToggleThread
void slotArtToggleThread()
Definition: knmainwidget.cpp:1664
KNMainWidget::a_ctNavReadThrough
KAction * a_ctNavReadThrough
Definition: knmainwidget.h:229
KNMainWidget::s_earchLineEdit
QLineEdit * s_earchLineEdit
Definition: knmainwidget.h:194
KNAccountManager::editProperties
void editProperties(KNNntpAccount::Ptr a=KNNntpAccount::Ptr())
Show the properties dialog for the given account.
Definition: knaccountmanager.cpp:180
KNMainWidget::slotGrpSetUnread
void slotGrpSetUnread()
Definition: knmainwidget.cpp:1485
KNMainWidget::slotGrpReorganize
void slotGrpReorganize()
Definition: knmainwidget.cpp:1450
KNODE_VERSION
#define KNODE_VERSION
Definition: resource.h:22
KNMainWidget::initActions
void initActions()
Definition: knmainwidget.cpp:473
KNode::ArticleWidget
Widget to display a news article.
Definition: articlewidget.h:47
KNCollection::CTgroup
Definition: kncollection.h:33
KNMainWidget::slotArticleRMB
void slotArticleRMB(K3ListView *, Q3ListViewItem *i, const QPoint &p)
Definition: knmainwidget.cpp:1239
KNMainWidget::slotAccExpireAll
void slotAccExpireAll()
Definition: knmainwidget.cpp:1371
KNMainWidget::setStatusHelpMsg
void setStatusHelpMsg(const QString &text)
Definition: knmainwidget.cpp:283
KNMainWidget::previousArticle
Q_SCRIPTABLE void previousArticle()
Move to the previous article.
Definition: knmainwidget.cpp:1982
headerview.h
KNMainWidget::slotFolCompact
void slotFolCompact()
Definition: knmainwidget.cpp:1563
knglobals.h
KNMainWidget::slotArtOpenNewWindow
void slotArtOpenNewWindow()
Definition: knmainwidget.cpp:1816
QMenu
KNArticleManager::updateStatusString
void updateStatusString()
Definition: knarticlemanager.cpp:1001
KNMainWidget::slotGrpRename
void slotGrpRename()
Definition: knmainwidget.cpp:1424
KNGroupManager::showGroupProperties
void showGroupProperties(KNGroup::Ptr g=KNGroup::Ptr())
Shows the property dialog of g or if null, the properties of the currentGroup().
Definition: kngroupmanager.cpp:498
KNHeaderView::setSorting
virtual void setSorting(int column, bool ascending=true)
Definition: headerview.cpp:206
KNMainWidget::queryClose
bool queryClose()
exit
Definition: knmainwidget.cpp:941
KNMainWidget::slotArtSortHeaders
void slotArtSortHeaders(int i)
Definition: knmainwidget.cpp:1612
KNMainWidget::a_ctAccGetNewHdrs
KAction * a_ctAccGetNewHdrs
Definition: knmainwidget.h:238
KLineEdit
KNArticleManager::setAllThreadsOpen
void setAllThreadsOpen(bool b=true)
Definition: knarticlemanager.cpp:367
KNRemoteArticle::Ptr
boost::shared_ptr< KNRemoteArticle > Ptr
Shared pointer to a KNRemoteArticle. To be used instead of raw KNRemoteArticle*.
Definition: knarticle.h:107
KNCollection::Ptr
boost::shared_ptr< KNCollection > Ptr
Shared pointer to a KNCollection.
Definition: kncollection.h:40
KNArticleManager::setAllRead
void setAllRead(bool read=true, int lastcount=-1)
Definition: knarticlemanager.cpp:604
KPIM::BroadcastStatus
KNMainWidget::a_ctGrpExpire
KAction * a_ctGrpExpire
Definition: knmainwidget.h:248
KNCollectionView::readConfig
void readConfig()
Definition: kncollectionview.cpp:95
KNFolderManager::currentFolder
KNFolder::Ptr currentFolder() const
Definition: knfoldermanager.h:38
KNArticleFactory::sendOutbox
void sendOutbox()
Definition: knarticlefactory.cpp:658
KNMainWidget::saveOptions
void saveOptions()
Definition: knmainwidget.cpp:872
knfoldermanager.h
settings.h
KNMainWidget::a_ctAccPostNewArticle
KAction * a_ctAccPostNewArticle
Definition: knmainwidget.h:238
KNMainWidget::slotScoreRaise
void slotScoreRaise()
Definition: knmainwidget.cpp:1770
KNMainWidget::a_ctArtFilterKeyb
KAction * a_ctArtFilterKeyb
Definition: knmainwidget.h:272
KNArticle::Ptr
boost::shared_ptr< KNArticle > Ptr
Shared pointer to a KNArticle. To be used instead of raw KNArticle*.
Definition: knarticle.h:39
KNHeaderView::setActive
void setActive(Q3ListViewItem *item)
Definition: headerview.cpp:141
KNAccountManager::setCurrentAccount
void setCurrentAccount(KNNntpAccount::Ptr a)
Sets the current account.
Definition: knaccountmanager.cpp:95
KNMainWidget::initStatusBar
void initStatusBar()
Definition: knmainwidget.cpp:246
KNHeaderView::clear
void clear()
Definition: headerview.cpp:163
KNMainWidget::a_ctAccGetNewHdrsAll
KAction * a_ctAccGetNewHdrsAll
Definition: knmainwidget.h:238
KNMainWidget::slotScoreLower
void slotScoreLower()
Definition: knmainwidget.cpp:1757
KNArticleManager::toggleIgnored
bool toggleIgnored(KNRemoteArticle::List &l)
Definition: knarticlemanager.cpp:807
KNMainWidget::slotScoreEdit
void slotScoreEdit()
Definition: knmainwidget.cpp:1739
KNMainWidget::slotAccGetNewHdrs
void slotAccGetNewHdrs()
Definition: knmainwidget.cpp:1379
KNMainWidget::a_ctGrpSetAllUnread
KAction * a_ctGrpSetAllUnread
Definition: knmainwidget.h:248
KNFolderManager::importFromMBox
void importFromMBox(KNFolder::Ptr f)
Definition: knfoldermanager.cpp:293
KNAccountManager::prepareShutdown
void prepareShutdown()
Save all accounts.
Definition: knaccountmanager.cpp:52
QLabel
KNode::FetchArticleIdDlg::FetchArticleIdDlg
FetchArticleIdDlg(QWidget *parent)
Definition: knmainwidget.cpp:1943
KNMainWidget::a_ctArtOpenNewWindow
KAction * a_ctArtOpenNewWindow
Definition: knmainwidget.h:282
KNFolderManager::drafts
KNFolder::Ptr drafts() const
Returns the drafts folder.
Definition: knfoldermanager.h:46
KNCollection::CTfolder
Definition: kncollection.h:34
kncleanup.h
KNAccountManager::accounts
KNNntpAccount::List accounts() const
Returns the list of all accounts.
Definition: knaccountmanager.h:77
KNFilterManager::prepareShutdown
void prepareShutdown()
Definition: knfiltermanager.cpp:94
KNMainWidget::slotNavNextUnreadThread
void slotNavNextUnreadThread()
Definition: knmainwidget.cpp:1326
KNMainWidget::a_ctScoresEdit
KAction * a_ctScoresEdit
Definition: knmainwidget.h:289
KNMainWidget::fetchHeaders
Q_SCRIPTABLE void fetchHeaders()
Fetch all the new article headers.
Definition: knmainwidget.cpp:2011
KNAccountManager::accountRenamed
void accountRenamed(KNNntpAccount::Ptr a=KNNntpAccount::Ptr())
Definition: knaccountmanager.cpp:190
KNMainWidget::previousGroup
Q_SCRIPTABLE void previousGroup()
Move to the previous group.
Definition: knmainwidget.cpp:2006
KNHelper::selectDialog
static int selectDialog(QWidget *parent, const QString &caption, const QStringList &options, int initialValue)
list selection dialog, used instead of a popup menu when a select action is called via the keyboard...
Definition: utilities.cpp:163
KNMainWidget::getSelectedArticles
void getSelectedArticles(KNArticle::List &l)
Definition: knmainwidget.cpp:982
KNMainWidget::a_ctArtFilter
KNFilterSelectAction * a_ctArtFilter
Definition: knmainwidget.h:271
KNScorableArticle
Article interface for the scoring system.
Definition: knscoring.h:24
knconfigmanager.h
KNRemoteArticle
KNRemoteArticle represents an article, whos body has to be retrieved from a remote host or from the l...
Definition: knarticle.h:103
KNMainWidget::updateCaption
void updateCaption()
Definition: knmainwidget.cpp:292
KNGroupManager::firstGroupOfAccount
KNGroup::Ptr firstGroupOfAccount(const KNServerInfo::Ptr s)
Returns the first group in the server s, or null if it is empty.
Definition: kngroupmanager.cpp:348
KNFolder
Representation of a folder.
Definition: knfolder.h:30
KNMainWidget::openURL
void openURL(const KUrl &url)
handle URL given as command-line argument
Definition: knmainwidget.cpp:367
KNMainWidget::fontChange
virtual void fontChange(const QFont &)
update appearance
Definition: knmainwidget.cpp:955
KNMainWidget::slotAccProperties
void slotAccProperties()
Definition: knmainwidget.cpp:1343
KHBox
SB_GROUP
#define SB_GROUP
Definition: resource.h:27
KNArticleManager::rescoreArticles
void rescoreArticles(KNRemoteArticle::List &l)
Definition: knarticlemanager.cpp:873
knscoring.h
KNMainWidget::slotArtSetArtUnread
void slotArtSetArtUnread()
Definition: knmainwidget.cpp:1696
KNMainWidget::fetchHeadersInCurrentGroup
Q_SCRIPTABLE void fetchHeadersInCurrentGroup()
Fetch the new headers in the selected groups.
Definition: knmainwidget.cpp:2029
KNMainWidget::sendPendingMessages
Q_SCRIPTABLE void sendPendingMessages()
Send the pending articles.
Definition: knmainwidget.cpp:2077
KNMainWidget::a_ccManager
KNAccountManager * a_ccManager
Definition: knmainwidget.h:198
KNMainWidget::a_ctArtSetThreadRead
KAction * a_ctArtSetThreadRead
Definition: knmainwidget.h:282
KNFilterSelectAction
Filter selection action.
Definition: knfiltermanager.h:32
KNArticleManager::showHdrs
void showHdrs(bool clear=true)
Definition: knarticlemanager.cpp:181
knhdrviewitem.h
KNode::FetchArticleIdDlg::edit
KLineEdit * edit
Definition: knmainwidget.h:401
KNMainWidget::a_ctFolRename
KAction * a_ctFolRename
Definition: knmainwidget.h:259
KNMainWidget::a_ctArtSortHeaders
KSelectAction * a_ctArtSortHeaders
Definition: knmainwidget.h:270
KNMainWidget::actionCollection
KActionCollection * actionCollection() const
Definition: knmainwidget.cpp:1928
KPIM::TreeWidget::firstItem
QTreeWidgetItem * firstItem() const
Convenience function that returns the first item in the view.
Definition: treewidget.cpp:311
KNMainWidget::a_ctNavNextUnreadArt
KAction * a_ctNavNextUnreadArt
Definition: knmainwidget.h:229
KNCollectionView::writeConfig
void writeConfig()
Definition: kncollectionview.cpp:102
KNMainWidget::a_ctArtSendOutbox
KAction * a_ctArtSendOutbox
Definition: knmainwidget.h:297
KNCollectionViewItem
Folder tree item.
Definition: kncollectionviewitem.h:25
knGlobals
#define knGlobals
Keep compatibility with the old way.
Definition: knglobals.h:28
KNCollection::CTnntpAccount
Definition: kncollection.h:33
KNMainWidget::a_ctArtSetArtRead
KAction * a_ctArtSetArtRead
Definition: knmainwidget.h:282
KNGroup::account
KNNntpAccount::Ptr account()
Returns the account this group belongs to.
Definition: kngroup.cpp:161
KNMainWidget::a_ctArtDelete
KAction * a_ctArtDelete
Definition: knmainwidget.h:297
KPIM::RecentAddresses
broadcaststatus.h
KNMainWidget::slotOpenArticle
void slotOpenArticle(Q3ListViewItem *item)
Open selected article in own composer/reader window.
Definition: knmainwidget.cpp:1283
KNConfigManager::syncConfig
void syncConfig()
Definition: knconfigmanager.cpp:60
KPIM::FolderTreeWidget::labelColumnIndex
int labelColumnIndex() const
Returns the logical index of the "Label" column or -1 if such a column has not been added (yet)...
Definition: foldertreewidget.h:108
KNGroupInfo
Helper classes for the group selection dialog, contains info about a newsgroup (name, description)
Definition: kngroupmanager.h:34
KNMainWidget::slotFolRename
void slotFolRename()
Definition: knmainwidget.cpp:1548
KNMainWidget::markAllAsUnread
Q_SCRIPTABLE void markAllAsUnread()
Mark all the articles in the current group as unread.
Definition: knmainwidget.cpp:2047
KNFolderManager::deleteFolder
bool deleteFolder(KNFolder::Ptr f)
Definition: knfoldermanager.cpp:150
KNGroupManager::currentGroup
KNGroup::Ptr currentGroup() const
Definition: kngroupmanager.h:111
KNMainWidget::s_coreManager
KNScoringManager * s_coreManager
Definition: knmainwidget.h:204
QSplitter
KNMainWidget::nextUnreadThread
Q_SCRIPTABLE void nextUnreadThread()
Move to the next unread thread.
Definition: knmainwidget.cpp:1994
KNMainWidget::slotCollectionSelected
void slotCollectionSelected()
Called when the selection collection changed.
Definition: knmainwidget.cpp:1101
KNMainWidget::slotCollectionRMB
void slotCollectionRMB(QTreeWidgetItem *i, const QPoint &pos)
Display a menu on items of the collections view.
Definition: knmainwidget.cpp:1258
KNode::ArticleWidget::article
KNArticle::Ptr article() const
returns the currently shown article
Definition: articlewidget.h:69
KNMainWidget::slotToggleQuickSearch
void slotToggleQuickSearch()
Definition: knmainwidget.cpp:1914
KNMainWidget::expireArticles
Q_SCRIPTABLE void expireArticles()
Expire articles in all groups.
Definition: knmainwidget.cpp:2017
KNMainWidget::a_ctGrpRename
KAction * a_ctGrpRename
Definition: knmainwidget.h:248
KNMainWidget::slotGrpProperties
void slotGrpProperties()
Definition: knmainwidget.cpp:1414
KNode::FetchArticleIdDlg::messageId
QString messageId() const
Definition: knmainwidget.cpp:1962
KNCollectionView::nextGroup
void nextGroup()
Definition: kncollectionview.cpp:287
QList< KNNntpAccount::Ptr >
KNMainWidget::markAllAsRead
Q_SCRIPTABLE void markAllAsRead()
Mark all the articles in the current group as read.
Definition: knmainwidget.cpp:2041
KNMainWidget::a_ctFolCompact
KAction * a_ctFolCompact
Definition: knmainwidget.h:259
KNGroup::Ptr
boost::shared_ptr< KNGroup > Ptr
Shared pointer to a KNGroup.
Definition: kngroup.h:47
SB_FILTER
#define SB_FILTER
Definition: resource.h:28
recentaddresses.h
KNMainWidget::a_ctArtSetArtUnread
KAction * a_ctArtSetArtUnread
Definition: knmainwidget.h:282
KNMainWidget::signalCaptionChangeRequest
void signalCaptionChangeRequest(const QString &)
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:58:36 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

knode

Skip menu "knode"
  • Main Page
  • Namespace List
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Related Pages

kdepim API Reference

Skip menu "kdepim API Reference"
  • akonadi_next
  • akregator
  • blogilo
  • calendarsupport
  • console
  •   kabcclient
  •   konsolekalendar
  • kaddressbook
  • kalarm
  •   lib
  • kdgantt2
  • kjots
  • kleopatra
  • kmail
  • knode
  • knotes
  • kontact
  • korgac
  • korganizer
  • ktimetracker
  • libkdepim
  • libkleo
  • libkpgp
  • mailcommon
  • messagelist
  • messageviewer

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal