Add 'add to favourites' action onto main view too

This commit is contained in:
craig.p.drummond
2013-07-10 18:36:45 +00:00
committed by craig.p.drummond
parent db63858b06
commit b1da4733ef
7 changed files with 27 additions and 23 deletions

View File

@@ -82,7 +82,6 @@ StdActions::StdActions()
removeAction = ActionCollection::get()->createAction("removeitems", i18n("Remove"), "list-remove");
searchAction = ActionCollection::get()->createAction("search", i18n("Search"), "edit-find");
searchAction->setShortcut(Qt::ControlModifier+Qt::Key_F);
addBookmarkAction = ActionCollection::get()->createAction("bookmarkcategory", i18n("Bookmark Category"), Icon("bookmark-new"));
addToStoredPlaylistAction->setMenu(PlaylistsModel::self()->menu());
addPrioHighestAction->setData(255);

View File

@@ -63,6 +63,5 @@ public:
Action *removeAction;
Action *backAction;
Action *searchAction;
Action *addBookmarkAction;
};
#endif

View File

@@ -28,7 +28,6 @@
#include "playqueuemodel.h"
#include "networkaccessmanager.h"
#include "stdactions.h"
#include "actioncollection.h"
#include <QNetworkReply>
#include <QString>
#include <QVariant>
@@ -46,7 +45,6 @@ StreamSearchModel::StreamSearchModel(QObject *parent)
: ActionModel(parent)
, root(new StreamsModel::CategoryItem(QString(), "root"))
{
addToFavouritesAction = ActionCollection::get()->createAction("addtofavourites", i18n("Add Stream To Favourites"), StreamsModel::self()->favouritesIcon());
}
StreamSearchModel::~StreamSearchModel()
@@ -133,13 +131,13 @@ QVariant StreamSearchModel::data(const QModelIndex &index, int role) const
if (item->isCategory()){
if (static_cast<const StreamsModel::CategoryItem *>(item)->canBookmark) {
QVariant v;
v.setValue<QList<Action *> >(QList<Action *>() << StdActions::self()->addBookmarkAction);
v.setValue<QList<Action *> >(QList<Action *>() << StreamsModel::self()->addBookmarkAct());
return v;
}
} else {
QVariant v;
if (StreamsModel::self()->isFavoritesWritable()) {
v.setValue<QList<Action *> >(QList<Action *>() << StdActions::self()->replacePlayQueueAction << addToFavouritesAction);
v.setValue<QList<Action *> >(QList<Action *>() << StdActions::self()->replacePlayQueueAction << StreamsModel::self()->addToFavouritesAct());
} else {
v.setValue<QList<Action *> >(QList<Action *>() << StdActions::self()->replacePlayQueueAction);
}

View File

@@ -33,7 +33,6 @@
class QNetworkReply;
class QXmlStreamReader;
class QIODevice;
class Action;
class StreamSearchModel : public ActionModel
{
@@ -61,8 +60,6 @@ public:
void search(const QString &searchTerm, bool stationsOnly);
void cancelAll();
Action * addToFavouritesAct() { return addToFavouritesAction; }
Q_SIGNALS:
void loading();
void loaded();
@@ -80,7 +77,6 @@ private:
QMap<QNetworkReply *, StreamsModel::CategoryItem *> jobs;
StreamsModel::CategoryItem *root;
QString currentSearch;
Action *addToFavouritesAction;
};
#endif

View File

@@ -33,6 +33,7 @@
#include "itemview.h"
#include "action.h"
#include "stdactions.h"
#include "actioncollection.h"
#include "digitallyimported.h"
#include "qjson/parser.h"
#include "qtiocompressor/qtiocompressor.h"
@@ -459,6 +460,8 @@ StreamsModel::StreamsModel(QObject *parent)
favourites->isFavourites=true;
root->children.append(favourites);
buildListenLive();
addBookmarkAction = ActionCollection::get()->createAction("bookmarkcategory", i18n("Bookmark Category"), Icon("bookmark-new"));
addToFavouritesAction = ActionCollection::get()->createAction("addtofavourites", i18n("Add Stream To Favourites"), favouritesIcon());
}
StreamsModel::~StreamsModel()
@@ -552,12 +555,16 @@ QVariant StreamsModel::data(const QModelIndex &index, int role) const
if (item->isCategory()){
if (static_cast<const CategoryItem *>(item)->canBookmark) {
QVariant v;
v.setValue<QList<Action *> >(QList<Action *>() << StdActions::self()->addBookmarkAction);
v.setValue<QList<Action *> >(QList<Action *>() << addBookmarkAction);
return v;
}
} else {
QVariant v;
v.setValue<QList<Action *> >(QList<Action *>() << StdActions::self()->replacePlayQueueAction);
if (favouritesIsWriteable && item->parent!=favourites) {
v.setValue<QList<Action *> >(QList<Action *>() << StdActions::self()->replacePlayQueueAction << addToFavouritesAction);
} else {
v.setValue<QList<Action *> >(QList<Action *>() << StdActions::self()->replacePlayQueueAction);
}
return v;
}
break;

View File

@@ -143,6 +143,9 @@ public:
bool isTopLevel(const CategoryItem *cat) const { return cat && root==cat->parent; }
Action *addBookmarkAct() { return addBookmarkAction; }
Action *addToFavouritesAct() { return addToFavouritesAction; }
Q_SIGNALS:
void loading();
void loaded();
@@ -179,6 +182,8 @@ private:
bool favouritesIsWriteable;
bool favouritesModified;
QTimer *favouritesSaveTimer;
Action *addBookmarkAction;
Action *addToFavouritesAction;
};
#endif

