From 99cf0780c1cd0176a380a422f7a3b9deca661259 Mon Sep 17 00:00:00 2001 From: Thomas Perl Date: Fri, 7 Feb 2014 17:23:56 +0100 Subject: [PATCH] Redesign --- common/constants.js | 12 ++- touch/ButtonArea.qml | 8 +- touch/CoverArt.qml | 8 +- touch/Directory.qml | 2 + touch/EpisodeDetail.qml | 1 + touch/EpisodeItem.qml | 36 +++++---- touch/EpisodesPage.qml | 7 +- touch/IconContextMenu.qml | 4 +- touch/IconMenuItem.qml | 14 +++- touch/Main.qml | 1 + touch/PBusyIndicator.qml | 22 ++--- touch/PIcon.qml | 36 +++++++++ touch/PLabel.qml | 5 +- touch/PListView.qml | 2 + touch/PScrollDecorator.qml | 6 +- touch/PSlider.qml | 31 +++---- touch/PTextField.qml | 16 ++-- touch/PlayerPage.qml | 90 +++++++++++---------- touch/PodcastsPage.qml | 10 ++- touch/PullMenu.qml | 6 +- touch/PullMenuItem.qml | 15 ++-- touch/SectionHeader.qml | 4 +- touch/Settings.qml | 4 +- touch/SlidePage.qml | 21 +---- touch/SlidePageHeader.qml | 21 ++--- touch/StartPage.qml | 11 ++- touch/fonts/source-sans-pro.extralight.ttf | Bin 0 -> 119324 bytes touch/gpodder.qml | 13 +-- touch/icons/arrow_left_32x32.png | Bin 239 -> 0 bytes touch/icons/arrow_right_32x32.png | Bin 270 -> 0 bytes touch/icons/cd_32x32.png | Bin 394 -> 0 bytes touch/icons/cloud_download_32x32.png | Bin 436 -> 0 bytes touch/icons/document_alt_stroke_24x32.png | Bin 214 -> 0 bytes touch/icons/first_32x32.png | Bin 271 -> 0 bytes touch/icons/iconic_fill.ttf | Bin 0 -> 18080 bytes touch/icons/icons.js | 15 ++++ touch/icons/last_32x32.png | Bin 281 -> 0 bytes touch/icons/pause_24x32.png | Bin 146 -> 0 bytes touch/icons/play_24x32.png | Bin 217 -> 0 bytes touch/icons/plus_32x32.png | Bin 161 -> 0 bytes touch/icons/reload_24x28.png | Bin 357 -> 0 bytes touch/icons/star_32x32.png | Bin 378 -> 0 bytes touch/icons/trash_stroke_32x32.png | Bin 291 -> 0 bytes 43 files changed, 239 insertions(+), 182 deletions(-) create mode 100644 touch/PIcon.qml create mode 100644 touch/fonts/source-sans-pro.extralight.ttf delete mode 100644 touch/icons/arrow_left_32x32.png delete mode 100644 touch/icons/arrow_right_32x32.png delete mode 100644 touch/icons/cd_32x32.png delete mode 100644 touch/icons/cloud_download_32x32.png delete mode 100644 touch/icons/document_alt_stroke_24x32.png delete mode 100644 touch/icons/first_32x32.png create mode 100644 touch/icons/iconic_fill.ttf create mode 100644 touch/icons/icons.js delete mode 100644 touch/icons/last_32x32.png delete mode 100644 touch/icons/pause_24x32.png delete mode 100644 touch/icons/play_24x32.png delete mode 100644 touch/icons/plus_32x32.png delete mode 100644 touch/icons/reload_24x28.png delete mode 100644 touch/icons/star_32x32.png delete mode 100644 touch/icons/trash_stroke_32x32.png 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 0000000000000000000000000000000000000000..e28a62a10aac23c78c44c360b3089b7754c70489 GIT binary patch literal 119324 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 diff --git a/touch/icons/arrow_right_32x32.png b/touch/icons/arrow_right_32x32.png deleted file mode 100644 index 97fad62c1d38c8bba7f95e9eca1ce5befcbfc9d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 270 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1G8$4YcLn>~)nf{R1!9bvOeJ^8A5{sHiQ((^lwVZ-DX(5%S z6}!9kJ^8!B{Z_}}VYs2RF{n!Di)7sFYuhI86v&Z{%BF<2I_XgYYz R^Dxlu44$rjF6*2Ung9}WXN~{> diff --git a/touch/icons/cd_32x32.png b/touch/icons/cd_32x32.png deleted file mode 100644 index ec096c8756ce573000f029eb42bd72f3a0df7195..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 394 zcmV;50d@X~P)759*9$_F-q?A5cMW%55j?E)IQIB)E^WpK&DT?FAN?-syM@S5C&<)=`|FJ9p`q5Cs&;N zfosE2;KUgSvsyA#tR&ep672pwRO$F#HFq(I0@snb)`tR4AyMEkGM7v0z68#kkP=ZN z(j4H_^9Qnu7KC9-nwK^l%J8X}=n6aWAK07*qoM6N<$f@z7O>Hq)$ diff --git a/touch/icons/cloud_download_32x32.png b/touch/icons/cloud_download_32x32.png deleted file mode 100644 index 6bac723ede60cfc7e67740e0c6fb434a5c82b697..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 436 zcmV;l0ZaagP)j}{ZO4|$5%A1@(oDvx(^=V2LJ2(5JmqtU;(n`U$VhTVLAm{bY{#)OrjjoCYqQQ~i*7 zpGO2DQ^P_U+k{itq6k6MBhK7DSr z1<%~X^wgl##FWaylc_d9MHQYdjv*Ddl79HxS@0iW;%PZhe~Q7;dxnGtGn>O6`T43- zq8x4rmDmRhEVmdK II;Vst0MY40iU0rr diff --git a/touch/icons/first_32x32.png b/touch/icons/first_32x32.png deleted file mode 100644 index e84aa06055deb84d05bb78d5212f6564029a997f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 271 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1G8$DedLn>}PnV!hipup1_YBk~R2ER)aU%6#FHaaE-UyuIc z@MZq{*?#8F9h4TGNOsG$yP(Hms@fDVpC`ag>dJb_9gD-vCoB##{m>G1w4r6!PDagA zW9Fq-Ryv*KeV$qEmF&B$MAdxG@|9(eof#c<`y8^f0$EH}boV16w*`R`kL$}?-TzzH)nPx^=~U9?H&-i$xXOpPzjiE~XBO<bP0l+XkKQkHAa diff --git a/touch/icons/iconic_fill.ttf b/touch/icons/iconic_fill.ttf new file mode 100644 index 0000000000000000000000000000000000000000..83342540c1e765d6fda361d6f2ca89317799f437 GIT binary patch literal 18080 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 V2Cv_}uZ7E>y59znGX9^I{|hi4Ph0>1 literal 0 HcmV?d00001 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 5bf194de7fc9739ddbe307e55f16c04e976778dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 281 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1GyFFbTLn>}vnV!hipup1_Y84>6a`p?(uWqNCI9#G$JzLEF z&$za3=T1qbuF5rRs#Q-evT-;yzxtHHoMh4=Xq`Bvt))>>Du``YriXOKvW1BYI@^{t z`kU-vy^}Cy?(E|eJvNH7NiMZ1%g)u}+*A96r8r8Q*OMt!>dvq3ptk*)EP0EJ6Asol zvNcXHzjrEQMj`vEM2pvaCUbXbhGs2)6mREt;kiWE1P5=Uh(Ipg(}}&DTTGixmtXky bM<9VAE{mH*#ZvY)&>IY%u6{1-oD!MDSr z1<%~X^wgl##FWaylc_d9MJApujv*Dd-kjYi$Y8+1YDSr z1<%~X^wgl##FWaylc_d9Mb(}zjv*Ddu1q_~+n^x8;;+5w$W|xssE4UOCSCVz@`U8} zsBu5Jv0?Altt_qlF5Ep!KAJ9Kt<3z>lW}mriJbG61e@Od%26NmdW!{gclbZ9apCsM zT(*z9uar;fSBF=u(J!CSqL39&c7&bO4_3|Q4%>6#Rmar$E&JXx@i1g$uh7~yS?ev( O84RATelF{r5}E*er%x{c diff --git a/touch/icons/plus_32x32.png b/touch/icons/plus_32x32.png deleted file mode 100644 index 59ab731237420c85f9318828fe309bb0719f0511..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 161 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1G&YmugAr-gYTyx|C>Sl3x`@dczmezh7B_=o>}we zS>($%(uI~l#S9FUugcUJ7%KL&|7ihn?=w$hU}kXf_J9 BGUEUM diff --git a/touch/icons/reload_24x28.png b/touch/icons/reload_24x28.png deleted file mode 100644 index a6f3fe43be1afd5ac916016cb273ba3f102d45d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 357 zcmV-r0h<1aP)#TM@W0FDhV07_D0ZuEn%pbI6Sobo< zJg*u!-BCTgAh<74WXaGEOU+BExA)r;aL?_<_z5rofU)5VfRq(D00000NkvXXu0mjf D3?GzY diff --git a/touch/icons/star_32x32.png b/touch/icons/star_32x32.png deleted file mode 100644 index ba0f61e1d0a3d272a993e7f4f7478211d85808b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 378 zcmV-=0fqjFP)8sBp_iDzyarAw1WAM3ecZkh7`J5gEhu&4pqV*4e4|lg+3GD^+XsA~XB$*lDHj46y zK}L$+l1}&~%)Lsw-$J==Qs9cQ14=@Ijxm2HF+g*n^Gd9ZqQAa!wFvjDIRjvh*mJ(U zGl0G0YKVJUjtd@Rj&U`_JuAup=Fs3xs2>jXhBCku=+q1eb?7ls=(ns5{=Z4+Pw6MX Y0Q9$?3vMd4=>Px#07*qoM6N<$f>GX{1ONa4 diff --git a/touch/icons/trash_stroke_32x32.png b/touch/icons/trash_stroke_32x32.png deleted file mode 100644 index 3006fec3be380417c2c75a8c624917b391266882..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 291 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1GM?GB}Ln>~)3BSmBRDq`_zsbBwxkSYM)$Ah^t(ufAoZ^`3 zrd-N0nHF@yab-fWrEir01EYZ9g~-wc*O6^4=%$RjFqgWftx_ zZ}iZy=0V~NhVn}lH!iz0?O$;!UA3a0LF?(R;vHMds0&0q}QsCDi`^L+-}tNZc@J2t|9oqKQEDO#%1sI1v7P;c22t&_hG3_ h