File indexing completed on 2024-06-02 05:26:14
0001 /* 0002 This file is part of KOrganizer. 0003 0004 SPDX-FileCopyrightText: 2000-2003 Cornelius Schumacher <schumacher@kde.org> 0005 SPDX-FileCopyrightText: 2003-2004 Reinhold Kainhofer <reinhold@kainhofer.com> 0006 0007 SPDX-License-Identifier: GPL-2.0-or-later WITH Qt-Commercial-exception-1.0 0008 */ 0009 0010 #include "koprefsdialogviews.h" 0011 0012 #include "kocore.h" 0013 #include "koglobals.h" 0014 #include "koprefs.h" 0015 #include "widgets/kitemiconcheckcombo.h" 0016 #include <KLocalizedString> 0017 #include <KPluginFactory> 0018 #include <QCheckBox> 0019 #include <QFrame> 0020 #include <QGroupBox> 0021 #include <QLabel> 0022 #include <QSpinBox> 0023 #include <QTabWidget> 0024 #include <QVBoxLayout> 0025 0026 K_PLUGIN_CLASS_WITH_JSON(KOPrefsDialogViews, "korganizer_configviews.json") 0027 0028 KOPrefsDialogViews::KOPrefsDialogViews(QObject *parent, const KPluginMetaData &data) 0029 : Korganizer::KPrefsModule(KOPrefs::instance(), parent, data) 0030 , mMonthIconComboBox(new KItemIconCheckCombo(KItemIconCheckCombo::MonthType, widget())) 0031 , mAgendaIconComboBox(new KItemIconCheckCombo(KItemIconCheckCombo::AgendaType, widget())) 0032 { 0033 auto topTopLayout = new QVBoxLayout(widget()); 0034 topTopLayout->setContentsMargins({}); 0035 auto tabWidget = new QTabWidget(widget()); 0036 tabWidget->setDocumentMode(true); 0037 topTopLayout->addWidget(tabWidget); 0038 0039 connect(mMonthIconComboBox, &KPIM::KCheckComboBox::checkedItemsChanged, this, &Korganizer::KPrefsModule::slotWidChanged); 0040 connect(mAgendaIconComboBox, &KPIM::KCheckComboBox::checkedItemsChanged, this, &Korganizer::KPrefsModule::slotWidChanged); 0041 0042 // Tab: Views->General 0043 auto generalFrame = new QFrame(widget()); 0044 tabWidget->addTab(generalFrame, QIcon::fromTheme(QStringLiteral("view-choose")), i18nc("@title:tab general settings", "General")); 0045 0046 QBoxLayout *generalLayout = new QVBoxLayout(generalFrame); 0047 0048 // GroupBox: Views->General->Display Options 0049 auto gdisplayLayout = new QVBoxLayout; 0050 auto gdisplayBox = new QGroupBox(i18nc("@title:group", "Display Options")); 0051 0052 QBoxLayout *nextDaysLayout = new QHBoxLayout; 0053 gdisplayLayout->addLayout(nextDaysLayout); 0054 0055 Korganizer::KPrefsWidInt *nextDays = addWidInt(KOPrefs::instance()->nextXDaysItem()); 0056 nextDays->spinBox()->setSuffix(i18nc("@label suffix in the N days spin box", " days")); 0057 0058 nextDaysLayout->addWidget(nextDays->label()); 0059 nextDaysLayout->addWidget(nextDays->spinBox()); 0060 nextDaysLayout->addStretch(1); 0061 0062 gdisplayLayout->addWidget(addWidBool(KOPrefs::instance()->enableToolTipsItem())->checkBox()); 0063 gdisplayLayout->addWidget(addWidBool(KOPrefs::instance()->todosUseCategoryColorsItem())->checkBox()); 0064 gdisplayBox->setLayout(gdisplayLayout); 0065 generalLayout->addWidget(gdisplayBox); 0066 0067 // GroupBox: Views->General->Date Navigator 0068 auto datenavLayout = new QVBoxLayout; 0069 auto datenavBox = new QGroupBox(i18nc("@title:group", "Date Navigator")); 0070 datenavLayout->addWidget(addWidBool(KOPrefs::instance()->dailyRecurItem())->checkBox()); 0071 datenavLayout->addWidget(addWidBool(KOPrefs::instance()->weeklyRecurItem())->checkBox()); 0072 datenavLayout->addWidget(addWidBool(KOPrefs::instance()->highlightTodosItem())->checkBox()); 0073 datenavLayout->addWidget(addWidBool(KOPrefs::instance()->highlightJournalsItem())->checkBox()); 0074 datenavLayout->addWidget(addWidBool(KOPrefs::instance()->weekNumbersShowWorkItem())->checkBox()); 0075 datenavBox->setLayout(datenavLayout); 0076 generalLayout->addWidget(datenavBox); 0077 generalLayout->addStretch(1); 0078 0079 // Tab: Views->Agenda View 0080 auto agendaFrame = new QFrame(widget()); 0081 tabWidget->addTab(agendaFrame, QIcon::fromTheme(QStringLiteral("view-calendar-workweek")), i18nc("@title:tab", "Agenda View")); 0082 0083 QBoxLayout *agendaLayout = new QVBoxLayout(agendaFrame); 0084 0085 // GroupBox: Views->Agenda View->Display Options 0086 auto adisplayLayout = new QVBoxLayout; 0087 auto adisplayBox = new QGroupBox(i18nc("@title:group", "Display Options")); 0088 0089 auto hourSizeLayout = new QHBoxLayout; 0090 adisplayLayout->addLayout(hourSizeLayout); 0091 0092 Korganizer::KPrefsWidInt *hourSize = addWidInt(KOPrefs::instance()->hourSizeItem()); 0093 hourSize->spinBox()->setSuffix(i18nc("@label suffix in the hour size spin box", " pixels")); 0094 0095 hourSizeLayout->addWidget(hourSize->label()); 0096 hourSizeLayout->addWidget(hourSize->spinBox()); 0097 hourSizeLayout->addStretch(1); 0098 0099 adisplayLayout->addWidget(addWidBool(KOPrefs::instance()->enableAgendaItemIconsItem())->checkBox()); 0100 adisplayLayout->addWidget(addWidBool(KOPrefs::instance()->showTodosAgendaViewItem())->checkBox()); 0101 Korganizer::KPrefsWidBool *marcusBainsEnabled = addWidBool(KOPrefs::instance()->marcusBainsEnabledItem()); 0102 adisplayLayout->addWidget(marcusBainsEnabled->checkBox()); 0103 0104 Korganizer::KPrefsWidBool *marcusBainsShowSeconds = addWidBool(KOPrefs::instance()->marcusBainsShowSecondsItem()); 0105 connect(marcusBainsEnabled->checkBox(), &QAbstractButton::toggled, marcusBainsShowSeconds->checkBox(), &QWidget::setEnabled); 0106 0107 adisplayLayout->addWidget(marcusBainsShowSeconds->checkBox()); 0108 adisplayLayout->addWidget(addWidBool(KOPrefs::instance()->selectionStartsEditorItem())->checkBox()); 0109 adisplayLayout->addWidget(mAgendaIconComboBox); 0110 adisplayBox->setLayout(adisplayLayout); 0111 agendaLayout->addWidget(adisplayBox); 0112 0113 // GroupBox: Views->Agenda View->Color Usage 0114 agendaLayout->addWidget(addWidRadios(KOPrefs::instance()->agendaViewColorsItem())->groupBox()); 0115 0116 agendaLayout->addWidget(addWidBool(KOPrefs::instance()->colorBusyDaysEnabledItem())->checkBox()); 0117 0118 // GroupBox: Views->Agenda View->Multiple Calendars 0119 agendaLayout->addWidget(addWidRadios(KOPrefs::instance()->agendaViewCalendarDisplayItem())->groupBox()); 0120 0121 agendaLayout->addStretch(1); 0122 0123 // Tab: Views->Month View 0124 auto monthFrame = new QFrame(widget()); 0125 tabWidget->addTab(monthFrame, QIcon::fromTheme(QStringLiteral("view-calendar-month")), i18nc("@title:tab", "Month View")); 0126 0127 QBoxLayout *monthLayout = new QVBoxLayout(monthFrame); 0128 0129 // GroupBox: Views->Month View->Display Options 0130 auto mdisplayLayout = new QVBoxLayout; 0131 auto mdisplayBox = new QGroupBox(i18nc("@title:group", "Display Options")); 0132 /*mdisplayLayout->addWidget( 0133 addWidBool( KOPrefs::instance()->enableMonthScrollItem() )->checkBox() );*/ 0134 mdisplayLayout->addWidget(addWidBool(KOPrefs::instance()->showTimeInMonthViewItem())->checkBox()); 0135 mdisplayLayout->addWidget(addWidBool(KOPrefs::instance()->enableMonthItemIconsItem())->checkBox()); 0136 mdisplayLayout->addWidget(addWidBool(KOPrefs::instance()->showTodosMonthViewItem())->checkBox()); 0137 mdisplayLayout->addWidget(addWidBool(KOPrefs::instance()->showJournalsMonthViewItem())->checkBox()); 0138 mdisplayBox->setLayout(mdisplayLayout); 0139 0140 mdisplayLayout->addWidget(mMonthIconComboBox); 0141 0142 monthLayout->addWidget(mdisplayBox); 0143 0144 monthLayout->addWidget(addWidBool(KOPrefs::instance()->colorMonthBusyDaysEnabledItem())->checkBox()); 0145 0146 // GroupBox: Views->Month View->Color Usage 0147 monthLayout->addWidget(addWidRadios(KOPrefs::instance()->monthViewColorsItem())->groupBox()); 0148 monthLayout->addStretch(1); 0149 0150 // Tab: Views->Todo View 0151 auto todoFrame = new QFrame(widget()); 0152 tabWidget->addTab(todoFrame, QIcon::fromTheme(QStringLiteral("view-calendar-tasks")), i18nc("@title:tab", "Todo View")); 0153 0154 QBoxLayout *todoLayout = new QVBoxLayout(todoFrame); 0155 0156 // GroupBox: Views->Todo View->Display Options 0157 auto tdisplayLayout = new QVBoxLayout; 0158 auto tdisplayBox = new QGroupBox(i18nc("@title:group", "Display Options")); 0159 tdisplayLayout->addWidget(addWidBool(KOPrefs::instance()->sortCompletedTodosSeparatelyItem())->checkBox()); 0160 tdisplayBox->setLayout(tdisplayLayout); 0161 todoLayout->addWidget(tdisplayBox); 0162 0163 // GroupBox: Views->Todo View->Other 0164 auto otherLayout = new QVBoxLayout; 0165 auto otherBox = new QGroupBox(i18nc("@title:group", "Other Options")); 0166 otherLayout->addWidget(addWidBool(KOPrefs::instance()->recordTodosInJournalsItem())->checkBox()); 0167 otherBox->setLayout(otherLayout); 0168 todoLayout->addWidget(otherBox); 0169 todoLayout->addStretch(1); 0170 0171 load(); 0172 } 0173 0174 void KOPrefsDialogViews::usrReadConfig() 0175 { 0176 mAgendaIconComboBox->setCheckedIcons(KOPrefs::instance()->eventViewsPreferences()->agendaViewIcons()); 0177 mMonthIconComboBox->setCheckedIcons(KOPrefs::instance()->eventViewsPreferences()->monthViewIcons()); 0178 } 0179 0180 void KOPrefsDialogViews::usrWriteConfig() 0181 { 0182 KOPrefs::instance()->eventViewsPreferences()->setAgendaViewIcons(mAgendaIconComboBox->checkedIcons()); 0183 KOPrefs::instance()->eventViewsPreferences()->setMonthViewIcons(mMonthIconComboBox->checkedIcons()); 0184 } 0185 0186 #include "koprefsdialogviews.moc"