diff options
Diffstat (limited to 'src/main.cpp')
-rw-r--r-- | src/main.cpp | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/src/main.cpp b/src/main.cpp new file mode 100644 index 0000000..569c31a --- /dev/null +++ b/src/main.cpp @@ -0,0 +1,102 @@ +#include <stdlib.h> +#include <iostream> + +#include "main.h" +#include "version.h" +#include "strings.h" +#include "main-view/AppModel.h" +#include "main-view/MainWindow.h" + +int main(int argc, char *argv[]) +{ + setlocale(LC_ALL, "en_US.UTF-8"); + QApplication app(argc, argv); + initSettings(); + setTranslations(); + + QString dictFilePath = ""; + BuildStr = Strings::tr(Strings::s_build) + ": " + BUILD_REVISION; + + if(processParams(dictFilePath)) + return 0; + + Q_INIT_RESOURCE(application); + AppModel model; + MainWindow mainWin(&model); + mainWin.show(); + if(!dictFilePath.isEmpty()) + mainWin.openFile(dictFilePath); + return app.exec(); +} + +void initSettings() +{ + QSettings::setDefaultFormat(QSettings::IniFormat); + QCoreApplication::setOrganizationName("freshmemory"); + QCoreApplication::setApplicationName("freshmemory"); +} + +void setTranslations() +{ + QString locale = QSettings().value("lang").toString(); + if(locale.isEmpty()) + locale = QLocale::system().name(); + installTranslator("qt_" + locale, QLibraryInfo::location(QLibraryInfo::TranslationsPath)); + installTranslator("freshmemory_" + locale, getResourcePath() + "/tr"); +} + +void installTranslator(const QString& fileName, const QString& path) +{ + QTranslator* translator = new QTranslator; + translator->load(fileName, path); + qApp->installTranslator(translator); +} + +QString getResourcePath() +{ +#if defined(Q_OS_LINUX) || defined(Q_OS_MAC) + return "/usr/share/freshmemory"; +#else + return QCoreApplication::applicationDirPath(); +#endif +} + +bool processParams(QString& dictFilePath) +{ + QStringList argList = QCoreApplication::arguments(); + QListIterator<QString> argIter = argList; + argIter.next(); // The first argument is the program calling full name + while( argIter.hasNext() ) + { + QString argStr = argIter.next(); + if( argStr == "--version" || argStr == "-v" ) + { + QString formattedBuildStr; + if( !BuildStr.isEmpty() ) + formattedBuildStr = BuildStr + "\n"; + + std::cout << (Strings::tr(Strings::s_appTitle) + " " + FM_VERSION + "\n" + + formattedBuildStr + + Strings::tr(Strings::s_author) + "\n" + + MainWindow::tr("Website:") + " http://fresh-memory.com\n").toStdString(); + return true; + } + else if( argStr == "--help" || argStr == "-h" ) + { + std::cout << + (MainWindow::tr("Usage:") + " freshmemory [OPTIONS] [FILE]\n" + + MainWindow::tr("FILE is a dictionary filename to load.") +"\n\n" + + MainWindow::tr("Options:") + "\n" + + "\t-h, --help\t" + MainWindow::tr("Display this help and exit") + "\n" + + "\t-v, --version\t" + MainWindow::tr("Output version information and exit") + "\n") + .toStdString(); + return true; + } + else if( !argIter.hasNext() ) // the last argument + { + dictFilePath = argStr; + return false; + } + } + return false; +} |