Skip to content

Commit b605577

Browse files
committed
fix
1 parent 84ac354 commit b605577

3 files changed

Lines changed: 36 additions & 23 deletions

File tree

src/core/configmgr.cpp

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -143,10 +143,6 @@ void ConfigMgr::locateConfigFolder()
143143
qInfo() << "user config folder" << m_userConfigFolderPath;
144144
}
145145

146-
static QString locateExtraRcc() {
147-
return QStandardPaths::locate(QStandardPaths::AppDataLocation, "vnote_extra.rcc");
148-
}
149-
150146
bool ConfigMgr::checkAppConfig()
151147
{
152148
bool needUpdate = false;
@@ -195,7 +191,7 @@ bool ConfigMgr::checkAppConfig()
195191

196192
// Load extra data.
197193
splash->showMessage("Loading extra resource data");
198-
const QString extraRcc(locateExtraRcc());
194+
const QString extraRcc("app:vnote_extra.rcc");
199195
bool ret = QResource::registerResource(extraRcc);
200196
if (!ret) {
201197
Exception::throwOne(Exception::Type::FailToReadFile,
@@ -574,6 +570,26 @@ QString ConfigMgr::getApplicationVersion()
574570
return appVersion;
575571
}
576572

573+
void ConfigMgr::initAppPrefixPath()
574+
{
575+
// Support QFile("app:abc.txt").
576+
QStringList potential_dirs;
577+
auto app_dir_path = QCoreApplication::applicationDirPath();
578+
qInfo() << "executable dir: " << app_dir_path;
579+
potential_dirs << app_dir_path;
580+
581+
#if defined(Q_OS_LINUX)
582+
QDir localBinDir(app_dir_path);
583+
if (localBinDir.exists("../local/bin/vnote")) {
584+
auto app_dir_path2 = localBinDir.cleanPath(localBinDir.filePath("../local/bin"));
585+
qInfo() << "executable dir: " << app_dir_path2;
586+
potential_dirs << app_dir_path2;
587+
}
588+
#endif
589+
590+
QDir::setSearchPaths("app", potential_dirs);
591+
}
592+
577593
QJsonValue ConfigMgr::parseAndReadConfig(const QString &p_exp) const
578594
{
579595
if (p_exp.startsWith(QStringLiteral("main."))) {

src/core/configmgr.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,8 @@ namespace vnotex
120120

121121
static QString getApplicationVersion();
122122

123+
static void initAppPrefixPath();
124+
123125
static void initForUnitTest();
124126

125127
static const QString c_orgName;

src/main.cpp

Lines changed: 13 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,8 @@ int main(int argc, char *argv[])
8181

8282
Application app(argc, argv);
8383

84+
ConfigMgr::initAppPrefixPath();
85+
8486
QAccessible::installFactory(&FakeAccessible::accessibleFactory);
8587

8688
{
@@ -208,54 +210,47 @@ void loadTranslators(QApplication &p_app)
208210
QLocale locale;
209211
qInfo() << "locale:" << locale.name();
210212

211-
QString translationsDir;
212-
auto possible_dirs = QStandardPaths::locateAll(QStandardPaths::AppDataLocation,
213-
"translations", QStandardPaths::LocateDirectory);
214-
for (const auto& dir_path : possible_dirs) {
215-
if (QDir(dir_path).exists("vnote_zh_CN.qm")) {
216-
translationsDir = dir_path;
217-
break;
218-
}
219-
}
220-
221-
if (translationsDir.isEmpty()) {
213+
const auto translationsPath = QDir("app:translations").absolutePath();
214+
qInfo() << "translations dir: " << translationsPath;
215+
if (translationsPath.isEmpty()) {
222216
qWarning() << "failed to locate translations directory";
217+
return;
223218
}
224219

225220
// For QTextEdit/QTextBrowser and other basic widgets.
226221
QScopedPointer<QTranslator> qtbaseTranslator(new QTranslator(&p_app));
227-
if (qtbaseTranslator->load(locale, "qtbase", "_", translationsDir)) {
222+
if (qtbaseTranslator->load(locale, "qtbase", "_", translationsPath)) {
228223
p_app.installTranslator(qtbaseTranslator.take());
229224
}
230225

231226
// qt_zh_CN.ts does not cover the real QDialogButtonBox which uses QPlatformTheme.
232227
QScopedPointer<QTranslator> dialogButtonBoxTranslator(new QTranslator(&p_app));
233-
if (dialogButtonBoxTranslator->load(locale, "qdialogbuttonbox", "_", translationsDir)) {
228+
if (dialogButtonBoxTranslator->load(locale, "qdialogbuttonbox", "_", translationsPath)) {
234229
p_app.installTranslator(dialogButtonBoxTranslator.take());
235230
}
236231

237232
QScopedPointer<QTranslator> webengineTranslator(new QTranslator(&p_app));
238-
if (webengineTranslator->load(locale, "qwebengine", "_", translationsDir)) {
233+
if (webengineTranslator->load(locale, "qwebengine", "_", translationsPath)) {
239234
p_app.installTranslator(webengineTranslator.take());
240235
}
241236

242237
QScopedPointer<QTranslator> qtTranslator(new QTranslator(&p_app));
243-
if (qtTranslator->load(locale, "qtv", "_", translationsDir)) {
238+
if (qtTranslator->load(locale, "qtv", "_", translationsPath)) {
244239
p_app.installTranslator(qtTranslator.take());
245240
}
246241

247242
QScopedPointer<QTranslator> qtEnvTranslator(new QTranslator(&p_app));
248-
if (qtEnvTranslator->load(locale, "qt", "_", translationsDir)) {
243+
if (qtEnvTranslator->load(locale, "qt", "_", translationsPath)) {
249244
p_app.installTranslator(qtEnvTranslator.take());
250245
}
251246

252247
QScopedPointer<QTranslator> vnoteTranslator(new QTranslator(&p_app));
253-
if (vnoteTranslator->load(locale, "vnote", "_", translationsDir)) {
248+
if (vnoteTranslator->load(locale, "vnote", "_", translationsPath)) {
254249
p_app.installTranslator(vnoteTranslator.take());
255250
}
256251

257252
QScopedPointer<QTranslator> vtexteditTranslator(new QTranslator(&p_app));
258-
if (vtexteditTranslator->load(locale, "vtextedit", "_", translationsDir)) {
253+
if (vtexteditTranslator->load(locale, "vtextedit", "_", translationsPath)) {
259254
p_app.installTranslator(vtexteditTranslator.take());
260255
}
261256
}

0 commit comments

Comments
 (0)