• 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
knconfigwidgets.cpp
Go to the documentation of this file.
1 /*
2  KNode, the KDE newsreader
3  Copyright (c) 1999-2006 the KNode authors.
4  See file AUTHORS for details
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 "knconfigwidgets.h"
16 
17 #include "configuration/identity_widget.h"
18 #include "knaccountmanager.h"
19 #include "knconfigmanager.h"
20 #include "kndisplayedheader.h"
21 #include "kngroupmanager.h"
22 #include "knglobals.h"
23 #include "knnntpaccount.h"
24 #include "utilities.h"
25 #include "knfiltermanager.h"
26 #include "knarticlefilter.h"
27 #include "knscoring.h"
28 #include "ui_postnewscomposerwidget_base.h"
29 #include "ui_readnewsnavigationwidget_base.h"
30 #include "ui_readnewsviewerwidget_base.h"
31 #include "settings.h"
32 #include "utils/locale.h"
33 
34 #include <QPainter>
35 #include <kcharsets.h>
36 #include <kio/ioslave_defaults.h>
37 #include <kmessagebox.h>
38 #include <kcolordialog.h>
39 #include <kfontdialog.h>
40 #include <kscoringeditor.h>
41 #include <sonnet/configwidget.h>
42 #include <kcombobox.h>
43 #include <libkpgp/kpgpui.h>
44 
45 
46 
47 //BEGIN: NNTP account configuration widgets ----------------------------------
48 
49 KNode::NntpAccountListWidget::NntpAccountListWidget( const KComponentData &inst, QWidget *parent ) :
50  KCModule( inst, parent )
51 {
52  setupUi( this );
53 
54  // account listbox
55  connect( mAccountList, SIGNAL(itemDoubleClicked(QListWidgetItem*)), SLOT(slotEditBtnClicked()) );
56  connect( mAccountList, SIGNAL(itemSelectionChanged()), SLOT(slotSelectionChanged()) );
57 
58  // buttons
59  connect( mAddButton, SIGNAL(clicked()), SLOT(slotAddBtnClicked()) );
60  connect( mEditButton, SIGNAL(clicked()), SLOT(slotEditBtnClicked()) );
61  connect( mDeleteButton, SIGNAL(clicked()), SLOT(slotDelBtnClicked()) );
62  connect( mSubscribeButton, SIGNAL(clicked()), SLOT(slotSubBtnClicked()) );
63 
64  load();
65 
66  // the settings dialog is non-modal, so we have to react to changes
67  // made outside of the dialog
68  KNAccountManager *am = knGlobals.accountManager();
69  connect( am, SIGNAL(accountAdded(KNNntpAccount::Ptr)), SLOT(slotAddItem(KNNntpAccount::Ptr)) );
70  connect( am, SIGNAL(accountRemoved(KNNntpAccount::Ptr)), SLOT(slotRemoveItem(KNNntpAccount::Ptr)) );
71  connect( am, SIGNAL(accountModified(KNNntpAccount::Ptr)), SLOT(slotUpdateItem(KNNntpAccount::Ptr)) );
72 
73  slotSelectionChanged(); // disable Delete & Edit initially
74 }
75 
76 
77 void KNode::NntpAccountListWidget::load()
78 {
79  mAccountList->clear();
80  KNNntpAccount::List list = knGlobals.accountManager()->accounts();
81  for ( KNNntpAccount::List::Iterator it = list.begin(); it != list.end(); ++it )
82  slotAddItem( *it );
83 }
84 
85 
86 void KNode::NntpAccountListWidget::slotAddItem( KNNntpAccount::Ptr a )
87 {
88  AccountListItem *item;
89  item = new AccountListItem( a );
90  item->setText( a->name() );
91  item->setIcon( SmallIcon( "network-server" ) );
92  mAccountList->addItem( item );
93  emit changed( true );
94 }
95 
96 
97 void KNode::NntpAccountListWidget::slotRemoveItem( KNNntpAccount::Ptr a )
98 {
99  AccountListItem *item;
100  for ( int i = 0; i < mAccountList->count(); ++i ) {
101  item = static_cast<AccountListItem*>( mAccountList->item( i ) );
102  if ( item && item->account() == a ) {
103  delete mAccountList->takeItem( i );
104  break;
105  }
106  }
107  slotSelectionChanged();
108  emit changed( true );
109 }
110 
111 
112 void KNode::NntpAccountListWidget::slotUpdateItem( KNNntpAccount::Ptr a )
113 {
114  AccountListItem *item;
115  for ( int i = 0; i < mAccountList->count(); ++i ) {
116  item = static_cast<AccountListItem*>( mAccountList->item( i ) );
117  if ( item && item->account() == a )
118  item->setText( a->name() );
119  }
120  slotSelectionChanged();
121  emit changed( true );
122 }
123 
124 
125 
126 void KNode::NntpAccountListWidget::slotSelectionChanged()
127 {
128  AccountListItem *item = static_cast<AccountListItem*>( mAccountList->currentItem() );
129  mDeleteButton->setEnabled( item );
130  mEditButton->setEnabled( item );
131  mSubscribeButton->setEnabled( item );
132 
133  if ( item ) {
134  mServerInfo->setText( i18n("Server: %1", item->account()->server() ) );
135  mPortInfo->setText( i18n("Port: %1", item->account()->port() ) );
136  } else {
137  mServerInfo->setText( i18n("Server: ") );
138  mPortInfo->setText( i18n("Port: ") );
139  }
140 }
141 
142 
143 
144 void KNode::NntpAccountListWidget::slotAddBtnClicked()
145 {
146  KNNntpAccount::Ptr acc = KNNntpAccount::Ptr( new KNNntpAccount() );
147 
148  if(acc->editProperties(this)) {
149  if(knGlobals.accountManager()->newAccount(acc))
150  acc->writeConfig();
151  }
152 }
153 
154 
155 
156 void KNode::NntpAccountListWidget::slotDelBtnClicked()
157 {
158  AccountListItem *item = static_cast<AccountListItem*>( mAccountList->currentItem() );
159  if ( item )
160  knGlobals.accountManager()->removeAccount( item->account() );
161 }
162 
163 
164 
165 void KNode::NntpAccountListWidget::slotEditBtnClicked()
166 {
167  AccountListItem *item = static_cast<AccountListItem*>( mAccountList->currentItem() );
168  if ( item ) {
169  item->account()->editProperties( this );
170  slotUpdateItem( item->account() );
171  }
172 }
173 
174 
175 void KNode::NntpAccountListWidget::slotSubBtnClicked()
176 {
177  AccountListItem *item = static_cast<AccountListItem*>( mAccountList->currentItem() );
178  if( item )
179  knGlobals.groupManager()->showGroupDialog( item->account(), this );
180 }
181 
182 
183 //=======================================================================================
184 
185 
186 KNode::NntpAccountConfDialog::NntpAccountConfDialog( KNNntpAccount *a, QWidget *parent ) :
187  KPageDialog( parent ),
188  mAccount( a ),
189  mUseServerForName( false )
190 {
191  if ( a->id() != -1 )
192  setCaption( i18n("Properties of %1", a->name()) );
193  else
194  setCaption( i18n("New Account") );
195  setFaceType( Tabbed );
196  setButtons( Ok | Cancel | Help );
197  setDefaultButton( Ok );
198 
199  // server config tab
200  QFrame* page = new QFrame( this );
201  addPage( page, i18n("Ser&ver") );
202  setupUi( page );
203 
204  mName->setText( a->name() );
205  mServer->setText( a->server() );
206  mPort->setValue( a->port() );
207 #ifndef Q_WS_WIN
208 // don't know how to set this in KDE4, where no related methods exists
209  mPort->setSliderEnabled( false );
210 #endif
211  mFetchDesc->setChecked( a->fetchDescriptions() );
212 
213  connect( mServer, SIGNAL(textChanged(QString)),
214  this, SLOT(slotServerTextEdited()) );
215  connect( mServer, SIGNAL(editingFinished()),
216  this, SLOT(slotEditingFinished()) );
217 
218  mLogin->setChecked( a->needsLogon() );
219  mUser->setText( a->user() );
220 
221  connect( knGlobals.accountManager(), SIGNAL(passwordsChanged()), SLOT(slotPasswordChanged()) );
222  if ( a->readyForLogin() )
223  mPassword->setText( a->pass() );
224  else
225  if ( a->needsLogon() )
226  knGlobals.accountManager()->loadPasswordsAsync();
227 
228  switch ( mAccount->encryption() ) {
229  case KNServerInfo::None:
230  mEncNone->setChecked( true );
231  break;
232  case KNServerInfo::SSL:
233  mEncSSL->setChecked( true );
234  break;
235  case KNServerInfo::TLS:
236  mEncTLS->setChecked( true );
237  break;
238  }
239  connect( mEncNone, SIGNAL(toggled(bool)),
240  this, SLOT(encryptionChanged(bool)) );
241  connect( mEncSSL, SIGNAL(toggled(bool)),
242  this, SLOT(encryptionChanged(bool)) );
243  connect( mEncTLS, SIGNAL(toggled(bool)),
244  this, SLOT(encryptionChanged(bool)) );
245 
246 
247  mIntervalChecking->setChecked( a->intervalChecking() );
248  mInterval->setValue( a->checkInterval() );
249  mInterval->setSuffix(ki18np(" minute", " minutes"));
250 
251  // identity tab
252  mIdentityWidget = new KNode::IdentityWidget( a, knGlobals.componentData(), this );
253  addPage( mIdentityWidget, i18n("&Identity") );
254 
255  // per server cleanup configuration
256  mCleanupWidget = new GroupCleanupWidget( a->cleanupConfig(), this );
257  addPage( mCleanupWidget, i18n("&Cleanup") );
258  mCleanupWidget->load();
259 
260  KNHelper::restoreWindowSize("accNewsPropDLG", this, sizeHint());
261 
262  setHelp("anc-setting-the-news-account");
263 }
264 
265 
266 KNode::NntpAccountConfDialog::~NntpAccountConfDialog()
267 {
268  KNHelper::saveWindowSize("accNewsPropDLG", size());
269 }
270 
271 void KNode::NntpAccountConfDialog::slotServerTextEdited()
272 {
273  if ( mName->text().trimmed().isEmpty() ) {
274  mUseServerForName = true;
275  }
276 
277  if ( mUseServerForName ) {
278  mName->setText( mServer->text() );
279  }
280 }
281 
282 void KNode::NntpAccountConfDialog::slotEditingFinished()
283 {
284  mUseServerForName = false;
285 }
286 
287 void KNode::NntpAccountConfDialog::slotButtonClicked( int button )
288 {
289  if ( button == KDialog::Ok ) {
290  if ( mName->text().isEmpty() || mServer->text().trimmed().isEmpty() ) {
291  KMessageBox::sorry(this, i18n("Please enter an arbitrary name for the account and the\nhostname of the news server."));
292  return;
293  }
294 
295  mAccount->setName( mName->text() );
296  mAccount->setServer( mServer->text().trimmed().remove(QLatin1String("news://")) );
297  mAccount->setPort( mPort->value() );
298  mAccount->setFetchDescriptions( mFetchDesc->isChecked() );
299  mAccount->setNeedsLogon( mLogin->isChecked() );
300  mAccount->setUser( mUser->text() );
301  mAccount->setPass( mPassword->text() );
302 
303  if ( mEncNone->isChecked() )
304  mAccount->setEncryption( KNServerInfo::None );
305  if ( mEncSSL->isChecked() )
306  mAccount->setEncryption( KNServerInfo::SSL );
307  if ( mEncTLS->isChecked() )
308  mAccount->setEncryption( KNServerInfo::TLS );
309 
310  mAccount->setIntervalChecking( mIntervalChecking->isChecked() );
311  mAccount->setCheckInterval( mInterval->value() );
312 
313  if ( mAccount->id() != -1 ) // only save if account has a valid id
314  mAccount->writeConfig();
315 
316  mIdentityWidget->save();
317  mCleanupWidget->save();
318 
319  accept();
320  } else {
321  KDialog::slotButtonClicked( button );
322  }
323 }
324 
325 
326 void KNode::NntpAccountConfDialog::slotPasswordChanged()
327 {
328  if ( mPassword->text().isEmpty() )
329  mPassword->setText( mAccount->pass() );
330 }
331 
332 
333 void KNode::NntpAccountConfDialog::encryptionChanged( bool checked )
334 {
335  if ( checked ) { // All 3 buttons are connected to this slot, so only the checked one is taken into account.
336  if ( mEncNone->isChecked() ) {
337  mPort->setValue( DEFAULT_NNTP_PORT );
338  } else if ( mEncSSL->isChecked() || mEncTLS->isChecked() ) {
339  mPort->setValue( DEFAULT_NNTPS_PORT );
340  }
341  }
342 }
343 
344 
345 //END: NNTP account configuration widgets ------------------------------------
346 
347 //===================================================================================
348 
349 KNode::AppearanceWidget::ColorListItem::ColorListItem( const QString &text, const QColor &color, QListWidget *parent ) :
350  QListWidgetItem( text, parent )
351 {
352  setColor( color );
353 }
354 
355 
356 void KNode::AppearanceWidget::ColorListItem::setColor( const QColor &color )
357 {
358  mColor = color;
359  int height = QFontMetrics( font() ).height();
360  QPixmap icon( height, height );
361  QPainter p( &icon );
362  p.setPen( Qt::black );
363  p.drawRect( 0, 0, height - 1, height - 1 );
364  p.fillRect( 1, 1, height - 2, height - 2, color );
365  setIcon( icon );
366  if ( listWidget() )
367  listWidget()->update();
368 }
369 
370 
371 //===================================================================================
372 
373 
374 KNode::AppearanceWidget::FontListItem::FontListItem( const QString &text, const QFont &font, QListWidget *parent ) :
375  QListWidgetItem( parent ),
376  mText( text )
377 {
378  setFont( font );
379 }
380 
381 
382 void KNode::AppearanceWidget::FontListItem::setFont( const QFont &font )
383 {
384  mFont = font;
385  setText( QString("[%1 %2] %3").arg( mFont.family() ).arg( mFont.pointSize() ).arg( mText ) );
386  if ( listWidget() )
387  listWidget()->update();
388 }
389 
390 
391 //===================================================================================
392 
393 
394 KNode::AppearanceWidget::AppearanceWidget( const KComponentData &inst, QWidget *parent ) :
395  KCModule(inst, parent )
396 {
397  QGridLayout *topL = new QGridLayout( this );
398 
399  //color-list
400  mColorList = new QListWidget( this );
401  topL->addWidget( mColorList, 1, 0, 3, 2 );
402  connect( mColorList, SIGNAL(itemActivated(QListWidgetItem*)), SLOT(slotColItemActivated(QListWidgetItem*)) );
403  connect( mColorList, SIGNAL(itemSelectionChanged()), SLOT(slotColSelectionChanged()) );
404 
405  c_olorCB = new QCheckBox(i18n("&Use custom colors"),this);
406  c_olorCB->setObjectName( "kcfg_useCustomColors" );
407  topL->addWidget( c_olorCB, 0, 0, 1, 3 );
408  connect(c_olorCB, SIGNAL(toggled(bool)), this, SLOT(slotColCheckBoxToggled(bool)));
409 
410  c_olChngBtn = new QPushButton( i18nc( "@action:button Run a color selection dialog", "Cha&nge..." ), this );
411  connect(c_olChngBtn, SIGNAL(clicked()), this, SLOT(slotColChangeBtnClicked()));
412  topL->addWidget( c_olChngBtn, 1, 2, 1, 1 );
413 
414  //font-list
415  mFontList = new QListWidget( this );
416  topL->addWidget( mFontList, 5, 0, 3, 2 );
417  connect( mFontList, SIGNAL(itemActivated(QListWidgetItem*)), SLOT(slotFontItemActivated(QListWidgetItem*)) );
418  connect( mFontList, SIGNAL(itemSelectionChanged()), SLOT(slotFontSelectionChanged()) );
419 
420  f_ontCB = new QCheckBox(i18n("Use custom &fonts"),this);
421  f_ontCB->setObjectName( "kcfg_useCustomFonts" );
422  topL->addWidget(f_ontCB , 4, 0, 1, 3 );
423  connect(f_ontCB, SIGNAL(toggled(bool)), this, SLOT(slotFontCheckBoxToggled(bool)));
424 
425  f_ntChngBtn = new QPushButton( i18nc( "@action:button Run a font selection dialog", "Chang&e..."), this);
426  connect(f_ntChngBtn, SIGNAL(clicked()), this, SLOT(slotFontChangeBtnClicked()));
427  topL->addWidget( f_ntChngBtn, 5, 2, 1, 1 );
428 
429  topL->setColumnStretch( 0, 1 );
430 
431  addConfig( knGlobals.settings(), this );
432  load();
433 }
434 
435 
436 void KNode::AppearanceWidget::load()
437 {
438  KCModule::load();
439 
440  slotColCheckBoxToggled( c_olorCB->isChecked() );
441  slotFontCheckBoxToggled( f_ontCB->isChecked() );
442 
443  KConfigSkeletonItem::List items = knGlobals.settings()->items();
444  mColorList->clear();
445  for ( KConfigSkeletonItem::List::Iterator it = items.begin(); it != items.end(); ++it ) {
446  KConfigSkeleton::ItemColor *item = dynamic_cast<KConfigSkeleton::ItemColor*>( *it );
447  if ( item )
448  mColorList->addItem( new ColorListItem( item->label(), item->value() ) );
449  }
450 
451  mFontList->clear();
452  for ( KConfigSkeletonItem::List::Iterator it = items.begin(); it != items.end(); ++it ) {
453  KConfigSkeleton::ItemFont *item = dynamic_cast<KConfigSkeleton::ItemFont*>( *it );
454  if ( item )
455  mFontList->addItem( new FontListItem( item->label(), item->value() ) );
456  }
457 }
458 
459 
460 void KNode::AppearanceWidget::save()
461 {
462  KConfigSkeletonItem::List items = knGlobals.settings()->items();
463  int row = 0;
464  for ( KConfigSkeletonItem::List::Iterator it = items.begin(); it != items.end(); ++it ) {
465  KConfigSkeleton::ItemColor *item = dynamic_cast<KConfigSkeleton::ItemColor*>( *it );
466  if ( !item )
467  continue;
468  item->setValue( static_cast<ColorListItem*>( mColorList->item( row ) )->color() );
469  ++row;
470  }
471 
472  row = 0;
473  for ( KConfigSkeletonItem::List::Iterator it = items.begin(); it != items.end(); ++it ) {
474  KConfigSkeleton::ItemFont *item = dynamic_cast<KConfigSkeleton::ItemFont*>( *it );
475  if ( !item )
476  continue;
477  item->setValue( static_cast<FontListItem*>( mFontList->item( row ) )->font() );
478  ++row;
479  }
480 
481  KCModule::save();
482 
483  knGlobals.configManager()->appearance()->recreateLVIcons();
484 }
485 
486 
487 void KNode::AppearanceWidget::defaults()
488 {
489  KCModule::defaults();
490 
491  KConfigSkeletonItem::List items = knGlobals.settings()->items();
492  int row = 0;
493  for ( KConfigSkeletonItem::List::Iterator it = items.begin(); it != items.end(); ++it ) {
494  KConfigSkeleton::ItemColor *item = dynamic_cast<KConfigSkeleton::ItemColor*>( *it );
495  if ( !item )
496  continue;
497  item->setDefault();
498  static_cast<ColorListItem*>( mColorList->item( row ) )->setColor( item->value() );
499  ++row;
500  }
501 
502  row = 0;
503  for ( KConfigSkeletonItem::List::Iterator it = items.begin(); it != items.end(); ++it ) {
504  KConfigSkeleton::ItemFont *item = dynamic_cast<KConfigSkeleton::ItemFont*>( *it );
505  if ( !item )
506  continue;
507  item->setDefault();
508  static_cast<FontListItem*>( mFontList->item( row ) )->setFont( item->value() );
509  ++row;
510  }
511 
512  emit changed(true);
513 }
514 
515 
516 void KNode::AppearanceWidget::slotColCheckBoxToggled(bool b)
517 {
518  mColorList->setEnabled( b );
519  c_olChngBtn->setEnabled( b && mColorList->currentItem() );
520  if (b) mColorList->setFocus();
521 }
522 
523 
524 // show color dialog for the entry
525 void KNode::AppearanceWidget::slotColItemActivated( QListWidgetItem *item )
526 {
527  if ( item ) {
528  ColorListItem *colorItem = static_cast<ColorListItem*>( item );
529  QColor col = colorItem->color();
530  int result = KColorDialog::getColor(col,this);
531 
532  if (result == KColorDialog::Accepted) {
533  colorItem->setColor(col);
534  }
535  }
536  emit changed(true);
537 }
538 
539 
540 void KNode::AppearanceWidget::slotColChangeBtnClicked()
541 {
542  if ( mColorList->currentItem() )
543  slotColItemActivated( mColorList->currentItem() );
544 }
545 
546 
547 void KNode::AppearanceWidget::slotColSelectionChanged()
548 {
549  c_olChngBtn->setEnabled( mColorList->currentItem() );
550 }
551 
552 
553 void KNode::AppearanceWidget::slotFontCheckBoxToggled(bool b)
554 {
555  mFontList->setEnabled( b );
556  f_ntChngBtn->setEnabled( b && mFontList->currentItem() );
557  if (b) mFontList->setFocus();
558 }
559 
560 
561 // show font dialog for the entry
562 void KNode::AppearanceWidget::slotFontItemActivated( QListWidgetItem *item )
563 {
564  if ( item ) {
565  FontListItem *fontItem = static_cast<FontListItem*>( item );
566  QFont font = fontItem->font();
567  const int result = KFontDialog::getFont( font ,
568  KFontChooser::NoDisplayFlags, this );
569 
570  if (result == KFontDialog::Accepted)
571  fontItem->setFont(font);
572  }
573  emit changed(true);
574 }
575 
576 
577 void KNode::AppearanceWidget::slotFontChangeBtnClicked()
578 {
579  if ( mFontList->currentItem() )
580  slotFontItemActivated( mFontList->currentItem() );
581 }
582 
583 
584 void KNode::AppearanceWidget::slotFontSelectionChanged()
585 {
586  f_ntChngBtn->setEnabled( mFontList->currentItem() );
587 }
588 
589 
590 //=============================================================================================
591 
592 
593 KNode::ReadNewsGeneralWidget::ReadNewsGeneralWidget( const KComponentData &inst, QWidget *parent ) :
594  KCModule( inst, parent )
595 {
596  setupUi( this );
597  addConfig( knGlobals.settings(), this );
598  load();
599 }
600 
601 
602 void KNode::ReadNewsGeneralWidget::load()
603 {
604  KCModule::load();
605  switch ( knGlobals.settings()->dateFormat() ) {
606  case KMime::DateFormatter::CTime: mStandardDateFormat->setChecked( true ); break;
607  case KMime::DateFormatter::Localized: mLocalizedDateFormat->setChecked( true ); break;
608  case KMime::DateFormatter::Fancy: mFancyDateFormat->setChecked( true ); break;
609  case KMime::DateFormatter::Custom: mCustomDateFormat->setChecked( true ); break;
610  case KMime::DateFormatter::Iso: break; // not used
611  case KMime::DateFormatter::Rfc: break; // not used
612 
613  }
614 }
615 
616 void KNode::ReadNewsGeneralWidget::save()
617 {
618  if ( mStandardDateFormat->isChecked() )
619  knGlobals.settings()->setDateFormat( KMime::DateFormatter::CTime );
620  if ( mLocalizedDateFormat->isChecked() )
621  knGlobals.settings()->setDateFormat( KMime::DateFormatter::Localized );
622  if ( mFancyDateFormat->isChecked() )
623  knGlobals.settings()->setDateFormat( KMime::DateFormatter::Fancy );
624  if ( mCustomDateFormat->isChecked() )
625  knGlobals.settings()->setDateFormat( KMime::DateFormatter::Custom );
626  KCModule::save();
627 }
628 
629 //=============================================================================================
630 
631 
632 KNode::ReadNewsNavigationWidget::ReadNewsNavigationWidget( const KComponentData &inst, QWidget *parent ) :
633  KCModule( inst, parent )
634 {
635  KNode::Ui::ReadNewsNavigationWidgetBase ui;
636  ui.setupUi( this );
637  addConfig( knGlobals.settings(), this );
638  load();
639 }
640 
641 
642 //=============================================================================================
643 
644 
645 KNode::ReadNewsViewerWidget::ReadNewsViewerWidget( const KComponentData &inst, QWidget *parent ) :
646  KCModule( inst, parent )
647 {
648  KNode::Ui::ReadNewsViewerWidgetBase ui;
649  ui.setupUi( this );
650  addConfig( knGlobals.settings(), this );
651  load();
652 }
653 
654 
655 //=============================================================================================
656 
657 
658 KNode::DisplayedHeadersWidget::DisplayedHeadersWidget( DisplayedHeaders *d, const KComponentData &inst, QWidget *parent ) :
659  KCModule( inst, parent ),
660  s_ave( false ),
661  d_ata( d )
662 {
663  QGridLayout *topL=new QGridLayout(this);
664  topL->setSpacing(5);
665  topL->setMargin(5);
666 
667  //listbox
668  mHeaderList = new QListWidget( this );
669  connect( mHeaderList, SIGNAL(itemActivated(QListWidgetItem*)), SLOT(slotEditBtnClicked()) );
670  connect( mHeaderList, SIGNAL(itemSelectionChanged()), SLOT(slotSelectionChanged()) );
671  topL->addWidget( mHeaderList, 0, 0, 7, 1);
672 
673  // buttons
674  a_ddBtn = new QPushButton( i18nc( "@action:button Add a new message header field (open dialog)", "&Add..." ), this );
675  connect(a_ddBtn, SIGNAL(clicked()), this, SLOT(slotAddBtnClicked()));
676  topL->addWidget(a_ddBtn, 0,1);
677 
678  d_elBtn = new QPushButton( i18nc( "@action:button Delete a message header field", "&Delete" ), this);
679  connect(d_elBtn, SIGNAL(clicked()), this, SLOT(slotDelBtnClicked()));
680  topL->addWidget(d_elBtn, 1,1);
681 
682  e_ditBtn=new QPushButton(i18nc("modify something","&Edit..."), this);
683  connect(e_ditBtn, SIGNAL(clicked()), this, SLOT(slotEditBtnClicked()));
684  topL->addWidget(e_ditBtn, 2,1);
685 
686  u_pBtn = new QPushButton( i18nc( "@action:button Move an element of a list up", "&Up" ), this );
687  connect(u_pBtn, SIGNAL(clicked()), this, SLOT(slotUpBtnClicked()));
688  topL->addWidget(u_pBtn, 4,1);
689 
690  d_ownBtn = new QPushButton( i18nc( "@action:button Move an element of a list down", "Do&wn" ), this );
691  connect(d_ownBtn, SIGNAL(clicked()), this, SLOT(slotDownBtnClicked()));
692  topL->addWidget(d_ownBtn, 5,1);
693 
694  topL->addItem( new QSpacerItem( 0,20), 3, 0 ); // separate up/down buttons
695  topL->setRowStretch(6,1); // stretch the listbox
696 
697  slotSelectionChanged(); // disable buttons initially
698 
699  load();
700 }
701 
702 
703 
704 void KNode::DisplayedHeadersWidget::load()
705 {
706  mHeaderList->clear();
707  KNDisplayedHeader::List list = d_ata->headers();
708  for ( KNDisplayedHeader::List::Iterator it = list.begin(); it != list.end(); ++it )
709  mHeaderList->addItem( generateItem( (*it) ) );
710 }
711 
712 void KNode::DisplayedHeadersWidget::save()
713 {
714  if(s_ave) {
715  d_ata->setDirty(true);
716  d_ata->save();
717  }
718  s_ave = false;
719 }
720 
721 
722 
723 KNode::DisplayedHeadersWidget::HdrItem* KNode::DisplayedHeadersWidget::generateItem(KNDisplayedHeader *h)
724 {
725  QString text;
726  if(h->hasName()) {
727  text=h->translatedName();
728  text+=": <";
729  } else {
730  text = '<';
731  }
732  text+=h->header();
733  text+='>';
734  return new HdrItem(text,h);
735 }
736 
737 
738 
739 void KNode::DisplayedHeadersWidget::slotSelectionChanged()
740 {
741  int curr = mHeaderList->currentRow();
742  d_elBtn->setEnabled(curr!=-1);
743  e_ditBtn->setEnabled(curr!=-1);
744  u_pBtn->setEnabled(curr>0);
745  d_ownBtn->setEnabled( ( curr != -1 ) && ( curr + 1 != mHeaderList->count() ) );
746 }
747 
748 
749 
750 void KNode::DisplayedHeadersWidget::slotAddBtnClicked()
751 {
752  KNDisplayedHeader *h=d_ata->createNewHeader();
753 
754  DisplayedHeaderConfDialog* dlg=new DisplayedHeaderConfDialog(h, this);
755  if(dlg->exec()) {
756  mHeaderList->addItem( generateItem( h ) );
757  h->createTags();
758  s_ave=true;
759  } else
760  d_ata->remove(h);
761  emit changed(true);
762 }
763 
764 
765 
766 void KNode::DisplayedHeadersWidget::slotDelBtnClicked()
767 {
768  if ( !mHeaderList->currentItem() )
769  return;
770 
771  if(KMessageBox::warningContinueCancel(this, i18n("Really delete this header?"),"",KGuiItem(i18n("&Delete"),"edit-delete"))==KMessageBox::Continue) {
772  KNDisplayedHeader *h = ( static_cast<HdrItem*>( mHeaderList->currentItem() ) )->header();
773  d_ata->remove(h);
774  delete mHeaderList->takeItem( mHeaderList->currentRow() );
775  s_ave=true;
776  }
777  emit changed(true);
778 }
779 
780 
781 
782 void KNode::DisplayedHeadersWidget::slotEditBtnClicked()
783 {
784  if ( !mHeaderList->currentItem() )
785  return;
786  KNDisplayedHeader *h = ( static_cast<HdrItem*>( mHeaderList->currentItem() ) )->header();
787 
788  DisplayedHeaderConfDialog* dlg=new DisplayedHeaderConfDialog(h, this);
789  if(dlg->exec()) {
790  int row = mHeaderList->currentRow();
791  delete mHeaderList->takeItem( row );
792  mHeaderList->insertItem( row, generateItem( h ) );
793  mHeaderList->setCurrentRow( row );
794  h->createTags();
795  s_ave=true;
796  }
797  emit changed(true);
798 }
799 
800 
801 
802 void KNode::DisplayedHeadersWidget::slotUpBtnClicked()
803 {
804  int row = mHeaderList->currentRow();
805  if ( row <= 0 )
806  return;
807 
808  KNDisplayedHeader *h = static_cast<HdrItem*>( mHeaderList->currentItem() )->header();
809 
810  d_ata->up(h);
811  mHeaderList->insertItem( row -1, mHeaderList->takeItem( row ) );
812  mHeaderList->setCurrentRow( row - 1 );
813  s_ave=true;
814  emit changed(true);
815 }
816 
817 
818 
819 void KNode::DisplayedHeadersWidget::slotDownBtnClicked()
820 {
821  int row = mHeaderList->currentRow();
822  if ( row < 0 || row >= mHeaderList->count() )
823  return;
824 
825  KNDisplayedHeader *h = static_cast<HdrItem*>( mHeaderList->currentItem() )->header();
826 
827  d_ata->down(h);
828  mHeaderList->insertItem( row + 1, mHeaderList->takeItem( row ) );
829  mHeaderList->setCurrentRow( row + 1 );
830  s_ave=true;
831  emit changed(true);
832 }
833 
834 
835 //=============================================================================================
836 
837 
838 KNode::DisplayedHeaderConfDialog::DisplayedHeaderConfDialog( KNDisplayedHeader *h, QWidget *parent )
839  : KDialog( parent ),
840  h_dr(h)
841 {
842  setCaption( i18n("Header Properties") );
843  setButtons( Ok | Cancel | Help );
844 
845  QWidget* page=new QWidget( this );
846  setMainWidget( page );
847  QGridLayout *topL=new QGridLayout(page);
848  topL->setSpacing(5);
849  topL->setMargin(0);
850 
851  QWidget *nameW = new QWidget(page);
852  QGridLayout *nameL=new QGridLayout(nameW);
853  nameL->setSpacing(5);
854 
855  h_drC=new KComboBox(true, nameW);
856  h_drC->lineEdit()->setMaxLength(64);
857  connect(h_drC, SIGNAL(activated(int)), this, SLOT(slotActivated(int)));
858  QLabel *label = new QLabel( i18nc( "@label:textbox Edition of a message header name", "H&eader:" ), nameW );
859  label->setBuddy(h_drC);
860  nameL->addWidget(label,0,0);
861  nameL->addWidget(h_drC,0,1);
862 
863  n_ameE=new KLineEdit(nameW);
864 
865  n_ameE->setMaxLength(64);
866  label = new QLabel( i18nc( "@label:textbox Edition of the displayed name in the UI of a message header", "Displayed na&me:" ), nameW );
867  label->setBuddy(n_ameE);
868  nameL->addWidget(label,1,0);
869  nameL->addWidget(n_ameE,1,1);
870  nameL->setColumnStretch(1,1);
871 
872  topL->addWidget(nameW,0,0, 1, 2 );
873 
874  QGroupBox *ngb = new QGroupBox(i18n("Name"), page);
875  // ### hide style settings for now, the new viewer doesn't support this yet
876  ngb->hide();
877  QVBoxLayout *ngbL = new QVBoxLayout(ngb);
878  ngbL->setSpacing(5);
879  ngbL->setMargin(8);
880  ngbL->addSpacing(fontMetrics().lineSpacing()-4);
881  n_ameCB[0]=new QCheckBox(i18n("&Large"), ngb);
882  n_ameCB[1]=new QCheckBox(i18n("&Bold"), ngb);
883  n_ameCB[2]=new QCheckBox(i18n("&Italic"), ngb);
884  n_ameCB[3]=new QCheckBox(i18n("&Underlined"), ngb);
885  for( int i = 0 ; i < 4 ; ++i) {
886  ngbL->addWidget( n_ameCB[i] );
887  }
888  topL->addWidget(ngb,1,0);
889 
890  QGroupBox *vgb=new QGroupBox(i18n("Value"), page);
891  // ### hide style settings for now, the new viewer doen't support this yet
892  vgb->hide();
893  QVBoxLayout *vgbL = new QVBoxLayout(vgb);
894  vgbL->setSpacing(5);
895  vgbL->setMargin(8);
896  vgbL->addSpacing(fontMetrics().lineSpacing()-4);
897  v_alueCB[0]=new QCheckBox(i18n("L&arge"), vgb);
898  v_alueCB[1]=new QCheckBox(i18n("Bol&d"), vgb);
899  v_alueCB[2]=new QCheckBox(i18n("I&talic"), vgb);
900  v_alueCB[3]=new QCheckBox(i18n("U&nderlined"), vgb);
901  for( int i = 0 ; i < 4 ; ++i) {
902  vgbL->addWidget( v_alueCB[i] );
903  }
904  topL->addWidget(vgb,1,1);
905 
906  topL->setColumnStretch(0,1);
907  topL->setColumnStretch(1,1);
908 
909  // preset values...
910  h_drC->addItems( KNDisplayedHeader::predefs() );
911  h_drC->lineEdit()->setText(h->header());
912  n_ameE->setText(h->translatedName());
913  for(int i=0; i<4; ++i) {
914  n_ameCB[i]->setChecked(h->flag(i));
915  v_alueCB[i]->setChecked(h->flag(i+4));
916  }
917 
918  setFixedHeight(sizeHint().height());
919  KNHelper::restoreWindowSize("accReadHdrPropDLG", this, sizeHint());
920 
921  connect(n_ameE, SIGNAL(textChanged(QString)), SLOT(slotNameChanged(QString)));
922 
923  setHelp("anc-knode-headers");
924  slotNameChanged( n_ameE->text() );
925  connect(this,SIGNAL(okClicked()),SLOT(slotOk()));
926 }
927 
928 
929 KNode::DisplayedHeaderConfDialog::~DisplayedHeaderConfDialog()
930 {
931  KNHelper::saveWindowSize("accReadHdrPropDLG", size());
932 }
933 
934 
935 void KNode::DisplayedHeaderConfDialog::slotOk()
936 {
937  h_dr->setHeader(h_drC->currentText());
938  h_dr->setTranslatedName(n_ameE->text());
939  for(int i=0; i<4; ++i) {
940  if(h_dr->hasName())
941  h_dr->setFlag(i, n_ameCB[i]->isChecked());
942  else
943  h_dr->setFlag(i,false);
944  h_dr->setFlag(i+4, v_alueCB[i]->isChecked());
945  }
946  accept();
947 }
948 
949 
950 // the user selected one of the presets, insert the *translated* string as display name:
951 void KNode::DisplayedHeaderConfDialog::slotActivated(int pos)
952 {
953  n_ameE->setText(i18n(h_drC->itemText(pos).toLocal8Bit())); // I think it's save here, the combobox has only english defaults
954 }
955 
956 
957 // disable the name format options when the name is empty
958 void KNode::DisplayedHeaderConfDialog::slotNameChanged(const QString& str)
959 {
960  for(int i=0; i<4; ++i)
961  n_ameCB[i]->setEnabled(!str.isEmpty());
962 }
963 
964 //=============================================================================================
965 
966 
967 KNode::ScoringWidget::ScoringWidget( const KComponentData &inst, QWidget *parent ) :
968  KCModule( inst, parent )
969 {
970  QGridLayout *topL = new QGridLayout(this);
971  topL->setSpacing(5);
972  topL->setMargin(5);
973  mKsc = new KScoringEditorWidget( knGlobals.scoringManager(), this );
974  topL->addWidget( mKsc, 0, 0, 1, 2 );
975 
976  topL->addItem( new QSpacerItem( 0, 10), 1, 0 );
977 
978  mIgnored = new KIntSpinBox( -100000, 100000, 1, 0, this );
979  mIgnored->setObjectName( "kcfg_ignoredThreshold" );
980  QLabel *l = new QLabel( i18n("Default score for &ignored threads:"), this );
981  l->setBuddy( mIgnored );
982  topL->addWidget(l, 2, 0);
983  topL->addWidget( mIgnored, 2, 1 );
984 
985  mWatched = new KIntSpinBox( -100000, 100000, 1, 0, this );
986  mWatched->setObjectName( "kcfg_watchedThreshold" );
987  l = new QLabel( i18n("Default score for &watched threads:"), this );
988  l->setBuddy( mWatched );
989  topL->addWidget(l, 3, 0);
990  topL->addWidget( mWatched, 3, 1);
991 
992  topL->setColumnStretch(0, 1);
993 
994  addConfig( knGlobals.settings(), this );
995  load();
996 }
997 
998 
999 //=============================================================================================
1000 
1001 
1002 KNode::FilterListWidget::FilterListWidget( const KComponentData &inst, QWidget *parent ) :
1003  KCModule( inst, parent ),
1004  f_ilManager( knGlobals.filterManager() )
1005 {
1006  QGridLayout *topL=new QGridLayout(this);
1007  topL->setSpacing(5);
1008  topL->setMargin(5);
1009 
1010  // == Filters =================================================
1011 
1012  mFilterList = new QListWidget( this );
1013  QLabel *label = new QLabel( i18nc("@title", "&Filters:" ), this );
1014  label->setBuddy(mFilterList);
1015  topL->addWidget( label, 0, 0 );
1016 
1017  connect( mFilterList, SIGNAL(itemSelectionChanged()), SLOT(slotSelectionChangedFilter()) );
1018  connect( mFilterList, SIGNAL(itemActivated(QListWidgetItem*)), SLOT(slotEditBtnClicked()) );
1019  topL->addWidget( mFilterList, 1, 0, 5, 1);
1020 
1021  a_ddBtn = new QPushButton( i18nc("@action:button Add a new filter", "&Add..." ), this );
1022  connect(a_ddBtn, SIGNAL(clicked()), this, SLOT(slotAddBtnClicked()));
1023  topL->addWidget(a_ddBtn,1,1);
1024 
1025  e_ditBtn=new QPushButton(i18nc("modify something","&Edit..."), this);
1026  connect(e_ditBtn, SIGNAL(clicked()), this, SLOT(slotEditBtnClicked()));
1027  topL->addWidget(e_ditBtn,2,1);
1028 
1029  c_opyBtn = new QPushButton( i18nc( "@action:button Copy a filter", "Co&py..."), this);
1030  connect(c_opyBtn, SIGNAL(clicked()), this, SLOT(slotCopyBtnClicked()));
1031  topL->addWidget(c_opyBtn,3,1);
1032 
1033  d_elBtn = new QPushButton( i18nc( "@action:button Delete a filter", "&Delete"), this);
1034  connect(d_elBtn, SIGNAL(clicked()), this, SLOT(slotDelBtnClicked()));
1035  topL->addWidget(d_elBtn,4,1);
1036 
1037  // == Menu ====================================================
1038 
1039  mMenuList = new QListWidget( this );
1040  label = new QLabel( i18nc( "@title", "&Menu:"), this );
1041  label->setBuddy(mMenuList);
1042  topL->addWidget( label, 6, 0 );
1043 
1044  connect( mMenuList, SIGNAL(itemSelectionChanged()), SLOT(slotSelectionChangedMenu()) );
1045  topL->addWidget( mMenuList, 7, 0, 5, 1);
1046 
1047  u_pBtn = new QPushButton( i18nc( "@action:button move something up in a list", "&Up"), this );
1048  connect(u_pBtn, SIGNAL(clicked()), this, SLOT(slotUpBtnClicked()));
1049  topL->addWidget(u_pBtn,7,1);
1050 
1051  d_ownBtn = new QPushButton( i18nc( "@action:button move something down in a list", "Do&wn"), this );
1052  connect(d_ownBtn, SIGNAL(clicked()), this, SLOT(slotDownBtnClicked()));
1053  topL->addWidget(d_ownBtn,8,1);
1054 
1055  s_epAddBtn = new QPushButton( i18nc( "@action:button", "Add\n&Separator" ), this );
1056  connect(s_epAddBtn, SIGNAL(clicked()), this, SLOT(slotSepAddBtnClicked()));
1057  topL->addWidget(s_epAddBtn,9,1);
1058 
1059  s_epRemBtn = new QPushButton( i18nc( "@action:button", "&Remove\nSeparator" ), this );
1060  connect(s_epRemBtn, SIGNAL(clicked()), this, SLOT(slotSepRemBtnClicked()));
1061  topL->addWidget(s_epRemBtn,10,1);
1062 
1063  topL->setRowStretch(5,1);
1064  topL->setRowStretch(11,1);
1065 
1066  a_ctive = SmallIcon("view-filter",16);
1067  d_isabled = SmallIcon("view-filter",16,KIconLoader::DisabledState);
1068 
1069  load();
1070 
1071  slotSelectionChangedFilter();
1072  slotSelectionChangedMenu();
1073 }
1074 
1075 
1076 KNode::FilterListWidget::~FilterListWidget()
1077 {
1078  f_ilManager->endConfig();
1079 }
1080 
1081 
1082 void KNode::FilterListWidget::load()
1083 {
1084  mFilterList->clear();
1085  mMenuList->clear();
1086  f_ilManager->startConfig(this);
1087 }
1088 
1089 void KNode::FilterListWidget::save()
1090 {
1091  f_ilManager->commitChanges();
1092 }
1093 
1094 
1095 void KNode::FilterListWidget::addItem(KNArticleFilter *f)
1096 {
1097  FilterListItem *item = new FilterListItem( f , f->translatedName() );
1098  if(f->isEnabled())
1099  item->setIcon( a_ctive );
1100  else
1101  item->setIcon( d_isabled );
1102  mFilterList->addItem( item );
1103  slotSelectionChangedFilter();
1104  emit changed(true);
1105 }
1106 
1107 
1108 void KNode::FilterListWidget::removeItem(KNArticleFilter *f)
1109 {
1110  int i = findItem( mFilterList, f );
1111  if ( i >= 0 )
1112  delete mFilterList->takeItem( i );
1113  slotSelectionChangedFilter();
1114  emit changed(true);
1115 }
1116 
1117 
1118 void KNode::FilterListWidget::updateItem(KNArticleFilter *f)
1119 {
1120  int i = findItem( mFilterList, f );
1121 
1122  if ( i >= 0 ) {
1123  FilterListItem *item = static_cast<FilterListItem*>( mFilterList->item( i ) );
1124  item->setText( f->translatedName() );
1125  if ( f->isEnabled() ) {
1126  item->setIcon( a_ctive );
1127  i = findItem( mMenuList, f );
1128  if ( i >= 0 )
1129  mMenuList->item( i )->setText( f->translatedName() );
1130  } else
1131  item->setIcon( d_isabled );
1132  }
1133  slotSelectionChangedFilter();
1134  emit changed(true);
1135 }
1136 
1137 
1138 void KNode::FilterListWidget::addMenuItem(KNArticleFilter *f)
1139 {
1140  if (f) {
1141  if ( findItem( mMenuList, f) < 0 )
1142  mMenuList->addItem( new FilterListItem( f, f->translatedName() ) );
1143  } else // separator
1144  mMenuList->addItem( new FilterListItem( 0, "===" ) );
1145  slotSelectionChangedMenu();
1146  emit changed(true);
1147 }
1148 
1149 
1150 void KNode::FilterListWidget::removeMenuItem(KNArticleFilter *f)
1151 {
1152  int i = findItem( mMenuList, f );
1153  if ( i >= 0 )
1154  delete mMenuList->takeItem( i );
1155  slotSelectionChangedMenu();
1156  emit changed(true);
1157 }
1158 
1159 
1160 QList<int> KNode::FilterListWidget::menuOrder()
1161 {
1162  KNArticleFilter *f;
1163  QList<int> lst;
1164 
1165  for( int i = 0; i < mMenuList->count(); ++i ) {
1166  f = static_cast<FilterListItem*>( mMenuList->item( i ) )->filter();
1167  if ( f )
1168  lst << f->id();
1169  else
1170  lst << -1;
1171  }
1172  return lst;
1173 }
1174 
1175 
1176 int KNode::FilterListWidget::findItem( QListWidget *l, KNArticleFilter *f )
1177 {
1178  for ( int i = 0; i < l->count(); ++i )
1179  if ( static_cast<FilterListItem*>( l->item( i ) )->filter() == f )
1180  return i;
1181  return -1;
1182 }
1183 
1184 
1185 void KNode::FilterListWidget::slotAddBtnClicked()
1186 {
1187  f_ilManager->newFilter();
1188 }
1189 
1190 
1191 void KNode::FilterListWidget::slotDelBtnClicked()
1192 {
1193  if ( mFilterList->currentItem() )
1194  f_ilManager->deleteFilter( static_cast<FilterListItem*>( mFilterList->currentItem() )->filter() );
1195 }
1196 
1197 
1198 void KNode::FilterListWidget::slotEditBtnClicked()
1199 {
1200  if ( mFilterList->currentItem() )
1201  f_ilManager->editFilter( static_cast<FilterListItem*>( mFilterList->currentItem() )->filter() );
1202 }
1203 
1204 
1205 void KNode::FilterListWidget::slotCopyBtnClicked()
1206 {
1207  if ( mFilterList->currentItem() )
1208  f_ilManager->copyFilter( static_cast<FilterListItem*>( mFilterList->currentItem() )->filter() );
1209 }
1210 
1211 
1212 void KNode::FilterListWidget::slotUpBtnClicked()
1213 {
1214  int row = mMenuList->currentRow();
1215  if ( row <= 0)
1216  return;
1217  mMenuList->insertItem( row - 1, mMenuList->takeItem( row ) );
1218  mMenuList->setCurrentRow( row - 1 );
1219  emit changed(true);
1220 }
1221 
1222 
1223 void KNode::FilterListWidget::slotDownBtnClicked()
1224 {
1225  int row = mMenuList->currentRow();
1226  if ( row < 0 || row > mMenuList->count() - 1 )
1227  return;
1228  mMenuList->insertItem( row + 1, mMenuList->takeItem( row ) );
1229  mMenuList->setCurrentRow( row + 1 );
1230  emit changed(true);
1231 }
1232 
1233 
1234 void KNode::FilterListWidget::slotSepAddBtnClicked()
1235 {
1236  mMenuList->insertItem( mMenuList->currentRow(), new FilterListItem( 0, "===" ) );
1237  slotSelectionChangedMenu();
1238  emit changed(true);
1239 }
1240 
1241 
1242 void KNode::FilterListWidget::slotSepRemBtnClicked()
1243 {
1244  FilterListItem *item = static_cast<FilterListItem*>( mMenuList->currentItem() );
1245  if ( item && item->filter() == 0 )
1246  delete item;
1247  slotSelectionChangedMenu();
1248  emit changed(true);
1249 }
1250 
1251 
1252 void KNode::FilterListWidget::slotSelectionChangedFilter()
1253 {
1254  QListWidgetItem *item = mFilterList->currentItem();
1255 
1256  d_elBtn->setEnabled( item );
1257  e_ditBtn->setEnabled( item );
1258  c_opyBtn->setEnabled( item );
1259 }
1260 
1261 
1262 void KNode::FilterListWidget::slotSelectionChangedMenu()
1263 {
1264  int current = mMenuList->currentRow();
1265 
1266  u_pBtn->setEnabled( current > 0 );
1267  d_ownBtn->setEnabled( current >= 0 && ( current < mMenuList->count() - 1 ) );
1268  s_epRemBtn->setEnabled( current >= 0 && ( static_cast<FilterListItem*>( mMenuList->item( current ) )->filter() == 0 ) );
1269 }
1270 
1271 
1272 //=============================================================================================
1273 
1274 
1275 KNode::PostNewsTechnicalWidget::PostNewsTechnicalWidget( const KComponentData &inst, QWidget *parent ) :
1276  KCModule( inst, parent )
1277 {
1278  setupUi( this );
1279 
1280  mCharset->addItems( KNode::Utilities::Locale::encodings() );
1281  mEncoding->addItem( i18n("Allow 8-bit") );
1282  mEncoding->addItem( i18n("7-bit (Quoted-Printable)") );
1283 
1284  connect( mHeaderList, SIGNAL(itemActivated(QListWidgetItem*)), SLOT(slotEditBtnClicked()) );
1285  connect( mHeaderList, SIGNAL(itemSelectionChanged()), SLOT(slotSelectionChanged()) );
1286 
1287  connect( mAddButton, SIGNAL(clicked()), SLOT(slotAddBtnClicked()) );
1288  connect( mEditButton, SIGNAL(clicked()), SLOT(slotEditBtnClicked()) );
1289  connect( mDeleteButton, SIGNAL(clicked()), SLOT(slotDelBtnClicked()) );
1290 
1291  addConfig( knGlobals.settings(), this );
1292  load();
1293 
1294  slotSelectionChanged();
1295 }
1296 
1297 
1298 void KNode::PostNewsTechnicalWidget::load()
1299 {
1300  KCModule::load();
1301 
1302  QString charsetDesc = KGlobal::charsets()->descriptionForEncoding( knGlobals.settings()->charset() );
1303  mCharset->setCurrentIndex( mCharset->findText( charsetDesc ) );
1304  mEncoding->setCurrentIndex( knGlobals.settings()->allow8BitBody() ? 0 : 1 );
1305 
1306  mHeaderList->clear();
1307  XHeader::List list = knGlobals.settings()->xHeaders();
1308  for ( XHeader::List::Iterator it = list.begin(); it != list.end(); ++it )
1309  mHeaderList->addItem( (*it).header() );
1310 }
1311 
1312 
1313 void KNode::PostNewsTechnicalWidget::save()
1314 {
1315  QString charset = KGlobal::charsets()->encodingForName( mCharset->currentText() );
1316  knGlobals.settings()->setCharset( charset );
1317  knGlobals.settings()->setAllow8BitBody( mEncoding->currentIndex() == 0 );
1318 
1319  XHeader::List list;
1320  for ( int i = 0; i < mHeaderList->count(); ++i )
1321  list.append( XHeader( mHeaderList->item( i )->text() ) );
1322  knGlobals.settings()->setXHeaders( list );
1323 
1324  KCModule::save();
1325 }
1326 
1327 
1328 void KNode::PostNewsTechnicalWidget::slotSelectionChanged()
1329 {
1330  mDeleteButton->setEnabled( mHeaderList->currentItem() != 0 );
1331  mEditButton->setEnabled( mHeaderList->currentItem() != 0 );
1332 }
1333 
1334 
1335 void KNode::PostNewsTechnicalWidget::slotAddBtnClicked()
1336 {
1337  XHeaderConfDialog *dlg = new XHeaderConfDialog( QString(), this );
1338  if ( dlg->exec() )
1339  mHeaderList->addItem( dlg->result() );
1340 
1341  delete dlg;
1342 
1343  slotSelectionChanged();
1344  emit changed( true );
1345 }
1346 
1347 
1348 void KNode::PostNewsTechnicalWidget::slotDelBtnClicked()
1349 {
1350  QListWidgetItem *item = mHeaderList->currentItem();
1351  if ( !item )
1352  return;
1353  delete item;
1354  slotSelectionChanged();
1355  emit changed( true );
1356 }
1357 
1358 
1359 void KNode::PostNewsTechnicalWidget::slotEditBtnClicked()
1360 {
1361  QListWidgetItem *item = mHeaderList->currentItem();
1362  if ( !item )
1363  return;
1364 
1365  XHeaderConfDialog *dlg = new XHeaderConfDialog( item->text(), this );
1366  if ( dlg->exec() )
1367  item->setText( dlg->result() );
1368 
1369  delete dlg;
1370 
1371  slotSelectionChanged();
1372  emit changed( true );
1373 }
1374 
1375 
1376 //===================================================================================================
1377 
1378 
1379 KNode::XHeaderConfDialog::XHeaderConfDialog( const QString &h, QWidget *parent ) :
1380  KDialog( parent )
1381 {
1382  setCaption( i18n("Additional Header") );
1383  setButtons( Ok | Cancel );
1384 
1385  KHBox* page = new KHBox( this );
1386  setMainWidget( page );
1387 
1388  mNameEdit = new KLineEdit( page );
1389  new QLabel( ":", page );
1390  mValueEdit = new KLineEdit( page );
1391 
1392  int pos = h.indexOf( ": " );
1393  if ( pos != -1 ) {
1394  mNameEdit->setText( h.left( pos ) );
1395  pos += 2;
1396  mValueEdit->setText( h.right( h.length() - pos ) );
1397  }
1398 
1399  setFixedHeight(sizeHint().height());
1400  KNHelper::restoreWindowSize("XHeaderDlg", this, sizeHint());
1401 
1402  mNameEdit->setFocus();
1403 }
1404 
1405 
1406 KNode::XHeaderConfDialog::~XHeaderConfDialog()
1407 {
1408  KNHelper::saveWindowSize("XHeaderDlg", size());
1409 }
1410 
1411 
1412 QString KNode::XHeaderConfDialog::result() const
1413 {
1414  QString value = mValueEdit->text();
1415  // just in case someone pastes a newline
1416  value.replace( '\n', ' ' );
1417  return mNameEdit->text() + ": " + value;
1418 }
1419 
1420 
1421 //===================================================================================================
1422 
1423 
1424 KNode::PostNewsComposerWidget::PostNewsComposerWidget( const KComponentData &inst, QWidget *parent ) :
1425  KCModule( inst, parent )
1426 {
1427  KNode::Ui::PostNewsComposerWidgetBase ui;
1428  ui.setupUi( this );
1429  addConfig( knGlobals.settings(), this );
1430  load();
1431 }
1432 
1433 
1434 //===================================================================================================
1435 
1436 
1437 KNode::PostNewsSpellingWidget::PostNewsSpellingWidget( const KComponentData &inst, QWidget *parent ) :
1438  KCModule( inst, parent )
1439 {
1440  QVBoxLayout *topL=new QVBoxLayout(this);
1441  topL->setSpacing(5);
1442 
1443  c_conf = new Sonnet::ConfigWidget(KNGlobals::self()->config(), this );
1444  topL->addWidget(c_conf);
1445  connect(c_conf, SIGNAL(configChanged()), SLOT(changed()));
1446 
1447  topL->addStretch(1);
1448 }
1449 
1450 
1451 KNode::PostNewsSpellingWidget::~PostNewsSpellingWidget()
1452 {
1453 }
1454 
1455 
1456 void KNode::PostNewsSpellingWidget::save()
1457 {
1458  c_conf->save();
1459 }
1460 
1461 
1462 //==============================================================================================================
1463 
1464 KNode::PrivacyWidget::PrivacyWidget( const KComponentData &inst,QWidget *parent ) :
1465  KCModule(inst, parent )
1466 {
1467  QBoxLayout *topLayout = new QVBoxLayout(this);
1468  topLayout->setSpacing(5);
1469  c_onf = new Kpgp::Config( this, false );
1470  c_onf->setObjectName( "knode pgp config" );
1471  topLayout->addWidget(c_onf);
1472  connect(c_onf, SIGNAL(changed()), SLOT(changed()));
1473 
1474  topLayout->addStretch(1);
1475 
1476  load();
1477 }
1478 
1479 
1480 KNode::PrivacyWidget::~PrivacyWidget()
1481 {
1482 }
1483 
1484 
1485 void KNode::PrivacyWidget::save()
1486 {
1487  c_onf->applySettings();
1488 }
1489 
1490 
1491 //==============================================================================================================
1492 
1493 
1494 //BEGIN: Cleanup configuration widgets ---------------------------------------
1495 
1496 
1497 KNode::GroupCleanupWidget::GroupCleanupWidget( Cleanup *data, QWidget *parent )
1498  : QWidget( parent ), mData( data )
1499 {
1500  QVBoxLayout *top = new QVBoxLayout( this );
1501 
1502  if (!mData->isGlobal()) {
1503  mDefault = new QCheckBox( i18n("&Use global cleanup configuration"), this );
1504  connect( mDefault, SIGNAL(toggled(bool)), SLOT(slotDefaultToggled(bool)) );
1505  top->addWidget( mDefault );
1506  }
1507 
1508  mExpGroup = new QGroupBox( i18n("Newsgroup Cleanup Settings"), this );
1509  top->addWidget( mExpGroup );
1510  QGridLayout *grid = new QGridLayout( mExpGroup );
1511  grid->setSpacing( KDialog::spacingHint() );
1512  grid->setMargin( KDialog::marginHint() );
1513 
1514  grid->setRowMinimumHeight( 0, KDialog::spacingHint() );
1515 
1516  mExpEnabled = new QCheckBox( i18n("&Expire old articles automatically"), mExpGroup );
1517  grid->addWidget( mExpEnabled, 1, 0, 1, 2 );
1518  connect( mExpEnabled, SIGNAL(toggled(bool)), SIGNAL(changed()) );
1519 
1520  mExpDays = new KIntSpinBox( 0, 99999, 1, 0, mExpGroup );
1521  mExpDays->setSuffix(ki18np(" day", " days"));
1522  QLabel *label = new QLabel( i18n("&Purge groups every:"), mExpGroup );
1523  label->setBuddy( mExpDays );
1524  grid->addWidget( label, 2, 0 );
1525  grid->addWidget( mExpDays, 2, 1, Qt::AlignRight );
1526  connect( mExpDays, SIGNAL(valueChanged(int)), SIGNAL(changed()) );
1527  connect( mExpEnabled, SIGNAL(toggled(bool)), label, SLOT(setEnabled(bool)) );
1528  connect( mExpEnabled, SIGNAL(toggled(bool)), mExpDays, SLOT(setEnabled(bool)) );
1529 
1530  mExpReadDays = new KIntSpinBox( 0, 99999, 1, 0, mExpGroup );
1531  mExpReadDays->setSuffix(ki18np(" day", " days"));
1532  label = new QLabel( i18n("&Keep read articles:"), mExpGroup );
1533  label->setBuddy( mExpReadDays );
1534  grid->addWidget( label, 3, 0 );
1535  grid->addWidget( mExpReadDays, 3, 1, Qt::AlignRight );
1536  connect( mExpReadDays, SIGNAL(valueChanged(int)), SIGNAL(changed()) );
1537 
1538  mExpUnreadDays = new KIntSpinBox( 0, 99999, 1, 0, mExpGroup );
1539  mExpUnreadDays->setSuffix(ki18np(" day", " days"));
1540  label = new QLabel( i18n("Keep u&nread articles:"), mExpGroup );
1541  label->setBuddy( mExpUnreadDays );
1542  grid->addWidget( label, 4, 0 );
1543  grid->addWidget( mExpUnreadDays, 4, 1, Qt::AlignRight );
1544  connect( mExpUnreadDays, SIGNAL(valueChanged(int)), SIGNAL(changed()) );
1545 
1546  mExpUnavailable = new QCheckBox( i18n("&Remove articles that are not available on the server"), mExpGroup );
1547  grid->addWidget( mExpUnavailable, 5, 0, 1, 2 );
1548  connect( mExpUnavailable, SIGNAL(toggled(bool)), SIGNAL(changed()) );
1549 
1550  mPreserveThreads = new QCheckBox( i18n("Preser&ve threads"), mExpGroup );
1551  grid->addWidget( mPreserveThreads, 6, 0, 1, 2 );
1552  connect( mPreserveThreads, SIGNAL(toggled(bool)), SIGNAL(changed()) );
1553 
1554  grid->setColumnStretch(1,1);
1555 }
1556 
1557 
1558 void KNode::GroupCleanupWidget::load()
1559 {
1560  if (!mData->isGlobal()) {
1561  mDefault->setChecked( mData->useDefault() );
1562  slotDefaultToggled( mData->useDefault() );
1563  }
1564  mExpEnabled->setChecked( !mData->d_oExpire ); // make sure the toggled(bool) signal is emitted at least once
1565  mExpEnabled->setChecked( mData->d_oExpire );
1566  mExpDays->setValue( mData->e_xpireInterval );
1567  mExpReadDays->setValue( mData->maxAgeForRead() );
1568  mExpUnreadDays->setValue( mData->maxAgeForUnread() );
1569  mExpUnavailable->setChecked( mData->removeUnavailable() );
1570  mPreserveThreads->setChecked( mData->preserveThreads() );
1571 }
1572 
1573 
1574 void KNode::GroupCleanupWidget::save()
1575 {
1576  if (!mData->isGlobal())
1577  mData->setUseDefault( mDefault->isChecked() );
1578  mData->d_oExpire = mExpEnabled->isChecked();
1579  mData->e_xpireInterval = mExpDays->value();
1580  mData->r_eadMaxAge = mExpReadDays->value();
1581  mData->u_nreadMaxAge = mExpUnreadDays->value();
1582  mData->r_emoveUnavailable = mExpUnavailable->isChecked();
1583  mData->p_reserveThr = mPreserveThreads->isChecked();
1584 }
1585 
1586 
1587 void KNode::GroupCleanupWidget::slotDefaultToggled( bool state )
1588 {
1589  mExpGroup->setEnabled( !state );
1590 }
1591 
1592 
1593 KNode::CleanupWidget::CleanupWidget( const KComponentData &inst,QWidget *parent ) :
1594  KCModule(inst, parent ),
1595  d_ata( knGlobals.configManager()->cleanup() )
1596 {
1597  QVBoxLayout *topL=new QVBoxLayout(this);
1598  topL->setSpacing(5);
1599 
1600  mGroupCleanup = new GroupCleanupWidget( d_ata, this );
1601  topL->addWidget( mGroupCleanup );
1602  connect( mGroupCleanup, SIGNAL(changed()), SLOT(changed()) );
1603 
1604  // === folders =========================================================
1605 
1606  QGroupBox *foldersB = new QGroupBox( i18n("Folders"), this );
1607  topL->addWidget(foldersB);
1608  QGridLayout *foldersL = new QGridLayout( foldersB );
1609  foldersL->setSpacing( KDialog::spacingHint() );
1610  foldersL->setMargin( KDialog::marginHint() );
1611 
1612  foldersL->setRowMinimumHeight( 0, KDialog::spacingHint() );
1613 
1614  f_olderCB=new QCheckBox(i18n("Co&mpact folders automatically"), foldersB);
1615  connect(f_olderCB, SIGNAL(toggled(bool)), this, SLOT(slotFolderCBtoggled(bool)));
1616  foldersL->addWidget(f_olderCB,1,0, 1, 2 );
1617 
1618  f_olderDays=new KIntSpinBox( 0, 99999, 1, 0, foldersB );
1619  f_olderDays->setSuffix(ki18np(" day", " days"));
1620  f_olderDaysL=new QLabel(i18n("P&urge folders every:"),foldersB);
1621  f_olderDaysL->setBuddy(f_olderDays);
1622  foldersL->addWidget(f_olderDaysL,2,0);
1623  foldersL->addWidget(f_olderDays,2,1,Qt::AlignRight);
1624  connect(f_olderDays, SIGNAL(valueChanged(int)), SLOT(changed()));
1625 
1626  foldersL->setColumnStretch(1,1);
1627 
1628  topL->addStretch(1);
1629 
1630  load();
1631 }
1632 
1633 
1634 KNode::CleanupWidget::~CleanupWidget()
1635 {
1636 }
1637 
1638 
1639 void KNode::CleanupWidget::load()
1640 {
1641  f_olderCB->setChecked(d_ata->d_oCompact);
1642  slotFolderCBtoggled(d_ata->d_oCompact);
1643  f_olderDays->setValue(d_ata->c_ompactInterval);
1644  mGroupCleanup->load();
1645 }
1646 
1647 
1648 void KNode::CleanupWidget::save()
1649 {
1650  d_ata->d_oCompact=f_olderCB->isChecked();
1651  d_ata->c_ompactInterval=f_olderDays->value();
1652 
1653  mGroupCleanup->save();
1654 
1655  d_ata->setDirty(true);
1656 }
1657 
1658 
1659 void KNode::CleanupWidget::slotFolderCBtoggled(bool b)
1660 {
1661  f_olderDaysL->setEnabled(b);
1662  f_olderDays->setEnabled(b);
1663  emit changed(true);
1664 }
1665 
1666 //END: Cleanup configuration widgets -----------------------------------------
1667 
1668 //------------------------
1669 #include "knconfigwidgets.moc"
1670 
KNode::AppearanceWidget::ColorListItem::setColor
void setColor(const QColor &color)
Sets the current color.
Definition: knconfigwidgets.cpp:356
KNNntpAccount
Represents an account on a news server.
Definition: knnntpaccount.h:56
KNode::NntpAccountConfDialog::slotServerTextEdited
void slotServerTextEdited()
Definition: knconfigwidgets.cpp:271
KNode::IdentityWidget
Configuration widget for an identity.
Definition: identity_widget.h:39
KPageDialog
KNode::FilterListWidget::mMenuList
QListWidget * mMenuList
Definition: knconfigwidgets.h:420
KNode::AppearanceWidget::ColorListItem
Color list view item.
Definition: knconfigwidgets.h:166
KNServerInfo::SSL
Definition: knserverinfo.h:32
KNode::PostNewsSpellingWidget::save
void save()
Definition: knconfigwidgets.cpp:1456
KNode::AppearanceWidget::defaults
virtual void defaults()
Reimplemented from KCModule.
Definition: knconfigwidgets.cpp:487
KNode::FilterListWidget::u_pBtn
QPushButton * u_pBtn
Definition: knconfigwidgets.h:422
KNode::DisplayedHeadersWidget::slotSelectionChanged
void slotSelectionChanged()
Definition: knconfigwidgets.cpp:739
KNode::AppearanceWidget::save
virtual void save()
Reimplemented from KCModule.
Definition: knconfigwidgets.cpp:460
KNode::CleanupWidget::~CleanupWidget
~CleanupWidget()
Definition: knconfigwidgets.cpp:1634
KNHelper::saveWindowSize
static void saveWindowSize(const QString &name, const QSize &s)
Definition: utilities.cpp:205
KNode::GroupCleanupWidget::load
void load()
Definition: knconfigwidgets.cpp:1558
KNode::ReadNewsGeneralWidget::load
virtual void load()
Reimplemented from KCModule.
Definition: knconfigwidgets.cpp:602
KNode::DisplayedHeadersWidget::save
virtual void save()
Reimplemented from KCModule.
Definition: knconfigwidgets.cpp:712
KNode::AppearanceWidget::f_ontCB
QCheckBox * f_ontCB
Definition: knconfigwidgets.h:218
KNDisplayedHeader::header
const QString & header()
Definition: kndisplayedheader.h:44
KNode::Utilities::Locale::encodings
static QStringList encodings()
Returns a list of encodings along with a description.
Definition: locale.cpp:120
KNode::FilterListWidget::mFilterList
QListWidget * mFilterList
Definition: knconfigwidgets.h:419
KNode::XHeaderConfDialog::~XHeaderConfDialog
~XHeaderConfDialog()
Destructor.
Definition: knconfigwidgets.cpp:1406
utilities.h
KNode::FilterListWidget::removeMenuItem
void removeMenuItem(KNArticleFilter *f)
Definition: knconfigwidgets.cpp:1150
KNode::ReadNewsViewerWidget::ReadNewsViewerWidget
ReadNewsViewerWidget(const KComponentData &inst, QWidget *parent=0)
Create a new article viewer configuration page.
Definition: knconfigwidgets.cpp:645
text
virtual QByteArray text(quint32 serialNumber) const =0
KNode::CleanupWidget::slotFolderCBtoggled
void slotFolderCBtoggled(bool b)
Definition: knconfigwidgets.cpp:1659
KNode::NntpAccountListWidget::slotRemoveItem
void slotRemoveItem(KNNntpAccount::Ptr a)
Remove the list view item of the given account.
Definition: knconfigwidgets.cpp:97
KNode::FilterListWidget::slotDownBtnClicked
void slotDownBtnClicked()
Definition: knconfigwidgets.cpp:1223
KNDisplayedHeader::translatedName
QString translatedName()
Definition: kndisplayedheader.cpp:114
QWidget
KNode::DisplayedHeaderConfDialog::DisplayedHeaderConfDialog
DisplayedHeaderConfDialog(KNDisplayedHeader *h, QWidget *parent=0)
Definition: knconfigwidgets.cpp:838
QListWidget
KNHelper::restoreWindowSize
static void restoreWindowSize(const QString &name, QWidget *d, const QSize &defaultSize)
Definition: utilities.cpp:212
knconfigwidgets.h
KNode::DisplayedHeaderConfDialog::h_drC
KComboBox * h_drC
Definition: knconfigwidgets.h:350
KNode::NntpAccountListWidget::load
virtual void load()
Reimplemented from KCModule.
Definition: knconfigwidgets.cpp:77
knaccountmanager.h
KNDisplayedHeader
A header displayed in the article viewer.
Definition: kndisplayedheader.h:23
KNode::NntpAccountListWidget::slotAddItem
void slotAddItem(KNNntpAccount::Ptr a)
Add an list view item for the given account.
Definition: knconfigwidgets.cpp:86
KNode::PostNewsComposerWidget::PostNewsComposerWidget
PostNewsComposerWidget(const KComponentData &inst, QWidget *parent=0)
Create a new composer configuration widget.
Definition: knconfigwidgets.cpp:1424
KNode::PostNewsTechnicalWidget::load
virtual void load()
Reimplemented from KCModule.
Definition: knconfigwidgets.cpp:1298
KNGlobals::self
static KNGlobals * self()
Return the KNGlobals instance.
Definition: knglobals.cpp:72
KDialog
KNode::AppearanceWidget::FontListItem::font
const QFont & font()
Returns the current font.
Definition: knconfigwidgets.h:198
KNode::AppearanceWidget::FontListItem::setFont
void setFont(const QFont &font)
Sets the current font.
Definition: knconfigwidgets.cpp:382
KNode::AppearanceWidget::f_ntChngBtn
QPushButton * f_ntChngBtn
Definition: knconfigwidgets.h:220
identity_widget.h
KNode::FilterListWidget::s_epRemBtn
QPushButton * s_epRemBtn
Definition: knconfigwidgets.h:422
kngroupmanager.h
KNode::GroupCleanupWidget::save
void save()
Definition: knconfigwidgets.cpp:1574
KNServerInfo::user
const QString & user()
Definition: knserverinfo.h:48
knfiltermanager.h
KNServerInfo::needsLogon
bool needsLogon() const
Definition: knserverinfo.h:51
KNode::NntpAccountConfDialog::~NntpAccountConfDialog
~NntpAccountConfDialog()
Definition: knconfigwidgets.cpp:266
KNode::DisplayedHeaderConfDialog::~DisplayedHeaderConfDialog
~DisplayedHeaderConfDialog()
Definition: knconfigwidgets.cpp:929
KNode::Cleanup
Expirery/cleaup settings (globally or per account/group/folder).
Definition: knconfig.h:132
KNode::NntpAccountListWidget::slotDelBtnClicked
void slotDelBtnClicked()
Delete account button has been clicked.
Definition: knconfigwidgets.cpp:156
KNNntpAccount::Ptr
boost::shared_ptr< KNNntpAccount > Ptr
Shared pointer to a KNNntpAccount.
Definition: knnntpaccount.h:62
KNode::NntpAccountListWidget::AccountListItem::account
KNNntpAccount::Ptr account() const
Returns the account assiciated with this item.
Definition: knconfigwidgets.h:80
KNode::AppearanceWidget::FontListItem::FontListItem
FontListItem(const QString &text, const QFont &font, QListWidget *parent=0)
Create a new font list view item.
Definition: knconfigwidgets.cpp:374
KNode::CleanupWidget::load
void load()
Definition: knconfigwidgets.cpp:1639
KNode::AppearanceWidget::mColorList
QListWidget * mColorList
The color selection list.
Definition: knconfigwidgets.h:215
KNDisplayedHeader::createTags
void createTags()
Definition: kndisplayedheader.cpp:160
KNode::FilterListWidget::updateItem
void updateItem(KNArticleFilter *f)
Definition: knconfigwidgets.cpp:1118
KNode::NntpAccountListWidget::slotEditBtnClicked
void slotEditBtnClicked()
Edit account button has been clicked.
Definition: knconfigwidgets.cpp:165
KNServerInfo::encryption
Encryption encryption() const
Definition: knserverinfo.h:54
KNode::PostNewsSpellingWidget::c_conf
Sonnet::ConfigWidget * c_conf
Definition: knconfigwidgets.h:515
KNode::DisplayedHeadersWidget::u_pBtn
QPushButton * u_pBtn
Definition: knconfigwidgets.h:318
KNode::GroupCleanupWidget::changed
void changed()
KNode::DisplayedHeaderConfDialog::slotNameChanged
void slotNameChanged(const QString &)
Definition: knconfigwidgets.cpp:958
knnntpaccount.h
KNServerInfo::TLS
Definition: knserverinfo.h:32
KNode::AppearanceWidget::c_olChngBtn
QPushButton * c_olChngBtn
Definition: knconfigwidgets.h:220
KNCollection::name
virtual const QString & name()
Returns the collection name.
Definition: kncollection.h:76
KNode::NntpAccountListWidget::slotUpdateItem
void slotUpdateItem(KNNntpAccount::Ptr a)
Update the item of the given account.
Definition: knconfigwidgets.cpp:112
KNArticleFilter::translatedName
QString translatedName()
tries to translate the name
Definition: knarticlefilter.cpp:306
KNode::DisplayedHeaderConfDialog::slotActivated
void slotActivated(int)
Definition: knconfigwidgets.cpp:951
KNode::PostNewsSpellingWidget::~PostNewsSpellingWidget
~PostNewsSpellingWidget()
Definition: knconfigwidgets.cpp:1451
KNode::AppearanceWidget::AppearanceWidget
AppearanceWidget(const KComponentData &inst, QWidget *parent=0)
Create a new appearance configuration widget.
Definition: knconfigwidgets.cpp:394
KNode::DisplayedHeadersWidget::HdrItem
Header list view item.
Definition: knconfigwidgets.h:301
KNode::ReadNewsNavigationWidget::ReadNewsNavigationWidget
ReadNewsNavigationWidget(const KComponentData &inst, QWidget *parent=0)
Create a new navigation configuration page.
Definition: knconfigwidgets.cpp:632
KNode::NntpAccountConfDialog::slotEditingFinished
void slotEditingFinished()
Definition: knconfigwidgets.cpp:282
KNode::FilterListWidget::c_opyBtn
QPushButton * c_opyBtn
Definition: knconfigwidgets.h:422
KNode::PrivacyWidget::c_onf
Kpgp::Config * c_onf
Definition: knconfigwidgets.h:532
KNode::DisplayedHeaderConfDialog::n_ameE
KLineEdit * n_ameE
Definition: knconfigwidgets.h:351
kscoringeditor.h
KNode::FilterListWidget::FilterListItem::filter
KNArticleFilter * filter() const
Returns the associated filter.
Definition: knconfigwidgets.h:408
KNode::AppearanceWidget::ColorListItem::ColorListItem
ColorListItem(const QString &text, const QColor &color=Qt::black, QListWidget *parent=0)
Create a new color list view item.
Definition: knconfigwidgets.cpp:349
KNode::DisplayedHeadersWidget::slotDownBtnClicked
void slotDownBtnClicked()
Definition: knconfigwidgets.cpp:819
KNode::GroupCleanupWidget::GroupCleanupWidget
GroupCleanupWidget(Cleanup *data, QWidget *parent=0)
Definition: knconfigwidgets.cpp:1497
KNode::FilterListWidget::addItem
void addItem(KNArticleFilter *f)
Definition: knconfigwidgets.cpp:1095
KNode::AppearanceWidget::FontListItem
Font list view item.
Definition: knconfigwidgets.h:188
KNode::FilterListWidget::menuOrder
QList< int > menuOrder()
Definition: knconfigwidgets.cpp:1160
KNode::AppearanceWidget::slotColCheckBoxToggled
void slotColCheckBoxToggled(bool b)
Definition: knconfigwidgets.cpp:516
KNArticleFilter
Article filter.
Definition: knarticlefilter.h:33
KNode::NntpAccountListWidget::slotAddBtnClicked
void slotAddBtnClicked()
Add account button has been clicked.
Definition: knconfigwidgets.cpp:144
KNode::FilterListWidget::slotSepAddBtnClicked
void slotSepAddBtnClicked()
Definition: knconfigwidgets.cpp:1234
KNode::AppearanceWidget::slotColChangeBtnClicked
void slotColChangeBtnClicked()
Definition: knconfigwidgets.cpp:540
KNode::DisplayedHeadersWidget::DisplayedHeadersWidget
DisplayedHeadersWidget(DisplayedHeaders *d, const KComponentData &inst, QWidget *parent=0)
Definition: knconfigwidgets.cpp:658
KNode::DisplayedHeaderConfDialog::slotOk
void slotOk()
Definition: knconfigwidgets.cpp:935
KNNntpAccount::checkInterval
int checkInterval() const
Definition: knnntpaccount.h:102
KNode::FilterListWidget::a_ddBtn
QPushButton * a_ddBtn
Definition: knconfigwidgets.h:422
KNServerInfo::id
int id() const
Definition: knserverinfo.h:46
KNode::DisplayedHeadersWidget::slotAddBtnClicked
void slotAddBtnClicked()
Definition: knconfigwidgets.cpp:750
KNNntpAccount::fetchDescriptions
bool fetchDescriptions() const
Definition: knnntpaccount.h:85
QGroupBox
KPIM::KScoringEditorWidget
Definition: kscoringeditor.h:313
KNode::NntpAccountListWidget::AccountListItem
Account list widget item.
Definition: knconfigwidgets.h:71
KNode::ReadNewsGeneralWidget::ReadNewsGeneralWidget
ReadNewsGeneralWidget(const KComponentData &inst, QWidget *parent=0)
Create a new general configuration page.
Definition: knconfigwidgets.cpp:593
KNode::PrivacyWidget::PrivacyWidget
PrivacyWidget(const KComponentData &inst, QWidget *parent=0)
Definition: knconfigwidgets.cpp:1464
KNDisplayedHeader::flag
bool flag(int i)
Definition: kndisplayedheader.h:48
locale.h
KNode::AppearanceWidget::ColorListItem::color
const QColor & color()
Returns the current color.
Definition: knconfigwidgets.h:176
KNServerInfo::None
Definition: knserverinfo.h:32
KNode::FilterListWidget::slotSelectionChangedFilter
void slotSelectionChangedFilter()
Definition: knconfigwidgets.cpp:1252
KNode::FilterListWidget::slotEditBtnClicked
void slotEditBtnClicked()
Definition: knconfigwidgets.cpp:1198
KNode::AppearanceWidget::slotFontCheckBoxToggled
void slotFontCheckBoxToggled(bool b)
Definition: knconfigwidgets.cpp:553
KNode::GroupCleanupWidget
Configuration widget for group expireration.
Definition: knconfigwidgets.h:540
QListWidgetItem
KNode::FilterListWidget::s_epAddBtn
QPushButton * s_epAddBtn
Definition: knconfigwidgets.h:422
KNode::FilterListWidget::findItem
int findItem(QListWidget *l, KNArticleFilter *f)
Returns the index of the list view item associated with the given filter.
Definition: knconfigwidgets.cpp:1176
KNode::DisplayedHeadersWidget::load
virtual void load()
Reimplemented from KCModule.
Definition: knconfigwidgets.cpp:704
KNode::CleanupWidget::CleanupWidget
CleanupWidget(const KComponentData &inst, QWidget *parent=0)
Definition: knconfigwidgets.cpp:1593
KNode::DisplayedHeadersWidget::slotDelBtnClicked
void slotDelBtnClicked()
Definition: knconfigwidgets.cpp:766
KNode::FilterListWidget::removeItem
void removeItem(KNArticleFilter *f)
Definition: knconfigwidgets.cpp:1108
KNode::DisplayedHeadersWidget::d_elBtn
QPushButton * d_elBtn
Definition: knconfigwidgets.h:318
kndisplayedheader.h
KNNntpAccount::intervalChecking
bool intervalChecking() const
Definition: knnntpaccount.h:101
knglobals.h
KNode::AppearanceWidget::slotColItemActivated
void slotColItemActivated(QListWidgetItem *item)
Show color selection dialog for the given item.
Definition: knconfigwidgets.cpp:525
KNode::ReadNewsGeneralWidget::save
virtual void save()
Reimplemented from KCModule.
Definition: knconfigwidgets.cpp:616
KNServerInfo::readyForLogin
bool readyForLogin() const
Definition: knserverinfo.h:53
KNode::PostNewsSpellingWidget::PostNewsSpellingWidget
PostNewsSpellingWidget(const KComponentData &inst, QWidget *parent=0)
Definition: knconfigwidgets.cpp:1437
KNArticleFilter::isEnabled
bool isEnabled() const
Definition: knarticlefilter.h:57
KNode::DisplayedHeaderConfDialog::v_alueCB
QCheckBox * v_alueCB[4]
Definition: knconfigwidgets.h:352
KNode::CleanupWidget::f_olderDaysL
QLabel * f_olderDaysL
Definition: knconfigwidgets.h:579
KNode::FilterListWidget::a_ctive
QPixmap a_ctive
Definition: knconfigwidgets.h:431
KLineEdit
KNServerInfo::pass
const QString & pass()
Definition: knserverinfo.cpp:136
KNode::FilterListWidget::slotUpBtnClicked
void slotUpBtnClicked()
Definition: knconfigwidgets.cpp:1212
KNode::DisplayedHeadersWidget::slotUpBtnClicked
void slotUpBtnClicked()
Definition: knconfigwidgets.cpp:802
settings.h
KNode::AppearanceWidget::mFontList
QListWidget * mFontList
The font selection list.
Definition: knconfigwidgets.h:217
KNode::FilterListWidget::d_ownBtn
QPushButton * d_ownBtn
Definition: knconfigwidgets.h:422
KNDisplayedHeader::hasName
bool hasName() const
Definition: kndisplayedheader.h:35
KNode::AppearanceWidget::c_olorCB
QCheckBox * c_olorCB
Definition: knconfigwidgets.h:218
KNNntpAccount::cleanupConfig
KNode::Cleanup * cleanupConfig() const
Definition: knnntpaccount.h:103
KNode::FilterListWidget::FilterListWidget
FilterListWidget(const KComponentData &inst, QWidget *parent=0)
Definition: knconfigwidgets.cpp:1002
KNode::PrivacyWidget::save
void save()
Definition: knconfigwidgets.cpp:1485
KNode::DisplayedHeadersWidget::slotEditBtnClicked
void slotEditBtnClicked()
Definition: knconfigwidgets.cpp:782
KNode::CleanupWidget::f_olderCB
QCheckBox * f_olderCB
Definition: knconfigwidgets.h:577
KNode::DisplayedHeaderConfDialog
Configuration dialog for a single header displayed in the article viewer.
Definition: knconfigwidgets.h:339
KNode::DisplayedHeadersWidget::generateItem
HdrItem * generateItem(KNDisplayedHeader *)
Definition: knconfigwidgets.cpp:723
KNode::FilterListWidget::FilterListItem
Filter list view item.
Definition: knconfigwidgets.h:400
KNode::NntpAccountConfDialog::slotButtonClicked
virtual void slotButtonClicked(int button)
Definition: knconfigwidgets.cpp:287
KNode::DisplayedHeadersWidget::mHeaderList
QListWidget * mHeaderList
Definition: knconfigwidgets.h:317
QLabel
KNode::AppearanceWidget::slotFontItemActivated
void slotFontItemActivated(QListWidgetItem *item)
Show font selection dialog for the given item.
Definition: knconfigwidgets.cpp:562
KNode::FilterListWidget::e_ditBtn
QPushButton * e_ditBtn
Definition: knconfigwidgets.h:422
KNode::PostNewsTechnicalWidget::save
virtual void save()
Reimplemented from KCModule.
Definition: knconfigwidgets.cpp:1313
KComboBox
KNode::CleanupWidget::d_ata
Cleanup * d_ata
Definition: knconfigwidgets.h:581
KNode::XHeaderConfDialog::result
QString result() const
Returns the entered/modified header.
Definition: knconfigwidgets.cpp:1412
KNode::FilterListWidget::addMenuItem
void addMenuItem(KNArticleFilter *f)
Definition: knconfigwidgets.cpp:1138
KNode::DisplayedHeadersWidget::a_ddBtn
QPushButton * a_ddBtn
Definition: knconfigwidgets.h:318
KNode::FilterListWidget::slotSelectionChangedMenu
void slotSelectionChangedMenu()
Definition: knconfigwidgets.cpp:1262
KNode::FilterListWidget::load
void load()
Definition: knconfigwidgets.cpp:1082
KNode::AppearanceWidget::slotFontSelectionChanged
void slotFontSelectionChanged()
Definition: knconfigwidgets.cpp:584
KNode::AppearanceWidget::slotColSelectionChanged
void slotColSelectionChanged()
Definition: knconfigwidgets.cpp:547
KNArticleFilter::id
int id() const
Definition: knarticlefilter.h:52
KNode::FilterListWidget::d_isabled
QPixmap d_isabled
Definition: knconfigwidgets.h:431
knconfigmanager.h
KNode::CleanupWidget::f_olderDays
KIntSpinBox * f_olderDays
Definition: knconfigwidgets.h:578
KNode::ScoringWidget::ScoringWidget
ScoringWidget(const KComponentData &inst, QWidget *parent=0)
Create a new scoring configuration widget.
Definition: knconfigwidgets.cpp:967
KNode::NntpAccountListWidget::slotSubBtnClicked
void slotSubBtnClicked()
Subscribe button has been clicked.
Definition: knconfigwidgets.cpp:175
KNode::FilterListWidget::d_elBtn
QPushButton * d_elBtn
Definition: knconfigwidgets.h:422
KHBox
KNode::PrivacyWidget::~PrivacyWidget
~PrivacyWidget()
Definition: knconfigwidgets.cpp:1480
KNode::DisplayedHeaders
Headers displayed in the article viewer.
Definition: knconfig.h:80
knscoring.h
KNAccountManager
Account manager.
Definition: knaccountmanager.h:33
KNode::FilterListWidget::save
void save()
Definition: knconfigwidgets.cpp:1089
KNode::NntpAccountConfDialog::NntpAccountConfDialog
NntpAccountConfDialog(KNNntpAccount *a, QWidget *parent=0)
Definition: knconfigwidgets.cpp:186
KNode::XHeader
Represents an additional header added by the composer.
Definition: knconfig.h:104
KNode::DisplayedHeadersWidget::e_ditBtn
QPushButton * e_ditBtn
Definition: knconfigwidgets.h:318
KNServerInfo::port
int port() const
Definition: knserverinfo.h:50
KNode::DisplayedHeadersWidget::d_ownBtn
QPushButton * d_ownBtn
Definition: knconfigwidgets.h:318
KNode::Cleanup::isGlobal
bool isGlobal() const
Definition: knconfig.h:150
knGlobals
#define knGlobals
Keep compatibility with the old way.
Definition: knglobals.h:28
KNode::FilterListWidget::slotAddBtnClicked
void slotAddBtnClicked()
Definition: knconfigwidgets.cpp:1185
QFrame
KNode::FilterListWidget::slotSepRemBtnClicked
void slotSepRemBtnClicked()
Definition: knconfigwidgets.cpp:1242
KNode::NntpAccountListWidget::NntpAccountListWidget
NntpAccountListWidget(const KComponentData &inst, QWidget *parent=0)
Create a new NNTP account list widget.
Definition: knconfigwidgets.cpp:49
KNServerInfo::server
const QString & server()
Definition: knserverinfo.h:47
KCModule
KNode::PostNewsTechnicalWidget::PostNewsTechnicalWidget
PostNewsTechnicalWidget(const KComponentData &inst, QWidget *parent=0)
Create a new configuration widget for technical posting settings.
Definition: knconfigwidgets.cpp:1275
KNode::NntpAccountListWidget::slotSelectionChanged
void slotSelectionChanged()
Item selection has changed.
Definition: knconfigwidgets.cpp:126
KNode::AppearanceWidget::load
virtual void load()
Reimplemented from KCModule.
Definition: knconfigwidgets.cpp:436
KNode::XHeaderConfDialog::XHeaderConfDialog
XHeaderConfDialog(const QString &h=QString(), QWidget *parent=0)
Create a new dialog to edit an additional header.
Definition: knconfigwidgets.cpp:1379
KNDisplayedHeader::predefs
static QStringList predefs()
Definition: kndisplayedheader.cpp:78
KNode::DisplayedHeaderConfDialog::n_ameCB
QCheckBox * n_ameCB[4]
Definition: knconfigwidgets.h:352
KNode::AppearanceWidget::slotFontChangeBtnClicked
void slotFontChangeBtnClicked()
Definition: knconfigwidgets.cpp:577
KNode::FilterListWidget::~FilterListWidget
~FilterListWidget()
Definition: knconfigwidgets.cpp:1076
KNode::FilterListWidget::slotCopyBtnClicked
void slotCopyBtnClicked()
Definition: knconfigwidgets.cpp:1205
KNode::FilterListWidget::slotDelBtnClicked
void slotDelBtnClicked()
Definition: knconfigwidgets.cpp:1191
QList< KNNntpAccount::Ptr >
knarticlefilter.h
KNode::CleanupWidget::save
void save()
Definition: knconfigwidgets.cpp:1648
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