diff options
Diffstat (limited to 'knode/knconfigpages.cpp')
-rw-r--r-- | knode/knconfigpages.cpp | 198 |
1 files changed, 198 insertions, 0 deletions
diff --git a/knode/knconfigpages.cpp b/knode/knconfigpages.cpp new file mode 100644 index 000000000..c7d0c0758 --- /dev/null +++ b/knode/knconfigpages.cpp @@ -0,0 +1,198 @@ +/* + KNode, the KDE newsreader + Copyright (c) 2004-2005 Volker Krause <[email protected]> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software Foundation, + Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, US +*/ + +#include <qlayout.h> + +#include <kcmodule.h> +#include <kdebug.h> +#include <klocale.h> + +#include "knglobals.h" +#include "knconfig.h" +#include "knconfigmanager.h" +#include "knconfigpages.h" +#include "knconfigwidgets.h" + +#include <kdepimmacros.h> + +// +// common config page with tabs (code mostly taken from kmail) +// +KNConfig::BasePageWithTabs::BasePageWithTabs( QWidget * parent, const char * name ) + : KCModule( parent, name ) +{ + QVBoxLayout *vlay = new QVBoxLayout( this, 0, KDialog::spacingHint() ); + mTabWidget = new QTabWidget( this ); + vlay->addWidget( mTabWidget ); +} + +void KNConfig::BasePageWithTabs::addTab( KCModule* tab, const QString & title ) { + mTabWidget->addTab( tab, title ); + connect( tab, SIGNAL(changed( bool )), this, SIGNAL(changed( bool )) ); +} + +void KNConfig::BasePageWithTabs::load() { + for ( int i = 0 ; i < mTabWidget->count() ; ++i ) { + KCModule *tab = (KCModule*) mTabWidget->page(i); + if ( tab ) + tab->load(); + } +} + +void KNConfig::BasePageWithTabs::save() { + for ( int i = 0 ; i < mTabWidget->count() ; ++i ) { + KCModule *tab = (KCModule*) mTabWidget->page(i); + if ( tab ) + tab->save(); + } +} + +void KNConfig::BasePageWithTabs::defaults() { + for ( int i = 0 ; i < mTabWidget->count() ; ++i ) { + KCModule *tab = (KCModule*) mTabWidget->page(i); + if ( tab ) + tab->defaults(); + } +} + + + +// +// identity page +// +extern "C" +{ + KDE_EXPORT KCModule *create_knode_config_identity( QWidget *parent, const char * ) + { + KNConfig::IdentityWidget *page = new KNConfig::IdentityWidget( + knGlobals.configManager()->identity(), + parent, + "kcmknode_config_identity" ); + return page; + } +} + + + +// +// accounts page +// +extern "C" +{ + KCModule *create_knode_config_accounts( QWidget *parent, const char * ) + { + KNConfig::AccountsPage *page = new KNConfig::AccountsPage( parent, "kcmknode_config_accounts" ); + return page; + } +} + +KNConfig::AccountsPage::AccountsPage(QWidget *parent, const char *name) + : BasePageWithTabs(parent, name) { + + addTab(new KNConfig::NntpAccountListWidget(this), i18n("Newsgroup Servers")); + addTab(new KNConfig::SmtpAccountWidget(this), i18n("Mail Server (SMTP)")); +} + + + +// +// appearance page +// +extern "C" +{ + KCModule *create_knode_config_appearance( QWidget *parent, const char * ) + { + KNConfig::AppearanceWidget *page = new KNConfig::AppearanceWidget( parent, "kcmknode_config_appearance" ); + return page; + } +} + + + +// +// read news page +// +extern "C" +{ + KCModule *create_knode_config_read_news( QWidget *parent, const char * ) + { + KNConfig::ReadNewsPage *page = new KNConfig::ReadNewsPage( parent, "kcmknode_config_read_news" ); + return page; + } +} + +KNConfig::ReadNewsPage::ReadNewsPage(QWidget *parent, const char *name) + : BasePageWithTabs(parent, name) { + + KNConfigManager *cfgMgr = knGlobals.configManager(); + addTab(new KNConfig::ReadNewsGeneralWidget(cfgMgr->readNewsGeneral(), this), i18n("General")); + addTab(new KNConfig::ReadNewsNavigationWidget(cfgMgr->readNewsNavigation(), this), i18n("Navigation")); + addTab(new KNConfig::ScoringWidget(cfgMgr->scoring(), this), i18n("Scoring")); + addTab(new KNConfig::FilterListWidget(this), i18n("Filters")); + addTab(new KNConfig::DisplayedHeadersWidget(cfgMgr->displayedHeaders(), this), i18n("Headers")); + addTab(new KNConfig::ReadNewsViewerWidget(cfgMgr->readNewsViewer(), this), i18n("Viewer")); +} + + + +// +// post news page +// +extern "C" +{ + KCModule *create_knode_config_post_news( QWidget *parent, const char * ) + { + KNConfig::PostNewsPage *page = new KNConfig::PostNewsPage( parent, "kcmknode_config_post_news" ); + return page; + } +} + +KNConfig::PostNewsPage::PostNewsPage(QWidget *parent, const char *name) + : BasePageWithTabs(parent, name) { + + KNConfigManager *cfgMgr = knGlobals.configManager(); + addTab(new KNConfig::PostNewsTechnicalWidget(cfgMgr->postNewsTechnical(), this), i18n("Technical")); + addTab(new KNConfig::PostNewsComposerWidget(cfgMgr->postNewsComposer(), this), i18n("Composer")); + addTab(new KNConfig::PostNewsSpellingWidget(this), i18n("Spelling")); +} + + + +// +// privacy page +// +extern "C" +{ + KCModule *create_knode_config_privacy( QWidget *parent, const char * ) + { + KNConfig::PrivacyWidget *page = new KNConfig::PrivacyWidget( parent, "kcmknode_config_privacy" ); + return page; + } +} + + + +// +// cleanup page +// +extern "C" +{ + KCModule *create_knode_config_cleanup( QWidget *parent, const char * ) + { + KNConfig::CleanupWidget *page = new KNConfig::CleanupWidget( parent, "kcmknode_config_cleanup" ); + return page; + } +} + + +#include "knconfigpages.moc" |