2017-06-01 17:13:51 +03:00
|
|
|
/*
|
|
|
|
Copyright (C) 2013 Jolla Ltd.
|
|
|
|
Contact: Thomas Perl <thomas.perl@jollamobile.com>
|
|
|
|
All rights reserved.
|
|
|
|
|
|
|
|
You may use this file under the terms of BSD license as follows:
|
|
|
|
|
|
|
|
Redistribution and use in source and binary forms, with or without
|
|
|
|
modification, are permitted provided that the following conditions are met:
|
|
|
|
* Redistributions of source code must retain the above copyright
|
|
|
|
notice, this list of conditions and the following disclaimer.
|
|
|
|
* Redistributions in binary form must reproduce the above copyright
|
|
|
|
notice, this list of conditions and the following disclaimer in the
|
|
|
|
documentation and/or other materials provided with the distribution.
|
|
|
|
* Neither the name of the Jolla Ltd nor the
|
|
|
|
names of its contributors may be used to endorse or promote products
|
|
|
|
derived from this software without specific prior written permission.
|
|
|
|
|
|
|
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
|
|
|
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
|
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
|
|
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR
|
|
|
|
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
|
|
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
|
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
|
|
|
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
|
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
|
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
|
*/
|
|
|
|
|
|
|
|
import QtQuick 2.0
|
|
|
|
import Sailfish.Silica 1.0
|
|
|
|
import "../lib/API.js" as Logic
|
2017-06-07 08:56:42 +03:00
|
|
|
import "./components/"
|
2017-06-01 17:13:51 +03:00
|
|
|
|
|
|
|
|
|
|
|
Page {
|
2017-06-02 16:51:17 +03:00
|
|
|
id: mainPage
|
2017-06-07 17:09:41 +03:00
|
|
|
property bool isFirstPage: true
|
2017-06-01 17:13:51 +03:00
|
|
|
|
|
|
|
// The effective value will be restricted by ApplicationWindow.allowedOrientations
|
|
|
|
allowedOrientations: Orientation.All
|
|
|
|
|
2017-06-07 08:56:42 +03:00
|
|
|
DockedPanel {
|
|
|
|
id: infoPanel
|
|
|
|
open: true
|
|
|
|
width: mainPage.isPortrait ? parent.width : Theme.itemSizeLarge
|
|
|
|
height: mainPage.isPortrait ? Theme.itemSizeLarge : parent.height
|
|
|
|
dock: mainPage.isPortrait ? Dock.Bottom : Dock.Right
|
|
|
|
Navigation {
|
|
|
|
id: navigation
|
|
|
|
isPortrait: !mainPage.isPortrait
|
|
|
|
onSlideshowShow: {
|
|
|
|
console.log(vIndex)
|
|
|
|
slideshow.positionViewAtIndex(vIndex, ListView.SnapToItem)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2017-06-07 17:09:41 +03:00
|
|
|
VisualItemModel {
|
|
|
|
id: visualModel
|
|
|
|
MyList{
|
|
|
|
id: tlHome;
|
|
|
|
title: qsTr("Home")
|
|
|
|
type: "timelines/home"
|
|
|
|
mdl: Logic.modelTLhome
|
|
|
|
width: parent.width
|
|
|
|
height: parent.height
|
|
|
|
onOpenDrawer: infoPanel.open = setDrawer
|
|
|
|
}
|
|
|
|
MyList{
|
|
|
|
id: tlPublic;
|
|
|
|
title: qsTr("Timeline")
|
|
|
|
type: "timelines/public"
|
|
|
|
mdl: Logic.modelTLpublic
|
|
|
|
width: parent.width
|
|
|
|
height: parent.height
|
|
|
|
onOpenDrawer: infoPanel.open = setDrawer
|
|
|
|
}
|
|
|
|
MyList{
|
|
|
|
id: tlNotifications;
|
|
|
|
title: qsTr("Notifications")
|
|
|
|
type: "notifications"
|
|
|
|
mdl: Logic.modelTLnotifications
|
|
|
|
width: parent.width
|
|
|
|
height: parent.height
|
|
|
|
onOpenDrawer: infoPanel.open = setDrawer
|
|
|
|
//delegate: Notification {}
|
|
|
|
}
|
|
|
|
MyList{
|
|
|
|
property string search;
|
|
|
|
id: tlSearch;
|
|
|
|
title: qsTr("Search")
|
|
|
|
type: "search"
|
|
|
|
mdl: Logic.modelTLsearch
|
|
|
|
width: parent.width
|
|
|
|
height: parent.height
|
|
|
|
onOpenDrawer: infoPanel.open = setDrawer
|
|
|
|
delegate: Notification {}
|
|
|
|
header: SearchField {
|
|
|
|
width: parent.width
|
|
|
|
text: tlSearch.search
|
|
|
|
placeholderText: "Search"
|
|
|
|
labelVisible: false
|
|
|
|
EnterKey.iconSource: "image://theme/icon-m-enter-close"
|
|
|
|
EnterKey.onClicked: {
|
|
|
|
tlSearch.search = text
|
|
|
|
focus = false
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2017-06-01 17:13:51 +03:00
|
|
|
|
2017-06-07 08:56:42 +03:00
|
|
|
SlideshowView {
|
|
|
|
id: slideshow
|
|
|
|
width: parent.width
|
|
|
|
height: parent.height
|
|
|
|
itemWidth: parent.width
|
|
|
|
clip: true
|
|
|
|
onCurrentIndexChanged: {
|
|
|
|
navigation.slideshowIndexChanged(currentIndex)
|
2017-06-02 16:51:17 +03:00
|
|
|
}
|
|
|
|
|
2017-06-07 08:56:42 +03:00
|
|
|
anchors {
|
|
|
|
fill: parent
|
|
|
|
leftMargin: 0
|
|
|
|
top: parent.top
|
|
|
|
topMargin: 0
|
|
|
|
rightMargin: mainPage.isPortrait ? 0 : infoPanel.visibleSize
|
|
|
|
bottomMargin: mainPage.isPortrait ? infoPanel.visibleSize : 0
|
|
|
|
}
|
2017-06-07 17:09:41 +03:00
|
|
|
model: visualModel
|
|
|
|
Component.onCompleted: {
|
2017-06-07 08:56:42 +03:00
|
|
|
}
|
2017-06-01 17:13:51 +03:00
|
|
|
}
|
|
|
|
|
2017-06-07 17:09:41 +03:00
|
|
|
function onLinkActivated(href){
|
|
|
|
if (href[0] === '#' || href[0] === '@' ) {
|
|
|
|
slideshow.positionViewAtIndex(3, ListView.SnapToItem)
|
|
|
|
navigation.navigateTo('search')
|
2017-06-07 08:56:42 +03:00
|
|
|
|
2017-06-07 17:09:41 +03:00
|
|
|
} else {
|
|
|
|
pageStack.push(Qt.resolvedUrl("Browser.qml"), {"href" : href})
|
|
|
|
}
|
2017-06-01 17:13:51 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|