Added global service root menu to main form etc.
This commit is contained in:
parent
27aa11ff83
commit
9fac1568c5
@ -42,7 +42,7 @@ RootItem::~RootItem() {
|
||||
qDeleteAll(m_childItems);
|
||||
}
|
||||
|
||||
QList<QAction *> RootItem::specificContextMenuActions() {
|
||||
QList<QAction*> RootItem::contextMenuActions() {
|
||||
return QList<QAction*>();
|
||||
}
|
||||
|
||||
|
@ -77,8 +77,10 @@ class RootItem : public QObject {
|
||||
}
|
||||
|
||||
// Returns list of specific actions which can be done with the item.
|
||||
// Do not include general actions here like actions:
|
||||
// Mark as read, Update, ...
|
||||
// NOTE: Ownership of returned actions is not switched to caller, free them when needed.
|
||||
virtual QList<QAction*> specificContextMenuActions();
|
||||
virtual QList<QAction*> contextMenuActions();
|
||||
|
||||
// TODO: pracovat s těmito věcmi
|
||||
virtual bool canBeEdited() {
|
||||
|
@ -198,6 +198,39 @@ void FormMain::updateAddItemMenu() {
|
||||
}
|
||||
}
|
||||
|
||||
void FormMain::updateServicesMenu() {
|
||||
m_ui->m_menuServices->clear();
|
||||
|
||||
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<QAction*> 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);
|
||||
}
|
||||
|
||||
if (!m_ui->m_menuServices->isEmpty()) {
|
||||
m_ui->m_menuServices->addSeparator();
|
||||
}
|
||||
|
||||
m_ui->m_menuServices->addAction(m_ui->m_actionServiceAdd);
|
||||
m_ui->m_menuServices->addAction(m_ui->m_actionServiceEdit);
|
||||
m_ui->m_menuServices->addAction(m_ui->m_actionServiceDelete);
|
||||
}
|
||||
|
||||
void FormMain::switchVisibility(bool force_hide) {
|
||||
if (force_hide || isVisible()) {
|
||||
if (SystemTrayIcon::isSystemTrayActivated()) {
|
||||
@ -363,6 +396,7 @@ void FormMain::createConnections() {
|
||||
connect(m_ui->m_actionFullscreen, SIGNAL(toggled(bool)), m_statusBar->fullscreenSwitcher(), SLOT(setChecked(bool)));
|
||||
|
||||
connect(m_ui->m_menuAddItem, SIGNAL(aboutToShow()), this, SLOT(updateAddItemMenu()));
|
||||
connect(m_ui->m_menuServices, SIGNAL(aboutToShow()), this, SLOT(updateServicesMenu()));
|
||||
|
||||
// Menu "File" connections.
|
||||
connect(m_ui->m_actionExportFeeds, SIGNAL(triggered()), this, SLOT(exportFeeds()));
|
||||
|
@ -79,6 +79,7 @@ class FormMain : public QMainWindow {
|
||||
|
||||
private slots:
|
||||
void updateAddItemMenu();
|
||||
void updateServicesMenu();
|
||||
|
||||
// Loads web browser menu if user selects to change tabs.
|
||||
void loadWebBrowserMenu(int index);
|
||||
|
@ -491,7 +491,7 @@ void FeedsView::initializeContextMenuCategories(RootItem *clicked_item) {
|
||||
m_contextMenuCategories->clear();
|
||||
}
|
||||
|
||||
QList<QAction*> specific_actions = clicked_item->specificContextMenuActions();
|
||||
QList<QAction*> specific_actions = clicked_item->contextMenuActions();
|
||||
|
||||
m_contextMenuCategories->addActions(QList<QAction*>() <<
|
||||
qApp->mainForm()->m_ui->m_actionUpdateSelectedFeeds <<
|
||||
@ -512,14 +512,10 @@ void FeedsView::initializeContextMenuFeeds(RootItem *clicked_item) {
|
||||
m_contextMenuFeeds = new QMenu(tr("Context menu for categories"), this);
|
||||
}
|
||||
else {
|
||||
// FIXME: Položky jsou mazány při opětovném otevření kontextového nabíky ale je lepší je mazat
|
||||
// hned při zavření kontextove nabíky.
|
||||
|
||||
// TODO: clear nevymaže z paměti.
|
||||
m_contextMenuFeeds->clear();
|
||||
}
|
||||
|
||||
QList<QAction*> specific_actions = clicked_item->specificContextMenuActions();
|
||||
QList<QAction*> specific_actions = clicked_item->contextMenuActions();
|
||||
|
||||
m_contextMenuFeeds->addActions(QList<QAction*>() <<
|
||||
qApp->mainForm()->m_ui->m_actionUpdateSelectedFeeds <<
|
||||
|
@ -42,12 +42,17 @@ class ServiceRoot : public RootItem {
|
||||
// NOTE: Caller does NOT take ownership of created menu!
|
||||
virtual QList<QAction*> addItemMenu() = 0;
|
||||
|
||||
// Returns list of specific actions to be shown in main window menu
|
||||
// bar in sections "Services -> 'this service'".
|
||||
// NOTE: Caller does NOT take ownership of created menu!
|
||||
virtual QList<QAction*> serviceMenu() = 0;
|
||||
|
||||
inline FeedsModel *feedsModel() const {
|
||||
return m_feedsModel;
|
||||
}
|
||||
|
||||
protected:
|
||||
FeedsModel *m_feedsModel;
|
||||
FeedsModel *m_feedsModel;
|
||||
};
|
||||
|
||||
#endif // SERVICEROOT_H
|
||||
|
@ -98,7 +98,7 @@ int StandardFeed::countOfUnreadMessages() const {
|
||||
return m_unreadCount;
|
||||
}
|
||||
|
||||
QList<QAction*> StandardFeed::specificContextMenuActions() {
|
||||
QList<QAction*> StandardFeed::contextMenuActions() {
|
||||
return serviceRoot()->getContextMenuForFeed(this);
|
||||
}
|
||||
|
||||
|
@ -61,7 +61,7 @@ class StandardFeed : public Feed {
|
||||
int countOfAllMessages() const;
|
||||
int countOfUnreadMessages() const;
|
||||
|
||||
QList<QAction*> specificContextMenuActions();
|
||||
QList<QAction*> contextMenuActions();
|
||||
|
||||
bool canBeEdited() {
|
||||
return true;
|
||||
|
@ -297,6 +297,10 @@ QList<QAction*> StandardServiceRoot::addItemMenu() {
|
||||
return m_addItemMenu;
|
||||
}
|
||||
|
||||
QList<QAction*> StandardServiceRoot::serviceMenu() {
|
||||
return QList<QAction*>();
|
||||
}
|
||||
|
||||
void StandardServiceRoot::assembleCategories(CategoryAssignment categories) {
|
||||
QHash<int, RootItem*> assignments;
|
||||
assignments.insert(NO_PARENT_CATEGORY, this);
|
||||
|
@ -49,6 +49,9 @@ class StandardServiceRoot : public ServiceRoot {
|
||||
// Return "add feed" and "add category" items.
|
||||
QList<QAction*> addItemMenu();
|
||||
|
||||
// Return menu to be shown in "Services -> service" menu.
|
||||
QList<QAction*> serviceMenu();
|
||||
|
||||
// Returns all standard categories which are lying under given root node.
|
||||
// This does NOT include the root node even if the node is category.
|
||||
QHash<int,StandardCategory*> categoriesForItem(RootItem *root);
|
||||
|
Loading…
x
Reference in New Issue
Block a user