Some fixes for parsing.

This commit is contained in:
Martin Rotter 2015-11-16 07:05:21 +01:00
parent f712ae1cf7
commit 42b88b8db7
4 changed files with 47 additions and 22 deletions

View File

@ -73,7 +73,7 @@ QList<Message> ParsingFactory::parseAsATOM10(const QString &data) {
for (int i = 0; i < elem_links.size(); i++) {
QDomElement link = elem_links.at(i).toElement();
if (link.attribute(QSL("rel")) == QL1S("enclosure")) {
if (link.attribute(QSL("rel")) == QSL("enclosure")) {
new_message.m_enclosures.append(Enclosure(link.attribute(QSL("href")), link.attribute(QSL("type"))));
qDebug("Adding enclosure '%s' for the message.", qPrintable(new_message.m_enclosures.last().m_url));

View File

@ -45,7 +45,8 @@ FeedsView::FeedsView(QWidget *parent)
: QTreeView(parent),
m_contextMenuCategories(NULL),
m_contextMenuFeeds(NULL),
m_contextMenuEmptySpace(NULL) {
m_contextMenuEmptySpace(NULL),
m_contextMenuOtherItems(NULL) {
setObjectName(QSL("FeedsView"));
// Allocate models.
@ -460,7 +461,7 @@ void FeedsView::selectPreviousItem() {
}
}
void FeedsView::initializeContextMenuCategories(RootItem *clicked_item) {
QMenu *FeedsView::initializeContextMenuCategories(RootItem *clicked_item) {
if (m_contextMenuCategories == NULL) {
m_contextMenuCategories = new QMenu(tr("Context menu for categories"), this);
}
@ -482,9 +483,11 @@ void FeedsView::initializeContextMenuCategories(RootItem *clicked_item) {
m_contextMenuCategories->addSeparator();
m_contextMenuCategories->addActions(specific_actions);
}
return m_contextMenuCategories;
}
void FeedsView::initializeContextMenuFeeds(RootItem *clicked_item) {
QMenu *FeedsView::initializeContextMenuFeeds(RootItem *clicked_item) {
if (m_contextMenuFeeds == NULL) {
m_contextMenuFeeds = new QMenu(tr("Context menu for categories"), this);
}
@ -506,12 +509,39 @@ void FeedsView::initializeContextMenuFeeds(RootItem *clicked_item) {
m_contextMenuFeeds->addSeparator();
m_contextMenuFeeds->addActions(specific_actions);
}
return m_contextMenuFeeds;
}
void FeedsView::initializeContextMenuEmptySpace() {
m_contextMenuEmptySpace = new QMenu(tr("Context menu for empty space"), this);
m_contextMenuEmptySpace->addAction(qApp->mainForm()->m_ui->m_actionUpdateAllItems);
m_contextMenuEmptySpace->addSeparator();
QMenu *FeedsView::initializeContextMenuEmptySpace() {
if (m_contextMenuEmptySpace == NULL) {
m_contextMenuEmptySpace = new QMenu(tr("Context menu for empty space"), this);
m_contextMenuEmptySpace->addAction(qApp->mainForm()->m_ui->m_actionUpdateAllItems);
m_contextMenuEmptySpace->addSeparator();
}
return m_contextMenuEmptySpace;
}
QMenu *FeedsView::initializeContextMenuOtherItem(RootItem *clicked_item) {
if (m_contextMenuOtherItems == NULL) {
m_contextMenuOtherItems = new QMenu(tr("Context menu for other items"), this);
}
else {
m_contextMenuOtherItems->clear();
}
QList<QAction*> specific_actions = clicked_item->contextMenuActions();
if (!specific_actions.isEmpty()) {
m_contextMenuOtherItems->addSeparator();
m_contextMenuOtherItems->addActions(specific_actions);
}
else {
m_contextMenuOtherItems->addAction(qApp->mainForm()->m_ui->m_actionNoActions);
}
return m_contextMenuOtherItems;
}
void FeedsView::setupAppearance() {
@ -573,27 +603,21 @@ void FeedsView::contextMenuEvent(QContextMenuEvent *event) {
if (clicked_item->kind() == RootItemKind::Category) {
// Display context menu for categories.
initializeContextMenuCategories(clicked_item);
m_contextMenuCategories->exec(event->globalPos());
initializeContextMenuCategories(clicked_item)->exec(event->globalPos());
}
else if (clicked_item->kind() == RootItemKind::Feed) {
// Display context menu for feeds.
initializeContextMenuFeeds(clicked_item);
m_contextMenuFeeds->exec(event->globalPos());
initializeContextMenuFeeds(clicked_item)->exec(event->globalPos());
}
else {
// TODO: volaz specificke menu polozky? zobrazovat menu pro dalsi typy
// polozek jako odpadkovy kos atp.
initializeContextMenuOtherItem(clicked_item)->exec(event->globalPos());
}
}
else {
// Display menu for empty space.
if (m_contextMenuEmptySpace == NULL) {
// Context menu is not initialized, initialize.
initializeContextMenuEmptySpace();
}
m_contextMenuEmptySpace->exec(event->globalPos());
initializeContextMenuEmptySpace()->exec(event->globalPos());
}
}

View File

@ -130,9 +130,10 @@ class FeedsView : public QTreeView {
private:
// Initializes context menus.
void initializeContextMenuCategories(RootItem *clicked_item);
void initializeContextMenuFeeds(RootItem *clicked_item);
void initializeContextMenuEmptySpace();
QMenu *initializeContextMenuCategories(RootItem *clicked_item);
QMenu *initializeContextMenuFeeds(RootItem *clicked_item);
QMenu *initializeContextMenuEmptySpace();
QMenu *initializeContextMenuOtherItem(RootItem *clicked_item);
// Sets up appearance of this widget.
void setupAppearance();
@ -163,6 +164,7 @@ class FeedsView : public QTreeView {
QMenu *m_contextMenuCategories;
QMenu *m_contextMenuFeeds;
QMenu *m_contextMenuEmptySpace;
QMenu *m_contextMenuOtherItems;
FeedsModel *m_sourceModel;
FeedsProxyModel *m_proxyModel;

View File

@ -34,7 +34,6 @@ TtRssServiceRoot::~TtRssServiceRoot() {
}
bool TtRssServiceRoot::editViaGui() {
// TODO: zobrazit custom edit dialog pro ttrss
return false;
}