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 }