OTHER: scroll playlist to current entry

This commit is contained in:
Thomas Frauendorfer 2008-12-14 23:55:56 +01:00
parent 633de5b5ee
commit c682233749
6 changed files with 40 additions and 5 deletions

View file

@ -166,10 +166,21 @@ PlaylistView::removeSelected () {
}
void
PlaylistView::setModel (QAbstractItemModel *model) {
QListView::setModel (model);
PlaylistView::setModel (PlaylistModel *plmodel) {
if (model ()) disconnect (model (), 0, this, SLOT (currentPosChanged (QModelIndex)));
QListView::setModel (plmodel);
setModelColumn(0);
updateGeometry();
connect (plmodel, SIGNAL (currentPosChanged (QModelIndex)),
this, SLOT (currentPosChanged (QModelIndex)));
}
void
PlaylistView::currentPosChanged (QModelIndex index) {
QSettings s;
if (s.value ("playlist/scrolltocurrent", true).toBool ()) {
scrollTo (index);
}
}
void
@ -228,6 +239,8 @@ PlaylistView::settingsChanged ()
}
m_fontmetrics = new QFontMetrics (*m_font);
update ();
// Scroll to current pos, if enabled
currentPosChanged (qobject_cast<PlaylistModel *>(model())->currentPos ());
}
void

View file

@ -20,6 +20,7 @@
#include <xmmsclient/xmmsclient++.h>
#include "entryinfo.h"
class Skin;
class PlaylistModel;
#include <QObject>
#include <QAbstractItemDelegate>
@ -50,7 +51,9 @@ class PlaylistView : public QListView {
PlaylistView (QWidget *parent);
~PlaylistView () {}
void setModel (QAbstractItemModel *model);
void setModel (QAbstractItemModel *model)
{qWarning ("Trying to set wrong model in PlaylistView"); return;};
void setModel (PlaylistModel *model);
public slots:
void contextMenuEvent (QContextMenuEvent *e);
@ -62,7 +65,7 @@ class PlaylistView : public QListView {
void showEntryInfo (void);
void settingsChanged (void);
void setPixmaps (Skin *skin);
void currentPosChanged (QModelIndex);
protected:
void mouseDoubleClickEvent (QMouseEvent *event);

View file

@ -311,6 +311,18 @@ SettingsTabPlaylist::SettingsTabPlaylist (QWidget *parent) : QWidget (parent)
l = new QLabel (tr ("Use remote filebrowsing"), c);
h->addWidget (l, 1);
c = new QWidget (dummy);
h = new QHBoxLayout (c);
vbox->addWidget (c, 1);
m_scroll_view = new QCheckBox (c);
if (!s.contains ("scrolltocurrent"))
s.setValue ("scrolltocurrent", true);
m_scroll_view->setCheckState (s.value ("scrolltocurrent").toBool () ? Qt::Checked : Qt::Unchecked);
h->addWidget (m_scroll_view);
l = new QLabel (tr ("Scroll playlist to current entry"), c);
h->addWidget (l, 1);
s.endGroup ();
}
@ -321,6 +333,7 @@ SettingsTabPlaylist::saveSettings (void)
s.setValue ("playlist/fontsize", m_fontsize->value ());
s.setValue ("playlist/shadedsize", m_shadesize->value ());
s.setValue ("playlist/useremote", m_remote_fs->checkState () == Qt::Checked);
s.setValue ("playlist/scrolltocurrent", m_scroll_view->checkState () == Qt::Checked);
//TODO: Check if we really changed something
return true;
}

View file

@ -51,6 +51,7 @@ class SettingsTabPlaylist : public QWidget {
QSpinBox *m_fontsize;
QSpinBox *m_shadesize;
QCheckBox *m_remote_fs;
QCheckBox *m_scroll_view;
};
class SettingsTabMain : public QWidget {