Skip to content

Commit

Permalink
[FEATURE] Add linux native progress report API (#7549)
Browse files Browse the repository at this point in the history
Works on: 
- Unity
- Gnome-Shell (dash to dock extension)
- KDA Plasma
  • Loading branch information
nirvn committed Aug 8, 2018
1 parent 56e605b commit 9664103
Show file tree
Hide file tree
Showing 2 changed files with 57 additions and 0 deletions.
51 changes: 51 additions & 0 deletions src/native/linux/qgslinuxnative.cpp
Expand Up @@ -17,6 +17,7 @@

#include "qgslinuxnative.h"

#include <QCoreApplication>
#include <QUrl>
#include <QString>
#include <QtDBus/QtDBus>
Expand All @@ -28,6 +29,12 @@ QgsNative::Capabilities QgsLinuxNative::capabilities() const
return NativeDesktopNotifications;
}

void QgsLinuxNative::initializeMainWindow( QWindow * )
{
// Hardcoded desktop file value matching our official .deb packages
mDesktopFile = QStringLiteral( "qgis.desktop" );
}

void QgsLinuxNative::openFileExplorerAndSelectFile( const QString &path )
{
if ( !QDBusConnection::sessionBus().isConnected() )
Expand All @@ -48,6 +55,50 @@ void QgsLinuxNative::openFileExplorerAndSelectFile( const QString &path )
}
}

void QgsLinuxNative::showUndefinedApplicationProgress()
{
const QVariantMap properties
{
{ QStringLiteral( "progress-visible" ), true },
{ QStringLiteral( "progress" ), 0.0 }
};

QDBusMessage message = QDBusMessage::createSignal( QStringLiteral( "/org/qgis/UnityLauncher" ),
QStringLiteral( "com.canonical.Unity.LauncherEntry" ),
QStringLiteral( "Update" ) );
message.setArguments( {mDesktopFile, properties} );
QDBusConnection::sessionBus().send( message );
}

void QgsLinuxNative::setApplicationProgress( double progress )
{
const QVariantMap properties
{
{ QStringLiteral( "progress-visible" ), true },
{ QStringLiteral( "progress" ), progress / 100.0 }
};

QDBusMessage message = QDBusMessage::createSignal( QStringLiteral( "/org/qgis/UnityLauncher" ),
QStringLiteral( "com.canonical.Unity.LauncherEntry" ),
QStringLiteral( "Update" ) );
message.setArguments( {mDesktopFile, properties} );
QDBusConnection::sessionBus().send( message );
}

void QgsLinuxNative::hideApplicationProgress()
{
const QVariantMap properties
{
{ QStringLiteral( "progress-visible" ), false },
};

QDBusMessage message = QDBusMessage::createSignal( QStringLiteral( "/org/qgis/UnityLauncher" ),
QStringLiteral( "com.canonical.Unity.LauncherEntry" ),
QStringLiteral( "Update" ) );
message.setArguments( {mDesktopFile, properties} );
QDBusConnection::sessionBus().send( message );
}

/**
* Automatic marshaling of a QImage for org.freedesktop.Notifications.Notify
*
Expand Down
6 changes: 6 additions & 0 deletions src/native/linux/qgslinuxnative.h
Expand Up @@ -34,8 +34,14 @@ class NATIVE_EXPORT QgsLinuxNative : public QgsNative
{
public:
QgsNative::Capabilities capabilities() const override;
void initializeMainWindow( QWindow *window ) override;
void openFileExplorerAndSelectFile( const QString &path ) override;
void showUndefinedApplicationProgress() override;
void setApplicationProgress( double progress ) override;
void hideApplicationProgress() override;
NotificationResult showDesktopNotification( const QString &summary, const QString &body, const NotificationSettings &settings = NotificationSettings() ) override;
private:
QString mDesktopFile;
};

#endif // QGSLINUXNATIVE_H

1 comment on commit 9664103

@nirvn
Copy link
Contributor Author

@nirvn nirvn commented on 9664103 Aug 8, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Build broken due to qgsnative initializeMainWindow change in an earlier commit, fixing now.

Please sign in to comment.