From ea1fee2f5f842a293458a66638c15ff79e1d101d Mon Sep 17 00:00:00 2001 From: xiphon Date: Mon, 30 Nov 2020 15:22:31 +0000 Subject: main: Linux - ask to create desktop entry on the first start --- src/qt/utils.cpp | 48 +++++++++++++++++++++++++++++++----------------- 1 file changed, 31 insertions(+), 17 deletions(-) (limited to 'src/qt/utils.cpp') diff --git a/src/qt/utils.cpp b/src/qt/utils.cpp index 5d329f97..b7d649f4 100644 --- a/src/qt/utils.cpp +++ b/src/qt/utils.cpp @@ -27,7 +27,8 @@ // THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include -#include +#include +#include #include #include "TailsOS.h" @@ -88,7 +89,18 @@ QString getAccountName(){ } #ifdef Q_OS_LINUX -QString xdgMime(QApplication &app){ +bool askInstallDesktopEntry() +{ + QMessageBox msgBox( + QMessageBox::Question, + QObject::tr("Monero GUI"), + QObject::tr("Would you like to register Monero GUI Desktop entry?"), + QMessageBox::Yes | QMessageBox::No); + msgBox.setDefaultButton(QMessageBox::Yes); + return msgBox.exec() == QMessageBox::Yes; +} + +QString xdgMime(){ return QString( "[Desktop Entry]\n" "Name=Monero GUI\n" @@ -105,32 +117,34 @@ QString xdgMime(QApplication &app){ "StartupNotify=true\n" "X-GNOME-Bugzilla-Bugzilla=GNOME\n" "X-GNOME-UsesNotifications=true\n" - ).arg(app.applicationFilePath()); + ).arg(QCoreApplication::applicationFilePath()); } -void registerXdgMime(QApplication &app){ +void registerXdgMime(){ // Register desktop entry // - MacOS handled via Info.plist // - Windows handled in the installer by rbrunner7 // - Linux written to `QStandardPaths::ApplicationsLocation` // - Tails written to persistent dotfiles - QString mime = xdgMime(app); + QString mime = xdgMime(); QString appPath = QStandardPaths::writableLocation(QStandardPaths::ApplicationsLocation); QString filePath = QString("%1/monero-gui.desktop").arg(appPath); - if (TailsOS::detect() && TailsOS::detectDotPersistence() && TailsOS::usePersistence) { - TailsOS::persistXdgMime(filePath, mime); - return; + if (TailsOS::detect()) + { + if (TailsOS::detectDotPersistence() && TailsOS::usePersistence) + { + TailsOS::persistXdgMime(filePath, mime); + } + } + else + { + if (askInstallDesktopEntry()) + { + QDir().mkpath(QFileInfo(filePath).path()); + fileWrite(filePath, mime); + } } - - QFileInfo file(filePath); - QDir().mkpath(file.path()); // ensure directory exists - -#ifdef QT_DEBUG - qDebug() << "Writing xdg mime: " << filePath; -#endif - - fileWrite(filePath, mime); } #endif -- cgit v1.2.3