mirror of
https://github.com/arcan1s/awesome-widgets.git
synced 2025-07-10 04:15:51 +00:00
add formatters configuration to ui
This commit is contained in:
@ -20,6 +20,8 @@
|
||||
|
||||
#include <KI18n/KLocalizedString>
|
||||
|
||||
#include <QPushButton>
|
||||
|
||||
#include "awabstractselector.h"
|
||||
#include "awdebug.h"
|
||||
#include "awformatterhelper.h"
|
||||
@ -33,10 +35,13 @@ AWFormatterConfig::AWFormatterConfig(QWidget *parent, const QStringList keys)
|
||||
qCDebug(LOG_AW) << __PRETTY_FUNCTION__;
|
||||
|
||||
ui->setupUi(this);
|
||||
editButton = ui->buttonBox->addButton(i18n("Edit"),
|
||||
QDialogButtonBox::ActionRole);
|
||||
init();
|
||||
|
||||
connect(ui->buttonBox, SIGNAL(accepted()), this, SLOT(accept()));
|
||||
connect(ui->buttonBox, SIGNAL(rejected()), this, SLOT(reject()));
|
||||
connect(editButton, SIGNAL(clicked(bool)), this, SLOT(editFormatters()));
|
||||
}
|
||||
|
||||
|
||||
@ -53,21 +58,20 @@ AWFormatterConfig::~AWFormatterConfig()
|
||||
|
||||
void AWFormatterConfig::showDialog()
|
||||
{
|
||||
clearSelectors();
|
||||
QHash<QString, QString> appliedFormatters = m_helper->getFormatters();
|
||||
auto keys = initKeys();
|
||||
|
||||
for (auto key : appliedFormatters.keys())
|
||||
addSelector(keys.first, keys.second,
|
||||
QPair<QString, QString>(key, appliedFormatters[key]));
|
||||
// empty one
|
||||
addSelector(keys.first, keys.second, QPair<QString, QString>());
|
||||
|
||||
// update dialog
|
||||
updateDialog();
|
||||
// exec dialog
|
||||
return execDialog();
|
||||
}
|
||||
|
||||
|
||||
void AWFormatterConfig::editFormatters()
|
||||
{
|
||||
m_helper->editItems();
|
||||
updateDialog();
|
||||
}
|
||||
|
||||
|
||||
void AWFormatterConfig::updateUi()
|
||||
{
|
||||
QPair<QString, QString> current
|
||||
@ -108,9 +112,12 @@ void AWFormatterConfig::addSelector(const QStringList &keys,
|
||||
|
||||
void AWFormatterConfig::clearSelectors()
|
||||
{
|
||||
for (auto selector : m_selectors)
|
||||
for (auto selector : m_selectors) {
|
||||
disconnect(selector, SIGNAL(selectionChanged()), this,
|
||||
SLOT(updateUi()));
|
||||
ui->verticalLayout->removeWidget(selector);
|
||||
selector->deleteLater();
|
||||
}
|
||||
m_selectors.clear();
|
||||
}
|
||||
|
||||
@ -121,7 +128,7 @@ void AWFormatterConfig::execDialog()
|
||||
QHash<QString, QString> data;
|
||||
for (auto selector : m_selectors) {
|
||||
QPair<QString, QString> select = selector->current();
|
||||
if ((select.first.isEmpty()) || (select.second.isEmpty()))
|
||||
if (select.first.isEmpty())
|
||||
continue;
|
||||
data[select.first] = select.second;
|
||||
}
|
||||
@ -133,6 +140,7 @@ void AWFormatterConfig::execDialog()
|
||||
case 1:
|
||||
default:
|
||||
m_helper->writeFormatters(data);
|
||||
m_helper->writeFormatters(data.keys());
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -157,3 +165,17 @@ QPair<QStringList, QStringList> AWFormatterConfig::initKeys() const
|
||||
|
||||
return QPair<QStringList, QStringList>(keys, knownFormatters);
|
||||
}
|
||||
|
||||
|
||||
void AWFormatterConfig::updateDialog()
|
||||
{
|
||||
clearSelectors();
|
||||
QHash<QString, QString> appliedFormatters = m_helper->getFormatters();
|
||||
auto keys = initKeys();
|
||||
|
||||
for (auto key : appliedFormatters.keys())
|
||||
addSelector(keys.first, keys.second,
|
||||
QPair<QString, QString>(key, appliedFormatters[key]));
|
||||
// empty one
|
||||
addSelector(keys.first, keys.second, QPair<QString, QString>());
|
||||
}
|
||||
|
@ -40,9 +40,11 @@ public:
|
||||
Q_INVOKABLE void showDialog();
|
||||
|
||||
private slots:
|
||||
void editFormatters();
|
||||
void updateUi();
|
||||
|
||||
private:
|
||||
QPushButton *editButton = nullptr;
|
||||
Ui::AWFormatterConfig *ui = nullptr;
|
||||
AWFormatterHelper *m_helper = nullptr;
|
||||
QList<AWAbstractSelector *> m_selectors;
|
||||
@ -55,6 +57,7 @@ private:
|
||||
void execDialog();
|
||||
void init();
|
||||
QPair<QStringList, QStringList> initKeys() const;
|
||||
void updateDialog();
|
||||
};
|
||||
|
||||
|
||||
|
@ -90,6 +90,31 @@ QStringList AWFormatterHelper::knownFormatters() const
|
||||
}
|
||||
|
||||
|
||||
bool AWFormatterHelper::writeFormatters(const QStringList keys) const
|
||||
{
|
||||
qCDebug(LOG_AW) << "Remove formatters" << keys;
|
||||
|
||||
QString fileName = QString("%1/awesomewidgets/formatters/formatters.ini")
|
||||
.arg(QStandardPaths::writableLocation(
|
||||
QStandardPaths::GenericDataLocation));
|
||||
QSettings settings(fileName, QSettings::IniFormat);
|
||||
qCInfo(LOG_AW) << "Configuration file" << fileName;
|
||||
|
||||
settings.beginGroup(QString("Formatters"));
|
||||
QStringList foundKeys = settings.childKeys();
|
||||
for (auto key : foundKeys) {
|
||||
if (keys.contains(key))
|
||||
continue;
|
||||
settings.remove(key);
|
||||
}
|
||||
settings.endGroup();
|
||||
|
||||
settings.sync();
|
||||
|
||||
return (settings.status() == QSettings::NoError);
|
||||
}
|
||||
|
||||
|
||||
bool AWFormatterHelper::writeFormatters(
|
||||
const QHash<QString, QString> configuration) const
|
||||
{
|
||||
@ -112,6 +137,14 @@ bool AWFormatterHelper::writeFormatters(
|
||||
}
|
||||
|
||||
|
||||
void AWFormatterHelper::editItems()
|
||||
{
|
||||
repaintList();
|
||||
int ret = exec();
|
||||
qCInfo(LOG_AW) << "Dialog returns" << ret;
|
||||
}
|
||||
|
||||
|
||||
AWFormatterHelper::FormatterClass
|
||||
AWFormatterHelper::defineFormatterClass(const QString stringType) const
|
||||
{
|
||||
@ -193,9 +226,14 @@ void AWFormatterHelper::initKeys()
|
||||
QString name = settings.value(key).toString();
|
||||
qCInfo(LOG_AW) << "Found formatter" << name << "for key" << key
|
||||
<< "in" << settings.fileName();
|
||||
if (name.isEmpty()) {
|
||||
qCInfo(LOG_AW) << "Skip empty formatter for" << key;
|
||||
continue;
|
||||
}
|
||||
if (!m_formattersClasses.contains(name)) {
|
||||
qCWarning(LOG_AW) << "Invalid formatter" << name << "found in"
|
||||
<< key;
|
||||
continue;
|
||||
}
|
||||
m_formatters[key] = m_formattersClasses[name];
|
||||
}
|
||||
|
@ -38,8 +38,12 @@ public:
|
||||
QHash<QString, QString> getFormatters() const;
|
||||
QList<AbstractExtItem *> items() const;
|
||||
QStringList knownFormatters() const;
|
||||
bool writeFormatters(const QStringList keys) const;
|
||||
bool writeFormatters(const QHash<QString, QString> configuration) const;
|
||||
|
||||
public slots:
|
||||
void editItems();
|
||||
|
||||
private:
|
||||
// methods
|
||||
AWFormatterHelper::FormatterClass
|
||||
|
Reference in New Issue
Block a user