diff options
Diffstat (limited to 'src/playlist.cpp')
-rw-r--r-- | src/playlist.cpp | 89 |
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"); |