Added Popup Control
authorTomasz Olszak <olszak.tomasz@gmail.com>
Wed, 19 Jun 2013 17:56:50 +0000 (17:56 +0000)
committerJarosław Staniek <staniek@kde.org>
Wed, 19 Jun 2013 22:22:51 +0000 (00:22 +0200)
Change-Id: I6e00775ea87bf891ccf8f281407a126507ee21c4
Reviewed-by: Jarosław Staniek <staniek@kde.org>
examples/touch/content/CheckBoxPage.qml
src/controls/Popup.qml [new file with mode: 0644]
src/controls/controls.pro
src/controls/qmldir
src/styles/DefaultSettings.js
src/styles/PopupStyle.qml [new file with mode: 0644]
src/styles/qmldir
src/styles/styles.pro

index 179fef1..7930364 100644 (file)
@@ -36,6 +36,40 @@ Item {
     width: parent.width
     height: parent.height
 
+    Popup {
+        id:popup
+        Text {
+            text:"Center"
+            font.pixelSize: 60
+            anchors.centerIn: parent
+        }
+        Text {
+            text:"Left"
+            font.pixelSize: 60
+            anchors.left: parent.left
+            anchors.verticalCenter: parent.verticalCenter
+        }
+        Text {
+            text:"Right"
+            font.pixelSize: 60
+            anchors.right: parent.right
+            anchors.verticalCenter: parent.verticalCenter
+        }
+        Text {
+            text:"Top"
+            font.pixelSize: 60
+            anchors.top: parent.top
+            anchors.horizontalCenter: parent.horizontalCenter
+        }
+        Button {
+            anchors.bottom: parent.bottom
+            text: "Close"
+            width: 200
+            onClicked: popup.hide()
+            anchors.horizontalCenter: parent.horizontalCenter
+        }
+    }
+
     Column {
         spacing: 40
         anchors.centerIn: parent
@@ -47,6 +81,7 @@ Item {
                 id:detail
                 anchors.left:parent.right
                 anchors.verticalCenter: parent.verticalCenter
+                onClicked: popup.popup()
             }
         }
         CheckBox {
diff --git a/src/controls/Popup.qml b/src/controls/Popup.qml
new file mode 100644 (file)
index 0000000..4f0fe46
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2013 Tomasz Olszak <olszak.tomasz@gmail.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+import QtQuick 2.1
+import QtQuick.Controls.Private 1.0
+import QtQuick.Controls.Styles.Tizen 1.0
+
+Floater {
+    id:root
+
+    anchors.centerIn:parent
+
+    /* shows Menu */
+    onVisibleChanged: {
+        if (visible) {
+            popup()
+        } else {
+            hide()
+        }
+    }
+
+    function popup(){
+        prvStyleData.state = "shown"
+    }
+
+    function hide() {
+        prvStyleData.state = "hidden"
+    }
+
+    property Component style: Qt.createComponent(Settings.style + "/PopupStyle.qml", root)
+
+    Loader {
+        id: styleLoader
+        property QtObject styleData: prvStyleData
+        QtObject {
+            id: prvStyleData
+            property string state: "hidden"
+        }
+
+        property Item __control: root
+        sourceComponent: style
+    }
+
+    content: styleLoader.item && styleLoader.item.lookAndFeel
+}
+
index 1438a88..b932d8e 100644 (file)
@@ -6,7 +6,8 @@ QML_FILES += \
     DetailButton.qml\
     ContextMenu.qml\
     SplitView.qml\
-    ScrollDecorator.qml
+    ScrollDecorator.qml\
+    Popup.qml
 
 CONFIG += force_independent
 
index dce7ace..d79980a 100644 (file)
@@ -5,3 +5,4 @@ DetailButton 1.0 DetailButton.qml
 ContextMenu 1.0 ContextMenu.qml
 SplitView 1.0 SplitView.qml
 ScrollDecorator 1.0 ScrollDecorator.qml
+Popup 1.0 Popup.qml
index 7ba54db..82499d8 100644 (file)
@@ -1170,4 +1170,17 @@ var scroll = {
 
 }
 
-
+var popup = {
+    color: colors.B061L1,
+    source: images.img_00_popup_bg_9,
+    effectSource: images.img_00_popup_bg_ef_9,
+    text: {
+        color: colors.B063L9
+    },
+    margins: {
+        top: 14+3,
+        bottom: 34+3,
+        left: 16+3,
+        right: 16+3
+    }
+}
diff --git a/src/styles/PopupStyle.qml b/src/styles/PopupStyle.qml
new file mode 100644 (file)
index 0000000..3a33f0a
--- /dev/null
@@ -0,0 +1,109 @@
+/*
+ * Copyright (C) 2013 Tomasz Olszak <olszak.tomasz@gmail.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB.  If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+import QtQuick 2.1
+import QtQuick.Controls 1.0
+import QtQuick.Controls.Private 1.0
+import QtQuick.Controls.Tizen 1.0
+import "DefaultSettings.js" as Theme
+
+Style {
+    id: style
+
+    property Popup control: __control
+
+    property Component lookAndFeel: Item {
+        id: contentItem
+        anchors.fill: parent
+        implicitWidth: control.root.width - 100
+        implicitHeight: 2*control.root.height/3
+        Rectangle {
+            x: -(control.root.width-contentItem.width)/2
+            y: -(control.root.height-contentItem.height)/2
+            width:control.root.width
+            height:control.root.height
+            color:"#AA000000"
+        }
+
+        TizenBorderImage {
+            id: contentOfControl
+            anchors.fill: parent
+            source: Theme.popup.source
+            effectSource: Theme.popup.effectSource
+            backgroundColor: Theme.popup.color
+            anchors.topMargin: -Theme.popup.margins.top
+            anchors.leftMargin: -Theme.popup.margins.left
+            anchors.rightMargin: -Theme.popup.margins.right
+            anchors.bottomMargin: -Theme.popup.margins.bottom
+        }
+
+        state: styleData.state === "hidden" ? "contentHidden" : "contentShown"
+
+        states: [
+            State {
+                name:"contentHidden"
+                PropertyChanges {
+                    target: control
+                    opacity:0
+                }
+            },
+            State {
+                name:"contentShown"
+                PropertyChanges {
+                    target: control
+                    opacity:0
+                }
+            }
+        ]
+
+        transitions: [
+            Transition {
+                to: "contentHidden"
+                SequentialAnimation {
+                    NumberAnimation {
+                        target: control
+                        property: "opacity"
+                        duration: 250
+                    }
+                    PropertyAction {
+                        target: control
+                        property: "visible"
+                        value:false
+                    }
+                }
+            },
+            Transition {
+                to: "contentShown"
+                SequentialAnimation {
+                    PropertyAction {
+                        target: control
+                        property: "visible"
+                        value:true
+                    }
+                    NumberAnimation {
+                        target: control
+                        property: "opacity"
+                        to: 1
+                        duration: 250
+                    }
+                }
+            }
+        ]
+    }
+}
index 2eea0a8..be86051 100644 (file)
@@ -11,5 +11,6 @@ SwitchStyle 1.0 SwitchStyle.qml
 DetailButtonStyle 1.0 DetailButtonStyle.qml
 ScrollDecoratorStyle 1.0 ScrollDecoratorStyle.qml
 ContextMenuStyle 1.0 ContextMenuStyle.qml
+PopupStyle 1.0 PopupStyle.qml
 Theme 1.0 DefaultSettings.js
 
index 8630d8b..269c319 100644 (file)
@@ -13,7 +13,8 @@ QML_FILES = \
     DetailButtonStyle.qml\
     DefaultSettings.js\
     ScrollDecoratorStyle.qml\
-    ContextMenuStyle.qml
+    ContextMenuStyle.qml\
+    PopupStyle.qml
 
 # Images
 QML_FILES += \