File indexing completed on 2024-05-05 05:51:25
0001 /* This file is part of the KDE project 0002 SPDX-FileCopyrightText: 2001 Christoph Cullmann <cullmann@kde.org> 0003 SPDX-FileCopyrightText: 2001 Joseph Wenninger <jowenn@kde.org> 0004 SPDX-FileCopyrightText: 2001, 2007 Anders Lund <anders@alweb.dk> 0005 SPDX-FileCopyrightText: 2009 Abhishek Patil <abhishekworld@gmail.com> 0006 SPDX-FileCopyrightText: 2010 Thomas Fjellstrom <thomas@fjellstrom.ca> 0007 0008 SPDX-License-Identifier: LGPL-2.0-or-later 0009 */ 0010 0011 /* 0012 Config stuff plan: 0013 ----------------- 0014 0015 main default config is stored in KSharedConfig::openConfig()+":filetree" 0016 when main config is set, it needs to tell view's to delete 0017 existing customized settings, and use the global ones (somehow) 0018 (maybe some kind of "customized" flag?) 0019 0020 view needs to pull default settings from the main plugin config 0021 0022 */ 0023 0024 #include "katefiletreeconfigpage.h" 0025 #include "katefiletreemodel.h" 0026 #include "katefiletreeplugin.h" 0027 #include "katefiletreeproxymodel.h" 0028 0029 #include <KColorButton> 0030 #include <KLocalizedString> 0031 #include <QCheckBox> 0032 #include <QComboBox> 0033 #include <QGroupBox> 0034 #include <QLabel> 0035 #include <QVBoxLayout> 0036 0037 KateFileTreeConfigPage::KateFileTreeConfigPage(QWidget *parent, KateFileTreePlugin *fl) 0038 : KTextEditor::ConfigPage(parent) 0039 , m_plug(fl) 0040 { 0041 QVBoxLayout *layout = new QVBoxLayout(this); 0042 0043 gbEnableShading = new QGroupBox(i18n("Background Shading"), this); 0044 gbEnableShading->setCheckable(true); 0045 layout->addWidget(gbEnableShading); 0046 0047 QGridLayout *lo = new QGridLayout(gbEnableShading); 0048 0049 kcbViewShade = new KColorButton(gbEnableShading); 0050 lViewShade = new QLabel(i18n("&Viewed documents' shade:"), gbEnableShading); 0051 lViewShade->setBuddy(kcbViewShade); 0052 lo->addWidget(lViewShade, 2, 0); 0053 lo->addWidget(kcbViewShade, 2, 1); 0054 0055 kcbEditShade = new KColorButton(gbEnableShading); 0056 lEditShade = new QLabel(i18n("&Modified documents' shade:"), gbEnableShading); 0057 lEditShade->setBuddy(kcbEditShade); 0058 lo->addWidget(lEditShade, 3, 0); 0059 lo->addWidget(kcbEditShade, 3, 1); 0060 0061 // sorting 0062 QHBoxLayout *lo2 = new QHBoxLayout; 0063 layout->addLayout(lo2); 0064 lSort = new QLabel(i18n("&Sort by:"), this); 0065 lo2->addWidget(lSort); 0066 cmbSort = new QComboBox(this); 0067 lo2->addWidget(cmbSort); 0068 lSort->setBuddy(cmbSort); 0069 cmbSort->addItem(i18n("Opening Order"), static_cast<int>(KateFileTreeModel::OpeningOrderRole)); 0070 cmbSort->addItem(i18n("Document Name"), static_cast<int>(Qt::DisplayRole)); 0071 cmbSort->addItem(i18n("Url"), static_cast<int>(KateFileTreeModel::PathRole)); 0072 cmbSort->addItem(i18n("Custom Sorting"), static_cast<int>(CustomSorting)); 0073 0074 // view mode 0075 QHBoxLayout *lo3 = new QHBoxLayout; 0076 layout->addLayout(lo3); 0077 lMode = new QLabel(i18n("&View Mode:"), this); 0078 lo3->addWidget(lMode); 0079 cmbMode = new QComboBox(this); 0080 lo3->addWidget(cmbMode); 0081 lMode->setBuddy(cmbMode); 0082 cmbMode->addItem(i18n("Tree View"), QVariant(false)); 0083 cmbMode->addItem(i18n("List View"), QVariant(true)); 0084 0085 // Show Full Path on Roots? 0086 QHBoxLayout *lo4 = new QHBoxLayout; 0087 layout->addLayout(lo4); 0088 cbShowFullPath = new QCheckBox(i18n("&Show Full Path"), this); 0089 lo4->addWidget(cbShowFullPath); 0090 0091 QHBoxLayout *lo5 = new QHBoxLayout; 0092 layout->addLayout(lo5); 0093 cbShowToolbar = new QCheckBox(i18n("Show &Toolbar"), this); 0094 lo5->addWidget(cbShowToolbar); 0095 0096 cbShowClose = new QCheckBox(i18n("Show Close Button On Hovering"), this); 0097 layout->addWidget(cbShowClose); 0098 0099 cbMiddleClick = new QCheckBox(i18n("Middle Click To Close Documents"), this); 0100 layout->addWidget(cbMiddleClick); 0101 0102 layout->insertStretch(-1, 10); 0103 0104 gbEnableShading->setWhatsThis( 0105 i18n("When background shading is enabled, documents that have been viewed " 0106 "or edited within the current session will have a shaded background. " 0107 "The most recent documents have the strongest shade.")); 0108 kcbViewShade->setWhatsThis(i18n("Set the color for shading viewed documents.")); 0109 kcbEditShade->setWhatsThis( 0110 i18n("Set the color for modified documents. This color is blended into " 0111 "the color for viewed files. The most recently edited documents get " 0112 "most of this color.")); 0113 0114 cbShowFullPath->setWhatsThis( 0115 i18n("When enabled, in tree mode, top level folders will show up with their full path " 0116 "rather than just the last folder name.")); 0117 0118 cbShowToolbar->setWhatsThis(i18n("When enabled, a toolbar with actions like “Save” are displayed above the list of documents.")); 0119 0120 // cmbSort->setWhatsThis( i18n( 0121 // "Set the sorting method for the documents.") ); 0122 0123 reset(); 0124 0125 connect(gbEnableShading, &QGroupBox::toggled, this, &KateFileTreeConfigPage::slotMyChanged); 0126 connect(kcbViewShade, &KColorButton::changed, this, &KateFileTreeConfigPage::slotMyChanged); 0127 connect(kcbEditShade, &KColorButton::changed, this, &KateFileTreeConfigPage::slotMyChanged); 0128 connect(cmbSort, QOverload<int>::of(&QComboBox::activated), this, &KateFileTreeConfigPage::slotMyChanged); 0129 connect(cmbMode, QOverload<int>::of(&QComboBox::activated), this, &KateFileTreeConfigPage::slotMyChanged); 0130 connect(cbShowFullPath, &QCheckBox::stateChanged, this, &KateFileTreeConfigPage::slotMyChanged); 0131 connect(cbShowToolbar, &QCheckBox::stateChanged, this, &KateFileTreeConfigPage::slotMyChanged); 0132 connect(cbShowClose, &QCheckBox::stateChanged, this, &KateFileTreeConfigPage::slotMyChanged); 0133 connect(cbMiddleClick, &QCheckBox::stateChanged, this, &KateFileTreeConfigPage::slotMyChanged); 0134 } 0135 0136 QString KateFileTreeConfigPage::name() const 0137 { 0138 return QString(i18n("Documents")); 0139 } 0140 0141 QString KateFileTreeConfigPage::fullName() const 0142 { 0143 return QString(i18n("Configure Documents")); 0144 } 0145 0146 QIcon KateFileTreeConfigPage::icon() const 0147 { 0148 return QIcon::fromTheme(QLatin1String("folder-documents-symbolic")); 0149 } 0150 0151 void KateFileTreeConfigPage::apply() 0152 { 0153 if (!m_changed) { 0154 return; 0155 } 0156 0157 m_changed = false; 0158 0159 // apply config to views 0160 m_plug->applyConfig(gbEnableShading->isChecked(), 0161 kcbViewShade->color(), 0162 kcbEditShade->color(), 0163 cmbMode->itemData(cmbMode->currentIndex()).toBool(), 0164 cmbSort->itemData(cmbSort->currentIndex()).toInt(), 0165 cbShowFullPath->checkState() == Qt::Checked, 0166 cbShowToolbar->checkState() == Qt::Checked, 0167 cbShowClose->isChecked(), 0168 cbMiddleClick->isChecked()); 0169 } 0170 0171 void KateFileTreeConfigPage::reset() 0172 { 0173 const KateFileTreePluginSettings &settings = m_plug->settings(); 0174 0175 gbEnableShading->setChecked(settings.shadingEnabled()); 0176 kcbEditShade->setColor(settings.editShade()); 0177 kcbViewShade->setColor(settings.viewShade()); 0178 cmbSort->setCurrentIndex(cmbSort->findData(settings.sortRole())); 0179 cmbMode->setCurrentIndex(settings.listMode()); 0180 cbShowFullPath->setCheckState(settings.showFullPathOnRoots() ? Qt::Checked : Qt::Unchecked); 0181 cbShowToolbar->setCheckState(settings.showToolbar() ? Qt::Checked : Qt::Unchecked); 0182 cbShowClose->setChecked(settings.showCloseButton()); 0183 cbMiddleClick->setChecked(settings.middleClickToClose); 0184 0185 m_changed = false; 0186 } 0187 0188 void KateFileTreeConfigPage::defaults() 0189 { 0190 // m_plug->settings().revertToDefaults() ?? 0191 // not sure the above is ever needed... 0192 reset(); 0193 } 0194 0195 void KateFileTreeConfigPage::slotMyChanged() 0196 { 0197 m_changed = true; 0198 Q_EMIT changed(); 0199 } 0200 0201 #include "moc_katefiletreeconfigpage.cpp"