diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2015-03-09 12:50:44 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2015-03-09 12:50:44 +0000 |
| commit | 7e5d6a594ade4beb10d7e64e6bd3ec8b9ef7f3d3 (patch) | |
| tree | ae1a6e52e928582966912e2bdc9fc43e9d1be9a7 /src/plugins/Ui/skinned/playlistheader.cpp | |
| parent | ecdada84902084b3ae017f2b494594cf0182fc39 (diff) | |
| download | qmmp-7e5d6a594ade4beb10d7e64e6bd3ec8b9ef7f3d3.tar.gz qmmp-7e5d6a594ade4beb10d7e64e6bd3ec8b9ef7f3d3.tar.bz2 qmmp-7e5d6a594ade4beb10d7e64e6bd3ec8b9ef7f3d3.zip | |
playlist header: added context menu
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@4773 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/Ui/skinned/playlistheader.cpp')
| -rw-r--r-- | src/plugins/Ui/skinned/playlistheader.cpp | 61 |
1 files changed, 38 insertions, 23 deletions
diff --git a/src/plugins/Ui/skinned/playlistheader.cpp b/src/plugins/Ui/skinned/playlistheader.cpp index ad8494795..6f4c88711 100644 --- a/src/plugins/Ui/skinned/playlistheader.cpp +++ b/src/plugins/Ui/skinned/playlistheader.cpp @@ -24,12 +24,13 @@ #include <QSettings> #include <QApplication> #include <QMouseEvent> +#include <QContextMenuEvent> #include <QMenu> #include <QLineEdit> #include <QInputDialog> +#include <QIcon> #include <qmmp/qmmp.h> #include <qmmpui/qmmpuisettings.h> -#include <qmmpui/playlistmodel.h> #include <qmmpui/columnmanager.h> #include "skin.h" #include "playlistheader.h" @@ -39,15 +40,18 @@ PlayListHeader::PlayListHeader(QWidget *parent) : QWidget(parent) { - m_scrollable = false; m_metrics = 0; - m_model = 0; m_show_number = false; m_align_numbres = false; m_number_width = 0; m_task = NO_TASK; m_manager = QmmpUiSettings::instance()->columnManager(); m_skin = Skin::instance(); + m_menu = new QMenu(this); + m_menu->addAction(QIcon::fromTheme("list-add"), tr("Add column")); + m_menu->addAction(QIcon::fromTheme("configure"), tr("Edit column")); + m_menu->addSeparator(); + m_menu->addAction(QIcon::fromTheme("list-remove"), tr("Remove column")); connect(m_skin, SIGNAL(skinChanged()), this, SLOT(updateSkin())); loadColors(); @@ -126,26 +130,21 @@ void PlayListHeader::mousePressEvent(QMouseEvent *e) { if(e->button() == Qt::LeftButton) { - for(int i = 0; i < m_rects.count(); ++i) + m_pressed_column = findColumn(e->pos()); + if(m_pressed_column >= 0) { - if(m_rects.at(i).contains(e->pos())) + m_pressed_pos = e->pos(); + m_mouse_pos = e->pos(); + + if(e->pos().x() > m_rects[m_pressed_column].right() - m_metrics->width("9")) { - m_pressed_pos = e->pos(); - m_mouse_pos = e->pos(); - m_pressed_column = i; - - if(e->pos().x() > m_rects[i].right() - m_metrics->width("9")) - { - m_old_size = m_manager->size(i); - - m_task = RESIZE; - } - else - { - m_press_offset = e->pos().x() - m_rects.at(m_pressed_column).x(); - m_task = MOVE; - } - break; + m_old_size = m_manager->size(m_pressed_column); + m_task = RESIZE; + } + else + { + m_press_offset = e->pos().x() - m_rects.at(m_pressed_column).x(); + m_task = MOVE; } } } @@ -192,7 +191,6 @@ void PlayListHeader::mouseMoveEvent(QMouseEvent *e) QWidget::mouseMoveEvent(e); return; } - qDebug("moved: %d, %d", m_pressed_column, dest); m_manager->move(m_pressed_column, dest); m_pressed_column = dest; update(); @@ -205,6 +203,12 @@ void PlayListHeader::resizeEvent(QResizeEvent *) updateColumns(); } +void PlayListHeader::contextMenuEvent(QContextMenuEvent *e) +{ + m_pressed_pos = e->pos(); + m_menu->exec(e->globalPos()); +} + void PlayListHeader::paintEvent(QPaintEvent *) { QPainter painter(this); @@ -256,7 +260,8 @@ void PlayListHeader::paintEvent(QPaintEvent *) m_rects.at(m_pressed_column).width(), height()); painter.setPen(m_normal_bg); - painter.drawText(m_mouse_pos.x() - m_press_offset + m_rects[m_pressed_column].width()/2 - m_metrics->width(m_names[m_pressed_column])/2, + painter.drawText(m_mouse_pos.x() - m_press_offset + m_rects[m_pressed_column].width()/2 - + m_metrics->width(m_names[m_pressed_column])/2, m_metrics->ascent(), m_names.at(m_pressed_column)); } } @@ -267,3 +272,13 @@ void PlayListHeader::loadColors() m_normal_bg.setNamedColor(m_skin->getPLValue("normalbg")); m_current.setNamedColor(m_skin->getPLValue("current")); } + +int PlayListHeader::findColumn(QPoint pos) +{ + for(int i = 0; i < m_rects.count(); ++i) + { + if(m_rects.at(i).contains(pos)) + return i; + } + return -1; +} |
