/** * \file mainqt.cpp * Main program. * * \b Project: Kid3 * \author Urs Fleisch * \date 9 Jan 2003 * * Copyright (C) 2003-2018 Urs Fleisch * * This file is part of Kid3. * * Kid3 is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * Kid3 is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include #include #include #include #include #include #include #include "fileconfig.h" #include "loadtranslation.h" #include "kid3mainwindow.h" #include "platformtools.h" #include "kid3application.h" #include "kid3qtapplication.h" /** * Main program. * * @param argc number of arguments including command name * @param argv arguments, argv[0] is command name * * @return exit code of application. */ int main(int argc, char* argv[]) { Q_INIT_RESOURCE(kid3); #if QT_VERSION < 0x060000 // Enable support for high resolution "@2x" images QCoreApplication::setAttribute(Qt::AA_UseHighDpiPixmaps); #if QT_VERSION >= 0x050600 QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); #endif #endif Kid3QtApplication app(argc, argv); QCoreApplication::setApplicationName(QLatin1String("Kid3")); #ifdef Q_OS_MAC QDir dir(QApplication::applicationDirPath()); dir.cdUp(); dir.cd(QLatin1String("PlugIns")); QApplication::setLibraryPaths(QStringList(dir.absolutePath())); #endif QStringList args = QApplication::arguments(); if (args.size() > 1 && args.at(1) == QLatin1String("--portable")) { args.removeAt(1); qputenv("KID3_CONFIG_FILE", QCoreApplication::applicationDirPath().toLatin1() + "/kid3.ini"); } // The Language setting has to be read bypassing the regular // configuration object because the language must be set before // the application is created. QByteArray configPath = qgetenv("KID3_CONFIG_FILE"); auto configuredLanguage = configPath.isNull() ? QSettings(QSettings::UserScope, QLatin1String("Kid3"), QLatin1String("Kid3")) .value(QLatin1String("MainWindow/Language")).toString() : QSettings(QFile::decodeName(configPath), QSettings::IniFormat) .value(QLatin1String("MainWindow/Language")).toString(); Utils::loadTranslation(configuredLanguage); IPlatformTools* platformTools = new PlatformTools; auto kid3App = new Kid3Application(platformTools); #ifdef HAVE_QTDBUS kid3App->activateDbusInterface(); #endif auto kid3 = new Kid3MainWindow(platformTools, kid3App); kid3->setAttribute(Qt::WA_DeleteOnClose); QObject::connect(&app, &Kid3QtApplication::openFileRequested, kid3App, &Kid3Application::openDrop); kid3->show(); if (args.size() > 1) { kid3App->openDirectory(args.mid(1)); } else if ((FileConfig::instance().loadLastOpenedFile() || app.isSessionRestored()) && !FileConfig::instance().lastOpenedFile().isEmpty()) { kid3App->openDirectory(QStringList() << FileConfig::instance().lastOpenedFile()); } int rc = QApplication::exec(); delete kid3App; delete platformTools; return rc; }