Feed *feed = new Feed(this);
feed->id = "user/-/state/com.google/starred";
feed->title = "Starred items";
- feed->special = true;
+ feed->special = 2;
+ feeds.insert(feed->id, feed);
+ connect(feed, SIGNAL(allReadChanged()), SIGNAL(allReadChanged()));
+
+ /* Add the virtual 'Shared items' feed */
+ feed = new Feed(this);
+ feed->id = "user/-/state/com.google/broadcast";
+ feed->title = "Shared items";
+ feed->special = 1;
feeds.insert(feed->id, feed);
connect(feed, SIGNAL(allReadChanged()), SIGNAL(allReadChanged()));
}
entry.flags |= ENTRY_FLAG_READ;
else if(label == "starred")
entry.flags |= ENTRY_FLAG_STARRED;
+ else if(label == "broadcast")
+ entry.flags |= ENTRY_FLAG_SHARED;
}
}
else if(name == "id") {
if(e.text().endsWith("/state/com.google/starred"))
feedsource = "user/-/state/com.google/starred";
+ else if(e.text().endsWith("/state/com.google/broadcast"))
+ feedsource = "user/-/state/com.google/broadcast";
}
}
/* Delete feeds no longer subscribed to */
for(i = feeds.begin(); i != feeds.end(); ++i) {
- if(i.value()->subscription_updated == false && i.value()->special == false) {
+ if(i.value()->subscription_updated == false && i.value()->special == 0) {
printf("DELETED: %s\n", i.value()->title.toLatin1().data());
i = feeds.erase(i);
}
}
static bool compareFeedItems(const Feed *f1, const Feed *f2) {
- if(f1->special && !f2->special)
- return true;
-
- if(f2->special && !f1->special)
- return false;
+ if(f1->special || f2->special)
+ return f1->special > f2->special;
if(f1->cat_label == f2->cat_label)
return f1->title.toLower() < f2->title.toLower();
flags &= ~ENTRY_FLAG_STARRED;
}
}
+
+void Entry::markShared(bool mark_shared) {
+ /* Check if the shared flag differs from the requested state */
+ if(((flags & ENTRY_FLAG_SHARED) != 0) == mark_shared)
+ return;
+
+ QNetworkRequest request;
+ request.setUrl(feed->reader->edittag_url);
+
+ postshared.open(QBuffer::ReadWrite | QBuffer::Truncate);
+ postshared.write("i=");
+ postshared.write(QUrl::toPercentEncoding(id));
+ if(mark_shared)
+ postshared.write("&a=");
+ else
+ postshared.write("&r=");
+ postshared.write(QUrl::toPercentEncoding("user/-/state/com.google/broadcast"));
+ postshared.write("&ac=edit-tags&T=");
+ postshared.write(QUrl::toPercentEncoding(feed->reader->token));
+ postshared.seek(0);
+ feed->reader->manager.post(request, &postshared);
+
+ Feed *shared = feed->reader->feeds.value("user/-/state/com.google/broadcast");
+
+ if(mark_shared) {
+ shared->addEntry(this);
+ flags |= ENTRY_FLAG_SHARED;
+ }
+ else {
+ shared->delEntry(this);
+ flags &= ~ENTRY_FLAG_SHARED;
+ }
+}