mirror of
https://bitbucket.org/smil3y/kde-playground.git
synced 2025-02-23 10:22:50 +00:00
1509 lines
58 KiB
C++
1509 lines
58 KiB
C++
/*
|
|
This file is part of KOrganizer.
|
|
|
|
Copyright (c) 2000-2003 Cornelius Schumacher <schumacher@kde.org>
|
|
Copyright (C) 2003-2004 Reinhold Kainhofer <reinhold@kainhofer.com>
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation; either version 2 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License along
|
|
with this program; if not, write to the Free Software Foundation, Inc.,
|
|
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
|
|
As a special exception, permission is given to link this program
|
|
with any edition of Qt, and distribute the resulting executable,
|
|
without including the source code for Qt in the source distribution.
|
|
*/
|
|
|
|
#include "koprefsdialog.h"
|
|
#include "kitemiconcheckcombo.h"
|
|
#include "kocore.h"
|
|
#include "koglobals.h"
|
|
#include "koprefs.h"
|
|
#include "ui_kogroupwareprefspage.h"
|
|
|
|
#include <calendarsupport/kcalprefs.h>
|
|
#include <calendarsupport/categoryconfig.h>
|
|
|
|
#include <incidenceeditor-ng/globalsettings.h>
|
|
#include <widgets/tagwidgets.h>
|
|
|
|
#include <Akonadi/AgentFilterProxyModel>
|
|
#include <Akonadi/AgentInstanceCreateJob>
|
|
#include <Akonadi/AgentManager>
|
|
#include <Akonadi/AgentTypeDialog>
|
|
#include <Akonadi/CollectionComboBox>
|
|
#include <Akonadi/CollectionModel>
|
|
#include <akonadi/calendar/calendarsettings.h>
|
|
|
|
#include <KCalCore/Event>
|
|
#include <KCalCore/Journal>
|
|
|
|
#include <KHolidays/Holidays>
|
|
|
|
#include <Mailtransport/TransportManagementWidget>
|
|
|
|
#include "pimcommon/widgets/manageaccountwidget.h"
|
|
|
|
#include <KCalendarSystem>
|
|
#include <KColorButton>
|
|
#include <KComboBox>
|
|
#include <KHBox>
|
|
#include <KIntSpinBox>
|
|
#include <KMessageBox>
|
|
#include <KService>
|
|
#include <KStandardDirs>
|
|
#include <KTabWidget>
|
|
#include <KTimeComboBox>
|
|
#include <KUrlRequester>
|
|
#include <KWindowSystem>
|
|
|
|
#include <QCheckBox>
|
|
#include <QFormLayout>
|
|
#include <QGridLayout>
|
|
#include <QGroupBox>
|
|
#include <QLabel>
|
|
#include <QListWidget>
|
|
#include <QRadioButton>
|
|
#include <QTimeEdit>
|
|
#include <QTreeWidget>
|
|
#include <QVBoxLayout>
|
|
|
|
KOPrefsDialogMain::KOPrefsDialogMain( const KComponentData &inst, QWidget *parent )
|
|
: KPrefsModule( KOPrefs::instance(), inst, parent )
|
|
{
|
|
QBoxLayout *topTopLayout = new QVBoxLayout( this );
|
|
KTabWidget *tabWidget = new KTabWidget( this );
|
|
topTopLayout->addWidget( tabWidget );
|
|
|
|
// Personal Settings
|
|
QWidget *personalFrame = new QWidget( this );
|
|
QVBoxLayout *personalLayout = new QVBoxLayout( personalFrame );
|
|
tabWidget->addTab( personalFrame, KIcon( QLatin1String("preferences-desktop-personal") ),
|
|
i18nc( "@title:tab personal settings", "Personal" ) );
|
|
|
|
KPIM::KPrefsWidBool *emailControlCenter =
|
|
addWidBool( CalendarSupport::KCalPrefs::instance()->emailControlCenterItem(), personalFrame );
|
|
connect( emailControlCenter->checkBox(), SIGNAL(toggled(bool)), SLOT(toggleEmailSettings(bool)) );
|
|
personalLayout->addWidget( emailControlCenter->checkBox() );
|
|
|
|
mUserEmailSettings =
|
|
new QGroupBox( i18nc( "@title:group email settings", "Email Settings" ), personalFrame );
|
|
|
|
personalLayout->addWidget( mUserEmailSettings );
|
|
QFormLayout *emailSettingsLayout = new QFormLayout( mUserEmailSettings );
|
|
KPIM::KPrefsWidString *s =
|
|
addWidString( CalendarSupport::KCalPrefs::instance()->userNameItem(), mUserEmailSettings );
|
|
emailSettingsLayout->addRow ( s->label(), s->lineEdit() );
|
|
|
|
s=addWidString( CalendarSupport::KCalPrefs::instance()->userEmailItem(), mUserEmailSettings );
|
|
emailSettingsLayout->addRow ( s->label(), s->lineEdit() );
|
|
|
|
KPIM::KPrefsWidRadios *defaultEmailAttachMethod =
|
|
addWidRadios(
|
|
IncidenceEditorNG::GlobalSettings::self()->defaultEmailAttachMethodItem(), personalFrame );
|
|
personalLayout->addWidget( defaultEmailAttachMethod->groupBox() );
|
|
personalLayout->addStretch( 1 );
|
|
|
|
// Save Settings
|
|
QFrame *saveFrame = new QFrame( this );
|
|
tabWidget->addTab( saveFrame, KIcon( QLatin1String("document-save") ),
|
|
i18nc( "@title:tab", "Save" ) );
|
|
QVBoxLayout *saveLayout = new QVBoxLayout( saveFrame );
|
|
|
|
QGroupBox *saveGroupBox =
|
|
new QGroupBox( i18nc( "@title:group", "Exporting Calendar" ), saveFrame );
|
|
saveLayout->addWidget( saveGroupBox );
|
|
QVBoxLayout *saveGroupLayout = new QVBoxLayout;
|
|
saveGroupBox->setLayout( saveGroupLayout );
|
|
|
|
KPIM::KPrefsWidBool *autoExportHTML =
|
|
addWidBool( KOPrefs::instance()->autoExportItem(), saveGroupBox );
|
|
saveGroupLayout->addWidget( autoExportHTML->checkBox() );
|
|
|
|
QBoxLayout *intervalLayout = new QHBoxLayout;
|
|
saveGroupLayout->addLayout( intervalLayout );
|
|
|
|
KPIM::KPrefsWidInt *autoExportInterval =
|
|
addWidInt( KOPrefs::instance()->autoExportIntervalItem(), saveGroupBox );
|
|
connect( autoExportHTML->checkBox(), SIGNAL(toggled(bool)),
|
|
autoExportInterval->label(), SLOT(setEnabled(bool)) );
|
|
connect( autoExportHTML->checkBox(), SIGNAL(toggled(bool)),
|
|
autoExportInterval->spinBox(), SLOT(setEnabled(bool)) );
|
|
intervalLayout->addWidget( autoExportInterval->label() );
|
|
intervalLayout->addWidget( autoExportInterval->spinBox() );
|
|
|
|
KPIM::KPrefsWidBool *confirmItem =
|
|
addWidBool( KOPrefs::instance()->confirmItem(), saveFrame );
|
|
saveLayout->addWidget( confirmItem->checkBox() );
|
|
KPIM::KPrefsWidRadios *destinationItem =
|
|
addWidRadios( KOPrefs::instance()->destinationItem(), saveFrame );
|
|
|
|
saveLayout->addWidget( destinationItem->groupBox() );
|
|
saveLayout->addStretch( 1 );
|
|
|
|
// System Tray Settings
|
|
QFrame *systrayFrame = new QFrame( this );
|
|
QVBoxLayout *systrayLayout = new QVBoxLayout( systrayFrame );
|
|
tabWidget->addTab( systrayFrame, KIcon( QLatin1String("preferences-other") ),
|
|
i18nc( "@title:tab systray settings", "System Tray" ) );
|
|
|
|
QGroupBox *systrayGroupBox =
|
|
new QGroupBox( i18nc( "@title:group", "Show/Hide Options" ), systrayFrame );
|
|
systrayLayout->addWidget( systrayGroupBox );
|
|
QVBoxLayout *systrayGroupLayout = new QVBoxLayout;
|
|
systrayGroupBox->setLayout( systrayGroupLayout );
|
|
|
|
KPIM::KPrefsWidBool *showReminderDaemonItem =
|
|
addWidBool( KOPrefs::instance()->showReminderDaemonItem(), systrayGroupBox );
|
|
systrayGroupLayout->addWidget( showReminderDaemonItem->checkBox() );
|
|
showReminderDaemonItem->checkBox()->setToolTip(
|
|
i18nc( "@info:tooltip", "Enable this setting to show the KOrganizer "
|
|
"reminder daemon in your system tray (recommended)." ) );
|
|
|
|
QLabel *note = new QLabel(
|
|
i18nc( "@info",
|
|
"<note>The daemon will continue running even if it is not shown "
|
|
"in the system tray.</note>" ) );
|
|
systrayGroupLayout->addWidget( note );
|
|
|
|
systrayLayout->addStretch( 1 );
|
|
|
|
//Calendar Account
|
|
QFrame *calendarFrame = new QFrame( this );
|
|
tabWidget->addTab( calendarFrame, KIcon( QLatin1String("office-calendar") ),
|
|
i18nc( "@title:tab calendar account settings", "Calendars" ) );
|
|
QHBoxLayout *calendarFrameLayout = new QHBoxLayout;
|
|
calendarFrame->setLayout(calendarFrameLayout);
|
|
PimCommon::ManageAccountWidget *manageAccountWidget = new PimCommon::ManageAccountWidget(this);
|
|
calendarFrameLayout->addWidget(manageAccountWidget);
|
|
|
|
manageAccountWidget->setMimeTypeFilter(QStringList() <<QLatin1String("text/calendar"));
|
|
manageAccountWidget->setCapabilityFilter(QStringList() << QLatin1String("Resource") ); // show only resources, no agents
|
|
|
|
load();
|
|
}
|
|
|
|
void KOPrefsDialogMain::usrWriteConfig()
|
|
{
|
|
KPIM::KPrefsModule::usrWriteConfig();
|
|
IncidenceEditorNG::GlobalSettings::self()->writeConfig();
|
|
}
|
|
|
|
void KOPrefsDialogMain::toggleEmailSettings( bool on )
|
|
{
|
|
mUserEmailSettings->setEnabled( !on );
|
|
/* if (on) {
|
|
KEMailSettings settings;
|
|
mNameEdit->setText( settings.getSetting(KEMailSettings::RealName) );
|
|
mEmailEdit->setText( settings.getSetting(KEMailSettings::EmailAddress) );
|
|
} else {
|
|
mNameEdit->setText( CalendarSupport::KCalPrefs::instance()->mName );
|
|
mEmailEdit->setText( CalendarSupport::KCalPrefs::instance()->mEmail );
|
|
}*/
|
|
}
|
|
|
|
extern "C"
|
|
{
|
|
KDE_EXPORT KCModule *create_korganizerconfigmain( QWidget *parent, const char * )
|
|
{
|
|
return new KOPrefsDialogMain( KOGlobals::self()->componentData(), parent );
|
|
}
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
class KOPrefsDialogTime : public KPIM::KPrefsModule
|
|
{
|
|
public:
|
|
KOPrefsDialogTime( const KComponentData &inst, QWidget *parent )
|
|
: KPIM::KPrefsModule( KOPrefs::instance(), inst, parent )
|
|
{
|
|
QVBoxLayout *layout = new QVBoxLayout( this );
|
|
KTabWidget *tabWidget = new KTabWidget( this );
|
|
layout->addWidget( tabWidget );
|
|
|
|
QFrame *regionalPage = new QFrame( parent );
|
|
tabWidget->addTab( regionalPage, KIcon( QLatin1String("flag") ),
|
|
i18nc( "@title:tab", "Regional" ) );
|
|
|
|
QGridLayout *regionalLayout = new QGridLayout( regionalPage );
|
|
regionalLayout->setSpacing( KDialog::spacingHint() );
|
|
|
|
QGroupBox *datetimeGroupBox =
|
|
new QGroupBox( i18nc( "@title:group", "General Time and Date" ), regionalPage );
|
|
regionalLayout->addWidget( datetimeGroupBox, 0, 0 );
|
|
|
|
QGridLayout *datetimeLayout = new QGridLayout( datetimeGroupBox );
|
|
|
|
KPIM::KPrefsWidTime *dayBegins =
|
|
addWidTime( KOPrefs::instance()->dayBeginsItem(), regionalPage );
|
|
datetimeLayout->addWidget( dayBegins->label(), 1, 0 );
|
|
datetimeLayout->addWidget( dayBegins->timeEdit(), 1, 1 );
|
|
|
|
QGroupBox *holidaysGroupBox =
|
|
new QGroupBox( i18nc( "@title:group", "Holidays" ), regionalPage );
|
|
regionalLayout->addWidget( holidaysGroupBox, 1, 0 );
|
|
|
|
QGridLayout *holidaysLayout = new QGridLayout( holidaysGroupBox );
|
|
|
|
// holiday region selection
|
|
KHBox *holidayRegBox = new KHBox( regionalPage );
|
|
holidaysLayout->addWidget( holidayRegBox, 1, 0, 1, 2 );
|
|
|
|
QLabel *holidayLabel = new QLabel(
|
|
i18nc( "@label", "Use holiday region:" ), holidayRegBox );
|
|
holidayLabel->setWhatsThis( KOPrefs::instance()->holidaysItem()->whatsThis() );
|
|
|
|
mHolidayCombo = new KComboBox( holidayRegBox );
|
|
connect( mHolidayCombo, SIGNAL(activated(int)), SLOT(slotWidChanged()) );
|
|
|
|
mHolidayCombo->setWhatsThis( KOPrefs::instance()->holidaysItem()->whatsThis() );
|
|
|
|
QStringList regions = KHolidays::HolidayRegion::regionCodes();
|
|
QMap<QString, QString> regionsMap;
|
|
|
|
foreach ( const QString & regionCode, regions ) {
|
|
QString name = KHolidays::HolidayRegion::name( regionCode );
|
|
QString languageName =
|
|
KGlobal::locale()->languageCodeToName(
|
|
KHolidays::HolidayRegion::languageCode( regionCode ) );
|
|
QString label;
|
|
if ( languageName.isEmpty() ) {
|
|
label = name;
|
|
} else {
|
|
label = i18nc( "Holday region, region language", "%1 (%2)", name, languageName );
|
|
}
|
|
regionsMap.insert( label, regionCode );
|
|
}
|
|
|
|
mHolidayCombo->addItem( i18nc( "No holiday region", "None" ), QString() );
|
|
QMapIterator<QString, QString> i( regionsMap );
|
|
while ( i.hasNext() ) {
|
|
i.next();
|
|
mHolidayCombo->addItem( i.key(), i.value() );
|
|
}
|
|
|
|
if ( KOGlobals::self()->holidays() && KOGlobals::self()->holidays()->isValid() ) {
|
|
mHolidayCombo->setCurrentIndex(
|
|
mHolidayCombo->findData( KOGlobals::self()->holidays()->regionCode() ) );
|
|
} else {
|
|
mHolidayCombo->setCurrentIndex( 0 );
|
|
}
|
|
|
|
QGroupBox *workingHoursGroupBox =
|
|
new QGroupBox( i18nc( "@title:group", "Working Period" ), regionalPage );
|
|
regionalLayout->addWidget( workingHoursGroupBox, 2, 0 );
|
|
|
|
QBoxLayout *workingHoursLayout = new QVBoxLayout( workingHoursGroupBox );
|
|
|
|
QBoxLayout *workDaysLayout = new QHBoxLayout;
|
|
workingHoursLayout->addLayout( workDaysLayout );
|
|
|
|
// Respect start of week setting
|
|
int weekStart = KGlobal::locale()->weekStartDay();
|
|
for ( int i=0; i < 7; ++i ) {
|
|
const KCalendarSystem *calSys = KOGlobals::self()->calendarSystem();
|
|
QString weekDayName = calSys->weekDayName( ( i + weekStart + 6 ) % 7 + 1,
|
|
KCalendarSystem::ShortDayName );
|
|
int index = ( i + weekStart + 6 ) % 7;
|
|
mWorkDays[ index ] = new QCheckBox( weekDayName );
|
|
mWorkDays[ index ]->setWhatsThis(
|
|
i18nc( "@info:whatsthis",
|
|
"Check this box to make KOrganizer mark the "
|
|
"working hours for this day of the week. "
|
|
"If this is a work day for you, check "
|
|
"this box, or the working hours will not be "
|
|
"marked with color." ) );
|
|
|
|
connect( mWorkDays[ index ], SIGNAL(stateChanged(int)), SLOT(slotWidChanged()) );
|
|
|
|
workDaysLayout->addWidget( mWorkDays[ index ] );
|
|
}
|
|
|
|
KPIM::KPrefsWidTime *workStart =
|
|
addWidTime( KOPrefs::instance()->workingHoursStartItem() );
|
|
|
|
QHBoxLayout *workStartLayout = new QHBoxLayout;
|
|
workingHoursLayout->addLayout( workStartLayout );
|
|
|
|
workStartLayout->addWidget( workStart->label() );
|
|
workStartLayout->addWidget( workStart->timeEdit() );
|
|
|
|
KPIM::KPrefsWidTime *workEnd =
|
|
addWidTime( KOPrefs::instance()->workingHoursEndItem() );
|
|
|
|
QHBoxLayout *workEndLayout = new QHBoxLayout;
|
|
workingHoursLayout->addLayout( workEndLayout );
|
|
|
|
workEndLayout->addWidget( workEnd->label() );
|
|
workEndLayout->addWidget( workEnd->timeEdit() );
|
|
|
|
KPIM::KPrefsWidBool *excludeHolidays =
|
|
addWidBool( KOPrefs::instance()->excludeHolidaysItem() );
|
|
|
|
workingHoursLayout->addWidget( excludeHolidays->checkBox() );
|
|
|
|
regionalLayout->setRowStretch( 4, 1 );
|
|
|
|
QFrame *defaultPage = new QFrame( parent );
|
|
tabWidget->addTab( defaultPage, KIcon( QLatin1String("draw-eraser") ),
|
|
i18nc( "@title:tab", "Default Values" ) );
|
|
QGridLayout *defaultLayout = new QGridLayout( defaultPage );
|
|
defaultLayout->setSpacing( KDialog::spacingHint() );
|
|
|
|
QGroupBox *timesGroupBox =
|
|
new QGroupBox( i18nc( "@title:group", "Appointments" ), defaultPage );
|
|
defaultLayout->addWidget( timesGroupBox, 0, 0 );
|
|
|
|
QGridLayout *timesLayout = new QGridLayout( timesGroupBox );
|
|
|
|
KPIM::KPrefsWidTime *defaultTime =
|
|
addWidTime( CalendarSupport::KCalPrefs::instance()->startTimeItem(), defaultPage );
|
|
timesLayout->addWidget( defaultTime->label(), 0, 0 );
|
|
timesLayout->addWidget( defaultTime->timeEdit(), 0, 1 );
|
|
|
|
KPIM::KPrefsWidDuration *defaultDuration =
|
|
addWidDuration( CalendarSupport::KCalPrefs::instance()->defaultDurationItem(),
|
|
QLatin1String("hh:mm"), defaultPage );
|
|
|
|
timesLayout->addWidget( defaultDuration->label(), 1, 0 );
|
|
timesLayout->addWidget( defaultDuration->timeEdit(), 1, 1 );
|
|
|
|
QGroupBox *remindersGroupBox =
|
|
new QGroupBox( i18nc( "@title:group", "Reminders" ), defaultPage );
|
|
defaultLayout->addWidget( remindersGroupBox, 1, 0 );
|
|
|
|
QGridLayout *remindersLayout = new QGridLayout( remindersGroupBox );
|
|
|
|
QLabel *reminderLabel =
|
|
new QLabel( i18nc( "@label", "Default reminder time:" ), defaultPage );
|
|
remindersLayout->addWidget( reminderLabel, 0, 0 );
|
|
reminderLabel->setWhatsThis(
|
|
CalendarSupport::KCalPrefs::instance()->reminderTimeItem()->whatsThis() );
|
|
mReminderTimeSpin = new KIntSpinBox( defaultPage );
|
|
mReminderTimeSpin->setWhatsThis(
|
|
CalendarSupport::KCalPrefs::instance()->reminderTimeItem()->whatsThis() );
|
|
mReminderTimeSpin->setToolTip(
|
|
CalendarSupport::KCalPrefs::instance()->reminderTimeItem()->toolTip() );
|
|
connect( mReminderTimeSpin, SIGNAL(valueChanged(int)), SLOT(slotWidChanged()) );
|
|
remindersLayout->addWidget( mReminderTimeSpin, 0, 1 );
|
|
|
|
mReminderUnitsCombo = new KComboBox( defaultPage );
|
|
mReminderUnitsCombo->setToolTip(
|
|
CalendarSupport::KCalPrefs::instance()->reminderTimeUnitsItem()->toolTip() );
|
|
mReminderUnitsCombo->setWhatsThis(
|
|
CalendarSupport::KCalPrefs::instance()->reminderTimeUnitsItem()->whatsThis() );
|
|
connect( mReminderUnitsCombo, SIGNAL(activated(int)), SLOT(slotWidChanged()) );
|
|
mReminderUnitsCombo->addItem(
|
|
i18nc( "@item:inlistbox reminder units in minutes", "minute(s)" ) );
|
|
mReminderUnitsCombo->addItem(
|
|
i18nc( "@item:inlistbox reminder time units in hours", "hour(s)" ) );
|
|
mReminderUnitsCombo->addItem(
|
|
i18nc( "@item:inlistbox reminder time units in days", "day(s)" ) );
|
|
remindersLayout->addWidget( mReminderUnitsCombo, 0, 2 );
|
|
|
|
QCheckBox *cb =
|
|
addWidBool(
|
|
CalendarSupport::KCalPrefs::instance()->defaultAudioFileRemindersItem() )->checkBox();
|
|
cb->setText( QString() );
|
|
|
|
if ( CalendarSupport::KCalPrefs::instance()->audioFilePathItem()->value().isEmpty() ) {
|
|
const QString defAudioFile = KGlobal::dirs()->locate( "sound", QLatin1String("KDE-Sys-Warning.ogg") );
|
|
CalendarSupport::KCalPrefs::instance()->audioFilePathItem()->setValue(defAudioFile);
|
|
}
|
|
QString filter =
|
|
i18n( "*.ogg *.wav *.mp3 *.wma *.flac *.aiff *.raw *.au *.ra|"
|
|
"Audio Files (*.ogg *.wav *.mp3 *.wma *.flac *.aiff *.raw *.au *.ra)" );
|
|
KUrlRequester *rq = addWidPath( CalendarSupport::KCalPrefs::instance()->audioFilePathItem(),
|
|
0, filter )->urlRequester();
|
|
rq->setEnabled( cb->isChecked() );
|
|
|
|
connect( cb, SIGNAL(toggled(bool)), rq, SLOT(setEnabled(bool)) );
|
|
|
|
QHBoxLayout *audioFileRemindersBox = new QHBoxLayout( remindersGroupBox );
|
|
audioFileRemindersBox->addWidget( cb );
|
|
audioFileRemindersBox->addWidget( rq );
|
|
|
|
remindersLayout->addLayout( audioFileRemindersBox, 1, 0 );
|
|
remindersLayout->addWidget(
|
|
addWidBool(
|
|
CalendarSupport::KCalPrefs::instance()->defaultEventRemindersItem() )->checkBox(), 2, 0 );
|
|
remindersLayout->addWidget(
|
|
addWidBool(
|
|
CalendarSupport::KCalPrefs::instance()->defaultTodoRemindersItem() )->checkBox(), 3, 0 );
|
|
|
|
defaultLayout->setRowStretch( 3, 1 );
|
|
load();
|
|
}
|
|
|
|
protected:
|
|
void usrReadConfig()
|
|
{
|
|
mReminderTimeSpin->setValue( CalendarSupport::KCalPrefs::instance()->mReminderTime );
|
|
mReminderUnitsCombo->setCurrentIndex(
|
|
CalendarSupport::KCalPrefs::instance()->mReminderTimeUnits );
|
|
for ( int i = 0; i < 7; ++i ) {
|
|
mWorkDays[i]->setChecked( ( 1 << i ) & ( KOPrefs::instance()->mWorkWeekMask ) );
|
|
}
|
|
}
|
|
|
|
void usrWriteConfig()
|
|
{
|
|
KOPrefs::instance()->mHolidays =
|
|
mHolidayCombo->itemData( mHolidayCombo->currentIndex() ).toString();
|
|
|
|
CalendarSupport::KCalPrefs::instance()->mReminderTime =
|
|
mReminderTimeSpin->value();
|
|
CalendarSupport::KCalPrefs::instance()->mReminderTimeUnits =
|
|
mReminderUnitsCombo->currentIndex();
|
|
|
|
int mask = 0;
|
|
for ( int i = 0; i < 7; ++i ) {
|
|
if ( mWorkDays[i]->isChecked() ) {
|
|
mask = mask | ( 1 << i );
|
|
}
|
|
}
|
|
KOPrefs::instance()->mWorkWeekMask = mask;
|
|
KOPrefs::instance()->writeConfig();
|
|
CalendarSupport::KCalPrefs::instance()->writeConfig();
|
|
}
|
|
|
|
void setCombo( KComboBox *combo, const QString &text, const QStringList *tags = 0 )
|
|
{
|
|
if ( tags ) {
|
|
int i = tags->indexOf( text );
|
|
if ( i > 0 ) {
|
|
combo->setCurrentIndex( i );
|
|
}
|
|
} else {
|
|
for ( int i=0; i < combo->count(); ++i ) {
|
|
if ( combo->itemText( i ) == text ) {
|
|
combo->setCurrentIndex( i );
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
private:
|
|
QStringList tzonenames;
|
|
KComboBox *mHolidayCombo;
|
|
KIntSpinBox *mReminderTimeSpin;
|
|
KComboBox *mReminderUnitsCombo;
|
|
QCheckBox *mWorkDays[7];
|
|
};
|
|
|
|
extern "C"
|
|
{
|
|
KDE_EXPORT KCModule *create_korganizerconfigtime( QWidget *parent, const char * )
|
|
{
|
|
KGlobal::locale()->insertCatalog( QLatin1String("timezones4") );
|
|
return new KOPrefsDialogTime( KOGlobals::self()->componentData(), parent );
|
|
}
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
class KOPrefsDialogViews : public KPIM::KPrefsModule
|
|
{
|
|
public:
|
|
KOPrefsDialogViews( const KComponentData &inst, QWidget *parent )
|
|
: KPIM::KPrefsModule( KOPrefs::instance(), inst, parent ),
|
|
mMonthIconComboBox( new KItemIconCheckCombo( KItemIconCheckCombo::MonthType, this ) ),
|
|
mAgendaIconComboBox( new KItemIconCheckCombo( KItemIconCheckCombo::AgendaType, this ) )
|
|
{
|
|
QBoxLayout *topTopLayout = new QVBoxLayout( this );
|
|
KTabWidget *tabWidget = new KTabWidget( this );
|
|
topTopLayout->addWidget( tabWidget );
|
|
|
|
connect( mMonthIconComboBox, SIGNAL(checkedItemsChanged(QStringList)),
|
|
SLOT(slotWidChanged()) );
|
|
connect( mAgendaIconComboBox, SIGNAL(checkedItemsChanged(QStringList)),
|
|
SLOT(slotWidChanged()) );
|
|
|
|
// Tab: Views->General
|
|
QFrame *generalFrame = new QFrame( this );
|
|
tabWidget->addTab( generalFrame, KIcon( QLatin1String("view-choose") ),
|
|
i18nc( "@title:tab general settings", "General" ) );
|
|
|
|
QBoxLayout *generalLayout = new QVBoxLayout( generalFrame );
|
|
|
|
// GroupBox: Views->General->Display Options
|
|
QVBoxLayout *gdisplayLayout = new QVBoxLayout;
|
|
QGroupBox *gdisplayBox = new QGroupBox( i18nc( "@title:group", "Display Options" ) );
|
|
|
|
QBoxLayout *nextDaysLayout = new QHBoxLayout;
|
|
gdisplayLayout->addLayout( nextDaysLayout );
|
|
|
|
KPIM::KPrefsWidInt *nextDays =
|
|
addWidInt( KOPrefs::instance()->nextXDaysItem() );
|
|
nextDays->spinBox()->setSuffix(
|
|
i18nc( "@label suffix in the N days spin box", " days" ) );
|
|
|
|
nextDaysLayout->addWidget( nextDays->label() );
|
|
nextDaysLayout->addWidget( nextDays->spinBox() );
|
|
nextDaysLayout->addStretch( 1 );
|
|
|
|
gdisplayLayout->addWidget(
|
|
addWidBool( KOPrefs::instance()->enableToolTipsItem() )->checkBox() );
|
|
gdisplayLayout->addWidget(
|
|
addWidBool( KOPrefs::instance()->todosUseCategoryColorsItem() )->checkBox() );
|
|
gdisplayBox->setLayout( gdisplayLayout );
|
|
generalLayout->addWidget( gdisplayBox );
|
|
|
|
// GroupBox: Views->General->Date Navigator
|
|
QVBoxLayout *datenavLayout = new QVBoxLayout;
|
|
QGroupBox *datenavBox = new QGroupBox( i18nc( "@title:group", "Date Navigator" ) );
|
|
datenavLayout->addWidget(
|
|
addWidBool( KOPrefs::instance()->dailyRecurItem() )->checkBox() );
|
|
datenavLayout->addWidget(
|
|
addWidBool( KOPrefs::instance()->weeklyRecurItem() )->checkBox() );
|
|
datenavLayout->addWidget(
|
|
addWidBool( KOPrefs::instance()->highlightTodosItem() )->checkBox() );
|
|
datenavLayout->addWidget(
|
|
addWidBool( KOPrefs::instance()->highlightJournalsItem() )->checkBox() );
|
|
datenavLayout->addWidget(
|
|
addWidBool( KOPrefs::instance()->weekNumbersShowWorkItem() )->checkBox() );
|
|
datenavBox->setLayout( datenavLayout );
|
|
generalLayout->addWidget( datenavBox );
|
|
generalLayout->addStretch( 1 );
|
|
|
|
// Tab: Views->Agenda View
|
|
QFrame *agendaFrame = new QFrame( this );
|
|
tabWidget->addTab( agendaFrame, KIcon( QLatin1String("view-calendar-workweek") ),
|
|
i18nc( "@title:tab", "Agenda View" ) );
|
|
|
|
QBoxLayout *agendaLayout = new QVBoxLayout( agendaFrame );
|
|
|
|
// GroupBox: Views->Agenda View->Display Options
|
|
QVBoxLayout *adisplayLayout = new QVBoxLayout;
|
|
QGroupBox *adisplayBox = new QGroupBox( i18nc( "@title:group", "Display Options" ) );
|
|
|
|
QHBoxLayout *hourSizeLayout = new QHBoxLayout;
|
|
adisplayLayout->addLayout( hourSizeLayout );
|
|
|
|
KPIM::KPrefsWidInt *hourSize =
|
|
addWidInt( KOPrefs::instance()->hourSizeItem() );
|
|
hourSize->spinBox()->setSuffix(
|
|
i18nc( "@label suffix in the hour size spin box", " pixels" ) );
|
|
|
|
hourSizeLayout->addWidget( hourSize->label() );
|
|
hourSizeLayout->addWidget( hourSize->spinBox() );
|
|
hourSizeLayout->addStretch( 1 );
|
|
|
|
adisplayLayout->addWidget(
|
|
addWidBool( KOPrefs::instance()->enableAgendaItemIconsItem() )->checkBox() );
|
|
adisplayLayout->addWidget(
|
|
addWidBool( KOPrefs::instance()->showTodosAgendaViewItem() )->checkBox() );
|
|
KPIM::KPrefsWidBool *marcusBainsEnabled =
|
|
addWidBool( KOPrefs::instance()->marcusBainsEnabledItem() );
|
|
adisplayLayout->addWidget( marcusBainsEnabled->checkBox() );
|
|
|
|
KPIM::KPrefsWidBool *marcusBainsShowSeconds =
|
|
addWidBool( KOPrefs::instance()->marcusBainsShowSecondsItem() );
|
|
connect( marcusBainsEnabled->checkBox(), SIGNAL(toggled(bool)),
|
|
marcusBainsShowSeconds->checkBox(), SLOT(setEnabled(bool)) );
|
|
|
|
adisplayLayout->addWidget( marcusBainsShowSeconds->checkBox() );
|
|
adisplayLayout->addWidget(
|
|
addWidBool( KOPrefs::instance()->selectionStartsEditorItem() )->checkBox() );
|
|
mAgendaIconComboBox->setCheckedIcons(
|
|
KOPrefs::instance()->eventViewsPreferences()->agendaViewIcons() );
|
|
adisplayLayout->addWidget( mAgendaIconComboBox );
|
|
adisplayBox->setLayout( adisplayLayout );
|
|
agendaLayout->addWidget( adisplayBox );
|
|
|
|
// GroupBox: Views->Agenda View->Color Usage
|
|
agendaLayout->addWidget(
|
|
addWidRadios( KOPrefs::instance()->agendaViewColorsItem() )->groupBox() );
|
|
|
|
agendaLayout->addWidget(
|
|
addWidBool( KOPrefs::instance()->colorBusyDaysEnabledItem() )->checkBox() );
|
|
|
|
// GroupBox: Views->Agenda View->Multiple Calendars
|
|
agendaLayout->addWidget(
|
|
addWidRadios( KOPrefs::instance()->agendaViewCalendarDisplayItem() )->groupBox() );
|
|
|
|
agendaLayout->addStretch( 1 );
|
|
|
|
// Tab: Views->Month View
|
|
QFrame *monthFrame = new QFrame( this );
|
|
tabWidget->addTab( monthFrame, KIcon( QLatin1String("view-calendar-month") ),
|
|
i18nc( "@title:tab", "Month View" ) );
|
|
|
|
QBoxLayout *monthLayout = new QVBoxLayout( monthFrame );
|
|
|
|
// GroupBox: Views->Month View->Display Options
|
|
QVBoxLayout *mdisplayLayout = new QVBoxLayout;
|
|
QGroupBox *mdisplayBox = new QGroupBox( i18nc( "@title:group", "Display Options" ) );
|
|
/*mdisplayLayout->addWidget(
|
|
addWidBool( KOPrefs::instance()->enableMonthScrollItem() )->checkBox() );*/
|
|
mdisplayLayout->addWidget(
|
|
addWidBool( KOPrefs::instance()->showTimeInMonthViewItem() )->checkBox() );
|
|
mdisplayLayout->addWidget(
|
|
addWidBool( KOPrefs::instance()->enableMonthItemIconsItem() )->checkBox() );
|
|
mdisplayLayout->addWidget(
|
|
addWidBool( KOPrefs::instance()->showTodosMonthViewItem() )->checkBox() );
|
|
mdisplayLayout->addWidget(
|
|
addWidBool( KOPrefs::instance()->showJournalsMonthViewItem() )->checkBox() );
|
|
mdisplayBox->setLayout( mdisplayLayout );
|
|
|
|
mMonthIconComboBox->setCheckedIcons(
|
|
KOPrefs::instance()->eventViewsPreferences()->monthViewIcons() );
|
|
mdisplayLayout->addWidget( mMonthIconComboBox );
|
|
|
|
monthLayout->addWidget( mdisplayBox );
|
|
|
|
monthLayout->addWidget(
|
|
addWidBool( KOPrefs::instance()->colorMonthBusyDaysEnabledItem() )->checkBox() );
|
|
|
|
// GroupBox: Views->Month View->Color Usage
|
|
monthLayout->addWidget(
|
|
addWidRadios( KOPrefs::instance()->monthViewColorsItem() )->groupBox() );
|
|
monthLayout->addStretch( 1 );
|
|
|
|
// Tab: Views->Todo View
|
|
QFrame *todoFrame = new QFrame( this );
|
|
tabWidget->addTab( todoFrame, KIcon( QLatin1String("view-calendar-tasks") ),
|
|
i18nc( "@title:tab", "Todo View" ) );
|
|
|
|
QBoxLayout *todoLayout = new QVBoxLayout( todoFrame );
|
|
|
|
// GroupBox: Views->Todo View->Display Options
|
|
QVBoxLayout *tdisplayLayout = new QVBoxLayout;
|
|
QGroupBox *tdisplayBox = new QGroupBox( i18nc( "@title:group", "Display Options" ) );
|
|
tdisplayLayout->addWidget(
|
|
addWidBool( KOPrefs::instance()->sortCompletedTodosSeparatelyItem() )->checkBox() );
|
|
tdisplayBox->setLayout( tdisplayLayout );
|
|
todoLayout->addWidget( tdisplayBox );
|
|
|
|
// GroupBox: Views->Todo View->Other
|
|
QVBoxLayout *otherLayout = new QVBoxLayout;
|
|
QGroupBox *otherBox = new QGroupBox( i18nc( "@title:group", "Other Options" ) );
|
|
otherLayout->addWidget(
|
|
addWidBool( KOPrefs::instance()->recordTodosInJournalsItem() )->checkBox() );
|
|
otherBox->setLayout( otherLayout );
|
|
todoLayout->addWidget( otherBox );
|
|
todoLayout->addStretch( 1 );
|
|
|
|
load();
|
|
}
|
|
protected:
|
|
void usrWriteConfig()
|
|
{
|
|
KOPrefs::instance()->eventViewsPreferences()->setAgendaViewIcons(
|
|
mAgendaIconComboBox->checkedIcons() );
|
|
KOPrefs::instance()->eventViewsPreferences()->setMonthViewIcons(
|
|
mMonthIconComboBox->checkedIcons() );
|
|
}
|
|
private:
|
|
KItemIconCheckCombo *mMonthIconComboBox;
|
|
KItemIconCheckCombo *mAgendaIconComboBox;
|
|
};
|
|
|
|
extern "C"
|
|
{
|
|
KDE_EXPORT KCModule *create_korganizerconfigviews( QWidget *parent, const char * )
|
|
{
|
|
return new KOPrefsDialogViews( KOGlobals::self()->componentData(), parent );
|
|
}
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
KOPrefsDialogColorsAndFonts::KOPrefsDialogColorsAndFonts( const KComponentData &inst,
|
|
QWidget *parent )
|
|
: KPIM::KPrefsModule( KOPrefs::instance(), inst, parent )
|
|
{
|
|
QBoxLayout *topTopLayout = new QVBoxLayout( this );
|
|
KTabWidget *tabWidget = new KTabWidget( this );
|
|
topTopLayout->addWidget( tabWidget );
|
|
|
|
QWidget *colorFrame = new QWidget( this );
|
|
topTopLayout->addWidget( colorFrame );
|
|
QGridLayout *colorLayout = new QGridLayout(colorFrame);
|
|
colorLayout->setSpacing( KDialog::spacingHint() );
|
|
tabWidget->addTab( colorFrame, KIcon( QLatin1String("preferences-desktop-color") ),
|
|
i18nc( "@title:tab", "Colors" ) );
|
|
|
|
// Holiday Color
|
|
KPIM::KPrefsWidColor *holidayColor =
|
|
addWidColor( KOPrefs::instance()->agendaHolidaysBackgroundColorItem(), colorFrame );
|
|
colorLayout->addWidget( holidayColor->label(), 0, 0 );
|
|
colorLayout->addWidget( holidayColor->button(), 0, 1 );
|
|
|
|
// agenda view background color
|
|
KPIM::KPrefsWidColor *agendaBgColor =
|
|
addWidColor( KOPrefs::instance()->agendaGridBackgroundColorItem(), colorFrame );
|
|
colorLayout->addWidget( agendaBgColor->label(), 3, 0 );
|
|
colorLayout->addWidget( agendaBgColor->button(), 3, 1 );
|
|
|
|
// agenda view Marcus Bains line color
|
|
KPIM::KPrefsWidColor *mblColor =
|
|
addWidColor( KOPrefs::instance()->agendaMarcusBainsLineLineColorItem(), colorFrame );
|
|
colorLayout->addWidget( mblColor->label(), 5, 0 );
|
|
colorLayout->addWidget( mblColor->button(), 5, 1 );
|
|
|
|
KPIM::KPrefsWidColor *viewBgBusyColor =
|
|
addWidColor( KOPrefs::instance()->viewBgBusyColorItem(), colorFrame );
|
|
colorLayout->addWidget( viewBgBusyColor->label(), 4, 0 );
|
|
colorLayout->addWidget( viewBgBusyColor->button(), 4, 1 );
|
|
|
|
// working hours color
|
|
KPIM::KPrefsWidColor *agendaGridWorkHoursBackgroundColor =
|
|
addWidColor( KOPrefs::instance()->workingHoursColorItem(), colorFrame );
|
|
colorLayout->addWidget( agendaGridWorkHoursBackgroundColor->label(), 6, 0 );
|
|
colorLayout->addWidget( agendaGridWorkHoursBackgroundColor->button(), 6, 1 );
|
|
|
|
// Todo due today color
|
|
KPIM::KPrefsWidColor *todoDueTodayColor =
|
|
addWidColor(
|
|
KOPrefs::instance()->todoDueTodayColorItem(), colorFrame );
|
|
colorLayout->addWidget( todoDueTodayColor->label(), 7, 0 );
|
|
colorLayout->addWidget( todoDueTodayColor->button(), 7, 1 );
|
|
|
|
// Todo overdue color
|
|
KPIM::KPrefsWidColor *todoOverdueColor =
|
|
addWidColor(
|
|
KOPrefs::instance()->todoOverdueColorItem(), colorFrame );
|
|
colorLayout->addWidget( todoOverdueColor->label(), 8, 0 );
|
|
colorLayout->addWidget( todoOverdueColor->button(), 8, 1 );
|
|
|
|
// categories colors
|
|
QGroupBox *categoryGroup = new QGroupBox( i18nc( "@title:group", "Categories" ), colorFrame );
|
|
colorLayout->addWidget( categoryGroup, 9, 0, 1, 2 );
|
|
|
|
QGridLayout *categoryLayout = new QGridLayout;
|
|
categoryGroup->setLayout( categoryLayout );
|
|
|
|
KPIM::KPrefsWidColor *unsetCategoryColor =
|
|
addWidColor( CalendarSupport::KCalPrefs::instance()->unsetCategoryColorItem(), categoryGroup );
|
|
categoryLayout->addWidget( unsetCategoryColor->label(), 0, 0 );
|
|
categoryLayout->addWidget( unsetCategoryColor->button(), 0, 1 );
|
|
unsetCategoryColor->label()->setWhatsThis( unsetCategoryColor->button()->whatsThis() );
|
|
unsetCategoryColor->label()->setToolTip( unsetCategoryColor->button()->toolTip() );
|
|
|
|
mCategoryCombo = new KPIM::TagCombo( categoryGroup );
|
|
mCategoryCombo->setWhatsThis(
|
|
i18nc( "@info:whatsthis",
|
|
"Select here the event category you want to modify. "
|
|
"You can change the selected category color using "
|
|
"the button below." ) );
|
|
connect( mCategoryCombo, SIGNAL(activated(int)), SLOT(updateCategoryColor()) );
|
|
categoryLayout->addWidget( mCategoryCombo, 1, 0 );
|
|
|
|
mCategoryButton = new KColorButton( categoryGroup );
|
|
mCategoryButton->setWhatsThis(
|
|
i18nc( "@info:whatsthis",
|
|
"Choose here the color of the event category selected "
|
|
"using the combo box above." ) );
|
|
connect( mCategoryButton, SIGNAL(changed(QColor)), SLOT(setCategoryColor()) );
|
|
categoryLayout->addWidget( mCategoryButton, 1, 1 );
|
|
|
|
updateCategoryColor();
|
|
|
|
// resources colors
|
|
QGroupBox *resourceGroup = new QGroupBox( i18nc( "@title:group", "Resources" ), colorFrame );
|
|
colorLayout->addWidget( resourceGroup, 10, 0, 1, 2 );
|
|
|
|
QBoxLayout *resourceLayout = new QHBoxLayout;
|
|
resourceGroup->setLayout( resourceLayout );
|
|
|
|
mResourceCombo = new Akonadi::CollectionComboBox( resourceGroup );
|
|
//mResourceCombo->addExcludedSpecialResources(Akonadi::Collection::SearchResource);
|
|
QStringList mimetypes;
|
|
mimetypes << KCalCore::Todo::todoMimeType();
|
|
mimetypes << KCalCore::Journal::journalMimeType();
|
|
mimetypes << KCalCore::Event::eventMimeType();
|
|
|
|
mResourceCombo->setMimeTypeFilter( mimetypes );
|
|
mResourceCombo->setWhatsThis(
|
|
i18nc( "@info:whatsthis",
|
|
"Select the calendar you want to modify. "
|
|
"You can change the selected calendar color using "
|
|
"the button below." ) );
|
|
connect( mResourceCombo, SIGNAL(activated(int)), SLOT(updateResourceColor()) );
|
|
resourceLayout->addWidget( mResourceCombo );
|
|
|
|
mResourceButton = new KColorButton( resourceGroup );
|
|
mResourceButton->setWhatsThis(
|
|
i18nc( "@info:whatsthis",
|
|
"Choose here the color of the calendar selected "
|
|
"using the combo box above." ) );
|
|
connect( mResourceButton, SIGNAL(changed(QColor)), SLOT(setResourceColor()) );
|
|
resourceLayout->addWidget( mResourceButton );
|
|
|
|
colorLayout->setRowStretch( 11, 1 );
|
|
|
|
QWidget *fontFrame = new QWidget( this );
|
|
tabWidget->addTab( fontFrame, KIcon( QLatin1String("preferences-desktop-font") ),
|
|
i18nc( "@title:tab", "Fonts" ) );
|
|
|
|
QGridLayout *fontLayout = new QGridLayout( fontFrame );
|
|
fontLayout->setSpacing( KDialog::spacingHint() );
|
|
|
|
KPIM::KPrefsWidFont *timeBarFont =
|
|
addWidFont( KOPrefs::instance()->agendaTimeLabelsFontItem(), fontFrame,
|
|
KGlobal::locale()->formatTime( QTime( 12, 34 ) ) );
|
|
fontLayout->addWidget( timeBarFont->label(), 0, 0 );
|
|
fontLayout->addWidget( timeBarFont->preview(), 0, 1 );
|
|
fontLayout->addWidget( timeBarFont->button(), 0, 2 );
|
|
|
|
KPIM::KPrefsWidFont *monthViewFont =
|
|
addWidFont( KOPrefs::instance()->monthViewFontItem(), fontFrame,
|
|
KGlobal::locale()->formatTime( QTime( 12, 34 ) ) + QLatin1Char(' ') +
|
|
i18nc( "@label", "Event text" ) );
|
|
|
|
fontLayout->addWidget( monthViewFont->label(), 1, 0 );
|
|
fontLayout->addWidget( monthViewFont->preview(), 1, 1 );
|
|
fontLayout->addWidget( monthViewFont->button(), 1, 2 );
|
|
|
|
KPIM::KPrefsWidFont *agendaViewFont =
|
|
addWidFont( KOPrefs::instance()->agendaViewFontItem(), fontFrame,
|
|
i18nc( "@label", "Event text" ) );
|
|
fontLayout->addWidget( agendaViewFont->label(), 2, 0 );
|
|
fontLayout->addWidget( agendaViewFont->preview(), 2, 1 );
|
|
fontLayout->addWidget( agendaViewFont->button(), 2, 2 );
|
|
|
|
KPIM::KPrefsWidFont *marcusBainsFont =
|
|
addWidFont( KOPrefs::instance()->agendaMarcusBainsLineFontItem(), fontFrame,
|
|
KGlobal::locale()->formatTime( QTime( 12, 34, 23 ) ) );
|
|
fontLayout->addWidget( marcusBainsFont->label(), 3, 0 );
|
|
fontLayout->addWidget( marcusBainsFont->preview(), 3, 1 );
|
|
fontLayout->addWidget( marcusBainsFont->button(), 3, 2 );
|
|
|
|
fontLayout->setColumnStretch( 1, 1 );
|
|
fontLayout->setRowStretch( 4, 1 );
|
|
|
|
load();
|
|
}
|
|
|
|
void KOPrefsDialogColorsAndFonts::usrWriteConfig()
|
|
{
|
|
QHash<QString, QColor>::const_iterator i = mCategoryDict.constBegin();
|
|
while ( i != mCategoryDict.constEnd() ) {
|
|
CalendarSupport::KCalPrefs::instance()->setCategoryColor( i.key(), i.value() );
|
|
++i;
|
|
}
|
|
|
|
i = mResourceDict.constBegin();
|
|
while ( i != mResourceDict.constEnd() ) {
|
|
KOPrefs::instance()->setResourceColor( i.key(), i.value() );
|
|
++i;
|
|
}
|
|
|
|
//mCalendarViewsPrefs->writeConfig();
|
|
}
|
|
|
|
void KOPrefsDialogColorsAndFonts::usrReadConfig()
|
|
{
|
|
updateCategories();
|
|
updateResources();
|
|
//mCalendarViewsPrefs->readConfig();
|
|
}
|
|
|
|
void KOPrefsDialogColorsAndFonts::updateCategories()
|
|
{
|
|
updateCategoryColor();
|
|
}
|
|
|
|
void KOPrefsDialogColorsAndFonts::setCategoryColor()
|
|
{
|
|
mCategoryDict.insert( mCategoryCombo->currentText(), mCategoryButton->color() );
|
|
slotWidChanged();
|
|
}
|
|
|
|
void KOPrefsDialogColorsAndFonts::updateCategoryColor()
|
|
{
|
|
const QString cat = mCategoryCombo->currentText();
|
|
QColor color = mCategoryDict.value( cat );
|
|
if ( !color.isValid() ) {
|
|
//TODO get this from the tag
|
|
color = CalendarSupport::KCalPrefs::instance()->categoryColor( cat );
|
|
}
|
|
if ( color.isValid() ) {
|
|
mCategoryButton->setColor( color );
|
|
}
|
|
}
|
|
|
|
void KOPrefsDialogColorsAndFonts::updateResources()
|
|
{
|
|
updateResourceColor();
|
|
}
|
|
|
|
void KOPrefsDialogColorsAndFonts::setResourceColor()
|
|
{
|
|
bool ok;
|
|
const QString id =
|
|
QString::number( mResourceCombo->itemData(
|
|
mResourceCombo->currentIndex(),
|
|
Akonadi::CollectionModel::CollectionIdRole ).toLongLong( &ok ) );
|
|
if( ! ok ) {
|
|
return;
|
|
}
|
|
mResourceDict.insert( id, mResourceButton->color() );
|
|
slotWidChanged();
|
|
}
|
|
|
|
void KOPrefsDialogColorsAndFonts::updateResourceColor()
|
|
{
|
|
bool ok;
|
|
const QString id =
|
|
QString::number( mResourceCombo->itemData(
|
|
mResourceCombo->currentIndex(),
|
|
Akonadi::CollectionModel::CollectionIdRole ).toLongLong( &ok ) );
|
|
if ( !ok ) {
|
|
return;
|
|
}
|
|
kDebug() << id << mResourceCombo->itemText( mResourceCombo->currentIndex() );
|
|
|
|
QColor color = mResourceDict.value( id );
|
|
if ( ! color.isValid() ) {
|
|
color = KOPrefs::instance()->resourceColor( id );
|
|
}
|
|
mResourceButton->setColor( color );
|
|
}
|
|
|
|
extern "C"
|
|
{
|
|
KDE_EXPORT KCModule *create_korganizerconfigcolorsandfonts( QWidget *parent, const char * )
|
|
{
|
|
return new KOPrefsDialogColorsAndFonts( KOGlobals::self()->componentData(), parent );
|
|
}
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
KOPrefsDialogGroupScheduling::KOPrefsDialogGroupScheduling( const KComponentData &inst,
|
|
QWidget *parent )
|
|
: KPIM::KPrefsModule( KOPrefs::instance(), inst, parent )
|
|
{
|
|
QBoxLayout *topTopLayout = new QVBoxLayout( this );
|
|
|
|
QWidget *topFrame = new QWidget( this );
|
|
topTopLayout->addWidget( topFrame );
|
|
|
|
QGridLayout *topLayout = new QGridLayout( topFrame );
|
|
topLayout->setSpacing( KDialog::spacingHint() );
|
|
|
|
KPIM::KPrefsWidBool *useGroupwareBool =
|
|
addWidBool( CalendarSupport::KCalPrefs::instance()->useGroupwareCommunicationItem(), topFrame );
|
|
topLayout->addWidget( useGroupwareBool->checkBox(), 0, 0, 1, 2 );
|
|
|
|
KPIM::KPrefsWidBool *bcc =
|
|
addWidBool( Akonadi::CalendarSettings::self()->bccItem(), topFrame );
|
|
topLayout->addWidget( bcc->checkBox(), 1, 0, 1, 2 );
|
|
|
|
QLabel *aTransportLabel = new QLabel(
|
|
i18nc( "@label", "Mail transport:" ), topFrame );
|
|
topLayout->addWidget( aTransportLabel, 2, 0, 1, 2 );
|
|
|
|
MailTransport::TransportManagementWidget *tmw =
|
|
new MailTransport::TransportManagementWidget( topFrame );
|
|
tmw->layout()->setContentsMargins( 0, 0, 0, 0 );
|
|
topLayout->addWidget( tmw, 3, 0, 1, 2 );
|
|
|
|
//topLayout->setRowStretch( 2, 1 );
|
|
|
|
|
|
load();
|
|
}
|
|
|
|
void KOPrefsDialogGroupScheduling::usrReadConfig()
|
|
{
|
|
}
|
|
|
|
void KOPrefsDialogGroupScheduling::usrWriteConfig()
|
|
{
|
|
}
|
|
|
|
extern "C"
|
|
{
|
|
KDE_EXPORT KCModule *create_korganizerconfiggroupscheduling( QWidget *parent, const char * )
|
|
{
|
|
return new KOPrefsDialogGroupScheduling( KOGlobals::self()->componentData(), parent );
|
|
}
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
KOPrefsDialogGroupwareScheduling::KOPrefsDialogGroupwareScheduling( const KComponentData &inst,
|
|
QWidget *parent )
|
|
: KPrefsModule( CalendarSupport::KCalPrefs::instance(), inst, parent )
|
|
{
|
|
mGroupwarePage = new Ui::KOGroupwarePrefsPage();
|
|
QWidget *widget = new QWidget( this );
|
|
widget->setObjectName( QLatin1String("KOGrouparePrefsPage") );
|
|
|
|
mGroupwarePage->setupUi( widget );
|
|
|
|
mGroupwarePage->groupwareTab->setTabIcon( 0, KIcon( QLatin1String("go-up") ) );
|
|
mGroupwarePage->groupwareTab->setTabIcon( 1, KIcon( QLatin1String("go-down") ) );
|
|
|
|
// signals and slots connections
|
|
|
|
connect( mGroupwarePage->publishDays, SIGNAL(valueChanged(int)),
|
|
SLOT(slotWidChanged()) );
|
|
connect( mGroupwarePage->publishUrl, SIGNAL(textChanged(QString)),
|
|
SLOT(slotWidChanged()) );
|
|
connect( mGroupwarePage->publishUser, SIGNAL(textChanged(QString)),
|
|
SLOT(slotWidChanged()) );
|
|
connect( mGroupwarePage->publishPassword, SIGNAL(textChanged(QString)),
|
|
SLOT(slotWidChanged()) );
|
|
connect( mGroupwarePage->publishSavePassword, SIGNAL(toggled(bool)),
|
|
SLOT(slotWidChanged()) );
|
|
connect( mGroupwarePage->retrieveEnable, SIGNAL(toggled(bool)),
|
|
SLOT(slotWidChanged()) );
|
|
connect( mGroupwarePage->retrieveUser, SIGNAL(textChanged(QString)),
|
|
SLOT(slotWidChanged()) );
|
|
connect( mGroupwarePage->retrievePassword, SIGNAL(textChanged(QString)),
|
|
SLOT(slotWidChanged()) );
|
|
connect( mGroupwarePage->retrieveSavePassword, SIGNAL(toggled(bool)),
|
|
SLOT(slotWidChanged()) );
|
|
connect( mGroupwarePage->retrieveUrl, SIGNAL(textChanged(QString)),
|
|
SLOT(slotWidChanged()));
|
|
connect( mGroupwarePage->publishDelay, SIGNAL(valueChanged(int)),
|
|
SLOT(slotWidChanged()) );
|
|
connect( mGroupwarePage->fullDomainRetrieval, SIGNAL(toggled(bool)),
|
|
SLOT(slotWidChanged()) );
|
|
connect( mGroupwarePage->publishEnable, SIGNAL(toggled(bool)),
|
|
SLOT(slotWidChanged()) );
|
|
|
|
( new QVBoxLayout( this ) )->addWidget( widget );
|
|
|
|
load();
|
|
}
|
|
|
|
KOPrefsDialogGroupwareScheduling::~KOPrefsDialogGroupwareScheduling()
|
|
{
|
|
delete mGroupwarePage;
|
|
}
|
|
|
|
void KOPrefsDialogGroupwareScheduling::usrReadConfig()
|
|
{
|
|
mGroupwarePage->publishEnable->setChecked(
|
|
Akonadi::CalendarSettings::self()->freeBusyPublishAuto() );
|
|
mGroupwarePage->publishDelay->setValue(
|
|
Akonadi::CalendarSettings::self()->freeBusyPublishDelay() );
|
|
mGroupwarePage->publishDays->setValue(
|
|
Akonadi::CalendarSettings::self()->freeBusyPublishDays() );
|
|
mGroupwarePage->publishUrl->setText(
|
|
Akonadi::CalendarSettings::self()->freeBusyPublishUrl() );
|
|
mGroupwarePage->publishUser->setText(
|
|
Akonadi::CalendarSettings::self()->freeBusyPublishUser() );
|
|
mGroupwarePage->publishPassword->setText(
|
|
Akonadi::CalendarSettings::self()->freeBusyPublishPassword() );
|
|
mGroupwarePage->publishSavePassword->setChecked(
|
|
Akonadi::CalendarSettings::self()->freeBusyPublishSavePassword() );
|
|
|
|
mGroupwarePage->retrieveEnable->setChecked(
|
|
Akonadi::CalendarSettings::self()->freeBusyRetrieveAuto() );
|
|
mGroupwarePage->fullDomainRetrieval->setChecked(
|
|
Akonadi::CalendarSettings::self()->freeBusyFullDomainRetrieval() );
|
|
mGroupwarePage->retrieveUrl->setText(
|
|
Akonadi::CalendarSettings::self()->freeBusyRetrieveUrl() );
|
|
mGroupwarePage->retrieveUser->setText(
|
|
Akonadi::CalendarSettings::self()->freeBusyRetrieveUser() );
|
|
mGroupwarePage->retrievePassword->setText(
|
|
Akonadi::CalendarSettings::self()->freeBusyRetrievePassword() );
|
|
mGroupwarePage->retrieveSavePassword->setChecked(
|
|
Akonadi::CalendarSettings::self()->freeBusyRetrieveSavePassword() );
|
|
}
|
|
|
|
void KOPrefsDialogGroupwareScheduling::usrWriteConfig()
|
|
{
|
|
Akonadi::CalendarSettings::self()->setFreeBusyPublishAuto(
|
|
mGroupwarePage->publishEnable->isChecked());
|
|
Akonadi::CalendarSettings::self()->setFreeBusyPublishDelay(mGroupwarePage->publishDelay->value());
|
|
Akonadi::CalendarSettings::self()->setFreeBusyPublishDays(
|
|
mGroupwarePage->publishDays->value());
|
|
Akonadi::CalendarSettings::self()->setFreeBusyPublishUrl(
|
|
mGroupwarePage->publishUrl->text());
|
|
Akonadi::CalendarSettings::self()->setFreeBusyPublishUser(
|
|
mGroupwarePage->publishUser->text());
|
|
Akonadi::CalendarSettings::self()->setFreeBusyPublishPassword(
|
|
mGroupwarePage->publishPassword->text());
|
|
Akonadi::CalendarSettings::self()->setFreeBusyPublishSavePassword(
|
|
mGroupwarePage->publishSavePassword->isChecked());
|
|
|
|
Akonadi::CalendarSettings::self()->setFreeBusyRetrieveAuto(
|
|
mGroupwarePage->retrieveEnable->isChecked());
|
|
Akonadi::CalendarSettings::self()->setFreeBusyFullDomainRetrieval(
|
|
mGroupwarePage->fullDomainRetrieval->isChecked());
|
|
Akonadi::CalendarSettings::self()->setFreeBusyRetrieveUrl(
|
|
mGroupwarePage->retrieveUrl->text());
|
|
Akonadi::CalendarSettings::self()->setFreeBusyRetrieveUser(
|
|
mGroupwarePage->retrieveUser->text());
|
|
Akonadi::CalendarSettings::self()->setFreeBusyRetrievePassword(
|
|
mGroupwarePage->retrievePassword->text());
|
|
Akonadi::CalendarSettings::self()->setFreeBusyRetrieveSavePassword(
|
|
mGroupwarePage->retrieveSavePassword->isChecked());
|
|
|
|
// clear the url cache for our user
|
|
const QString configFile = KStandardDirs::locateLocal( "data", QLatin1String("korganizer/freebusyurls") );
|
|
KConfig cfg( configFile );
|
|
cfg.deleteGroup( CalendarSupport::KCalPrefs::instance()->email() );
|
|
|
|
|
|
Akonadi::CalendarSettings::self()->writeConfig();
|
|
}
|
|
|
|
extern "C"
|
|
{
|
|
KDE_EXPORT KCModule *create_korganizerconfigfreebusy( QWidget *parent, const char * )
|
|
{
|
|
return new KOPrefsDialogGroupwareScheduling( KOGlobals::self()->componentData(), parent );
|
|
}
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
class PluginItem : public QTreeWidgetItem
|
|
{
|
|
public:
|
|
PluginItem( QTreeWidget *parent, KService::Ptr service )
|
|
: QTreeWidgetItem( parent, QStringList( service->name() ) ),
|
|
mService( service ) {}
|
|
PluginItem( QTreeWidgetItem *parent, KService::Ptr service )
|
|
: QTreeWidgetItem( parent, QStringList( service->name() ) ),
|
|
mService( service ) {}
|
|
|
|
KService::Ptr service()
|
|
{ return mService; }
|
|
|
|
private:
|
|
KService::Ptr mService;
|
|
};
|
|
|
|
/**
|
|
Dialog for selecting and configuring KOrganizer plugins
|
|
*/
|
|
KOPrefsDialogPlugins::KOPrefsDialogPlugins( const KComponentData &inst, QWidget *parent )
|
|
: KPrefsModule( KOPrefs::instance(), inst, parent )
|
|
{
|
|
QBoxLayout *topTopLayout = new QVBoxLayout( this );
|
|
|
|
QWidget *topFrame = new QWidget( this );
|
|
topTopLayout->addWidget( topFrame );
|
|
QBoxLayout *topLayout = new QVBoxLayout( topFrame );
|
|
topLayout->setSpacing( KDialog::spacingHint() );
|
|
|
|
mTreeWidget = new QTreeWidget( topFrame );
|
|
mTreeWidget->setColumnCount( 1 );
|
|
mTreeWidget->setHeaderLabel( i18nc( "@title:column plugin name", "Name" ) );
|
|
topLayout->addWidget( mTreeWidget );
|
|
|
|
mDescription = new QLabel( topFrame );
|
|
mDescription->setAlignment( Qt::AlignVCenter );
|
|
mDescription->setWordWrap( true );
|
|
mDescription->setFrameShape( QLabel::Panel );
|
|
mDescription->setFrameShadow( QLabel::Sunken );
|
|
mDescription->setMinimumSize( QSize( 0, 55 ) );
|
|
QSizePolicy policy( QSizePolicy::MinimumExpanding, QSizePolicy::Fixed );
|
|
policy.setHorizontalStretch( 0 );
|
|
policy.setVerticalStretch( 0 );
|
|
policy.setHeightForWidth( mDescription->sizePolicy().hasHeightForWidth() );
|
|
mDescription->setSizePolicy( policy );
|
|
topLayout->addWidget( mDescription );
|
|
|
|
QWidget *buttonRow = new QWidget( topFrame );
|
|
QBoxLayout *buttonRowLayout = new QHBoxLayout( buttonRow );
|
|
mConfigureButton = new KPushButton(
|
|
KGuiItem( i18nc( "@action:button", "Configure &Plugin..." ),
|
|
QLatin1String("configure"), QString(),
|
|
i18nc( "@info:whatsthis",
|
|
"This button allows you to configure"
|
|
" the plugin that you have selected in the list above" ) ),
|
|
buttonRow );
|
|
buttonRowLayout->addWidget( mConfigureButton );
|
|
buttonRowLayout->addItem( new QSpacerItem( 1, 1, QSizePolicy::Expanding ) );
|
|
topLayout->addWidget( buttonRow );
|
|
|
|
mPositioningGroupBox = new QGroupBox( i18nc( "@title:group", "Position" ), topFrame );
|
|
//mPositionMonthTop = new QCheckBox(
|
|
//i18nc( "@option:check", "Show in the month view" ), mPositioningGroupBox );
|
|
mPositionAgendaTop = new QRadioButton(
|
|
i18nc( "@option:check", "Show at the top of the agenda views" ), mPositioningGroupBox );
|
|
mPositionAgendaBottom = new QRadioButton(
|
|
i18nc( "@option:check", "Show at the bottom of the agenda views" ), mPositioningGroupBox );
|
|
QVBoxLayout *positioningLayout = new QVBoxLayout( mPositioningGroupBox );
|
|
//positioningLayout->addWidget( mPositionMonthTop );
|
|
positioningLayout->addWidget( mPositionAgendaTop );
|
|
positioningLayout->addWidget( mPositionAgendaBottom );
|
|
positioningLayout->addStretch( 1 );
|
|
topLayout->addWidget( mPositioningGroupBox );
|
|
|
|
connect( mConfigureButton, SIGNAL(clicked()), SLOT(configure()) );
|
|
|
|
//connect( mPositionMonthTop, SIGNAL(clicked()), SLOT(positioningChanged()) );
|
|
connect( mPositionAgendaTop, SIGNAL(clicked()), SLOT(positioningChanged()) );
|
|
connect( mPositionAgendaBottom, SIGNAL(clicked()), SLOT(positioningChanged()) );
|
|
|
|
connect( mTreeWidget, SIGNAL(itemSelectionChanged()), SLOT(selectionChanged()) );
|
|
connect( mTreeWidget, SIGNAL(itemChanged(QTreeWidgetItem*,int)), SLOT(selectionChanged()) );
|
|
connect( mTreeWidget, SIGNAL(itemClicked(QTreeWidgetItem*,int)), SLOT(slotWidChanged()) );
|
|
|
|
load();
|
|
|
|
selectionChanged();
|
|
}
|
|
|
|
void KOPrefsDialogPlugins::usrReadConfig()
|
|
{
|
|
mTreeWidget->clear();
|
|
KService::List plugins = KOCore::self()->availablePlugins();
|
|
plugins += KOCore::self()->availableParts();
|
|
|
|
EventViews::PrefsPtr viewPrefs = KOPrefs::instance()->eventViewsPreferences();
|
|
|
|
QStringList selectedPlugins = viewPrefs->selectedPlugins();
|
|
|
|
QTreeWidgetItem *decorations =
|
|
new QTreeWidgetItem( mTreeWidget, QStringList(
|
|
i18nc( "@title:group", "Calendar Decorations" ) ) );
|
|
QTreeWidgetItem *others =
|
|
new QTreeWidgetItem( mTreeWidget, QStringList(
|
|
i18nc( "@title:group", "Other Plugins" ) ) );
|
|
|
|
KService::List::ConstIterator it;
|
|
for ( it = plugins.constBegin(); it != plugins.constEnd(); ++it ) {
|
|
QTreeWidgetItem *item = 0;
|
|
if ( (*it)->hasServiceType( EventViews::CalendarDecoration::Decoration::serviceType() ) ) {
|
|
item = new PluginItem( decorations, *it );
|
|
} else if ( !(*it)->hasServiceType( QLatin1String( "KOrganizer/PrintPlugin" ) ) ) {
|
|
// we specifically skip print plugins since we no longer support them
|
|
item = new PluginItem( others, *it );
|
|
} else {
|
|
continue;
|
|
}
|
|
if ( selectedPlugins.contains( (*it)->desktopEntryName() ) ) {
|
|
item->setCheckState( 0, Qt::Checked );
|
|
} else {
|
|
item->setCheckState( 0, Qt::Unchecked );
|
|
}
|
|
}
|
|
|
|
decorations->setExpanded( true );
|
|
others->setExpanded( true );
|
|
|
|
mDecorationsAtMonthViewTop = KOPrefs::instance()->decorationsAtMonthViewTop().toSet();
|
|
mDecorationsAtAgendaViewTop = viewPrefs->decorationsAtAgendaViewTop().toSet();
|
|
mDecorationsAtAgendaViewBottom = viewPrefs->decorationsAtAgendaViewBottom().toSet();
|
|
}
|
|
|
|
void KOPrefsDialogPlugins::usrWriteConfig()
|
|
{
|
|
QStringList selectedPlugins;
|
|
|
|
for ( int i = 0; i < mTreeWidget->topLevelItemCount(); ++i) {
|
|
QTreeWidgetItem *serviceTypeGroup = mTreeWidget->topLevelItem( i );
|
|
for ( int j = 0; j < serviceTypeGroup->childCount(); j++) {
|
|
PluginItem *item = static_cast<PluginItem *>( serviceTypeGroup->child( j ) );
|
|
if( item->checkState( 0 ) == Qt::Checked ) {
|
|
selectedPlugins.append( item->service()->desktopEntryName() );
|
|
}
|
|
}
|
|
}
|
|
EventViews::PrefsPtr viewPrefs = KOPrefs::instance()->eventViewsPreferences();
|
|
viewPrefs->setSelectedPlugins( selectedPlugins );
|
|
|
|
KOPrefs::instance()->setDecorationsAtMonthViewTop( mDecorationsAtMonthViewTop.toList() );
|
|
viewPrefs->setDecorationsAtAgendaViewTop( mDecorationsAtAgendaViewTop.toList() );
|
|
viewPrefs->setDecorationsAtAgendaViewBottom( mDecorationsAtAgendaViewBottom.toList() );
|
|
}
|
|
|
|
void KOPrefsDialogPlugins::configure()
|
|
{
|
|
if ( mTreeWidget->selectedItems().count() != 1 ) {
|
|
return;
|
|
}
|
|
|
|
PluginItem *item = static_cast<PluginItem *>( mTreeWidget->selectedItems().last() );
|
|
if ( !item ) {
|
|
return;
|
|
}
|
|
|
|
CalendarSupport::Plugin *plugin = KOCore::self()->loadPlugin( item->service() );
|
|
|
|
if ( plugin ) {
|
|
plugin->configure( this );
|
|
delete plugin;
|
|
|
|
slotWidChanged();
|
|
} else {
|
|
KMessageBox::sorry( this,
|
|
i18nc( "@info", "Unable to configure this plugin" ),
|
|
QLatin1String("PluginConfigUnable") );
|
|
}
|
|
}
|
|
|
|
void KOPrefsDialogPlugins::positioningChanged()
|
|
{
|
|
if ( mTreeWidget->selectedItems().count() != 1 ) {
|
|
return;
|
|
}
|
|
|
|
PluginItem *item = dynamic_cast<PluginItem*>( mTreeWidget->selectedItems().last() );
|
|
if ( !item ) {
|
|
return;
|
|
}
|
|
|
|
QString decoration = item->service()->desktopEntryName();
|
|
|
|
/*if ( mPositionMonthTop->checkState() == Qt::Checked ) {
|
|
if ( !mDecorationsAtMonthViewTop.contains( decoration ) ) {
|
|
mDecorationsAtMonthViewTop.insert( decoration );
|
|
}
|
|
} else {
|
|
mDecorationsAtMonthViewTop.remove( decoration );
|
|
}*/
|
|
|
|
if ( mPositionAgendaTop->isChecked() ) {
|
|
if ( !mDecorationsAtAgendaViewTop.contains( decoration ) ) {
|
|
mDecorationsAtAgendaViewTop.insert( decoration );
|
|
}
|
|
} else {
|
|
mDecorationsAtAgendaViewTop.remove( decoration );
|
|
}
|
|
|
|
if ( mPositionAgendaBottom->isChecked() ) {
|
|
if ( !mDecorationsAtAgendaViewBottom.contains( decoration ) ) {
|
|
mDecorationsAtAgendaViewBottom.insert( decoration );
|
|
}
|
|
} else {
|
|
mDecorationsAtAgendaViewBottom.remove( decoration );
|
|
}
|
|
|
|
slotWidChanged();
|
|
}
|
|
|
|
void KOPrefsDialogPlugins::selectionChanged()
|
|
{
|
|
mPositioningGroupBox->hide();
|
|
//mPositionMonthTop->setChecked( false );
|
|
mPositionAgendaTop->setChecked( false );
|
|
mPositionAgendaBottom->setChecked( false );
|
|
|
|
if ( mTreeWidget->selectedItems().count() != 1 ) {
|
|
mConfigureButton->setEnabled( false );
|
|
mDescription->setText( QString() );
|
|
return;
|
|
}
|
|
|
|
PluginItem *item = dynamic_cast<PluginItem*>( mTreeWidget->selectedItems().last() );
|
|
if ( !item ) {
|
|
mConfigureButton->setEnabled( false );
|
|
mDescription->setText( QString() );
|
|
return;
|
|
}
|
|
|
|
QVariant variant = item->service()->property( QLatin1String("X-KDE-KOrganizer-HasSettings") );
|
|
|
|
bool hasSettings = true;
|
|
if ( variant.isValid() ) {
|
|
hasSettings = variant.toBool();
|
|
}
|
|
|
|
mDescription->setText( item->service()->comment() );
|
|
if ( !hasSettings ) {
|
|
mConfigureButton->hide();
|
|
} else {
|
|
mConfigureButton->show();
|
|
mConfigureButton->setEnabled( item->checkState(0) == Qt::Checked );
|
|
}
|
|
|
|
bool hasPosition = false;
|
|
if ( item->service()->hasServiceType(
|
|
EventViews::CalendarDecoration::Decoration::serviceType() ) ) {
|
|
QString decoration = item->service()->desktopEntryName();
|
|
/*if ( mDecorationsAtMonthViewTop.contains( decoration ) ) {
|
|
mPositionMonthTop->setChecked( true );
|
|
hasPosition = true;
|
|
}*/
|
|
if ( mDecorationsAtAgendaViewTop.contains( decoration ) ) {
|
|
mPositionAgendaTop->setChecked( true );
|
|
hasPosition = true;
|
|
}
|
|
if ( mDecorationsAtAgendaViewBottom.contains( decoration ) ) {
|
|
mPositionAgendaBottom->setChecked( true );
|
|
hasPosition = true;
|
|
}
|
|
|
|
if ( !hasPosition ) {
|
|
// no position has been selected, so default to Agenda Top
|
|
mDecorationsAtAgendaViewTop << decoration;
|
|
mPositionAgendaTop->setChecked( true );
|
|
}
|
|
|
|
mPositioningGroupBox->setEnabled( item->checkState(0) == Qt::Checked );
|
|
mPositioningGroupBox->show();
|
|
}
|
|
|
|
slotWidChanged();
|
|
}
|
|
|
|
extern "C"
|
|
{
|
|
KDE_EXPORT KCModule *create_korganizerconfigplugins( QWidget *parent, const char * )
|
|
{
|
|
return new KOPrefsDialogPlugins( KOGlobals::self()->componentData(), parent );
|
|
}
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////////////
|
|
|
|
extern "C"
|
|
{
|
|
KDE_EXPORT KCModule *create_korgdesignerfields( QWidget *parent, const char * ) {
|
|
return new KOPrefsDesignerFields( KOGlobals::self()->componentData(), parent );
|
|
}
|
|
}
|
|
|
|
KOPrefsDesignerFields::KOPrefsDesignerFields( const KComponentData &inst, QWidget *parent )
|
|
: KCMDesignerFields( inst, parent )
|
|
{
|
|
}
|
|
|
|
QString KOPrefsDesignerFields::localUiDir()
|
|
{
|
|
const QString dir = KStandardDirs::locateLocal( "data", QLatin1String("korganizer/designer/event/") );
|
|
return dir;
|
|
}
|
|
|
|
QString KOPrefsDesignerFields::uiPath()
|
|
{
|
|
return QLatin1String("korganizer/designer/event/");
|
|
}
|
|
|
|
void KOPrefsDesignerFields::writeActivePages( const QStringList &activePages )
|
|
{
|
|
CalendarSupport::KCalPrefs::instance()->setActiveDesignerFields( activePages );
|
|
CalendarSupport::KCalPrefs::instance()->writeConfig();
|
|
}
|
|
|
|
QStringList KOPrefsDesignerFields::readActivePages()
|
|
{
|
|
return CalendarSupport::KCalPrefs::instance()->activeDesignerFields();
|
|
}
|
|
|
|
QString KOPrefsDesignerFields::applicationName()
|
|
{
|
|
return QLatin1String("KORGANIZER");
|
|
}
|
|
|