diff --git a/src/gui/dialogs/formmain.cpp b/src/gui/dialogs/formmain.cpp index 94801af62..98e1b6c60 100755 --- a/src/gui/dialogs/formmain.cpp +++ b/src/gui/dialogs/formmain.cpp @@ -197,34 +197,6 @@ void FormMain::updateAddItemMenu() { m_ui->m_menuAddItem->addMenu(root_menu); } - - if (m_ui->m_menuAddItem->actions().size() > 0) { - m_ui->m_menuAddItem->addSeparator(); - } - - m_ui->m_menuAddItem->addAction(m_ui->m_actionServiceAdd); - - /* - * foreach (ServiceRoot *activated_root, tabWidget()->feedMessageViewer()->feedsView()->sourceModel()->serviceRoots()) { - QMenu *root_menu = new QMenu(activated_root->title(), m_ui->m_menuServices); - root_menu->setIcon(activated_root->icon()); - root_menu->setToolTip(activated_root->description()); - - QList root_actions = activated_root->serviceMenu(); - - if (root_actions.isEmpty()) { - QAction *no_action = new QAction(qApp->icons()->fromTheme(QSL("dialog-error")), - tr("No possible actions"), - m_ui->m_menuServices); - no_action->setEnabled(false); - root_menu->addAction(no_action); - } - else { - root_menu->addActions(root_actions); - } - - m_ui->m_menuServices->addMenu(root_menu); - }*/ } void FormMain::updateRecycleBinMenu() { @@ -270,6 +242,39 @@ void FormMain::updateRecycleBinMenu() { m_ui->m_menuRecycleBin->addAction(m_ui->m_actionEmptyAllRecycleBins); } +void FormMain::updateAccountsMenu() { + m_ui->m_menuAccounts->clear(); + + foreach (ServiceRoot *activated_root, tabWidget()->feedMessageViewer()->feedsView()->sourceModel()->serviceRoots()) { + QMenu *root_menu = new QMenu(activated_root->title(), m_ui->m_menuAccounts); + root_menu->setIcon(activated_root->icon()); + root_menu->setToolTip(activated_root->description()); + + QList root_actions = activated_root->serviceMenu(); + + if (root_actions.isEmpty()) { + QAction *no_action = new QAction(qApp->icons()->fromTheme(QSL("dialog-error")), + tr("No possible actions"), + m_ui->m_menuAccounts); + no_action->setEnabled(false); + root_menu->addAction(no_action); + } + else { + root_menu->addActions(root_actions); + } + + m_ui->m_menuAccounts->addMenu(root_menu); + } + + if (m_ui->m_menuAccounts->actions().size() > 0) { + m_ui->m_menuAccounts->addSeparator(); + } + + m_ui->m_menuAccounts->addAction(m_ui->m_actionServiceAdd); + m_ui->m_menuAccounts->addAction(m_ui->m_actionServiceEdit); + m_ui->m_menuAccounts->addAction(m_ui->m_actionServiceDelete); +} + void FormMain::switchVisibility(bool force_hide) { if (force_hide || isVisible()) { if (SystemTrayIcon::isSystemTrayActivated()) { @@ -368,6 +373,8 @@ void FormMain::setupIcons() { m_ui->m_actionRestoreAllRecycleBins->setIcon(icon_theme_factory->fromTheme(QSL("recycle-bin-restore-all"))); m_ui->m_actionEmptyAllRecycleBins->setIcon(icon_theme_factory->fromTheme(QSL("recycle-bin-empty"))); m_ui->m_actionServiceAdd->setIcon(icon_theme_factory->fromTheme(QSL("item-new"))); + m_ui->m_actionServiceEdit->setIcon(icon_theme_factory->fromTheme(QSL("item-edit"))); + m_ui->m_actionServiceDelete->setIcon(icon_theme_factory->fromTheme(QSL("item-remove"))); // Setup icons for underlying components: opened web browsers... foreach (WebBrowser *browser, WebBrowser::runningWebBrowsers()) { @@ -442,6 +449,10 @@ void FormMain::createConnections() { connect(m_ui->m_menuAddItem, SIGNAL(aboutToShow()), this, SLOT(updateAddItemMenu())); connect(m_ui->m_menuRecycleBin, SIGNAL(aboutToShow()), this, SLOT(updateRecycleBinMenu())); + connect(m_ui->m_menuAccounts, SIGNAL(aboutToShow()), this, SLOT(updateAccountsMenu())); + + connect(m_ui->m_actionServiceDelete, SIGNAL(triggered()), m_ui->m_actionDeleteSelectedItem, SIGNAL(triggered())); + connect(m_ui->m_actionServiceEdit, SIGNAL(triggered()), m_ui->m_actionEditSelectedItem, SIGNAL(triggered())); // Menu "File" connections. connect(m_ui->m_actionBackupDatabaseSettings, SIGNAL(triggered()), this, SLOT(backupDatabaseSettings())); diff --git a/src/gui/dialogs/formmain.h b/src/gui/dialogs/formmain.h index 140d9ad79..a5e7dac7b 100755 --- a/src/gui/dialogs/formmain.h +++ b/src/gui/dialogs/formmain.h @@ -76,6 +76,7 @@ class FormMain : public QMainWindow { private slots: void updateAddItemMenu(); void updateRecycleBinMenu(); + void updateAccountsMenu(); // Loads web browser menu if user selects to change tabs. void loadWebBrowserMenu(int index); diff --git a/src/gui/dialogs/formmain.ui b/src/gui/dialogs/formmain.ui index 7e9a1ef3c..ecbb7f392 100755 --- a/src/gui/dialogs/formmain.ui +++ b/src/gui/dialogs/formmain.ui @@ -126,13 +126,12 @@ - Feeds && categories && accounts + Feeds && categories Add &new item - @@ -181,8 +180,17 @@ + + + &Accounts + + + + + + @@ -705,7 +713,7 @@ - &Add new service account + &Add new account @@ -757,6 +765,22 @@ + + + &Edit selected account + + + + + + + + &Delete selected account + + + + + diff --git a/src/gui/feedmessageviewer.cpp b/src/gui/feedmessageviewer.cpp index 2002cd3a3..f9e7be57b 100755 --- a/src/gui/feedmessageviewer.cpp +++ b/src/gui/feedmessageviewer.cpp @@ -211,7 +211,12 @@ void FeedMessageViewer::updateFeedButtonsAvailability() { form_main->m_ui->m_actionUpdateSelectedItems->setEnabled(!critical_action_running && (feed_selected || category_selected || service_selected)); form_main->m_ui->m_actionViewSelectedItemsNewspaperMode->setEnabled(anything_selected); form_main->m_ui->m_actionExpandCollapseItem->setEnabled(anything_selected); + + form_main->m_ui->m_actionServiceDelete->setEnabled(service_selected); + form_main->m_ui->m_actionServiceEdit->setEnabled(service_selected); + form_main->m_ui->m_menuAddItem->setEnabled(!critical_action_running); + form_main->m_ui->m_menuAccounts->setEnabled(!critical_action_running); form_main->m_ui->m_menuRecycleBin->setEnabled(!critical_action_running); } diff --git a/src/services/abstract/feed.cpp b/src/services/abstract/feed.cpp index 8183d158e..b838c33fb 100755 --- a/src/services/abstract/feed.cpp +++ b/src/services/abstract/feed.cpp @@ -39,7 +39,7 @@ QVariant Feed::data(int column, int role) const { case NewMessages: return QColor(Qt::blue); - case NetworkError: + case Error: return QColor(Qt::red); default: diff --git a/src/services/abstract/feed.h b/src/services/abstract/feed.h index edd1362d5..4b9b9a550 100755 --- a/src/services/abstract/feed.h +++ b/src/services/abstract/feed.h @@ -43,7 +43,7 @@ class Feed : public RootItem { enum Status { Normal = 0, NewMessages = 1, - NetworkError = 2, + Error = 2, ParsingError = 3, OtherError = 4 }; diff --git a/src/services/standard/standardfeed.cpp b/src/services/standard/standardfeed.cpp index c548c7646..8f202a466 100755 --- a/src/services/standard/standardfeed.cpp +++ b/src/services/standard/standardfeed.cpp @@ -447,7 +447,7 @@ int StandardFeed::update() { if (m_networkError != QNetworkReply::NoError) { qWarning("Error during fetching of new messages for feed '%s' (id %d).", qPrintable(url()), id()); - setStatus(NetworkError); + setStatus(Error); return 0; } else if (status() != NewMessages) { diff --git a/src/services/tt-rss/ttrssfeed.cpp b/src/services/tt-rss/ttrssfeed.cpp index be6bea0aa..f16f5a259 100755 --- a/src/services/tt-rss/ttrssfeed.cpp +++ b/src/services/tt-rss/ttrssfeed.cpp @@ -96,7 +96,7 @@ int TtRssFeed::update() { true, true, false, error); if (error != QNetworkReply::NoError) { - setStatus(Feed::NetworkError); + setStatus(Feed::Error); return 0; } else { @@ -273,9 +273,6 @@ int TtRssFeed::updateMessages(const QList &messages) { if (query_insert.exec() && query_insert.numRowsAffected() == 1) { updated_messages++; } - else { - QString str = query_insert.lastError().text(); - } query_insert.finish(); diff --git a/src/services/tt-rss/ttrssserviceroot.cpp b/src/services/tt-rss/ttrssserviceroot.cpp index 885c3b3a4..8f0710883 100755 --- a/src/services/tt-rss/ttrssserviceroot.cpp +++ b/src/services/tt-rss/ttrssserviceroot.cpp @@ -531,6 +531,11 @@ void TtRssServiceRoot::completelyRemoveAllData() { } void TtRssServiceRoot::syncIn() { + QIcon original_icon = icon(); + + setIcon(qApp->icons()->fromTheme(QSL("item-sync"))); + itemChanged(QList() << this); + QNetworkReply::NetworkError err; TtRssGetFeedsCategoriesResponse feed_cats_response = m_network->getFeedsCategories(err); @@ -561,6 +566,9 @@ void TtRssServiceRoot::syncIn() { requestReloadMessageList(true); requestItemExpand(all_items, true); } + + setIcon(original_icon); + itemChanged(QList() << this); } QStringList TtRssServiceRoot::customIDsOfMessages(const QList > &changes) {