diff --git a/common/constants.js b/common/constants.js index 28e3076..a563ebb 100644 --- a/common/constants.js +++ b/common/constants.js @@ -27,10 +27,20 @@ var layout = { var colors = { download: '#8ae234', /* download green */ select: '#7f5785', /* gpodder dark purple */ - fresh: '#cf65de', /* gpodder purple */ + fresh: '#815c86', /* gpodder purple */ playback: '#729fcf', /* playback blue */ + + text: '#333333', /* text color */ + placeholder: '#666666', + highlight: '#433b67', + secondaryHighlight: '#605885', + background: '#948db3', + area: '#cccccc', + secondaryBackground: '#d0cce1', }; +var font = 'Source Sans Pro'; + var state = { normal: 0, downloaded: 1, diff --git a/touch/ButtonArea.qml b/touch/ButtonArea.qml index 774c07c..b1d5e7c 100644 --- a/touch/ButtonArea.qml +++ b/touch/ButtonArea.qml @@ -20,14 +20,18 @@ import QtQuick 2.0 +import 'common/constants.js' as Constants + MouseArea { id: mouseArea property bool transparent: false property bool canHighlight: true Rectangle { + id: background anchors.fill: parent - color: (mouseArea.pressed && mouseArea.canHighlight)?'#33ffffff':(mouseArea.transparent?'#00000000':'#88000000') - visible: parent.enabled + color: Constants.colors.area + opacity: (mouseArea.pressed && mouseArea.canHighlight) ? 1 : .5 + visible: parent.enabled && ((mouseArea.canHighlight && mouseArea.pressed) || !mouseArea.transparent) } } diff --git a/touch/CoverArt.qml b/touch/CoverArt.qml index 13ac387..3c18ae2 100644 --- a/touch/CoverArt.qml +++ b/touch/CoverArt.qml @@ -21,6 +21,8 @@ import QtQuick 2.0 +import 'common/constants.js' as Constants + Item { id: coverArt @@ -42,15 +44,15 @@ Item { } Rectangle { - opacity: 1 - cover.opacity + opacity: 0.3 * (1 - cover.opacity) anchors.fill: cover clip: true - color: '#11ffffff' + color: Constants.colors.background PLabel { text: coverArt.text[0] - color: '#55ffffff' + color: Constants.colors.highlight anchors.centerIn: parent font.pixelSize: parent.height * .8 } diff --git a/touch/Directory.qml b/touch/Directory.qml index d9c7175..a98705e 100644 --- a/touch/Directory.qml +++ b/touch/Directory.qml @@ -27,6 +27,8 @@ SlidePage { ListView { anchors.fill: parent + boundsBehavior: Flickable.StopAtBounds + PScrollDecorator {} model: GPodderDirectorySearchModel { id: directorySearchModel } diff --git a/touch/EpisodeDetail.qml b/touch/EpisodeDetail.qml index fc27cb1..3ae428a 100644 --- a/touch/EpisodeDetail.qml +++ b/touch/EpisodeDetail.qml @@ -36,6 +36,7 @@ SlidePage { Flickable { id: flickable anchors.fill: parent + boundsBehavior: Flickable.StopAtBounds contentWidth: detailColumn.width contentHeight: detailColumn.height + detailColumn.spacing diff --git a/touch/EpisodeItem.qml b/touch/EpisodeItem.qml index 17ab321..c7d012f 100644 --- a/touch/EpisodeItem.qml +++ b/touch/EpisodeItem.qml @@ -22,6 +22,7 @@ import QtQuick 2.0 import 'common/constants.js' as Constants import 'common/util.js' as Util +import 'icons/icons.js' as Icons Item { id: episodeItem @@ -32,7 +33,7 @@ Item { height: (opened ? 160 : 80) * pgst.scalef Behavior on height { PropertyAnimation { duration: 100 } } - Rectangle { + Item { clip: true anchors { left: parent.left @@ -40,7 +41,6 @@ Item { bottom: parent.bottom } height: parent.height - 80 * pgst.scalef - color: '#66000000' IconContextMenu { height: parent.height @@ -48,7 +48,8 @@ Item { IconMenuItem { text: episodeItem.isPlaying ? 'Pause' : 'Play' - iconSource: 'icons/' + (episodeItem.isPlaying ? 'pause_24x32.png' : 'play_24x32.png') + color: titleLabel.color + icon: episodeItem.isPlaying ? Icons.pause : Icons.play onClicked: { if (episodeItem.isPlaying) { player.pause(); @@ -60,7 +61,8 @@ Item { IconMenuItem { text: 'Download' - iconSource: 'icons/cloud_download_32x32.png' + color: titleLabel.color + icon: Icons.cloud_download visible: downloadState != Constants.state.downloaded onClicked: { episodeList.selectedIndex = -1; @@ -70,21 +72,24 @@ Item { IconMenuItem { text: 'Delete' - iconSource: 'icons/trash_stroke_32x32.png' + color: titleLabel.color + icon: Icons.trash visible: downloadState != Constants.state.deleted onClicked: py.call('main.delete_episode', [id]); } IconMenuItem { id: toggleNew + color: titleLabel.color text: 'Toggle New' - iconSource: 'icons/star_32x32.png' + icon: Icons.star onClicked: Util.disableUntilReturn(toggleNew, py, 'main.toggle_new', [id]); } IconMenuItem { text: 'Shownotes' - iconSource: 'icons/document_alt_stroke_24x32.png' + color: titleLabel.color + icon: Icons.article onClicked: pgst.loadPage('EpisodeDetail.qml', {episode_id: id, title: title}); } } @@ -93,8 +98,8 @@ Item { ButtonArea { id: episodeItemArea - opacity: canHighlight ? 1 : 0.2 - canHighlight: (episodeList.selectedIndex == index) || (episodeList.selectedIndex == -1) + opacity: (canHighlight || episodeList.selectedIndex == index) ? 1 : 0.2 + canHighlight: (episodeList.selectedIndex == -1) onClicked: { if (episodeList.selectedIndex == index) { @@ -109,7 +114,7 @@ Item { Rectangle { anchors.fill: parent color: titleLabel.color - visible: (progress > 0) || isPlaying + visible: (progress > 0) || isPlaying || episodeItem.opened opacity: 0.1 } @@ -133,7 +138,7 @@ Item { height: parent.height * .2 width: parent.width * playbackProgress - color: Constants.colors.playback + color: titleLabel.color opacity: episodeItem.isPlaying ? .6 : .2 } @@ -163,10 +168,12 @@ Item { return Constants.colors.playback; } else if (progress > 0) { return Constants.colors.download; + } else if (episodeItem.opened) { + return Constants.colors.highlight; } else if (isNew && downloadState != Constants.state.downloaded) { return Constants.colors.fresh; } else { - return 'white'; + return Constants.colors.text; } } @@ -179,8 +186,9 @@ Item { } } - Image { + PIcon { id: downloadedIcon + color: titleLabel.color anchors { right: parent.right @@ -189,7 +197,7 @@ Item { } visible: downloadState == Constants.state.downloaded - source: 'icons/cd_32x32.png' + icon: Icons.cd } } } diff --git a/touch/EpisodesPage.qml b/touch/EpisodesPage.qml index 96e5acd..03890f4 100644 --- a/touch/EpisodesPage.qml +++ b/touch/EpisodesPage.qml @@ -22,6 +22,7 @@ import QtQuick 2.0 import 'common' import 'common/util.js' as Util +import 'icons/icons.js' as Icons SlidePage { id: episodesPage @@ -38,7 +39,8 @@ SlidePage { PullMenu { PullMenuItem { - source: 'icons/play_24x32.png' + text: 'Now Playing' + icon: Icons.play onClicked: { pgst.loadPage('PlayerPage.qml'); episodesPage.unPull(); @@ -46,7 +48,8 @@ SlidePage { } PullMenuItem { - source: 'icons/trash_stroke_32x32.png' + text: 'Unsubscribe' + icon: Icons.trash onClicked: { py.call('main.unsubscribe', [episodesPage.podcast_id]); episodesPage.closePage(); diff --git a/touch/IconContextMenu.qml b/touch/IconContextMenu.qml index a760cc9..68711ea 100644 --- a/touch/IconContextMenu.qml +++ b/touch/IconContextMenu.qml @@ -20,13 +20,11 @@ import QtQuick 2.0 -Rectangle { +Item { id: contextMenu default property alias children: contextMenuRow.children height: 80 * pgst.scalef - color: '#33000000' - Row { id: contextMenuRow anchors.centerIn: parent diff --git a/touch/IconMenuItem.qml b/touch/IconMenuItem.qml index def02e4..18dc773 100644 --- a/touch/IconMenuItem.qml +++ b/touch/IconMenuItem.qml @@ -20,26 +20,34 @@ import QtQuick 2.0 +import 'common/constants.js' as Constants + ButtonArea { id: iconMenuItem property alias text: label.text - property alias iconSource: icon.source + property color color: Constants.colors.secondaryHighlight + property alias icon: icon.icon + property bool alwaysShowText: false transparent: true + canHighlight: false + height: 80 * pgst.scalef width: height - Image { + PIcon { id: icon anchors.centerIn: parent opacity: iconMenuItem.enabled ? 1 : .2 + color: label.color } PLabel { id: label font.pixelSize: 15 * pgst.scalef - visible: parent.pressed + visible: parent.pressed || parent.alwaysShowText + color: parent.pressed ? Qt.darker(iconMenuItem.color, 1.1) : iconMenuItem.color anchors { bottom: icon.top diff --git a/touch/Main.qml b/touch/Main.qml index 4f68b17..56dc7f5 100644 --- a/touch/Main.qml +++ b/touch/Main.qml @@ -43,6 +43,7 @@ Item { } children[index-1].opacity = x / width; + //children[index-1].pushPhase = x / width; } property bool loadPageInProgress: false diff --git a/touch/PBusyIndicator.qml b/touch/PBusyIndicator.qml index cf19da7..74f8b4e 100644 --- a/touch/PBusyIndicator.qml +++ b/touch/PBusyIndicator.qml @@ -20,31 +20,23 @@ import QtQuick 2.0 +import 'icons/icons.js' as Icons + Item { height: 64 * pgst.scalef width: 64 * pgst.scalef - Image { - anchors { - horizontalCenter: parent.horizontalCenter - bottom: parent.bottom - bottomMargin: 30*Math.abs(Math.sin(phase)) * pgst.scalef - } - - transform: Scale { - origin.x: 32 * pgst.scalef - origin.y: 32 * pgst.scalef - xScale: 1.0 - 0.3 * (1.0 - Math.abs(Math.sin(phase))) - } - - source: 'images/gpodder.png' + PIcon { + anchors.centerIn: parent + icon: Icons.aperture + rotation: 180 * parent.phase } property real phase: 0 PropertyAnimation on phase { loops: Animation.Infinite - duration: 2000 + duration: 5000 running: parent.visible from: 0 to: 2*Math.PI diff --git a/touch/PIcon.qml b/touch/PIcon.qml new file mode 100644 index 0000000..255532c --- /dev/null +++ b/touch/PIcon.qml @@ -0,0 +1,36 @@ + + +/** + * + * gPodder QML UI Reference Implementation + * Copyright (c) 2013, Thomas Perl + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR + * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + * + */ + +import QtQuick 2.0 + +import 'common/constants.js' as Constants +import 'icons/icons.js' as Icons + +PLabel { + id: picon + + property int size: 48 * pgst.scalef + property string icon + + text: icon + font.pixelSize: picon.size + font.family: Icons.font +} diff --git a/touch/PLabel.qml b/touch/PLabel.qml index 580cfe7..bb2a80f 100644 --- a/touch/PLabel.qml +++ b/touch/PLabel.qml @@ -20,8 +20,11 @@ import QtQuick 2.0 +import 'common/constants.js' as Constants + Text { font.pixelSize: 30 * pgst.scalef - color: 'white' + font.family: Constants.font + color: Constants.colors.text } diff --git a/touch/PListView.qml b/touch/PListView.qml index 3afcea1..670b2ce 100644 --- a/touch/PListView.qml +++ b/touch/PListView.qml @@ -26,7 +26,9 @@ ListView { anchors.fill: parent property string title + property real pushPhase: 0 + boundsBehavior: Flickable.StopAtBounds header: SlidePageHeader { title: pListView.title } PScrollDecorator { flickable: pListView } diff --git a/touch/PScrollDecorator.qml b/touch/PScrollDecorator.qml index c9a59c9..3682766 100644 --- a/touch/PScrollDecorator.qml +++ b/touch/PScrollDecorator.qml @@ -20,6 +20,8 @@ import QtQuick 2.0 +import 'common/constants.js' as Constants + Rectangle { property var flickable @@ -28,7 +30,7 @@ Rectangle { width: 5 * pgst.scalef height: flickable.visibleArea.heightRatio * flickable.height visible: flickable.visibleArea.heightRatio < 1 - color: '#ffffff' - opacity: flickable.moving ? .2 : 0 + color: Constants.colors.background + opacity: flickable.moving ? 1 : 0 Behavior on opacity { PropertyAnimation { duration: 100 } } } diff --git a/touch/PSlider.qml b/touch/PSlider.qml index 0257843..eb32ad3 100644 --- a/touch/PSlider.qml +++ b/touch/PSlider.qml @@ -20,13 +20,15 @@ import QtQuick 2.0 -Rectangle { +import 'common/constants.js' as Constants + +Item { id: slider property real value property real min: 0.0 property real max: 1.0 - property color fillColor: '#333333' + property color color: Constants.colors.highlight property real displayedValue: mouseArea.pressed ? temporaryValue : value property real temporaryValue @@ -34,7 +36,6 @@ Rectangle { signal valueChangeRequested(real newValue) clip: true - color: '#000000' height: 50 * pgst.scalef @@ -51,28 +52,20 @@ Rectangle { preventStealing: true } + Rectangle { + anchors.fill: parent + color: slider.color + opacity: .3 + } + Rectangle { id: fillBackground - color: slider.fillColor - height: parent.height * 0.8 + color: slider.color + height: parent.height width: parent.width * (parent.displayedValue - parent.min) / (parent.max - parent.min) anchors { verticalCenter: parent.verticalCenter } } - - Rectangle { - height: parent.height * 0.9 - width: height - radius: width / 2 - - color: Qt.lighter(slider.fillColor, 1.5) - - anchors { - verticalCenter: parent.verticalCenter - left: fillBackground.right - leftMargin: -(width / 2) - } - } } diff --git a/touch/PTextField.qml b/touch/PTextField.qml index 91a7a03..9506604 100644 --- a/touch/PTextField.qml +++ b/touch/PTextField.qml @@ -20,32 +20,34 @@ import QtQuick 2.0 -Rectangle { +import 'common/constants.js' as Constants + +Item { id: textField property alias text: textInput.text property string placeholderText: '' - radius: 10 * pgst.scalef height: 50 * pgst.scalef - color: 'white' TextInput { anchors { fill: parent margins: 5 * pgst.scalef } - color: 'black' + color: Constants.colors.text + selectionColor: Constants.colors.background id: textInput font.pixelSize: height + font.family: placeholder.font.family } - Text { + PLabel { + id: placeholder anchors.fill: textInput visible: !textInput.focus && (textInput.text == '') text: textField.placeholderText - color: '#aaa' + color: Constants.colors.placeholder font.pixelSize: textInput.font.pixelSize } } - diff --git a/touch/PlayerPage.qml b/touch/PlayerPage.qml index 9353084..256f2c5 100644 --- a/touch/PlayerPage.qml +++ b/touch/PlayerPage.qml @@ -22,6 +22,7 @@ import QtQuick 2.0 import 'common/util.js' as Util import 'common/constants.js' as Constants +import 'icons/icons.js' as Icons SlidePage { id: playerPage @@ -29,6 +30,7 @@ SlidePage { Flickable { id: flickable anchors.fill: parent + boundsBehavior: Flickable.StopAtBounds contentWidth: column.width contentHeight: column.height + column.spacing @@ -41,6 +43,7 @@ SlidePage { SlidePageHeader { title: 'Now playing' + color: Constants.colors.playback } Column { @@ -61,46 +64,6 @@ SlidePage { } } - IconContextMenu { - width: parent.width - - IconMenuItem { - text: player.isPlaying ? 'Pause' : 'Play' - iconSource: 'icons/' + (player.isPlaying ? 'pause_24x32.png' : 'play_24x32.png') - onClicked: { - if (player.isPlaying) { - player.pause(); - } else { - player.play(); - } - } - } - - IconMenuItem { - text: '-1m' - iconSource: 'icons/first_32x32.png' - onClicked: player.seekAndSync(player.position - 60 * 1000); - } - - IconMenuItem { - text: '-10s' - iconSource: 'icons/arrow_left_32x32.png' - onClicked: player.seekAndSync(player.position - 10 * 1000); - } - - IconMenuItem { - text: '+10s' - iconSource: 'icons/arrow_right_32x32.png' - onClicked: player.seekAndSync(player.position + 10 * 1000); - } - - IconMenuItem { - text: '+1m' - iconSource: 'icons/last_32x32.png' - onClicked: player.seekAndSync(player.position + 60 * 1000); - } - } - PLabel { anchors.horizontalCenter: parent.horizontalCenter text: Util.formatPosition(slider.displayedValue/1000, player.duration/1000) @@ -112,11 +75,56 @@ SlidePage { value: player.position min: 0 max: player.duration - fillColor: Constants.colors.playback + color: Constants.colors.playback onValueChangeRequested: { player.seekAndSync(newValue); } } + + IconContextMenu { + width: parent.width + + IconMenuItem { + text: player.isPlaying ? 'Pause' : 'Play' + color: Constants.colors.playback + icon: player.isPlaying ? Icons.pause : Icons.play + onClicked: { + if (player.isPlaying) { + player.pause(); + } else { + player.play(); + } + } + } + + IconMenuItem { + text: '-1m' + color: Constants.colors.playback + icon: Icons.first + onClicked: player.seekAndSync(player.position - 60 * 1000); + } + + IconMenuItem { + text: '-10s' + color: Constants.colors.playback + icon: Icons.arrow_left + onClicked: player.seekAndSync(player.position - 10 * 1000); + } + + IconMenuItem { + text: '+10s' + color: Constants.colors.playback + icon: Icons.arrow_right + onClicked: player.seekAndSync(player.position + 10 * 1000); + } + + IconMenuItem { + text: '+1m' + color: Constants.colors.playback + icon: Icons.last + onClicked: player.seekAndSync(player.position + 60 * 1000); + } + } } } diff --git a/touch/PodcastsPage.qml b/touch/PodcastsPage.qml index a9c2e8e..14279b0 100644 --- a/touch/PodcastsPage.qml +++ b/touch/PodcastsPage.qml @@ -22,6 +22,7 @@ import QtQuick 2.0 import 'common' import 'common/util.js' as Util +import 'icons/icons.js' as Icons SlidePage { id: podcastsPage @@ -29,7 +30,8 @@ SlidePage { PullMenu { PullMenuItem { - source: 'icons/play_24x32.png' + text: 'Now Playing' + icon: Icons.play onClicked: { pgst.loadPage('PlayerPage.qml'); podcastsPage.unPull(); @@ -37,7 +39,8 @@ SlidePage { } PullMenuItem { - source: 'icons/reload_24x28.png' + text: 'Refresh feeds' + icon: Icons.reload onClicked: { podcastsPage.unPull(); py.call('main.check_for_episodes'); @@ -45,7 +48,8 @@ SlidePage { } PullMenuItem { - source: 'icons/plus_32x32.png' + text: 'Subscribe' + icon: Icons.plus onClicked: { pgst.loadPage('Subscribe.qml'); podcastsPage.unPull(); diff --git a/touch/PullMenu.qml b/touch/PullMenu.qml index 0af5953..e130c6b 100644 --- a/touch/PullMenu.qml +++ b/touch/PullMenu.qml @@ -20,6 +20,8 @@ import QtQuick 2.0 +import 'common/constants.js' as Constants + MouseArea { id: pullMenu default property alias items: pullMenuColumn.children @@ -31,10 +33,6 @@ MouseArea { Column { id: pullMenuColumn - anchors.fill: parent - spacing: (width - 72 * pgst.scalef) / 2 - - Item { width: 1; height: 1 } } } diff --git a/touch/PullMenuItem.qml b/touch/PullMenuItem.qml index 582b002..1260f78 100644 --- a/touch/PullMenuItem.qml +++ b/touch/PullMenuItem.qml @@ -20,17 +20,14 @@ import QtQuick 2.0 -ButtonArea { +import 'common/constants.js' as Constants + +IconMenuItem { id: pullMenuItem - property alias source: img.source + alwaysShowText: true - width: 72 * pgst.scalef - height: 72 * pgst.scalef - - Image { - id: img - anchors.centerIn: parent - } + width: parent.width + height: width anchors.horizontalCenter: parent.horizontalCenter } diff --git a/touch/SectionHeader.qml b/touch/SectionHeader.qml index 621f83e..55234f6 100644 --- a/touch/SectionHeader.qml +++ b/touch/SectionHeader.qml @@ -20,6 +20,8 @@ import QtQuick 2.0 +import 'common/constants.js' as Constants + Item { property alias text: pLabel.text @@ -33,7 +35,7 @@ Item { margins: 10 * pgst.scalef } - color: '#aaa' + color: Constants.colors.secondaryHighlight } } diff --git a/touch/Settings.qml b/touch/Settings.qml index 3b6a18f..65a1bf1 100644 --- a/touch/Settings.qml +++ b/touch/Settings.qml @@ -23,10 +23,8 @@ import QtQuick 2.0 SlidePage { SlidePageHeader { title: 'Settings' } - Text { + PLabel { anchors.centerIn: parent - color: 'white' - font.pixelSize: 50 * pgst.scalef text: 'TODO' } } diff --git a/touch/SlidePage.qml b/touch/SlidePage.qml index 60c7c1c..4871fab 100644 --- a/touch/SlidePage.qml +++ b/touch/SlidePage.qml @@ -22,7 +22,7 @@ import QtQuick 2.0 Rectangle { id: page - color: '#88000000' + color: 'white' default property alias children: dragging.children property alias hasPull: dragging.hasPull @@ -52,10 +52,10 @@ Rectangle { } Rectangle { - color: 'black' + color: '#ffffff' anchors.fill: parent - opacity: page.pullPhase * 0.8 + opacity: page.pullPhase * 0.9 MouseArea { enabled: parent.opacity > 0 @@ -72,19 +72,6 @@ Rectangle { } width: 10 * pgst.scalef source: 'images/pageshadow.png' - opacity: .2 - } - - Image { - anchors { - left: parent.right - top: parent.top - bottom: parent.bottom - } - mirror: true - width: 10 * pgst.scalef - source: 'images/pageshadow.png' - opacity: .2 + opacity: .1 } } - diff --git a/touch/SlidePageHeader.qml b/touch/SlidePageHeader.qml index f18ebf6..45a8379 100644 --- a/touch/SlidePageHeader.qml +++ b/touch/SlidePageHeader.qml @@ -24,24 +24,14 @@ import 'common/constants.js' as Constants Item { id: slidePageHeader - property string title + property alias title: label.text + property alias color: label.color width: parent.width height: Constants.layout.header.height * pgst.scalef - Rectangle { - anchors { - left: parent.left - right: parent.right - top: parent.top - topMargin: slidePageHeader.height * 0.15 - } - - height: slidePageHeader.height * 0.7 - color: '#33000000' - } - - Text { + PLabel { + id: label anchors { left: parent.left right: parent.right @@ -50,11 +40,10 @@ Item { verticalCenter: parent.verticalCenter } - color: 'white' + color: Constants.colors.highlight horizontalAlignment: Text.AlignRight font.pixelSize: parent.height * .4 elide: Text.ElideRight - text: parent.title } } diff --git a/touch/StartPage.qml b/touch/StartPage.qml index 1aaa3d0..b580bd3 100644 --- a/touch/StartPage.qml +++ b/touch/StartPage.qml @@ -20,6 +20,8 @@ import QtQuick 2.0 +import 'icons/icons.js' as Icons + SlidePage { id: startPage canClose: false @@ -44,6 +46,7 @@ SlidePage { Flickable { id: flickable + boundsBehavior: Flickable.StopAtBounds Connections { target: py @@ -96,9 +99,9 @@ SlidePage { width: subscriptions.width + 2*subscriptions.anchors.margins height: subscriptions.height + 2*subscriptions.anchors.margins - Image { + PIcon { id: subscriptions - source: 'icons/plus_32x32.png' + icon: Icons.plus anchors { bottom: parent.bottom @@ -158,9 +161,9 @@ SlidePage { width: refresher.width + 2*refresher.anchors.margins height: refresher.height + 2*refresher.anchors.margins - Image { + PIcon { id: refresher - source: 'icons/reload_24x28.png' + icon: Icons.reload anchors { bottom: parent.bottom diff --git a/touch/fonts/source-sans-pro.extralight.ttf b/touch/fonts/source-sans-pro.extralight.ttf new file mode 100644 index 0000000..e28a62a Binary files /dev/null and b/touch/fonts/source-sans-pro.extralight.ttf differ diff --git a/touch/gpodder.qml b/touch/gpodder.qml index 5c3ba70..c13ecbd 100644 --- a/touch/gpodder.qml +++ b/touch/gpodder.qml @@ -20,21 +20,10 @@ import QtQuick 2.0 Rectangle { - color: '#336688' + color: 'white' width: 480 height: 800 - Image { - anchors.fill: parent - source: 'images/mask.png' - } - - Image { - anchors.fill: parent - source: 'images/noise.png' - fillMode: Image.Tile - } - Main {} } diff --git a/touch/icons/arrow_left_32x32.png b/touch/icons/arrow_left_32x32.png deleted file mode 100644 index 9ef2fc2..0000000 Binary files a/touch/icons/arrow_left_32x32.png and /dev/null differ diff --git a/touch/icons/arrow_right_32x32.png b/touch/icons/arrow_right_32x32.png deleted file mode 100644 index 97fad62..0000000 Binary files a/touch/icons/arrow_right_32x32.png and /dev/null differ diff --git a/touch/icons/cd_32x32.png b/touch/icons/cd_32x32.png deleted file mode 100644 index ec096c8..0000000 Binary files a/touch/icons/cd_32x32.png and /dev/null differ diff --git a/touch/icons/cloud_download_32x32.png b/touch/icons/cloud_download_32x32.png deleted file mode 100644 index 6bac723..0000000 Binary files a/touch/icons/cloud_download_32x32.png and /dev/null differ diff --git a/touch/icons/document_alt_stroke_24x32.png b/touch/icons/document_alt_stroke_24x32.png deleted file mode 100644 index aa6353e..0000000 Binary files a/touch/icons/document_alt_stroke_24x32.png and /dev/null differ diff --git a/touch/icons/first_32x32.png b/touch/icons/first_32x32.png deleted file mode 100644 index e84aa06..0000000 Binary files a/touch/icons/first_32x32.png and /dev/null differ diff --git a/touch/icons/iconic_fill.ttf b/touch/icons/iconic_fill.ttf new file mode 100644 index 0000000..8334254 Binary files /dev/null and b/touch/icons/iconic_fill.ttf differ diff --git a/touch/icons/icons.js b/touch/icons/icons.js new file mode 100644 index 0000000..3aecfa3 --- /dev/null +++ b/touch/icons/icons.js @@ -0,0 +1,15 @@ +var font = 'Iconic'; +var trash = '\ue05a'; +var cd = '\ue064'; +var play = '\ue047'; +var reload = '\ue030'; +var plus = '\u2795'; +var pause = '\ue049'; +var cloud_download = '\ue044'; +var star = '\u2605'; +var article = '\ue053'; +var first = '\ue04c'; +var arrow_left = '\u2190'; +var arrow_right = '\u2192'; +var last = '\ue04d'; +var aperture = '\ue026'; diff --git a/touch/icons/last_32x32.png b/touch/icons/last_32x32.png deleted file mode 100644 index 5bf194d..0000000 Binary files a/touch/icons/last_32x32.png and /dev/null differ diff --git a/touch/icons/pause_24x32.png b/touch/icons/pause_24x32.png deleted file mode 100644 index e3086f1..0000000 Binary files a/touch/icons/pause_24x32.png and /dev/null differ diff --git a/touch/icons/play_24x32.png b/touch/icons/play_24x32.png deleted file mode 100644 index e80b5d8..0000000 Binary files a/touch/icons/play_24x32.png and /dev/null differ diff --git a/touch/icons/plus_32x32.png b/touch/icons/plus_32x32.png deleted file mode 100644 index 59ab731..0000000 Binary files a/touch/icons/plus_32x32.png and /dev/null differ diff --git a/touch/icons/reload_24x28.png b/touch/icons/reload_24x28.png deleted file mode 100644 index a6f3fe4..0000000 Binary files a/touch/icons/reload_24x28.png and /dev/null differ diff --git a/touch/icons/star_32x32.png b/touch/icons/star_32x32.png deleted file mode 100644 index ba0f61e..0000000 Binary files a/touch/icons/star_32x32.png and /dev/null differ diff --git a/touch/icons/trash_stroke_32x32.png b/touch/icons/trash_stroke_32x32.png deleted file mode 100644 index 3006fec..0000000 Binary files a/touch/icons/trash_stroke_32x32.png and /dev/null differ