Added some keyboard modifiers and simplified some item tech.

This commit is contained in:
Tobias Rundstrom 2006-02-28 22:17:49 -03:00
parent e665b5d7ad
commit ce54eaba15
4 changed files with 89 additions and 55 deletions

View file

@ -9,8 +9,6 @@ PlaylistItem::PlaylistItem (PlaylistList *pl, uint id)
{
m_pl = pl;
m_id = id;
m_isactive = false;
m_isselected = false;
m_req = false;
pl->addItem (this);
}
@ -126,19 +124,12 @@ PlaylistList::currentID (uint id)
{
PlaylistItem *i = m_itemmap->value (id);
if (!i) {
m_active = -1;
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 ();
}
@ -208,34 +199,90 @@ PlaylistList::mousePressEvent (QMouseEvent *event)
if (o < i) {
for (int y = o; y <= i; y++) {
m_selected->append (y);
m_items->value(y)->setSelected (true);
}
} else {
for (int y = i; y <= o; y++) {
m_selected->append (y);
m_items->value(y)->setSelected (true);
}
}
} else {
m_selected->append (i);
m_items->value(i)->setSelected (true);
}
} else if (event->modifiers () & Qt::ControlModifier) {
m_items->value(i)->setSelected (true);
m_selected->append (i);
} else {
for (int y = 0; y < m_selected->count(); y++) {
m_items->value(m_selected->value(y))->setSelected (false);
if (m_selected->contains (i)) {
m_selected->removeAll (i);
} else {
m_selected->append (i);
}
} 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 ();
}
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
PlaylistList::paintEvent (QPaintEvent *event)
{
@ -261,29 +308,23 @@ PlaylistList::paintEvent (QPaintEvent *event)
for (i = sitem; i < eitem; i++) {
r.setRect(0, (getFontH()*(i-sitem)) - mod,
size().width(), getFontH());
/*
if (event->rect().contains (r)) {
*/
PlaylistItem *item = m_items->value (i);
q = QString::number (i + 1) + ". " + item->text ();
PlaylistItem *item = m_items->value (i);
q = QString::number (i + 1) + ". " + item->text ();
if (item->getSelected ()) {
paint.fillRect (r, QBrush (m_color_selected));
} else {
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_selected->contains (i)) {
paint.fillRect (r, QBrush (m_color_selected));
} else {
paint.eraseRect (r);
}
*/
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()) {

View file

@ -30,6 +30,7 @@ class PlaylistList : public QWidget {
void paintEvent (QPaintEvent *event);
void mousePressEvent (QMouseEvent *event);
void mouseDoubleClickEvent (QMouseEvent *event);
void keyPressEvent (QKeyEvent *event);
void mouseMoveEvent (QMouseEvent *event) {}
@ -56,22 +57,13 @@ class PlaylistItem {
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; }
void setText (QString s) { m_text = s; }
private:
uint m_id;
PlaylistList *m_pl;
bool m_isactive;
bool m_isselected;
bool m_req;
QString m_text;
};

View file

@ -54,7 +54,7 @@ TextScroller::addOffset ()
m_x2_off = 0;
}
update();
repaint ();
m_timer->start (40);
}

View file

@ -28,6 +28,7 @@ class XMMSHandler : public QObject, public sigc::trackable {
void playlistAddURL (QString);
void playlistClear (void);
void playlistRemove (uint pos) { delete m_xmmsc->playlist_remove (pos); }
const XMMSClient *getXMMS () { return m_xmmsc; }