• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdepim API Reference
  • KDE Home
  • Contact Us
 

korganizer

  • sources
  • kde-4.12
  • kdepim
  • korganizer
koprefsdialog.cpp
Go to the documentation of this file.
1 /*
2  This file is part of KOrganizer.
3 
4  Copyright (c) 2000-2003 Cornelius Schumacher <schumacher@kde.org>
5  Copyright (C) 2003-2004 Reinhold Kainhofer <reinhold@kainhofer.com>
6 
7  This program is free software; you can redistribute it and/or modify
8  it under the terms of the GNU General Public License as published by
9  the Free Software Foundation; either version 2 of the License, or
10  (at your option) any later version.
11 
12  This program is distributed in the hope that it will be useful,
13  but WITHOUT ANY WARRANTY; without even the implied warranty of
14  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  GNU General Public License for more details.
16 
17  You should have received a copy of the GNU General Public License along
18  with this program; if not, write to the Free Software Foundation, Inc.,
19  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
20 
21  As a special exception, permission is given to link this program
22  with any edition of Qt, and distribute the resulting executable,
23  without including the source code for Qt in the source distribution.
24 */
25 
26 #include "koprefsdialog.h"
27 #include "kitemiconcheckcombo.h"
28 #include "kocore.h"
29 #include "koglobals.h"
30 #include "koprefs.h"
31 #include "ui_kogroupwareprefspage.h"
32 
33 #include <calendarsupport/kcalprefs.h>
34 #include <calendarsupport/categoryconfig.h>
35 
36 #include <incidenceeditor-ng/globalsettings.h>
37 
38 #include <Akonadi/AgentFilterProxyModel>
39 #include <Akonadi/AgentInstanceCreateJob>
40 #include <Akonadi/AgentManager>
41 #include <Akonadi/AgentTypeDialog>
42 #include <Akonadi/CollectionComboBox>
43 #include <Akonadi/CollectionModel>
44 #include <akonadi/calendar/calendarsettings.h>
45 
46 #include <KCalCore/Event>
47 #include <KCalCore/Journal>
48 
49 #include <KHolidays/Holidays>
50 
51 #include <Mailtransport/TransportManagementWidget>
52 
53 #include <KCalendarSystem>
54 #include <KColorButton>
55 #include <KComboBox>
56 #include <KHBox>
57 #include <KIntSpinBox>
58 #include <KMessageBox>
59 #include <KService>
60 #include <KStandardDirs>
61 #include <KTabWidget>
62 #include <KTimeComboBox>
63 #include <KUrlRequester>
64 #include <KWindowSystem>
65 
66 #include <QCheckBox>
67 #include <QFormLayout>
68 #include <QGridLayout>
69 #include <QGroupBox>
70 #include <QLabel>
71 #include <QListWidget>
72 #include <QRadioButton>
73 #include <QTimeEdit>
74 #include <QTreeWidget>
75 #include <QVBoxLayout>
76 
77 KOPrefsDialogMain::KOPrefsDialogMain( const KComponentData &inst, QWidget *parent )
78  : KPrefsModule( KOPrefs::instance(), inst, parent )
79 {
80  QBoxLayout *topTopLayout = new QVBoxLayout( this );
81  KTabWidget *tabWidget = new KTabWidget( this );
82  topTopLayout->addWidget( tabWidget );
83 
84  // Personal Settings
85  QWidget *personalFrame = new QWidget( this );
86  QVBoxLayout *personalLayout = new QVBoxLayout( personalFrame );
87  tabWidget->addTab( personalFrame, KIcon( QLatin1String("preferences-desktop-personal") ),
88  i18nc( "@title:tab personal settings", "Personal" ) );
89 
90  KPIM::KPrefsWidBool *emailControlCenter =
91  addWidBool( CalendarSupport::KCalPrefs::instance()->emailControlCenterItem(), personalFrame );
92  connect( emailControlCenter->checkBox(), SIGNAL(toggled(bool)), SLOT(toggleEmailSettings(bool)) );
93  personalLayout->addWidget( emailControlCenter->checkBox() );
94 
95  mUserEmailSettings =
96  new QGroupBox( i18nc( "@title:group email settings", "Email Settings" ), personalFrame );
97 
98  personalLayout->addWidget( mUserEmailSettings );
99  QFormLayout *emailSettingsLayout = new QFormLayout( mUserEmailSettings );
100  KPIM::KPrefsWidString *s =
101  addWidString( CalendarSupport::KCalPrefs::instance()->userNameItem(), mUserEmailSettings );
102  emailSettingsLayout->addRow ( s->label(), s->lineEdit() );
103 
104  s=addWidString( CalendarSupport::KCalPrefs::instance()->userEmailItem(), mUserEmailSettings );
105  emailSettingsLayout->addRow ( s->label(), s->lineEdit() );
106 
107  KPIM::KPrefsWidRadios *defaultEmailAttachMethod =
108  addWidRadios(
109  IncidenceEditorNG::GlobalSettings::self()->defaultEmailAttachMethodItem(), personalFrame );
110  personalLayout->addWidget( defaultEmailAttachMethod->groupBox() );
111  personalLayout->addStretch( 1 );
112 
113  // Save Settings
114  QFrame *saveFrame = new QFrame( this );
115  tabWidget->addTab( saveFrame, KIcon( QLatin1String("document-save") ),
116  i18nc( "@title:tab", "Save" ) );
117  QVBoxLayout *saveLayout = new QVBoxLayout( saveFrame );
118 
119  QGroupBox *saveGroupBox =
120  new QGroupBox( i18nc( "@title:group", "Exporting Calendar" ), saveFrame );
121  saveLayout->addWidget( saveGroupBox );
122  QVBoxLayout *saveGroupLayout = new QVBoxLayout;
123  saveGroupBox->setLayout( saveGroupLayout );
124 
125  KPIM::KPrefsWidBool *autoExportHTML =
126  addWidBool( KOPrefs::instance()->autoExportItem(), saveGroupBox );
127  saveGroupLayout->addWidget( autoExportHTML->checkBox() );
128 
129  QBoxLayout *intervalLayout = new QHBoxLayout;
130  saveGroupLayout->addLayout( intervalLayout );
131 
132  KPIM::KPrefsWidInt *autoExportInterval =
133  addWidInt( KOPrefs::instance()->autoExportIntervalItem(), saveGroupBox );
134  connect( autoExportHTML->checkBox(), SIGNAL(toggled(bool)),
135  autoExportInterval->label(), SLOT(setEnabled(bool)) );
136  connect( autoExportHTML->checkBox(), SIGNAL(toggled(bool)),
137  autoExportInterval->spinBox(), SLOT(setEnabled(bool)) );
138  intervalLayout->addWidget( autoExportInterval->label() );
139  intervalLayout->addWidget( autoExportInterval->spinBox() );
140 
141  KPIM::KPrefsWidBool *confirmItem =
142  addWidBool( KOPrefs::instance()->confirmItem(), saveFrame );
143  saveLayout->addWidget( confirmItem->checkBox() );
144  KPIM::KPrefsWidRadios *destinationItem =
145  addWidRadios( KOPrefs::instance()->destinationItem(), saveFrame );
146 
147  saveLayout->addWidget( destinationItem->groupBox() );
148  saveLayout->addStretch( 1 );
149 
150  // System Tray Settings
151  QFrame *systrayFrame = new QFrame( this );
152  QVBoxLayout *systrayLayout = new QVBoxLayout( systrayFrame );
153  tabWidget->addTab( systrayFrame, KIcon( QLatin1String("preferences-other") ),
154  i18nc( "@title:tab systray settings", "System Tray" ) );
155 
156  QGroupBox *systrayGroupBox =
157  new QGroupBox( i18nc( "@title:group", "Show/Hide Options" ), systrayFrame );
158  systrayLayout->addWidget( systrayGroupBox );
159  QVBoxLayout *systrayGroupLayout = new QVBoxLayout;
160  systrayGroupBox->setLayout( systrayGroupLayout );
161 
162  KPIM::KPrefsWidBool *showReminderDaemonItem =
163  addWidBool( KOPrefs::instance()->showReminderDaemonItem(), systrayGroupBox );
164  systrayGroupLayout->addWidget( showReminderDaemonItem->checkBox() );
165  showReminderDaemonItem->checkBox()->setToolTip(
166  i18nc( "@info:tooltip", "Enable this setting to show the KOrganizer "
167  "reminder daemon in your system tray (recommended)." ) );
168 
169  QLabel *note = new QLabel(
170  i18nc( "@info",
171  "<note>The daemon will continue running even if it is not shown "
172  "in the system tray.</note>" ) );
173  systrayGroupLayout->addWidget( note );
174 
175  systrayLayout->addStretch( 1 );
176 
177  //Calendar Account
178  QFrame *calendarFrame = new QFrame( this );
179  tabWidget->addTab( calendarFrame, KIcon( QLatin1String("office-calendar") ),
180  i18nc( "@title:tab calendar account settings", "Calendars" ) );
181 
182  mAccountsCalendar.setupUi( calendarFrame );
183 
184  mAccountsCalendar.vlay->setSpacing( KDialog::spacingHint() );
185  mAccountsCalendar.vlay->setMargin( KDialog::marginHint() );
186 
187  mAccountsCalendar.mAccountList->agentFilterProxyModel()->
188  addMimeTypeFilter( QLatin1String("text/calendar") );
189  mAccountsCalendar.mAccountList->agentFilterProxyModel()->
190  addCapabilityFilter( QLatin1String("Resource") ); // show only resources, no agents
191  mAccountsCalendar.mFilterAccount->
192  setProxy( mAccountsCalendar.mAccountList->agentFilterProxyModel() );
193 
194  connect( mAccountsCalendar.mAccountList->view()->selectionModel(),
195  SIGNAL(selectionChanged(QItemSelection,QItemSelection)),
196  SLOT(slotAccountSelected()));
197  connect( mAccountsCalendar.mAccountList, SIGNAL(doubleClicked(Akonadi::AgentInstance)),
198  this, SLOT(slotModifySelectedAccount()) );
199 
200  mAccountsCalendar.hlay->insertWidget( 0, mAccountsCalendar.mAccountList );
201 
202  connect( mAccountsCalendar.mAddAccountButton, SIGNAL(clicked()),
203  this, SLOT(slotAddAccount()) );
204 
205  connect( mAccountsCalendar.mModifyAccountButton, SIGNAL(clicked()),
206  this, SLOT(slotModifySelectedAccount()) );
207 
208  const bool hasSelection = !mAccountsCalendar.mAccountList->selectedAgentInstances().isEmpty();
209  mAccountsCalendar.mModifyAccountButton->setEnabled( hasSelection );
210  mAccountsCalendar.mRemoveAccountButton->setEnabled( hasSelection );
211 
212  connect( mAccountsCalendar.mRemoveAccountButton, SIGNAL(clicked()),
213  this, SLOT(slotRemoveSelectedAccount()) );
214 
215  load();
216 }
217 
218 void KOPrefsDialogMain::slotAccountSelected()
219 {
220  if ( mAccountsCalendar.mAccountList->selectedAgentInstances().isEmpty() ) {
221  mAccountsCalendar.mModifyAccountButton->setEnabled( false );
222  mAccountsCalendar.mRemoveAccountButton->setEnabled( false );
223  } else {
224  Akonadi::AgentInstance selectedAgent =
225  mAccountsCalendar.mAccountList->selectedAgentInstances().first();
226 
227  mAccountsCalendar.mModifyAccountButton->setEnabled(
228  !selectedAgent.type().capabilities().contains( QLatin1String( "NoConfig" ) ) );
229 
230  mAccountsCalendar.mRemoveAccountButton->setEnabled( true );
231  }
232 }
233 
234 void KOPrefsDialogMain::slotAddAccount()
235 {
236  //TODO verify this dialog box. We can see note etc...
237  Akonadi::AgentTypeDialog dlg( this );
238  Akonadi::AgentFilterProxyModel *filter = dlg.agentFilterProxyModel();
239  filter->addMimeTypeFilter( QLatin1String("text/calendar") );
240  filter->addCapabilityFilter( QLatin1String("Resource") );
241  if ( dlg.exec() ) {
242  const Akonadi::AgentType agentType = dlg.agentType();
243 
244  if ( agentType.isValid() ) {
245 
246  Akonadi::AgentInstanceCreateJob *job = new Akonadi::AgentInstanceCreateJob( agentType, this );
247  job->configure( this );
248  job->start();
249  }
250  }
251 }
252 
253 void KOPrefsDialogMain::slotModifySelectedAccount()
254 {
255  Akonadi::AgentInstance instance = mAccountsCalendar.mAccountList->currentAgentInstance();
256  if ( instance.isValid() ) {
257  KWindowSystem::allowExternalProcessWindowActivation();
258  instance.configure( this );
259  }
260 }
261 
262 void KOPrefsDialogMain::slotRemoveSelectedAccount()
263 {
264  const Akonadi::AgentInstance instance = mAccountsCalendar.mAccountList->currentAgentInstance();
265  if ( instance.isValid() ) {
266  Akonadi::AgentManager::self()->removeInstance( instance );
267  }
268 
269  slotAccountSelected();
270 }
271 
272 void KOPrefsDialogMain::toggleEmailSettings( bool on )
273 {
274  mUserEmailSettings->setEnabled( !on );
275 /* if (on) {
276  KEMailSettings settings;
277  mNameEdit->setText( settings.getSetting(KEMailSettings::RealName) );
278  mEmailEdit->setText( settings.getSetting(KEMailSettings::EmailAddress) );
279  } else {
280  mNameEdit->setText( CalendarSupport::KCalPrefs::instance()->mName );
281  mEmailEdit->setText( CalendarSupport::KCalPrefs::instance()->mEmail );
282  }*/
283 }
284 
285 extern "C"
286 {
287  KDE_EXPORT KCModule *create_korganizerconfigmain( QWidget *parent, const char * )
288  {
289  return new KOPrefsDialogMain( KOGlobals::self()->componentData(), parent );
290  }
291 }
292 
295 
296 class KOPrefsDialogTime : public KPIM::KPrefsModule
297 {
298  public:
299  KOPrefsDialogTime( const KComponentData &inst, QWidget *parent )
300  : KPIM::KPrefsModule( KOPrefs::instance(), inst, parent )
301  {
302  QVBoxLayout *layout = new QVBoxLayout( this );
303  KTabWidget *tabWidget = new KTabWidget( this );
304  layout->addWidget( tabWidget );
305 
306  QFrame *regionalPage = new QFrame( parent );
307  tabWidget->addTab( regionalPage, KIcon( QLatin1String("flag") ),
308  i18nc( "@title:tab", "Regional" ) );
309 
310  QGridLayout *regionalLayout = new QGridLayout( regionalPage );
311  regionalLayout->setSpacing( KDialog::spacingHint() );
312 
313  QGroupBox *datetimeGroupBox =
314  new QGroupBox( i18nc( "@title:group", "General Time and Date" ), regionalPage );
315  regionalLayout->addWidget( datetimeGroupBox, 0, 0 );
316 
317  QGridLayout *datetimeLayout = new QGridLayout( datetimeGroupBox );
318 
319  KPIM::KPrefsWidTime *dayBegins =
320  addWidTime( KOPrefs::instance()->dayBeginsItem(), regionalPage );
321  datetimeLayout->addWidget( dayBegins->label(), 1, 0 );
322  datetimeLayout->addWidget( dayBegins->timeEdit(), 1, 1 );
323 
324  QGroupBox *holidaysGroupBox =
325  new QGroupBox( i18nc( "@title:group", "Holidays" ), regionalPage );
326  regionalLayout->addWidget( holidaysGroupBox, 1, 0 );
327 
328  QGridLayout *holidaysLayout = new QGridLayout( holidaysGroupBox );
329 
330  // holiday region selection
331  KHBox *holidayRegBox = new KHBox( regionalPage );
332  holidaysLayout->addWidget( holidayRegBox, 1, 0, 1, 2 );
333 
334  QLabel *holidayLabel = new QLabel(
335  i18nc( "@label", "Use holiday region:" ), holidayRegBox );
336  holidayLabel->setWhatsThis( KOPrefs::instance()->holidaysItem()->whatsThis() );
337 
338  mHolidayCombo = new KComboBox( holidayRegBox );
339  connect( mHolidayCombo, SIGNAL(activated(int)), SLOT(slotWidChanged()) );
340 
341  mHolidayCombo->setWhatsThis( KOPrefs::instance()->holidaysItem()->whatsThis() );
342 
343  QStringList regions = KHolidays::HolidayRegion::regionCodes();
344  QMap<QString, QString> regionsMap;
345 
346  foreach ( const QString & regionCode, regions ) {
347  QString name = KHolidays::HolidayRegion::name( regionCode );
348  QString languageName =
349  KGlobal::locale()->languageCodeToName(
350  KHolidays::HolidayRegion::languageCode( regionCode ) );
351  QString label;
352  if ( languageName.isEmpty() ) {
353  label = name;
354  } else {
355  label = i18nc( "Holday region, region language", "%1 (%2)", name, languageName );
356  }
357  regionsMap.insert( label, regionCode );
358  }
359 
360  mHolidayCombo->addItem( i18nc( "No holiday region", "None" ), QString() );
361  QMapIterator<QString, QString> i( regionsMap );
362  while ( i.hasNext() ) {
363  i.next();
364  mHolidayCombo->addItem( i.key(), i.value() );
365  }
366 
367  if ( KOGlobals::self()->holidays() && KOGlobals::self()->holidays()->isValid() ) {
368  mHolidayCombo->setCurrentIndex(
369  mHolidayCombo->findData( KOGlobals::self()->holidays()->regionCode() ) );
370  } else {
371  mHolidayCombo->setCurrentIndex( 0 );
372  }
373 
374  QGroupBox *workingHoursGroupBox =
375  new QGroupBox( i18nc( "@title:group", "Working Period" ), regionalPage );
376  regionalLayout->addWidget( workingHoursGroupBox, 2, 0 );
377 
378  QBoxLayout *workingHoursLayout = new QVBoxLayout( workingHoursGroupBox );
379 
380  QBoxLayout *workDaysLayout = new QHBoxLayout;
381  workingHoursLayout->addLayout( workDaysLayout );
382 
383  // Respect start of week setting
384  int weekStart = KGlobal::locale()->weekStartDay();
385  for ( int i=0; i < 7; ++i ) {
386  const KCalendarSystem *calSys = KOGlobals::self()->calendarSystem();
387  QString weekDayName = calSys->weekDayName( ( i + weekStart + 6 ) % 7 + 1,
388  KCalendarSystem::ShortDayName );
389  int index = ( i + weekStart + 6 ) % 7;
390  mWorkDays[ index ] = new QCheckBox( weekDayName );
391  mWorkDays[ index ]->setWhatsThis(
392  i18nc( "@info:whatsthis",
393  "Check this box to make KOrganizer mark the "
394  "working hours for this day of the week. "
395  "If this is a work day for you, check "
396  "this box, or the working hours will not be "
397  "marked with color." ) );
398 
399  connect( mWorkDays[ index ], SIGNAL(stateChanged(int)), SLOT(slotWidChanged()) );
400 
401  workDaysLayout->addWidget( mWorkDays[ index ] );
402  }
403 
404  KPIM::KPrefsWidTime *workStart =
405  addWidTime( KOPrefs::instance()->workingHoursStartItem() );
406 
407  QHBoxLayout *workStartLayout = new QHBoxLayout;
408  workingHoursLayout->addLayout( workStartLayout );
409 
410  workStartLayout->addWidget( workStart->label() );
411  workStartLayout->addWidget( workStart->timeEdit() );
412 
413  KPIM::KPrefsWidTime *workEnd =
414  addWidTime( KOPrefs::instance()->workingHoursEndItem() );
415 
416  QHBoxLayout *workEndLayout = new QHBoxLayout;
417  workingHoursLayout->addLayout( workEndLayout );
418 
419  workEndLayout->addWidget( workEnd->label() );
420  workEndLayout->addWidget( workEnd->timeEdit() );
421 
422  KPIM::KPrefsWidBool *excludeHolidays =
423  addWidBool( KOPrefs::instance()->excludeHolidaysItem() );
424 
425  workingHoursLayout->addWidget( excludeHolidays->checkBox() );
426 
427  regionalLayout->setRowStretch( 4, 1 );
428 
429  QFrame *defaultPage = new QFrame( parent );
430  tabWidget->addTab( defaultPage, KIcon( QLatin1String("draw-eraser") ),
431  i18nc( "@title:tab", "Default Values" ) );
432  QGridLayout *defaultLayout = new QGridLayout( defaultPage );
433  defaultLayout->setSpacing( KDialog::spacingHint() );
434 
435  QGroupBox *timesGroupBox =
436  new QGroupBox( i18nc( "@title:group", "Appointments" ), defaultPage );
437  defaultLayout->addWidget( timesGroupBox, 0, 0 );
438 
439  QGridLayout *timesLayout = new QGridLayout( timesGroupBox );
440 
441  KPIM::KPrefsWidTime *defaultTime =
442  addWidTime( CalendarSupport::KCalPrefs::instance()->startTimeItem(), defaultPage );
443  timesLayout->addWidget( defaultTime->label(), 0, 0 );
444  timesLayout->addWidget( defaultTime->timeEdit(), 0, 1 );
445 
446  KPIM::KPrefsWidDuration *defaultDuration =
447  addWidDuration( CalendarSupport::KCalPrefs::instance()->defaultDurationItem(),
448  QLatin1String("hh:mm"), defaultPage );
449 
450  timesLayout->addWidget( defaultDuration->label(), 1, 0 );
451  timesLayout->addWidget( defaultDuration->timeEdit(), 1, 1 );
452 
453  QGroupBox *remindersGroupBox =
454  new QGroupBox( i18nc( "@title:group", "Reminders" ), defaultPage );
455  defaultLayout->addWidget( remindersGroupBox, 1, 0 );
456 
457  QGridLayout *remindersLayout = new QGridLayout( remindersGroupBox );
458 
459  QLabel *reminderLabel =
460  new QLabel( i18nc( "@label", "Default reminder time:" ), defaultPage );
461  remindersLayout->addWidget( reminderLabel, 0, 0 );
462  reminderLabel->setWhatsThis(
463  CalendarSupport::KCalPrefs::instance()->reminderTimeItem()->whatsThis() );
464  mReminderTimeSpin = new KIntSpinBox( defaultPage );
465  mReminderTimeSpin->setWhatsThis(
466  CalendarSupport::KCalPrefs::instance()->reminderTimeItem()->whatsThis() );
467  mReminderTimeSpin->setToolTip(
468  CalendarSupport::KCalPrefs::instance()->reminderTimeItem()->toolTip() );
469  connect( mReminderTimeSpin, SIGNAL(valueChanged(int)), SLOT(slotWidChanged()) );
470  remindersLayout->addWidget( mReminderTimeSpin, 0, 1 );
471 
472  mReminderUnitsCombo = new KComboBox( defaultPage );
473  mReminderUnitsCombo->setToolTip(
474  CalendarSupport::KCalPrefs::instance()->reminderTimeUnitsItem()->toolTip() );
475  mReminderUnitsCombo->setWhatsThis(
476  CalendarSupport::KCalPrefs::instance()->reminderTimeUnitsItem()->whatsThis() );
477  connect( mReminderUnitsCombo, SIGNAL(activated(int)), SLOT(slotWidChanged()) );
478  mReminderUnitsCombo->addItem(
479  i18nc( "@item:inlistbox reminder units in minutes", "minute(s)" ) );
480  mReminderUnitsCombo->addItem(
481  i18nc( "@item:inlistbox reminder time units in hours", "hour(s)" ) );
482  mReminderUnitsCombo->addItem(
483  i18nc( "@item:inlistbox reminder time units in days", "day(s)" ) );
484  remindersLayout->addWidget( mReminderUnitsCombo, 0, 2 );
485 
486  QCheckBox *cb =
487  addWidBool(
488  CalendarSupport::KCalPrefs::instance()->defaultAudioFileRemindersItem() )->checkBox();
489  cb->setText( QString() );
490 
491  if ( CalendarSupport::KCalPrefs::instance()->audioFilePathItem()->value().isEmpty() ) {
492  QString defAudioFile = KGlobal::dirs()->findResourceDir( "sound", QLatin1String("KDE-Sys-Warning.ogg") );
493  CalendarSupport::KCalPrefs::instance()->audioFilePathItem()->setValue(
494  defAudioFile + QLatin1String("KDE-Sys-Warning.ogg") );
495  }
496  QString filter =
497  i18n( "*.ogg *.wav *.mp3 *.wma *.flac *.aiff *.raw *.au *.ra|"
498  "Audio Files (*.ogg *.wav *.mp3 *.wma *.flac *.aiff *.raw *.au *.ra)" );
499  KUrlRequester *rq = addWidPath( CalendarSupport::KCalPrefs::instance()->audioFilePathItem(),
500  0, filter )->urlRequester();
501  rq->setEnabled( cb->isChecked() );
502 
503  connect( cb, SIGNAL(toggled(bool)), rq, SLOT(setEnabled(bool)) );
504 
505  QHBoxLayout *audioFileRemindersBox = new QHBoxLayout( remindersGroupBox );
506  audioFileRemindersBox->addWidget( cb );
507  audioFileRemindersBox->addWidget( rq );
508 
509  remindersLayout->addLayout( audioFileRemindersBox, 1, 0 );
510  remindersLayout->addWidget(
511  addWidBool(
512  CalendarSupport::KCalPrefs::instance()->defaultEventRemindersItem() )->checkBox(), 2, 0 );
513  remindersLayout->addWidget(
514  addWidBool(
515  CalendarSupport::KCalPrefs::instance()->defaultTodoRemindersItem() )->checkBox(), 3, 0 );
516 
517  defaultLayout->setRowStretch( 3, 1 );
518  load();
519  }
520 
521  protected:
522  void usrReadConfig()
523  {
524  mReminderTimeSpin->setValue( CalendarSupport::KCalPrefs::instance()->mReminderTime );
525  mReminderUnitsCombo->setCurrentIndex(
526  CalendarSupport::KCalPrefs::instance()->mReminderTimeUnits );
527  for ( int i = 0; i < 7; ++i ) {
528  mWorkDays[i]->setChecked( ( 1 << i ) & ( KOPrefs::instance()->mWorkWeekMask ) );
529  }
530  }
531 
532  void usrWriteConfig()
533  {
534  KOPrefs::instance()->mHolidays =
535  mHolidayCombo->itemData( mHolidayCombo->currentIndex() ).toString();
536 
537  CalendarSupport::KCalPrefs::instance()->mReminderTime =
538  mReminderTimeSpin->value();
539  CalendarSupport::KCalPrefs::instance()->mReminderTimeUnits =
540  mReminderUnitsCombo->currentIndex();
541 
542  int mask = 0;
543  for ( int i = 0; i < 7; ++i ) {
544  if ( mWorkDays[i]->isChecked() ) {
545  mask = mask | ( 1 << i );
546  }
547  }
548  KOPrefs::instance()->mWorkWeekMask = mask;
549  KOPrefs::instance()->writeConfig();
550  CalendarSupport::KCalPrefs::instance()->writeConfig();
551  }
552 
553  void setCombo( KComboBox *combo, const QString &text, const QStringList *tags = 0 )
554  {
555  if ( tags ) {
556  int i = tags->indexOf( text );
557  if ( i > 0 ) {
558  combo->setCurrentIndex( i );
559  }
560  } else {
561  for ( int i=0; i < combo->count(); ++i ) {
562  if ( combo->itemText( i ) == text ) {
563  combo->setCurrentIndex( i );
564  break;
565  }
566  }
567  }
568  }
569 
570  private:
571  QStringList tzonenames;
572  KComboBox *mHolidayCombo;
573  KIntSpinBox *mReminderTimeSpin;
574  KComboBox *mReminderUnitsCombo;
575  QCheckBox *mWorkDays[7];
576 };
577 
578 extern "C"
579 {
580  KDE_EXPORT KCModule *create_korganizerconfigtime( QWidget *parent, const char * )
581  {
582  KGlobal::locale()->insertCatalog( QLatin1String("timezones4") );
583  return new KOPrefsDialogTime( KOGlobals::self()->componentData(), parent );
584  }
585 }
586 
589 
590 class KOPrefsDialogViews : public KPIM::KPrefsModule
591 {
592  public:
593  KOPrefsDialogViews( const KComponentData &inst, QWidget *parent )
594  : KPIM::KPrefsModule( KOPrefs::instance(), inst, parent ),
595  mMonthIconComboBox( new KItemIconCheckCombo( KItemIconCheckCombo::MonthType, this ) ),
596  mAgendaIconComboBox( new KItemIconCheckCombo( KItemIconCheckCombo::AgendaType, this ) )
597  {
598  QBoxLayout *topTopLayout = new QVBoxLayout( this );
599  KTabWidget *tabWidget = new KTabWidget( this );
600  topTopLayout->addWidget( tabWidget );
601 
602  connect( mMonthIconComboBox, SIGNAL(checkedItemsChanged(QStringList)),
603  SLOT(slotWidChanged()) );
604  connect( mAgendaIconComboBox, SIGNAL(checkedItemsChanged(QStringList)),
605  SLOT(slotWidChanged()) );
606 
607  // Tab: Views->General
608  QFrame *generalFrame = new QFrame( this );
609  tabWidget->addTab( generalFrame, KIcon( QLatin1String("view-choose") ),
610  i18nc( "@title:tab general settings", "General" ) );
611 
612  QBoxLayout *generalLayout = new QVBoxLayout( generalFrame );
613 
614  // GroupBox: Views->General->Display Options
615  QVBoxLayout *gdisplayLayout = new QVBoxLayout;
616  QGroupBox *gdisplayBox = new QGroupBox( i18nc( "@title:group", "Display Options" ) );
617 
618  QBoxLayout *nextDaysLayout = new QHBoxLayout;
619  gdisplayLayout->addLayout( nextDaysLayout );
620 
621  KPIM::KPrefsWidInt *nextDays =
622  addWidInt( KOPrefs::instance()->nextXDaysItem() );
623  nextDays->spinBox()->setSuffix(
624  i18nc( "@label suffix in the N days spin box", " days" ) );
625 
626  nextDaysLayout->addWidget( nextDays->label() );
627  nextDaysLayout->addWidget( nextDays->spinBox() );
628  nextDaysLayout->addStretch( 1 );
629 
630  gdisplayLayout->addWidget(
631  addWidBool( KOPrefs::instance()->enableToolTipsItem() )->checkBox() );
632  gdisplayLayout->addWidget(
633  addWidBool( KOPrefs::instance()->todosUseCategoryColorsItem() )->checkBox() );
634  gdisplayBox->setLayout( gdisplayLayout );
635  generalLayout->addWidget( gdisplayBox );
636 
637  // GroupBox: Views->General->Date Navigator
638  QVBoxLayout *datenavLayout = new QVBoxLayout;
639  QGroupBox *datenavBox = new QGroupBox( i18nc( "@title:group", "Date Navigator" ) );
640  datenavLayout->addWidget(
641  addWidBool( KOPrefs::instance()->dailyRecurItem() )->checkBox() );
642  datenavLayout->addWidget(
643  addWidBool( KOPrefs::instance()->weeklyRecurItem() )->checkBox() );
644  datenavLayout->addWidget(
645  addWidBool( KOPrefs::instance()->highlightTodosItem() )->checkBox() );
646  datenavLayout->addWidget(
647  addWidBool( KOPrefs::instance()->highlightJournalsItem() )->checkBox() );
648  datenavLayout->addWidget(
649  addWidBool( KOPrefs::instance()->weekNumbersShowWorkItem() )->checkBox() );
650  datenavBox->setLayout( datenavLayout );
651  generalLayout->addWidget( datenavBox );
652  generalLayout->addStretch( 1 );
653 
654  // Tab: Views->Agenda View
655  QFrame *agendaFrame = new QFrame( this );
656  tabWidget->addTab( agendaFrame, KIcon( QLatin1String("view-calendar-workweek") ),
657  i18nc( "@title:tab", "Agenda View" ) );
658 
659  QBoxLayout *agendaLayout = new QVBoxLayout( agendaFrame );
660 
661  // GroupBox: Views->Agenda View->Display Options
662  QVBoxLayout *adisplayLayout = new QVBoxLayout;
663  QGroupBox *adisplayBox = new QGroupBox( i18nc( "@title:group", "Display Options" ) );
664 
665  QHBoxLayout *hourSizeLayout = new QHBoxLayout;
666  adisplayLayout->addLayout( hourSizeLayout );
667 
668  KPIM::KPrefsWidInt *hourSize =
669  addWidInt( KOPrefs::instance()->hourSizeItem() );
670  hourSize->spinBox()->setSuffix(
671  i18nc( "@label suffix in the hour size spin box", " pixels" ) );
672 
673  hourSizeLayout->addWidget( hourSize->label() );
674  hourSizeLayout->addWidget( hourSize->spinBox() );
675  hourSizeLayout->addStretch( 1 );
676 
677  adisplayLayout->addWidget(
678  addWidBool( KOPrefs::instance()->enableAgendaItemIconsItem() )->checkBox() );
679  adisplayLayout->addWidget(
680  addWidBool( KOPrefs::instance()->showTodosAgendaViewItem() )->checkBox() );
681  KPIM::KPrefsWidBool *marcusBainsEnabled =
682  addWidBool( KOPrefs::instance()->marcusBainsEnabledItem() );
683  adisplayLayout->addWidget( marcusBainsEnabled->checkBox() );
684 
685  KPIM::KPrefsWidBool *marcusBainsShowSeconds =
686  addWidBool( KOPrefs::instance()->marcusBainsShowSecondsItem() );
687  connect( marcusBainsEnabled->checkBox(), SIGNAL(toggled(bool)),
688  marcusBainsShowSeconds->checkBox(), SLOT(setEnabled(bool)) );
689 
690  adisplayLayout->addWidget( marcusBainsShowSeconds->checkBox() );
691  adisplayLayout->addWidget(
692  addWidBool( KOPrefs::instance()->selectionStartsEditorItem() )->checkBox() );
693  mAgendaIconComboBox->setCheckedIcons(
694  KOPrefs::instance()->eventViewsPreferences()->agendaViewIcons() );
695  adisplayLayout->addWidget( mAgendaIconComboBox );
696  adisplayBox->setLayout( adisplayLayout );
697  agendaLayout->addWidget( adisplayBox );
698 
699  // GroupBox: Views->Agenda View->Color Usage
700  agendaLayout->addWidget(
701  addWidRadios( KOPrefs::instance()->agendaViewColorsItem() )->groupBox() );
702 
703  agendaLayout->addWidget(
704  addWidBool( KOPrefs::instance()->colorBusyDaysEnabledItem() )->checkBox() );
705 
706  // GroupBox: Views->Agenda View->Multiple Calendars
707  agendaLayout->addWidget(
708  addWidRadios( KOPrefs::instance()->agendaViewCalendarDisplayItem() )->groupBox() );
709 
710  agendaLayout->addStretch( 1 );
711 
712  // Tab: Views->Month View
713  QFrame *monthFrame = new QFrame( this );
714  tabWidget->addTab( monthFrame, KIcon( QLatin1String("view-calendar-month") ),
715  i18nc( "@title:tab", "Month View" ) );
716 
717  QBoxLayout *monthLayout = new QVBoxLayout( monthFrame );
718 
719  // GroupBox: Views->Month View->Display Options
720  QVBoxLayout *mdisplayLayout = new QVBoxLayout;
721  QGroupBox *mdisplayBox = new QGroupBox( i18nc( "@title:group", "Display Options" ) );
722  /*mdisplayLayout->addWidget(
723  addWidBool( KOPrefs::instance()->enableMonthScrollItem() )->checkBox() );*/
724  mdisplayLayout->addWidget(
725  addWidBool( KOPrefs::instance()->showTimeInMonthViewItem() )->checkBox() );
726  mdisplayLayout->addWidget(
727  addWidBool( KOPrefs::instance()->enableMonthItemIconsItem() )->checkBox() );
728  mdisplayLayout->addWidget(
729  addWidBool( KOPrefs::instance()->showTodosMonthViewItem() )->checkBox() );
730  mdisplayLayout->addWidget(
731  addWidBool( KOPrefs::instance()->showJournalsMonthViewItem() )->checkBox() );
732  mdisplayBox->setLayout( mdisplayLayout );
733 
734  mMonthIconComboBox->setCheckedIcons(
735  KOPrefs::instance()->eventViewsPreferences()->monthViewIcons() );
736  mdisplayLayout->addWidget( mMonthIconComboBox );
737 
738  monthLayout->addWidget( mdisplayBox );
739 
740  monthLayout->addWidget(
741  addWidBool( KOPrefs::instance()->colorMonthBusyDaysEnabledItem() )->checkBox() );
742 
743  // GroupBox: Views->Month View->Color Usage
744  monthLayout->addWidget(
745  addWidRadios( KOPrefs::instance()->monthViewColorsItem() )->groupBox() );
746  monthLayout->addStretch( 1 );
747 
748  // Tab: Views->Todo View
749  QFrame *todoFrame = new QFrame( this );
750  tabWidget->addTab( todoFrame, KIcon( QLatin1String("view-calendar-tasks") ),
751  i18nc( "@title:tab", "Todo View" ) );
752 
753  QBoxLayout *todoLayout = new QVBoxLayout( todoFrame );
754 
755  // GroupBox: Views->Todo View->Display Options
756  QVBoxLayout *tdisplayLayout = new QVBoxLayout;
757  QGroupBox *tdisplayBox = new QGroupBox( i18nc( "@title:group", "Display Options" ) );
758  tdisplayLayout->addWidget(
759  addWidBool( KOPrefs::instance()->sortCompletedTodosSeparatelyItem() )->checkBox() );
760  tdisplayBox->setLayout( tdisplayLayout );
761  todoLayout->addWidget( tdisplayBox );
762 
763  // GroupBox: Views->Todo View->Other
764  QVBoxLayout *otherLayout = new QVBoxLayout;
765  QGroupBox *otherBox = new QGroupBox( i18nc( "@title:group", "Other Options" ) );
766  otherLayout->addWidget(
767  addWidBool( KOPrefs::instance()->recordTodosInJournalsItem() )->checkBox() );
768  otherBox->setLayout( otherLayout );
769  todoLayout->addWidget( otherBox );
770  todoLayout->addStretch( 1 );
771 
772  load();
773  }
774  protected:
775  void usrWriteConfig()
776  {
777  KOPrefs::instance()->eventViewsPreferences()->setAgendaViewIcons(
778  mAgendaIconComboBox->checkedIcons() );
779  KOPrefs::instance()->eventViewsPreferences()->setMonthViewIcons(
780  mMonthIconComboBox->checkedIcons() );
781  }
782  private:
783  KItemIconCheckCombo *mMonthIconComboBox;
784  KItemIconCheckCombo *mAgendaIconComboBox;
785 };
786 
787 extern "C"
788 {
789  KDE_EXPORT KCModule *create_korganizerconfigviews( QWidget *parent, const char * )
790  {
791  return new KOPrefsDialogViews( KOGlobals::self()->componentData(), parent );
792  }
793 }
794 
797 
798 KOPrefsDialogColorsAndFonts::KOPrefsDialogColorsAndFonts( const KComponentData &inst,
799  QWidget *parent )
800  : KPIM::KPrefsModule( KOPrefs::instance(), inst, parent )
801 {
802  QBoxLayout *topTopLayout = new QVBoxLayout( this );
803  KTabWidget *tabWidget = new KTabWidget( this );
804  topTopLayout->addWidget( tabWidget );
805 
806  QWidget *colorFrame = new QWidget( this );
807  topTopLayout->addWidget( colorFrame );
808  QGridLayout *colorLayout = new QGridLayout(colorFrame);
809  colorLayout->setSpacing( KDialog::spacingHint() );
810  tabWidget->addTab( colorFrame, KIcon( QLatin1String("preferences-desktop-color") ),
811  i18nc( "@title:tab", "Colors" ) );
812 
813  // Holiday Color
814  KPIM::KPrefsWidColor *holidayColor =
815  addWidColor( KOPrefs::instance()->agendaHolidaysBackgroundColorItem(), colorFrame );
816  colorLayout->addWidget( holidayColor->label(), 0, 0 );
817  colorLayout->addWidget( holidayColor->button(), 0, 1 );
818 
819  // agenda view background color
820  KPIM::KPrefsWidColor *agendaBgColor =
821  addWidColor( KOPrefs::instance()->agendaGridBackgroundColorItem(), colorFrame );
822  colorLayout->addWidget( agendaBgColor->label(), 3, 0 );
823  colorLayout->addWidget( agendaBgColor->button(), 3, 1 );
824 
825  // agenda view Marcus Bains line color
826  KPIM::KPrefsWidColor *mblColor =
827  addWidColor( KOPrefs::instance()->agendaMarcusBainsLineLineColorItem(), colorFrame );
828  colorLayout->addWidget( mblColor->label(), 5, 0 );
829  colorLayout->addWidget( mblColor->button(), 5, 1 );
830 
831  KPIM::KPrefsWidColor *viewBgBusyColor =
832  addWidColor( KOPrefs::instance()->viewBgBusyColorItem(), colorFrame );
833  colorLayout->addWidget( viewBgBusyColor->label(), 4, 0 );
834  colorLayout->addWidget( viewBgBusyColor->button(), 4, 1 );
835 
836  // working hours color
837  KPIM::KPrefsWidColor *agendaGridWorkHoursBackgroundColor =
838  addWidColor( KOPrefs::instance()->workingHoursColorItem(), colorFrame );
839  colorLayout->addWidget( agendaGridWorkHoursBackgroundColor->label(), 6, 0 );
840  colorLayout->addWidget( agendaGridWorkHoursBackgroundColor->button(), 6, 1 );
841 
842  // Todo due today color
843  KPIM::KPrefsWidColor *todoDueTodayColor =
844  addWidColor(
845  KOPrefs::instance()->todoDueTodayColorItem(), colorFrame );
846  colorLayout->addWidget( todoDueTodayColor->label(), 7, 0 );
847  colorLayout->addWidget( todoDueTodayColor->button(), 7, 1 );
848 
849  // Todo overdue color
850  KPIM::KPrefsWidColor *todoOverdueColor =
851  addWidColor(
852  KOPrefs::instance()->todoOverdueColorItem(), colorFrame );
853  colorLayout->addWidget( todoOverdueColor->label(), 8, 0 );
854  colorLayout->addWidget( todoOverdueColor->button(), 8, 1 );
855 
856  // categories colors
857  QGroupBox *categoryGroup = new QGroupBox( i18nc( "@title:group", "Categories" ), colorFrame );
858  colorLayout->addWidget( categoryGroup, 9, 0, 1, 2 );
859 
860  QGridLayout *categoryLayout = new QGridLayout;
861  categoryGroup->setLayout( categoryLayout );
862 
863  KPIM::KPrefsWidColor *unsetCategoryColor =
864  addWidColor( CalendarSupport::KCalPrefs::instance()->unsetCategoryColorItem(), categoryGroup );
865  categoryLayout->addWidget( unsetCategoryColor->label(), 0, 0 );
866  categoryLayout->addWidget( unsetCategoryColor->button(), 0, 1 );
867  unsetCategoryColor->label()->setWhatsThis( unsetCategoryColor->button()->whatsThis() );
868  unsetCategoryColor->label()->setToolTip( unsetCategoryColor->button()->toolTip() );
869 
870  mCategoryCombo = new KComboBox( categoryGroup );
871  mCategoryCombo->addItems(
872  CalendarSupport::CategoryConfig( KOPrefs::instance() ).customCategories() );
873  mCategoryCombo->setWhatsThis(
874  i18nc( "@info:whatsthis",
875  "Select here the event category you want to modify. "
876  "You can change the selected category color using "
877  "the button below." ) );
878  connect( mCategoryCombo, SIGNAL(activated(int)), SLOT(updateCategoryColor()) );
879  categoryLayout->addWidget( mCategoryCombo, 1, 0 );
880 
881  mCategoryButton = new KColorButton( categoryGroup );
882  mCategoryButton->setWhatsThis(
883  i18nc( "@info:whatsthis",
884  "Choose here the color of the event category selected "
885  "using the combo box above." ) );
886  connect( mCategoryButton, SIGNAL(changed(QColor)), SLOT(setCategoryColor()) );
887  categoryLayout->addWidget( mCategoryButton, 1, 1 );
888 
889  updateCategoryColor();
890 
891  // resources colors
892  QGroupBox *resourceGroup = new QGroupBox( i18nc( "@title:group", "Resources" ), colorFrame );
893  colorLayout->addWidget( resourceGroup, 10, 0, 1, 2 );
894 
895  QBoxLayout *resourceLayout = new QHBoxLayout;
896  resourceGroup->setLayout( resourceLayout );
897 
898  mResourceCombo = new Akonadi::CollectionComboBox( resourceGroup );
899  //mResourceCombo->addExcludedSpecialResources(Akonadi::Collection::SearchResource);
900  QStringList mimetypes;
901  mimetypes << KCalCore::Todo::todoMimeType();
902  mimetypes << KCalCore::Journal::journalMimeType();
903  mimetypes << KCalCore::Event::eventMimeType();
904 
905  mResourceCombo->setMimeTypeFilter( mimetypes );
906  mResourceCombo->setWhatsThis(
907  i18nc( "@info:whatsthis",
908  "Select the calendar you want to modify. "
909  "You can change the selected calendar color using "
910  "the button below." ) );
911  connect( mResourceCombo, SIGNAL(activated(int)), SLOT(updateResourceColor()) );
912  resourceLayout->addWidget( mResourceCombo );
913 
914  mResourceButton = new KColorButton( resourceGroup );
915  mResourceButton->setWhatsThis(
916  i18nc( "@info:whatsthis",
917  "Choose here the color of the calendar selected "
918  "using the combo box above." ) );
919  connect( mResourceButton, SIGNAL(changed(QColor)), SLOT(setResourceColor()) );
920  resourceLayout->addWidget( mResourceButton );
921 
922  colorLayout->setRowStretch( 11, 1 );
923 
924  QWidget *fontFrame = new QWidget( this );
925  tabWidget->addTab( fontFrame, KIcon( QLatin1String("preferences-desktop-font") ),
926  i18nc( "@title:tab", "Fonts" ) );
927 
928  QGridLayout *fontLayout = new QGridLayout( fontFrame );
929  fontLayout->setSpacing( KDialog::spacingHint() );
930 
931  KPIM::KPrefsWidFont *timeBarFont =
932  addWidFont( KOPrefs::instance()->agendaTimeLabelsFontItem(), fontFrame,
933  KGlobal::locale()->formatTime( QTime( 12, 34 ) ) );
934  fontLayout->addWidget( timeBarFont->label(), 0, 0 );
935  fontLayout->addWidget( timeBarFont->preview(), 0, 1 );
936  fontLayout->addWidget( timeBarFont->button(), 0, 2 );
937 
938  KPIM::KPrefsWidFont *monthViewFont =
939  addWidFont( KOPrefs::instance()->monthViewFontItem(), fontFrame,
940  KGlobal::locale()->formatTime( QTime( 12, 34 ) ) + QLatin1Char(' ') +
941  i18nc( "@label", "Event text" ) );
942 
943  fontLayout->addWidget( monthViewFont->label(), 1, 0 );
944  fontLayout->addWidget( monthViewFont->preview(), 1, 1 );
945  fontLayout->addWidget( monthViewFont->button(), 1, 2 );
946 
947  KPIM::KPrefsWidFont *agendaViewFont =
948  addWidFont( KOPrefs::instance()->agendaViewFontItem(), fontFrame,
949  i18nc( "@label", "Event text" ) );
950  fontLayout->addWidget( agendaViewFont->label(), 2, 0 );
951  fontLayout->addWidget( agendaViewFont->preview(), 2, 1 );
952  fontLayout->addWidget( agendaViewFont->button(), 2, 2 );
953 
954  KPIM::KPrefsWidFont *marcusBainsFont =
955  addWidFont( KOPrefs::instance()->agendaMarcusBainsLineFontItem(), fontFrame,
956  KGlobal::locale()->formatTime( QTime( 12, 34, 23 ) ) );
957  fontLayout->addWidget( marcusBainsFont->label(), 3, 0 );
958  fontLayout->addWidget( marcusBainsFont->preview(), 3, 1 );
959  fontLayout->addWidget( marcusBainsFont->button(), 3, 2 );
960 
961  fontLayout->setColumnStretch( 1, 1 );
962  fontLayout->setRowStretch( 4, 1 );
963 
964  load();
965 }
966 
967 void KOPrefsDialogColorsAndFonts::usrWriteConfig()
968 {
969  QHash<QString, QColor>::const_iterator i = mCategoryDict.constBegin();
970  while ( i != mCategoryDict.constEnd() ) {
971  CalendarSupport::KCalPrefs::instance()->setCategoryColor( i.key(), i.value() );
972  ++i;
973  }
974 
975  i = mResourceDict.constBegin();
976  while ( i != mResourceDict.constEnd() ) {
977  KOPrefs::instance()->setResourceColor( i.key(), i.value() );
978  ++i;
979  }
980 
981  //mCalendarViewsPrefs->writeConfig();
982 }
983 
984 void KOPrefsDialogColorsAndFonts::usrReadConfig()
985 {
986  updateCategories();
987  updateResources();
988  //mCalendarViewsPrefs->readConfig();
989 }
990 
991 void KOPrefsDialogColorsAndFonts::updateCategories()
992 {
993  mCategoryCombo->clear();
994  mCategoryCombo->addItems(
995  CalendarSupport::CategoryConfig( KOPrefs::instance() ).customCategories() );
996  updateCategoryColor();
997 }
998 
999 void KOPrefsDialogColorsAndFonts::setCategoryColor()
1000 {
1001  mCategoryDict.insert( mCategoryCombo->currentText(), mCategoryButton->color() );
1002  slotWidChanged();
1003 }
1004 
1005 void KOPrefsDialogColorsAndFonts::updateCategoryColor()
1006 {
1007  const QString cat = mCategoryCombo->currentText();
1008  QColor color = mCategoryDict.value( cat );
1009  if ( !color.isValid() ) {
1010  color = CalendarSupport::KCalPrefs::instance()->categoryColor( cat );
1011  }
1012  if ( color.isValid() ) {
1013  mCategoryButton->setColor( color );
1014  }
1015 }
1016 
1017 void KOPrefsDialogColorsAndFonts::updateResources()
1018 {
1019  updateResourceColor();
1020 }
1021 
1022 void KOPrefsDialogColorsAndFonts::setResourceColor()
1023 {
1024  bool ok;
1025  const QString id =
1026  QString::number( mResourceCombo->itemData(
1027  mResourceCombo->currentIndex(),
1028  Akonadi::CollectionModel::CollectionIdRole ).toLongLong( &ok ) );
1029  if( ! ok ) {
1030  return;
1031  }
1032  mResourceDict.insert( id, mResourceButton->color() );
1033  slotWidChanged();
1034 }
1035 
1036 void KOPrefsDialogColorsAndFonts::updateResourceColor()
1037 {
1038  bool ok;
1039  const QString id =
1040  QString::number( mResourceCombo->itemData(
1041  mResourceCombo->currentIndex(),
1042  Akonadi::CollectionModel::CollectionIdRole ).toLongLong( &ok ) );
1043  if ( !ok ) {
1044  return;
1045  }
1046  kDebug() << id << mResourceCombo->itemText( mResourceCombo->currentIndex() );
1047 
1048  QColor color = mResourceDict.value( id );
1049  if ( ! color.isValid() ) {
1050  color = KOPrefs::instance()->resourceColor( id );
1051  }
1052  mResourceButton->setColor( color );
1053 }
1054 
1055 extern "C"
1056 {
1057  KDE_EXPORT KCModule *create_korganizerconfigcolorsandfonts( QWidget *parent, const char * )
1058  {
1059  return new KOPrefsDialogColorsAndFonts( KOGlobals::self()->componentData(), parent );
1060  }
1061 }
1062 
1065 
1066 KOPrefsDialogGroupScheduling::KOPrefsDialogGroupScheduling( const KComponentData &inst,
1067  QWidget *parent )
1068  : KPIM::KPrefsModule( KOPrefs::instance(), inst, parent )
1069 {
1070  QBoxLayout *topTopLayout = new QVBoxLayout( this );
1071 
1072  QWidget *topFrame = new QWidget( this );
1073  topTopLayout->addWidget( topFrame );
1074 
1075  QGridLayout *topLayout = new QGridLayout( topFrame );
1076  topLayout->setSpacing( KDialog::spacingHint() );
1077 
1078  KPIM::KPrefsWidBool *useGroupwareBool =
1079  addWidBool( CalendarSupport::KCalPrefs::instance()->useGroupwareCommunicationItem(), topFrame );
1080  topLayout->addWidget( useGroupwareBool->checkBox(), 0, 0, 1, 2 );
1081 
1082  KPIM::KPrefsWidBool *bcc =
1083  addWidBool( Akonadi::CalendarSettings::self()->bccItem(), topFrame );
1084  topLayout->addWidget( bcc->checkBox(), 1, 0, 1, 2 );
1085 
1086  QLabel *aTransportLabel = new QLabel(
1087  i18nc( "@label", "Mail transport:" ), topFrame );
1088  topLayout->addWidget( aTransportLabel, 2, 0, 1, 2 );
1089 
1090  MailTransport::TransportManagementWidget *tmw =
1091  new MailTransport::TransportManagementWidget( topFrame );
1092  tmw->layout()->setContentsMargins( 0, 0, 0, 0 );
1093  topLayout->addWidget( tmw, 3, 0, 1, 2 );
1094 
1095  //topLayout->setRowStretch( 2, 1 );
1096 
1097 
1098  load();
1099 }
1100 
1101 void KOPrefsDialogGroupScheduling::usrReadConfig()
1102 {
1103 }
1104 
1105 void KOPrefsDialogGroupScheduling::usrWriteConfig()
1106 {
1107 }
1108 
1109 extern "C"
1110 {
1111  KDE_EXPORT KCModule *create_korganizerconfiggroupscheduling( QWidget *parent, const char * )
1112  {
1113  return new KOPrefsDialogGroupScheduling( KOGlobals::self()->componentData(), parent );
1114  }
1115 }
1116 
1119 
1120 KOPrefsDialogGroupwareScheduling::KOPrefsDialogGroupwareScheduling( const KComponentData &inst,
1121  QWidget *parent )
1122  : KPrefsModule( CalendarSupport::KCalPrefs::instance(), inst, parent )
1123 {
1124  mGroupwarePage = new Ui::KOGroupwarePrefsPage();
1125  QWidget *widget = new QWidget( this );
1126  widget->setObjectName( QLatin1String("KOGrouparePrefsPage") );
1127 
1128  mGroupwarePage->setupUi( widget );
1129 
1130  mGroupwarePage->groupwareTab->setTabIcon( 0, KIcon( QLatin1String("go-up") ) );
1131  mGroupwarePage->groupwareTab->setTabIcon( 1, KIcon( QLatin1String("go-down") ) );
1132 
1133  // signals and slots connections
1134 
1135  connect( mGroupwarePage->publishDays, SIGNAL(valueChanged(int)),
1136  SLOT(slotWidChanged()) );
1137  connect( mGroupwarePage->publishUrl, SIGNAL(textChanged(QString)),
1138  SLOT(slotWidChanged()) );
1139  connect( mGroupwarePage->publishUser, SIGNAL(textChanged(QString)),
1140  SLOT(slotWidChanged()) );
1141  connect( mGroupwarePage->publishPassword, SIGNAL(textChanged(QString)),
1142  SLOT(slotWidChanged()) );
1143  connect( mGroupwarePage->publishSavePassword, SIGNAL(toggled(bool)),
1144  SLOT(slotWidChanged()) );
1145  connect( mGroupwarePage->retrieveEnable, SIGNAL(toggled(bool)),
1146  SLOT(slotWidChanged()) );
1147  connect( mGroupwarePage->retrieveUser, SIGNAL(textChanged(QString)),
1148  SLOT(slotWidChanged()) );
1149  connect( mGroupwarePage->retrievePassword, SIGNAL(textChanged(QString)),
1150  SLOT(slotWidChanged()) );
1151  connect( mGroupwarePage->retrieveSavePassword, SIGNAL(toggled(bool)),
1152  SLOT(slotWidChanged()) );
1153  connect( mGroupwarePage->retrieveUrl, SIGNAL(textChanged(QString)),
1154  SLOT(slotWidChanged()));
1155  connect( mGroupwarePage->publishDelay, SIGNAL(valueChanged(int)),
1156  SLOT(slotWidChanged()) );
1157  connect( mGroupwarePage->fullDomainRetrieval, SIGNAL(toggled(bool)),
1158  SLOT(slotWidChanged()) );
1159  connect( mGroupwarePage->publishEnable, SIGNAL(toggled(bool)),
1160  SLOT(slotWidChanged()) );
1161 
1162  ( new QVBoxLayout( this ) )->addWidget( widget );
1163 
1164  load();
1165 }
1166 
1167 KOPrefsDialogGroupwareScheduling::~KOPrefsDialogGroupwareScheduling()
1168 {
1169  delete mGroupwarePage;
1170 }
1171 
1172 void KOPrefsDialogGroupwareScheduling::usrReadConfig()
1173 {
1174  mGroupwarePage->publishEnable->setChecked(
1175  Akonadi::CalendarSettings::self()->freeBusyPublishAuto() );
1176  mGroupwarePage->publishDelay->setValue(
1177  Akonadi::CalendarSettings::self()->freeBusyPublishDelay() );
1178  mGroupwarePage->publishDays->setValue(
1179  Akonadi::CalendarSettings::self()->freeBusyPublishDays() );
1180  mGroupwarePage->publishUrl->setText(
1181  Akonadi::CalendarSettings::self()->freeBusyPublishUrl() );
1182  mGroupwarePage->publishUser->setText(
1183  Akonadi::CalendarSettings::self()->freeBusyPublishUser() );
1184  mGroupwarePage->publishPassword->setText(
1185  Akonadi::CalendarSettings::self()->freeBusyPublishPassword() );
1186  mGroupwarePage->publishSavePassword->setChecked(
1187  Akonadi::CalendarSettings::self()->freeBusyPublishSavePassword() );
1188 
1189  mGroupwarePage->retrieveEnable->setChecked(
1190  Akonadi::CalendarSettings::self()->freeBusyRetrieveAuto() );
1191  mGroupwarePage->fullDomainRetrieval->setChecked(
1192  Akonadi::CalendarSettings::self()->freeBusyFullDomainRetrieval() );
1193  mGroupwarePage->retrieveUrl->setText(
1194  Akonadi::CalendarSettings::self()->freeBusyRetrieveUrl() );
1195  mGroupwarePage->retrieveUser->setText(
1196  Akonadi::CalendarSettings::self()->freeBusyRetrieveUser() );
1197  mGroupwarePage->retrievePassword->setText(
1198  Akonadi::CalendarSettings::self()->freeBusyRetrievePassword() );
1199  mGroupwarePage->retrieveSavePassword->setChecked(
1200  Akonadi::CalendarSettings::self()->freeBusyRetrieveSavePassword() );
1201 }
1202 
1203 void KOPrefsDialogGroupwareScheduling::usrWriteConfig()
1204 {
1205  Akonadi::CalendarSettings::self()->setFreeBusyPublishAuto(
1206  mGroupwarePage->publishEnable->isChecked());
1207  Akonadi::CalendarSettings::self()->setFreeBusyPublishDelay(mGroupwarePage->publishDelay->value());
1208  Akonadi::CalendarSettings::self()->setFreeBusyPublishDays(
1209  mGroupwarePage->publishDays->value());
1210  Akonadi::CalendarSettings::self()->setFreeBusyPublishUrl(
1211  mGroupwarePage->publishUrl->text());
1212  Akonadi::CalendarSettings::self()->setFreeBusyPublishUser(
1213  mGroupwarePage->publishUser->text());
1214  Akonadi::CalendarSettings::self()->setFreeBusyPublishPassword(
1215  mGroupwarePage->publishPassword->text());
1216  Akonadi::CalendarSettings::self()->setFreeBusyPublishSavePassword(
1217  mGroupwarePage->publishSavePassword->isChecked());
1218 
1219  Akonadi::CalendarSettings::self()->setFreeBusyRetrieveAuto(
1220  mGroupwarePage->retrieveEnable->isChecked());
1221  Akonadi::CalendarSettings::self()->setFreeBusyFullDomainRetrieval(
1222  mGroupwarePage->fullDomainRetrieval->isChecked());
1223  Akonadi::CalendarSettings::self()->setFreeBusyRetrieveUrl(
1224  mGroupwarePage->retrieveUrl->text());
1225  Akonadi::CalendarSettings::self()->setFreeBusyRetrieveUser(
1226  mGroupwarePage->retrieveUser->text());
1227  Akonadi::CalendarSettings::self()->setFreeBusyRetrievePassword(
1228  mGroupwarePage->retrievePassword->text());
1229  Akonadi::CalendarSettings::self()->setFreeBusyRetrieveSavePassword(
1230  mGroupwarePage->retrieveSavePassword->isChecked());
1231 
1232  // clear the url cache for our user
1233  const QString configFile = KStandardDirs::locateLocal( "data", QLatin1String("korganizer/freebusyurls") );
1234  KConfig cfg( configFile );
1235  cfg.deleteGroup( CalendarSupport::KCalPrefs::instance()->email() );
1236 
1237 
1238  Akonadi::CalendarSettings::self()->writeConfig();
1239 }
1240 
1241 extern "C"
1242 {
1243  KDE_EXPORT KCModule *create_korganizerconfigfreebusy( QWidget *parent, const char * )
1244  {
1245  return new KOPrefsDialogGroupwareScheduling( KOGlobals::self()->componentData(), parent );
1246  }
1247 }
1248 
1251 
1252 class PluginItem : public QTreeWidgetItem
1253 {
1254  public:
1255  PluginItem( QTreeWidget *parent, KService::Ptr service )
1256  : QTreeWidgetItem( parent, QStringList( service->name() ) ),
1257  mService( service ) {}
1258  PluginItem( QTreeWidgetItem *parent, KService::Ptr service )
1259  : QTreeWidgetItem( parent, QStringList( service->name() ) ),
1260  mService( service ) {}
1261 
1262  KService::Ptr service()
1263  { return mService; }
1264 
1265  private:
1266  KService::Ptr mService;
1267 };
1268 
1272 KOPrefsDialogPlugins::KOPrefsDialogPlugins( const KComponentData &inst, QWidget *parent )
1273  : KPrefsModule( KOPrefs::instance(), inst, parent )
1274 {
1275  QBoxLayout *topTopLayout = new QVBoxLayout( this );
1276 
1277  QWidget *topFrame = new QWidget( this );
1278  topTopLayout->addWidget( topFrame );
1279  QBoxLayout *topLayout = new QVBoxLayout( topFrame );
1280  topLayout->setSpacing( KDialog::spacingHint() );
1281 
1282  mTreeWidget = new QTreeWidget( topFrame );
1283  mTreeWidget->setColumnCount( 1 );
1284  mTreeWidget->setHeaderLabel( i18nc( "@title:column plugin name", "Name" ) );
1285  topLayout->addWidget( mTreeWidget );
1286 
1287  mDescription = new QLabel( topFrame );
1288  mDescription->setAlignment( Qt::AlignVCenter );
1289  mDescription->setWordWrap( true );
1290  mDescription->setFrameShape( QLabel::Panel );
1291  mDescription->setFrameShadow( QLabel::Sunken );
1292  mDescription->setMinimumSize( QSize( 0, 55 ) );
1293  QSizePolicy policy( QSizePolicy::MinimumExpanding, QSizePolicy::Fixed );
1294  policy.setHorizontalStretch( 0 );
1295  policy.setVerticalStretch( 0 );
1296  policy.setHeightForWidth( mDescription->sizePolicy().hasHeightForWidth() );
1297  mDescription->setSizePolicy( policy );
1298  topLayout->addWidget( mDescription );
1299 
1300  QWidget *buttonRow = new QWidget( topFrame );
1301  QBoxLayout *buttonRowLayout = new QHBoxLayout( buttonRow );
1302  mConfigureButton = new KPushButton(
1303  KGuiItem( i18nc( "@action:button", "Configure &Plugin..." ),
1304  QLatin1String("configure"), QString(),
1305  i18nc( "@info:whatsthis",
1306  "This button allows you to configure"
1307  " the plugin that you have selected in the list above" ) ),
1308  buttonRow );
1309  buttonRowLayout->addWidget( mConfigureButton );
1310  buttonRowLayout->addItem( new QSpacerItem( 1, 1, QSizePolicy::Expanding ) );
1311  topLayout->addWidget( buttonRow );
1312 
1313  mPositioningGroupBox = new QGroupBox( i18nc( "@title:group", "Position" ), topFrame );
1314  //mPositionMonthTop = new QCheckBox(
1315  //i18nc( "@option:check", "Show in the month view" ), mPositioningGroupBox );
1316  mPositionAgendaTop = new QRadioButton(
1317  i18nc( "@option:check", "Show at the top of the agenda views" ), mPositioningGroupBox );
1318  mPositionAgendaBottom = new QRadioButton(
1319  i18nc( "@option:check", "Show at the bottom of the agenda views" ), mPositioningGroupBox );
1320  QVBoxLayout *positioningLayout = new QVBoxLayout( mPositioningGroupBox );
1321  //positioningLayout->addWidget( mPositionMonthTop );
1322  positioningLayout->addWidget( mPositionAgendaTop );
1323  positioningLayout->addWidget( mPositionAgendaBottom );
1324  positioningLayout->addStretch( 1 );
1325  topLayout->addWidget( mPositioningGroupBox );
1326 
1327  connect( mConfigureButton, SIGNAL(clicked()), SLOT(configure()) );
1328 
1329  //connect( mPositionMonthTop, SIGNAL(clicked()), SLOT(positioningChanged()) );
1330  connect( mPositionAgendaTop, SIGNAL(clicked()), SLOT(positioningChanged()) );
1331  connect( mPositionAgendaBottom, SIGNAL(clicked()), SLOT(positioningChanged()) );
1332 
1333  connect( mTreeWidget, SIGNAL(itemSelectionChanged()), SLOT(selectionChanged()) );
1334  connect( mTreeWidget, SIGNAL(itemChanged(QTreeWidgetItem*,int)), SLOT(selectionChanged()) );
1335  connect( mTreeWidget, SIGNAL(itemClicked(QTreeWidgetItem*,int)), SLOT(slotWidChanged()) );
1336 
1337  load();
1338 
1339  selectionChanged();
1340 }
1341 
1342 void KOPrefsDialogPlugins::usrReadConfig()
1343 {
1344  mTreeWidget->clear();
1345  KService::List plugins = KOCore::self()->availablePlugins();
1346  plugins += KOCore::self()->availableParts();
1347 
1348  EventViews::PrefsPtr viewPrefs = KOPrefs::instance()->eventViewsPreferences();
1349 
1350  QStringList selectedPlugins = viewPrefs->selectedPlugins();
1351 
1352  QTreeWidgetItem *decorations =
1353  new QTreeWidgetItem( mTreeWidget, QStringList(
1354  i18nc( "@title:group", "Calendar Decorations" ) ) );
1355  QTreeWidgetItem *printPlugins =
1356  new QTreeWidgetItem( mTreeWidget, QStringList(
1357  i18nc( "@title:group", "Print Plugins" ) ) );
1358  QTreeWidgetItem *others =
1359  new QTreeWidgetItem( mTreeWidget, QStringList(
1360  i18nc( "@title:group", "Other Plugins" ) ) );
1361 
1362  KService::List::ConstIterator it;
1363  for ( it = plugins.constBegin(); it != plugins.constEnd(); ++it ) {
1364  QTreeWidgetItem *item;
1365  if ( (*it)->hasServiceType( EventViews::CalendarDecoration::Decoration::serviceType() ) ) {
1366  item = new PluginItem( decorations, *it );
1367  } else if ( (*it)->hasServiceType( KOrg::PrintPlugin::serviceType() ) ){
1368  item = new PluginItem( printPlugins, *it );
1369  } else {
1370  item = new PluginItem( others, *it );
1371  }
1372  if ( selectedPlugins.contains( (*it)->desktopEntryName() ) ) {
1373  item->setCheckState( 0, Qt::Checked );
1374  } else {
1375  item->setCheckState( 0, Qt::Unchecked );
1376  }
1377  }
1378 
1379  decorations->setExpanded( true );
1380  printPlugins->setExpanded( true );
1381  others->setExpanded( true );
1382 
1383  mDecorationsAtMonthViewTop = KOPrefs::instance()->decorationsAtMonthViewTop().toSet();
1384  mDecorationsAtAgendaViewTop = viewPrefs->decorationsAtAgendaViewTop().toSet();
1385  mDecorationsAtAgendaViewBottom = viewPrefs->decorationsAtAgendaViewBottom().toSet();
1386 }
1387 
1388 void KOPrefsDialogPlugins::usrWriteConfig()
1389 {
1390  QStringList selectedPlugins;
1391 
1392  for ( int i = 0; i < mTreeWidget->topLevelItemCount(); ++i) {
1393  QTreeWidgetItem *serviceTypeGroup = mTreeWidget->topLevelItem( i );
1394  for ( int j = 0; j < serviceTypeGroup->childCount(); j++) {
1395  PluginItem *item = static_cast<PluginItem *>( serviceTypeGroup->child( j ) );
1396  if( item->checkState( 0 ) == Qt::Checked ) {
1397  selectedPlugins.append( item->service()->desktopEntryName() );
1398  }
1399  }
1400  }
1401  EventViews::PrefsPtr viewPrefs = KOPrefs::instance()->eventViewsPreferences();
1402  viewPrefs->setSelectedPlugins( selectedPlugins );
1403 
1404  KOPrefs::instance()->setDecorationsAtMonthViewTop( mDecorationsAtMonthViewTop.toList() );
1405  viewPrefs->setDecorationsAtAgendaViewTop( mDecorationsAtAgendaViewTop.toList() );
1406  viewPrefs->setDecorationsAtAgendaViewBottom( mDecorationsAtAgendaViewBottom.toList() );
1407 }
1408 
1409 void KOPrefsDialogPlugins::configure()
1410 {
1411  if ( mTreeWidget->selectedItems().count() != 1 ) {
1412  return;
1413  }
1414 
1415  PluginItem *item = static_cast<PluginItem *>( mTreeWidget->selectedItems().last() );
1416  if ( !item ) {
1417  return;
1418  }
1419 
1420  CalendarSupport::Plugin *plugin = KOCore::self()->loadPlugin( item->service() );
1421 
1422  if ( plugin ) {
1423  plugin->configure( this );
1424  delete plugin;
1425 
1426  slotWidChanged();
1427  } else {
1428  KMessageBox::sorry( this,
1429  i18nc( "@info", "Unable to configure this plugin" ),
1430  QLatin1String("PluginConfigUnable") );
1431  }
1432 }
1433 
1434 void KOPrefsDialogPlugins::positioningChanged()
1435 {
1436  if ( mTreeWidget->selectedItems().count() != 1 ) {
1437  return;
1438  }
1439 
1440  PluginItem *item = dynamic_cast<PluginItem*>( mTreeWidget->selectedItems().last() );
1441  if ( !item ) {
1442  return;
1443  }
1444 
1445  QString decoration = item->service()->desktopEntryName();
1446 
1447  /*if ( mPositionMonthTop->checkState() == Qt::Checked ) {
1448  if ( !mDecorationsAtMonthViewTop.contains( decoration ) ) {
1449  mDecorationsAtMonthViewTop.insert( decoration );
1450  }
1451  } else {
1452  mDecorationsAtMonthViewTop.remove( decoration );
1453  }*/
1454 
1455  if ( mPositionAgendaTop->isChecked() ) {
1456  if ( !mDecorationsAtAgendaViewTop.contains( decoration ) ) {
1457  mDecorationsAtAgendaViewTop.insert( decoration );
1458  }
1459  } else {
1460  mDecorationsAtAgendaViewTop.remove( decoration );
1461  }
1462 
1463  if ( mPositionAgendaBottom->isChecked() ) {
1464  if ( !mDecorationsAtAgendaViewBottom.contains( decoration ) ) {
1465  mDecorationsAtAgendaViewBottom.insert( decoration );
1466  }
1467  } else {
1468  mDecorationsAtAgendaViewBottom.remove( decoration );
1469  }
1470 
1471  slotWidChanged();
1472 }
1473 
1474 void KOPrefsDialogPlugins::selectionChanged()
1475 {
1476  mPositioningGroupBox->hide();
1477  //mPositionMonthTop->setChecked( false );
1478  mPositionAgendaTop->setChecked( false );
1479  mPositionAgendaBottom->setChecked( false );
1480 
1481  if ( mTreeWidget->selectedItems().count() != 1 ) {
1482  mConfigureButton->setEnabled( false );
1483  mDescription->setText( QString() );
1484  return;
1485  }
1486 
1487  PluginItem *item = dynamic_cast<PluginItem*>( mTreeWidget->selectedItems().last() );
1488  if ( !item ) {
1489  mConfigureButton->setEnabled( false );
1490  mDescription->setText( QString() );
1491  return;
1492  }
1493 
1494  QVariant variant = item->service()->property( QLatin1String("X-KDE-KOrganizer-HasSettings") );
1495 
1496  bool hasSettings = true;
1497  if ( variant.isValid() ) {
1498  hasSettings = variant.toBool();
1499  }
1500 
1501  mDescription->setText( item->service()->comment() );
1502  if ( !hasSettings ) {
1503  mConfigureButton->hide();
1504  } else {
1505  mConfigureButton->show();
1506  mConfigureButton->setEnabled( item->checkState(0) == Qt::Checked );
1507  }
1508 
1509  bool hasPosition = false;
1510  if ( item->service()->hasServiceType(
1511  EventViews::CalendarDecoration::Decoration::serviceType() ) ) {
1512  QString decoration = item->service()->desktopEntryName();
1513  /*if ( mDecorationsAtMonthViewTop.contains( decoration ) ) {
1514  mPositionMonthTop->setChecked( true );
1515  hasPosition = true;
1516  }*/
1517  if ( mDecorationsAtAgendaViewTop.contains( decoration ) ) {
1518  mPositionAgendaTop->setChecked( true );
1519  hasPosition = true;
1520  }
1521  if ( mDecorationsAtAgendaViewBottom.contains( decoration ) ) {
1522  mPositionAgendaBottom->setChecked( true );
1523  hasPosition = true;
1524  }
1525 
1526  if ( !hasPosition ) {
1527  // no position has been selected, so default to Agenda Top
1528  mDecorationsAtAgendaViewTop << decoration;
1529  mPositionAgendaTop->setChecked( true );
1530  }
1531 
1532  mPositioningGroupBox->setEnabled( item->checkState(0) == Qt::Checked );
1533  mPositioningGroupBox->show();
1534  }
1535 
1536  slotWidChanged();
1537 }
1538 
1539 extern "C"
1540 {
1541  KDE_EXPORT KCModule *create_korganizerconfigplugins( QWidget *parent, const char * )
1542  {
1543  return new KOPrefsDialogPlugins( KOGlobals::self()->componentData(), parent );
1544  }
1545 }
1546 
1549 
1550 extern "C"
1551 {
1552  KDE_EXPORT KCModule *create_korgdesignerfields( QWidget *parent, const char * ) {
1553  return new KOPrefsDesignerFields( KOGlobals::self()->componentData(), parent );
1554  }
1555 }
1556 
1557 KOPrefsDesignerFields::KOPrefsDesignerFields( const KComponentData &inst, QWidget *parent )
1558  : KCMDesignerFields( inst, parent )
1559 {
1560 }
1561 
1562 QString KOPrefsDesignerFields::localUiDir()
1563 {
1564  const QString dir = KStandardDirs::locateLocal( "data", QLatin1String("korganizer/designer/event/") );
1565  return dir;
1566 }
1567 
1568 QString KOPrefsDesignerFields::uiPath()
1569 {
1570  return QLatin1String("korganizer/designer/event/");
1571 }
1572 
1573 void KOPrefsDesignerFields::writeActivePages( const QStringList &activePages )
1574 {
1575  CalendarSupport::KCalPrefs::instance()->setActiveDesignerFields( activePages );
1576  CalendarSupport::KCalPrefs::instance()->writeConfig();
1577 }
1578 
1579 QStringList KOPrefsDesignerFields::readActivePages()
1580 {
1581  return CalendarSupport::KCalPrefs::instance()->activeDesignerFields();
1582 }
1583 
1584 QString KOPrefsDesignerFields::applicationName()
1585 {
1586  return QLatin1String("KORGANIZER");
1587 }
1588 
1589 #include "koprefsdialog.moc"
kitemiconcheckcombo.h
KOPrefsDesignerFields
Definition: koprefsdialog.h:149
KOPrefsBase::setDecorationsAtMonthViewTop
void setDecorationsAtMonthViewTop(const QStringList &v)
Set Decorations At Month View Top.
Definition: koprefs_base.h:1543
koglobals.h
create_korganizerconfigmain
KCModule * create_korganizerconfigmain(QWidget *parent, const char *)
Definition: koprefsdialog.cpp:287
KOPrefs::setResourceColor
void setResourceColor(const QString &, const QColor &)
Definition: koprefs.cpp:105
KOCore::availablePlugins
KService::List availablePlugins()
Definition: kocore.cpp:67
create_korganizerconfigplugins
KCModule * create_korganizerconfigplugins(QWidget *parent, const char *)
Definition: koprefsdialog.cpp:1541
KOPrefsDialogMain::slotRemoveSelectedAccount
void slotRemoveSelectedAccount()
Definition: koprefsdialog.cpp:262
KOPrefsDialogPlugins::positioningChanged
void positioningChanged()
Definition: koprefsdialog.cpp:1434
KOPrefs::eventViewsPreferences
EventViews::PrefsPtr eventViewsPreferences() const
Definition: koprefs.cpp:135
koprefsdialog.h
KOPrefsDesignerFields::uiPath
QString uiPath()
Definition: koprefsdialog.cpp:1568
KOPrefsDialogGroupwareScheduling::usrWriteConfig
void usrWriteConfig()
Definition: koprefsdialog.cpp:1203
KOPrefsDialogPlugins::selectionChanged
void selectionChanged()
Definition: koprefsdialog.cpp:1474
QWidget
KOPrefsDialogPlugins
Definition: koprefsdialog.h:119
KOPrefsDialogColorsAndFonts::updateCategories
void updateCategories()
Definition: koprefsdialog.cpp:991
KOPrefsBase::mWorkWeekMask
int mWorkWeekMask
Definition: koprefs_base.h:3197
create_korganizerconfigcolorsandfonts
KCModule * create_korganizerconfigcolorsandfonts(QWidget *parent, const char *)
Definition: koprefsdialog.cpp:1057
KOPrefsDesignerFields::localUiDir
QString localUiDir()
Definition: koprefsdialog.cpp:1562
KOPrefs
Definition: koprefs.h:33
KOPrefsDialogPlugins::configure
void configure()
Definition: koprefsdialog.cpp:1409
KOPrefsDesignerFields::readActivePages
QStringList readActivePages()
Definition: koprefsdialog.cpp:1579
create_korganizerconfiggroupscheduling
KCModule * create_korganizerconfiggroupscheduling(QWidget *parent, const char *)
Definition: koprefsdialog.cpp:1111
KOPrefsDialogGroupScheduling::usrWriteConfig
void usrWriteConfig()
Definition: koprefsdialog.cpp:1105
KOPrefsDialogGroupScheduling::KOPrefsDialogGroupScheduling
KOPrefsDialogGroupScheduling(const KComponentData &inst, QWidget *parent)
Definition: koprefsdialog.cpp:1066
create_korgdesignerfields
KCModule * create_korgdesignerfields(QWidget *parent, const char *)
Definition: koprefsdialog.cpp:1552
KOGlobals::holidays
KHolidays::HolidayRegion * holidays() const
return the HolidayRegion object or 0 if none has been defined
Definition: koglobals.cpp:136
KOPrefsDialogGroupwareScheduling::usrReadConfig
void usrReadConfig()
Definition: koprefsdialog.cpp:1172
KOPrefsDialogColorsAndFonts::setResourceColor
void setResourceColor()
Definition: koprefsdialog.cpp:1022
KOPrefsDialogColorsAndFonts::setCategoryColor
void setCategoryColor()
Definition: koprefsdialog.cpp:999
KOPrefsDialogColorsAndFonts::updateResourceColor
void updateResourceColor()
Definition: koprefsdialog.cpp:1036
KOPrefsDialogGroupwareScheduling::KOPrefsDialogGroupwareScheduling
KOPrefsDialogGroupwareScheduling(const KComponentData &inst, QWidget *parent)
Definition: koprefsdialog.cpp:1120
KOPrefsDesignerFields::applicationName
QString applicationName()
Definition: koprefsdialog.cpp:1584
koprefs.h
KOPrefsDialogColorsAndFonts::usrWriteConfig
void usrWriteConfig()
Definition: koprefsdialog.cpp:967
KOPrefsDialogColorsAndFonts::usrReadConfig
void usrReadConfig()
Definition: koprefsdialog.cpp:984
create_korganizerconfigviews
KCModule * create_korganizerconfigviews(QWidget *parent, const char *)
Definition: koprefsdialog.cpp:789
create_korganizerconfigtime
KCModule * create_korganizerconfigtime(QWidget *parent, const char *)
Definition: koprefsdialog.cpp:580
KOPrefsBase::mHolidays
QString mHolidays
Definition: koprefs_base.h:3130
KOCore::availableParts
KService::List availableParts()
Definition: kocore.cpp:79
KOCore::loadPlugin
CalendarSupport::Plugin * loadPlugin(KService::Ptr service)
Definition: kocore.cpp:90
KOPrefsDialogGroupScheduling
Definition: koprefsdialog.h:91
KOPrefsDesignerFields::writeActivePages
void writeActivePages(const QStringList &)
Definition: koprefsdialog.cpp:1573
KOPrefsDialogColorsAndFonts::KOPrefsDialogColorsAndFonts
KOPrefsDialogColorsAndFonts(const KComponentData &inst, QWidget *parent)
Definition: koprefsdialog.cpp:798
KOPrefsDialogColorsAndFonts::updateResources
void updateResources()
Definition: koprefsdialog.cpp:1017
KOGlobals::calendarSystem
const KCalendarSystem * calendarSystem() const
Definition: koglobals.cpp:65
KOPrefsDialogMain::slotAccountSelected
void slotAccountSelected()
Definition: koprefsdialog.cpp:218
KOGlobals::self
static KOGlobals * self()
Definition: koglobals.cpp:43
KOPrefsDialogMain::slotAddAccount
void slotAddAccount()
Definition: koprefsdialog.cpp:234
KOPrefsDialogMain::toggleEmailSettings
void toggleEmailSettings(bool on)
Definition: koprefsdialog.cpp:272
KOPrefsDialogPlugins::KOPrefsDialogPlugins
KOPrefsDialogPlugins(const KComponentData &inst, QWidget *parent)
Dialog for selecting and configuring KOrganizer plugins.
Definition: koprefsdialog.cpp:1272
KOPrefsDialogPlugins::usrReadConfig
void usrReadConfig()
Definition: koprefsdialog.cpp:1342
KOPrefsDialogGroupScheduling::usrReadConfig
void usrReadConfig()
Definition: koprefsdialog.cpp:1101
KOPrefsDialogColorsAndFonts::updateCategoryColor
void updateCategoryColor()
Definition: koprefsdialog.cpp:1005
KOPrefsBase::decorationsAtMonthViewTop
QStringList decorationsAtMonthViewTop() const
Get Decorations At Month View Top.
Definition: koprefs_base.h:1552
create_korganizerconfigfreebusy
KCModule * create_korganizerconfigfreebusy(QWidget *parent, const char *)
Definition: koprefsdialog.cpp:1243
KItemIconCheckCombo
Definition: kitemiconcheckcombo.h:29
KOPrefsDialogGroupwareScheduling::~KOPrefsDialogGroupwareScheduling
~KOPrefsDialogGroupwareScheduling()
Definition: koprefsdialog.cpp:1167
KOPrefsDialogPlugins::usrWriteConfig
void usrWriteConfig()
Definition: koprefsdialog.cpp:1388
KOPrefsDialogMain
Definition: koprefsdialog.h:44
KOPrefs::instance
static KOPrefs * instance()
Get instance of KOPrefs.
Definition: koprefs.cpp:68
KOPrefsDialogMain::KOPrefsDialogMain
KOPrefsDialogMain(const KComponentData &inst, QWidget *parent)
Definition: koprefsdialog.cpp:77
KOrg::PrintPlugin::serviceType
static QString serviceType()
Definition: printplugin.h:72
KOPrefsDialogGroupwareScheduling
Definition: koprefsdialog.h:104
KOPrefsDesignerFields::KOPrefsDesignerFields
KOPrefsDesignerFields(const KComponentData &inst, QWidget *parent=0)
Definition: koprefsdialog.cpp:1557
KOPrefsDialogMain::slotModifySelectedAccount
void slotModifySelectedAccount()
Definition: koprefsdialog.cpp:253
QFrame
KOPrefs::resourceColor
QColor resourceColor(const QString &)
Definition: koprefs.cpp:110
KCModule
kocore.h
KOCore::self
static KOCore * self()
Definition: kocore.cpp:37
KCMDesignerFields
Definition: kcmdesignerfields.h:35
KOPrefsDialogColorsAndFonts
Definition: koprefsdialog.h:62
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:56:19 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

korganizer

Skip menu "korganizer"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Related Pages

kdepim API Reference

Skip menu "kdepim API Reference"
  • akonadi_next
  • akregator
  • blogilo
  • calendarsupport
  • console
  •   kabcclient
  •   konsolekalendar
  • kaddressbook
  • kalarm
  •   lib
  • kdgantt2
  • kjots
  • kleopatra
  • kmail
  • knode
  • knotes
  • kontact
  • korgac
  • korganizer
  • ktimetracker
  • libkdepim
  • libkleo
  • libkpgp
  • mailcommon
  • messagelist
  • messageviewer

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal