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>
1618
1719namespace fcitx {
1820
21+ const char *mode_type[] = {" readonly" , " readwrite" };
22+
1923enum DictType { DictType_Static, DictType_User };
2024
2125AddDictDialog::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
5960void 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
0 commit comments