--- /dev/null
+import QtQuick 1.0 // to target S60 5th Edition or Maemo 5
+import "../UIConstants.js" as Const
+
+Item {
+ id: root
+ property string label
+ property bool disabled: false
+ property int fontSize: 30
+ property int maxSize: 27
+ property string iconSource
+
+ state: mouseArea.pressed && !root.disabled ? "pressed" : "unpressed"
+
+ width: box.width
+ height: box.height
+
+ signal buttonClicked(string label)
+
+ Rectangle {
+ id: shadow
+ width: box.width
+ height: box.height
+ color: Const.SHADOW_COLOR;
+ radius: 10
+ visible: false
+ }
+
+ Rectangle {
+ id: box
+ color: root.disabled ? Const.COOL_GREY_COLOR : "black"
+ height: root.iconSource=="" ? textbox.height+20 : icon.height+20
+ //width: textbox.width<100 ? 120 : textbox.width+20
+ width: root.iconSource=="" ? textbox.width+30 : icon.width+30
+ radius: 10
+ visible: false
+ }
+
+ Image {
+ source: root.state != "pressed" ?
+ "../images/pushbutton_normal.png" :
+ "../images/pushbutton_disabled.png"
+ }
+
+ Rectangle {
+ width: box.width
+ height: box.height
+ x: box.x
+ y: box.y
+ color: Const.WARM_GREY_COLOR
+ radius: 10
+ //visible: root.state == "pressed"
+ visible: false
+ //border.color: "black"
+ //border.width: Const.SHADOW_OFFSET
+ }
+
+ Image {
+ id: icon
+ //width: 30
+ //height: 30
+ anchors.centerIn: box
+ source: root.iconSource == "" ? "" : "../" + root.iconSource
+ sourceSize.width: width
+ sourceSize.height: height
+ }
+
+ onLabelChanged: {
+ if(root.label.length>root.maxSize) {
+ //console.log("root.label: "+root.label)
+ //console.log("root.label.length: "+root.label.length)
+ //console.log("root.maxSize: "+root.maxSize)
+ textbox.text = root.label.substring(0,root.maxSize-3)+"...";
+ } else {
+ textbox.text = root.label;
+ }
+ }
+
+ Text {
+ id: textbox
+ font.pixelSize: root.fontSize
+ color: root.disabled ? "gray" : "white"
+ anchors.centerIn: box
+ visible: root.iconSource == ""
+ }
+
+ MouseArea {
+ id: mouseArea
+ width: box.width
+ height: box.height
+ onClicked: root.buttonClicked(root.label)
+ enabled: !root.disabled
+ }
+
+ states: [
+ State {
+ name: "unpressed"
+ PropertyChanges {target: shadow; x: Const.SHADOW_OFFSET}
+ PropertyChanges {target: shadow; y: Const.SHADOW_OFFSET}
+ PropertyChanges {target: box; x: 0}
+ PropertyChanges {target: box; y: 0}
+ },
+ State {
+ name: "pressed"
+ PropertyChanges {target: shadow; x: Const.SHADOW_OFFSET}
+ PropertyChanges {target: shadow; y: Const.SHADOW_OFFSET}
+ PropertyChanges {target: box; x: Const.SHADOW_OFFSET}
+ PropertyChanges {target: box; y: Const.SHADOW_OFFSET}
+ }
+ ]
+}
+
+
+