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 131 132 133 134 135 136 137 138
|
/*
This file is part of Kiten, a KDE Japanese Reference Tool
SPDX-FileCopyrightText: 2006 Joseph Kerian <jkerian@gmail.com>
SPDX-License-Identifier: LGPL-2.0-or-later
*/
#include "dictfilefieldselector.h"
#include <KActionSelector>
#include <KConfigSkeleton>
#include <KLocalizedString>
#include <QListWidget>
#include <QString>
#include <QVBoxLayout>
using namespace Qt::StringLiterals;
DictFileFieldSelector::DictFileFieldSelector(KConfigSkeleton *config, const QString &dictionaryTypeName, QWidget *parent)
: DictionaryPreferenceDialog(parent, dictionaryTypeName)
, m_dictName(dictionaryTypeName)
{
auto newTabLayout = new QVBoxLayout();
// Make selection box
m_listView = new KActionSelector();
m_listView->setAvailableLabel(i18n("&Available Fields:"));
newTabLayout->addWidget(m_listView);
// Add layout to our widget
this->setLayout(newTabLayout);
// Create Default List
m_completeList.append(QStringLiteral("--NewLine--"));
m_completeList.append(QStringLiteral("--NewLine--"));
m_completeList.append(QStringLiteral("--NewLine--"));
m_completeList.append(QStringLiteral("Word/Kanji"));
m_completeList.append(QStringLiteral("Reading"));
m_completeList.append(QStringLiteral("Meaning"));
// Make connections
connect(m_listView, &KActionSelector::added, this, &DictFileFieldSelector::settingChanged);
connect(m_listView, &KActionSelector::removed, this, &DictFileFieldSelector::settingChanged);
connect(m_listView, &KActionSelector::movedUp, this, &DictFileFieldSelector::settingChanged);
connect(m_listView, &KActionSelector::movedDown, this, &DictFileFieldSelector::settingChanged);
m_config = config;
updateWidgets();
}
void DictFileFieldSelector::addAvailable(const QStringList &list)
{
m_completeList += list;
updateWidgets();
}
void DictFileFieldSelector::readFromPrefs()
{
QStringList selectedList;
m_config->setCurrentGroup("dicts_"_L1 + m_dictName);
QStringList actionList = m_completeList;
QString itemName = m_dictName + "__displayFields"_L1;
KConfigSkeletonItem *item = m_config->findItem(itemName);
if (item != nullptr) {
selectedList = item->property().toStringList();
} else {
// it's not currently in the preferences list
m_config->addItem(new KConfigSkeleton::ItemStringList("dicts_"_L1 + m_dictName, itemName, *new QStringList()), itemName);
m_config->load();
selectedList = m_config->findItem(itemName)->property().toStringList();
}
for (const QString &it : selectedList) {
actionList.removeAt(actionList.indexOf(it)); // don't just use remove()... will remove all
}
m_listView->availableListWidget()->clear();
m_listView->selectedListWidget()->clear();
m_listView->availableListWidget()->addItems(actionList);
m_listView->selectedListWidget()->addItems(selectedList);
}
void DictFileFieldSelector::setAvailable(const QStringList &list)
{
m_completeList = list;
updateWidgets();
}
void DictFileFieldSelector::setDefaultList(const QStringList &list)
{
m_defaultList = list;
}
void DictFileFieldSelector::settingChanged()
{
Q_EMIT widgetChanged();
}
void DictFileFieldSelector::updateSettings()
{
writeToPrefs();
}
void DictFileFieldSelector::updateWidgets()
{
readFromPrefs();
}
void DictFileFieldSelector::updateWidgetsDefault()
{
}
void DictFileFieldSelector::writeToPrefs()
{
m_config->setCurrentGroup("dicts_"_L1 + m_dictName);
QStringList theList;
KConfigSkeletonItem *item;
QString itemName;
for (int i = 0; i < m_listView->selectedListWidget()->count(); i++) {
theList.append(m_listView->selectedListWidget()->item(i)->text());
}
itemName = m_dictName + "__displayFields"_L1;
item = m_config->findItem(itemName);
if (!item) {
item = new KConfigSkeleton::ItemStringList("dicts_"_L1 + m_dictName, itemName, *new QStringList());
m_config->addItem(item, itemName);
}
item->setProperty(theList);
m_config->save();
}
#include "moc_dictfilefieldselector.cpp"
|