From ddb54f398c349836fa142cf8b106e78a42d65a18 Mon Sep 17 00:00:00 2001 From: Jeena Date: Mon, 9 Feb 2015 00:37:31 +0100 Subject: [PATCH] first steps to mark read --- PostListItem.qml | 2 +- Sidebar.qml | 6 ++++++ TheMenuBar.qml | 4 +++- main.qml | 1 + post.cpp | 5 +++++ post.h | 5 +++-- tinytinyrss.cpp | 6 ++++++ tinytinyrss.h | 2 ++ 8 files changed, 27 insertions(+), 4 deletions(-) diff --git a/PostListItem.qml b/PostListItem.qml index 89555cb..a5c3012 100644 --- a/PostListItem.qml +++ b/PostListItem.qml @@ -47,7 +47,7 @@ Component { } Label { text: title - color: read ? "gray" : this.color + color: read ? "gray" : "black" font.pointSize: headLinefontSize textFormat: Text.RichText wrapMode: Text.WrapAtWordBoundaryOrAnywhere diff --git a/Sidebar.qml b/Sidebar.qml index f17bc48..40f31ea 100644 --- a/Sidebar.qml +++ b/Sidebar.qml @@ -9,6 +9,7 @@ ScrollView { property Server server property Content content + property Post previousPost style: ScrollViewStyle { transientScrollBars: true @@ -48,8 +49,13 @@ ScrollView { } onCurrentItemChanged: { + if(previousPost) { + previousPost.read = true; + } item.content.post = server.posts[currentIndex] content.flickableItem.contentY = 0 + + previousPost = item.content.post } } } diff --git a/TheMenuBar.qml b/TheMenuBar.qml index fd32a4f..48e3408 100644 --- a/TheMenuBar.qml +++ b/TheMenuBar.qml @@ -5,6 +5,7 @@ MenuBar { property bool loggedIn: false property Server server property Sidebar sidebar + property Content content Menu { title: qsTr("File") @@ -45,7 +46,8 @@ MenuBar { MenuItem { text: qsTr("Set &Unread") shortcut: "U" - enabled: false + enabled: true + onTriggered: content.post.read = false } MenuItem { text: qsTr("Next") diff --git a/main.qml b/main.qml index e2f3461..374ce63 100644 --- a/main.qml +++ b/main.qml @@ -21,6 +21,7 @@ ApplicationWindow { id: menu server: server sidebar: sidebar + content: content } function loggedIn() { diff --git a/post.cpp b/post.cpp index 8386048..ce64de0 100644 --- a/post.cpp +++ b/post.cpp @@ -34,3 +34,8 @@ Post::~Post() } +void Post::setRead(bool r) +{ + mRead = r; + emit readChanged(mRead); +} diff --git a/post.h b/post.h index 0a88f27..6a8bf59 100644 --- a/post.h +++ b/post.h @@ -19,7 +19,7 @@ class Post : public QObject Q_PROPERTY(QString content READ content CONSTANT) Q_PROPERTY(QString excerpt READ excerpt CONSTANT) Q_PROPERTY(bool starred READ starred NOTIFY starredChanged) - Q_PROPERTY(bool read READ read NOTIFY readChanged) + Q_PROPERTY(bool read READ read WRITE setRead NOTIFY readChanged) Q_PROPERTY(QString jsonString READ jsonString CONSTANT) public: @@ -36,7 +36,8 @@ public: QString content() const { return mContent; } QString excerpt() const { return mExcerpt; } bool starred() const { return mStarred; } - bool read() const { return mRead; } + bool read() { return mRead; } + void setRead(bool r); QString jsonString() const { return mJsonString; } signals: diff --git a/tinytinyrss.cpp b/tinytinyrss.cpp index abb719f..981bf89 100644 --- a/tinytinyrss.cpp +++ b/tinytinyrss.cpp @@ -76,6 +76,7 @@ void TinyTinyRSS::reply() { QJsonObject postJson = posts.at(i).toObject(); Post *post = new Post(postJson, this); + connect(post, SIGNAL(readChanged(bool)), this, SLOT(onPostReadChanged(bool))); mPosts.append(post); } @@ -90,6 +91,11 @@ void TinyTinyRSS::reply() } } +void TinyTinyRSS::onPostReadChanged(bool r) +{ + qDebug() << r; +} + QQmlListProperty TinyTinyRSS::posts() { return QQmlListProperty(this, mPosts); diff --git a/tinytinyrss.h b/tinytinyrss.h index 82619f9..3d49685 100644 --- a/tinytinyrss.h +++ b/tinytinyrss.h @@ -21,6 +21,7 @@ public: Q_INVOKABLE void initialize(const QString serverUrl, const QString sessionId); Q_INVOKABLE void reload(); + QQmlListProperty posts(); int postsCount() const; Post *post(int) const; @@ -30,6 +31,7 @@ signals: private slots: void reply(); + void onPostReadChanged(bool); private: void doOperation(QString operation, QVariantMap opts);