View File

@@ -77,8 +77,8 @@ StreamsPage::StreamsPage(QWidget *p)
connect(searchView, SIGNAL(searchIsActive(bool)), this, SLOT(controlSearch(bool)));
connect(searchView, SIGNAL(itemsSelected(bool)), SLOT(controlActions()));
connect(addAction, SIGNAL(triggered(bool)), this, SLOT(add()));
connect(StdActions::self()->addBookmarkAction, SIGNAL(triggered(bool)), this, SLOT(addBookmark()));
connect(searchModel.addToFavouritesAct(), SIGNAL(triggered(bool)), this, SLOT(addToFavourites()));
connect(StreamsModel::self()->addBookmarkAct(), SIGNAL(triggered(bool)), this, SLOT(addBookmark()));
connect(StreamsModel::self()->addToFavouritesAct(), SIGNAL(triggered(bool)), this, SLOT(addToFavourites()));
connect(reloadAction, SIGNAL(triggered(bool)), this, SLOT(reload()));
connect(editAction, SIGNAL(triggered(bool)), this, SLOT(edit()));
connect(importAction, SIGNAL(triggered(bool)), this, SLOT(importXml()));
@@ -109,8 +109,8 @@ StreamsPage::StreamsPage(QWidget *p)
view->addAction(StdActions::self()->addWithPriorityAction);
view->addAction(editAction);
view->addAction(StdActions::self()->removeAction);
view->addAction(searchModel.addToFavouritesAct());
view->addAction(StdActions::self()->addBookmarkAction);
view->addAction(StreamsModel::self()->addToFavouritesAct());
view->addAction(StreamsModel::self()->addBookmarkAct());
view->addAction(reloadAction);
streamsProxy.setSourceModel(StreamsModel::self());
view->setModel(&streamsProxy);
@@ -118,8 +118,8 @@ StreamsPage::StreamsPage(QWidget *p)
searchView->setUniformRowHeights(true);
searchView->addAction(StdActions::self()->replacePlayQueueAction);
searchView->addAction(searchModel.addToFavouritesAct());
searchView->addAction(StdActions::self()->addBookmarkAction);
searchView->addAction(StreamsModel::self()->addToFavouritesAct());
searchView->addAction(StreamsModel::self()->addBookmarkAct());
searchProxy.setSourceModel(&searchModel);
searchView->setModel(&searchProxy);
@@ -514,7 +514,7 @@ void StreamsPage::controlActions()
bool enableAddToFav=true;
bool onlyStreamsSelected=true;
bool favWriteable=StreamsModel::self()->isFavoritesWritable();
StdActions::self()->addBookmarkAction->setEnabled(false);
StreamsModel::self()->addBookmarkAct()->setEnabled(false);
if (searching) {
foreach (const QModelIndex &idx, selected) {
const StreamsModel::Item *item=static_cast<const StreamsModel::Item *>(proxy->mapToSource(idx).internalPointer());
@@ -529,9 +529,9 @@ void StreamsPage::controlActions()
importAction->setEnabled(false);
reloadAction->setEnabled(false);
StdActions::self()->removeAction->setEnabled(false);
searchModel.addToFavouritesAct()->setEnabled(favWriteable && haveSelection && enableAddToFav);
StreamsModel::self()->addToFavouritesAct()->setEnabled(favWriteable && haveSelection && enableAddToFav);
if (1==selected.size()) {
StdActions::self()->addBookmarkAction->setEnabled(static_cast<const StreamsModel::Item *>(proxy->mapToSource(selected.first()).internalPointer())
StreamsModel::self()->addBookmarkAct()->setEnabled(static_cast<const StreamsModel::Item *>(proxy->mapToSource(selected.first()).internalPointer())
->isCategory());
}
} else {
@@ -556,7 +556,7 @@ void StreamsPage::controlActions()
}
StdActions::self()->removeAction->setEnabled(favWriteable && haveSelection && enableRemove);
searchModel.addToFavouritesAct()->setEnabled(favWriteable && haveSelection && enableAddToFav);
StreamsModel::self()->addToFavouritesAct()->setEnabled(favWriteable && haveSelection && enableAddToFav);
if (1==selected.size()) {
const StreamsModel::Item *item=static_cast<const StreamsModel::Item *>(proxy->mapToSource(selected.first()).internalPointer());
@@ -564,7 +564,7 @@ void StreamsPage::controlActions()
editAction->setEnabled(true);
}
reloadAction->setEnabled(item->isCategory() && StreamsModel::self()->isTopLevel(static_cast<const StreamsModel::CategoryItem *>(item)));
StdActions::self()->addBookmarkAction->setEnabled(item->isCategory() && static_cast<const StreamsModel::CategoryItem *>(item)->canBookmark);
StreamsModel::self()->addBookmarkAct()->setEnabled(item->isCategory() && static_cast<const StreamsModel::CategoryItem *>(item)->canBookmark);
if (!StdActions::self()->removeAction->isEnabled()) {
StdActions::self()->removeAction->setEnabled(item->isCategory() && item->parent &&
(item->parent->isBookmarks || (static_cast<const StreamsModel::CategoryItem *>(item)->isBookmarks)));