summaryrefslogtreecommitdiff
path: root/src/playlist.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/playlist.cpp')
-rw-r--r--src/playlist.cpp89
1 files changed, 82 insertions, 7 deletions
diff --git a/src/playlist.cpp b/src/playlist.cpp
index 6dbbf51..632969d 100644
--- a/src/playlist.cpp
+++ b/src/playlist.cpp
@@ -244,15 +244,23 @@ Playlist::Playlist(QWidget * parent, Qt::WindowFlags f)
playlist_path = "";
latest_dir = "";
+ filter_edit = new MyLineEdit(this);
+ connect(filter_edit, SIGNAL(textChanged(const QString &)), this, SLOT(filterEditChanged(const QString &)));
+
createTable();
createActions();
createToolbar();
QVBoxLayout *layout = new QVBoxLayout;
- layout->addWidget(listView);
- layout->addWidget(toolbar);
#ifdef PLAYLIST_DOUBLE_TOOLBAR
+ layout->addWidget(toolbar);
+ layout->addWidget(listView);
layout->addWidget(toolbar2);
+#else
+ layout->addWidget(listView);
+ layout->addWidget(toolbar);
+ layout->addWidget(filter_edit);
+ filter_edit->hide();
#endif
setLayout(layout);
@@ -357,6 +365,7 @@ void Playlist::createTable() {
listView->setContextMenuPolicy( Qt::CustomContextMenu );
listView->setShowGrid(false);
listView->setSortingEnabled(true);
+ listView->setWordWrap(false);
#if !USE_ITEM_DELEGATE
listView->setAlternatingRowColors(true);
#endif
@@ -392,6 +401,8 @@ void Playlist::createTable() {
connect(listView, SIGNAL(activated(const QModelIndex &)),
this, SLOT(itemActivated(const QModelIndex &)) );
+
+ setFilenameColumnVisible(false);
}
void Playlist::createActions() {
@@ -453,6 +464,26 @@ void Playlist::createActions() {
deleteSelectedFileFromDiskAct = new MyAction(this, "pl_delete_from_disk");
connect( deleteSelectedFileFromDiskAct, SIGNAL(triggered()), this, SLOT(deleteSelectedFileFromDisk()));
+
+ showSearchAct = new MyAction(this, "pl_show_search", false);
+ showSearchAct->setCheckable(true);
+ connect(showSearchAct, SIGNAL(toggled(bool)), filter_edit, SLOT(setVisible(bool)));
+
+ showPositionColumnAct = new MyAction(this, "pl_show_position_column");
+ showPositionColumnAct->setCheckable(true);
+ connect(showPositionColumnAct, SIGNAL(toggled(bool)), this, SLOT(setPositionColumnVisible(bool)));
+
+ showNameColumnAct = new MyAction(this, "pl_show_name_column");
+ showNameColumnAct->setCheckable(true);
+ connect(showNameColumnAct, SIGNAL(toggled(bool)), this, SLOT(setNameColumnVisible(bool)));
+
+ showDurationColumnAct = new MyAction(this, "pl_show_duration_column");
+ showDurationColumnAct->setCheckable(true);
+ connect(showDurationColumnAct, SIGNAL(toggled(bool)), this, SLOT(setDurationColumnVisible(bool)));
+
+ showFilenameColumnAct = new MyAction(this, "pl_show_filename_column");
+ showFilenameColumnAct->setCheckable(true);
+ connect(showFilenameColumnAct, SIGNAL(toggled(bool)), this, SLOT(setFilenameColumnVisible(bool)));
}
void Playlist::createToolbar() {
@@ -490,8 +521,6 @@ void Playlist::createToolbar() {
remove_button->setMenu( remove_menu );
remove_button->setPopupMode(QToolButton::InstantPopup);
- filter_edit = new MyLineEdit(this);
- connect(filter_edit, SIGNAL(textChanged(const QString &)), this, SLOT(filterEditChanged(const QString &)));
#ifdef PLAYLIST_DOWNLOAD
QLabel * loading_label = new QLabel(this);
@@ -525,7 +554,8 @@ void Playlist::createToolbar() {
toolbar->addAction(moveUpAct);
toolbar->addAction(moveDownAct);
toolbar->addSeparator();
- toolbar->addWidget(filter_edit);
+ toolbar->addAction(showSearchAct);
+ // toolbar->addWidget(filter_edit);
#ifdef PLAYLIST_DOWNLOAD
loading_label_action = toolbar->addWidget(loading_label);
#endif
@@ -541,6 +571,11 @@ void Playlist::createToolbar() {
popup->addAction(removeSelectedAct);
popup->addAction(editAct);
popup->addAction(deleteSelectedFileFromDiskAct);
+ popup->addSeparator();
+ popup->addAction(showPositionColumnAct);
+ popup->addAction(showNameColumnAct);
+ popup->addAction(showDurationColumnAct);
+ popup->addAction(showFilenameColumnAct);
connect( listView, SIGNAL(customContextMenuRequested(const QPoint &)),
this, SLOT(showPopup(const QPoint &)) );
@@ -583,6 +618,13 @@ void Playlist::retranslateStrings() {
deleteSelectedFileFromDiskAct->change( tr("&Delete file from disk") );
+ showSearchAct->change(Images::icon("find"), tr("Search"));
+
+ showPositionColumnAct->change(tr("Show position column"));
+ showNameColumnAct->change(tr("Show name column"));
+ showDurationColumnAct->change(tr("Show length column"));
+ showFilenameColumnAct->change(tr("Show filename column"));
+
// Edit
editAct->change( tr("&Edit") );
@@ -618,6 +660,11 @@ void Playlist::setFilter(const QString & filter) {
void Playlist::filterEditChanged(const QString & text) {
qDebug() << "Playlist::filterEditChanged:" << text;
setFilter(text);
+
+ if (text.isEmpty()) {
+ qApp->processEvents();
+ listView->scrollTo(listView->currentIndex(), QAbstractItemView::PositionAtCenter);
+ }
}
void Playlist::setCurrentItem(int current) {
@@ -1791,7 +1838,8 @@ void Playlist::saveSettings() {
#if !DOCK_PLAYLIST
set->setValue( "size", size() );
#endif
- set->setValue(QString("header_state/%1").arg(Helper::qtVersion()), listView->horizontalHeader()->saveState());
+
+ set->setValue(QString("header_state/2/%1").arg(Helper::qtVersion()), listView->horizontalHeader()->saveState());
set->setValue( "sort_column", proxy->sortColumn() );
set->setValue( "sort_order", proxy->sortOrder() );
@@ -1799,6 +1847,8 @@ void Playlist::saveSettings() {
set->setValue( "filter", filter_edit->text() );
set->setValue( "sort_case_sensivity", proxy->sortCaseSensitivity() );
+ set->setValue( "show_search", showSearchAct->isChecked() );
+
set->endGroup();
set->beginGroup( "directories");
@@ -1858,7 +1908,8 @@ void Playlist::loadSettings() {
#if !DOCK_PLAYLIST
resize( set->value("size", size()).toSize() );
#endif
- listView->horizontalHeader()->restoreState(set->value(QString("header_state/%1").arg(Helper::qtVersion()), QByteArray()).toByteArray());
+
+ listView->horizontalHeader()->restoreState(set->value(QString("header_state/2/%1").arg(Helper::qtVersion()), QByteArray()).toByteArray());
int sort_column = set->value("sort_column", COL_NUM).toInt();
int sort_order = set->value("sort_order", Qt::AscendingOrder).toInt();
@@ -1866,6 +1917,8 @@ void Playlist::loadSettings() {
QString filter = set->value( "filter").toString();
int sort_case_sensivity = set->value("sort_case_sensivity", Qt::CaseInsensitive).toInt();
+ showSearchAct->setChecked( set->value( "show_search", false).toBool() );
+
set->endGroup();
set->beginGroup( "directories");
@@ -1908,6 +1961,11 @@ void Playlist::loadSettings() {
proxy->setSortCaseSensitivity( (Qt::CaseSensitivity) sort_case_sensivity);
proxy->sort(sort_column, (Qt::SortOrder) sort_order);
filter_edit->setText(filter);
+
+ if (!listView->isColumnHidden(COL_NUM)) showPositionColumnAct->setChecked(true);
+ if (!listView->isColumnHidden(COL_NAME)) showNameColumnAct->setChecked(true);
+ if (!listView->isColumnHidden(COL_TIME)) showDurationColumnAct->setChecked(true);
+ if (!listView->isColumnHidden(COL_FILENAME)) showFilenameColumnAct->setChecked(true);
}
QString Playlist::lastDir() {
@@ -1915,6 +1973,23 @@ QString Playlist::lastDir() {
return last_dir;
}
+void Playlist::setPositionColumnVisible(bool b) {
+ listView->setColumnHidden(COL_NUM, !b);
+}
+
+void Playlist::setNameColumnVisible(bool b) {
+ listView->setColumnHidden(COL_NAME, !b);
+}
+
+void Playlist::setDurationColumnVisible(bool b) {
+ listView->setColumnHidden(COL_TIME, !b);
+}
+
+void Playlist::setFilenameColumnVisible(bool b) {
+ listView->setColumnHidden(COL_FILENAME, !b);
+
+}
+
#ifdef PLAYLIST_DOWNLOAD
void Playlist::openUrl() {
qDebug("Playlist::openUrl");