diff --git a/applets/mediaframe/package/contents/config/main.xml b/applets/mediaframe/package/contents/config/main.xml index dd4da3fa9..db2cd5997 100644 --- a/applets/mediaframe/package/contents/config/main.xml +++ b/applets/mediaframe/package/contents/config/main.xml @@ -1,35 +1,35 @@ - 6.8 + 10.0 true true true true true 1 diff --git a/applets/mediaframe/package/contents/ui/ConfigGeneral.qml b/applets/mediaframe/package/contents/ui/ConfigGeneral.qml index 4aa21963a..acf19e205 100644 --- a/applets/mediaframe/package/contents/ui/ConfigGeneral.qml +++ b/applets/mediaframe/package/contents/ui/ConfigGeneral.qml @@ -1,183 +1,215 @@ /* * Copyright 2015 Lars Pontoppidan * * 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) any later version. * * 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, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 2.010-1301, USA. */ -import QtQuick 2.1 -import QtQuick.Controls 1.1 +import QtQuick 2.7 +import QtQuick.Controls 1.5 import QtQuick.Layouts 1.1 import org.kde.plasma.plasmoid 2.0 import org.kde.plasma.core 2.0 as PlasmaCore import org.kde.plasma.components 2.0 as PlasmaComponents import org.kde.kquickcontrolsaddons 2.0 as KQuickAddons Item { id: root - width: parent.width - height: parent.height - + property alias cfg_interval: intervalSpinBox.value property alias cfg_randomize: randomizeCheckBox.checked property alias cfg_pauseOnMouseOver: pauseOnMouseOverCheckBox.checked property alias cfg_useBackground: useBackgroundCheckBox.checked property alias cfg_leftClickOpenImage: leftClickOpenImageCheckBox.checked //property alias cfg_showCountdown: showCountdownCheckBox.checked property alias cfg_fillMode: root.fillMode /* * Image.Stretch - the image is scaled to fit * Image.PreserveAspectFit - the image is scaled uniformly to fit without cropping * Image.PreserveAspectCrop - the image is scaled uniformly to fill, cropping if necessary * Image.Tile - the image is duplicated horizontally and vertically * Image.TileVertically - the image is stretched horizontally and tiled vertically * Image.TileHorizontally - the image is stretched vertically and tiled horizontally * Image.Pad - the image is not transformed */ property int fillMode: Image.PreserveAspectFit - ColumnLayout { - - width: parent.width - height: parent.height - - RowLayout { - Layout.fillWidth: true - + ColumnLayout { + spacing: 20 + + + Grid { + columns: 2 + rows: 7 + rowSpacing: 20 + columnSpacing: 10 + verticalItemAlignment: Grid.AlignVCenter + + // Row 1, Col 1 Label { text: i18n("Change picture every") } + // Row 1, Col 2 SpinBox { - id: intervalSpinBox - suffix: i18n("s") decimals: 1 // Once a day should be high enough maximumValue: 24*(60*60) + } // end SpinBox + + + // Row 2, Col 1 + Label { + id: fillLabel + text: i18n("Fill mode:") } - } - - ColumnLayout { - RowLayout { - Layout.fillWidth: true - Label { - text: i18n("Fill mode:") + + // Row 2, Col 2 + ComboBox { + id: comboBox + width: units.gridUnit * 10 + currentIndex: fillModeToIndex(fillMode) + model: + [ + { + text: i18n("Stretch"), + value: Image.Stretch + }, + + { + text: i18n("Preserve aspect fit"), + value: Image.PreserveAspectFit + + }, + + { + text: i18n("Preserve aspect crop"), + value: Image.PreserveAspectCrop + }, + + { + text: i18n("Tile"), + value: Image.Tile + }, + + { + text: i18n("Tile vertically"), + value: Image.TileVertically + }, + + { + text: i18n("Tile horizontally"), + value: Image.TileHorizontally + }, + + { + text: i18n("Pad"), + value: Image.Pad + } + + ] // end of ComboBox model + + + + onCurrentIndexChanged: { + root.fillMode = comboBox.currentIndex + fillModeToIndex(root.fillMode) + //console.log(comboBox.currentIndex); } - ComboBox { - id: comboBox - currentIndex: fillModeToIndex(fillMode) - model: - [ - { - "text": i18n("Stretch"), - "value": Image.Stretch, - "description": i18n("The image is scaled to fit") - }, - { - "text": i18n("Preserve aspect fit"), - "value": Image.PreserveAspectFit, - "description": i18n("The image is scaled uniformly to fit without cropping") - }, - { - "text": i18n("Preserve aspect crop"), - "value": Image.PreserveAspectCrop, - "description": i18n("The image is scaled uniformly to fill, cropping if necessary") - }, - { - "text": i18n("Tile"), - "value": Image.Tile, - "description": i18n("The image is duplicated horizontally and vertically") - }, - { - "text": i18n("Tile vertically"), - "value": Image.TileVertically, - "description": i18n("The image is stretched horizontally and tiled vertically") - }, - { - "text": i18n("Tile horizontally"), - "value": Image.TileHorizontally, - "description": i18n("The image is stretched vertically and tiled horizontally") - }, - { - "text": i18n("Pad"), - "value": Image.Pad, - "description": i18n("The image is not transformed") - } - ] - - onActivated: root.fillMode = comboBoxItems.get(index).value - - onCurrentIndexChanged: fillModeDescription.text = comboBoxItems.get(currentIndex).description - - function fillModeToIndex(fillMode) { - if(fillMode == Image.Stretch) - return 0 - else if(fillMode == Image.PreserveAspectFit) - return 1 - else if(fillMode == Image.PreserveAspectCrop) - return 2 - else if(fillMode == Image.Tile) - return 3 - else if(fillMode == Image.TileVertically) - return 4 - else if(fillMode == Image.TileHorizontally) - return 5 - else if(fillMode == Image.Pad) - return 6 + + function fillModeToIndex(fillMode) { + //console.log("function called"); + if(fillMode == Image.Stretch) { + fillModeDescription.text = i18n( "The image is scaled to fit the frame"); + return 0 } - } - } + else if(fillMode == Image.PreserveAspectFit) { + fillModeDescription.text = i18n("The image is scaled uniformly to fit without cropping"); + return 1 + } + else if(fillMode == Image.PreserveAspectCrop) { + fillModeDescription.text = i18n( "The image is scaled uniformly to fill, cropping if necessary"); + return 2 + } + else if(fillMode == Image.Tile) { + fillModeDescription.text = i18n("The image is duplicated horizontally and vertically"); + return 3 + } + else if(fillMode == Image.TileVertically) { + fillModeDescription.text = i18n("The image is stretched horizontally and tiled vertically"); + return 4 + } + else if(fillMode == Image.TileHorizontally) { + fillModeDescription.text = i18n("The image is stretched vertically and tiled horizontally"); + return 5 + } + else if(fillMode == Image.Pad) { + fillModeDescription.text = i18n("The image is not transformed"); + return 6 + } + } // end of fillModeToIndex function + } // end of ComboBox and related functions + + + // Row 3, Col 1 (cheater to fill empty cell) + Label { + width: 10 + text: "" + } + + + //Row 3, Col 2 Label { id: fillModeDescription text: i18n("The image is scaled uniformly to fit without cropping") } - } - + + } // end of top section GridLayout + + // these CheckBoxes should take over as their own ColumnLayout entries CheckBox { id: randomizeCheckBox text: i18n("Randomize items") } CheckBox { id: pauseOnMouseOverCheckBox text: i18n("Pause on mouseover") } CheckBox { id: useBackgroundCheckBox text: i18n("Background frame") } CheckBox { id: leftClickOpenImageCheckBox text: i18n("Left click image opens in external viewer") } - /* - CheckBox { - id: showCountdownCheckBox - text: i18n("Show countdown") - } - */ + } // end ColumnLayout + + } // end Item + + + - } -} diff --git a/applets/mediaframe/package/metadata.desktop b/applets/mediaframe/package/metadata.desktop index 18f21b72a..a3756c90a 100644 --- a/applets/mediaframe/package/metadata.desktop +++ b/applets/mediaframe/package/metadata.desktop @@ -1,94 +1,94 @@ [Desktop Entry] -Name=Media frame +Name=Media Frame Name[ca]=Marc multimèdia Name[ca@valencia]=Marc multimèdia Name[cs]=Rámec médií Name[da]=Medieramme Name[de]=Medien-Rahmen Name[el]=Πλαίσιο μέσου Name[en_GB]=Media frame Name[es]=Marco multimedia Name[et]=Meediaraam Name[eu]=Multimedia markoa Name[fi]=Mediakehys Name[fr]=Cadre du lecteur de média Name[gl]=Marco de contido Name[he]=מסגרת מדיה Name[hu]=Médiakeret Name[it]=Cornice media Name[ko]=미디어 프레임 Name[lt]=Paveikslėlių rėmelis Name[nl]=Mediaframe Name[nn]=Medieramme Name[pl]=Ramka multimedialna Name[pt]=Moldura multimédia Name[pt_BR]=Quadro multimídia Name[ru]=Фоторамка Name[sk]=Snímka médií Name[sl]=Predstavnostni okvir Name[sr]=урамљени медијум Name[sr@ijekavian]=урамљени медијум Name[sr@ijekavianlatin]=uramljeni medijum Name[sr@latin]=uramljeni medijum Name[sv]=Media frame Name[tr]=Ortam çerçevesi Name[uk]=Медіарамка Name[x-test]=xxMedia framexx Name[zh_CN]=媒体相框 Name[zh_TW]=媒體框架 Comment=(Picture) Frame Comment[ca]=Marc (fotografies) Comment[ca@valencia]=Marc (fotografies) Comment[cs]=Rámeček (obrázku) Comment[da]=(Billed)ramme Comment[de]=(Bilder)-Rahmen Comment[el]=Πλαίσιο (εικόνας) Comment[en_GB]=(Picture) Frame Comment[es]=Marco (de retrato) Comment[et]=(Pildi)raam Comment[eu]=(Irudi) markoa Comment[fi]=Kehys kuville ja muulle Comment[fr]=Cadre de photos Comment[gl]=Portarretratos Comment[he]=מסגרת (תמונה) Comment[hu]=(Kép)keret Comment[it]=(Immagine) Cornice Comment[ko]=(사진) 프레임 Comment[lt]=Paveikslėlių rėmelis Comment[nl]=(Afbeelding) frame Comment[nn]=Biletramme Comment[pl]=(Zdjęcie) Ramka Comment[pt]=Moldura (de Imagens) Comment[pt_BR]=Quadro (Imagens) Comment[ru]=Слайд-шоу из любимых изображений Comment[sk]=Snímka obrázku Comment[sl]=Okvir s sliko Comment[sr]=Рам за слике Comment[sr@ijekavian]=Рам за слике Comment[sr@ijekavianlatin]=Ram za slike Comment[sr@latin]=Ram za slike Comment[sv]=Bildram Comment[tr]=(Resim) Karesi Comment[uk]=(Картинна) рамка Comment[x-test]=xx(Picture) Framexx Comment[zh_CN]=(图片) 像框 Comment[zh_TW]=(圖片)框架 Icon=image-x-generic Type=Service ServiceTypes=Plasma/Applet X-KDE-PluginInfo-Author=Lars Pontoppidan X-KDE-PluginInfo-Email=dev.larpon@gmail.com X-KDE-PluginInfo-Name=org.kde.plasma.mediaframe X-KDE-PluginInfo-Version=1.0 X-KDE-PluginInfo-Website=http://plasma.kde.org/ X-KDE-PluginInfo-Category=Utilities X-KDE-PluginInfo-Depends= X-KDE-PluginInfo-License=GPL-2.0+ X-KDE-PluginInfo-EnabledByDefault=true X-Plasma-StandAloneApp=true X-Plasma-API=declarativeappletscript X-Plasma-MainScript=ui/main.qml X-Plasma-Requires-FileDialog=True X-Plasma-Requires-LaunchApp=Unused