Skip to content

Commit 5b45641

Browse files
authored
Edit button (#34)
* Edit button
1 parent 41f6b00 commit 5b45641

File tree

7 files changed

+327
-234
lines changed

7 files changed

+327
-234
lines changed

gui/adddictdialog.cpp

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
/*
2-
* SPDX-FileCopyrightText: 2013~2020 CSSlayer <wengxt@gmail.com>
2+
* SPDX-FileCopyrightText: <text>2013~2022 CSSlayer <wengxt@gmail.com>, Naoaki Iwakiri
3+
* <naokiri@gmail.com></text>
34
*
45
* SPDX-License-Identifier: GPL-3.0-or-later
56
*
67
*/
78

89
#include "adddictdialog.h"
10+
#include "dictmodel.h"
911
#include "skk_dict_config.h"
1012
#include <QDebug>
1113
#include <QFileDialog>
@@ -16,6 +18,8 @@
1618

1719
namespace fcitx {
1820

21+
const char *mode_type[] = {"readonly", "readwrite"};
22+
1923
enum DictType { DictType_Static, DictType_User };
2024

2125
AddDictDialog::AddDictDialog(QWidget *parent)
@@ -42,27 +46,25 @@ QMap<QString, QString> AddDictDialog::dictionary() {
4246
idx = idx > 1 ? 0 : idx;
4347

4448
QMap<QString, QString> dict;
45-
const char *type[] = {"readonly", "readwrite"};
4649

4750
dict["type"] = "file";
4851
dict["file"] = m_ui->urlLineEdit->text();
49-
dict["mode"] = type[idx];
52+
dict["mode"] = mode_type[idx];
5053
dict["encoding"] = m_ui->encodingEdit->text();
5154

5255
return dict;
5356
}
5457

55-
void AddDictDialog::indexChanged([[maybe_unused]] int _idx) {
56-
validate();
57-
}
58+
void AddDictDialog::indexChanged([[maybe_unused]] int _idx) { validate(); }
5859

5960
void AddDictDialog::validate() {
6061
const auto index = m_ui->typeComboBox->currentIndex();
6162
bool valid = true;
6263
switch (index) {
6364
case DictType_Static:
6465
case DictType_User:
65-
if (m_ui->urlLineEdit->text().isEmpty() || m_ui->encodingEdit->text().isEmpty()) {
66+
if (m_ui->urlLineEdit->text().isEmpty() ||
67+
m_ui->encodingEdit->text().isEmpty()) {
6668
valid = false;
6769
}
6870
break;
@@ -90,7 +92,8 @@ void AddDictDialog::browseClicked() {
9092

9193
if (path.isEmpty()) {
9294
auto baseDataPath = stringutils::joinPath(
93-
StandardPath::global().userDirectory(StandardPath::Type::Data), "fcitx5-cskk");
95+
StandardPath::global().userDirectory(StandardPath::Type::Data),
96+
"fcitx5-cskk");
9497
fs::makePath(baseDataPath);
9598
QString basePath = QDir::cleanPath(QString::fromStdString(baseDataPath));
9699
path = basePath;
@@ -110,5 +113,16 @@ void AddDictDialog::browseClicked() {
110113
m_ui->urlLineEdit->setText(path);
111114
}
112115
}
116+
void AddDictDialog::setDictionary(QMap<QString, QString> &dict) {
117+
m_ui->urlLineEdit->setText(dict["file"]);
118+
119+
for (int i = 0; i < (sizeof(mode_type) / sizeof(char *)); i++) {
120+
// It's OK to use stdstirng here. We only use latin-1.
121+
if (dict["mode"].toStdString() == mode_type[i]) {
122+
m_ui->typeComboBox->setCurrentIndex(i);
123+
}
124+
}
125+
m_ui->encodingEdit->setText(dict["encoding"]);
126+
}
113127

114128
} // namespace fcitx

gui/adddictdialog.h

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
/*
2-
* SPDX-FileCopyrightText: 2013~2020 CSSlayer <wengxt@gmail.com>
2+
* SPDX-FileCopyrightText: <text>2013~2022 CSSlayer <wengxt@gmail.com>, Naoaki Iwakiri
3+
* <naokiri@gmail.com></text>
34
*
45
* SPDX-License-Identifier: GPL-3.0-or-later
56
*
@@ -8,26 +9,27 @@
89
#ifndef ADDDICTDIALOG_H
910
#define ADDDICTDIALOG_H
1011

11-
#include <memory>
12+
#include "ui_adddictdialog.h"
1213
#include <QDialog>
1314
#include <QMap>
14-
#include "ui_adddictdialog.h"
15+
#include <memory>
1516

1617
namespace fcitx {
1718

1819
class AddDictDialog : public QDialog {
19-
Q_OBJECT
20+
Q_OBJECT
2021
public:
21-
explicit AddDictDialog(QWidget *parent = 0);
22-
QMap<QString, QString> dictionary();
22+
explicit AddDictDialog(QWidget *parent = 0);
23+
QMap<QString, QString> dictionary();
24+
void setDictionary(QMap<QString, QString> &dict);
2325

2426
public Q_SLOTS:
25-
void browseClicked();
26-
void indexChanged([[maybe_unused]] int);
27-
void validate();
27+
void browseClicked();
28+
void indexChanged([[maybe_unused]] int);
29+
void validate();
2830

2931
private:
30-
std::unique_ptr<Ui::AddDictDialog> m_ui;
32+
std::unique_ptr<Ui::AddDictDialog> m_ui;
3133
};
3234

3335
} // namespace fcitx

0 commit comments

Comments
 (0)