You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
kshowmail/kshowmail/kcmconfigs/configaccounts.cpp

204 lines
5.1 KiB

//
// C++ Implementation: configaccounts
//
// Description:
//
//
// Author: Ulrich Weigelt <ulrich.weigelt@gmx.de>, (C) 2007
//
// Copyright: See COPYING file that comes with this distribution
//
//
#include "configaccounts.h"
typedef KGenericFactory<ConfigAccounts, TQWidget> ConfigAccountsFactory;
K_EXPORT_COMPONENT_FACTORY( kcm_kshowmailconfigaccounts, ConfigAccountsFactory(
"kcm_kshowmailconfigaccounts" ) );
ConfigAccounts::ConfigAccounts( TQWidget * parent, const char * name, const TQStringList & args )
: TDECModule( ConfigAccountsFactory::instance(), parent, args )
{
//set the module name
if ( !name )
setName( "configaccounts" );
//build GUI
//---------
//main layout
TQHBoxLayout* layMain = new TQHBoxLayout( this, 0, 10 );
//account list view
AccountListView = new TDEListView( this, "AccountListView" );
AccountListView->addColumn( i18n( "Name" ) );
AccountListView->setColumnWidthMode( 0, TQListView::Maximum );
AccountListView->setResizeMode( TQListView::LastColumn );
layMain->addWidget( AccountListView );
//button layout
TQVBoxLayout* layButtons = new TQVBoxLayout( layMain );
//Buttons
btnAdd = new KPushButton( KStdGuiItem::add(), this, "btnAdd" );
layButtons->addWidget( btnAdd );
btnAdd->setSizePolicy( TQSizePolicy::Preferred, TQSizePolicy::Maximum );
connect( btnAdd, SIGNAL( clicked() ), this, SLOT( slotAdd() ) );
btnEdit = new KPushButton( KStdGuiItem::configure(), this, "btnEdit" );
layButtons->addWidget( btnEdit );
btnEdit->setSizePolicy( TQSizePolicy::Preferred, TQSizePolicy::Maximum );
connect( btnEdit, SIGNAL( clicked() ), this, SLOT( slotEdit() ) );
btnRemove = new KPushButton( KStdGuiItem::remove(), this, "btnRemove" );
layButtons->addWidget( btnRemove );
btnRemove->setSizePolicy( TQSizePolicy::Preferred, TQSizePolicy::Maximum );
connect( btnRemove, SIGNAL( clicked() ), this, SLOT( slotRemove() ) );
layButtons->addItem( new TQSpacerItem( 1, 1, TQSizePolicy::Minimum, TQSizePolicy::Expanding ) );
//get application config object (kshowmailrc)
config = TDEApplication::kApplication()->config();
//load configured values
load();
}
ConfigAccounts::~ConfigAccounts()
{
}
void ConfigAccounts::load()
{
//get list of account names
config->setGroup( CONFIG_GROUP_ACCOUNTS );
TQStringList accounts = config->readListEntry( CONFIG_ENTRY_ACCOUNTS_LIST, TQStringList() );
//create list view items and order accounts to load their config
for( TQStringList::Iterator it = accounts.begin(); it != accounts.end(); ++it )
{
//create item
AccountSetupItem* item = new AccountSetupItem( AccountListView, *it );
//load item config
item->load();
}
}
void ConfigAccounts::save()
{
config->setGroup( CONFIG_GROUP_ACCOUNTS );
//get old account list from config file to remove old account entries
TQStringList oldList = config->readListEntry( CONFIG_ENTRY_ACCOUNTS_LIST, TQStringList() );
//remove all account entries
for( TQStringList::Iterator it = oldList.begin(); it != oldList.end(); ++it )
{
config->deleteGroup( *it );
}
//write a list with all account names into the config
TQStringList accounts; //list of all account names
AccountSetupItem* item = NULL;
int index = 0;
do //get all account names
{
item = (AccountSetupItem*)( AccountListView->itemAtIndex( index ) );
if( item != NULL )
{
index++;
accounts.append( item->getAccountName() );
}
} while( item != NULL );
config->writeEntry( CONFIG_ENTRY_ACCOUNTS_LIST, accounts ); //write list of account names
//order the items to save their configuration
index = 0;
item = NULL;
do
{
item = (AccountSetupItem*)( AccountListView->itemAtIndex( index ) );
if( item != NULL )
{
index++;
item->save();
}
} while( item != NULL );
//write configuration to disk
config->sync();
}
void ConfigAccounts::defaults()
{
}
void ConfigAccounts::slotChanged( )
{
TDECModule::changed();
}
void ConfigAccounts::slotAdd( )
{
//open setup dialog
AccountSetupDialog* dlg = new AccountSetupDialog( this, AccountListView, NULL );
int res = dlg->exec();
//inform application setup dialog about changes
if( res == KDialogBase::Accepted )
slotChanged();
//delete dialog
delete dlg;
}
void ConfigAccounts::slotEdit( )
{
//get selected item
AccountSetupItem* account = (AccountSetupItem*)( AccountListView->selectedItem() );
//test item
if( account == NULL )
return;
//open dialog
AccountSetupDialog* dlg = new AccountSetupDialog( this, AccountListView, account );
int res = dlg->exec();
//inform application setup dialog about changes
if( res == KDialogBase::Accepted )
slotChanged();
//delete dialog
delete dlg;
}
void ConfigAccounts::slotRemove( )
{
//get selected item
AccountSetupItem* account = (AccountSetupItem*)( AccountListView->selectedItem() );
//test item
if( account == NULL )
return;
//remove item
int result = KMessageBox::questionYesNo( this, i18n( "Do you really want to remove account %1?").arg( account->getAccountName() ) );
if( result == KMessageBox::Yes )
{
delete account;
slotChanged();
}
}
#include "configaccounts.moc"