File indexing completed on 2024-04-21 05:48:33

0001 /*
0002     SPDX-FileCopyrightText: 2016 ROSA, 2022 Jonathan Esk-Riddell <jr@jriddell.org>
0003 
0004     SPDX-License-Identifier: GPL-3.0-or-later
0005 */
0006 
0007 #include "mainapplication.h"
0008 
0009 #include <QStandardPaths>
0010 #include <QIcon>
0011 #include <QUrl>
0012 #include <KAboutData>
0013 #include <KLocalizedString>
0014 
0015 #include "common.h"
0016 #include "isoimagewriter_version.h"
0017 
0018 // in one source file
0019 Q_LOGGING_CATEGORY(IMAGEWRITER, "org.kde.isoimagewriter");
0020 
0021 MainApplication::MainApplication(int& argc, char** argv) :
0022     QApplication(argc, argv)
0023 {
0024     setWindowIcon(QIcon::fromTheme("org.kde.isoimagewriter"));
0025     KLocalizedString::setApplicationDomain("isoimagewriter");
0026     KAboutData aboutData( QStringLiteral("isoimagewriter"),
0027                           i18n("ISO Image Writer"),
0028                           QStringLiteral(ISOIMAGEWRITER_VERSION_STRING),
0029                           i18n("Write an ISO Image to a USB Disk"),
0030                           KAboutLicense::GPL,
0031                           i18n("Copyright (c) 2016 ROSA, Copyright (c) 2022 Jonathan Esk-Riddell <jr@jriddell.org>"));
0032 
0033     aboutData.addAuthor(i18n("Konstantin Vlasov"), i18n("Author"), QStringLiteral("konstantin.vlasov@rosalab.ru"));
0034     aboutData.addAuthor(i18n("Jonathan Riddell"), i18n("Author"), QStringLiteral("jr@jriddell.org"));
0035     m_Options.addVersionOption();
0036     m_Options.addOption(QCommandLineOption("lang", "", "language"));
0037     m_Options.addOption(QCommandLineOption("dir", "", "path"));
0038     m_Options.addPositionalArgument("[File]", i18n("ISO file to open"));
0039     aboutData.setupCommandLine(&m_Options);
0040     m_Options.process(arguments());
0041     aboutData.processCommandLine(&m_Options);
0042     KAboutData::setApplicationData(aboutData);
0043 
0044     QLoggingCategory::setFilterRules(QStringLiteral("org.kde.isoimagewriter = true"));
0045 }
0046 
0047 // Returns the language id to be used by the application (specified by --lang, or system locale otherwise)
0048 QString MainApplication::getLocale()
0049 {
0050     return (m_Options.isSet("lang") ? m_Options.value("lang") : QLocale::system().name());
0051 }
0052 
0053 // Returns the start-up directory that will be shown by default in the Open File dialog
0054 QString MainApplication::getInitialDir()
0055 {
0056     // TODO: Check for elevation
0057     // win:restricted
0058     // win:admin
0059     // mac:restricted
0060     // linux:restricted
0061     // linux:root
0062     // linux: translated dir names
0063     // win: redefined paths
0064     if (m_Options.isSet("dir"))
0065         return m_Options.value("dir");
0066 
0067     // Otherwise get the standard system Downloads location
0068     QStringList downloadDirs = QStandardPaths::standardLocations(QStandardPaths::DownloadLocation);
0069     if (downloadDirs.size() > 0)
0070         return downloadDirs.at(0);
0071     else
0072         return "";
0073 }
0074 
0075 // Returns the fila path passed to the application as command-line parameter
0076 QUrl MainApplication::getInitialImage()
0077 {
0078     const QStringList args = m_Options.positionalArguments();
0079     if (!args.isEmpty())
0080         return QUrl::fromUserInput(args.first(), QString(), QUrl::AssumeLocalFile);
0081     else
0082         return {};
0083 }