/*** ** Copyright (C) 2012 Christophe CHAPUIS ** ** This package is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation; either version 2 of the License, or ** (at your option) any later version. ** ** This package 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 General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with this package; if not, write to the Free Software ** Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA ** ***/ import QtQuick 1.0 import "../modelitf" Rectangle { id: configDialog anchors.fill: parent color: "#00000000" visible: false state: "hidden" property SourceModel configModel; //property SourceModel model; //property SourceConfigComponentView viewComponent; states: [ State { name: "showSourceConfig" // In this state, we bring the configuration UI of the source PropertyChanges { target: configDialog; color: "#80000000" } PropertyChanges { target: sourceConfigLoader; opacity: 1 } PropertyChanges { target: sourceConfigLoader; source: configModel.settingsComponent } PropertyChanges { target: configTitle; text: configModel.name + " Settings"} AnchorChanges { target: quitApplyConfigButton; anchors.left: undefined; anchors.right: configDialog.right } AnchorChanges { target: quitCancelConfigButton; anchors.right: undefined; anchors.left: configDialog.left } } ] transitions: [ Transition { from: "hidden" to: "showSourceConfig" SequentialAnimation { // Show the dialog PropertyAction { target: configDialog; property: "visible"; value: true } // Bring the UI elements ParallelAnimation { AnchorAnimation { duration: 500 } ColorAnimation { duration: 400 } } } }, Transition { from: "showSourceConfig" to: "hidden" SequentialAnimation { // Move out the UI elements ParallelAnimation { AnchorAnimation { duration: 500 } ColorAnimation { duration: 400 } } // Hide the dialog PropertyAction { target: configDialog; property: "visible"; value: false } } } ] Background { anchors.top: parent.top anchors.left: parent.left anchors.right: parent.right anchors.bottom: quitApplyConfigButton.top } Text { id: configTitle color: "white" anchors.top: parent.top anchors.left: parent.left anchors.right: parent.right horizontalAlignment: Text.AlignHCenter font.pixelSize: 24 font.bold: true } Loader { id: sourceConfigLoader opacity: 0 anchors.top: configTitle.bottom anchors.left: parent.left anchors.right: parent.right anchors.bottom: quitApplyConfigButton.top Behavior on opacity { NumberAnimation { duration: 1000; easing.type: Easing.InOutQuad } } onLoaded: { // fill the UI with information from the model configModel.loadConfiguration(sourceConfigLoader.item) } } FancyButton { id: quitApplyConfigButton icon: "../images/apply.png" anchors.bottom: parent.bottom anchors.left: parent.right onClicked: { // ask the model to store the configuration configModel.storeConfiguration(sourceConfigLoader.item) // Store the configuration of this source, and disappear configDialog.state = "hidden" } } FancyButton { id: quitCancelConfigButton icon: "../images/cancel.png" anchors.bottom: parent.bottom anchors.right: parent.left onClicked: { // Store the configuration of this source, and disappear configDialog.state = "hidden" } } }