File indexing completed on 2024-05-12 09:54:31
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 "katefiletreedebug.h" 0026 #include "katefiletreemodel.h" 0027 #include "katefiletreeplugin.h" 0028 #include "katefiletreeproxymodel.h" 0029 0030 #include <KColorButton> 0031 #include <KLocalizedString> 0032 #include <QCheckBox> 0033 #include <QComboBox> 0034 #include <QGroupBox> 0035 #include <QLabel> 0036 #include <QVBoxLayout> 0037 0038 KateFileTreeConfigPage::KateFileTreeConfigPage(QWidget *parent, KateFileTreePlugin *fl) 0039 : KTextEditor::ConfigPage(parent) 0040 , m_plug(fl) 0041 { 0042 QVBoxLayout *layout = new QVBoxLayout(this); 0043 0044 gbEnableShading = new QGroupBox(i18n("Background Shading"), this); 0045 gbEnableShading->setCheckable(true); 0046 layout->addWidget(gbEnableShading); 0047 0048 QGridLayout *lo = new QGridLayout(gbEnableShading); 0049 0050 kcbViewShade = new KColorButton(gbEnableShading); 0051 lViewShade = new QLabel(i18n("&Viewed documents' shade:"), gbEnableShading); 0052 lViewShade->setBuddy(kcbViewShade); 0053 lo->addWidget(lViewShade, 2, 0); 0054 lo->addWidget(kcbViewShade, 2, 1); 0055 0056 kcbEditShade = new KColorButton(gbEnableShading); 0057 lEditShade = new QLabel(i18n("&Modified documents' shade:"), gbEnableShading); 0058 lEditShade->setBuddy(kcbEditShade); 0059 lo->addWidget(lEditShade, 3, 0); 0060 lo->addWidget(kcbEditShade, 3, 1); 0061 0062 // sorting 0063 QHBoxLayout *lo2 = new QHBoxLayout; 0064 layout->addLayout(lo2); 0065 lSort = new QLabel(i18n("&Sort by:"), this); 0066 lo2->addWidget(lSort); 0067 cmbSort = new QComboBox(this); 0068 lo2->addWidget(cmbSort); 0069 lSort->setBuddy(cmbSort); 0070 cmbSort->addItem(i18n("Opening Order"), static_cast<int>(KateFileTreeModel::OpeningOrderRole)); 0071 cmbSort->addItem(i18n("Document Name"), static_cast<int>(Qt::DisplayRole)); 0072 cmbSort->addItem(i18n("Url"), static_cast<int>(KateFileTreeModel::PathRole)); 0073 cmbSort->addItem(i18n("Custom Sorting"), static_cast<int>(CustomSorting)); 0074 0075 // view mode 0076 QHBoxLayout *lo3 = new QHBoxLayout; 0077 layout->addLayout(lo3); 0078 lMode = new QLabel(i18n("&View Mode:"), this); 0079 lo3->addWidget(lMode); 0080 cmbMode = new QComboBox(this); 0081 lo3->addWidget(cmbMode); 0082 lMode->setBuddy(cmbMode); 0083 cmbMode->addItem(i18n("Tree View"), QVariant(false)); 0084 cmbMode->addItem(i18n("List View"), QVariant(true)); 0085 0086 // Show Full Path on Roots? 0087 QHBoxLayout *lo4 = new QHBoxLayout; 0088 layout->addLayout(lo4); 0089 cbShowFullPath = new QCheckBox(i18n("&Show Full Path"), this); 0090 lo4->addWidget(cbShowFullPath); 0091 0092 QHBoxLayout *lo5 = new QHBoxLayout; 0093 layout->addLayout(lo5); 0094 cbShowToolbar = new QCheckBox(i18n("Show &Toolbar"), this); 0095 lo5->addWidget(cbShowToolbar); 0096 0097 cbShowClose = new QCheckBox(i18n("Show Close Button"), this); 0098 layout->addWidget(cbShowClose); 0099 layout->addWidget(new QLabel(i18n("When enabled, this will show a close button for opened documents on hover."))); 0100 0101 layout->insertStretch(-1, 10); 0102 0103 gbEnableShading->setWhatsThis( 0104 i18n("When background shading is enabled, documents that have been viewed " 0105 "or edited within the current session will have a shaded background. " 0106 "The most recent documents have the strongest shade.")); 0107 kcbViewShade->setWhatsThis(i18n("Set the color for shading viewed documents.")); 0108 kcbEditShade->setWhatsThis( 0109 i18n("Set the color for modified documents. This color is blended into " 0110 "the color for viewed files. The most recently edited documents get " 0111 "most of this color.")); 0112 0113 cbShowFullPath->setWhatsThis( 0114 i18n("When enabled, in tree mode, top level folders will show up with their full path " 0115 "rather than just the last folder name.")); 0116 0117 cbShowToolbar->setWhatsThis(i18n("When enabled, a toolbar with actions like “Save” are displayed above the list of documents.")); 0118 0119 // cmbSort->setWhatsThis( i18n( 0120 // "Set the sorting method for the documents.") ); 0121 0122 reset(); 0123 0124 connect(gbEnableShading, &QGroupBox::toggled, this, &KateFileTreeConfigPage::slotMyChanged); 0125 connect(kcbViewShade, &KColorButton::changed, this, &KateFileTreeConfigPage::slotMyChanged); 0126 connect(kcbEditShade, &KColorButton::changed, this, &KateFileTreeConfigPage::slotMyChanged); 0127 connect(cmbSort, QOverload<int>::of(&QComboBox::activated), this, &KateFileTreeConfigPage::slotMyChanged); 0128 connect(cmbMode, QOverload<int>::of(&QComboBox::activated), this, &KateFileTreeConfigPage::slotMyChanged); 0129 connect(cbShowFullPath, &QCheckBox::stateChanged, this, &KateFileTreeConfigPage::slotMyChanged); 0130 connect(cbShowToolbar, &QCheckBox::stateChanged, this, &KateFileTreeConfigPage::slotMyChanged); 0131 connect(cbShowClose, &QCheckBox::stateChanged, this, &KateFileTreeConfigPage::slotMyChanged); 0132 } 0133 0134 QString KateFileTreeConfigPage::name() const 0135 { 0136 return QString(i18n("Documents")); 0137 } 0138 0139 QString KateFileTreeConfigPage::fullName() const 0140 { 0141 return QString(i18n("Configure Documents")); 0142 } 0143 0144 QIcon KateFileTreeConfigPage::icon() const 0145 { 0146 return QIcon::fromTheme(QLatin1String("folder-documents-symbolic")); 0147 } 0148 0149 void KateFileTreeConfigPage::apply() 0150 { 0151 if (!m_changed) { 0152 return; 0153 } 0154 0155 m_changed = false; 0156 0157 // apply config to views 0158 m_plug->applyConfig(gbEnableShading->isChecked(), 0159 kcbViewShade->color(), 0160 kcbEditShade->color(), 0161 cmbMode->itemData(cmbMode->currentIndex()).toBool(), 0162 cmbSort->itemData(cmbSort->currentIndex()).toInt(), 0163 cbShowFullPath->checkState() == Qt::Checked, 0164 cbShowToolbar->checkState() == Qt::Checked, 0165 cbShowClose->isChecked()); 0166 } 0167 0168 void KateFileTreeConfigPage::reset() 0169 { 0170 const KateFileTreePluginSettings &settings = m_plug->settings(); 0171 0172 gbEnableShading->setChecked(settings.shadingEnabled()); 0173 kcbEditShade->setColor(settings.editShade()); 0174 kcbViewShade->setColor(settings.viewShade()); 0175 cmbSort->setCurrentIndex(cmbSort->findData(settings.sortRole())); 0176 cmbMode->setCurrentIndex(settings.listMode()); 0177 cbShowFullPath->setCheckState(settings.showFullPathOnRoots() ? Qt::Checked : Qt::Unchecked); 0178 cbShowToolbar->setCheckState(settings.showToolbar() ? Qt::Checked : Qt::Unchecked); 0179 cbShowClose->setChecked(settings.showCloseButton()); 0180 0181 m_changed = false; 0182 } 0183 0184 void KateFileTreeConfigPage::defaults() 0185 { 0186 // m_plug->settings().revertToDefaults() ?? 0187 // not sure the above is ever needed... 0188 reset(); 0189 } 0190 0191 void KateFileTreeConfigPage::slotMyChanged() 0192 { 0193 m_changed = true; 0194 Q_EMIT changed(); 0195 } 0196 0197 #include "moc_katefiletreeconfigpage.cpp"