diff --git a/applets/digital-clock/package/contents/ui/configAppearance.qml b/applets/digital-clock/package/contents/ui/configAppearance.qml index 24ed74f6a..83d95bfc7 100644 --- a/applets/digital-clock/package/contents/ui/configAppearance.qml +++ b/applets/digital-clock/package/contents/ui/configAppearance.qml @@ -1,224 +1,216 @@ /* * Copyright 2013 Bhushan Shah * Copyright 2013 Sebastian Kügler * Copyright 2015 Kai Uwe Broulik * * This program 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) version 3 or any later version * accepted by the membership of KDE e.V. (or its successor approved * by the membership of KDE e.V.), which shall act as a proxy * defined in Section 14 of version 3 of the license. * * This program 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 program. If not, see */ import QtQuick 2.0 import QtQuick.Controls 1.0 as QtControls import QtQuick.Layouts 1.0 as QtLayouts import org.kde.plasma.calendar 2.0 as PlasmaCalendar Item { id: appearancePage width: childrenRect.width height: childrenRect.height signal configurationChanged property string cfg_fontFamily property alias cfg_boldText: boldCheckBox.checked property string cfg_timeFormat: "" property alias cfg_italicText: italicCheckBox.checked property alias cfg_showLocalTimezone: showLocalTimezone.checked property alias cfg_displayTimezoneAsCode: timezoneCodeRadio.checked property alias cfg_showSeconds: showSeconds.checked property alias cfg_showDate: showDate.checked property string cfg_dateFormat: "shortDate" property alias cfg_use24hFormat: use24hFormat.checkedState onCfg_fontFamilyChanged: { // HACK by the time we populate our model and/or the ComboBox is finished the value is still undefined if (cfg_fontFamily) { for (var i = 0, j = fontsModel.count; i < j; ++i) { if (fontsModel.get(i).value == cfg_fontFamily) { fontFamilyComboBox.currentIndex = i break } } } } ListModel { id: fontsModel Component.onCompleted: { var arr = [] // use temp array to avoid constant binding stuff arr.push({text: i18nc("Use default font", "Default"), value: ""}) var fonts = Qt.fontFamilies() var foundIndex = 0 for (var i = 0, j = fonts.length; i < j; ++i) { arr.push({text: fonts[i], value: fonts[i]}) } append(arr) } } QtLayouts.ColumnLayout { anchors.left: parent.left - QtControls.GroupBox { - QtLayouts.Layout.fillWidth: true - title: i18n("Font") - flat: true - - QtLayouts.GridLayout { // there's no FormLayout :( - columns: 2 - QtLayouts.Layout.fillWidth: true - - QtControls.Label { - QtLayouts.Layout.fillWidth: true - horizontalAlignment: Text.AlignRight - text: i18n("Font style:") - } - - QtControls.ComboBox { - id: fontFamilyComboBox - QtLayouts.Layout.fillWidth: true - // ComboBox's sizing is just utterly broken - QtLayouts.Layout.minimumWidth: units.gridUnit * 10 - model: fontsModel - // doesn't autodeduce from model because we manually populate it - textRole: "text" - - onCurrentIndexChanged: { - var current = model.get(currentIndex) - if (current) { - cfg_fontFamily = current.value - appearancePage.configurationChanged() - } - } - } - - // spacer, cannot do Qt.AlignTop on the font style label + rowSpan 3, otherwise looks odd - Item { - QtLayouts.Layout.fillWidth: true - QtLayouts.Layout.rowSpan: 2 - } - - QtControls.CheckBox { - id: boldCheckBox - text: i18n("Bold text") - } - - QtControls.CheckBox { - id: italicCheckBox - text: i18n("Italic text") - } - } - } QtControls.GroupBox { QtLayouts.Layout.fillWidth: true title: i18n("Information") flat: true QtLayouts.ColumnLayout { QtControls.CheckBox { id: showDate text: i18n("Show date") } QtControls.CheckBox { id: showSeconds text: i18n("Show seconds") } QtControls.CheckBox { id: use24hFormat text: i18nc("Checkbox label; means 24h clock format, without am/pm", "Use 24-hour Clock") } QtControls.CheckBox { id: showLocalTimezone text: i18n("Show local time zone") } QtControls.Label { text: i18n("Display time zone as:") } QtControls.GroupBox { QtLayouts.Layout.fillWidth: true flat: true QtLayouts.ColumnLayout { QtControls.ExclusiveGroup { id: timezoneDisplayType } QtControls.RadioButton { id: timezoneCityRadio text: i18n("Time zone city") exclusiveGroup: timezoneDisplayType } QtControls.RadioButton { id: timezoneCodeRadio text: i18n("Time zone code") exclusiveGroup: timezoneDisplayType } } } QtLayouts.RowLayout { QtControls.Label { text: i18n("Date format:") } QtControls.ComboBox { id: dateFormat enabled: showDate.checked textRole: "label" model: [ { 'label': i18n("Long Date"), 'name': "longDate" }, { 'label': i18n("Short Date"), 'name': "shortDate" }, { 'label': i18n("ISO Date"), 'name': "isoDate" } ] onCurrentIndexChanged: cfg_dateFormat = model[currentIndex]["name"] Component.onCompleted: { for (var i = 0; i < model.length; i++) { if (model[i]["name"] == plasmoid.configuration.dateFormat) { dateFormat.currentIndex = i; } } } } } } } + + QtLayouts.RowLayout { + QtLayouts.Layout.fillWidth: true + + QtControls.Label { + text: i18n("Font style:") + } + + QtControls.ComboBox { + id: fontFamilyComboBox + QtLayouts.Layout.fillWidth: true + // ComboBox's sizing is just utterly broken + QtLayouts.Layout.minimumWidth: units.gridUnit * 10 + model: fontsModel + // doesn't autodeduce from model because we manually populate it + textRole: "text" + + onCurrentIndexChanged: { + var current = model.get(currentIndex) + if (current) { + cfg_fontFamily = current.value + appearancePage.configurationChanged() + } + } + } + + QtControls.Button { + id: boldCheckBox + tooltip: i18n("Bold text") + iconName: "format-text-bold" + checkable: true + Accessible.name: tooltip + } + + QtControls.Button { + id: italicCheckBox + tooltip: i18n("Italic text") + iconName: "format-text-italic" + checkable: true + Accessible.name: tooltip + } + } } Component.onCompleted: { if (plasmoid.configuration.displayTimezoneAsCode) { timezoneCodeRadio.checked = true; } else { timezoneCityRadio.checked = true; } } }