From: Mohammed Sameer Date: Sat, 3 Aug 2013 20:39:45 +0000 (+0300) Subject: Reworked how we create items for toolbar. X-Git-Url: http://cgit.sxemacs.org/?p=harmattan%2Fcameraplus;a=commitdiff_plain;h=13a75630aac35cbdd5751fd583329a790c1a8dfd Reworked how we create items for toolbar. We use a Repeater to construct the items needed on demand. --- diff --git a/qml/FlashButton.qml b/qml/FlashButton.qml index 8c504ec..e5f6b09 100644 --- a/qml/FlashButton.qml +++ b/qml/FlashButton.qml @@ -29,6 +29,13 @@ CameraToolIcon { iconId: Data.flashIcon(settings.imageFlashMode) + property list toolsModel: [ + ToolsModelItem {icon: cameraTheme.flashAutoIconId; value: Flash.Auto }, + ToolsModelItem {icon: cameraTheme.flashOnIconId; value: Flash.On }, + ToolsModelItem {icon: cameraTheme.flashOffIconId; value: Flash.Off }, + ToolsModelItem {icon: cameraTheme.flashRedEyeIconId; value: Flash.RedEye } + ] + property CameraToolBarTools tools: CameraToolBarTools { CameraLabel { height: parent ? parent.height : 0 @@ -36,28 +43,14 @@ CameraToolIcon { verticalAlignment: Text.AlignVCenter } - CheckButton { - iconId: Data.flashIcon(Flash.Auto) - onClicked: settings.imageFlashMode = Flash.Auto - checked: settings.imageFlashMode == Flash.Auto - } - - CheckButton { - iconId: Data.flashIcon(Flash.On) - onClicked: settings.imageFlashMode = Flash.On - checked: settings.imageFlashMode == Flash.On - } - - CheckButton { - iconId: Data.flashIcon(Flash.Off) - onClicked: settings.imageFlashMode = Flash.Off - checked: settings.imageFlashMode == Flash.Off - } + Repeater { + model: parent != null && parent.visible ? toolsModel : undefined - CheckButton { - iconId: Data.flashIcon(Flash.RedEye) - onClicked: settings.imageFlashMode = Flash.RedEye - checked: settings.imageFlashMode == Flash.RedEye + delegate: CheckButton { + iconId: icon + onClicked: settings.imageFlashMode = value + checked: settings.imageFlashMode == value + } } } } diff --git a/qml/ImageColorFilterButton.qml b/qml/ImageColorFilterButton.qml index 1013319..e59d793 100644 --- a/qml/ImageColorFilterButton.qml +++ b/qml/ImageColorFilterButton.qml @@ -26,8 +26,18 @@ import "data.js" as Data CameraToolIcon { id: button + iconId: Data.cfIcon(settings.imageColorFilter) + property list toolsModel: [ + ToolsModelItem {icon: cameraTheme.colorFilterNormalIconId; value: ColorTone.Normal }, + ToolsModelItem {icon: cameraTheme.colorFilterGrayScaleIconId; value: ColorTone.GrayScale }, + ToolsModelItem {icon: cameraTheme.colorFilterSepiaIconId; value: ColorTone.Sepia }, + ToolsModelItem {icon: cameraTheme.colorFilterVividIconId; value: ColorTone.Vivid }, + ToolsModelItem {icon: cameraTheme.colorFilterNegativeIconId; value: ColorTone.Negative }, + ToolsModelItem {icon: cameraTheme.colorFilterSolarizeIconId; value: ColorTone.Solarize } + ] + property CameraToolBarTools tools: CameraToolBarTools { CameraLabel { height: parent ? parent.height : 0 @@ -35,40 +45,14 @@ CameraToolIcon { verticalAlignment: Text.AlignVCenter } - CheckButton { - iconId: Data.cfIcon(ColorTone.Normal) - onClicked: settings.imageColorFilter = ColorTone.Normal - checked: settings.imageColorFilter == ColorTone.Normal - } - - CheckButton { - iconId: Data.cfIcon(ColorTone.GrayScale) - onClicked: settings.imageColorFilter = ColorTone.GrayScale - checked: settings.imageColorFilter == ColorTone.GrayScale - } - - CheckButton { - iconId: Data.cfIcon(ColorTone.Sepia) - onClicked: settings.imageColorFilter = ColorTone.Sepia - checked: settings.imageColorFilter == ColorTone.Sepia - } - - CheckButton { - iconId: Data.cfIcon(ColorTone.Vivid) - onClicked: settings.imageColorFilter = ColorTone.Vivid - checked: settings.imageColorFilter == ColorTone.Vivid - } - - CheckButton { - iconId: Data.cfIcon(ColorTone.Negative) - onClicked: settings.imageColorFilter = ColorTone.Negative - checked: settings.imageColorFilter == ColorTone.Negative - } + Repeater { + model: parent != null && parent.visible ? toolsModel : undefined - CheckButton { - iconId: Data.cfIcon(ColorTone.Solarize) - onClicked: settings.imageColorFilter = ColorTone.Solarize - checked: settings.imageColorFilter == ColorTone.Solarize + delegate: CheckButton { + iconId: icon + onClicked: settings.imageColorFilter = value + checked: settings.imageColorFilter == value + } } } } diff --git a/qml/ImageSceneButton.qml b/qml/ImageSceneButton.qml index 92c41fc..0bb15c4 100644 --- a/qml/ImageSceneButton.qml +++ b/qml/ImageSceneButton.qml @@ -28,6 +28,14 @@ CameraToolIcon { id: button iconId: Data.ismIcon(settings.imageSceneMode) + property list toolsModel: [ + ToolsModelItem {icon: cameraTheme.imageSceneModeAutoIconId; value: Scene.Auto}, + ToolsModelItem {icon: cameraTheme.imageSceneModeCloseupIconId; value: Scene.Closeup}, + ToolsModelItem {icon: cameraTheme.imageSceneModeLandscapeIconId; value: Scene.Landscape}, + ToolsModelItem {icon: cameraTheme.imageSceneModePortraitIconId; value: Scene.Portrait}, + ToolsModelItem {icon: cameraTheme.imageSceneModeNightIconId; value: Scene.Night}, + ToolsModelItem {icon: cameraTheme.imageSceneModeSportIconId; value: Scene.Sport} + ] property CameraToolBarTools tools: CameraToolBarTools { CameraLabel { @@ -36,40 +44,14 @@ CameraToolIcon { verticalAlignment: Text.AlignVCenter } - CheckButton { - iconId: Data.ismIcon(Scene.Auto) - onClicked: settings.imageSceneMode = Scene.Auto - checked: settings.imageSceneMode == Scene.Auto - } - - CheckButton { - iconId: Data.ismIcon(Scene.Closeup) - onClicked: settings.imageSceneMode = Scene.Closeup - checked: settings.imageSceneMode == Scene.Closeup - } - - CheckButton { - iconId: Data.ismIcon(Scene.Landscape) - onClicked: settings.imageSceneMode = Scene.Landscape - checked: settings.imageSceneMode == Scene.Landscape - } - - CheckButton { - iconId: Data.ismIcon(Scene.Portrait) - onClicked: settings.imageSceneMode = Scene.Portrait - checked: settings.imageSceneMode == Scene.Portrait - } - - CheckButton { - iconId: Data.ismIcon(Scene.Night) - onClicked: settings.imageSceneMode = Scene.Night - checked: settings.imageSceneMode == Scene.Night - } + Repeater { + model: parent != null && parent.visible ? toolsModel : undefined - CheckButton { - iconId: Data.ismIcon(Scene.Sport) - onClicked: settings.imageSceneMode = Scene.Sport - checked: settings.imageSceneMode == Scene.Sport + delegate: CheckButton { + iconId: icon + onClicked: settings.imageSceneMode = value + checked: settings.imageSceneMode == value + } } } } diff --git a/qml/ImageWhiteBalanceButton.qml b/qml/ImageWhiteBalanceButton.qml index 8c98279..cd6c29c 100644 --- a/qml/ImageWhiteBalanceButton.qml +++ b/qml/ImageWhiteBalanceButton.qml @@ -29,6 +29,14 @@ CameraToolIcon { iconId: Data.wbIcon(settings.imageWhiteBalance) + property list toolsModel: [ + ToolsModelItem {icon: cameraTheme.whiteBalanceAutoIconId; value: WhiteBalance.Auto }, + ToolsModelItem {icon: cameraTheme.whiteBalanceSunsetIconId; value: WhiteBalance.Sunset }, + ToolsModelItem {icon: cameraTheme.whiteBalanceCloudyIconId; value: WhiteBalance.Cloudy }, + ToolsModelItem {icon: cameraTheme.whiteBalanceFlourescentIconId; value: WhiteBalance.Flourescent }, + ToolsModelItem {icon: cameraTheme.whiteBalanceTungstenIconId; value: WhiteBalance.Tungsten } + ] + property CameraToolBarTools tools: CameraToolBarTools { CameraLabel { height: parent ? parent.height : 0 @@ -36,34 +44,14 @@ CameraToolIcon { verticalAlignment: Text.AlignVCenter } - CheckButton { - iconId: Data.wbIcon(WhiteBalance.Auto) - onClicked: settings.imageWhiteBalance = WhiteBalance.Auto - checked: settings.imageWhiteBalance == WhiteBalance.Auto - } - - CheckButton { - iconId: Data.wbIcon(WhiteBalance.Sunset) - onClicked: settings.imageWhiteBalance = WhiteBalance.Sunset - checked: settings.imageWhiteBalance == WhiteBalance.Sunset - } - - CheckButton { - iconId: Data.wbIcon(WhiteBalance.Cloudy) - onClicked: settings.imageWhiteBalance = WhiteBalance.Cloudy - checked: settings.imageWhiteBalance == WhiteBalance.Cloudy - } - - CheckButton { - iconId: Data.wbIcon(WhiteBalance.Flourescent) - onClicked: settings.imageWhiteBalance = WhiteBalance.Flourescent - checked: settings.imageWhiteBalance == WhiteBalance.Flourescent - } + Repeater { + model: parent != null && parent.visible ? toolsModel : undefined - CheckButton { - iconId: Data.wbIcon(WhiteBalance.Tungsten) - onClicked: settings.imageWhiteBalance = WhiteBalance.Tungsten - checked: settings.imageWhiteBalance == WhiteBalance.Tungsten + delegate: CheckButton { + iconId: icon + onClicked: settings.imageWhiteBalance = value + checked: settings.imageWhiteBalance == value + } } } } diff --git a/qml/ToolsModelItem.qml b/qml/ToolsModelItem.qml new file mode 100644 index 0000000..c41d846 --- /dev/null +++ b/qml/ToolsModelItem.qml @@ -0,0 +1,29 @@ +// -*- qml -*- + +/*! + * This file is part of CameraPlus. + * + * Copyright (C) 2012-2013 Mohammed Sameer + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +import QtQuick 2.0 + +QtObject { + property string icon + property int value + property bool enabled: true +} diff --git a/qml/VideoColorFilterButton.qml b/qml/VideoColorFilterButton.qml index 284caaa..9f4c2d7 100644 --- a/qml/VideoColorFilterButton.qml +++ b/qml/VideoColorFilterButton.qml @@ -29,6 +29,15 @@ CameraToolIcon { iconId: Data.cfIcon(settings.videoColorFilter) + property list toolsModel: [ + ToolsModelItem {icon: cameraTheme.colorFilterNormalIconId; value: ColorTone.Normal }, + ToolsModelItem {icon: cameraTheme.colorFilterGrayScaleIconId; value: ColorTone.GrayScale }, + ToolsModelItem {icon: cameraTheme.colorFilterSepiaIconId; value: ColorTone.Sepia }, + ToolsModelItem {icon: cameraTheme.colorFilterVividIconId; value: ColorTone.Vivid }, + ToolsModelItem {icon: cameraTheme.colorFilterNegativeIconId; value: ColorTone.Negative }, + ToolsModelItem {icon: cameraTheme.colorFilterSolarizeIconId; value: ColorTone.Solarize } + ] + property CameraToolBarTools tools: CameraToolBarTools { CameraLabel { height: parent ? parent.height : 0 @@ -36,40 +45,14 @@ CameraToolIcon { verticalAlignment: Text.AlignVCenter } - CheckButton { - iconId: Data.cfIcon(ColorTone.Normal) - onClicked: settings.videoColorFilter = ColorTone.Normal - checked: settings.videoColorFilter == ColorTone.Normal - } - - CheckButton { - iconId: Data.cfIcon(ColorTone.GrayScale) - onClicked: settings.videoColorFilter = ColorTone.GrayScale - checked: settings.videoColorFilter == ColorTone.GrayScale - } - - CheckButton { - iconId: Data.cfIcon(ColorTone.Sepia) - onClicked: settings.videoColorFilter = ColorTone.Sepia - checked: settings.videoColorFilter == ColorTone.Sepia - } - - CheckButton { - iconId: Data.cfIcon(ColorTone.Vivid) - onClicked: settings.videoColorFilter = ColorTone.Vivid - checked: settings.videoColorFilter == ColorTone.Vivid - } - - CheckButton { - iconId: Data.cfIcon(ColorTone.Negative) - onClicked: settings.videoColorFilter = ColorTone.Negative - checked: settings.videoColorFilter == ColorTone.Negative - } + Repeater { + model: parent != null && parent.visible ? toolsModel : undefined - CheckButton { - iconId: Data.cfIcon(ColorTone.Solarize) - onClicked: settings.videoColorFilter = ColorTone.Solarize - checked: settings.videoColorFilter == ColorTone.Solarize + delegate: CheckButton { + iconId: icon + onClicked: settings.videoColorFilter = value + checked: settings.videoColorFilter == value + } } } } diff --git a/qml/VideoSceneButton.qml b/qml/VideoSceneButton.qml index 119be51..5a217ea 100644 --- a/qml/VideoSceneButton.qml +++ b/qml/VideoSceneButton.qml @@ -29,6 +29,11 @@ CameraToolIcon { iconId: Data.vsmIcon(settings.videoSceneMode) + property list toolsModel: [ + ToolsModelItem {icon: cameraTheme.videoSceneModeAutoIconId; value: Scene.Auto}, + ToolsModelItem {icon: cameraTheme.videoSceneModeNightIconId; value: Scene.Night} + ] + property CameraToolBarTools tools: CameraToolBarTools { CameraLabel { height: parent ? parent.height : 0 @@ -36,16 +41,14 @@ CameraToolIcon { verticalAlignment: Text.AlignVCenter } - CheckButton { - iconId: Data.vsmIcon(Scene.Auto) - onClicked: settings.videoSceneMode = Scene.Auto - checked: settings.videoSceneMode == Scene.Auto - } + Repeater { + model: parent != null && parent.visible ? toolsModel : undefined - CheckButton { - iconId: Data.vsmIcon(Scene.Night) - onClicked: settings.videoSceneMode = Scene.Night - checked: settings.videoSceneMode == Scene.Night + delegate: CheckButton { + iconId: icon + onClicked: settings.videoSceneMode = value + checked: settings.videoSceneMode == value + } } } } diff --git a/qml/VideoWhiteBalanceButton.qml b/qml/VideoWhiteBalanceButton.qml index a8003e4..7d02667 100644 --- a/qml/VideoWhiteBalanceButton.qml +++ b/qml/VideoWhiteBalanceButton.qml @@ -29,6 +29,14 @@ CameraToolIcon { iconId: Data.wbIcon(settings.videoWhiteBalance) + property list toolsModel: [ + ToolsModelItem {icon: cameraTheme.whiteBalanceAutoIconId; value: WhiteBalance.Auto }, + ToolsModelItem {icon: cameraTheme.whiteBalanceSunsetIconId; value: WhiteBalance.Sunset }, + ToolsModelItem {icon: cameraTheme.whiteBalanceCloudyIconId; value: WhiteBalance.Cloudy }, + ToolsModelItem {icon: cameraTheme.whiteBalanceFlourescentIconId; value: WhiteBalance.Flourescent }, + ToolsModelItem {icon: cameraTheme.whiteBalanceTungstenIconId; value: WhiteBalance.Tungsten } + ] + property CameraToolBarTools tools: CameraToolBarTools { CameraLabel { height: parent ? parent.height : 0 @@ -36,34 +44,14 @@ CameraToolIcon { verticalAlignment: Text.AlignVCenter } - CheckButton { - iconId: Data.wbIcon(WhiteBalance.Auto) - onClicked: settings.videoWhiteBalance = WhiteBalance.Auto - checked: settings.videoWhiteBalance == WhiteBalance.Auto - } - - CheckButton { - iconId: Data.wbIcon(WhiteBalance.Sunset) - onClicked: settings.videoWhiteBalance = WhiteBalance.Sunset - checked: settings.videoWhiteBalance == WhiteBalance.Sunset - } - - CheckButton { - iconId: Data.wbIcon(WhiteBalance.Cloudy) - onClicked: settings.videoWhiteBalance = WhiteBalance.Cloudy - checked: settings.videoWhiteBalance == WhiteBalance.Cloudy - } - - CheckButton { - iconId: Data.wbIcon(WhiteBalance.Flourescent) - onClicked: settings.videoWhiteBalance = WhiteBalance.Flourescent - checked: settings.videoWhiteBalance == WhiteBalance.Flourescent - } + Repeater { + model: parent != null && parent.visible ? toolsModel : undefined - CheckButton { - iconId: Data.wbIcon(WhiteBalance.Tungsten) - onClicked: settings.videoWhiteBalance = WhiteBalance.Tungsten - checked: settings.videoWhiteBalance == WhiteBalance.Tungsten + delegate: CheckButton { + iconId: icon + onClicked: settings.videoWhiteBalance = value + checked: settings.videoWhiteBalance == value + } } } } diff --git a/qml/qml.qrc b/qml/qml.qrc index cfdb470..25d3d8f 100644 --- a/qml/qml.qrc +++ b/qml/qml.qrc @@ -33,6 +33,7 @@ SettingsView.qml Standby.qml TextSwitch.qml + ToolsModelItem.qml VideoColorFilterButton.qml VideoEvCompButton.qml VideoMuteButton.qml