summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--kaddressbook/viewmanager.cpp5
-rw-r--r--kaddressbook/views/configuretableviewdialog.cpp216
-rw-r--r--kaddressbook/views/configuretableviewdialog.h21
3 files changed, 223 insertions, 19 deletions
diff --git a/kaddressbook/viewmanager.cpp b/kaddressbook/viewmanager.cpp
index bec1862..45c7b55 100644
--- a/kaddressbook/viewmanager.cpp
+++ b/kaddressbook/viewmanager.cpp
@@ -331,12 +331,17 @@ void ViewManager::editView()
331 mActionSelectFilter->setCurrentItem( pos ); 331 mActionSelectFilter->setCurrentItem( pos );
332 setActiveFilter( pos ); 332 setActiveFilter( pos );
333 } 333 }
334 mCore->setSearchFields( mActiveView->fields() ); 334 mCore->setSearchFields( mActiveView->fields() );
335//US performance optimization. setActiveFilter calls also mActiveView->refresh() 335//US performance optimization. setActiveFilter calls also mActiveView->refresh()
336//US mActiveView->refresh(); 336//US mActiveView->refresh();
337
338
339 //US this is a bugfix, that we get notified if we change a views configuration
340 emit modified();
341
337 } 342 }
338 343
339 } 344 }
340 delete dlg; 345 delete dlg;
341} 346}
342 347
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
@@ -21,30 +21,37 @@
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 )
@@ -74,13 +81,13 @@ void ConfigureTableViewWidget::saveSettings( KConfig *config )
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}
@@ -93,63 +100,240 @@ void LookAndFeelPage::restoreSettings( KConfig *config )
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
diff --git a/kaddressbook/views/configuretableviewdialog.h b/kaddressbook/views/configuretableviewdialog.h
index 8392710..003ccf8 100644
--- a/kaddressbook/views/configuretableviewdialog.h
+++ b/kaddressbook/views/configuretableviewdialog.h
@@ -23,18 +23,21 @@
23 23
24#ifndef CONFIGURETABLEVIEWDIALOG_H 24#ifndef CONFIGURETABLEVIEWDIALOG_H
25#define CONFIGURETABLEVIEWDIALOG_H 25#define CONFIGURETABLEVIEWDIALOG_H
26 26
27#include "viewconfigurewidget.h" 27#include "viewconfigurewidget.h"
28 28
29#include <qvbox.h>
30
29class QString; 31class QString;
30class QWidget; 32class QWidget;
31class QRadioButton; 33class QRadioButton;
32class QCheckBox; 34class QCheckBox;
33class KURLRequester; 35class KURLRequester;
34class KConfig; 36class KConfig;
37class QLabel;
35 38
36namespace KABC { class AddressBook; } 39namespace KABC { class AddressBook; }
37 40
38class LookAndFeelPage; 41class LookAndFeelPage;
39 42
40/** 43/**
@@ -57,29 +60,41 @@ class ConfigureTableViewWidget : public ViewConfigureWidget
57 LookAndFeelPage *mPage; 60 LookAndFeelPage *mPage;
58}; 61};
59 62
60/** 63/**
61 Internal class. It is only defined here for moc 64 Internal class. It is only defined here for moc
62*/ 65*/
63class LookAndFeelPage : public QWidget 66class LookAndFeelPage : public QVBox
64{ 67{
65 Q_OBJECT 68 Q_OBJECT
66 69
67 public: 70 public:
68 LookAndFeelPage( QWidget *parent, const char *name = 0 ); 71 LookAndFeelPage( QWidget *parent, const char *name = 0 );
69 ~LookAndFeelPage() {} 72 ~LookAndFeelPage() {}
70 73
71 void restoreSettings( KConfig* ); 74 void restoreSettings( KConfig* );
72 void saveSettings( KConfig* ); 75 void saveSettings( KConfig* );
73 76
74 protected slots: 77 protected slots:
75 void enableBackgroundToggled( bool ); 78 void enableBackgroundToggled( bool );
76 79 void setTextFont();
80 void setHeaderFont();
81 void enableFonts();
82 void enableColors();
83
77 private: 84 private:
78 void initGUI(); 85 void initGUI();
79 86 void updateFontLabel( QFont, QLabel * );
87
88 QCheckBox *cbEnableCustomFonts,
89 *cbEnableCustomColors;
90 class ColorListBox *lbColors;
91 QLabel *lTextFont, *lHeaderFont;
92 class QPushButton *btnFont, *btnHeaderFont;
93 class QWidget* vbFonts;
94
80 QRadioButton *mAlternateButton; 95 QRadioButton *mAlternateButton;
81 QRadioButton *mLineButton; 96 QRadioButton *mLineButton;
82 QRadioButton *mNoneButton; 97 QRadioButton *mNoneButton;
83 QCheckBox *mToolTipBox; 98 QCheckBox *mToolTipBox;
84 KURLRequester *mBackgroundName; 99 KURLRequester *mBackgroundName;
85 QCheckBox *mBackgroundBox; 100 QCheckBox *mBackgroundBox;