Added some keyboard modifiers and simplified some item tech.
This commit is contained in:
parent
e665b5d7ad
commit
ce54eaba15
4 changed files with 89 additions and 55 deletions
131
PlaylistList.cpp
131
PlaylistList.cpp
|
|
@ -9,8 +9,6 @@ PlaylistItem::PlaylistItem (PlaylistList *pl, uint id)
|
||||||
{
|
{
|
||||||
m_pl = pl;
|
m_pl = pl;
|
||||||
m_id = id;
|
m_id = id;
|
||||||
m_isactive = false;
|
|
||||||
m_isselected = false;
|
|
||||||
m_req = false;
|
m_req = false;
|
||||||
pl->addItem (this);
|
pl->addItem (this);
|
||||||
}
|
}
|
||||||
|
|
@ -126,19 +124,12 @@ PlaylistList::currentID (uint id)
|
||||||
{
|
{
|
||||||
PlaylistItem *i = m_itemmap->value (id);
|
PlaylistItem *i = m_itemmap->value (id);
|
||||||
if (!i) {
|
if (!i) {
|
||||||
|
m_active = -1;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
i->setActive (true);
|
|
||||||
|
m_active = m_items->indexOf (i);
|
||||||
|
|
||||||
i = m_itemmap->value (m_active);
|
|
||||||
if (!i) {
|
|
||||||
update ();
|
|
||||||
m_active = id;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
i->setActive (false);
|
|
||||||
|
|
||||||
m_active = id;
|
|
||||||
update ();
|
update ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -208,34 +199,90 @@ PlaylistList::mousePressEvent (QMouseEvent *event)
|
||||||
if (o < i) {
|
if (o < i) {
|
||||||
for (int y = o; y <= i; y++) {
|
for (int y = o; y <= i; y++) {
|
||||||
m_selected->append (y);
|
m_selected->append (y);
|
||||||
m_items->value(y)->setSelected (true);
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
for (int y = i; y <= o; y++) {
|
for (int y = i; y <= o; y++) {
|
||||||
m_selected->append (y);
|
m_selected->append (y);
|
||||||
m_items->value(y)->setSelected (true);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
m_selected->append (i);
|
m_selected->append (i);
|
||||||
m_items->value(i)->setSelected (true);
|
|
||||||
}
|
}
|
||||||
} else if (event->modifiers () & Qt::ControlModifier) {
|
} else if (event->modifiers () & Qt::ControlModifier) {
|
||||||
m_items->value(i)->setSelected (true);
|
if (m_selected->contains (i)) {
|
||||||
m_selected->append (i);
|
m_selected->removeAll (i);
|
||||||
} else {
|
} else {
|
||||||
for (int y = 0; y < m_selected->count(); y++) {
|
m_selected->append (i);
|
||||||
m_items->value(m_selected->value(y))->setSelected (false);
|
}
|
||||||
|
} else {
|
||||||
|
if (m_selected->contains (i)) {
|
||||||
|
m_selected->clear();
|
||||||
|
} else {
|
||||||
|
m_selected->clear();
|
||||||
|
m_selected->append(i);
|
||||||
}
|
}
|
||||||
m_selected->clear();
|
|
||||||
|
|
||||||
m_items->value(i)->setSelected (true);
|
|
||||||
m_selected->append(i);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
update ();
|
update ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
PlaylistList::keyPressEvent (QKeyEvent *event)
|
||||||
|
{
|
||||||
|
|
||||||
|
XMMSHandler *xmmsh = XMMSHandler::getInstance ();
|
||||||
|
|
||||||
|
switch (event->key ()) {
|
||||||
|
case Qt::Key_Down:
|
||||||
|
{
|
||||||
|
int i = m_selected->last ();
|
||||||
|
i ++;
|
||||||
|
if (i > m_items->count ())
|
||||||
|
i = m_items->count ();
|
||||||
|
m_selected->clear ();
|
||||||
|
m_selected->append (i);
|
||||||
|
|
||||||
|
update ();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case Qt::Key_Up:
|
||||||
|
{
|
||||||
|
int i = m_selected->last ();
|
||||||
|
i --;
|
||||||
|
if (i < 0)
|
||||||
|
i = 0;
|
||||||
|
m_selected->clear ();
|
||||||
|
m_selected->append (i);
|
||||||
|
|
||||||
|
update ();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case Qt::Key_Backspace:
|
||||||
|
case Qt::Key_Delete:
|
||||||
|
{
|
||||||
|
qSort (*m_selected);
|
||||||
|
for (int i = m_selected->count (); i > 0; i --) {
|
||||||
|
qDebug ("%d", m_selected->value (i));
|
||||||
|
xmmsh->playlistRemove (m_selected->value (i));
|
||||||
|
}
|
||||||
|
m_selected->clear ();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case Qt::Key_A:
|
||||||
|
{
|
||||||
|
if (event->modifiers() == Qt::ControlModifier) {
|
||||||
|
m_selected->clear ();
|
||||||
|
for (int i = 0; i < m_items->count (); i ++) {
|
||||||
|
m_selected->append (i);
|
||||||
|
}
|
||||||
|
update ();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
PlaylistList::paintEvent (QPaintEvent *event)
|
PlaylistList::paintEvent (QPaintEvent *event)
|
||||||
{
|
{
|
||||||
|
|
@ -261,29 +308,23 @@ PlaylistList::paintEvent (QPaintEvent *event)
|
||||||
for (i = sitem; i < eitem; i++) {
|
for (i = sitem; i < eitem; i++) {
|
||||||
r.setRect(0, (getFontH()*(i-sitem)) - mod,
|
r.setRect(0, (getFontH()*(i-sitem)) - mod,
|
||||||
size().width(), getFontH());
|
size().width(), getFontH());
|
||||||
/*
|
PlaylistItem *item = m_items->value (i);
|
||||||
if (event->rect().contains (r)) {
|
q = QString::number (i + 1) + ". " + item->text ();
|
||||||
*/
|
|
||||||
PlaylistItem *item = m_items->value (i);
|
|
||||||
q = QString::number (i + 1) + ". " + item->text ();
|
|
||||||
|
|
||||||
if (item->getSelected ()) {
|
if (m_selected->contains (i)) {
|
||||||
paint.fillRect (r, QBrush (m_color_selected));
|
paint.fillRect (r, QBrush (m_color_selected));
|
||||||
} else {
|
} else {
|
||||||
paint.eraseRect (r);
|
paint.eraseRect (r);
|
||||||
}
|
|
||||||
|
|
||||||
if (item->getActive ()) {
|
|
||||||
paint.setPen (QPen (m_color_active));
|
|
||||||
paint.drawText (r, q);
|
|
||||||
paint.setPen (QPen (m_color_normal));
|
|
||||||
} else {
|
|
||||||
paint.drawText (r, q);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
|
if (m_active == i) {
|
||||||
|
paint.setPen (QPen (m_color_active));
|
||||||
|
paint.drawText (r, q);
|
||||||
|
paint.setPen (QPen (m_color_normal));
|
||||||
|
} else {
|
||||||
|
paint.drawText (r, q);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((getFontH()*(i-sitem) - mod) < size().height()) {
|
if ((getFontH()*(i-sitem) - mod) < size().height()) {
|
||||||
|
|
|
||||||
|
|
@ -30,6 +30,7 @@ class PlaylistList : public QWidget {
|
||||||
void paintEvent (QPaintEvent *event);
|
void paintEvent (QPaintEvent *event);
|
||||||
void mousePressEvent (QMouseEvent *event);
|
void mousePressEvent (QMouseEvent *event);
|
||||||
void mouseDoubleClickEvent (QMouseEvent *event);
|
void mouseDoubleClickEvent (QMouseEvent *event);
|
||||||
|
void keyPressEvent (QKeyEvent *event);
|
||||||
|
|
||||||
void mouseMoveEvent (QMouseEvent *event) {}
|
void mouseMoveEvent (QMouseEvent *event) {}
|
||||||
|
|
||||||
|
|
@ -56,22 +57,13 @@ class PlaylistItem {
|
||||||
|
|
||||||
QString text (void);
|
QString text (void);
|
||||||
|
|
||||||
void setActive (bool b) { m_isactive = b; }
|
|
||||||
bool getActive (void) { return m_isactive; }
|
|
||||||
|
|
||||||
void setSelected (bool b) { m_isselected = b; }
|
|
||||||
bool getSelected (void) { return m_isselected; }
|
|
||||||
|
|
||||||
uint getID (void) { return m_id; }
|
uint getID (void) { return m_id; }
|
||||||
|
|
||||||
void setText (QString s) { m_text = s; }
|
void setText (QString s) { m_text = s; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
uint m_id;
|
uint m_id;
|
||||||
PlaylistList *m_pl;
|
PlaylistList *m_pl;
|
||||||
|
|
||||||
bool m_isactive;
|
|
||||||
bool m_isselected;
|
|
||||||
bool m_req;
|
bool m_req;
|
||||||
QString m_text;
|
QString m_text;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -54,7 +54,7 @@ TextScroller::addOffset ()
|
||||||
m_x2_off = 0;
|
m_x2_off = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
update();
|
repaint ();
|
||||||
m_timer->start (40);
|
m_timer->start (40);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -28,6 +28,7 @@ class XMMSHandler : public QObject, public sigc::trackable {
|
||||||
|
|
||||||
void playlistAddURL (QString);
|
void playlistAddURL (QString);
|
||||||
void playlistClear (void);
|
void playlistClear (void);
|
||||||
|
void playlistRemove (uint pos) { delete m_xmmsc->playlist_remove (pos); }
|
||||||
|
|
||||||
const XMMSClient *getXMMS () { return m_xmmsc; }
|
const XMMSClient *getXMMS () { return m_xmmsc; }
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue