diff --git a/Content.qml b/Content.qml index 05dac78..2c6d465 100644 --- a/Content.qml +++ b/Content.qml @@ -16,7 +16,9 @@ ScrollView { property Post post: content.post function setPost() { - experimental.evaluateJavaScript("setArticle(" + post.jsonString + ")") + if(post) { + experimental.evaluateJavaScript("setArticle(" + post.jsonString + ")") + } } // Enable communication between QML and WebKit @@ -31,12 +33,7 @@ ScrollView { } } - onLoadingChanged: { - setPost() - } - - onPostChanged: { - setPost(); - } + onLoadingChanged: setPost() + onPostChanged: setPost() } } diff --git a/Sidebar.qml b/Sidebar.qml index 1b6e5b9..aab8072 100644 --- a/Sidebar.qml +++ b/Sidebar.qml @@ -9,9 +9,22 @@ ScrollView { property Server server property Content content + function next() { + if(listView.count > listView.currentIndex) { + listView.currentIndex++; + } + } + + function previous() { + if(listView.currentIndex > 0) { + listView.currentIndex--; + } + } + Layout.minimumWidth: 400 ListView { + id: listView focus: true anchors.fill: parent diff --git a/TheMenuBar.qml b/TheMenuBar.qml index 94426f8..3fe7cba 100644 --- a/TheMenuBar.qml +++ b/TheMenuBar.qml @@ -5,16 +5,18 @@ MenuBar { property bool loggedIn: false property Server server + property Sidebar sidebar Menu { title: qsTr("File") MenuItem { text: qsTr("Close") shortcut: "Ctrl+W" + enabled: false } MenuItem { text: qsTr("Log Out") - enabled: loggedIn + enabled: false } MenuSeparator { } MenuItem { @@ -29,37 +31,39 @@ MenuBar { MenuItem { text: qsTr("Reload") shortcut: "R" - enabled: loggedIn + enabled: false } MenuItem { text: qsTr("Show &Starred") shortcut: "Ctrl+S" - enabled: loggedIn + enabled: false } MenuItem { text: qsTr("Set &Starred") shortcut: "S" - enabled: loggedIn + enabled: false } MenuItem { text: qsTr("Set &Unread") shortcut: "U" - enabled: loggedIn + enabled: false } MenuItem { text: qsTr("Next") shortcut: "J" enabled: loggedIn + onTriggered: sidebar.next() } MenuItem { text: qsTr("Previous") shortcut: "K" enabled: loggedIn + onTriggered: sidebar.previous() } MenuItem { text: qsTr("Open in Browser") shortcut: "N" - enabled: loggedIn + enabled: false } } @@ -68,14 +72,17 @@ MenuBar { MenuItem { text: qsTr("Zoom In") shortcut: "Ctrl++" + enabled: false } MenuItem { text: qsTr("Zoom Out") shortcut: "Ctrl+-" + enabled: false } MenuItem { text: qsTr("Reset") shortcut: "Ctrl+0" + enabled: false } } @@ -84,6 +91,7 @@ MenuBar { MenuItem { text: qsTr("Reset to default") shortcut: "Ctrl+D" + enabled: false } } diff --git a/content.js b/content.js index 8055858..8f808aa 100644 --- a/content.js +++ b/content.js @@ -35,5 +35,10 @@ function setArticle(article) { if(article.author && article.author.length > 0) $("author").innerHTML = "– " + article.author $("article").innerHTML = article.content; + + var as = $("article").getElementsByTagName("a"); + for(var i = 0; i <= as.length; i++) { + as[i].target = ""; + } } } diff --git a/main.qml b/main.qml index 7d77ef9..7383a73 100644 --- a/main.qml +++ b/main.qml @@ -12,6 +12,7 @@ ApplicationWindow { menuBar: TheMenuBar { id: menu server: server + sidebar: sidebar } function loggedIn() { @@ -25,6 +26,7 @@ ApplicationWindow { orientation: Qt.Horizontal Sidebar { + id: sidebar server: server content: content } diff --git a/post.cpp b/post.cpp index 49617e8..8386048 100644 --- a/post.cpp +++ b/post.cpp @@ -20,7 +20,7 @@ Post::Post(QJsonObject post, QObject *parent) : QObject(parent) timestamp.setTime_t(post.value("updated").toInt()); mDate = timestamp; mContent = post.value("content").toString().trimmed(); - mExcerpt = post.value("excerpt").toString().trimmed(); + mExcerpt = post.value("excerpt").toString().remove(QRegExp("<[^>]*>")).replace("…", " ...").trimmed().replace("(\\s+)", " ").replace("\n", ""); mStarred = post.value("marked").toBool(); mRead = !post.value("unread").toBool();