File indexing completed on 2025-02-09 07:08:06
0001 /* 0002 * SPDX-FileCopyrightText: 2020 Jonah Brüchert <jbb@kaidan.im> 0003 * SPDX-FileCopyrightText: 2022 Devin Lin <devin@kde.org> 0004 * 0005 * SPDX-License-Identifier: GPL-3.0-or-later 0006 */ 0007 0008 #include <QApplication> 0009 #include <QGuiApplication> 0010 #include <QIcon> 0011 #include <QQmlApplicationEngine> 0012 #include <QUrl> 0013 #include <QCommandLineParser> 0014 #include <QQuickStyle> 0015 #include <QtQml> 0016 0017 #include <KAboutData> 0018 #include <KLocalizedContext> 0019 #include <KLocalizedString> 0020 0021 #include "about.h" 0022 #include "audioplayer.h" 0023 #include "audioprober.h" 0024 #include "audiorecorder.h" 0025 #include "recording.h" 0026 #include "recordingmodel.h" 0027 #include "settingsmodel.h" 0028 #include "utils.h" 0029 #include "version.h" 0030 0031 Q_DECL_EXPORT int main(int argc, char *argv[]) 0032 { 0033 // set default style 0034 if (qEnvironmentVariableIsEmpty("QT_QUICK_CONTROLS_STYLE")) { 0035 QQuickStyle::setStyle(QStringLiteral("org.kde.desktop")); 0036 } 0037 // if using org.kde.desktop, ensure we use kde style if possible 0038 if (qEnvironmentVariableIsEmpty("QT_QPA_PLATFORMTHEME")) { 0039 qputenv("QT_QPA_PLATFORMTHEME", "kde"); 0040 } 0041 0042 QApplication app(argc, argv); 0043 0044 KLocalizedString::setApplicationDomain("krecorder"); 0045 0046 KAboutData aboutData(QStringLiteral("krecorder"), 0047 QStringLiteral("Recorder"), 0048 QStringLiteral(KRECORDER_VERSION_STRING), 0049 QStringLiteral("Audio recorder"), 0050 KAboutLicense::GPL, 0051 i18n("© 2020-2024 KDE Community")); 0052 aboutData.addAuthor(i18n("Devin Lin"), QString(), QStringLiteral("devin@kde.org")); 0053 aboutData.addAuthor(i18n("Jonah Brüchert"), QString(), QStringLiteral("jbb@kaidan.im")); 0054 KAboutData::setApplicationData(aboutData); 0055 0056 QCommandLineParser parser; 0057 parser.addVersionOption(); 0058 parser.process(app); 0059 0060 qmlRegisterType<Recording>("KRecorder", 1, 0, "Recording"); 0061 qmlRegisterType<AudioProber>("KRecorder", 1, 0, "AudioProber"); 0062 qmlRegisterSingletonType<Utils>("KRecorder", 1, 0, "Utils", [] (QQmlEngine *, QJSEngine *) -> QObject* { 0063 return new Utils; 0064 }); 0065 0066 // pre-initialize settings model to apply settings to the AudioRecorder instance 0067 SettingsModel::instance(); 0068 0069 qmlRegisterSingletonType<AudioPlayer>("KRecorder", 1, 0, "AudioPlayer", [] (QQmlEngine *, QJSEngine *) -> QObject* { 0070 return AudioPlayer::instance(); 0071 }); 0072 0073 qmlRegisterSingletonType<AudioRecorder>("KRecorder", 1, 0, "AudioRecorder", [] (QQmlEngine *, QJSEngine *) -> QObject* { 0074 return AudioRecorder::instance(); 0075 }); 0076 0077 qmlRegisterSingletonType<RecordingModel>("KRecorder", 1, 0, "RecordingModel", [] (QQmlEngine *, QJSEngine *) -> QObject* { 0078 return RecordingModel::instance(); 0079 }); 0080 0081 qmlRegisterSingletonType<SettingsModel>("KRecorder", 1, 0, "SettingsModel", [] (QQmlEngine *, QJSEngine *) -> QObject* { 0082 return SettingsModel::instance(); 0083 }); 0084 0085 qmlRegisterSingletonInstance("KRecorder", 1, 0, "AboutType", &AboutType::instance()); 0086 0087 QQmlApplicationEngine engine; 0088 0089 engine.rootContext()->setContextObject(new KLocalizedContext(&engine)); 0090 engine.load(QUrl(QStringLiteral("qrc:///main.qml"))); 0091 0092 if (engine.rootObjects().isEmpty()) { 0093 return -1; 0094 } 0095 0096 // required for X11 0097 app.setWindowIcon(QIcon::fromTheme(QStringLiteral("org.kde.krecorder"))); 0098 0099 return app.exec(); 0100 }