00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include <qlabel.h>
00022 #include <qlayout.h>
00023 #include <qcheckbox.h>
00024
00025 #include <kconfig.h>
00026 #include <klocale.h>
00027 #include <kcolorbutton.h>
00028 #include <knuminput.h>
00029 #include <klineedit.h>
00030 #include <kfontdialog.h>
00031 #include <kiconloader.h>
00032 #include <kseparator.h>
00033 #include <kwin.h>
00034
00035 #include "knoteconfigdlg.h"
00036 #include "version.h"
00037
00038 #include <netwm.h>
00039
00040 KNoteConfigDlg::KNoteConfigDlg( const QString& configfile, const QString& title,
00041 bool global, QWidget* parent, const char* name )
00042 : KDialogBase( IconList, title, Ok|Apply|Cancel, Ok, parent, name, true, true )
00043 {
00044 setIconListAllVisible( true );
00045 m_config = new KConfig( configfile, false, false );
00046 m_global = global;
00047
00048 makeDisplayPage();
00049 makeEditorPage();
00050 makeActionsPage();
00051 }
00052
00053 KNoteConfigDlg::~KNoteConfigDlg()
00054 {
00055
00056
00057 delete m_config;
00058 }
00059
00060 void KNoteConfigDlg::makeDisplayPage()
00061 {
00062 m_config->setGroup( "Display" );
00063
00064 QPixmap icon = KGlobal::iconLoader()->loadIcon( "knotes", KIcon::Toolbar, KIcon::SizeMedium );
00065 QFrame* displayPage = addPage( i18n("Display"), i18n("Display Settings"), icon );
00066
00067
00068 QVBoxLayout* topLevel = new QVBoxLayout( displayPage, 0, spacingHint() );
00069 QGridLayout* glay = new QGridLayout( topLevel, 6, 3 );
00070 glay->setColStretch( 1, 1 );
00071
00072 QLabel* l_fgcolor = new QLabel( i18n("&Text color:"), displayPage );
00073 QLabel* l_bgcolor = new QLabel( i18n("&Background color:"), displayPage );
00074
00075 QColor fgcolor = m_config->readColorEntry( "fgcolor", &(Qt::black) );
00076 QColor bgcolor = m_config->readColorEntry( "bgcolor", &(Qt::yellow) );
00077 m_fgColor = new KColorButton( fgcolor, displayPage );
00078 m_bgColor = new KColorButton( bgcolor, displayPage );
00079 connect( m_fgColor, SIGNAL(changed(const QColor&)),
00080 this, SLOT(slotFGColor(const QColor&)) );
00081 connect( m_bgColor, SIGNAL(changed(const QColor&)),
00082 this, SLOT(slotBGColor(const QColor&)) );
00083
00084 l_fgcolor->setBuddy( m_fgColor );
00085 l_bgcolor->setBuddy( m_bgColor );
00086
00087 m_config->setGroup( "WindowDisplay" );
00088 ulong state = m_global ? m_config->readUnsignedLongNumEntry( "state", NET::SkipTaskbar )
00089 : KWin::info( parentWidget()->winId() ).state;
00090
00091 m_skipTaskbarSwitch = new QCheckBox( i18n("&Show note in taskbar"), displayPage );
00092 m_skipTaskbarSwitch->setChecked( !(state & NET::SkipTaskbar) );
00093
00094 KSeparator *sep = new KSeparator( Horizontal, displayPage );
00095
00096 glay->addWidget( l_fgcolor, 0, 0 );
00097 glay->addWidget( l_bgcolor, 1, 0 );
00098 glay->addWidget( m_fgColor, 0, 2 );
00099 glay->addWidget( m_bgColor, 1, 2 );
00100 glay->addMultiCellWidget( sep, 4, 4, 0, 2 );
00101 glay->addWidget( m_skipTaskbarSwitch, 5, 0 );
00102
00103 if ( m_global )
00104 {
00105 QLabel* l_width = new QLabel( i18n("Default &width:"), displayPage );
00106 QLabel* l_height = new QLabel( i18n("Default &height:"), displayPage );
00107
00108 m_config->setGroup( "Display" );
00109 uint width = m_config->readUnsignedNumEntry( "width", 200 );
00110 uint height = m_config->readUnsignedNumEntry( "height", 200 );
00111
00112 m_widthEdit = new KIntNumInput( width, displayPage );
00113 m_widthEdit->setRange( 100, 2000, 10, false );
00114 m_heightEdit = new KIntNumInput( height, displayPage );
00115 m_heightEdit->setRange( 100, 2000, 10, false );
00116
00117 l_width->setBuddy( m_widthEdit );
00118 l_height->setBuddy( m_heightEdit );
00119
00120 glay->addWidget( l_width, 2, 0 );
00121 glay->addWidget( m_widthEdit, 2, 2 );
00122 glay->addWidget( l_height, 3, 0 );
00123 glay->addWidget( m_heightEdit, 3, 2 );
00124 }
00125 }
00126
00127 void KNoteConfigDlg::makeEditorPage()
00128 {
00129 m_config->setGroup( "Editor" );
00130
00131 QPixmap icon = KGlobal::iconLoader()->loadIcon( "edit", KIcon::Toolbar, KIcon::SizeMedium );
00132 QFrame* editorPage = addPage( i18n( "Editor" ), i18n("Editor Settings"), icon );
00133
00134
00135 QVBoxLayout* topLevel = new QVBoxLayout( editorPage, 0, spacingHint() );
00136 QGridLayout* glay = new QGridLayout( topLevel, 4, 3 );
00137 glay->setColStretch( 1, 1 );
00138
00139 QLabel* l_tabsize = new QLabel( i18n( "&Tab size:" ), editorPage );
00140 glay->addWidget( l_tabsize, 0, 0 );
00141
00142 int tabsize = m_config->readUnsignedNumEntry( "tabsize", 4 );
00143 m_tabEdit = new KIntNumInput( tabsize, editorPage );
00144 m_tabEdit->setRange( 0, 20, 1, false );
00145 glay->addWidget( m_tabEdit, 0, 2 );
00146 l_tabsize->setBuddy( m_tabEdit );
00147
00148 bool check_val = m_config->readBoolEntry( "autoindent", true );
00149 m_autoIndentSwitch = new QCheckBox( i18n("Auto &indent"), editorPage );
00150 m_autoIndentSwitch->setChecked( check_val );
00151 glay->addWidget( m_autoIndentSwitch, 1, 0, AlignCenter );
00152
00153 check_val = m_config->readBoolEntry( "richtext", false );
00154 m_richTextSwitch = new QCheckBox( i18n("&Rich text"), editorPage );
00155 m_richTextSwitch->setChecked( check_val );
00156 glay->addWidget( m_richTextSwitch, 1, 2, AlignCenter );
00157
00158 m_titleFont = new QPushButton( editorPage );
00159 QFont def_font(KGlobalSettings::generalFont());
00160 QFont currfont = m_config->readFontEntry( "titlefont", &def_font );
00161 m_titleFont->setFont( currfont );
00162 m_titleFont->setText( i18n( "Title Font: Click to Change..." ) );
00163 glay->addMultiCellWidget( m_titleFont, 2, 2, 0, 2 );
00164 connect( m_titleFont, SIGNAL(clicked()), this, SLOT(slotChangeTitleFont()) );
00165
00166 m_textFont = new QPushButton( editorPage );
00167 currfont = m_config->readFontEntry( "font", &def_font );
00168 m_textFont->setFont( currfont );
00169 m_textFont->setText( i18n( "Text Font: Click to Change..." ) );
00170 glay->addMultiCellWidget( m_textFont, 3, 3, 0, 2 );
00171 connect( m_textFont, SIGNAL(clicked()), this, SLOT(slotChangeTextFont()) );
00172 }
00173
00174 void KNoteConfigDlg::makeActionsPage()
00175 {
00176 m_config->setGroup( "Actions" );
00177
00178 QPixmap icon = KGlobal::iconLoader()->loadIcon( "misc", KIcon::Toolbar, KIcon::SizeMedium );
00179 QFrame* actionsPage = addPage( i18n( "Actions" ), i18n("Action Settings"), icon );
00180
00181
00182 QVBoxLayout* topLevel = new QVBoxLayout( actionsPage, 0, spacingHint() );
00183 QGridLayout* glay = new QGridLayout( topLevel, 2, 2 );
00184 glay->setColStretch( 1, 1 );
00185
00186 QLabel* l_mail = new QLabel( i18n("&Mail action:"), actionsPage );
00187 QString mailstr = m_config->readPathEntry( "mail", "kmail --msg %f" );
00188 m_mailEdit = new KLineEdit( mailstr, actionsPage );
00189 l_mail->setBuddy( m_mailEdit );
00190 glay->addWidget( l_mail, 0, 0 );
00191 glay->addWidget( m_mailEdit, 0, 1 );
00192 }
00193
00194 void KNoteConfigDlg::storeSettings()
00195 {
00196
00197 m_config->setGroup( "General" );
00198
00199 m_config->writeEntry( "version", KNOTES_VERSION );
00200
00201
00202 m_config->setGroup( "Display" );
00203
00204 m_config->writeEntry( "fgcolor", m_fgColor->color() );
00205 m_config->writeEntry( "bgcolor", m_bgColor->color() );
00206
00207 if ( m_global )
00208 {
00209 m_config->writeEntry( "height", m_heightEdit->value() );
00210 m_config->writeEntry( "width", m_widthEdit->value() );
00211
00212 m_config->setGroup( "WindowDisplay" );
00213 m_config->writeEntry( "state", !m_skipTaskbarSwitch->isChecked() ? NET::SkipTaskbar : 0 );
00214 }
00215
00216
00217 m_config->setGroup( "Editor" );
00218
00219 m_config->writeEntry( "titlefont", m_titleFont->font() );
00220 m_config->writeEntry( "font", m_textFont->font() );
00221 m_config->writeEntry( "autoindent", m_autoIndentSwitch->isChecked() );
00222 m_config->writeEntry( "richtext", m_richTextSwitch->isChecked() );
00223 m_config->writeEntry( "tabsize", m_tabEdit->value() );
00224
00225
00226 m_config->setGroup( "Actions" );
00227
00228 m_config->writePathEntry( "mail", m_mailEdit->text() );
00229
00230
00231 m_config->deleteEntry( "print" );
00232
00233 m_config->sync();
00234 }
00235
00236 void KNoteConfigDlg::slotOk()
00237 {
00238
00239 storeSettings();
00240 emit updateConfig();
00241 emit skipTaskbar( !m_skipTaskbarSwitch->isChecked() );
00242
00243 accept();
00244 }
00245
00246 void KNoteConfigDlg::slotApply()
00247 {
00248 storeSettings();
00249 emit updateConfig();
00250 emit skipTaskbar( !m_skipTaskbarSwitch->isChecked() );
00251 }
00252
00253 void KNoteConfigDlg::slotChangeTitleFont()
00254 {
00255 QFont newfont = m_titleFont->font();
00256 KFontDialog::getFont( newfont );
00257
00258 m_titleFont->setFont( newfont );
00259 }
00260
00261 void KNoteConfigDlg::slotChangeTextFont()
00262 {
00263 QFont newfont = m_textFont->font();
00264 KFontDialog::getFont( newfont );
00265
00266 m_textFont->setFont( newfont );
00267 }
00268
00269 void KNoteConfigDlg::slotFGColor( const QColor& c )
00270 {
00271 m_fgColor->setBackgroundColor( c );
00272 }
00273
00274 void KNoteConfigDlg::slotBGColor( const QColor& c )
00275 {
00276 m_bgColor->setBackgroundColor( c );
00277 }
00278
00279
00280 #include "knoteconfigdlg.moc"