1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130
|
/*
SPDX-FileCopyrightText: 2006 Ivan Vasić <ivasic@gmail.com>
SPDX-License-Identifier: GPL-2.0-or-later
*/
#include "scanfolderprefpage.h"
#include "scanfolderplugin.h"
#include <KLocalizedString>
#include <QFileDialog>
#include "scanfolderpluginsettings.h"
#include <groups/groupmanager.h>
#include <interfaces/coreinterface.h>
#include <util/functions.h>
namespace kt
{
ScanFolderPrefPage::ScanFolderPrefPage(ScanFolderPlugin *plugin, QWidget *parent)
: PrefPageInterface(ScanFolderPluginSettings::self(), i18nc("plugin name", "Scan Folder"), QStringLiteral("folder-open"), parent)
, m_plugin(plugin)
{
setupUi(this);
connect(kcfg_actionDelete, &QCheckBox::toggled, kcfg_actionMove, &QCheckBox::setDisabled);
connect(m_add, &QPushButton::clicked, this, &ScanFolderPrefPage::addPressed);
connect(m_remove, &QPushButton::clicked, this, &ScanFolderPrefPage::removePressed);
connect(m_folders, &QListWidget::itemSelectionChanged, this, &ScanFolderPrefPage::selectionChanged);
connect(m_group, &QComboBox::currentIndexChanged, this, &ScanFolderPrefPage::currentGroupChanged);
}
ScanFolderPrefPage::~ScanFolderPrefPage()
{
}
void ScanFolderPrefPage::loadSettings()
{
kcfg_actionMove->setEnabled(!ScanFolderPluginSettings::actionDelete());
m_group->clear();
GroupManager *gman = m_plugin->getCore()->getGroupManager();
QStringList grps;
GroupManager::Itr it = gman->begin();
int current = 0;
int cnt = 0;
// now custom ones
while (it != gman->end()) {
if (it->second->groupFlags() & Group::CUSTOM_GROUP) {
grps << it->first;
if (it->first == ScanFolderPluginSettings::group())
current = cnt;
cnt++;
}
++it;
}
m_group->addItems(grps);
m_group->setEnabled(ScanFolderPluginSettings::addToGroup() && grps.count() > 0);
m_group->setCurrentIndex(current);
kcfg_addToGroup->setEnabled(grps.count() > 0);
m_folders->clear();
folders = ScanFolderPluginSettings::folders();
for (const QString &f : std::as_const(folders)) {
m_folders->addItem(new QListWidgetItem(QIcon::fromTheme(QStringLiteral("folder")), f));
}
selectionChanged();
}
void ScanFolderPrefPage::loadDefaults()
{
kcfg_actionMove->setEnabled(!ScanFolderPluginSettings::actionDelete());
m_folders->clear();
folders.clear();
}
void ScanFolderPrefPage::updateSettings()
{
if (kcfg_addToGroup->isChecked() && kcfg_addToGroup->isEnabled())
ScanFolderPluginSettings::setGroup(m_group->currentText());
else
ScanFolderPluginSettings::setGroup(QString());
ScanFolderPluginSettings::setFolders(folders);
ScanFolderPluginSettings::self()->save();
m_plugin->updateScanFolders();
}
void ScanFolderPrefPage::addPressed()
{
QString p = QFileDialog::getExistingDirectory(this);
if (!p.isEmpty()) {
if (!p.endsWith(bt::DirSeparator()))
p += bt::DirSeparator();
m_folders->addItem(new QListWidgetItem(QIcon::fromTheme(QStringLiteral("folder")), p));
folders.append(p);
}
Q_EMIT updateButtons();
}
void ScanFolderPrefPage::removePressed()
{
const QList<QListWidgetItem *> sel = m_folders->selectedItems();
for (QListWidgetItem *i : sel) {
folders.removeAll(i->text());
delete i;
}
Q_EMIT updateButtons();
}
void ScanFolderPrefPage::selectionChanged()
{
m_remove->setEnabled(m_folders->selectedItems().count() > 0);
}
void ScanFolderPrefPage::currentGroupChanged(int idx)
{
Q_UNUSED(idx);
Q_EMIT updateButtons();
}
bool ScanFolderPrefPage::customWidgetsChanged()
{
return ScanFolderPluginSettings::group() != m_group->currentText() || folders != ScanFolderPluginSettings::folders();
}
}
#include "moc_scanfolderprefpage.cpp"
|