[-]
[+]
|
Changed |
_service:tar_git:harbour-fosdem23.spec
|
|
[-]
[+]
|
Changed |
_service
^
|
@@ -2,7 +2,7 @@
<service name="tar_git">
<param name="url">https://gitlab.com/flypig/harbour-fosdem23.git</param>
<param name="branch">master</param>
- <param name="revision">149f073ff16f9ae940330d86b3c23efd23aa5900</param>
+ <param name="revision">0.7.5</param>
</service>
</services>
|
[-]
[+]
|
Deleted |
_service:tar_git:harbour-fosdem23-0.7.2+master.20230202141330.149f073.tar.bz2/qml/CoverPage.qml
^
|
@@ -1,124 +0,0 @@
-import QtQuick 2.0
-import Sailfish.Silica 1.0
-
-CoverBackground {
- id: cover
- property var model: ListModel {}
-
- Component.onCompleted: {
- update();
- }
-
- Label {
- id: titleText
- text: qsTr("FOSDEM")
- x: Theme.paddingLarge
- width: parent.width - (2 * Theme.paddingLarge)
- fontSizeMode: Text.VerticalFit
- font.pixelSize: Theme.fontSizeLarge
- anchors {
- top: parent.top
- topMargin: Theme.paddingLarge
- }
- color: Theme.highlightColor
- }
-
- Image {
- source: "images/cover-fosdem.svg"
- width: parent.width
-
- fillMode: Image.PreserveAspectFit
- horizontalAlignment: Image.AlignHCenter
- }
-
- SilicaListView {
- anchors {
- left: parent.left
- right: parent.right
- top: titleText.bottom
- bottom: parent.bottom
- topMargin: Theme.paddingSmall
- leftMargin: Theme.paddingLarge
- rightMargin: Theme.paddingLarge
- bottomMargin: Theme.itemSizeSmall * 2
- }
- model: cover.model
- delegate: coverDelegate
- }
-
-
- CoverActionList {
- id: coverAction
-
- CoverAction {
- iconSource: "image://theme/icon-cover-next"
- onTriggered: {
- pageStack.push(Qt.resolvedUrl("ui/Lecture.qml"), {"model": cover.model.get(0)}, PageStackAction.Immediate)
- mainView.activate();
- }
- }
- }
-
- Component {
- id: coverDelegate
- ListItem {
- id: delegate
-
- anchors {
- left: parent.left
- right: parent.right
- }
- contentHeight: col.height + (Theme.paddingSmall * 2)
- Column {
- id: col
- width: parent.width
- anchors {
- left: parent.left
- right: parent.right
- top:parent.top
- }
-
- Label {
- text: model.title
- width: parent.width
- truncationMode: TruncationMode.Fade
- color: delegate.highlighted ? Theme.highlightColor : Theme.primaryColor
- font.pixelSize: Theme.fontSizeSmall
- }
-
- Label {
- text: "" + toDateString(day).split(" ")[0] + " " + start + " " + qsTr('in') + " " + room
- width: parent.width
- truncationMode: TruncationMode.Fade
- color: delegate.highlighted ? Theme.highlightColor : Theme.primaryColor
- font.pixelSize: Theme.fontSizeTiny
- }
-
- }
- }
- }
-
- Connections {
- target: mainView
-
- onFavouritesChanged: cover.update()
- }
-
- function update() {
- cover.model.clear();
- py.call("backend.select_next", [], function (events) {
- if (!events) return;
- for (var i=0; i < events.length; i++) {
- //console.log(events[i]);
- cover.model.append(events[i]);
- }
- });
- }
-
- Timer {
- interval: 1000 * 60 // one minute
- repeat: true
- running: true
- onTriggered: update()
- }
-}
|
[-]
[+]
|
Deleted |
_service:tar_git:harbour-fosdem23-0.7.2+master.20230202141330.149f073.tar.bz2/qml/ui/About.qml
^
|
@@ -1,109 +0,0 @@
-import QtQuick 2.0
-import Sailfish.Silica 1.0
-
-Page {
- id: about
- SilicaFlickable {
- anchors.fill: parent
- contentHeight: col.height
-
- Column {
- id: col
-
- width: parent.width
- anchors {
- top: parent.top
- leftMargin: Theme.paddingLarge
- rightMargin: Theme.paddingLarge
- topMargin: Theme.paddingLarge
- }
-
- spacing: Theme.paddingLarge
-
- Label {
- width: parent.width
- horizontalAlignment: Text.Center
- text: qsTr("FOSDEM23")
- font.pixelSize: Theme.fontSizeExtraLarge
- }
-
- Image {
- width: parent.width
- fillMode: Image.PreserveAspectFit
- horizontalAlignment: Image.AlignHCenter
- source: "../images/icon.svg"
- sourceSize.height: 300
- }
-
-
- Label {
- width: parent.width
- horizontalAlignment: Text.Center
- visible: false
- text: "Version"
- Component.onCompleted: {
- py.importModule("backend", function() {
- text = qsTr("Version %1").arg(py.evaluate("backend.__version__"));
- visible = true;
- })
- }
- }
-
- Separator {
- width: parent.width
- horizontalAlignment: Qt.AlignHCenter
- color: Theme.secondaryColor
- }
-
- Label {
- text: qsTr("Author: Josip Delic")
- horizontalAlignment: Text.Center
- width: parent.width
- }
-
- Label {
- text: qsTr("Redesign: Joan CiberSheep")
- horizontalAlignment: Text.Center
- width: parent.width
- }
-
- Label {
- text: qsTr("Sailfish OS Port: Fabio Comuni")
- horizontalAlignment: Text.Center
- width: parent.width
- }
-
- Label {
- text: qsTr("2023 update: David Llewellyn-Jones")
- horizontalAlignment: Text.Center
- width: parent.width
- }
-
- Label {
- //TRANSLATORS: Here %1 is FOSDEM name (Should read as 'Official FOSDEM website')
- text: qsTr("Official %1 website").arg("<a href='https://fosdem.org/'>FOSDEM</a>")
- onLinkActivated: Qt.openUrlExternally(link)
- horizontalAlignment: Text.Center
- anchors.horizontalCenter: parent.horizontalCenter
- }
-
- Label {
- text: qsTr("Source code available on <a href='https://gitlab.com/flypig/harbour-fosdem23'>GitLab</a>")
- onLinkActivated: Qt.openUrlExternally(link)
- horizontalAlignment: Text.Center
- anchors.horizontalCenter: parent.horizontalCenter
- }
-
- Label {
- text: qsTr("Powered by <b>PyOtherSide</b>")
- horizontalAlignment: Text.Center
- width: parent.width
- }
-
-
- }
-
- VerticalScrollDecorator {}
- }
-
-}
|
[-]
[+]
|
Deleted |
_service:tar_git:harbour-fosdem23-0.7.2+master.20230202141330.149f073.tar.bz2/qml/ui/Checked.qml
^
|
@@ -1,116 +0,0 @@
-import QtQuick 2.0
-import Sailfish.Silica 1.0
-import Sailfish.Silica.private 1.0
-
-TabItem {
- objectName: "Checked"
- id: checked
- property var model: ListModel {}
- property real topMargin
-
- anchors.fill: parent
- flickable: checkedlistView
-
- Component.onCompleted: checked.updateFavourites()
-
- Connections {
- target: mainView
-
- onFavouritesChanged: checked.updateFavourites()
- }
-
- function updateFavourites() {
- console.log("Updating favourites")
- checked.model.clear();
- py.call("backend.select_all", [], function (events) {
- for (var i=0; i < events.length; i++) {
- checked.model.append(events[i]);
- }
- });
- }
-
- SilicaListView {
- id: checkedlistView
-
- anchors.fill: parent
-
- header: Item {
- width: 1
- height: checked.topMargin
- }
-
- CommonPullDown {
- }
-
- VerticalScrollDecorator {}
-
- model: checked.model
- delegate: checkedDelegate
-
- ViewPlaceholder {
- enabled: checked.model.count === 0
- text: qsTr("No favourites")
- hintText: qsTr("Activate a star on a lecture to add it here")
- }
- }
-
- Component {
- id: checkedDelegate
-
- ListItem {
- id: delegate
-
- opacity: (now() > toDate(datetime_end)) ? 0.5 : 1
-
- anchors {
- left: parent.left
- right: parent.right
- }
- contentHeight: row.height + (Theme.paddingSmall * 2)
-
- Row {
- id: row
- spacing: Theme.paddingSmall
- width: parent.width - 2 * Theme.horizontalPageMargin
- x: Theme.horizontalPageMargin
-
-
-
- Column {
- id: column
- spacing: Theme.paddingSmall
- width: parent.width - saved_lecture.width - Theme.paddingSmall
-
-
- Label {
- text: model.title
- width: parent.width
- wrapMode: Text.WordWrap
- color: delegate.highlighted ? Theme.highlightColor : Theme.primaryColor
- }
-
- Label {
- text: "[" + toDateString(day) +"] " + start + " - " + end + " " + qsTr('in') + " " + room
- width: parent.width
- wrapMode: Text.WordWrap
- color: delegate.highlighted ? Theme.secondaryHighlightColor : Theme.secondaryColor
- font.pixelSize: Theme.fontSizeTiny
- }
- }
-
- Favorite {
- id: saved_lecture
- width: Theme.iconSizeMedium
- height: width
- checked: lecture_checked
- }
-
- }
-
- onClicked: {
- pageStack.push(Qt.resolvedUrl("Lecture.qml"), {"model": checked.model.get(index)})
- }
- }
- }
-
-}
|
[-]
[+]
|
Deleted |
_service:tar_git:harbour-fosdem23-0.7.2+master.20230202141330.149f073.tar.bz2/qml/ui/CommonPullDown.qml
^
|
@@ -1,26 +0,0 @@
-import QtQuick 2.0
-import Sailfish.Silica 1.0
-
-PullDownMenu {
- MenuItem {
- id: aboutMenu
- text: qsTr("About")
- onClicked: pageStack.push(Qt.resolvedUrl("About.qml"))
- }
- MenuItem {
- id: importMenu
- text: qsTr("Import")
- onClicked: pageStack.push(Qt.resolvedUrl("DownloadDialog.qml"));
- visible: true
- }
- MenuItem {
- id: guestbookMenu
- text: qsTr("Guest book")
- onClicked: pageStack.push(Qt.resolvedUrl("GuestBook.qml"));
- }
- MenuItem {
- id: mapMenu
- text: qsTr("Map")
- onClicked: pageStack.push(Qt.resolvedUrl("Map.qml"));
- }
-}
|
[-]
[+]
|
Deleted |
_service:tar_git:harbour-fosdem23-0.7.2+master.20230202141330.149f073.tar.bz2/qml/ui/DownloadDialog.qml
^
|
@@ -1,104 +0,0 @@
-import QtQuick 2.0
-import Sailfish.Silica 1.0
-
-Dialog {
- id: dialog
-
- Column {
- width: parent.width
-
- spacing: Theme.paddingLarge
-
- DialogHeader {
- title: qsTr("Download")
- }
-
- Label {
- text: qsTr("All 'Checked' entries will be deleted!")
- font.bold: true
- width: parent.width - 2 * x
- x: Theme.horizontalPageMargin
- }
-
- TextField {
- id: urlField
- text: {
- var year = new Date().getFullYear();
- return "https://fosdem.org/" + year + "/schedule/xml"
- }
- width: parent.width
- label: qsTr("URL of Fosdem Pentabarf XML")
- labelVisible: true
-
- }
-
- }
-
- onDone: {
- if (result == DialogResult.Accepted) {
- var url = urlField.text;
- py.call("backend.download_file", [url], download_end);
- }
- }
-
-}
-
-/*
-Component {
- Dialog {
- id: dialog
- title: i18n.tr("Download")
- text: i18n.tr("Url of Fosdem Pentabarf XML:")
-
- property real value: 0.0
- property bool progress_visible: false
-
- LabelBase {
- text: i18n.tr("All 'Checked' entries will be deleted!")
- }
-
- TextField {
- id: url
- text: {
- var year = new Date().getFullYear();
- return "https://fosdem.org/" + year + "/schedule/xml"
- }
- width: parent.width
- onAccepted: downloadButton.clicked();
- }
-
- ProgressBar {
- id: progress
- width: parent.width
- value: dialog.value
- visible: dialog.progress_visible
- }
-
- Button {
- id: downloadButton
- text: i18n.tr("Download")
- color: UbuntuColors.blue
- visible: !dialog.progress_visible
-
- onClicked: {
- //console.log(url.text);
- url.focus = false;
- Qt.inputMethod.hide();
- py.call("backend.download_file", [url.text], download_end);
- }
- }
-
- Button {
- //anchors.right: parent.right
- //visible: true
-
- text: i18n.tr("Cancel")
- onClicked: {
- PopupUtils.close(download_dialog.current);
- //console.log("Cancel");
- }
- }
- }
-}
-*/
-
|
[-]
[+]
|
Deleted |
_service:tar_git:harbour-fosdem23-0.7.2+master.20230202141330.149f073.tar.bz2/qml/ui/Favorite.qml
^
|
@@ -1,17 +0,0 @@
-import QtQuick 2.0
-import Sailfish.Silica 1.0
-
-Item {
- property bool checked
- width: Theme.iconSizeMedium
- height: Theme.iconSizeMedium
-
- Image {
- anchors{
- verticalCenter: parent.verticalCenter
- fill: parent
- }
-
- source: checked ? "image://theme/icon-m-favorite-selected" :"image://theme/icon-m-favorite"
- }
-}
|
[-]
[+]
|
Deleted |
_service:tar_git:harbour-fosdem23-0.7.2+master.20230202141330.149f073.tar.bz2/qml/ui/GuestBook.qml
^
|
@@ -1,57 +0,0 @@
-import QtQuick 2.0
-import Sailfish.Silica 1.0
-
-// Instructions: follow these simple steps.
-//
-// 1. Find GuestBook.qml (the file you're reading!) in the Sailfish IDE.
-// 2. Make a copy of a GuestBookEntry components.
-// 3. Edit your name and comment to your liking.
-// 4. Save the file (Ctrl-S).
-//
-// Watch as QML Live automatically updates the app in realtime.
-
-Page {
- id: page
-
- SilicaFlickable {
- anchors.fill: parent
- contentWidth: parent.width
- contentHeight: col.height + Theme.paddingLarge
-
- Column {
- id: col
- spacing: Theme.paddingLarge
- width: parent.width
-
- Image { source: Qt.resolvedUrl("../images/lom.png") }
-
- PageHeader { title: "FOSDEM'23 Guestbook" }
-
- Label {
- text: "Add your name to the Linux on Mobile FOSDEM'23 Guestbook"
- x: Theme.horizontalPageMargin
- width: parent.width - 2 * x
- wrapMode: Text.WrapAtWordBoundaryOrAnywhere
- color: Theme.secondaryHighlightColor
- }
-
- Instructions {}
-
- SectionHeader { text: "I was there!" }
-
- Column {
- width: parent.width
-
- // Add a new entry here by copying a GuestBookEntry and editing it
- // ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
-
- GuestBookEntry {
- name: "David Llewellyn-Jones"
- comment: "Writing this in advance!"
- }
- }
- }
-
- VerticalScrollDecorator {}
- }
-}
|
[-]
[+]
|
Deleted |
_service:tar_git:harbour-fosdem23-0.7.2+master.20230202141330.149f073.tar.bz2/qml/ui/GuestBookEntry.qml
^
|
@@ -1,40 +0,0 @@
-import QtQuick 2.0
-import Sailfish.Silica 1.0
-
-ListItem {
- property alias name: nameLabel.text
- property alias comment: commentLabel.text
-
- width: parent.width
- contentHeight: col.height + 2 * Theme.paddingLarge
-
- Column {
- id: col
- spacing: Theme.paddingSmall
- width: parent.width
- y: Theme.paddingLarge
-
- Label {
- id: nameLabel
- x: Theme.horizontalPageMargin
- width: parent.width - 2 * x
- }
-
- Label {
- id: commentLabel
- x: Theme.horizontalPageMargin
- width: parent.width - 2 * x
- font.pixelSize: Theme.fontSizeSmall
- color: Theme.secondaryColor
- truncationMode: TruncationMode.Fade
- maximumLineCount: 1
- }
- }
-
- onClicked: {
- pageStack.animatorPush(Qt.resolvedUrl("Comment.qml"), {
- name: name,
- comment: comment
- })
- }
-}
|
[-]
[+]
|
Deleted |
_service:tar_git:harbour-fosdem23-0.7.2+master.20230202141330.149f073.tar.bz2/qml/ui/Instructions.qml
^
|
@@ -1,43 +0,0 @@
-import QtQuick 2.0
-import Sailfish.Silica 1.0
-
-ListItem {
- property alias name: nameLabel.text
- property string comment: "Find us at the Linux on Mobile stand\nBuilding H Stand 6\n\nThen:\n\t1. Find GuestBook.qml in Sailfish IDE\n\t2. Make a copy of a GuestBookEntry\n\t3. Edit the name and comment\n\t4. Save the file (Ctrl-S)\n\nWatch as QML Live automatically updates the app in realtime"
-
- width: parent.width
- contentHeight: col.height + 2 * Theme.paddingLarge
-
- Column {
- id: col
- spacing: Theme.paddingSmall
- width: parent.width
- y: Theme.paddingLarge
-
- Label {
- id: nameLabel
- x: Theme.horizontalPageMargin
- width: parent.width - 2 * x
- text: "Instructions"
- }
-
- Label {
- id: commentLabel
- x: Theme.horizontalPageMargin
- width: parent.width - 2 * x
- font.pixelSize: Theme.fontSizeSmall
- color: Theme.secondaryColor
- truncationMode: TruncationMode.Fade
- maximumLineCount: 1
- text: "Press me for instructions"
- }
- }
-
- onClicked: {
- pageStack.animatorPush(Qt.resolvedUrl("Comment.qml"), {
- name: "Follow these simple steps",
- comment: comment,
- title: "Instructions"
- })
- }
-}
|
[-]
[+]
|
Deleted |
_service:tar_git:harbour-fosdem23-0.7.2+master.20230202141330.149f073.tar.bz2/qml/ui/Lecture.qml
^
|
@@ -1,395 +0,0 @@
-import QtQuick 2.0
-import Sailfish.Silica 1.0
-
-
-Page {
- id: lecture
- property int event_id: 0
- property var model: ListModel {}
- property var overlaps: ListModel {}
- property bool favouriteChanged
-
- function set_lecture(item) {
- lecture.model = item
- lecture.event_id = item.id
-
- lecture_start.text = item.start
- lecture_end.text = item.end
- lecture_room.text = item.room
- lecture_title.text = item.title
- lecture_subtitle.text = item.subtitle
- lecture_abstract.text = item.abstract
- lecture_description.text = item.description
- lecture_persons.text = item.persons
- lecture_checked.checked = item.lecture_checked
-
- countOverlap();
- }
-
- function countOverlap() {
- lecture.overlaps.clear()
- py.call('backend.get_overlap', [lecture.model], function (events) {
- for (var i=0; i < events.length; i++) {
- lecture.overlaps.append(events[i]);
- }
- });
- }
-
- Component.onCompleted: {
- set_lecture(lecture.model)
- favouriteChanged = false
- }
-
- onStatusChanged: {
- if (status == PageStatus.Inactive) {
- console.log("STATUS: Inactive")
- if (favouriteChanged) {
- console.log("STATUS: Favourite changed")
- mainView.favouritesChanged()
- }
- }
- }
-
- SilicaFlickable {
- contentHeight: fullColumn.height
-
- PullDownMenu {
- MenuItem {
- id: mapMenu
- text: qsTr("Map")
- onClicked: pageStack.push(Qt.resolvedUrl("Map.qml"));
- }
- }
-
- anchors.fill: parent
-
- Column {
- id: fullColumn
- spacing: Theme.paddingMedium
- width: parent.width
-
- PageHeader {
- width: parent.width
- title: qsTr('Lecture')
- }
-
- Column {
- id: mainCol
- width: parent.width - 2 * Theme.horizontalPageMargin
- x: Theme.horizontalPageMargin
-
- spacing: Theme.paddingMedium
-
- Row {
- width: parent.width
- spacing: Theme.paddingSmall
-
- Label {
- id: lecture_title
- font.bold: true
- width: parent.width - lecture_checked.width - Theme.paddingSmall
- height: contentHeight > lecture_checked.height ? contentHeight : lecture_checked.height
- verticalAlignment: Text.AlignVCenter
- wrapMode: Text.WordWrap
- }
-
- Favorite {
- id: lecture_checked
- width: Theme.iconSizeMedium
- height: width
-
- MouseArea {
- anchors.fill: parent
-
- onClicked: {
- py.call('backend.toggle', [lecture.model], function (data) {
- lecture.model.lecture_checked = data;
- lecture_checked.checked = data;
-
- countOverlap();
- favouriteChanged = true
- });
- }
- }
- }
- }
-
-
- Row {
- width: parent.width
- spacing: Theme.paddingSmall
-
- visible: lecture.overlaps.count > 0
-
- Label {
- id: overlap_label
- font.pixelSize: Theme.fontSizeTiny
- text: qsTr("Overlaps with %1 checked lectures:\n").arg(lecture.overlaps.count) + get_list_text()
- width: parent.width - overlap_button.width - Theme.paddingSmall
- height: contentHeight > overlap_button.height ? contentHeight : overlap_button.height
- verticalAlignment: Text.AlignVCenter
- wrapMode: Text.WordWrap
-
- function get_list_text() {
- var t = [];
- for(var k=0; k<lecture.overlaps.count; k++) {
- var e = lecture.overlaps.get(k);
- t.push(e.title + qsTr(' in ') + e.room);
- }
- return t.join("\n");
- }
- }
-
-
-
- IconButton {
- width: Theme.iconSizeMedium
- height: width
-
- id: overlap_button
- icon.source: "image://theme/icon-m-data-traffic?"+ (pressed
- ? Theme.highlightColor
- : Theme.primaryColor)
-
- onClicked: pageStack.push(Qt.resolvedUrl("Overlaps.qml"), {"item": lecture.model})
-
- }
-
- }
-
- Grid {
- width: parent.width
- columns: 2
- rows: 5
- spacing: Theme.paddingMedium
-
- ///
- Label {
- text: qsTr('Time')
- color: Theme.secondaryColor
- font.bold: true
- }
- Row {
- width: parent.width
-
- Label {
- id: lecture_start
- }
-
- Label { text: "-" }
-
- Label {
- id: lecture_end
- }
- }
-
- ///
- Label {
- text: qsTr('Room')
- color: Theme.secondaryColor
- font.bold: true
- }
-
- Label {
- id: lecture_room
- }
-
- ///
- Label {
- text: qsTr('Speaker')
|
[-]
[+]
|
Deleted |
_service:tar_git:harbour-fosdem23-0.7.2+master.20230202141330.149f073.tar.bz2/qml/ui/MainPage.qml
^
|
@@ -1,111 +0,0 @@
-import QtQuick 2.0
-import Sailfish.Silica 1.0
-import Sailfish.Silica.private 1.0
-import QtQuick.XmlListModel 2.0
-
-Page {
- id: mainpage
-
- property alias tabsModel: tabs.model
-
- TabView {
- id: tabs
-
- anchors.fill: parent
- currentIndex: 0
-
- header: TabBar {
- model: tabBarModel
- }
-
- model: []
- }
-
- Component {
- id: dayOneView
- Track {
- dayIndex: 0
- xmlsource: mainView.xmlsource
- topMargin: tabs.tabBarHeight
- }
- }
- Component {
- id: dayTwoView
- Track {
- dayIndex: 1
- xmlsource: mainView.xmlsource
- topMargin: tabs.tabBarHeight
- }
- }
- Component {
- id: dayThreeView
- Track {
- dayIndex: 2
- xmlsource: mainView.xmlsource
- topMargin: tabs.tabBarHeight
- }
- }
- Component {
- id: favView
- Checked {
- topMargin: tabs.tabBarHeight
- }
- }
-
- ListModel {
- id: tabBarModel
- }
-
- function updateDayModel() {
- // Dynamically create the tabs based on the downloaded data
- var weekDays = [qsTr("Sun"),
- qsTr("Mon"),
- qsTr("Tue"),
- qsTr("Wed"),
- qsTr("Thur"),
- qsTr("Fri"),
- qsTr("Sat")]
- var tabComponents = [dayOneView, dayTwoView, dayThreeView]
- tabBarModel.clear()
- var tabsModel = []
- for (var i = 0; i < Math.min(daymodel.count, tabComponents.length); ++i) {
- var weekDay = weekDays[toDate(daymodel.get(i).date).getDay()]
- tabBarModel.append({"title": weekDay})
- tabsModel.push(tabComponents[i])
- }
- tabBarModel.append({"title": "Favourites"})
- tabsModel.push(favView)
-
- tabs.model = tabsModel
- }
-
- Connections {
- target: daymodel
-
- onStatusChanged: {
- if (daymodel.status == XmlListModel.Ready) {
- updateDayModel()
- }
- }
- }
-
- Connections {
- target: mainView
-
- onXmlChanged: {
- daymodel.reload()
- }
- }
-
- XmlListModel {
- id: daymodel
- source: mainView.xmlsource
-
- query: "/schedule/day"
-
- XmlRole {
- name: "date"
- query: "@date/string()"
- }
- }
-}
|
[-]
[+]
|
Deleted |
_service:tar_git:harbour-fosdem23-0.7.2+master.20230202141330.149f073.tar.bz2/qml/ui/Map.qml
^
|
@@ -1,27 +0,0 @@
-import QtQuick 2.0
-import Sailfish.Silica 1.0
-import Sailfish.Silica.private 1.0
-import Sailfish.Gallery 1.0
-
-Page {
- id: map
-
- anchors.fill: parent
-
- SilicaFlickable {
- id: flickable
-
- anchors.fill: parent
- PullDownMenu {
- MenuItem {
- text: qsTr("Coordinates")
- onClicked: Qt.openUrlExternally("geo:50.8124,4.3807")
- }
- }
- ImageViewer {
- id: mapimage
- anchors.fill: parent
- source: "../images/campus.png"
- }
- }
-}
|
[-]
[+]
|
Deleted |
_service:tar_git:harbour-fosdem23-0.7.2+master.20230202141330.149f073.tar.bz2/qml/ui/Overlaps.qml
^
|
@@ -1,99 +0,0 @@
-import QtQuick 2.0
-import Sailfish.Silica 1.0
-
-
-
-Page {
- objectName: "Overlaps"
- id: overlaps
- property var item
- property var model: ListModel {}
-
- Component.onCompleted: {
- overlaps.model.clear()
- overlaps.model.append(overlaps.item)
- py.call('backend.get_overlap', [overlaps.item], function (events) {
- for (var i=0; i < events.length; i++) {
- overlaps.model.append(events[i]);
- }
- });
- }
-
- SilicaListView {
- id: overlapslistView
-
- header: PageHeader {
- title: qsTr('Overlaps')
- }
-
- PullDownMenu {
- MenuItem {
- id: mapMenu
- text: qsTr("Map")
- onClicked: pageStack.push(Qt.resolvedUrl("Map.qml"));
- }
- }
-
- anchors.fill: parent
- model: overlaps.model
- delegate: overlapsDelegate
-
- VerticalScrollDecorator {}
-
- ViewPlaceholder {
- enabled: overlaps.model.count === 0
- text: qsTr("No overlaps")
- }
- }
-
- Component {
- id: overlapsDelegate
-
- ListItem {
- id: delegate
-
- opacity: (now() > toDate(datetime_end)) ? 0.5 : 1
-
- anchors {
- left: parent.left
- right: parent.right
- }
- contentHeight: column.height + (Theme.paddingSmall * 2)
-
- Column {
- id: column
- spacing: Theme.paddingSmall
- width: parent.width
-
- anchors {
- leftMargin: Theme.horizontalPageMargin
- rightMargin: Theme.horizontalPageMargin
- topMargin: Theme.paddingSmall
- left: parent.left
- right: parent.right
- top:parent.top
- }
-
- Label {
- text: model.title
- width: parent.width
- wrapMode: Text.WordWrap
- color: delegate.highlighted ? Theme.highlightColor : Theme.primaryColor
- }
-
- Label {
- text: "[" + toDateString(day) +"] " + start + " - " + end + " " + qsTr('in') + " " + room
- width: parent.width
- wrapMode: Text.WordWrap
- color: delegate.highlighted ? Theme.secondaryHighlightColor : Theme.secondaryColor
- font.pixelSize: Theme.fontSizeTiny
- }
- }
-
- onClicked: {
- pageStack.push(Qt.resolvedUrl("Lecture.qml"), {"model": overlaps.model.get(index)})
- }
- }
- }
-}
-
|
[-]
[+]
|
Deleted |
_service:tar_git:harbour-fosdem23-0.7.2+master.20230202141330.149f073.tar.bz2/qml/ui/Schedule.qml
^
|
@@ -1,167 +0,0 @@
-import QtQuick 2.0
-import Sailfish.Silica 1.0
-
-
-Page {
- id: schedule
-
- property var model: ListModel {}
- property string track: ""
-
- SilicaListView {
- anchors.fill: parent
-
- header: PageHeader {
- title: qsTr("Schedule")
- description: track
- }
-
- VerticalScrollDecorator {}
-
- PullDownMenu {
- MenuItem {
- id: mapMenu
- text: qsTr("Map")
- onClicked: pageStack.push(Qt.resolvedUrl("Map.qml"));
- }
- }
-
- model: schedule.model
- delegate: scheduleDelegate
-
- ViewPlaceholder {
- enabled: schedule.model.count === 0
- text: qsTr("'No schedule info")
- }
- }
-
- Component {
- id: scheduleDelegate
-
- ListItem {
- id: delegate
- anchors {
- left: parent.left
- right: parent.right
- }
- contentHeight: row.height + (Theme.paddingMedium * 2)
-
- Row {
- id: row
- spacing: Theme.paddingSmall
-
- anchors {
- leftMargin: Theme.horizontalPageMargin
- rightMargin: Theme.horizontalPageMargin
- topMargin: Theme.paddingSmall
- left: parent.left
- right: parent.right
- top:parent.top
- }
-
- Column {
- id: column
- spacing: Theme.paddingSmall
- width: parent.width - lecture_favourite.width - Theme.paddingSmall
-
- Label {
- text: model.title
- width: parent.width
- wrapMode: Text.WordWrap
- color: delegate.highlighted ? Theme.highlightColor : Theme.primaryColor
- }
-
- Label {
- text: "[" + toDateString(day) +"] " + start + " - " + end + " " + qsTr('in') + " " + room
- width: parent.width
- wrapMode: Text.WordWrap
- color: delegate.highlighted ? Theme.secondaryHighlightColor : Theme.secondaryColor
- font.pixelSize: Theme.fontSizeTiny
- }
- }
-
- Favorite {
- id: lecture_favourite
- width: Theme.iconSizeMedium
- height: width
- checked: lecture_checked
-
- MouseArea {
- anchors.fill: parent
-
- onClicked: {
- py.call('backend.toggle', [model], function (data) {
- model.lecture_checked = data;
- //lecture_checked.checked = data;
- });
- mainView.favouritesChanged()
- }
- }
- }
-
- }
- onClicked: {
- pageStack.push(Qt.resolvedUrl("Lecture.qml"), {"model": schedule.model.get(index)})
- }
- }
- }
-}
-
-
-/*
- header: CommonHeader {
- title: i18n.tr('Schedule')
- flickable: scheduleListView
- }
-
- property var model: ListModel {}
-
- ListView {
- id: scheduleListView
- anchors.fill: parent
- model: schedule.model
- delegate: scheduleDelegate
- }
-
- Component {
- id: scheduleDelegate
-
- ListItem {
- divider.visible: false
- highlightColor: hlColor
-
- ListItemLayout {
- id: layout
- title.text: model.title
- subtitle.text: "[" + day +"] " + start + " - " + end + " " + i18n.tr('in') + " " + room
-
- Favorite {
- id: saved_lecture
- width: units.gu(2)
- height: width
- SlotsLayout.position: SlotsLayout.Leading
- checked: lecture_checked
- }
-
- ProgressionSlot {}
- }
-
- onClicked: {
- pageStack.push(Qt.resolvedUrl("Lecture.qml"), {"model": schedule.model.get(index)})
- }
- }
- }
-
- Loader {
- id: emptyStateLoader
- width: parent.width
- anchors.centerIn: parent
- active: schedule.model.count === 0
- sourceComponent: Label {
- text: i18n.tr('No schedule info')
- horizontalAlignment: Text.AlignHCenter
- textSize: Label.Medium
- }
- }
-}
-*/
|
[-]
[+]
|
Deleted |
_service:tar_git:harbour-fosdem23-0.7.2+master.20230202141330.149f073.tar.bz2/qml/ui/Track.qml
^
|
@@ -1,135 +0,0 @@
-import QtQuick 2.0
-import Sailfish.Silica 1.0
-import Sailfish.Silica.private 1.0
-import QtQuick.XmlListModel 2.0
-
-TabItem {
- id: track
- property var trackModel: ListModel {}
- property string date: ""
- property var scheduleModel: ListModel {}
- property real topMargin
- property alias xmlsource: daymodel.source
- property int dayIndex
-
- anchors.fill: parent
- flickable: flickable
-
- SilicaListView {
- id: flickable
-
- anchors.fill: parent
-
- CommonPullDown {
- }
-
- header: PageHeader {
- _titleItem.y: topMargin
- title: qsTr("Tracks")
- description: date
- }
-
- VerticalScrollDecorator {}
-
- model: track.trackModel
- delegate: trackDelegate
-
- ViewPlaceholder {
- enabled: daymodel.count === 0 && daymodel.status != XmlListModel.Loading
- text: qsTr("Empty database")
- hintText: qsTr("Select Import from the menu to load the schedule")
- }
-
- BusyIndicator {
- size: BusyIndicatorSize.Large
- anchors.centerIn: parent
- running: daymodel.status == XmlListModel.Loading
- }
- }
-
- Connections {
- target: daymodel
-
- onStatusChanged: {
- if (daymodel.status == XmlListModel.Ready) {
- updateTrackModel()
- }
- }
- }
-
- Connections {
- target: mainView
-
- onXmlChanged: {
- daymodel.reload()
- }
- }
-
-
- Component {
- id: trackDelegate
-
- ListItem {
- id: delegate
- anchors {
- left: parent.left
- right: parent.right
- }
- contentHeight: Math.max(dayLabel.height, Theme.itemSizeSmall)
-
- Label {
- id: dayLabel
- text: model.title
- width: parent.width
- anchors.verticalCenter: parent.verticalCenter
-
- leftPadding: Theme.horizontalPageMargin
- rightPadding: Theme.horizontalPageMargin
- bottomPadding: Theme.paddingMedium
- topPadding: Theme.paddingMedium
-
- color: delegate.highlighted ? Theme.highlightColor : Theme.primaryColor
- wrapMode: Text.WordWrap
- verticalAlignment: Text.AlignVCenter
- }
-
- onClicked: {
- var path = [daymodel.get(track.dayIndex).date, model.title]
- scheduleModel.clear()
- py.call("backend.find_events_by_day_track", path, function(events) {
- for (var i=0; i < events.length; i++) {
- console.log("Event: " + events[i].title)
- scheduleModel.append(events[i]);
- }
- pageStack.push(Qt.resolvedUrl("Schedule.qml"), {
- "model": scheduleModel,
- "track": model.title,
- })
- })
- }
- }
- }
-
- XmlListModel {
- id: daymodel
-
- query: "/schedule/day"
-
- XmlRole {
- name: "date"
- query: "@date/string()"
- }
- }
-
- function updateTrackModel() {
- trackModel.clear();
- date = daymodel.get(track.dayIndex).date
-
- var path = [daymodel.get(track.dayIndex).date]
- py.call("backend.find_tracks_by_day", path, function(tracks) {
- for (var i=0; i < tracks.length; i++) {
- trackModel.append(tracks[i]);
- }
- })
- }
-}
|
[-]
[+]
|
Changed |
_service:tar_git:harbour-fosdem23-0.7.5.tar.bz2/harbour-fosdem23.pro
^
|
@@ -15,12 +15,13 @@
CONFIG += sailfishapp_qml
DISTFILES += qml/* \
- qml/ui/*.qml \
+ qml/cover/*.qml \
+ qml/components/*.qml \
+ qml/pages/*.qml \
qml/images/*.png \
rpm/harbour-fosdem23.changes.in \
rpm/harbour-fosdem23.changes.run.in \
rpm/harbour-fosdem23.spec \
- rpm/harbour-fosdem23.yaml \
translations/*.ts \
harbour-fosdem23.desktop
|
[-]
[+]
|
Changed |
_service:tar_git:harbour-fosdem23-0.7.5.tar.bz2/qml/backend/__init__.py
^
|
@@ -12,7 +12,7 @@
from backend.db import select_next, count_overlap, get_overlap
-__version__ = "0.7.2"
+__version__ = "0.7.5"
def download_file(url):
|
[-]
[+]
|
Added |
_service:tar_git:harbour-fosdem23-0.7.5.tar.bz2/qml/components/CommonPullDown.qml
^
|
@@ -0,0 +1,26 @@
+import QtQuick 2.0
+import Sailfish.Silica 1.0
+
+PullDownMenu {
+ MenuItem {
+ id: aboutMenu
+ text: qsTr("About")
+ onClicked: pageStack.push(Qt.resolvedUrl("../pages/About.qml"))
+ }
+ MenuItem {
+ id: importMenu
+ text: qsTr("Import")
+ onClicked: pageStack.push(Qt.resolvedUrl("../pages/DownloadDialog.qml"));
+ visible: true
+ }
+ MenuItem {
+ id: guestbookMenu
+ text: qsTr("Guest book")
+ onClicked: pageStack.push(Qt.resolvedUrl("../pages/GuestBook.qml"));
+ }
+ MenuItem {
+ id: mapMenu
+ text: qsTr("Map")
+ onClicked: pageStack.push(Qt.resolvedUrl("../pages/Map.qml"));
+ }
+}
|
[-]
[+]
|
Added |
_service:tar_git:harbour-fosdem23-0.7.5.tar.bz2/qml/components/Favorite.qml
^
|
@@ -0,0 +1,19 @@
+import QtQuick 2.0
+import Sailfish.Silica 1.0
+
+Item {
+ property bool checked
+
+ width: Theme.iconSizeMedium
+ height: Theme.iconSizeMedium
+
+ Image {
+ anchors{
+ verticalCenter: parent.verticalCenter
+ fill: parent
+ }
+
+ source: checked ? "image://theme/icon-m-favorite-selected"
+ : "image://theme/icon-m-favorite"
+ }
+}
|
[-]
[+]
|
Added |
_service:tar_git:harbour-fosdem23-0.7.5.tar.bz2/qml/components/GuestBookEntry.qml
^
|
@@ -0,0 +1,41 @@
+import QtQuick 2.0
+import Sailfish.Silica 1.0
+
+ListItem {
+ property alias name: nameLabel.text
+ property alias comment: commentLabel.text
+
+ width: parent.width
+ contentHeight: col.height + 2 * Theme.paddingLarge
+
+ Column {
+ id: col
+ spacing: Theme.paddingSmall
+ width: parent.width
+ y: Theme.paddingLarge
+
+ Label {
+ id: nameLabel
+ x: Theme.horizontalPageMargin
+ width: parent.width - 2 * x
+ }
+
+ Label {
+ id: commentLabel
+ x: Theme.horizontalPageMargin
+ width: parent.width - 2 * x
+ font.pixelSize: Theme.fontSizeSmall
+ color: Theme.secondaryColor
+ truncationMode: TruncationMode.Fade
+ wrapMode: Text.WordWrap
+ maximumLineCount: 2
+ }
+ }
+
+ onClicked: {
+ pageStack.animatorPush(Qt.resolvedUrl("../pages/Comment.qml"), {
+ name: name,
+ comment: comment
+ })
+ }
+}
|
[-]
[+]
|
Added |
_service:tar_git:harbour-fosdem23-0.7.5.tar.bz2/qml/components/Instructions.qml
^
|
@@ -0,0 +1,50 @@
+import QtQuick 2.0
+import Sailfish.Silica 1.0
+
+ListItem {
+ property alias name: nameLabel.text
+ property string comment: qsTr("Find us at the Linux on Mobile stand\n"
+ + "Building H Stand 6\n\nThen:\n"
+ + "\t1. Find GuestBook.qml in Sailfish IDE\n"
+ + "\t2. Make a copy of a GuestBookEntry\n"
+ + "\t3. Edit the name and comment\n"
+ + "\t4. Save the file (Ctrl-S)\n\n"
+ + "Watch as QML Live automatically updates the app in realtime")
+
+ width: parent.width
+ contentHeight: col.height + 2 * Theme.paddingLarge
+
+ Column {
+ id: col
+
+ spacing: Theme.paddingSmall
+ width: parent.width
+ y: Theme.paddingLarge
+
+ Label {
+ id: nameLabel
+ x: Theme.horizontalPageMargin
+ width: parent.width - 2 * x
+ text: qsTr("Instructions")
+ }
+
+ Label {
+ id: commentLabel
+ x: Theme.horizontalPageMargin
+ width: parent.width - 2 * x
+ font.pixelSize: Theme.fontSizeSmall
+ color: Theme.secondaryColor
+ truncationMode: TruncationMode.Fade
+ maximumLineCount: 1
+ text: qsTr("Press me for instructions")
+ }
+ }
+
+ onClicked: {
+ pageStack.animatorPush(Qt.resolvedUrl("../pages/Comment.qml"), {
+ name: qsTr("Follow these simple steps"),
+ comment: comment,
+ title: qsTr("Instructions")
+ })
+ }
+}
|
[-]
[+]
|
Changed |
_service:tar_git:harbour-fosdem23-0.7.5.tar.bz2/qml/components/TopNotification.qml
^
|
(renamed from qml/ui/TopNotification.qml)
|
[-]
[+]
|
Added |
_service:tar_git:harbour-fosdem23-0.7.5.tar.bz2/qml/cover/CoverPage.qml
^
|
@@ -0,0 +1,129 @@
+import QtQuick 2.0
+import Sailfish.Silica 1.0
+
+CoverBackground {
+ id: cover
+
+ property var model: ListModel {}
+
+ Component.onCompleted: {
+ update();
+ }
+
+ Label {
+ id: titleText
+
+ text: qsTr("FOSDEM")
+ x: Theme.paddingLarge
+ width: parent.width - (2 * Theme.paddingLarge)
+ fontSizeMode: Text.VerticalFit
+ font.pixelSize: Theme.fontSizeLarge
+ anchors {
+ top: parent.top
+ topMargin: Theme.paddingLarge
+ }
+ color: Theme.highlightColor
+ }
+
+ Image {
+ source: "../images/cover-fosdem.svg"
+ width: parent.width
+
+ fillMode: Image.PreserveAspectFit
+ horizontalAlignment: Image.AlignHCenter
+ }
+
+ SilicaListView {
+ anchors {
+ left: parent.left
+ right: parent.right
+ top: titleText.bottom
+ bottom: parent.bottom
+ topMargin: Theme.paddingSmall
+ leftMargin: Theme.paddingLarge
+ rightMargin: Theme.paddingLarge
+ bottomMargin: Theme.itemSizeSmall * 2
+ }
+ model: cover.model
+ delegate: coverDelegate
+ }
+
+
+ CoverActionList {
+ id: coverAction
+
+ CoverAction {
+ iconSource: "image://theme/icon-cover-next"
+ onTriggered: {
+ //pageStack.push(Qt.resolvedUrl("../pages/Lecture.qml"), {"model": cover.model.get(0)}, PageStackAction.Immediate)
+ mainView.navigateToLecture(cover.model.get(0))
+ mainView.activate();
+ }
+ }
+ }
+
+ Component {
+ id: coverDelegate
+
+ ListItem {
+ id: delegate
+
+ anchors {
+ left: parent.left
+ right: parent.right
+ }
+ contentHeight: col.height + (Theme.paddingSmall * 2)
+
+ Column {
+ id: col
+
+ width: parent.width
+ anchors {
+ left: parent.left
+ right: parent.right
+ top:parent.top
+ }
+
+ Label {
+ text: model.title
+ width: parent.width
+ truncationMode: TruncationMode.Fade
+ color: delegate.highlighted ? Theme.highlightColor : Theme.primaryColor
+ font.pixelSize: Theme.fontSizeSmall
+ }
+
+ Label {
+ text: "" + toDateString(day).split(" ")[0] + " " + start + " " + qsTr('in') + " " + room
+ width: parent.width
+ truncationMode: TruncationMode.Fade
+ color: delegate.highlighted ? Theme.highlightColor : Theme.primaryColor
+ font.pixelSize: Theme.fontSizeTiny
+ }
+
+ }
+ }
+ }
+
+ Connections {
+ target: mainView
+
+ onFavouritesChanged: cover.update()
+ }
+
+ function update() {
+ cover.model.clear();
+ py.call("backend.select_next", [], function (events) {
+ if (!events) return;
+ for (var i=0; i < events.length; i++) {
+ cover.model.append(events[i]);
+ }
+ });
+ }
+
+ Timer {
+ interval: 1000 * 60 // one minute
+ repeat: true
+ running: true
+ onTriggered: update()
+ }
+}
|
[-]
[+]
|
Changed |
_service:tar_git:harbour-fosdem23-0.7.5.tar.bz2/qml/harbour-fosdem23.qml
^
|
@@ -1,47 +1,21 @@
import QtQuick 2.0
import Sailfish.Silica 1.0
import io.thp.pyotherside 1.4
-import "ui"
-
+import "pages"
+import "components"
ApplicationWindow {
objectName: "mainView"
id: mainView
property var path: []
-
property string xmlsource
+ property Page _mainPage
+
signal xmlChanged
signal favouritesChanged
- function download_end(data) {
- // XXX should we rather send signals?
- progressBar.visible = false
-
- py.call("backend.get_schedule_file_path", [true], function(path) {
- xmlsource = path;
- console.log("Data downloaded")
- xmlChanged();
- })
- }
-
- function load_schedule(exists) {
- console.log("load_schedule", exists);
- // this is called when app starts!
- // XXX should we rather send signals?
- if (!exists) {
- var dialog = pageStack.push(Qt.resolvedUrl("ui/DownloadDialog.qml"));
- }
- else {
- py.call("backend.get_schedule_file_path", [], function(path) {
- xmlsource = path;
- xmlChanged();
- })
- }
- }
-
- initialPage: Component { MainPage {} }
- cover: Qt.resolvedUrl("CoverPage.qml")
+ cover: Qt.resolvedUrl("cover/CoverPage.qml")
Python {
id: py
@@ -83,9 +57,30 @@
}
Component.onCompleted: {
+ _createMainPage()
py.call("backend.file_exists", [], load_schedule)
}
+ function download_end(data) {
+ progressBar.visible = false
+ py.call("backend.get_schedule_file_path", [true], function(path) {
+ xmlsource = path;
+ xmlChanged();
+ })
+ }
+
+ function load_schedule(exists) {
+ if (!exists) {
+ var dialog = pageStack.push(Qt.resolvedUrl("pages/DownloadDialog.qml"), {"backNavigation": false});
+ }
+ else {
+ py.call("backend.get_schedule_file_path", [], function(path) {
+ xmlsource = path;
+ xmlChanged();
+ })
+ }
+ }
+
function toDateString(datestr) {
return toDate(datestr).toDateString()
}
@@ -97,4 +92,22 @@
function now() {
return new Date();
}
+
+ function navigateToLecture(lecture) {
+ _resetPageStack()
+ pageStack.push(Qt.resolvedUrl("pages/Lecture.qml"),
+ {"model": lecture}, PageStackAction.Immediate)
+ }
+
+ function _createMainPage() {
+ _resetPageStack()
+ _mainPage = pageStack.replace(Qt.resolvedUrl("pages/MainPage.qml"),
+ {}, PageStackAction.Immediate)
+ }
+
+ function _resetPageStack() {
+ if (pageStack.currentPage != _mainPage) {
+ pageStack.pop(_mainPage, PageStackAction.Immediate)
+ }
+ }
}
|
[-]
[+]
|
Added |
_service:tar_git:harbour-fosdem23-0.7.5.tar.bz2/qml/pages/About.qml
^
|
@@ -0,0 +1,109 @@
+import QtQuick 2.0
+import Sailfish.Silica 1.0
+
+Page {
+ id: about
+
+ SilicaFlickable {
+ anchors.fill: parent
+ contentHeight: col.height
+
+ Column {
+ id: col
+
+ width: parent.width
+ anchors {
+ top: parent.top
+ leftMargin: Theme.paddingLarge
+ rightMargin: Theme.paddingLarge
+ topMargin: Theme.paddingLarge
+ }
+
+ spacing: Theme.paddingLarge
+
+ Label {
+ width: parent.width
+ horizontalAlignment: Text.Center
+ text: qsTr("FOSDEM23")
+ font.pixelSize: Theme.fontSizeExtraLarge
+ }
+
+ Image {
+ width: parent.width
+ fillMode: Image.PreserveAspectFit
+ horizontalAlignment: Image.AlignHCenter
+ source: "../images/icon.svg"
+ sourceSize.height: 300
+ }
+
+
+ Label {
+ width: parent.width
+ horizontalAlignment: Text.Center
+ visible: false
+ text: "Version"
+ Component.onCompleted: {
+ py.importModule("backend", function() {
+ text = qsTr("Version %1").arg(py.evaluate("backend.__version__"));
+ visible = true;
+ })
+ }
+ }
+
+ Separator {
+ width: parent.width
+ horizontalAlignment: Qt.AlignHCenter
+ color: Theme.secondaryColor
+ }
+
+ Label {
+ text: qsTr("Author: Josip Delic")
+ horizontalAlignment: Text.Center
+ width: parent.width
+ }
+
+ Label {
+ text: qsTr("Redesign: Joan CiberSheep")
+ horizontalAlignment: Text.Center
+ width: parent.width
+ }
+
+ Label {
+ text: qsTr("Sailfish OS Port: Fabio Comuni")
+ horizontalAlignment: Text.Center
+ width: parent.width
+ }
+
+ Label {
+ text: qsTr("2023 update: David Llewellyn-Jones")
+ horizontalAlignment: Text.Center
+ width: parent.width
+ }
+
+ Label {
+ //: Here %1 is FOSDEM name (Should read as 'Official FOSDEM website')
+ text: qsTr("Official %1 website").arg("<a href='https://fosdem.org/'>FOSDEM</a>")
+ onLinkActivated: Qt.openUrlExternally(link)
+ horizontalAlignment: Text.Center
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
+
+ Label {
+ //% Here %1 is replaced by the website URL
+ text: qsTr("Source code available on %1").arg("<a href='https://gitlab.com/flypig/harbour-fosdem23'>GitLab</a>")
+ onLinkActivated: Qt.openUrlExternally(link)
+ horizontalAlignment: Text.Center
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
+
+ Label {
+ text: qsTr("Powered by <b>PyOtherSide</b>")
+ horizontalAlignment: Text.Center
+ width: parent.width
+ }
+ }
+
+ VerticalScrollDecorator {}
+ }
+
+}
|
[-]
[+]
|
Added |
_service:tar_git:harbour-fosdem23-0.7.5.tar.bz2/qml/pages/Checked.qml
^
|
@@ -0,0 +1,115 @@
+import QtQuick 2.0
+import Sailfish.Silica 1.0
+import Sailfish.Silica.private 1.0
+import "../components"
+
+TabItem {
+ objectName: "Checked"
+ id: checked
+
+ property var model: ListModel {}
+ property real topMargin
+
+ anchors.fill: parent
+ flickable: checkedlistView
+
+ Component.onCompleted: checked.updateFavourites()
+
+ Connections {
+ target: mainView
+
+ onFavouritesChanged: checked.updateFavourites()
+ }
+
+ function updateFavourites() {
+ checked.model.clear();
+ py.call("backend.select_all", [], function (events) {
+ for (var i=0; i < events.length; i++) {
+ checked.model.append(events[i]);
+ }
+ });
+ }
+
+ SilicaListView {
+ id: checkedlistView
+
+ anchors.fill: parent
+
+ header: Item {
+ width: 1
+ height: checked.topMargin
+ }
+
+ CommonPullDown {
+ }
+
+ VerticalScrollDecorator {}
+
+ model: checked.model
+ delegate: checkedDelegate
+
+ ViewPlaceholder {
+ enabled: checked.model.count === 0
+ text: qsTr("No favourites")
+ hintText: qsTr("Activate a star on a lecture to add it here")
+ }
+ }
+
+ Component {
+ id: checkedDelegate
+
+ ListItem {
+ id: delegate
+
+ opacity: (now() > toDate(datetime_end)) ? 0.5 : 1
+
+ anchors {
+ left: parent.left
+ right: parent.right
+ }
+ contentHeight: row.height + (Theme.paddingSmall * 2)
+
+ Row {
+ id: row
+
+ spacing: Theme.paddingSmall
+ width: parent.width - 2 * Theme.horizontalPageMargin
+ x: Theme.horizontalPageMargin
+
+ Column {
+ id: column
+ spacing: Theme.paddingSmall
+ width: parent.width - saved_lecture.width - Theme.paddingSmall
+
+ Label {
+ text: model.title
+ width: parent.width
+ wrapMode: Text.WordWrap
+ color: delegate.highlighted ? Theme.highlightColor : Theme.primaryColor
+ }
+
+ Label {
+ text: "[" + toDateString(day) +"] " + start + " - " + end + " " + qsTr('in') + " " + room
+ width: parent.width
+ wrapMode: Text.WordWrap
+ color: delegate.highlighted ? Theme.secondaryHighlightColor : Theme.secondaryColor
+ font.pixelSize: Theme.fontSizeTiny
+ }
+ }
+
+ Favorite {
+ id: saved_lecture
+
+ width: Theme.iconSizeMedium
+ height: width
+ checked: lecture_checked
+ }
+ }
+
+ onClicked: {
+ pageStack.push(Qt.resolvedUrl("Lecture.qml"), {"model": checked.model.get(index)})
+ }
+ }
+ }
+
+}
|
[-]
[+]
|
Added |
_service:tar_git:harbour-fosdem23-0.7.5.tar.bz2/qml/pages/DownloadDialog.qml
^
|
@@ -0,0 +1,45 @@
+import QtQuick 2.0
+import Sailfish.Silica 1.0
+
+Dialog {
+ id: dialog
+
+ Column {
+ width: parent.width
+
+ spacing: Theme.paddingLarge
+
+ DialogHeader {
+ title: qsTr("Download")
+ }
+
+ Label {
+ text: qsTr("All 'Checked' entries will be deleted!")
+ font.bold: true
+ width: parent.width - 2 * x
+ x: Theme.horizontalPageMargin
+ }
+
+ TextField {
+ id: urlField
+
+ text: {
+ var year = new Date().getFullYear();
+ return "https://fosdem.org/" + year + "/schedule/xml"
+ }
+ width: parent.width
+ label: qsTr("URL of Fosdem Pentabarf XML")
+ labelVisible: true
+
+ }
+
+ }
+
+ onDone: {
+ if (result == DialogResult.Accepted) {
+ var url = urlField.text;
+ py.call("backend.download_file", [url], download_end);
+ }
+ }
+
+}
|
[-]
[+]
|
Added |
_service:tar_git:harbour-fosdem23-0.7.5.tar.bz2/qml/pages/GuestBook.qml
^
|
@@ -0,0 +1,194 @@
+import QtQuick 2.0
+import Sailfish.Silica 1.0
+import "../components"
+
+// Instructions: follow these simple steps.
+//
+// 1. Find GuestBook.qml (the file you're reading!) in the Sailfish IDE.
+// 2. Make a copy of a GuestBookEntry components.
+// 3. Edit your name and comment to your liking.
+// 4. Save the file (Ctrl-S).
+//
+// Watch as QML Live automatically updates the app in realtime.
+
+Page {
+ id: page
+
+ SilicaFlickable {
+ anchors.fill: parent
+ contentWidth: parent.width
+ contentHeight: col.height + Theme.paddingLarge
+
+ Column {
+ id: col
+
+ spacing: Theme.paddingLarge
+ width: parent.width
+
+ Image { source: Qt.resolvedUrl("../images/lom.png") }
+
+ PageHeader { title: qsTr("FOSDEM'23 Guestbook") }
+
+ Label {
+ text: qsTr("Add your name to the Linux on Mobile FOSDEM'23 Guestbook")
+ x: Theme.horizontalPageMargin
+ width: parent.width - 2 * x
+ wrapMode: Text.WrapAtWordBoundaryOrAnywhere
+ color: Theme.secondaryHighlightColor
+ }
+
+ Instructions {}
+
+ SectionHeader { text: qsTr("I was there!") }
+
+ Column {
+ width: parent.width
+
+ // Add a new entry here by copying a GuestBookEntry and editing it
+ // ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
+
+ GuestBookEntry {
+ name: "David Llewellyn-Jones"
+ comment: "Writing this in advance!"
+ }
+
+ GuestBookEntry {
+ name: "Yvan Sraka"
+ comment: "<3 Qt"
+ }
+ GuestBookEntry {
+ name: "Angelo Rizzi"
+ comment: "<3 Sailfish Os"
+ }
+ GuestBookEntry {
+ name: "SfietKonstantin"
+ comment: "Hello !"
+ }
+ GuestBookEntry {
+ name: "rubdos"
+ comment: "Hello from Belgium!"
+ }
+ GuestBookEntry {
+ name: "jmlich"
+ comment: "Hello from NemoMobile project..."
+ }
+ GuestBookEntry {
+ name: "Nico"
+ comment: "Thank you for the great OS starting at the J1!"
+ }
+ GuestBookEntry {
+ name: "Chris/ahappyhuman"
+ comment: "With love from Holland"
+ }
+ GuestBookEntry {
+ name: "Luis/ahappyhuman"
+ comment: "With love from France and Brazil"
+ }
+ GuestBookEntry {
+ name: "@denise:exarius.org"
+ comment: "Thanks for the demo, good luck!"
+ }
+ GuestBookEntry {
+ name: "Alex/zombie"
+ comment: "Arrrr from Romania"
+ }
+ GuestBookEntry{
+ name: "toby"
+ comment: "spaces before braces??"
+ }
+
+ GuestBookEntry {
+ name: "Angelo/ Neapolitan"
+ comment: "Never give up"
+ }
+ GuestBookEntry {
+ name: "Viktors"
+ comment: "Greetings from Latvia :)"
+ }
+ GuestBookEntry {
+ name: "FOSSapphire"
+ comment: "Hello"
+ }
+ GuestBookEntry {
+ name: "LINMOB"
+ comment: "Keep it up!"
+ }
+ GuestBookEntry {
+ name: "bionade24"
+ comment: "This is a cool easter egg!"
+ }
+ GuestBookEntry {
+ name: "Jens"
+ comment: "Open source phones - super cool!"
+ }
+ GuestBookEntry {
+ name: "cybette"
+ comment: "Sailfish 4evr!"
+ }
+ GuestBookEntry {
+ name: "Chris Simmonds"
+ comment: "Sail on Jolla"
+ }
+ GuestBookEntry {
+ name: "Andrew"
+ comment: "20 GOTO 10"
+ }
+ GuestBookEntry {
+ name: "@calum@fosstodon.org"
+ comment: "Looks great. Cant wait until Ubuntu Touch is practical for everyday use"
+ }
+ GuestBookEntry {
+ name: "@b-barry"
+ comment: "React before react"
+ }
+ GuestBookEntry {
+ name: "@juanc"
+ comment: "The web experience in native :)"
+ }
+ GuestBookEntry {
+ name: "@josuemotte"
+ comment: "Finally an alternative!"
+ }
+ GuestBookEntry {
+ name: "nico"
+ comment: "great event, good to see a lot of Jolla folks and SFOS enthusiasts here!"
+ }
+ GuestBookEntry {
+ name: "romni"
+ comment: "good looking OS! thanks for the hard work :)"
+ }
+ GuestBookEntry {
+ name: "Nathan"
+ comment: "Noice!!!!"
+ }
+ GuestBookEntry {
+ name: "Fabrixxm"
+ comment: "Back to FOSDEM!!1!!!"
+ }
+ GuestBookEntry {
+ name: "zev"
+ comment: "Hi from NetXMS!"
+ }
+ GuestBookEntry {
+ name: "niki"
+ comment: "Keep up the good work!! -- A very pleased user"
+ }
+ GuestBookEntry {
+ name: "cLx"
+ comment: "Meow! Good to see you at FOSDEM! Plz continue to keeping us away from GAFAM mobiles solutions ^^"
+ }
+ GuestBookEntry {
+ name: "WebGang"
+ comment: "Gladd to meet the Sailfish people (they fixed a small problom on my sailfish as well) at Fosdem 2023"
+ }
+ GuestBookEntry {
+ name: "imega"
+ comment: "Great to see the improvement of opensource phone OSs!"
+ }
+
+ }
+ }
+
+ VerticalScrollDecorator {}
+ }
+}
|
[-]
[+]
|
Added |
_service:tar_git:harbour-fosdem23-0.7.5.tar.bz2/qml/pages/Lecture.qml
^
|
@@ -0,0 +1,234 @@
+import QtQuick 2.0
+import Sailfish.Silica 1.0
+import "../components"
+
+Page {
+ id: lecture
+
+ property int event_id: 0
+ property var model: ListModel {}
+ property var overlaps: ListModel {}
+ property bool favouriteChanged
+
+ function set_lecture(item) {
+ lecture.model = item
+ lecture.event_id = item.id
+ lecture_start.text = item.start
+ lecture_end.text = item.end
+ lecture_room.text = item.room
+ lecture_title.text = item.title
+ lecture_subtitle.text = item.subtitle
+ lecture_abstract.text = item.abstract
+ lecture_description.text = item.description
+ lecture_persons.text = item.persons
+ lecture_checked.checked = item.lecture_checked
+
+ countOverlap();
+ }
+
+ function countOverlap() {
+ lecture.overlaps.clear()
+ py.call('backend.get_overlap', [lecture.model], function (events) {
+ for (var i=0; i < events.length; i++) {
+ lecture.overlaps.append(events[i]);
+ }
+ });
+ }
+
+ Component.onCompleted: {
+ set_lecture(lecture.model)
+ favouriteChanged = false
+ }
+
+ onStatusChanged: {
+ if (status == PageStatus.Inactive) {
+ if (favouriteChanged) {
+ mainView.favouritesChanged()
+ }
+ }
+ }
+
+ SilicaFlickable {
+ contentHeight: fullColumn.height
+
+ PullDownMenu {
+ MenuItem {
+ id: mapMenu
+ text: qsTr("Map")
+ onClicked: pageStack.push(Qt.resolvedUrl("Map.qml"));
+ }
+ }
+
+ anchors.fill: parent
+
+ Column {
+ id: fullColumn
+
+ spacing: Theme.paddingMedium
+ width: parent.width
+
+ PageHeader {
+ width: parent.width
+ title: qsTr('Lecture')
+ }
+
+ Column {
+ id: mainCol
+
+ width: parent.width - 2 * Theme.horizontalPageMargin
+ x: Theme.horizontalPageMargin
+ spacing: Theme.paddingMedium
+
+ Row {
+ width: parent.width
+ spacing: Theme.paddingSmall
+
+ Label {
+ id: lecture_title
+
+ font.bold: true
+ width: parent.width - lecture_checked.width - Theme.paddingSmall
+ height: contentHeight > lecture_checked.height ? contentHeight : lecture_checked.height
+ verticalAlignment: Text.AlignVCenter
+ wrapMode: Text.WordWrap
+ }
+
+ Favorite {
+ id: lecture_checked
+
+ width: Theme.iconSizeMedium
+ height: width
+
+ MouseArea {
+ anchors.fill: parent
+
+ onClicked: {
+ py.call('backend.toggle', [lecture.model], function (data) {
+ lecture.model.lecture_checked = data;
+ lecture_checked.checked = data;
+
+ countOverlap();
+ favouriteChanged = true
+ });
+ }
+ }
+ }
+ }
+
+
+ Row {
+ width: parent.width
+ spacing: Theme.paddingSmall
+
+ visible: lecture.overlaps.count > 0
+
+ Label {
+ id: overlap_label
+
+ font.pixelSize: Theme.fontSizeTiny
+ text: qsTr("Overlaps with %1 checked lectures:\n").arg(lecture.overlaps.count) + get_list_text()
+ width: parent.width - overlap_button.width - Theme.paddingSmall
+ height: contentHeight > overlap_button.height ? contentHeight : overlap_button.height
+ verticalAlignment: Text.AlignVCenter
+ wrapMode: Text.WordWrap
+
+ function get_list_text() {
+ var t = [];
+ for(var k=0; k<lecture.overlaps.count; k++) {
+ var e = lecture.overlaps.get(k);
+ t.push(e.title + qsTr(' in ') + e.room);
+ }
+ return t.join("\n");
+ }
+ }
+
+ IconButton {
+ id: overlap_button
+
+ width: Theme.iconSizeMedium
+ height: width
+ icon.source: "image://theme/icon-m-data-traffic?"+ (pressed
+ ? Theme.highlightColor
+ : Theme.primaryColor)
+
+ onClicked: pageStack.push(Qt.resolvedUrl("Overlaps.qml"),
+ {"item": lecture.model})
+ }
+ }
+
+ Grid {
+ width: parent.width
+ columns: 2
+ rows: 5
+ spacing: Theme.paddingMedium
+
+ Label {
+ text: qsTr('Time')
+ color: Theme.secondaryColor
+ font.bold: true
+ }
+
+ Row {
+ width: parent.width
+
+ Label {
+ id: lecture_start
+ }
+
+ Label { text: "-" }
+
+ Label {
+ id: lecture_end
+ }
+ }
+
+ Label {
+ text: qsTr('Room')
+ color: Theme.secondaryColor
+ font.bold: true
+ }
+
+ Label {
+ id: lecture_room
+ }
+
+ Label {
+ text: qsTr('Speaker')
+ color: Theme.secondaryColor
+ font.bold: true
+ }
|
[-]
[+]
|
Added |
_service:tar_git:harbour-fosdem23-0.7.5.tar.bz2/qml/pages/MainPage.qml
^
|
@@ -0,0 +1,118 @@
+import QtQuick 2.0
+import Sailfish.Silica 1.0
+import Sailfish.Silica.private 1.0
+import QtQuick.XmlListModel 2.0
+
+Page {
+ id: mainpage
+
+ property alias tabsModel: tabs.model
+
+ TabView {
+ id: tabs
+
+ anchors.fill: parent
+ currentIndex: 0
+
+ header: TabBar {
+ model: tabBarModel
+ }
+
+ model: []
+ }
+
+ Component {
+ id: dayOneView
+
+ Track {
+ dayIndex: 0
+ xmlsource: mainView.xmlsource
+ topMargin: tabs.tabBarHeight
+ }
+ }
+
+ Component {
+ id: dayTwoView
+
+ Track {
+ dayIndex: 1
+ xmlsource: mainView.xmlsource
+ topMargin: tabs.tabBarHeight
+ }
+ }
+
+ Component {
+ id: dayThreeView
+
+ Track {
+ dayIndex: 2
+ xmlsource: mainView.xmlsource
+ topMargin: tabs.tabBarHeight
+ }
+ }
+
+ Component {
+ id: favView
+
+ Checked {
+ topMargin: tabs.tabBarHeight
+ }
+ }
+
+ ListModel {
+ id: tabBarModel
+ }
+
+ function updateDayModel() {
+ // Dynamically create the tabs based on the downloaded data
+ var weekDays = [qsTr("Sun"),
+ qsTr("Mon"),
+ qsTr("Tue"),
+ qsTr("Wed"),
+ qsTr("Thur"),
+ qsTr("Fri"),
+ qsTr("Sat")]
+ var tabComponents = [dayOneView, dayTwoView, dayThreeView]
+ tabBarModel.clear()
+ var tabsModel = []
+ for (var i = 0; i < Math.min(daymodel.count, tabComponents.length); ++i) {
+ var weekDay = weekDays[toDate(daymodel.get(i).date).getDay()]
+ tabBarModel.append({"title": weekDay})
+ tabsModel.push(tabComponents[i])
+ }
+ tabBarModel.append({"title": "Favourites"})
+ tabsModel.push(favView)
+
+ tabs.model = tabsModel
+ }
+
+ Connections {
+ target: daymodel
+
+ onStatusChanged: {
+ if (daymodel.status == XmlListModel.Ready) {
+ updateDayModel()
+ }
+ }
+ }
+
+ Connections {
+ target: mainView
+
+ onXmlChanged: {
+ daymodel.reload()
+ }
+ }
+
+ XmlListModel {
+ id: daymodel
+
+ source: mainView.xmlsource
+ query: "/schedule/day"
+
+ XmlRole {
+ name: "date"
+ query: "@date/string()"
+ }
+ }
+}
|
[-]
[+]
|
Added |
_service:tar_git:harbour-fosdem23-0.7.5.tar.bz2/qml/pages/Map.qml
^
|
@@ -0,0 +1,30 @@
+import QtQuick 2.0
+import Sailfish.Silica 1.0
+import Sailfish.Silica.private 1.0
+import Sailfish.Gallery 1.0
+
+Page {
+ id: map
+
+ anchors.fill: parent
+
+ SilicaFlickable {
+ id: flickable
+
+ anchors.fill: parent
+
+ PullDownMenu {
+ MenuItem {
+ text: qsTr("Coordinates")
+ onClicked: Qt.openUrlExternally("geo:50.8124,4.3807")
+ }
+ }
+
+ ImageViewer {
+ id: mapimage
+
+ anchors.fill: parent
+ source: "../images/campus.png"
+ }
+ }
+}
|
[-]
[+]
|
Added |
_service:tar_git:harbour-fosdem23-0.7.5.tar.bz2/qml/pages/Overlaps.qml
^
|
@@ -0,0 +1,97 @@
+import QtQuick 2.0
+import Sailfish.Silica 1.0
+
+Page {
+ objectName: "Overlaps"
+ id: overlaps
+
+ property var item
+ property var model: ListModel {}
+
+ Component.onCompleted: {
+ overlaps.model.clear()
+ overlaps.model.append(overlaps.item)
+ py.call('backend.get_overlap', [overlaps.item], function (events) {
+ for (var i=0; i < events.length; i++) {
+ overlaps.model.append(events[i]);
+ }
+ });
+ }
+
+ SilicaListView {
+ id: overlapslistView
+
+ anchors.fill: parent
+ model: overlaps.model
+ delegate: overlapsDelegate
+
+ header: PageHeader {
+ title: qsTr('Overlaps')
+ }
+
+ PullDownMenu {
+ MenuItem {
+ id: mapMenu
+ text: qsTr("Map")
+ onClicked: pageStack.push(Qt.resolvedUrl("Map.qml"));
+ }
+ }
+
+ ViewPlaceholder {
+ enabled: overlaps.model.count === 0
+ text: qsTr("No overlaps")
+ }
+
+ VerticalScrollDecorator {}
+ }
+
+ Component {
+ id: overlapsDelegate
+
+ ListItem {
+ id: delegate
+
+ opacity: (now() > toDate(datetime_end)) ? 0.5 : 1
+ anchors {
+ left: parent.left
+ right: parent.right
+ }
+ contentHeight: column.height + (Theme.paddingSmall * 2)
+
+ Column {
+ id: column
+
+ spacing: Theme.paddingSmall
+ width: parent.width
+ anchors {
+ leftMargin: Theme.horizontalPageMargin
+ rightMargin: Theme.horizontalPageMargin
+ topMargin: Theme.paddingSmall
+ left: parent.left
+ right: parent.right
+ top:parent.top
+ }
+
+ Label {
+ text: model.title
+ width: parent.width
+ wrapMode: Text.WordWrap
+ color: delegate.highlighted ? Theme.highlightColor : Theme.primaryColor
+ }
+
+ Label {
+ text: "[" + toDateString(day) +"] " + start + " - " + end + " " + qsTr('in') + " " + room
+ width: parent.width
+ wrapMode: Text.WordWrap
+ color: delegate.highlighted ? Theme.secondaryHighlightColor : Theme.secondaryColor
+ font.pixelSize: Theme.fontSizeTiny
+ }
+ }
+
+ onClicked: {
+ pageStack.push(Qt.resolvedUrl("Lecture.qml"), {"model": overlaps.model.get(index)})
+ }
+ }
+ }
+}
+
|
[-]
[+]
|
Added |
_service:tar_git:harbour-fosdem23-0.7.5.tar.bz2/qml/pages/Schedule.qml
^
|
@@ -0,0 +1,107 @@
+import QtQuick 2.0
+import Sailfish.Silica 1.0
+import "../components"
+
+Page {
+ id: schedule
+
+ property var model: ListModel {}
+ property string track: ""
+
+ SilicaListView {
+ anchors.fill: parent
+ header: PageHeader {
+ title: qsTr("Schedule")
+ description: track
+ }
+ model: schedule.model
+ delegate: scheduleDelegate
+
+ PullDownMenu {
+ MenuItem {
+ id: mapMenu
+ text: qsTr("Map")
+ onClicked: pageStack.push(Qt.resolvedUrl("Map.qml"));
+ }
+ }
+
+ ViewPlaceholder {
+ enabled: schedule.model.count === 0
+ text: qsTr("'No schedule info")
+ }
+
+ VerticalScrollDecorator {}
+ }
+
+ Component {
+ id: scheduleDelegate
+
+ ListItem {
+ id: delegate
+
+ anchors {
+ left: parent.left
+ right: parent.right
+ }
+ contentHeight: row.height + (Theme.paddingMedium * 2)
+
+ Row {
+ id: row
+
+ spacing: Theme.paddingSmall
+ anchors {
+ leftMargin: Theme.horizontalPageMargin
+ rightMargin: Theme.horizontalPageMargin
+ topMargin: Theme.paddingSmall
+ left: parent.left
+ right: parent.right
+ top:parent.top
+ }
+
+ Column {
+ id: column
+
+ spacing: Theme.paddingSmall
+ width: parent.width - lecture_favourite.width - Theme.paddingSmall
+
+ Label {
+ text: model.title
+ width: parent.width
+ wrapMode: Text.WordWrap
+ color: delegate.highlighted ? Theme.highlightColor : Theme.primaryColor
+ }
+
+ Label {
+ text: "[" + toDateString(day) +"] " + start + " - " + end + " " + qsTr('in') + " " + room
+ width: parent.width
+ wrapMode: Text.WordWrap
+ color: delegate.highlighted ? Theme.secondaryHighlightColor : Theme.secondaryColor
+ font.pixelSize: Theme.fontSizeTiny
+ }
+ }
+
+ Favorite {
+ id: lecture_favourite
+
+ width: Theme.iconSizeMedium
+ height: width
+ checked: lecture_checked
+
+ MouseArea {
+ anchors.fill: parent
+ onClicked: {
+ py.call('backend.toggle', [model], function (data) {
+ model.lecture_checked = data;
+ });
+ mainView.favouritesChanged()
+ }
+ }
+ }
+ }
+
+ onClicked: {
+ pageStack.push(Qt.resolvedUrl("Lecture.qml"), {"model": schedule.model.get(index)})
+ }
+ }
+ }
+}
|
[-]
[+]
|
Added |
_service:tar_git:harbour-fosdem23-0.7.5.tar.bz2/qml/pages/Track.qml
^
|
@@ -0,0 +1,134 @@
+import QtQuick 2.0
+import Sailfish.Silica 1.0
+import Sailfish.Silica.private 1.0
+import QtQuick.XmlListModel 2.0
+import "../components"
+
+TabItem {
+ id: track
+
+ property var trackModel: ListModel {}
+ property string date: ""
+ property var scheduleModel: ListModel {}
+ property real topMargin
+ property alias xmlsource: daymodel.source
+ property int dayIndex
+
+ anchors.fill: parent
+ flickable: flickable
+
+ SilicaListView {
+ id: flickable
+
+ anchors.fill: parent
+ header: PageHeader {
+ _titleItem.y: topMargin
+ title: qsTr("Tracks")
+ description: date
+ }
+ model: track.trackModel
+ delegate: trackDelegate
+
+ CommonPullDown {}
+
+ ViewPlaceholder {
+ enabled: daymodel.count === 0 && daymodel.status != XmlListModel.Loading
+ text: qsTr("Empty database")
+ hintText: qsTr("Select Import from the menu to load the schedule")
+ }
+
+ BusyIndicator {
+ size: BusyIndicatorSize.Large
+ anchors.centerIn: parent
+ running: daymodel.status == XmlListModel.Loading
+ }
+
+ VerticalScrollDecorator {}
+ }
+
+ Connections {
+ target: daymodel
+
+ onStatusChanged: {
+ if (daymodel.status == XmlListModel.Ready) {
+ updateTrackModel()
+ }
+ }
+ }
+
+ Connections {
+ target: mainView
+
+ onXmlChanged: {
+ daymodel.reload()
+ }
+ }
+
+
+ Component {
+ id: trackDelegate
+
+ ListItem {
+ id: delegate
+
+ anchors {
+ left: parent.left
+ right: parent.right
+ }
+ contentHeight: Math.max(dayLabel.height, Theme.itemSizeSmall)
+
+ Label {
+ id: dayLabel
+
+ text: model.title
+ width: parent.width
+ anchors.verticalCenter: parent.verticalCenter
+ leftPadding: Theme.horizontalPageMargin
+ rightPadding: Theme.horizontalPageMargin
+ bottomPadding: Theme.paddingMedium
+ topPadding: Theme.paddingMedium
+ color: delegate.highlighted ? Theme.highlightColor : Theme.primaryColor
+ wrapMode: Text.WordWrap
+ verticalAlignment: Text.AlignVCenter
+ }
+
+ onClicked: {
+ var path = [daymodel.get(track.dayIndex).date, model.title]
+ scheduleModel.clear()
+ py.call("backend.find_events_by_day_track", path, function(events) {
+ for (var i=0; i < events.length; i++) {
+ console.log("Event: " + events[i].title)
+ scheduleModel.append(events[i]);
+ }
+ pageStack.push(Qt.resolvedUrl("Schedule.qml"), {
+ "model": scheduleModel,
+ "track": model.title,
+ })
+ })
+ }
+ }
+ }
+
+ XmlListModel {
+ id: daymodel
+
+ query: "/schedule/day"
+
+ XmlRole {
+ name: "date"
+ query: "@date/string()"
+ }
+ }
+
+ function updateTrackModel() {
+ trackModel.clear();
+ date = daymodel.get(track.dayIndex).date
+
+ var path = [daymodel.get(track.dayIndex).date]
+ py.call("backend.find_tracks_by_day", path, function(tracks) {
+ for (var i=0; i < tracks.length; i++) {
+ trackModel.append(tracks[i]);
+ }
+ })
+ }
+}
|
[-]
[+]
|
Changed |
_service:tar_git:harbour-fosdem23-0.7.5.tar.bz2/translations/harbour-fosdem23.ts
^
|
@@ -27,6 +27,19 @@
<source>FOSDEM23</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <source>Official %1 website</source>
+ <extracomment>Here %1 is FOSDEM name (Should read as 'Official FOSDEM website')</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Source code available on %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Powered by <b>PyOtherSide</b></source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>Checked</name>
@@ -96,6 +109,49 @@
</message>
</context>
<context>
+ <name>GuestBook</name>
+ <message>
+ <source>FOSDEM'23 Guestbook</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Add your name to the Linux on Mobile FOSDEM'23 Guestbook</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>I was there!</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>Instructions</name>
+ <message>
+ <source>Find us at the Linux on Mobile stand
+Building H Stand 6
+
+Then:
+ 1. Find GuestBook.qml in Sailfish IDE
+ 2. Make a copy of a GuestBookEntry
+ 3. Edit the name and comment
+ 4. Save the file (Ctrl-S)
+
+Watch as QML Live automatically updates the app in realtime</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Instructions</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Press me for instructions</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Follow these simple steps</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
<name>Lecture</name>
<message>
<source>Lecture</source>
@@ -195,18 +251,6 @@
<comment>Here %1 is FOSDEM name (Should read as 'Official FOSDEM website')</comment>
<translation></translation>
</message>
- <message>
- <source>Official %1 website</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Powered by <b>PyOtherSide</b></source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <source>Source code available on <a href='https://gitlab.com/flypig/harbour-fosdem23'>GitLab</a></source>
- <translation type="unfinished"></translation>
- </message>
</context>
<context>
<name>Schedule</name>
|
[-]
[+]
|
Changed |
_service:tar_git:harbour-fosdem23.changes.in
^
|
@@ -12,6 +12,26 @@
# * date Author's Name <author's email> version-release
# - Summary of changes
+* Mon Feb 6 2023 David Llewellyn-Jones <david@flypig.co.uk> 0.7.5-1
+- Remove yaml file from the spec source list
+
+* Mon Feb 6 2023 David Llewellyn-Jones <david@flypig.co.uk> 0.7.4-1
+- Added all the wonderful Linux on Mobile stand guestbook entries.
+- Thank you to everyone who came and signed the guestbook at FOSDEM 2023.
+
+* Fri Feb 3 2023 David Llewellyn-Jones <david@flypig.co.uk> 0.7.3-1
+- Restructure the project to logicially distinguish functionality levels
+- Clean-up and refactor the QML code to make it easier to read
+- Ensure all text is translatable
+- Rewind the page stack when a lecture is shown from the cover page
+
+* Thu Feb 2 2023 David Llewellyn-Jones <david@flypig.co.uk> 0.7.2-1
+- Fix storage folder to match Sailjail requirements
+- Update app name on About page
+
+* Wed Feb 1 2023 David Llewellyn-Jones <david@flypig.co.uk> 0.7.1-1
+- Ensure the Lecture page is tall enough to include the full description
+
* Wed Feb 1 2023 David Llewellyn-Jones <david@flypig.co.uk> 0.7.0-1
- Initial 2023 release
- Change the name from harbour-fosdem-qml to harbour-fosdem23 at fabrixxm's request
@@ -23,10 +43,3 @@
- The cover page now updates automatically, rather than needing to be manually triggered
- Make the map zoom and pannable
- Add Sailjail permissions support
-
-* Wed Feb 1 2023 David Llewellyn-Jones <david@flypig.co.uk> 0.7.1-1
-- Ensure the Lecture page is tall enough to include the full description
-
-* Thu Feb 2 2023 David Llewellyn-Jones <david@flypig.co.uk> 0.7.2-1
-- Fix storage folder to match Sailjail requirements
-- Update app name on About page
|
[-]
[+]
|
Deleted |
_service:tar_git:harbour-fosdem23.yaml
^
|
@@ -1,47 +0,0 @@
-Name: harbour-fosdem23
-Summary: FOSDEM23
-Version: 0.7.2
-Release: 1
-# The contents of the Group field should be one of the groups listed here:
-# https://github.com/mer-tools/spectacle/blob/master/data/GROUPS
-Group: Qt/Qt
-URL: https://gitlab.com/flypig/harbour-fosdem23
-BuildArch: noarch
-License: GPLv3
-# This must be generated before uploading a package to a remote build service.
-# Usually this line does not need to be modified.
-Sources:
-- '%{name}-%{version}.tar.bz2'
-Description: |
- The FOSDEM'23 schedule on your phone
-Configure: none
-Builder: qmake5
-
-# This section specifies build dependencies that are resolved using pkgconfig.
-# This is the preferred way of specifying build dependencies for your package.
-PkgConfigBR:
- - sailfishapp >= 1.0.3
- - Qt5Core
- - Qt5Qml
- - Qt5Quick
-
-# Build dependencies without a pkgconfig setup can be listed here
-# PkgBR:
-# - package-needed-to-build
-
-# Runtime dependencies which are not automatically detected
-Requires:
- - sailfishsilica-qt5 >= 0.10.9
- - libsailfishapp-launcher
- - pyotherside-qml-plugin-python3-qt5
- - qt5-qtdeclarative-import-xmllistmodel
-
-# All installed files
-Files:
- - '%defattr(0644,root,root,-)'
- - '%{_datadir}/%{name}'
- - '%{_datadir}/applications/%{name}.desktop'
- - '%{_datadir}/icons/hicolor/*/apps/%{name}.png'
-
-# For more information about yaml and what's supported in Sailfish OS
-# build system, please see https://wiki.merproject.org/wiki/Spectacle
|