Skip to content

Commit

Permalink
feat: add tag settings for "general" tag type (fix #2905)
Browse files Browse the repository at this point in the history
  • Loading branch information
Bionus committed Feb 6, 2023
1 parent 80a157a commit d4f3619
Show file tree
Hide file tree
Showing 6 changed files with 32 additions and 13 deletions.
18 changes: 17 additions & 1 deletion src/gui-qml/src/components/settings/pages/SaveSettingsPage.qml
Original file line number Diff line number Diff line change
Expand Up @@ -67,54 +67,69 @@ ColumnLayout {
}
Repeater {
model: ListModel {
ListElement {
name: qsTr("General")
key: "general"
enableShorter: false
defaultEmpty: ""
defaultMultiple: ""
defaultSeparator: " "
}
ListElement {
name: qsTr("Artist")
key: "artist"
enableShorter: false
defaultEmpty: "anonymous"
defaultMultiple: "multiple artists"
defaultSeparator: "+"
}
ListElement {
name: qsTr("Copyright")
key: "copyright"
enableShorter: true
defaultEmpty: "misc"
defaultMultiple: "crossover"
defaultSeparator: "+"
}
ListElement {
name: qsTr("Character")
key: "character"
enableShorter: false
defaultEmpty: "unknown"
defaultMultiple: "group"
defaultSeparator: "+"
}
ListElement {
name: qsTr("Model")
key: "model"
enableShorter: false
defaultEmpty: "unknown"
defaultMultiple: "multiple"
defaultSeparator: "+"
}
ListElement {
name: qsTr("Photo set")
key: "photo_set"
enableShorter: false
defaultEmpty: "unknown"
defaultMultiple: "multiple"
defaultSeparator: "+"
}
ListElement {
name: qsTr("Species")
key: "species"
enableShorter: false
defaultEmpty: "unknown"
defaultMultiple: "multiple"
defaultSeparator: "+"
}
ListElement {
name: qsTr("Meta")
key: "meta"
enableShorter: false
defaultEmpty: "none"
defaultMultiple: "multiple"
defaultSeparator: "+"
}
}
delegate: SettingItem {
Expand All @@ -126,7 +141,8 @@ ColumnLayout {
key: model.key,
enableShorter: model.enableShorter,
defaultEmpty: model.defaultEmpty,
defaultMultiple: model.defaultMultiple
defaultMultiple: model.defaultMultiple,
defaultSeparator: model.defaultSeparator
})
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ ColumnLayout {
property bool enableShorter: false
property string defaultEmpty
property string defaultMultiple
property string defaultSeparator: "+"

spacing: 0

Expand All @@ -24,7 +25,7 @@ ColumnLayout {
name: qsTr("Separator")
setting: Setting {
key: "Save/" + key + "_sep"
def: "+"
def: defaultSeparator
}
Layout.fillWidth: true
}
Expand Down
16 changes: 9 additions & 7 deletions src/gui/src/settings/options-window.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -262,20 +262,22 @@ OptionsWindow::OptionsWindow(Profile *profile, ThemeLoader *themeLoader, QWidget

// Build the "tags" settings
auto tagsTree = ui->treeWidget->invisibleRootItem()->child(2)->child(5);
tagsTree->addChild(new QTreeWidgetItem({ "General" }, tagsTree->type()));
tagsTree->addChild(new QTreeWidgetItem({ "Artist" }, tagsTree->type()));
tagsTree->addChild(new QTreeWidgetItem({ "Copyright" }, tagsTree->type()));
tagsTree->addChild(new QTreeWidgetItem({ "Character" }, tagsTree->type()));
tagsTree->addChild(new QTreeWidgetItem({ "Model" }, tagsTree->type()));
tagsTree->addChild(new QTreeWidgetItem({ "Photo set" }, tagsTree->type()));
tagsTree->addChild(new QTreeWidgetItem({ "Species" }, tagsTree->type()));
tagsTree->addChild(new QTreeWidgetItem({ "Meta" }, tagsTree->type()));
m_tokenSettings.append(new TokenSettingsWidget(settings, "artist", false, "anonymous", "multiple artists", this));
m_tokenSettings.append(new TokenSettingsWidget(settings, "copyright", true, "misc", "crossover", this));
m_tokenSettings.append(new TokenSettingsWidget(settings, "character", false, "unknown", "group", this));
m_tokenSettings.append(new TokenSettingsWidget(settings, "model", false, "unknown", "multiple", this));
m_tokenSettings.append(new TokenSettingsWidget(settings, "photo_set", false, "unknown", "multiple", this));
m_tokenSettings.append(new TokenSettingsWidget(settings, "species", false, "unknown", "multiple", this));
m_tokenSettings.append(new TokenSettingsWidget(settings, "meta", false, "none", "multiple", this));
m_tokenSettings.append(new TokenSettingsWidget(settings, "general", false, "", "", " ", this));
m_tokenSettings.append(new TokenSettingsWidget(settings, "artist", false, "anonymous", "multiple artists", "+", this));
m_tokenSettings.append(new TokenSettingsWidget(settings, "copyright", true, "misc", "crossover", "+", this));
m_tokenSettings.append(new TokenSettingsWidget(settings, "character", false, "unknown", "group", "+", this));
m_tokenSettings.append(new TokenSettingsWidget(settings, "model", false, "unknown", "multiple", "+", this));
m_tokenSettings.append(new TokenSettingsWidget(settings, "photo_set", false, "unknown", "multiple", "+", this));
m_tokenSettings.append(new TokenSettingsWidget(settings, "species", false, "unknown", "multiple", "+", this));
m_tokenSettings.append(new TokenSettingsWidget(settings, "meta", false, "none", "multiple", "+", this));
const int tagsStackIndex = ui->stackedWidget->indexOf(ui->pageTags);
for (int i = 0; i < m_tokenSettings.count(); ++i) {
ui->stackedWidget->insertWidget(i + tagsStackIndex + 1, m_tokenSettings[i]);
Expand Down
4 changes: 2 additions & 2 deletions src/gui/src/settings/token-settings-widget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
#include <QSettings>
#include "ui_token-settings-widget.h"

TokenSettingsWidget::TokenSettingsWidget(QSettings *settings, QString name, bool enableShorter, const QString &defaultEmpty, const QString &defaultMultiple, QWidget *parent)
TokenSettingsWidget::TokenSettingsWidget(QSettings *settings, QString name, bool enableShorter, const QString &defaultEmpty, const QString &defaultMultiple, const QString &defaultSeparator, QWidget *parent)
: QWidget(parent), ui(new Ui::TokenSettingsWidget), m_settings(settings), m_name(std::move(name)), m_enableShorter(enableShorter)
{
ui->setupUi(this);
Expand All @@ -15,7 +15,7 @@ TokenSettingsWidget::TokenSettingsWidget(QSettings *settings, QString name, bool
ui->spinKeepN->setValue(m_settings->value(m_name + "_multiple_keepN", 1).toInt());
ui->spinKeepNThenAdd->setValue(m_settings->value(m_name + "_multiple_keepNThenAdd_keep", 1).toInt());
ui->lineKeepNThenAdd->setText(m_settings->value(m_name + "_multiple_keepNThenAdd_add", " (+ %count%)").toString());
ui->lineSeparator->setText(m_settings->value(m_name + "_sep", "+").toString());
ui->lineSeparator->setText(m_settings->value(m_name + "_sep", defaultSeparator).toString());
ui->lineReplaceAll->setText(m_settings->value(m_name + "_value", defaultMultiple).toString());

const QString multiple = m_settings->value(m_name + "_multiple", "keepAll").toString();
Expand Down
2 changes: 1 addition & 1 deletion src/gui/src/settings/token-settings-widget.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ class TokenSettingsWidget : public QWidget
Q_OBJECT

public:
explicit TokenSettingsWidget(QSettings *settings, QString name, bool enableShorter, const QString &defaultEmpty = "unknown", const QString &defaultMultiple = "multiple", QWidget *parent = nullptr);
explicit TokenSettingsWidget(QSettings *settings, QString name, bool enableShorter, const QString &defaultEmpty = "unknown", const QString &defaultMultiple = "multiple", const QString &defaultSeparator = "+", QWidget *parent = nullptr);
~TokenSettingsWidget() override;

public slots:
Expand Down
2 changes: 1 addition & 1 deletion src/lib/src/models/image.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1155,7 +1155,7 @@ QMap<QString, Token> Image::generateTokens(Profile *profile) const
}

// Tags
tokens.insert("general", Token(details["general"]));
tokens.insert("general", Token(details["general"], "keepAll", "", ""));
tokens.insert("artist", Token(details["artist"], "keepAll", "anonymous", "multiple artists"));
tokens.insert("copyright", Token(details["copyright"], "keepAll", "misc", "crossover"));
tokens.insert("character", Token(details["character"], "keepAll", "unknown", "group"));
Expand Down

0 comments on commit d4f3619

Please sign in to comment.