Only show track actions if we have a selection
This commit is contained in:
committed by
craig.p.drummond
parent
3768ff5602
commit
dd6313abc6
@@ -705,17 +705,7 @@ MainWindow::MainWindow(QWidget *parent)
|
||||
|
||||
playQueueProxyModel.setSourceModel(&playQueueModel);
|
||||
playQueue->setModel(&playQueueProxyModel);
|
||||
playQueue->addAction(playQueue->removeFromAct());
|
||||
playQueue->addAction(playQueueModel.removeDuplicatesAct());
|
||||
playQueue->addAction(promptClearPlayQueueAction);
|
||||
playQueue->addAction(cropPlayQueueAction);
|
||||
playQueue->addAction(StdActions::self()->savePlayQueueAction);
|
||||
playQueue->addAction(addStreamToPlayQueueAction);
|
||||
playQueue->addAction(addPlayQueueToStoredPlaylistAction);
|
||||
playQueue->addAction(playQueueModel.shuffleAct());
|
||||
playQueue->addAction(playQueueModel.sortAct());
|
||||
playQueue->addAction(playQueueModel.undoAct());
|
||||
playQueue->addAction(playQueueModel.redoAct());
|
||||
playQueue->addAction(playQueue->removeFromAct(), true);
|
||||
ratingAction=new Action(i18n("Set Rating"), this);
|
||||
ratingAction->setMenu(new QMenu(0));
|
||||
for (int i=0; i<((Song::Rating_Max/Song::Rating_Step)+1); ++i) {
|
||||
@@ -732,13 +722,24 @@ MainWindow::MainWindow(QWidget *parent)
|
||||
ratingAction->menu()->addAction(action);
|
||||
connect(action, SIGNAL(triggered(bool)), SLOT(setRating()));
|
||||
}
|
||||
playQueue->addAction(ratingAction);
|
||||
playQueue->addAction(setPriorityAction);
|
||||
playQueue->addAction(stopAfterTrackAction);
|
||||
playQueue->addAction(locateTrackAction);
|
||||
playQueue->addAction(ratingAction, true);
|
||||
playQueue->addAction(setPriorityAction, true);
|
||||
playQueue->addAction(stopAfterTrackAction, true);
|
||||
playQueue->addAction(locateTrackAction, true);
|
||||
#ifdef TAGLIB_FOUND
|
||||
playQueue->addAction(StdActions::self()->editTagsAction);
|
||||
playQueue->addAction(StdActions::self()->editTagsAction, true);
|
||||
#endif
|
||||
playQueue->addSeparator();
|
||||
playQueue->addAction(playQueueModel.removeDuplicatesAct());
|
||||
playQueue->addAction(promptClearPlayQueueAction);
|
||||
playQueue->addAction(cropPlayQueueAction);
|
||||
playQueue->addAction(StdActions::self()->savePlayQueueAction);
|
||||
playQueue->addAction(addStreamToPlayQueueAction);
|
||||
playQueue->addAction(addPlayQueueToStoredPlaylistAction);
|
||||
playQueue->addAction(playQueueModel.shuffleAct());
|
||||
playQueue->addAction(playQueueModel.sortAct());
|
||||
playQueue->addAction(playQueueModel.undoAct());
|
||||
playQueue->addAction(playQueueModel.redoAct());
|
||||
playQueue->readConfig();
|
||||
playlistsPage->setStartClosed(Settings::self()->playListsStartClosed());
|
||||
|
||||
|
||||
@@ -42,6 +42,7 @@
|
||||
#include <QFile>
|
||||
#include <QPainter>
|
||||
#include <QApplication>
|
||||
#include <QMenu>
|
||||
#include <qglobal.h>
|
||||
|
||||
// Exported by QtGui
|
||||
@@ -127,6 +128,8 @@ void PlayQueueGroupedView::paintEvent(QPaintEvent *e)
|
||||
|
||||
PlayQueueView::PlayQueueView(QWidget *parent)
|
||||
: QStackedWidget(parent)
|
||||
, contextMenu(0)
|
||||
, selectContextMenu(0)
|
||||
, mode(ItemView::Mode_Count)
|
||||
, groupedView(0)
|
||||
, treeView(0)
|
||||
@@ -215,23 +218,25 @@ void PlayQueueView::setMode(ItemView::Mode m)
|
||||
groupedView->setIndentation(0);
|
||||
groupedView->setItemsExpandable(false);
|
||||
groupedView->setExpandsOnDoubleClick(false);
|
||||
groupedView->setContextMenuPolicy(Qt::ActionsContextMenu);
|
||||
groupedView->setContextMenuPolicy(Qt::CustomContextMenu);
|
||||
groupedView->installFilter(new KeyEventHandler(groupedView, removeFromAction));
|
||||
addWidget(groupedView);
|
||||
connect(groupedView, SIGNAL(itemsSelected(bool)), SIGNAL(itemsSelected(bool)));
|
||||
connect(groupedView, SIGNAL(doubleClicked(const QModelIndex &)), SIGNAL(doubleClicked(const QModelIndex &)));
|
||||
connect(groupedView, SIGNAL(customContextMenuRequested(QPoint)), SLOT(showMenu(QPoint)));
|
||||
updatePalette();
|
||||
}
|
||||
break;
|
||||
case ItemView::Mode_Table:
|
||||
if (!treeView) {
|
||||
treeView=new PlayQueueTreeView(this);
|
||||
treeView->setContextMenuPolicy(Qt::ActionsContextMenu);
|
||||
treeView->setContextMenuPolicy(Qt::CustomContextMenu);
|
||||
treeView->installFilter(new KeyEventHandler(treeView, removeFromAction));
|
||||
treeView->initHeader();
|
||||
addWidget(treeView);
|
||||
connect(treeView, SIGNAL(itemsSelected(bool)), SIGNAL(itemsSelected(bool)));
|
||||
connect(treeView, SIGNAL(doubleClicked(const QModelIndex &)), SIGNAL(doubleClicked(const QModelIndex &)));
|
||||
connect(treeView, SIGNAL(customContextMenuRequested(QPoint)), SLOT(showMenu(QPoint)));
|
||||
updatePalette();
|
||||
}
|
||||
default:
|
||||
@@ -314,9 +319,28 @@ QModelIndex PlayQueueView::indexAt(const QPoint &point)
|
||||
return view()->indexAt(point);
|
||||
}
|
||||
|
||||
void PlayQueueView::addAction(QAction *a)
|
||||
void PlayQueueView::addAction(QAction *a, bool withSelectionOnly)
|
||||
{
|
||||
view()->addAction(a);
|
||||
if (!contextMenu) {
|
||||
contextMenu=new QMenu(this);
|
||||
}
|
||||
if (!selectContextMenu) {
|
||||
selectContextMenu=new QMenu(this);
|
||||
}
|
||||
if (!withSelectionOnly) {
|
||||
contextMenu->addAction(a);
|
||||
}
|
||||
selectContextMenu->addAction(a);
|
||||
}
|
||||
|
||||
void PlayQueueView::addSeparator()
|
||||
{
|
||||
if (contextMenu) {
|
||||
contextMenu->addSeparator();
|
||||
}
|
||||
if (selectContextMenu) {
|
||||
selectContextMenu->addSeparator();
|
||||
}
|
||||
}
|
||||
|
||||
void PlayQueueView::setFocus()
|
||||
@@ -488,6 +512,15 @@ void PlayQueueView::streamFetchStatus(const QString &msg)
|
||||
msgOverlay->setText(msg);
|
||||
}
|
||||
|
||||
void PlayQueueView::showMenu(const QPoint &p)
|
||||
{
|
||||
if (haveSelectedItems()) {
|
||||
selectContextMenu->popup(view()->mapToGlobal(p));
|
||||
} else {
|
||||
contextMenu->popup(view()->mapToGlobal(p));
|
||||
}
|
||||
}
|
||||
|
||||
void PlayQueueView::drawBackdrop(QWidget *widget, const QSize &size)
|
||||
{
|
||||
if (BI_None==backgroundImageType) {
|
||||
|
||||
@@ -95,7 +95,8 @@ public:
|
||||
void scrollTo(const QModelIndex &index, QAbstractItemView::ScrollHint hint);
|
||||
QModelIndex indexAt(const QPoint &point);
|
||||
void setModel(QAbstractItemModel *m) { view()->setModel(m); }
|
||||
void addAction(QAction *a);
|
||||
void addAction(QAction *a, bool withSelectionOnly=false);
|
||||
void addSeparator();
|
||||
void setFocus();
|
||||
bool hasFocus();
|
||||
QAbstractItemModel * model() { return view()->model(); }
|
||||
@@ -118,6 +119,9 @@ public Q_SLOTS:
|
||||
void setImage(const QImage &img);
|
||||
void streamFetchStatus(const QString &msg);
|
||||
|
||||
private Q_SLOTS:
|
||||
void showMenu(const QPoint &p);
|
||||
|
||||
Q_SIGNALS:
|
||||
void itemsSelected(bool);
|
||||
void doubleClicked(const QModelIndex &);
|
||||
@@ -128,6 +132,8 @@ private:
|
||||
void drawBackdrop(QWidget *widget, const QSize &size);
|
||||
|
||||
private:
|
||||
QMenu *contextMenu;
|
||||
QMenu *selectContextMenu;
|
||||
Action *removeFromAction;
|
||||
ItemView::Mode mode;
|
||||
PlayQueueGroupedView *groupedView;
|
||||
|
||||
Reference in New Issue
Block a user