00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
#include <qstring.h>
00025
#include <qlayout.h>
00026
#include <qlabel.h>
00027
#include <qcheckbox.h>
00028
#include <qvbox.h>
00029
#include <qgroupbox.h>
00030
#include <qspinbox.h>
00031
#include <qtabwidget.h>
00032
#include <qwhatsthis.h>
00033
00034
#include <kdebug.h>
00035
#include <kglobal.h>
00036
#include <kglobalsettings.h>
00037
#include <klocale.h>
00038
#include <kiconloader.h>
00039
#include <kconfig.h>
00040
#include <kfontdialog.h>
00041
#include <kpushbutton.h>
00042
00043
#include "colorlistbox.h"
00044
00045
#include "configurecardviewdialog.h"
00046
00048
00049
00050 ConfigureCardViewWidget::ConfigureCardViewWidget( KABC::AddressBook *ab, QWidget *parent,
00051
const char *name )
00052 :
ViewConfigureWidget( ab, parent, name )
00053 {
00054 QWidget *page = addPage( i18n(
"Look & Feel" ), QString::null,
00055 DesktopIcon(
"looknfeel" ) );
00056 mAdvancedPage =
new CardViewLookNFeelPage( page );
00057 }
00058
00059 ConfigureCardViewWidget::~ConfigureCardViewWidget()
00060 {
00061 }
00062
00063 void ConfigureCardViewWidget::restoreSettings( KConfig *config )
00064 {
00065 ViewConfigureWidget::restoreSettings( config );
00066
00067 mAdvancedPage->
restoreSettings( config );
00068 }
00069
00070 void ConfigureCardViewWidget::saveSettings( KConfig *config )
00071 {
00072 ViewConfigureWidget::saveSettings( config );
00073
00074 mAdvancedPage->
saveSettings( config );
00075 }
00076
00078
00079 CardViewLookNFeelPage::CardViewLookNFeelPage( QWidget *parent,
const char *name )
00080 : QVBox( parent, name )
00081 {
00082 initGUI();
00083 }
00084
00085 CardViewLookNFeelPage::~CardViewLookNFeelPage()
00086 {
00087 }
00088
00089
void CardViewLookNFeelPage::restoreSettings( KConfig *config )
00090 {
00091
00092 cbEnableCustomColors->setChecked( config->readBoolEntry(
"EnableCustomColors",
false ) );
00093 QColor c;
00094 c = KGlobalSettings::baseColor();
00095 lbColors->insertItem(
new ColorListItem( i18n(
"Background Color"),
00096 config->readColorEntry(
"BackgroundColor", &c ) ) );
00097 c = colorGroup().foreground();
00098 lbColors->insertItem(
new ColorListItem( i18n(
"Text Color"),
00099 config->readColorEntry(
"TextColor", &c ) ) );
00100 c = colorGroup().button();
00101 lbColors->insertItem(
new ColorListItem( i18n(
"Header, Border & Separator Color"),
00102 config->readColorEntry(
"HeaderColor", &c ) ) );
00103 c = colorGroup().buttonText();
00104 lbColors->insertItem(
new ColorListItem( i18n(
"Header Text Color"),
00105 config->readColorEntry(
"HeaderTextColor", &c ) ) );
00106 c = colorGroup().highlight();
00107 lbColors->insertItem(
new ColorListItem( i18n(
"Highlight Color"),
00108 config->readColorEntry(
"HighlightColor", &c ) ) );
00109 c = colorGroup().highlightedText();
00110 lbColors->insertItem(
new ColorListItem( i18n(
"Highlighted Text Color"),
00111 config->readColorEntry(
"HighlightedTextColor", &c ) ) );
00112
00113 enableColors();
00114
00115
00116 QFont fnt = font();
00117 updateFontLabel( config->readFontEntry(
"TextFont", &fnt ), (QLabel*)lTextFont );
00118 fnt.setBold(
true );
00119 updateFontLabel( config->readFontEntry(
"HeaderFont", &fnt ), (QLabel*)lHeaderFont );
00120 cbEnableCustomFonts->setChecked( config->readBoolEntry(
"EnableCustomFonts",
false ) );
00121 enableFonts();
00122
00123
00124 sbMargin->setValue( config->readNumEntry(
"ItemMargin", 0 ) );
00125 sbSpacing->setValue( config->readNumEntry(
"ItemSpacing", 10 ) );
00126 sbSepWidth->setValue( config->readNumEntry(
"SeparatorWidth", 2 ) );
00127 cbDrawSeps->setChecked( config->readBoolEntry(
"DrawSeparators",
true ) );
00128 cbDrawBorders->setChecked( config->readBoolEntry(
"DrawBorder",
true ) );
00129
00130
00131 cbShowFieldLabels->setChecked( config->readBoolEntry(
"DrawFieldLabels",
false ) );
00132 cbShowEmptyFields->setChecked( config->readBoolEntry(
"ShowEmptyFields",
false ) );
00133 }
00134
00135
void CardViewLookNFeelPage::saveSettings( KConfig *config )
00136 {
00137
00138 config->writeEntry(
"EnableCustomColors", cbEnableCustomColors->isChecked() );
00139
if ( cbEnableCustomColors->isChecked() )
00140 {
00141 config->writeEntry(
"BackgroundColor", lbColors->color( 0 ) );
00142 config->writeEntry(
"TextColor", lbColors->color( 1 ) );
00143 config->writeEntry(
"HeaderColor", lbColors->color( 2 ) );
00144 config->writeEntry(
"HeaderTextColor", lbColors->color( 3 ) );
00145 config->writeEntry(
"HighlightColor", lbColors->color( 4 ) );
00146 config->writeEntry(
"HighlightedTextColor", lbColors->color( 5 ) );
00147 }
00148
00149 config->writeEntry(
"EnableCustomFonts", cbEnableCustomFonts->isChecked() );
00150
if ( cbEnableCustomFonts->isChecked() )
00151 {
00152 config->writeEntry(
"TextFont", lTextFont->font() );
00153 config->writeEntry(
"HeaderFont", lHeaderFont->font() );
00154 }
00155
00156 config->writeEntry(
"ItemMargin", sbMargin->value() );
00157 config->writeEntry(
"ItemSpacing", sbSpacing->value() );
00158 config->writeEntry(
"SeparatorWidth", sbSepWidth->value() );
00159 config->writeEntry(
"DrawBorder", cbDrawBorders->isChecked());
00160 config->writeEntry(
"DrawSeparators", cbDrawSeps->isChecked());
00161
00162
00163 config->writeEntry(
"DrawFieldLabels", cbShowFieldLabels->isChecked());
00164 config->writeEntry(
"ShowEmptyFields", cbShowEmptyFields->isChecked());
00165 }
00166
00167
void CardViewLookNFeelPage::setTextFont()
00168 {
00169 QFont f( lTextFont->font() );
00170
if ( KFontDialog::getFont( f,
false,
this ) == QDialog::Accepted )
00171 updateFontLabel( f, lTextFont );
00172 }
00173
00174
void CardViewLookNFeelPage::setHeaderFont()
00175 {
00176 QFont f( lHeaderFont->font() );
00177
if ( KFontDialog::getFont( f,
false,
this ) == QDialog::Accepted )
00178 updateFontLabel( f, lHeaderFont );
00179 }
00180
00181
void CardViewLookNFeelPage::enableFonts()
00182 {
00183 vbFonts->setEnabled( cbEnableCustomFonts->isChecked() );
00184 }
00185
00186
void CardViewLookNFeelPage::enableColors()
00187 {
00188 lbColors->setEnabled( cbEnableCustomColors->isChecked() );
00189 }
00190
00191
void CardViewLookNFeelPage::initGUI()
00192 {
00193
int spacing = KDialog::spacingHint();
00194
int margin = KDialog::marginHint();
00195
00196 QTabWidget *tabs =
new QTabWidget(
this );
00197
00198
00199 QVBox *loTab =
new QVBox(
this,
"layouttab" );
00200
00201 loTab->setSpacing( spacing );
00202 loTab->setMargin( margin );
00203
00204 QGroupBox *gbGeneral =
new QGroupBox( 1, Qt::Horizontal, i18n(
"General"), loTab );
00205
00206 cbDrawSeps =
new QCheckBox( i18n(
"Draw &separators"), gbGeneral );
00207
00208 QHBox *hbSW =
new QHBox( gbGeneral );
00209 QLabel *lSW =
new QLabel( i18n(
"Separator &width:"), hbSW );
00210 sbSepWidth =
new QSpinBox( 1, 50, 1, hbSW );
00211 lSW->setBuddy( sbSepWidth);
00212
00213 QHBox *hbPadding =
new QHBox( gbGeneral );
00214 QLabel *lSpacing =
new QLabel( i18n(
"&Padding:"), hbPadding );
00215 sbSpacing =
new QSpinBox( 0, 100, 1, hbPadding );
00216 lSpacing->setBuddy( sbSpacing );
00217
00218 QGroupBox *gbCards =
new QGroupBox( 1, Qt::Horizontal, i18n(
"Cards"), loTab );
00219
00220 QHBox *hbMargin =
new QHBox( gbCards );
00221 QLabel *lMargin =
new QLabel( i18n(
"&Margin:"), hbMargin );
00222 sbMargin =
new QSpinBox( 0, 100, 1, hbMargin );
00223 lMargin->setBuddy( sbMargin );
00224
00225 cbDrawBorders =
new QCheckBox( i18n(
"Draw &borders"), gbCards );
00226
00227 loTab->setStretchFactor(
new QWidget( loTab ), 1 );
00228
00229 QWhatsThis::add( sbMargin, i18n(
00230
"The item margin is the distance (in pixels) between the item edge and the item data. Most noticeably, "
00231
"incrementing the item margin will add space between the focus rectangle and the item data."
00232 ) );
00233 QWhatsThis::add( lMargin, QWhatsThis::textFor( sbMargin ) );
00234 QWhatsThis::add( sbSpacing, i18n(
00235
"The item spacing decides the distance (in pixels) between the items and anything else: the view "
00236
"borders, other items or column separators."
00237 ) );
00238 QWhatsThis::add( lSpacing, QWhatsThis::textFor( sbSpacing ) );
00239 QWhatsThis::add( sbSepWidth, i18n(
"Sets the width of column separators") );
00240 QWhatsThis::add( lSW, QWhatsThis::textFor( sbSepWidth ) );
00241
00242 tabs->addTab( loTab, i18n(
"&Layout") );
00243
00244
00245 QVBox *colorTab =
new QVBox(
this,
"colortab" );
00246 colorTab->setSpacing( spacing );
00247 colorTab->setMargin( spacing );
00248 cbEnableCustomColors =
new QCheckBox( i18n(
"&Enable custom colors"), colorTab );
00249 connect( cbEnableCustomColors, SIGNAL(clicked()),
this, SLOT(enableColors()) );
00250 lbColors =
new ColorListBox( colorTab );
00251 tabs->addTab( colorTab, i18n(
"&Colors") );
00252
00253 QWhatsThis::add( cbEnableCustomColors, i18n(
00254
"If custom colors are enabled, you may choose the colors for the view below. "
00255
"Otherwise colors from your current KDE color scheme are used."
00256 ) );
00257 QWhatsThis::add( lbColors, i18n(
00258
"Double click or press RETURN on a item to select a color for the related strings in the view."
00259 ) );
00260
00261
00262 QVBox *fntTab =
new QVBox(
this,
"fonttab" );
00263
00264 fntTab->setSpacing( spacing );
00265 fntTab->setMargin( spacing );
00266
00267 cbEnableCustomFonts =
new QCheckBox( i18n(
"&Enable custom fonts"), fntTab );
00268 connect( cbEnableCustomFonts, SIGNAL(clicked()),
this, SLOT(enableFonts()) );
00269
00270 vbFonts =
new QWidget( fntTab );
00271 QGridLayout *gFnts =
new QGridLayout( vbFonts, 2, 3 );
00272 gFnts->setSpacing( spacing );
00273 gFnts->setAutoAdd(
true );
00274 gFnts->setColStretch( 1, 1 );
00275 QLabel *lTFnt =
new QLabel( i18n(
"&Text font:"), vbFonts );
00276 lTextFont =
new QLabel( vbFonts );
00277 lTextFont->setFrameStyle( QFrame::Panel|QFrame::Sunken );
00278 btnFont =
new KPushButton( i18n(
"Choose..."), vbFonts );
00279 lTFnt->setBuddy( btnFont );
00280 connect( btnFont, SIGNAL(clicked()),
this, SLOT(setTextFont()) );
00281
00282 QLabel *lHFnt =
new QLabel( i18n(
"&Header font:"), vbFonts );
00283 lHeaderFont =
new QLabel( vbFonts );
00284 lHeaderFont->setFrameStyle( QFrame::Panel|QFrame::Sunken );
00285 btnHeaderFont =
new KPushButton( i18n(
"Choose..."), vbFonts );
00286 lHFnt->setBuddy( btnHeaderFont );
00287 connect( btnHeaderFont, SIGNAL(clicked()),
this, SLOT(setHeaderFont()) );
00288
00289 fntTab->setStretchFactor(
new QWidget( fntTab ), 1 );
00290
00291 QWhatsThis::add( cbEnableCustomFonts, i18n(
00292
"If custom fonts are enabled, you may choose which fonts to use for this view below. "
00293
"Otherwise the default KDE font will be used, in bold style for the header and "
00294
"normal style for the data."
00295 ) );
00296
00297 tabs->addTab( fntTab, i18n(
"&Fonts") );
00298
00299
00300 QVBox *behaviourTab =
new QVBox(
this );
00301 behaviourTab->setMargin( margin );
00302 behaviourTab->setSpacing( spacing );
00303
00304 cbShowEmptyFields =
new QCheckBox( i18n(
"Show &empty fields"), behaviourTab );
00305 cbShowFieldLabels =
new QCheckBox( i18n(
"Show field &labels"), behaviourTab );
00306
00307 behaviourTab->setStretchFactor(
new QWidget( behaviourTab ), 1 );
00308
00309 tabs->addTab( behaviourTab, i18n(
"Be&havior") );
00310
00311 }
00312
00313
void CardViewLookNFeelPage::updateFontLabel( QFont fnt, QLabel *l )
00314 {
00315 l->setFont( fnt );
00316 l->setText( QString( fnt.family() +
" %1" ).arg( fnt.pointSize() ) );
00317 }
00318
00319
#include "configurecardviewdialog.moc"