diff --git a/Content.qml b/Content.qml index 637ea42..05dac78 100644 --- a/Content.qml +++ b/Content.qml @@ -1,18 +1,42 @@ import QtWebKit 3.0 import QtWebKit.experimental 1.0 +import QtQuick.Controls 1.3 +import QtQuick.Layouts 1.1 +import TTRSS 1.0 -WebView { - url: "content.html" +ScrollView { + id: content + property Post post + Layout.minimumWidth: 400 - // Enable communication between QML and WebKit - experimental.preferences.navigatorQtObjectEnabled: true; + WebView { + id: webView + url: "content.html" - onNavigationRequested: { - if (request.navigationType != WebView.LinkClickedNavigation) { - request.action = WebView.AcceptRequest; - } else { - request.action = WebView.IgnoreRequest; - Qt.openUrlExternally(request.url); + property Post post: content.post + + function setPost() { + experimental.evaluateJavaScript("setArticle(" + post.jsonString + ")") + } + + // Enable communication between QML and WebKit + experimental.preferences.navigatorQtObjectEnabled: true; + + onNavigationRequested: { + if (request.navigationType != WebView.LinkClickedNavigation) { + request.action = WebView.AcceptRequest; + } else { + request.action = WebView.IgnoreRequest; + Qt.openUrlExternally(request.url); + } + } + + onLoadingChanged: { + setPost() + } + + onPostChanged: { + setPost(); } } } diff --git a/Sidebar.qml b/Sidebar.qml new file mode 100644 index 0000000..1b6e5b9 --- /dev/null +++ b/Sidebar.qml @@ -0,0 +1,34 @@ +import QtQuick 2.0 +import TTRSS 1.0 +import QtQuick.Controls 1.3 +import QtQuick.Layouts 1.1 + +ScrollView { + id: item + + property Server server + property Content content + + Layout.minimumWidth: 400 + + ListView { + + focus: true + anchors.fill: parent + spacing: 1 + model: item.server.posts + + delegate: Component { + PostListItem {} + } + + highlight: Rectangle { + color: "lightblue" + opacity: 0.5 + } + + onCurrentItemChanged: { + item.content.post = server.posts[currentIndex] + } + } +} diff --git a/TheMenuBar.qml b/TheMenuBar.qml index 82bc800..94426f8 100644 --- a/TheMenuBar.qml +++ b/TheMenuBar.qml @@ -1,10 +1,10 @@ import QtQuick.Controls 1.2 +import TTRSS 1.0 MenuBar { - function loggedIn() { - return false; - } + property bool loggedIn: false + property Server server Menu { title: qsTr("File") @@ -14,7 +14,7 @@ MenuBar { } MenuItem { text: qsTr("Log Out") - enabled: loggedIn() + enabled: loggedIn } MenuSeparator { } MenuItem { @@ -29,37 +29,37 @@ MenuBar { MenuItem { text: qsTr("Reload") shortcut: "R" - enabled: loggedIn() + enabled: loggedIn } MenuItem { text: qsTr("Show &Starred") shortcut: "Ctrl+S" - enabled: loggedIn() + enabled: loggedIn } MenuItem { text: qsTr("Set &Starred") shortcut: "S" - enabled: loggedIn() + enabled: loggedIn } MenuItem { text: qsTr("Set &Unread") shortcut: "U" - enabled: loggedIn() + enabled: loggedIn } MenuItem { text: qsTr("Next") shortcut: "J" - enabled: loggedIn() + enabled: loggedIn } MenuItem { text: qsTr("Previous") shortcut: "K" - enabled: loggedIn() + enabled: loggedIn } MenuItem { text: qsTr("Open in Browser") shortcut: "N" - enabled: loggedIn() + enabled: loggedIn } } diff --git a/content.css b/content.css index 3643b4f..1e566d5 100644 --- a/content.css +++ b/content.css @@ -1,7 +1,7 @@ body { font-family: "Ubuntu", "Lucida Grande", "Tahoma", sans-serif; padding: 1em 2em 1em 2em; - font-size: 1.6em; + background: transpatent; } body.darwin { font-family: "LucidaGrande", sans-serif; diff --git a/content.html b/content.html index f28fec8..ee3e982 100644 --- a/content.html +++ b/content.html @@ -5,6 +5,7 @@ TTRSS +
diff --git a/main.qml b/main.qml index 608028d..7d77ef9 100644 --- a/main.qml +++ b/main.qml @@ -9,9 +9,13 @@ ApplicationWindow { width: 1024 height: 800 - menuBar: TheMenuBar {} + menuBar: TheMenuBar { + id: menu + server: server + } function loggedIn() { + menu.loggedIn = true; login.visible = false; server.initialize(serverLogin.serverUrl, serverLogin.sessionId); } @@ -20,24 +24,9 @@ ApplicationWindow { anchors.fill: parent orientation: Qt.Horizontal - ScrollView { - Layout.minimumWidth: 400 - - ListView { - id: listView - anchors.fill: parent - spacing: 1 - model: server.posts - delegate: delegate - highlight: Rectangle { - color: "lightblue" - opacity: 0.5 - } - focus: true - onCurrentItemChanged: { - content.experimental.evaluateJavaScript("setArticle(" + server.posts[currentIndex].jsonString + ")") - } - } + Sidebar { + server: server + content: content } Content { @@ -66,11 +55,6 @@ ApplicationWindow { id: server } - Component { - id: delegate - PostListItem {} - } - Component.onCompleted: { if(serverLogin.loggedIn()) { loggedIn(); diff --git a/qml.qrc b/qml.qrc index f92e21f..9a4f510 100644 --- a/qml.qrc +++ b/qml.qrc @@ -5,5 +5,6 @@ Content.qml Login.qml PostListItem.qml + Sidebar.qml