kabc
resourcedirconfig.cpp
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include "resourcedirconfig.h"
00022 #include "resourcedir.h"
00023
00024 #include "kabc/formatfactory.h"
00025 #include "kabc/stdaddressbook.h"
00026
00027 #include <kdebug.h>
00028 #include <klocale.h>
00029 #include <kstandarddirs.h>
00030 #include <kdialog.h>
00031
00032 #include <QtGui/QFormLayout>
00033
00034 using namespace KABC;
00035
00036 ResourceDirConfig::ResourceDirConfig( QWidget *parent )
00037 : KRES::ConfigWidget( parent )
00038 {
00039 QFormLayout *mainLayout = new QFormLayout( this );
00040 mainLayout->setMargin( 0 );
00041
00042 mFormatBox = new KComboBox( this );
00043
00044 mainLayout->addRow( i18n( "Format:" ), mFormatBox );
00045
00046 mFileNameEdit = new KUrlRequester( this );
00047 mFileNameEdit->setMode( KFile::Directory );
00048
00049 mainLayout->addRow( i18n( "Location:" ), mFileNameEdit );
00050
00051 FormatFactory *factory = FormatFactory::self();
00052 QStringList formats = factory->formats();
00053 QStringList::Iterator it;
00054 for ( it = formats.begin(); it != formats.end(); ++it ) {
00055 FormatInfo info = factory->info( *it );
00056 if ( !info.isNull() ) {
00057 mFormatTypes << (*it);
00058 mFormatBox->addItem( info.nameLabel );
00059 }
00060 }
00061
00062 mInEditMode = false;
00063 }
00064
00065 void ResourceDirConfig::setEditMode( bool value )
00066 {
00067 mFormatBox->setEnabled( !value );
00068 mInEditMode = value;
00069 }
00070
00071 void ResourceDirConfig::loadSettings( KRES::Resource *res )
00072 {
00073 ResourceDir *resource = dynamic_cast<ResourceDir*>( res );
00074
00075 if ( !resource ) {
00076 kDebug() << "cast failed";
00077 return;
00078 }
00079
00080 mFormatBox->setCurrentIndex( mFormatTypes.indexOf( resource->format() ) );
00081
00082 mFileNameEdit->setUrl( resource->path() );
00083 if ( mFileNameEdit->url().isEmpty() ) {
00084 mFileNameEdit->setUrl( KABC::StdAddressBook::directoryName() );
00085 }
00086 }
00087
00088 void ResourceDirConfig::saveSettings( KRES::Resource *res )
00089 {
00090 ResourceDir *resource = dynamic_cast<ResourceDir*>( res );
00091
00092 if ( !resource ) {
00093 kDebug() << "cast failed";
00094 return;
00095 }
00096
00097 if ( mInEditMode ) {
00098 resource->setFormat( mFormatTypes[ mFormatBox->currentIndex() ] );
00099 }
00100
00101 resource->setPath( mFileNameEdit->url().path() );
00102 }
00103
00104 #include "resourcedirconfig.moc"