We use a Repeater to construct the items needed on demand.
iconId: Data.flashIcon(settings.imageFlashMode)
+ property list<ToolsModelItem> 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
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
+ }
}
}
}
CameraToolIcon {
id: button
+
iconId: Data.cfIcon(settings.imageColorFilter)
+ property list<ToolsModelItem> 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
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
+ }
}
}
}
id: button
iconId: Data.ismIcon(settings.imageSceneMode)
+ property list<ToolsModelItem> 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 {
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
+ }
}
}
}
iconId: Data.wbIcon(settings.imageWhiteBalance)
+ property list<ToolsModelItem> 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
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
+ }
}
}
}
--- /dev/null
+// -*- qml -*-
+
+/*!
+ * This file is part of CameraPlus.
+ *
+ * Copyright (C) 2012-2013 Mohammed Sameer <msameer@foolab.org>
+ *
+ * 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
+}
iconId: Data.cfIcon(settings.videoColorFilter)
+ property list<ToolsModelItem> 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
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
+ }
}
}
}
iconId: Data.vsmIcon(settings.videoSceneMode)
+ property list<ToolsModelItem> 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
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
+ }
}
}
}
iconId: Data.wbIcon(settings.videoWhiteBalance)
+ property list<ToolsModelItem> 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
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
+ }
}
}
}
<file>SettingsView.qml</file>
<file>Standby.qml</file>
<file>TextSwitch.qml</file>
+ <file>ToolsModelItem.qml</file>
<file>VideoColorFilterButton.qml</file>
<file>VideoEvCompButton.qml</file>
<file>VideoMuteButton.qml</file>