--- /dev/null
+import QtQuick 2.0
+import Sailfish.Silica 1.0
+
+// This component displays a notification panel at top of page
+Item {
+ anchors.fill: parent
+
+ // reference to page to prevent back navigation (required)
+ property Item page
+
+ // open status of the panel
+ property alias open: dockedPanel.open
+
+ // shows the panel
+ function showText(header, txt) {
+ headerLabel.text = header;
+ textLabel.text = txt;
+ dockedPanel.show();
+ }
+
+ // shows the panel, maximum 5 secs
+ function showTextWithTimer(header, txt) {
+ headerLabel.text = header;
+ textLabel.text = txt;
+ dockedPanel.show();
+ timer.start();
+ }
+
+ // hides the panel
+ function hide() {
+ timer.stop()
+ dockedPanel.hide();
+ }
+
+
+ //// internal
+
+ InteractionBlocker {
+ anchors.fill: parent
+ visible: dockedPanel.open
+ onClicked: {
+ dockedPanel.hide();
+ timer.stop();
+ }
+ }
+
+ DockedPanel {
+ id: dockedPanel
+
+ width: parent.width
+ height: Theme.itemSizeExtraLarge + Theme.paddingLarge
+
+ dock: Dock.Top
+ open: false
+ onOpenChanged: page.backNavigation = !open; // disable back navigation
+
+ Rectangle {
+ anchors.fill: parent
+ color: "black"
+ opacity: 0.7
+ }
+ MouseArea {
+ anchors.fill: parent
+ enabled: true
+ onClicked: {
+ dockedPanel.hide();
+ timer.stop();
+ }
+ }
+ Label {
+ id: headerLabel
+ visible: dockedPanel.open
+ anchors.left: parent.left
+ anchors.right: parent.right
+ anchors.top: parent.top
+ anchors.leftMargin: Theme.paddingLarge
+ anchors.rightMargin: Theme.paddingLarge
+ anchors.topMargin: 40
+ horizontalAlignment: Text.AlignHCenter
+ text: ""
+ wrapMode: Text.Wrap
+ color: Theme.primaryColor
+ }
+ Label {
+ id: textLabel
+ visible: dockedPanel.open
+ anchors.left: parent.left
+ anchors.right: parent.right
+ anchors.top: headerLabel.bottom
+ anchors.leftMargin: Theme.paddingLarge
+ anchors.rightMargin: Theme.paddingLarge
+ horizontalAlignment: Text.AlignHCenter
+ text: ""
+ wrapMode: Text.Wrap
+ font.pixelSize: Theme.fontSizeTiny
+ color: Theme.primaryColor
+ }
+ }
+
+ // timer to auto-hide panel
+ Timer {
+ id: timer
+ interval: 5000
+ onTriggered: {
+ dockedPanel.hide();
+ stop();
+ }
+ }
+}