kresources
configdialog.cpp
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00035 #include "configdialog.h"
00036 #include <klocale.h>
00037 #include <klineedit.h>
00038 #include <kmessagebox.h>
00039
00040 #include <QtGui/QGroupBox>
00041 #include <QtGui/QLabel>
00042 #include <QtGui/QLayout>
00043 #include <QtGui/QCheckBox>
00044
00045 #include "factory.h"
00046
00047 using namespace KRES;
00048
00049 class ConfigDialog::Private
00050 {
00051 public:
00052 ConfigWidget *mConfigWidget;
00053 Resource *mResource;
00054 KLineEdit *mName;
00055 QCheckBox *mReadOnly;
00056 };
00057
00058 ConfigDialog::ConfigDialog( QWidget *parent, const QString &resourceFamily,
00059 Resource *resource )
00060 : KDialog( parent ), d( new Private )
00061 {
00062 setModal( true );
00063 setCaption( i18n( "Resource Configuration" ) );
00064 setButtons( Ok | Cancel );
00065 setDefaultButton( Ok );
00066 showButtonSeparator( false );
00067
00068 d->mResource = resource;
00069 Factory *factory = Factory::self( resourceFamily );
00070
00071 QFrame *main = new QFrame( this );
00072 setMainWidget( main );
00073
00074 QVBoxLayout *mainLayout = new QVBoxLayout( main );
00075 mainLayout->setSpacing( spacingHint() );
00076 mainLayout->setMargin( 0 );
00077
00078 QGroupBox *generalGroupBox = new QGroupBox( main );
00079 QGridLayout *gbLayout = new QGridLayout;
00080 gbLayout->setSpacing( spacingHint() );
00081 generalGroupBox->setLayout( gbLayout );
00082
00083 generalGroupBox->setTitle( i18n( "General Settings" ) );
00084
00085 gbLayout->addWidget( new QLabel( i18n( "Name:" ), generalGroupBox ), 0, 0 );
00086
00087 d->mName = new KLineEdit();
00088 gbLayout->addWidget( d->mName, 0, 1 );
00089
00090 d->mReadOnly = new QCheckBox( i18n( "Read-only" ), generalGroupBox );
00091 gbLayout->addWidget( d->mReadOnly, 1, 0 );
00092
00093 d->mName->setText( d->mResource->resourceName() );
00094 d->mReadOnly->setChecked( d->mResource->readOnly() );
00095
00096 mainLayout->addWidget( generalGroupBox );
00097
00098 QGroupBox *resourceGroupBox = new QGroupBox( main );
00099 QGridLayout *resourceLayout = new QGridLayout;
00100 resourceLayout->setSpacing( spacingHint() );
00101 resourceLayout->setMargin( marginHint() );
00102 resourceGroupBox->setLayout( resourceLayout );
00103
00104 resourceGroupBox->setTitle( i18n( "%1 Resource Settings",
00105 factory->typeName( resource->type() ) ) );
00106 mainLayout->addWidget( resourceGroupBox );
00107
00108 mainLayout->addStretch();
00109
00110 d->mConfigWidget = factory->configWidget( resource->type(), resourceGroupBox );
00111 if ( d->mConfigWidget ) {
00112 resourceLayout->addWidget( d->mConfigWidget );
00113 d->mConfigWidget->setInEditMode( false );
00114 d->mConfigWidget->loadSettings( d->mResource );
00115 d->mConfigWidget->show();
00116 connect( d->mConfigWidget, SIGNAL( setReadOnly( bool ) ),
00117 SLOT( setReadOnly( bool ) ) );
00118 }
00119
00120 connect( d->mName, SIGNAL( textChanged(const QString &) ),
00121 SLOT( slotNameChanged(const QString &) ) );
00122
00123 slotNameChanged( d->mName->text() );
00124 setMinimumSize( sizeHint() );
00125 }
00126
00127 ConfigDialog::~ConfigDialog()
00128 {
00129 delete d;
00130 }
00131
00132 void ConfigDialog::setInEditMode( bool value )
00133 {
00134 if ( d->mConfigWidget ) {
00135 d->mConfigWidget->setInEditMode( value );
00136 }
00137 }
00138
00139 void ConfigDialog::slotNameChanged( const QString &text )
00140 {
00141 enableButtonOk( !text.isEmpty() );
00142 }
00143
00144 void ConfigDialog::setReadOnly( bool value )
00145 {
00146 d->mReadOnly->setChecked( value );
00147 }
00148
00149 void ConfigDialog::accept()
00150 {
00151 if ( d->mName->text().isEmpty() ) {
00152 KMessageBox::sorry( this, i18n( "Please enter a resource name." ) );
00153 return;
00154 }
00155
00156 d->mResource->setResourceName( d->mName->text() );
00157 d->mResource->setReadOnly( d->mReadOnly->isChecked() );
00158
00159 if ( d->mConfigWidget ) {
00160
00161
00162 d->mConfigWidget->saveSettings( d->mResource );
00163 }
00164
00165 KDialog::accept();
00166 }
00167
00168 #include "configdialog.moc"