Skip to content

Commit 431aa40

Browse files
committed
LyricTool: update converter
1 parent 35ea582 commit 431aa40

12 files changed

+86
-29
lines changed

src/plugins/lyrictool/core/g2p/ig2pconverter.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,12 @@ namespace LyricTool {
2020

2121
QList<LyricInfo> IG2pConverter::convert(const QStringList &input,
2222
const QVariantMap &args) const {
23+
Q_UNUSED(input);
24+
Q_UNUSED(args);
25+
return {};
26+
}
27+
28+
QWidget *IG2pConverter::createSettingPage(QWidget *parent) {
2329
return {};
2430
}
2531

src/plugins/lyrictool/core/g2p/ig2pconverter.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ namespace LyricTool {
3232
inline LyricInfo convert(const QString &input, const QVariantMap &args) const;
3333
virtual QList<LyricInfo> convert(const QStringList &input, const QVariantMap &args) const;
3434

35-
virtual QWidget *createSettingPage(QWidget *parent) = 0;
35+
virtual QWidget *createSettingPage(QWidget *parent);
3636

3737
protected:
3838
IG2pConverter(IG2pConverterPrivate &d, const QString &id, QObject *parent = nullptr);

src/plugins/lyrictool/core/lang/ilanguageanalyzer.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,10 @@ namespace LyricTool {
2727
}
2828
}
2929

30+
QWidget *ILanguageAnalyzer::createSettingPage() {
31+
return {};
32+
}
33+
3034
QString ILanguageAnalyzer::analyze(const QString &input) const {
3135
return contains(input) ? id() : QStringLiteral("Unknown");
3236
}

src/plugins/lyrictool/core/lang/ilanguageanalyzer.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ namespace LyricTool {
2929
QString analyze(const QString &input) const;
3030
void correct(const QList<LyricInfo> &input) const;
3131

32-
virtual QWidget *createSettingPage() = 0;
32+
virtual QWidget *createSettingPage();
3333

3434
public:
3535
QString id() const;

src/plugins/lyrictool/core/languagemanager.cpp

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ namespace LyricTool {
115115

116116
bool LanguageManager::removeG2p(const QString &id) {
117117
Q_D(LanguageManager);
118-
auto it = d->g2ps.find(id);
118+
const auto it = d->g2ps.find(id);
119119
if (it == d->g2ps.end()) {
120120
qWarning() << "LyricTool::LanguageManager::removeG2p(): converter does not exist:"
121121
<< id;
@@ -144,21 +144,22 @@ namespace LyricTool {
144144
QList<ILanguageAnalyzer *>
145145
LanguageManager::priorityLanguages(const QStringList &priorityList) const {
146146
Q_D(const LanguageManager);
147-
QStringList order = d->defaultSort;
147+
QStringList order = this->sortedLanguages();
148148

149149
QList<ILanguageAnalyzer *> result;
150150
for (const auto &category : priorityList) {
151151
for (const auto &lang : order) {
152152
const auto analyzer = language(lang);
153-
if (analyzer->category() == category) {
153+
if (analyzer != nullptr && analyzer->category() == category &&
154+
!result.contains(analyzer)) {
154155
result.append(analyzer);
155156
}
156157
}
157158
}
158159

159160
for (const auto &id : order) {
160161
const auto analyzer = language(id);
161-
if (!result.contains(analyzer)) {
162+
if (analyzer != nullptr && !result.contains(analyzer)) {
162163
result.append(analyzer);
163164
}
164165
}
@@ -172,7 +173,8 @@ namespace LyricTool {
172173
QList<LyricInfo> result = {lyricInfo};
173174

174175
for (const auto &analyzer : analyzers) {
175-
result = analyzer->split(result);
176+
if (analyzer != nullptr)
177+
result = analyzer->split(result);
176178
}
177179
return result;
178180
}
@@ -181,7 +183,8 @@ namespace LyricTool {
181183
QList<LyricInfo> result = input;
182184
const auto analyzers = this->priorityLanguages();
183185
for (const auto &analyzer : analyzers) {
184-
analyzer->correct(result);
186+
if (analyzer != nullptr)
187+
analyzer->correct(result);
185188
}
186189
return result;
187190
}
@@ -201,10 +204,13 @@ namespace LyricTool {
201204
const auto languages = languageIndexMap.keys();
202205
for (const auto &language : languages) {
203206
const auto rawLyrics = languageLyricMap[language];
204-
const auto g2pFactory = this->g2p(this->language(language)->selectedG2p());
205-
const auto g2pConfig = this->language(language)->g2pConfig();
207+
auto g2pConverter = this->g2p(this->language(language)->selectedG2p());
208+
if (g2pConverter == nullptr)
209+
g2pConverter = this->g2p(QStringLiteral("Unknown"));
210+
const auto analyzer = this->language(language);
211+
const auto g2pConfig = analyzer != nullptr ? analyzer->g2pConfig() : QVariantMap();
206212

207-
const auto tempRes = g2pFactory->convert(rawLyrics, g2pConfig);
213+
const auto tempRes = g2pConverter->convert(rawLyrics, g2pConfig);
208214
for (int i = 0; i < tempRes.size(); i++) {
209215
const auto index = languageIndexMap[language][i];
210216
result[index].setSyllable(tempRes[i].syllable());
@@ -220,7 +226,8 @@ namespace LyricTool {
220226
auto analyzers = this->priorityLanguages();
221227

222228
for (const auto &analyzer : analyzers) {
223-
result = analyzer->analyze(input);
229+
if (analyzer != nullptr)
230+
result = analyzer->analyze(input);
224231
if (result != QStringLiteral("Unknown"))
225232
break;
226233
}
@@ -238,7 +245,8 @@ namespace LyricTool {
238245
}
239246

240247
for (const auto &analyzer : analyzers) {
241-
analyzer->correct(rawInfo);
248+
if (analyzer != nullptr)
249+
analyzer->correct(rawInfo);
242250
}
243251

244252
QStringList result;

src/plugins/lyrictool/core/languagemanager.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ namespace LyricTool {
1818
~LanguageManager();
1919

2020
public:
21-
bool load(QString *errorMessage);
21+
static bool load(QString *errorMessage);
2222

2323
ILanguageAnalyzer *language(const QString &id) const;
2424
QList<ILanguageAnalyzer *> languages() const;

src/plugins/lyrictool/internal/g2p/cantoneseconverter.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ namespace LyricTool::Internal {
1515
explicit CantoneseConverter(QObject *parent = nullptr);
1616
~CantoneseConverter() override;
1717

18-
QList<LyricInfo> convert(const QStringList &input, const QVariantMap &args) const = 0;
18+
QList<LyricInfo> convert(const QStringList &input, const QVariantMap &args) const override;
1919

2020
public:
2121
QWidget *createSettingPage(QWidget *parent);

src/plugins/lyrictool/internal/g2p/englishconverter.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ namespace LyricTool::Internal {
1414
explicit EnglishConverter(QObject *parent = nullptr);
1515
~EnglishConverter() override;
1616

17-
QList<LyricInfo> convert(const QStringList &input, const QVariantMap &args) const = 0;
17+
QList<LyricInfo> convert(const QStringList &input, const QVariantMap &args) const override;
1818

1919
public:
2020
QWidget *createSettingPage(QWidget *parent);

src/plugins/lyrictool/internal/g2p/kanaconverter.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ namespace LyricTool::Internal {
1515
explicit KanaConverter(QObject *parent = nullptr);
1616
~KanaConverter() override;
1717

18-
QList<LyricInfo> convert(const QStringList &input, const QVariantMap &args) const = 0;
18+
QList<LyricInfo> convert(const QStringList &input, const QVariantMap &args) const override;
1919

2020
public:
2121
QWidget *createSettingPage(QWidget *parent);

src/plugins/lyrictool/internal/g2p/mandarinconverter.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ namespace LyricTool::Internal {
1515
explicit MandarinConverter(QObject *parent = nullptr);
1616
~MandarinConverter() override;
1717

18-
QList<LyricInfo> convert(const QStringList &input, const QVariantMap &args) const = 0;
18+
QList<LyricInfo> convert(const QStringList &input, const QVariantMap &args) const override;
1919

2020
public:
2121
QWidget *createSettingPage(QWidget *parent);

src/plugins/lyrictool/internal/g2p/unknownconverter.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ namespace LyricTool::Internal {
1515
explicit UnknownConverter(QObject *parent = nullptr);
1616
~UnknownConverter() override;
1717

18-
QList<LyricInfo> convert(const QStringList &input, const QVariantMap &args) const = 0;
18+
QList<LyricInfo> convert(const QStringList &input, const QVariantMap &args) const override;
1919

2020
public:
2121
QWidget *createSettingPage(QWidget *parent);

src/plugins/lyrictool/internal/lyrictoolplugin.cpp

Lines changed: 49 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,35 @@
1414
#include <coreplugin/ihomewindow.h>
1515
#include <coreplugin/iprojectwindow.h>
1616

17+
// Analyzers
18+
#include "mandarinanalyzer.h"
19+
#include "cantoneseanalyzer.h"
20+
#include "englishanalyzer.h"
21+
#include "pinyinanalyzer.h"
22+
#include "romajianalyzer.h"
23+
#include "kanaanalyzer.h"
24+
25+
#include "linebreakanalyzer.h"
26+
#include "numberanalyzer.h"
27+
#include "punctuationanalyzer.h"
28+
#include "sluranalyzer.h"
29+
#include "spaceanalyzer.h"
30+
#include "unknownanalyzer.h"
31+
32+
// G2ps
33+
#include "mandarinconverter.h"
34+
#include "cantoneseconverter.h"
35+
#include "englishconverter.h"
36+
#include "kanaconverter.h"
37+
#include "unknownconverter.h"
38+
39+
#include "languagemanager.h"
40+
1741
CK_STATIC_ACTION_EXTENSION_GETTER(lyrictool_actions, getMyActionExtension);
1842

1943
namespace LyricTool::Internal {
2044

21-
// static WizardManager *imgr = nullptr;
45+
static LanguageManager *langMgr = nullptr;
2246

2347
LyricToolPlugin::LyricToolPlugin() {
2448
}
@@ -31,27 +55,42 @@ namespace LyricTool::Internal {
3155
qIDec->addTranslationPath(pluginSpec()->location() + QStringLiteral("/translations"));
3256
qIDec->addThemePath(pluginSpec()->location() + QStringLiteral("/themes"));
3357

34-
auto splash = Core::InitRoutine::splash();
58+
const auto splash = Core::InitRoutine::splash();
3559
splash->showMessage(tr("Initializing lyric manager..."));
3660

37-
// Init WizardManager instance
38-
// imgr = new WizardManager(this);
61+
// Init LanguageManager instance
62+
langMgr = new LanguageManager(this);
3963

40-
auto icore = Core::ICore::instance();
64+
const auto icore = Core::ICore::instance();
4165

4266
// Add basic actions
43-
auto domain = icore->actionManager()->domain();
67+
const auto domain = icore->actionManager()->domain();
4468
domain->addExtension(getMyActionExtension());
4569

4670
// Add basic windows and add-ons
4771
// Core::IHomeWindowRegistry::instance()->attach<HomeAddOn>();
4872
// Core::IProjectWindowRegistry::instance()->attach<ProjectAddOn>();
4973

5074
// // Add wizards
51-
// imgr->addWizard(new MidiWizard());
52-
// imgr->addWizard(new UstWizard());
53-
// imgr->addWizard(new OpenSvipWizard());
54-
// imgr->addWizard(new SvipWizard());
75+
langMgr->addLanguage(new MandarinAnalyzer());
76+
langMgr->addLanguage(new CantoneseAnalyzer);
77+
langMgr->addLanguage(new EnglishAnalyzer());
78+
langMgr->addLanguage(new PinyinAnalyzer());
79+
langMgr->addLanguage(new RomajiAnalyzer());
80+
langMgr->addLanguage(new KanaAnalyzer());
81+
82+
langMgr->addLanguage(new NumberAnalyzer());
83+
langMgr->addLanguage(new LinebreakAnalyzer());
84+
langMgr->addLanguage(new PunctuationAnalyzer());
85+
langMgr->addLanguage(new SlurAnalyzer());
86+
langMgr->addLanguage(new SpaceAnalyzer());
87+
langMgr->addLanguage(new UnknownAnalyzer());
88+
89+
langMgr->addG2p(new MandarinConverter());
90+
langMgr->addG2p(new CantoneseConverter());
91+
langMgr->addG2p(new EnglishConverter());
92+
langMgr->addG2p(new KanaConverter());
93+
langMgr->addG2p(new UnknownConverter());
5594

5695
return true;
5796
}

0 commit comments

Comments
 (0)