summaryrefslogtreecommitdiffabout
path: root/kaddressbook/views/configuretableviewdialog.cpp
Unidiff
Diffstat (limited to 'kaddressbook/views/configuretableviewdialog.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--kaddressbook/views/configuretableviewdialog.cpp216
1 files changed, 200 insertions, 16 deletions
diff --git a/kaddressbook/views/configuretableviewdialog.cpp b/kaddressbook/views/configuretableviewdialog.cpp
index e1cc63e..cd09bcf 100644
--- a/kaddressbook/views/configuretableviewdialog.cpp
+++ b/kaddressbook/views/configuretableviewdialog.cpp
@@ -15,42 +15,49 @@
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 18
19 As a special exception, permission is given to link this program 19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable, 20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution. 21 without including the source code for Qt in the source distribution.
22*/ 22*/
23 23
24#include <qstring.h> 24#include <qstring.h>
25#include <qwidget.h> 25#include <qwidget.h>
26#include <qlayout.h> 26#include <qlayout.h>
27#include <qlabel.h>
27#include <qradiobutton.h> 28#include <qradiobutton.h>
28#include <qcheckbox.h> 29#include <qcheckbox.h>
29#include <qvbox.h> 30#include <qvbox.h>
30#include <qbuttongroup.h> 31#include <qbuttongroup.h>
32#include <qtabwidget.h>
33#include <qwhatsthis.h>
34#include <qpushbutton.h>
31 35
32#include <kglobal.h> 36#include <kglobal.h>
33#include <klocale.h> 37#include <klocale.h>
34#include <klineedit.h> 38#include <klineedit.h>
35#include <kurlrequester.h> 39#include <kurlrequester.h>
36#include <kiconloader.h> 40#include <kiconloader.h>
41#include <kfontdialog.h>
37 42
38#ifndef KAB_EMBEDDED 43#ifndef KAB_EMBEDDED
39#include <kimageio.h> 44#include <kimageio.h>
40#else //KAB_EMBEDDED 45#else //KAB_EMBEDDED
41#endif //KAB_EMBEDDED 46#endif //KAB_EMBEDDED
42 47
43#include <kconfig.h> 48#include <kconfig.h>
44 49
50#include "colorlistbox.h"
51
45#include "configuretableviewdialog.h" 52#include "configuretableviewdialog.h"
46 53
47ConfigureTableViewWidget::ConfigureTableViewWidget( KABC::AddressBook *ab, 54ConfigureTableViewWidget::ConfigureTableViewWidget( KABC::AddressBook *ab,
48 QWidget *parent, 55 QWidget *parent,
49 const char *name ) 56 const char *name )
50 : ViewConfigureWidget( ab, parent, name ) 57 : ViewConfigureWidget( ab, parent, name )
51{ 58{
52 QWidget *page = addPage( i18n( "Look & Feel" ), QString::null, 59 QWidget *page = addPage( i18n( "Look & Feel" ), QString::null,
53 KGlobal::iconLoader()->loadIcon( "looknfeel", 60 KGlobal::iconLoader()->loadIcon( "looknfeel",
54 KIcon::Panel ) ); 61 KIcon::Panel ) );
55 62
56 mPage = new LookAndFeelPage( page ); 63 mPage = new LookAndFeelPage( page );
@@ -68,88 +75,265 @@ void ConfigureTableViewWidget::restoreSettings( KConfig *config )
68} 75}
69 76
70void ConfigureTableViewWidget::saveSettings( KConfig *config ) 77void ConfigureTableViewWidget::saveSettings( KConfig *config )
71{ 78{
72 ViewConfigureWidget::saveSettings( config ); 79 ViewConfigureWidget::saveSettings( config );
73 80
74 mPage->saveSettings( config ); 81 mPage->saveSettings( config );
75} 82}
76 83
77 84
78 85
79LookAndFeelPage::LookAndFeelPage(QWidget *parent, const char *name) 86LookAndFeelPage::LookAndFeelPage(QWidget *parent, const char *name)
80 : QWidget(parent, name) 87 : QVBox(parent, name)
81{ 88{
82 initGUI(); 89 initGUI();
83 90
84 // Set initial state 91 // Set initial state
85 enableBackgroundToggled(mBackgroundBox->isChecked()); 92 enableBackgroundToggled(mBackgroundBox->isChecked());
86} 93}
87 94
88void LookAndFeelPage::restoreSettings( KConfig *config ) 95void LookAndFeelPage::restoreSettings( KConfig *config )
89{ 96{
90 mAlternateButton->setChecked(config->readBoolEntry("ABackground", true)); 97 mAlternateButton->setChecked(config->readBoolEntry("ABackground", true));
91 mLineButton->setChecked(config->readBoolEntry("SingleLine", false)); 98 mLineButton->setChecked(config->readBoolEntry("SingleLine", false));
92 mToolTipBox->setChecked(config->readBoolEntry("ToolTips", true)); 99 mToolTipBox->setChecked(config->readBoolEntry("ToolTips", true));
93 100
94 if (!mAlternateButton->isChecked() & !mLineButton->isChecked()) 101 if (!mAlternateButton->isChecked() & !mLineButton->isChecked())
95 mNoneButton->setChecked(true); 102 mNoneButton->setChecked(true);
96 103
97 mBackgroundBox->setChecked(config->readBoolEntry("Background", false)); 104 mBackgroundBox->setChecked(config->readBoolEntry("Background", false));
98 mBackgroundName->lineEdit()->setText(config->readEntry("BackgroundName")); 105 mBackgroundName->lineEdit()->setText(config->readEntry("BackgroundName"));
106
107 // colors
108 cbEnableCustomColors->setChecked( config->readBoolEntry( "EnableCustomColors", false ) );
109 QColor c;
110qDebug("LookAndFeelPage::restoreSettings make base color configurable");
111
112#ifndef KAB_EMBEDDED
113 c = KGlobalSettings::baseColor();
114#else //KAB_EMBEDDED
115 c = QColor(0,0,0);
116#endif //KAB_EMBEDDED
117
118 lbColors->insertItem( new ColorListItem( i18n("Background Color"),
119 config->readColorEntry( "BackgroundColor", &c ) ) );
120 c = colorGroup().foreground();
121 lbColors->insertItem( new ColorListItem( i18n("Text Color"),
122 config->readColorEntry( "TextColor", &c ) ) );
123 c = colorGroup().button();
124 lbColors->insertItem( new ColorListItem( i18n("Header Background Color"),
125 config->readColorEntry( "HeaderBackgroundColor", &c ) ) );
126 c = colorGroup().buttonText();
127 lbColors->insertItem( new ColorListItem( i18n("Header Text Color"),
128 config->readColorEntry( "HeaderTextColor", &c ) ) );
129 c = colorGroup().highlight();
130 lbColors->insertItem( new ColorListItem( i18n("Highlight Color"),
131 config->readColorEntry( "HighlightColor", &c ) ) );
132 c = colorGroup().highlightedText();
133 lbColors->insertItem( new ColorListItem( i18n("Highlighted Text Color"),
134 config->readColorEntry( "HighlightedTextColor", &c ) ) );
135 c = colorGroup().background();
136 lbColors->insertItem( new ColorListItem( i18n("Alternating Background Color"),
137 config->readColorEntry( "AlternatingBackgroundColor", &c ) ) );
138
139 enableColors();
140
141 // fonts
142 QFont fnt = font();
143 updateFontLabel( config->readFontEntry( "TextFont", &fnt ), (QLabel*)lTextFont );
144 fnt.setBold( true );
145 updateFontLabel( config->readFontEntry( "HeaderFont", &fnt ), (QLabel*)lHeaderFont );
146 cbEnableCustomFonts->setChecked( config->readBoolEntry( "EnableCustomFonts", false ) );
147 enableFonts();
148
99} 149}
100 150
101void LookAndFeelPage::saveSettings( KConfig *config ) 151void LookAndFeelPage::saveSettings( KConfig *config )
102{ 152{
103 config->writeEntry("ABackground", mAlternateButton->isChecked()); 153 config->writeEntry("ABackground", mAlternateButton->isChecked());
104 config->writeEntry("SingleLine", mLineButton->isChecked()); 154 config->writeEntry("SingleLine", mLineButton->isChecked());
105 config->writeEntry("ToolTips", mToolTipBox->isChecked()); 155 config->writeEntry("ToolTips", mToolTipBox->isChecked());
106 config->writeEntry("Background", mBackgroundBox->isChecked()); 156 config->writeEntry("Background", mBackgroundBox->isChecked());
107 config->writeEntry("BackgroundName", mBackgroundName->lineEdit()->text()); 157 config->writeEntry("BackgroundName", mBackgroundName->lineEdit()->text());
158
159 // colors
160 config->writeEntry( "EnableCustomColors", cbEnableCustomColors->isChecked() );
161 if ( cbEnableCustomColors->isChecked() ) // ?? - Hmmm.
162 {
163 config->writeEntry( "BackgroundColor", lbColors->color( 0 ) );
164 config->writeEntry( "TextColor", lbColors->color( 1 ) );
165 config->writeEntry( "HeaderBackgroundColor", lbColors->color( 2 ) );
166 config->writeEntry( "HeaderTextColor", lbColors->color( 3 ) );
167 config->writeEntry( "HighlightColor", lbColors->color( 4 ) );
168 config->writeEntry( "HighlightedTextColor", lbColors->color( 5 ) );
169 config->writeEntry( "AlternatingBackgroundColor", lbColors->color( 6 ) );
170 }
171 // fonts
172 config->writeEntry( "EnableCustomFonts", cbEnableCustomFonts->isChecked() );
173 if ( cbEnableCustomFonts->isChecked() )
174 {
175 config->writeEntry( "TextFont", lTextFont->font() );
176 config->writeEntry( "HeaderFont", lHeaderFont->font() );
177 }
178
179}
180
181void LookAndFeelPage::setTextFont()
182{
183 QFont f( lTextFont->font() );
184#ifndef KAB_EMBEDDED
185 if ( KFontDialog::getFont( f, false, this ) == QDialog::Accepted )
186 updateFontLabel( f, lTextFont );
187#else //KAB_EMBEDDED
188 bool ok;
189 QFont fout = KFontDialog::getFont( f, ok);
190 if ( ok )
191 updateFontLabel( fout, lTextFont );
192#endif //KAB_EMBEDDED
193}
194
195void LookAndFeelPage::setHeaderFont()
196{
197 QFont f( lHeaderFont->font() );
198#ifndef KAB_EMBEDDED
199 if ( KFontDialog::getFont( f,false, this ) == QDialog::Accepted )
200 updateFontLabel( f, lHeaderFont );
201#else //KAB_EMBEDDED
202 bool ok;
203 QFont fout = KFontDialog::getFont( f, ok);
204 if ( ok )
205 updateFontLabel( fout, lHeaderFont );
206#endif //KAB_EMBEDDED
207}
208
209void LookAndFeelPage::enableFonts()
210{
211 vbFonts->setEnabled( cbEnableCustomFonts->isChecked() );
212}
213
214void LookAndFeelPage::enableColors()
215{
216 lbColors->setEnabled( cbEnableCustomColors->isChecked() );
108} 217}
109 218
110void LookAndFeelPage::initGUI() 219void LookAndFeelPage::initGUI()
111{ 220{
112 QVBoxLayout *layout = new QVBoxLayout(this, 0, KDialogBase::spacingHint()); 221 int spacing = KDialog::spacingHint();
113 222 int margin = KDialog::marginHint();
223
224 QTabWidget *tabs = new QTabWidget( this );
225
226 // General
227 QVBox *generalTab = new QVBox( this, "generaltab" );
228
229 generalTab->setSpacing( spacing );
230 generalTab->setMargin( margin );
231
114 QButtonGroup *group = new QButtonGroup(1, Qt::Horizontal, 232 QButtonGroup *group = new QButtonGroup(1, Qt::Horizontal,
115 i18n("Row Separator"), this); 233 i18n("Row Separator"), generalTab);
116 layout->addWidget(group);
117 234
118 mAlternateButton = new QRadioButton(i18n("Alternating backgrounds"), 235 mAlternateButton = new QRadioButton(i18n("Alternating backgrounds"),
119 group, "mAlternateButton"); 236 group, "mAlternateButton");
120 mLineButton = new QRadioButton(i18n("Single line"), group, "mLineButton"); 237 mLineButton = new QRadioButton(i18n("Single line"), group, "mLineButton");
121 mNoneButton = new QRadioButton(i18n("None"), group, "mNoneButton"); 238 mNoneButton = new QRadioButton(i18n("None"), group, "mNoneButton");
122 239
123 // Background Checkbox/Selector 240 mBackgroundBox = new QCheckBox(i18n("Enable background image:"), generalTab,
124 QHBoxLayout *backgroundLayout = new QHBoxLayout();
125 layout->addLayout(backgroundLayout);
126
127 mBackgroundBox = new QCheckBox(i18n("Enable background image:"), this,
128 "mBackgroundBox"); 241 "mBackgroundBox");
129 connect(mBackgroundBox, SIGNAL(toggled(bool)), 242 connect(mBackgroundBox, SIGNAL(toggled(bool)),
130 SLOT(enableBackgroundToggled(bool))); 243 SLOT(enableBackgroundToggled(bool)));
131 backgroundLayout->addWidget(mBackgroundBox);
132 244
133 mBackgroundName = new KURLRequester(this, "mBackgroundName"); 245 mBackgroundName = new KURLRequester(generalTab, "mBackgroundName");
134#ifndef KAB_EMBEDDED 246#ifndef KAB_EMBEDDED
135 mBackgroundName->setMode(KFile::File | KFile::ExistingOnly | 247 mBackgroundName->setMode(KFile::File | KFile::ExistingOnly |
136 KFile::LocalOnly); 248 KFile::LocalOnly);
137 mBackgroundName->setFilter(KImageIO::pattern(KImageIO::Reading)); 249 mBackgroundName->setFilter(KImageIO::pattern(KImageIO::Reading));
138#endif //KAB_EMBEDDED 250#endif //KAB_EMBEDDED
139 251
140 backgroundLayout->addWidget(mBackgroundName);
141
142 // ToolTip Checkbox 252 // ToolTip Checkbox
143 mToolTipBox = new QCheckBox(i18n("Enable contact tooltips"), this, 253 mToolTipBox = new QCheckBox(i18n("Enable contact tooltips"), generalTab,
144 "mToolTipBox"); 254 "mToolTipBox");
145 layout->addWidget(mToolTipBox); 255
256 tabs->addTab( generalTab, i18n("&General") );
257
258 // Colors
259 QVBox *colorTab = new QVBox( this, "colortab" );
260 colorTab->setSpacing( spacing );
261 colorTab->setMargin( spacing );
262 cbEnableCustomColors = new QCheckBox( i18n("&Enable custom Colors"), colorTab );
263 connect( cbEnableCustomColors, SIGNAL(clicked()), this, SLOT(enableColors()) );
264 lbColors = new ColorListBox( colorTab );
265 tabs->addTab( colorTab, i18n("&Colors") );
266
267 QWhatsThis::add( cbEnableCustomColors, i18n(
268 "If custom colors are enabled, you may choose the colors for the view below. "
269 "Otherwise colors from your current KDE color scheme are used."
270 ) );
271 QWhatsThis::add( lbColors, i18n(
272 "Double click or press RETURN on a item to select a color for the related strings in the view."
273 ) );
274
275 // Fonts
276 QVBox *fntTab = new QVBox( this, "fonttab" );
277
278 fntTab->setSpacing( spacing );
279 fntTab->setMargin( spacing );
280
281 cbEnableCustomFonts = new QCheckBox( i18n("&Enable custom fonts"), fntTab );
282 connect( cbEnableCustomFonts, SIGNAL(clicked()), this, SLOT(enableFonts()) );
283
284 vbFonts = new QWidget( fntTab );
285 QGridLayout *gFnts = new QGridLayout( vbFonts, 2, 3 );
286 gFnts->setSpacing( spacing );
287 gFnts->setAutoAdd( true );
288 gFnts->setColStretch( 1, 1 );
289 QLabel *lTFnt = new QLabel( i18n("&Text font:"), vbFonts );
290 lTextFont = new QLabel( vbFonts );
291 lTextFont->setFrameStyle( QFrame::Panel|QFrame::Sunken );
292#ifndef KAB_EMBEDDED
293 btnFont = new KPushButton( i18n("Choose..."), vbFonts );
294#else //KAB_EMBEDDED
295 btnFont = new QPushButton( i18n("Choose..."), vbFonts );
296#endif //KAB_EMBEDDED
297
298 lTFnt->setBuddy( btnFont );
299
300 connect( btnFont, SIGNAL(clicked()), this, SLOT(setTextFont()) );
301
302 QLabel *lHFnt = new QLabel( i18n("&Header font:"), vbFonts );
303 lHeaderFont = new QLabel( vbFonts );
304 lHeaderFont->setFrameStyle( QFrame::Panel|QFrame::Sunken );
305#ifndef KAB_EMBEDDED
306 btnHeaderFont = new KPushButton( i18n("Choose..."), vbFonts );
307#else //KAB_EMBEDDED
308 btnHeaderFont = new QPushButton( i18n("Choose..."), vbFonts );
309#endif //KAB_EMBEDDED
310 lHFnt->setBuddy( btnHeaderFont );
311 connect( btnHeaderFont, SIGNAL(clicked()), this, SLOT(setHeaderFont()) );
312
313 fntTab->setStretchFactor( new QWidget( fntTab ), 1 );
314
315 QWhatsThis::add( cbEnableCustomFonts, i18n(
316 "If custom fonts are enabled, you may choose which fonts to use for this view below. "
317 "Otherwise the default KDE font will be used, in bold style for the header and "
318 "normal style for the data."
319 ) );
320
321 tabs->addTab( fntTab, i18n("&Fonts") );
322
146} 323}
147 324
148void LookAndFeelPage::enableBackgroundToggled(bool enabled) 325void LookAndFeelPage::enableBackgroundToggled(bool enabled)
149{ 326{
150 mBackgroundName->setEnabled(enabled); 327 mBackgroundName->setEnabled(enabled);
151} 328}
152 329
330
331void LookAndFeelPage::updateFontLabel( QFont fnt, QLabel *l )
332{
333 l->setFont( fnt );
334 l->setText( QString( fnt.family() + " %1" ).arg( fnt.pointSize() ) );
335}
336
153#ifndef KAB_EMBEDDED 337#ifndef KAB_EMBEDDED
154#include "configuretableviewdialog.moc" 338#include "configuretableviewdialog.moc"
155#endif //KAB_EMBEDDED 339#endif //KAB_EMBEDDED