From f920be2302d3caa4cdb06e2a39f8207b383c7211 Mon Sep 17 00:00:00 2001 From: Leonardo Robol Date: Fri, 28 Oct 2011 10:01:31 +0200 Subject: [PATCH] Ugly implementation of next unread item between different categories --- images/larss.png | Bin 12220 -> 12621 bytes larss/mainwindow.cpp | 117 +++++++++++++++++++++++++++++++++++++++++++++-- larss/rssparser.cpp | 2 +- qtresources.qrc | 3 +- ui/editcategorydialog.ui | 2 +- ui/editfeeddialog.ui | 2 +- ui/mainwindow.ui | 8 +++- 7 files changed, 125 insertions(+), 9 deletions(-) diff --git a/images/larss.png b/images/larss.png index fb831abe167c0d91f2b4e6f212540b1b0493deec..c926d8a970dc80fb120851029b23a5f3f96f6af5 100644 GIT binary patch literal 12621 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 vmLJe}15;=IF2U%wU*~Nbe=b{T*Ny)Vv literal 12220 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 } - systrayIcon = new QSystemTrayIcon (QIcon (":/images/larss.png")); - systrayIcon->setVisible(true); + // Create the systray icon + QIcon larssIcon(":larss32.png"); + systrayIcon = new QSystemTrayIcon (larssIcon); + systrayIcon->show(); + // Set the icon for the window. poller->connect(poller, SIGNAL(newElementsNotification(QString,QString)), this, SLOT(showNewElement(QString,QString))); - } MainWindow::~MainWindow() @@ -214,7 +216,113 @@ void Larss::MainWindow::loadFeed(const QModelIndex& index) void Larss::MainWindow::on_actionNext_unread_news_triggered() { QModelIndex index = ui->newsTableView->selectionModel()->currentIndex(); - int nextUnread = rssParser->getNextUnread(index); + QItemSelection startingFeedSelection = ui->feedTreeView->selectionModel()->selection(); + int startingNewsRow = ui->newsTableView->currentIndex().row(); + QModelIndex feedIndex = ui->feedTreeView->currentIndex(); + QModelIndex categoryIndex; + int startingCategoryRow; + int nextUnread; + + // Store the category or the index that is selected now, to be sure that after + // a complete round searching for new items we don't begin one time more. + FeedNode *selectedNode = feedModel->itemFromIndex(feedIndex); + int categoriesNumber = feedModel->rowCount(); + + if (selectedNode->type() == FeedNode::Category) + { + startingCategoryRow = feedIndex.row(); + + // Search for a feed, not a category + while (feedModel->rowCount(feedIndex) == 0) + { + // Step to the next category, since this is empty + if (feedIndex.row() == categoriesNumber - 1) + feedIndex = feedModel->index(0, 0); + else + feedIndex = feedModel->index(feedIndex.row() + 1, 0); + + // Check if that was the starting category, in that case they are all empty + // so simply do nothing + if (feedIndex.row() == startingCategoryRow) + { + ui->feedTreeView->selectionModel()->select(startingFeedSelection, QItemSelectionModel::SelectCurrent); + on_feedTreeView_clicked(ui->feedTreeView->currentIndex()); + ui->newsTableView->selectRow(startingNewsRow); + loadFeed (ui->newsTableView->selectionModel()->currentIndex()); + return; + } + } + + // Now we have a category with at least one child, so select id + categoryIndex = feedIndex; + feedIndex = feedIndex.child(0, 0); + } + else + categoryIndex = feedIndex.parent(); + + // Store the row of the starting catogory + startingCategoryRow = categoryIndex.row(); + + while ((nextUnread = rssParser->getNextUnread(index)) <= 0) + { + // If we have an invalid feedIndex return + if (!feedIndex.isValid()) + { + ui->feedTreeView->selectionModel()->select(startingFeedSelection, QItemSelectionModel::SelectCurrent); + on_feedTreeView_clicked(ui->feedTreeView->currentIndex()); + ui->newsTableView->selectRow(startingNewsRow); + loadFeed (ui->newsTableView->selectionModel()->currentIndex()); + return; + } + + // Check if there is a category next in which to step, if there + // are no more feeds in this. + if (feedIndex.row() == feedModel->rowCount(categoryIndex) - 1) + { + // Continue to iterate over categories while we found a non + // empty one OR we arrive to the starting one. + do + { + if (categoryIndex.row() < feedModel->rowCount()) + categoryIndex = feedModel->index(categoryIndex.row() + 1, 0); + else + categoryIndex = feedModel->index(0, 0); + } while (feedModel->rowCount(categoryIndex) == 0 && + categoryIndex.row() != startingCategoryRow); + + // We have done a complete round + if (categoryIndex.row() == startingCategoryRow) + { + ui->feedTreeView->selectionModel()->select(startingFeedSelection, QItemSelectionModel::SelectCurrent); + on_feedTreeView_clicked(ui->feedTreeView->currentIndex()); + ui->newsTableView->selectRow(startingNewsRow); + loadFeed (ui->newsTableView->selectionModel()->currentIndex()); + return; + } + + // Got the Feed and select the first element. + feedIndex = categoryIndex.child(0, 0); + } + else + { + // Otherwise step to the next feed + feedIndex = categoryIndex.child(feedIndex.row() + 1, 0); + } + + ui->feedTreeView->selectionModel()->select(QItemSelection(feedIndex, feedIndex), QItemSelectionModel::SelectCurrent); + on_feedTreeView_clicked(feedIndex); + index = rssParser->index(0, 0); + + // This feed may be unread, so in that case, read it. + if (rssParser->record(index.row()).value("read").toInt() == 0) + { + ui->newsTableView->selectRow(0); + loadFeed(index); + return; + } + } + + // Selec the next unread news in the feed. if (nextUnread > 0) { ui->newsTableView->selectRow(nextUnread); @@ -222,6 +330,7 @@ void Larss::MainWindow::on_actionNext_unread_news_triggered() } } + void Larss::MainWindow::on_actionUpdate_this_feed_triggered() { QModelIndex index = ui->feedTreeView->selectionModel()->currentIndex(); diff --git a/larss/rssparser.cpp b/larss/rssparser.cpp index 62c0b66..36bda29 100644 --- a/larss/rssparser.cpp +++ b/larss/rssparser.cpp @@ -95,7 +95,7 @@ Larss::RssParser::data(const QModelIndex &idx, int role) const // Manage a nice rendering of Time if (role == Qt::DisplayRole && idx.column() == 6) { - return (QDateTime::fromTime_t(QSqlTableModel::data(idx, role).toInt()).toString()); + return (QDateTime::fromTime_t(QSqlTableModel::data(idx, role).toInt()).toString("dd/MM/yyyy hh:mm")); } // Call the default implementaton in almost every case diff --git a/qtresources.qrc b/qtresources.qrc index ffdc804..af96e2f 100644 --- a/qtresources.qrc +++ b/qtresources.qrc @@ -1,5 +1,6 @@ - images/larss.png + images/larss.png + images/larss32.png diff --git a/ui/editcategorydialog.ui b/ui/editcategorydialog.ui index bba5ffa..57ad1ba 100644 --- a/ui/editcategorydialog.ui +++ b/ui/editcategorydialog.ui @@ -11,7 +11,7 @@ - Dialog + Add a new category diff --git a/ui/editfeeddialog.ui b/ui/editfeeddialog.ui index 387abc2..9af81c6 100644 --- a/ui/editfeeddialog.ui +++ b/ui/editfeeddialog.ui @@ -11,7 +11,7 @@ - Dialog + Add a new feed diff --git a/ui/mainwindow.ui b/ui/mainwindow.ui index 5c4de59..7d7e7e4 100644 --- a/ui/mainwindow.ui +++ b/ui/mainwindow.ui @@ -13,6 +13,10 @@ Larss 0.1 + + + :/images/larss.png:/images/larss.png + @@ -176,6 +180,8 @@
QtWebKit/QWebView
- + + + -- 2.1.4