diff --git a/settings.cpp b/settings.cpp index 95f2baf..2545733 100644 --- a/settings.cpp +++ b/settings.cpp @@ -21,7 +21,9 @@ along with QMediathekView. If not, see . #include "settings.h" +#include #include +#include namespace QMediathekView { @@ -73,14 +75,36 @@ const auto partialListUrl = QStringLiteral("http://zdfmediathk.sourceforge.net/d constexpr auto mirrorListUpdateAfterDays = 3; constexpr auto databaseUpdateAfterHours = 3; -const auto playCommand = QStringLiteral("vlc %1"); - -const auto downloadFolder = QDir::homePath(); - constexpr auto preferredUrl = Url::Default; } // Defaults +QString defaultPlayCommand() +{ + QString command("vlc"); + + QProcess shell; + shell.start("sh", QStringList() << "-c" << "grep '^Exec=' /usr/share/applications/`xdg-mime query default video/mp4` | cut -d'=' -f2 | cut -d' ' -f1", QIODevice::ReadOnly); + shell.waitForFinished(); + + if (shell.exitStatus() == QProcess::NormalExit) + { + const auto greppedCommand = QString::fromLocal8Bit(shell.readAll()).trimmed(); + + if (!greppedCommand.isEmpty()) + { + command = greppedCommand; + } + } + + return command.append(" %1"); +} + +QString defaultDownloadFolder() +{ + return QStandardPaths::writableLocation(QStandardPaths::DownloadLocation); +} + } // anonymous Settings::Settings(QObject* parent) : QObject(parent), @@ -177,7 +201,7 @@ void Settings::resetDatabaseUpdatedOn() QString Settings::playCommand() const { - return m_settings->value(Keys::playCommand, Defaults::playCommand).toString(); + return m_settings->value(Keys::playCommand, defaultPlayCommand()).toString(); } void Settings::setPlayCommand(const QString& command) @@ -197,7 +221,7 @@ void Settings::setDownloadCommand(const QString& command) QDir Settings::downloadFolder() const { - return QDir(m_settings->value(Keys::downloadFolder, Defaults::downloadFolder).toString()); + return QDir(m_settings->value(Keys::downloadFolder, defaultDownloadFolder()).toString()); } void Settings::setDownloadFolder(const QDir& folder)