starred->setChecked((entry->flags & ENTRY_FLAG_STARRED));
menuBar()->addAction(starred);
+ shared = new QAction(tr("Shared"), this);
+ shared->setCheckable(true);
+ shared->setChecked((entry->flags & ENTRY_FLAG_SHARED));
+ menuBar()->addAction(shared);
+
keepUnread = new QAction(tr("Keep unread"), this);
keepUnread->setCheckable(true);
keepUnread->setEnabled((entry->flags & ENTRY_FLAG_LOCKED) == 0);
grabZoomKeys(false);
entry->markRead(!keepUnread->isChecked());
entry->markStar(starred->isChecked());
+ entry->markShared(shared->isChecked());
QMainWindow::closeEvent(event);
}
void ContentWindow::grabZoomKeys(bool grab) {
- if (!winId()) {
- qWarning("Can't grab keys unless we have a window id");
+ if(!winId())
return;
- }
unsigned long val = (grab) ? 1 : 0;
Atom atom = XInternAtom(QX11Info::display(), "_HILDON_ZOOM_KEY_ATOM", False);
- if (!atom) {
- qWarning("Unable to obtain _HILDON_ZOOM_KEY_ATOM. This example will only work "
- "on a Maemo 5 device!");
+ if(!atom)
return;
- }
XChangeProperty (QX11Info::display(), winId(), atom, XA_INTEGER, 32, PropModeReplace,
reinterpret_cast<unsigned char *>(&val), 1);
QRect rect = option.rect;
rect.adjust(20, 8, -20, -8);
QPoint topleft = rect.topLeft();
- topleft.ry() += 2;
+ QPoint bottomleft = rect.bottomLeft();
rect.adjust(36, 0, 0, 0);
painter->save();
painter->drawImage(topleft, img);
}
+ if(e->flags & ENTRY_FLAG_SHARED) {
+ QImage img = QImage(QLatin1String(":/images/shared-1"));
+ bottomleft.ry() -= img.height();
+ painter->drawImage(bottomleft, img);
+ }
+
painter->restore();
}
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;
+ }
+}