[PATCH] Allow the program to explicitly hide a notification
Dirk Hohndel
dirk at hohndel.org
Thu Mar 3 14:19:19 UTC 2016
On Thu, Mar 03, 2016 at 11:51:53AM +0100, Marco Martin wrote:
> On Wednesday 02 March 2016 14:50:52 Dirk Hohndel wrote:
> > If I want to use a PassiveNotification to give some information to the
> > user that either hides after a while or gets removed when it's no longer
> > valid (i.e.: accessing some web service), then I need a way to explicitly
> > hide the notification
>
> since PassiveNotification is private, how do you access it? an hideNotification
> wrapper in ApplicationWindow is needed as well i think?
>
> that gives me another question: right now this passivenotification is intended
> to be really simple, so there is one and only one (calling showNotification
> with a notification already showing will just discard the old one)
> a more complex system system could be done , stacking them and whatnot, but
> i'm very hesitand on that as i don't want another full notification system (for
> which there is the system-wide one)
AH, right, I forgot to post about that problem.
So for me the magic notification attached to the action button didn't seem
to work - or more precisely, I couldn't figure out how to access it from a
page that didn't have it's own action button. So I simply instantiated the
private component myself like this:
Component.onCompleted: {
notificationComponent = Qt.createComponent("PassiveNotification.qml");
if( notificationComponent.status != Component.Ready ) {
print("notificationComponent isn't ready with status " + notificationComponent.status)
if( notificationComponent.status == Component.Error )
print("Error:"+ notificationComponent.errorString() );
}
}
Now I can create a passive notification like this
property QtObject notificationComponent
var notification = notificationComponent.createObject(contentItem.parent);
notification.showNotification("Dive deleted", 3000, "Undo",
function() {
manager.undoDelete(deletedId)
});
(that's a more typical notification with an action that just disappears after a few seconds)
Or I can do a notification as discussed above that I can turn off when the
status I want to notify about ends
property alias sharedNotificationComponent: detailsWindow.notificationComponent // this uses the notificationComponent above
property alias accessingCloud: manager.accessingCloud // that's the status set in the logic C++ core of my app
property QtObject notification: null
onAccessingCloudChanged: {
if (accessingCloud) {
notification = sharedNotificationComponent.createObject(rootItem);
notification.showNotification("Accessing Subsurface Cloud Storage", 5000);
} else {
if (notification) {
notification.hideNotification();
}
}
sharedNotificationComponent.show
}
This seems to mostly do what I want (except in one scenario where my UI
appears to hang and I haven't figured out why, yet.
So I guess that isn't how you envisioned this being used - I'm open to better
implementation, but the underlying desire to be able to actively hide the
notification when the need to show it ends is still valid.
/D
More information about the Plasma-devel
mailing list