knotes Library API Documentation

knoteconfigdlg.cpp

00001 /*******************************************************************
00002  KNotes -- Notes for the KDE project
00003 
00004  Copyright (c) 1997-2003, The KNotes Developers
00005 
00006  This program is free software; you can redistribute it and/or
00007  modify it under the terms of the GNU General Public License
00008  as published by the Free Software Foundation; either version 2
00009  of the License, or (at your option) any later version.
00010 
00011  This program is distributed in the hope that it will be useful,
00012  but WITHOUT ANY WARRANTY; without even the implied warranty of
00013  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00014  GNU General Public License for more details.
00015 
00016  You should have received a copy of the GNU General Public License
00017  along with this program; if not, write to the Free Software
00018  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
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     // just delete m_config, all others have parent widgets
00056     // and will get destroyed by the parent
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     // set layout - top level is the QVBoxLayout...
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     // set layout - top level is the QVBoxLayout...
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     // set layout - top level is the QVBoxLayout...
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     // store General settings
00197     m_config->setGroup( "General" );
00198 
00199     m_config->writeEntry( "version", KNOTES_VERSION );
00200 
00201     // store Display settings
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     // store Editor settings
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     // store Action Settings
00226     m_config->setGroup( "Actions" );
00227 
00228     m_config->writePathEntry( "mail", m_mailEdit->text() );
00229 
00230     // TODO: use kconf_update?
00231     m_config->deleteEntry( "print" );
00232 
00233     m_config->sync();
00234 }
00235 
00236 void KNoteConfigDlg::slotOk()
00237 {
00238     // get data from ls
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"
KDE Logo
This file is part of the documentation for knotes Library Version 3.2.1.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Sat Mar 6 17:18:05 2004 by doxygen 1.3.6-20040222 written by Dimitri van Heesch, © 1997-2003