Skip to content

Commit 9664103

Browse files
authoredAug 8, 2018
[FEATURE] Add linux native progress report API (#7549)
Works on: - Unity - Gnome-Shell (dash to dock extension) - KDA Plasma
1 parent 56e605b commit 9664103

File tree

2 files changed

+57
-0
lines changed

2 files changed

+57
-0
lines changed
 

‎src/native/linux/qgslinuxnative.cpp

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
#include "qgslinuxnative.h"
1919

20+
#include <QCoreApplication>
2021
#include <QUrl>
2122
#include <QString>
2223
#include <QtDBus/QtDBus>
@@ -28,6 +29,12 @@ QgsNative::Capabilities QgsLinuxNative::capabilities() const
2829
return NativeDesktopNotifications;
2930
}
3031

32+
void QgsLinuxNative::initializeMainWindow( QWindow * )
33+
{
34+
// Hardcoded desktop file value matching our official .deb packages
35+
mDesktopFile = QStringLiteral( "qgis.desktop" );
36+
}
37+
3138
void QgsLinuxNative::openFileExplorerAndSelectFile( const QString &path )
3239
{
3340
if ( !QDBusConnection::sessionBus().isConnected() )
@@ -48,6 +55,50 @@ void QgsLinuxNative::openFileExplorerAndSelectFile( const QString &path )
4855
}
4956
}
5057

58+
void QgsLinuxNative::showUndefinedApplicationProgress()
59+
{
60+
const QVariantMap properties
61+
{
62+
{ QStringLiteral( "progress-visible" ), true },
63+
{ QStringLiteral( "progress" ), 0.0 }
64+
};
65+
66+
QDBusMessage message = QDBusMessage::createSignal( QStringLiteral( "/org/qgis/UnityLauncher" ),
67+
QStringLiteral( "com.canonical.Unity.LauncherEntry" ),
68+
QStringLiteral( "Update" ) );
69+
message.setArguments( {mDesktopFile, properties} );
70+
QDBusConnection::sessionBus().send( message );
71+
}
72+
73+
void QgsLinuxNative::setApplicationProgress( double progress )
74+
{
75+
const QVariantMap properties
76+
{
77+
{ QStringLiteral( "progress-visible" ), true },
78+
{ QStringLiteral( "progress" ), progress / 100.0 }
79+
};
80+
81+
QDBusMessage message = QDBusMessage::createSignal( QStringLiteral( "/org/qgis/UnityLauncher" ),
82+
QStringLiteral( "com.canonical.Unity.LauncherEntry" ),
83+
QStringLiteral( "Update" ) );
84+
message.setArguments( {mDesktopFile, properties} );
85+
QDBusConnection::sessionBus().send( message );
86+
}
87+
88+
void QgsLinuxNative::hideApplicationProgress()
89+
{
90+
const QVariantMap properties
91+
{
92+
{ QStringLiteral( "progress-visible" ), false },
93+
};
94+
95+
QDBusMessage message = QDBusMessage::createSignal( QStringLiteral( "/org/qgis/UnityLauncher" ),
96+
QStringLiteral( "com.canonical.Unity.LauncherEntry" ),
97+
QStringLiteral( "Update" ) );
98+
message.setArguments( {mDesktopFile, properties} );
99+
QDBusConnection::sessionBus().send( message );
100+
}
101+
51102
/**
52103
* Automatic marshaling of a QImage for org.freedesktop.Notifications.Notify
53104
*

‎src/native/linux/qgslinuxnative.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,14 @@ class NATIVE_EXPORT QgsLinuxNative : public QgsNative
3434
{
3535
public:
3636
QgsNative::Capabilities capabilities() const override;
37+
void initializeMainWindow( QWindow *window ) override;
3738
void openFileExplorerAndSelectFile( const QString &path ) override;
39+
void showUndefinedApplicationProgress() override;
40+
void setApplicationProgress( double progress ) override;
41+
void hideApplicationProgress() override;
3842
NotificationResult showDesktopNotification( const QString &summary, const QString &body, const NotificationSettings &settings = NotificationSettings() ) override;
43+
private:
44+
QString mDesktopFile;
3945
};
4046

4147
#endif // QGSLINUXNATIVE_H

1 commit comments

Comments
 (1)

nirvn commented on Aug 8, 2018

@nirvn
ContributorAuthor

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

Please sign in to comment.