Dateien, die als Parameter übergeben werden, werden nach dem Start direkt geladen
This commit is contained in:
106
barecode/main.cpp
Normal file
106
barecode/main.cpp
Normal file
@@ -0,0 +1,106 @@
|
||||
#include <QApplication>
|
||||
#include <QIcon>
|
||||
#include <QTranslator>
|
||||
#include <QLocale>
|
||||
#include <QLibraryInfo>
|
||||
#include <QSettings>
|
||||
#include <QDir>
|
||||
#include <QCoreApplication>
|
||||
#include "core/MainWindow.h"
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
QApplication app(argc, argv);
|
||||
|
||||
app.setApplicationName("BareCode");
|
||||
app.setApplicationVersion("1.2.0");
|
||||
app.setOrganizationName("BareCode");
|
||||
|
||||
// Icon
|
||||
QIcon appIcon;
|
||||
appIcon.addFile(":/icon_16.png", QSize(16, 16));
|
||||
appIcon.addFile(":/icon_32.png", QSize(32, 32));
|
||||
appIcon.addFile(":/icon_48.png", QSize(48, 48));
|
||||
appIcon.addFile(":/icon_64.png", QSize(64, 64));
|
||||
appIcon.addFile(":/icon_128.png", QSize(128, 128));
|
||||
appIcon.addFile(":/icon_256.png", QSize(256, 256));
|
||||
appIcon.addFile(":/icon_512.png", QSize(512, 512));
|
||||
app.setWindowIcon(appIcon);
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
// Übersetzung laden
|
||||
// .qm-Dateien liegen im Unterverzeichnis "translations" neben der Binary
|
||||
// oder unter /usr/share/BareCode/translations nach Installation
|
||||
// ---------------------------------------------------------------------------
|
||||
QSettings settings(QSettings::IniFormat, QSettings::UserScope,
|
||||
"BareCode", "BareCode");
|
||||
QString locale = settings.value("language/locale", QString()).toString();
|
||||
|
||||
if (locale.isEmpty())
|
||||
{
|
||||
locale = QLocale::system().name(); // z.B. "de_DE", "en_US"
|
||||
}
|
||||
|
||||
const QString shortLocale = locale.left(2); // "de", "en"
|
||||
|
||||
// Suchpfade für .qm-Dateien
|
||||
QStringList searchPaths;
|
||||
searchPaths << QCoreApplication::applicationDirPath() + "/translations"
|
||||
<< QDir::homePath() + "/.local/share/BareCode/translations"
|
||||
<< "/usr/share/BareCode/translations"
|
||||
<< "/usr/local/share/BareCode/translations";
|
||||
|
||||
// Qt-eigene Übersetzungen (Dialoge, Standard-Buttons)
|
||||
QTranslator qtTranslator;
|
||||
if (qtTranslator.load("qt_" + locale,
|
||||
QLibraryInfo::path(QLibraryInfo::TranslationsPath)))
|
||||
{
|
||||
app.installTranslator(&qtTranslator);
|
||||
}
|
||||
|
||||
// BareCode-Übersetzung — in allen Suchpfaden versuchen
|
||||
QTranslator appTranslator;
|
||||
bool loaded = false;
|
||||
|
||||
for (const QString &path : searchPaths)
|
||||
{
|
||||
if (appTranslator.load(QString("barecode_%1").arg(locale), path) ||
|
||||
appTranslator.load(QString("barecode_%1").arg(shortLocale), path))
|
||||
{
|
||||
app.installTranslator(&appTranslator);
|
||||
loaded = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Fallback: Englisch
|
||||
if (!loaded && shortLocale != "de")
|
||||
{
|
||||
for (const QString &path : searchPaths)
|
||||
{
|
||||
if (appTranslator.load("barecode_en", path))
|
||||
{
|
||||
app.installTranslator(&appTranslator);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
MainWindow window;
|
||||
window.show();
|
||||
|
||||
// Datei(en) öffnen, die beim Start per Kommandozeile übergeben wurden
|
||||
// (z. B. Doppelklick auf eine Datei im Dateibrowser → "Öffnen mit BareCode").
|
||||
// Das erste Argument ist der Programmname selbst und wird übersprungen.
|
||||
QStringList cliFiles = app.arguments();
|
||||
if (!cliFiles.isEmpty())
|
||||
{
|
||||
cliFiles.removeFirst();
|
||||
}
|
||||
if (!cliFiles.isEmpty())
|
||||
{
|
||||
window.openFilesFromArguments(cliFiles);
|
||||
}
|
||||
|
||||
return app.exec();
|
||||
}
|
||||
Reference in New Issue
Block a user