File indexing completed on 2024-04-28 04:48:38

0001 /*
0002     SPDX-FileCopyrightText: 2011 Geoffry Song <goffrie@gmail.com>
0003     SPDX-FileCopyrightText: 2014 Lukáš Tinkl <lukas@kde.org>
0004 
0005     SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0006 */
0007 
0008 #include "playerApplication.h"
0009 #include "mainWindow.h"
0010 
0011 #include <KX11Extras>
0012 
0013 namespace Dragon
0014 {
0015 
0016 PlayerApplication::PlayerApplication(int &argc, char **argv)
0017     : QApplication(argc, argv)
0018     , m_mainWindow(nullptr)
0019 {
0020 }
0021 
0022 PlayerApplication::~PlayerApplication()
0023 {
0024     if (m_mainWindow) {
0025         m_mainWindow = nullptr;
0026         delete m_mainWindow;
0027     }
0028 }
0029 
0030 void PlayerApplication::slotActivateRequested(const QStringList &arguments, const QString &workingDirectory)
0031 {
0032     qDebug() << Q_FUNC_INFO << arguments;
0033     if (!arguments.filter(QStringLiteral("play-dvd"), Qt::CaseInsensitive).isEmpty()) {
0034         newInstance(true);
0035         forceActiveWindow();
0036     } else if (arguments.count() == 2) { // 1st arg binary name, 2nd arg file to open
0037         QUrl url = QUrl::fromUserInput(arguments.at(1), workingDirectory, QUrl::AssumeLocalFile);
0038         newInstance(false, {url});
0039         forceActiveWindow();
0040     }
0041 }
0042 
0043 void PlayerApplication::slotOpenRequested(const QList<QUrl> &uris)
0044 {
0045     qDebug() << Q_FUNC_INFO << uris;
0046     newInstance(false, uris);
0047     forceActiveWindow();
0048 }
0049 
0050 void PlayerApplication::forceActiveWindow()
0051 {
0052     KX11Extras::forceActiveWindow(Dragon::mainWindow()->winId());
0053 }
0054 
0055 void PlayerApplication::newInstance(bool playDisc, const QList<QUrl> &uris)
0056 {
0057     if (!m_mainWindow)
0058         m_mainWindow = new Dragon::MainWindow;
0059 
0060     if (isSessionRestored())
0061         m_mainWindow->restore(1, false);
0062     else if (playDisc)
0063         m_mainWindow->playDisc();
0064     else if (!uris.isEmpty()) {
0065         m_mainWindow->open(uris.first());
0066         m_mainWindow->adjustSize();
0067     }
0068 
0069     m_mainWindow->show();
0070 }
0071 
0072 } // namespace Dragon
0073 
0074 #include "moc_playerApplication.cpp"