aboutsummaryrefslogtreecommitdiff
path: root/src/ui
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2009-11-12 22:00:02 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2009-11-12 22:00:02 +0000
commit90d3aeb642ba4d6445932343010294a39b33efe2 (patch)
treeea9380c8aa1c8086b2258a8c21e8bf6486fcc141 /src/ui
parente7115704de07fd7a4a474447b36ae2c9cc8a8f25 (diff)
downloadqmmp-90d3aeb642ba4d6445932343010294a39b33efe2.tar.gz
qmmp-90d3aeb642ba4d6445932343010294a39b33efe2.tar.bz2
qmmp-90d3aeb642ba4d6445932343010294a39b33efe2.zip
added multiple playlists support
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@1363 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/ui')
-rw-r--r--src/ui/configdialog.cpp16
-rw-r--r--src/ui/display.cpp4
-rw-r--r--src/ui/jumptotrackdialog.cpp23
-rw-r--r--src/ui/jumptotrackdialog.h18
-rw-r--r--src/ui/keyboardmanager.cpp67
-rw-r--r--src/ui/keyboardmanager.h8
-rw-r--r--src/ui/listwidget.cpp41
-rw-r--r--src/ui/listwidget.h18
-rw-r--r--src/ui/mainwindow.cpp110
-rw-r--r--src/ui/mainwindow.h16
-rw-r--r--src/ui/playlist.cpp143
-rw-r--r--src/ui/playlist.h14
-rw-r--r--src/ui/playlisttitlebar.cpp7
-rw-r--r--src/ui/playlisttitlebar.h4
-rw-r--r--src/ui/translations/qmmp_cs.ts181
-rw-r--r--src/ui/translations/qmmp_de.ts181
-rw-r--r--src/ui/translations/qmmp_it.ts181
-rw-r--r--src/ui/translations/qmmp_lt.ts181
-rw-r--r--src/ui/translations/qmmp_pl_PL.ts181
-rw-r--r--src/ui/translations/qmmp_pt_BR.ts181
-rw-r--r--src/ui/translations/qmmp_ru.ts181
-rw-r--r--src/ui/translations/qmmp_tr.ts181
-rw-r--r--src/ui/translations/qmmp_uk_UA.ts181
-rw-r--r--src/ui/translations/qmmp_zh_CN.ts181
-rw-r--r--src/ui/translations/qmmp_zh_TW.ts181
25 files changed, 1277 insertions, 1203 deletions
diff --git a/src/ui/configdialog.cpp b/src/ui/configdialog.cpp
index 068a9010c..a468cd28c 100644
--- a/src/ui/configdialog.cpp
+++ b/src/ui/configdialog.cpp
@@ -105,10 +105,10 @@ void ConfigDialog::readSettings()
QSettings settings (Qmmp::configFile(), QSettings::IniFormat);
if (MediaPlayer *player = MediaPlayer::instance())
{
- ui.formatLineEdit->setText(player->playListModel()->format());
- ui.metadataCheckBox->setChecked(player->playListModel()->useMetadata());
- ui.underscoresCheckBox->setChecked(player->playListModel()->convertUnderscore());
- ui.per20CheckBox->setChecked(player->playListModel()->convertTwenty());
+ ui.formatLineEdit->setText(player->playListManager()->format());
+ ui.metadataCheckBox->setChecked(player->playListManager()->useMetadata());
+ ui.underscoresCheckBox->setChecked(player->playListManager()->convertUnderscore());
+ ui.per20CheckBox->setChecked(player->playListManager()->convertTwenty());
}
ui.protocolCheckBox->setChecked(settings.value ("PlayList/show_protocol", FALSE).toBool());
ui.numbersCheckBox->setChecked(settings.value ("PlayList/show_numbers", TRUE).toBool());
@@ -607,10 +607,10 @@ void ConfigDialog::saveSettings()
QSettings settings (Qmmp::configFile(), QSettings::IniFormat);
if (MediaPlayer *player = MediaPlayer::instance())
{
- player->playListModel()->setFormat(ui.formatLineEdit->text().trimmed());
- player->playListModel()->setUseMetadata(ui.metadataCheckBox->isChecked());
- player->playListModel()->setConvertUnderscore(ui.underscoresCheckBox->isChecked());
- player->playListModel()->setConvertTwenty(ui.per20CheckBox->isChecked());
+ player->playListManager()->setFormat(ui.formatLineEdit->text().trimmed());
+ player->playListManager()->setUseMetadata(ui.metadataCheckBox->isChecked());
+ player->playListManager()->setConvertUnderscore(ui.underscoresCheckBox->isChecked());
+ player->playListManager()->setConvertTwenty(ui.per20CheckBox->isChecked());
}
settings.setValue ("PlayList/show_protocol", ui.protocolCheckBox->isChecked());
settings.setValue ("PlayList/show_numbers", ui.numbersCheckBox->isChecked());
diff --git a/src/ui/display.cpp b/src/ui/display.cpp
index 58cb78e7c..fab49fbf9 100644
--- a/src/ui/display.cpp
+++ b/src/ui/display.cpp
@@ -114,9 +114,9 @@ MainDisplay::MainDisplay (QWidget *parent)
connect(m_core, SIGNAL(stateChanged(Qmmp::State)), SLOT(setState(Qmmp::State)));
connect(m_core, SIGNAL(volumeChanged(int,int)), SLOT(setVolume(int, int)));
connect(m_core, SIGNAL(elapsedChanged(qint64)),m_titlebar, SLOT(setTime(qint64)));
- PlayListModel *model = MediaPlayer::instance()->playListModel();
+ /*PlayListModel *model = MediaPlayer::instance()->playListModel();
connect(model, SIGNAL(repeatableListChanged(bool)), m_repeatButton, SLOT(setON(bool)));
- connect(model, SIGNAL(shuffleChanged(bool)), m_shuffleButton, SLOT(setON(bool)));
+ connect(model, SIGNAL(shuffleChanged(bool)), m_shuffleButton, SLOT(setON(bool)));*/
updatePositions();
updateMask();
}
diff --git a/src/ui/jumptotrackdialog.cpp b/src/ui/jumptotrackdialog.cpp
index 6c9343170..0cad6ecfd 100644
--- a/src/ui/jumptotrackdialog.cpp
+++ b/src/ui/jumptotrackdialog.cpp
@@ -19,19 +19,19 @@
***************************************************************************/
#include "jumptotrackdialog.h"
-#include <qmmpui/playlistmodel.h>
+#include <qmmpui/playlistmanager.h>
#include <QStringListModel>
#include <QSortFilterProxyModel>
#include <QShortcut>
#include <QKeySequence>
-JumpToTrackDialog::JumpToTrackDialog(QWidget* parent, Qt::WFlags fl)
- : QDialog( parent, fl )
+JumpToTrackDialog::JumpToTrackDialog(PlayListManager *manager, QWidget* parent)
+ : QDialog (parent)
{
setupUi(this);
setAttribute(Qt::WA_QuitOnClose, FALSE);
- m_playListModel = 0;
+ m_pl_manager = manager;
m_listModel = new QStringListModel(this);
m_proxyModel = new QSortFilterProxyModel;
@@ -76,8 +76,8 @@ void JumpToTrackDialog::on_queuePushButton_clicked()
if (!mi_list.isEmpty())
{
int selected = (m_proxyModel->mapToSource(mi_list.at(0))).row();
- m_playListModel->setQueued(m_playListModel->item(selected));
- if (m_playListModel->isQueued(m_playListModel->item(selected)))
+ m_pl_manager->selectedPlayList()->setQueued(m_pl_manager->selectedPlayList()->item(selected));
+ if (m_pl_manager->selectedPlayList()->isQueued(m_pl_manager->selectedPlayList()->item(selected)))
queuePushButton->setText(tr("Unqueue"));
else
queuePushButton->setText(tr("Queue"));
@@ -96,16 +96,11 @@ void JumpToTrackDialog::on_jumpToPushButton_clicked()
void JumpToTrackDialog::refresh()
{
filterLineEdit->clear();
- QStringList titles = m_playListModel->getTitles(0,m_playListModel->count());
+ QStringList titles = m_pl_manager->selectedPlayList()->getTitles(0, m_pl_manager->selectedPlayList()->count());
m_listModel->setStringList(titles);
filterLineEdit->setFocus();
}
-void JumpToTrackDialog::setModel(PlayListModel * model)
-{
- m_playListModel = model;
-}
-
void JumpToTrackDialog::on_filterLineEdit_textChanged(const QString &str)
{
m_proxyModel->setFilterFixedString(str);
@@ -126,14 +121,14 @@ void JumpToTrackDialog::on_filterLineEdit_returnPressed ()
void JumpToTrackDialog::jumpTo(const QModelIndex & index)
{
int selected = (m_proxyModel->mapToSource(index)).row();
- m_playListModel->setCurrent(selected);
+ m_pl_manager->selectedPlayList()->setCurrent(selected);
emit playRequest();
}
void JumpToTrackDialog::queueUnqueue(const QModelIndex& curr,const QModelIndex&)
{
int row = m_proxyModel->mapToSource(curr).row();
- if (m_playListModel->isQueued(m_playListModel->item(row)))
+ if (m_pl_manager->selectedPlayList()->isQueued(m_pl_manager->selectedPlayList()->item(row)))
queuePushButton->setText(tr("Unqueue"));
else
queuePushButton->setText(tr("Queue"));
diff --git a/src/ui/jumptotrackdialog.h b/src/ui/jumptotrackdialog.h
index fb4cf301e..56f95a177 100644
--- a/src/ui/jumptotrackdialog.h
+++ b/src/ui/jumptotrackdialog.h
@@ -24,24 +24,22 @@
#include <QDialog>
#include "ui_jumptotrackdialog.h"
-/**
- @author Vladimir Kuznetsov <vovanec@gmail.com>
- */
-
class QStringListModel;
-class PlayListModel;
class QSortFilterProxyModel;
+class PlayListManager;
-
+/**
+ @author Vladimir Kuznetsov <vovanec@gmail.com>
+ */
class JumpToTrackDialog : public QDialog, private Ui::JumpToTrackDialog
{
Q_OBJECT
public:
- JumpToTrackDialog(QWidget* parent = 0, Qt::WFlags fl = 0 );
+ JumpToTrackDialog(PlayListManager *manager, QWidget* parent = 0);
~JumpToTrackDialog();
- void setModel(PlayListModel* model);
void refresh();
+
protected slots:
void on_closePushButton_clicked();
void on_refreshPushButton_clicked();
@@ -51,12 +49,14 @@ protected slots:
void on_filterLineEdit_returnPressed ();
void jumpTo(const QModelIndex&);
void queueUnqueue(const QModelIndex&,const QModelIndex&);
+
signals:
void playRequest();
+
private:
- PlayListModel* m_playListModel;
QStringListModel* m_listModel;
QSortFilterProxyModel* m_proxyModel;
+ PlayListManager *m_pl_manager;
};
#endif
diff --git a/src/ui/keyboardmanager.cpp b/src/ui/keyboardmanager.cpp
index 8a6853b85..024f12bae 100644
--- a/src/ui/keyboardmanager.cpp
+++ b/src/ui/keyboardmanager.cpp
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2006 by Ilya Kotov *
+ * Copyright (C) 2006-2009 by Ilya Kotov *
* forkotov02@hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -20,9 +20,7 @@
#include <QKeyEvent>
-
#include <qmmpui/playlistmodel.h>
-
#include "playlist.h"
#include "listwidget.h"
#include "keyboardmanager.h"
@@ -72,14 +70,9 @@ bool KeyboardManager::handleKeyRelease (QKeyEvent*)
return FALSE;
}
-void KeyboardManager::setModel (PlayListModel *m)
-{
- m_playListModel = m;
-}
-
void KeyboardManager::keyUp (QKeyEvent * ke)
{
- QList<int> rows = m_playListModel->getSelectedRows();
+ QList<int> rows = m_playlist->listWidget()->model()->getSelectedRows();
ListWidget* list_widget = m_playlist->listWidget();
if (rows.count() > 0)
@@ -89,7 +82,7 @@ void KeyboardManager::keyUp (QKeyEvent * ke)
if (! (ke->modifiers() & Qt::ShiftModifier || ke->modifiers() & Qt::AltModifier))
{
- m_playListModel->clearSelection();
+ m_playlist->listWidget()->model()->clearSelection();
list_widget->setAnchorRow(-1);
}
@@ -109,22 +102,22 @@ void KeyboardManager::keyUp (QKeyEvent * ke)
{
if (ke->modifiers() == Qt::AltModifier)
{
- m_playListModel->moveItems (rows[0],rows[0] - 1);
+ m_playlist->listWidget()->model()->moveItems (rows[0],rows[0] - 1);
list_widget->setAnchorRow (list_widget->getAnchorRow() - 1);
}
else
{
if (rows.last() > list_widget->getAnchorRow() && ke->modifiers() & Qt::ShiftModifier)
{
- m_playListModel->setSelected (rows.last(),false);
+ m_playlist->listWidget()->model()->setSelected (rows.last(),false);
}
else if (rows[0] > 0)
{
- m_playListModel->setSelected (rows[0] - 1,true);
+ m_playlist->listWidget()->model()->setSelected (rows[0] - 1,true);
}
else
{
- m_playListModel->setSelected (rows[0],true);
+ m_playlist->listWidget()->model()->setSelected (rows[0],true);
if(list_widget->getAnchorRow() == -1)
list_widget->setAnchorRow(rows[0]);
}
@@ -135,11 +128,11 @@ void KeyboardManager::keyUp (QKeyEvent * ke)
}
else
{
- m_playListModel->setSelected (list_widget->firstVisibleRow(),true);
+ m_playlist->listWidget()->model()->setSelected (list_widget->firstVisibleRow(),true);
list_widget->setAnchorRow(list_widget->firstVisibleRow());
}
- rows = m_playListModel->getSelectedRows();
+ rows = m_playlist->listWidget()->model()->getSelectedRows();
if (rows[0] < list_widget->firstVisibleRow() && list_widget->firstVisibleRow() > 0)
{
@@ -154,20 +147,20 @@ void KeyboardManager::keyUp (QKeyEvent * ke)
{
//if(list_widget->getAnchorRow() == -1)
list_widget->setAnchorRow(list_widget->firstVisibleRow());
- m_playListModel->setSelected (list_widget->firstVisibleRow(),true);
+ m_playlist->listWidget()->model()->setSelected (list_widget->firstVisibleRow(),true);
}
}
void KeyboardManager::keyDown (QKeyEvent * ke)
{
- QList<int> rows = m_playListModel->getSelectedRows();
+ QList<int> rows = m_playlist->listWidget()->model()->getSelectedRows();
ListWidget* list_widget = m_playlist->listWidget();
//qWarning("count: %d",rows.count());
if (rows.count() > 0)
{
if (! (ke->modifiers() & Qt::ShiftModifier || ke->modifiers() & Qt::AltModifier))
{
- m_playListModel->clearSelection();
+ m_playlist->listWidget()->model()->clearSelection();
list_widget->setAnchorRow(-1);
}
@@ -187,37 +180,37 @@ void KeyboardManager::keyDown (QKeyEvent * ke)
{
if (ke->modifiers() == Qt::AltModifier)
{
- m_playListModel->moveItems (rows.last(),rows.last() + 1);
+ m_playlist->listWidget()->model()->moveItems (rows.last(),rows.last() + 1);
list_widget->setAnchorRow (list_widget->getAnchorRow() + 1);
}
else
{
//qWarning("list_widget %d",list_widget->getAnchorRow());
- //qWarning("model count: %d rows.last(): %d",m_playListModel->count(),rows.last());
+ //qWarning("model count: %d rows.last(): %d",m_playlist->listWidget()->model()->count(),rows.last());
if (rows[0] < list_widget->getAnchorRow() && ke->modifiers() & Qt::ShiftModifier)
- m_playListModel->setSelected (rows[0],false);
- else if (rows.last() < m_playListModel->count() - 1)
+ m_playlist->listWidget()->model()->setSelected (rows[0],false);
+ else if (rows.last() < m_playlist->listWidget()->model()->count() - 1)
{
- m_playListModel->setSelected (rows.last() + 1,true);
+ m_playlist->listWidget()->model()->setSelected (rows.last() + 1,true);
}
else
{
- m_playListModel->setSelected (rows.last(),true);
+ m_playlist->listWidget()->model()->setSelected (rows.last(),true);
if(list_widget->getAnchorRow() == -1)
list_widget->setAnchorRow(rows.last());
}
- if (! (ke->modifiers() & Qt::ShiftModifier) && rows.last() < m_playListModel->count() - 1)
+ if (! (ke->modifiers() & Qt::ShiftModifier) && rows.last() < m_playlist->listWidget()->model()->count() - 1)
list_widget->setAnchorRow (rows.last() + 1);
}
}
else
{
- m_playListModel->setSelected (list_widget->firstVisibleRow(),true);
+ m_playlist->listWidget()->model()->setSelected (list_widget->firstVisibleRow(),true);
list_widget->setAnchorRow(list_widget->firstVisibleRow());
}
- rows = m_playListModel->getSelectedRows();
+ rows = m_playlist->listWidget()->model()->getSelectedRows();
if (!rows.isEmpty() && rows.last() >= list_widget->visibleRows() + list_widget->firstVisibleRow())
{
@@ -231,7 +224,7 @@ void KeyboardManager::keyDown (QKeyEvent * ke)
}
else
{
- m_playListModel->setSelected (list_widget->firstVisibleRow(),true);
+ m_playlist->listWidget()->model()->setSelected (list_widget->firstVisibleRow(),true);
//if(list_widget->getAnchorRow() == -1)
list_widget->setAnchorRow(list_widget->firstVisibleRow());
}
@@ -249,18 +242,18 @@ void KeyboardManager::keyPgDown (QKeyEvent *)
{
ListWidget* list_widget = m_playlist->listWidget();
int page_size = list_widget->visibleRows();
- int offset = (list_widget->firstVisibleRow() +page_size < m_playListModel->count()) ?
- list_widget->firstVisibleRow() +page_size:m_playListModel->count() - 1;
+ int offset = (list_widget->firstVisibleRow() +page_size < m_playlist->listWidget()->model()->count()) ?
+ list_widget->firstVisibleRow() +page_size:m_playlist->listWidget()->model()->count() - 1;
list_widget->scroll (offset);
}
void KeyboardManager::keyEnter (QKeyEvent *)
{
- QList<int> rows = m_playListModel->getSelectedRows();
+ QList<int> rows = m_playlist->listWidget()->model()->getSelectedRows();
MainWindow* mw = qobject_cast<MainWindow*> (m_playlist->parentWidget());
if (mw && rows.count() > 0)
{
- m_playListModel->setCurrent (rows[0]);
+ m_playlist->listWidget()->model()->setCurrent (rows[0]);
mw->replay();
}
}
@@ -271,17 +264,17 @@ void KeyboardManager::keyHome(QKeyEvent *ke)
m_playlist->listWidget()->scroll (0);
if(ke->modifiers() & Qt::ShiftModifier)
for(int i = 0; i <= list_widget->getAnchorRow(); ++i)
- m_playListModel->setSelected (i,true);
+ m_playlist->listWidget()->model()->setSelected (i,true);
}
void KeyboardManager::keyEnd(QKeyEvent *ke)
{
ListWidget* list_widget = m_playlist->listWidget();
int page_size = list_widget->visibleRows();
- int scroll_to = m_playListModel->count() - page_size;
+ int scroll_to = m_playlist->listWidget()->model()->count() - page_size;
if(scroll_to >= 0)
list_widget->scroll(scroll_to);
if(ke->modifiers() & Qt::ShiftModifier)
- for(int i = list_widget->getAnchorRow(); i < m_playListModel->count(); ++i)
- m_playListModel->setSelected (i,true);
+ for(int i = list_widget->getAnchorRow(); i < m_playlist->listWidget()->model()->count(); ++i)
+ m_playlist->listWidget()->model()->setSelected (i,true);
}
diff --git a/src/ui/keyboardmanager.h b/src/ui/keyboardmanager.h
index 791a93334..73fa1bd53 100644
--- a/src/ui/keyboardmanager.h
+++ b/src/ui/keyboardmanager.h
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2006 by Ilya Kotov *
+ * Copyright (C) 2006-2009 by Ilya Kotov *
* forkotov02@hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -23,7 +23,6 @@
#define _KEYBOARDMANAGER_H
class PlayList;
-class PlayListModel;
class QKeyEvent;
@@ -52,10 +51,6 @@ class KeyboardManager
*/
bool handleKeyRelease (QKeyEvent*);
- /*!
- * Inits the \b KeyboardManager object with data model.
- */
- void setModel (PlayListModel*);
protected:
void keyUp (QKeyEvent* ke);
void keyDown (QKeyEvent* ke);
@@ -66,7 +61,6 @@ class KeyboardManager
void keyEnd(QKeyEvent* ke);
private:
PlayList* m_playlist;
- PlayListModel* m_playListModel;
};
#endif
diff --git a/src/ui/listwidget.cpp b/src/ui/listwidget.cpp
index 6a56d4218..2a80fb421 100644
--- a/src/ui/listwidget.cpp
+++ b/src/ui/listwidget.cpp
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2006-2008 by Ilya Kotov *
+ * Copyright (C) 2006-2009 by Ilya Kotov *
* forkotov02@hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -27,11 +27,9 @@
#include <QUrl>
#include <QApplication>
#include <QHelpEvent>
-
#include <qmmpui/playlistitem.h>
#include <qmmpui/playlistmodel.h>
#include <qmmpui/mediaplayer.h>
-
#include "textscroller.h"
#include "listwidget.h"
#include "skin.h"
@@ -71,7 +69,6 @@ void ListWidget::readSettings()
m_show_protocol = settings.value ("PlayList/show_protocol", FALSE).toBool();
m_show_number = settings.value ("PlayList/show_numbers", TRUE).toBool();
-
if (m_update)
{
delete m_metrics;
@@ -179,19 +176,11 @@ void ListWidget::mousePressEvent(QMouseEvent *e)
if (m_pressed_row > m_anchor_row)
{
- //int upper_selected = m_model->firstSelectedUpper(m_anchor_row);
- //if (INVALID_ROW != upper_selected)
- //{
- /*for (int j = upper_selected;j < m_anchor_row;j++)
- {
- m_model->setSelected(j, false);
- }*/
m_model->clearSelection();
for (int j = m_anchor_row;j <= m_pressed_row;j++)
{
m_model->setSelected(j, true);
}
- //}
}
else
{
@@ -201,27 +190,6 @@ void ListWidget::mousePressEvent(QMouseEvent *e)
m_model->setSelected(j, true);
}
}
-
- /*
- int upper_selected = m_model->firstSelectedUpper(row);
- int lower_selected = m_model->firstSelectedLower(row);
- if (INVALID_ROW != upper_selected)
- {
- for (int j = upper_selected;j <= row;j++)
- {
- m_model->setSelected(j, true);
- }
- }
- else if (INVALID_ROW != lower_selected)
- {
- for (int j = row;j <= lower_selected;j++)
- {
- m_model->setSelected(j, true);
- }
- }
- else
- m_model->setSelected(row, true);
- */
}
else
{
@@ -324,9 +292,11 @@ void ListWidget::updateList()
update();
}
-void ListWidget::setModel(PlayListModel *model)
+void ListWidget::setModel(PlayListModel *selected, PlayListModel *previous)
{
- m_model = model;
+ if(previous)
+ disconnect(previous, 0, this, 0); //disconnect previous model
+ m_model = selected;
connect (m_model, SIGNAL(listChanged()), SLOT(updateList()));
connect (m_model, SIGNAL(currentChanged()), SLOT(recenterCurrent()));
updateList();
@@ -464,7 +434,6 @@ int ListWidget::rowAt(int y) const
return INVALID_ROW;
}
-
void ListWidget::contextMenuEvent(QContextMenuEvent * event)
{
if (menu())
diff --git a/src/ui/listwidget.h b/src/ui/listwidget.h
index df3889593..15e657c62 100644
--- a/src/ui/listwidget.h
+++ b/src/ui/listwidget.h
@@ -46,7 +46,6 @@ public:
~ListWidget();
- void setModel(PlayListModel *);
void readSettings();
/*!
* Returns count of currently visible rows.
@@ -74,15 +73,24 @@ public:
m_anchor_row = r;
}
+ QMenu *menu()
+ {
+ return m_menu;
+ }
+
+ PlayListModel *model()
+ {
+ Q_ASSERT(!m_model);
+ return m_model;
+ }
+
+
public slots:
void updateList();
void scroll(int); //0-99
void recenterCurrent();
+ void setModel(PlayListModel *selected, PlayListModel *previous = 0);
- QMenu *menu()
- {
- return m_menu;
- }
signals:
void selectionChanged();
diff --git a/src/ui/mainwindow.cpp b/src/ui/mainwindow.cpp
index ae23f58b0..4f021d725 100644
--- a/src/ui/mainwindow.cpp
+++ b/src/ui/mainwindow.cpp
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2006-2009 by Ilya Kotov m *
+ * Copyright (C) 2006-2009 by Ilya Kotov *
* forkotov02@hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -22,6 +22,7 @@
#include <QDir>
#include <QAction>
#include <QMenu>
+#include <QLibrary>
#include <math.h>
@@ -35,6 +36,7 @@
#include <qmmpui/commandlinemanager.h>
#include <qmmpui/filedialog.h>
#include <qmmpui/playlistmodel.h>
+#include <qmmpui/playlistmanager.h>
#include <qmmpui/mediaplayer.h>
#include "textscroller.h"
@@ -58,10 +60,8 @@ MainWindow::MainWindow(const QStringList& args, BuiltinCommandLineOption* option
: QMainWindow(parent)
{
m_vis = 0;
- seeking = FALSE;
m_update = FALSE;
m_paused = FALSE;
- m_playlistName = tr("Default");
m_option_manager = option_manager;
setWindowIcon(QIcon(":/32x32/qmmp.png"));
#if QT_VERSION >= 0x040500
@@ -69,14 +69,13 @@ MainWindow::MainWindow(const QStringList& args, BuiltinCommandLineOption* option
#else
setWindowFlags(Qt::Window | Qt::FramelessWindowHint | Qt::WindowSystemMenuHint);
#endif
- //setFixedSize (275,116);
setWindowTitle("Qmmp");
//prepare libqmmp and libqmmpui libraries for playing
m_player = new MediaPlayer(this);
m_core = new SoundCore(this);
- m_playListModel = new PlayListModel(this);
- m_player->initialize(m_core, m_playListModel);
+ m_pl_manager = new PlayListManager(this);
+ m_player->initialize(m_core, m_pl_manager);
//additional featuries
new PlaylistParser(this);
m_generalHandler = new GeneralHandler(this);
@@ -90,15 +89,13 @@ MainWindow::MainWindow(const QStringList& args, BuiltinCommandLineOption* option
setCentralWidget(m_display);
m_display->setFocus ();
- m_playlist = new PlayList(this);
- m_playlist->setModel(m_playListModel);
+ m_playlist = new PlayList(m_pl_manager, this);
dock->addWidget(m_playlist);
m_equalizer = new EqWidget(this);
dock->addWidget(m_equalizer);
- m_jumpDialog = new JumpToTrackDialog(this);
- m_jumpDialog->setModel(m_playListModel);
+ m_jumpDialog = new JumpToTrackDialog(m_pl_manager, this);
m_jumpDialog->hide();
createActions();
@@ -113,22 +110,19 @@ MainWindow::MainWindow(const QStringList& args, BuiltinCommandLineOption* option
connect (m_playlist,SIGNAL(pause()), m_core ,SLOT(pause()));
connect (m_playlist,SIGNAL(stop()),SLOT(stop()));
connect (m_playlist,SIGNAL(eject()),SLOT(addFile()));
- connect (m_playlist,SIGNAL(newPlaylist()),SLOT(newPlaylist()));
connect (m_playlist,SIGNAL(loadPlaylist()),SLOT(loadPlaylist()));
connect (m_playlist,SIGNAL(savePlaylist()),SLOT(savePlaylist()));
- connect(m_display,SIGNAL(shuffleToggled(bool)),m_playListModel,SLOT(prepareForShufflePlaying(bool)));
- connect(m_display,SIGNAL(repeatableToggled(bool)),m_playListModel,SLOT(prepareForRepeatablePlaying(bool)));
+ connect(m_display,SIGNAL(shuffleToggled(bool)),m_pl_manager,SLOT(setShuffle(bool)));
+ connect(m_display,SIGNAL(repeatableToggled(bool)),m_pl_manager,SLOT(setRepeatableList(bool)));
connect(m_equalizer, SIGNAL(valueChanged()), SLOT(updateEQ()));
- connect(m_jumpDialog,SIGNAL(playRequest()),this,SLOT(play()));
+ connect(m_jumpDialog,SIGNAL(playRequest()), SLOT(replay()));
connect(m_core, SIGNAL(stateChanged(Qmmp::State)), SLOT(showState(Qmmp::State)));
connect(m_core, SIGNAL(elapsedChanged(qint64)),m_playlist, SLOT(setTime(qint64)));
connect(m_core, SIGNAL(metaDataChanged()),SLOT(showMetaData()));
- connect(m_core, SIGNAL(bufferingProgress(int)), TextScroller::getPointer(),
- SLOT(setProgress(int)));
-
+ connect(m_core, SIGNAL(bufferingProgress(int)), TextScroller::getPointer(), SLOT(setProgress(int)));
connect(m_generalHandler, SIGNAL(toggleVisibilityCalled()), SLOT(toggleVisibility()));
connect(m_generalHandler, SIGNAL(exitCalled()), SLOT(close()));
@@ -136,7 +130,7 @@ MainWindow::MainWindow(const QStringList& args, BuiltinCommandLineOption* option
m_display->setEQ(m_equalizer);
m_display->setPL(m_playlist);
dock->updateDock();
- m_playListModel->doCurrentVisibleRequest();
+ m_pl_manager->currentPlayList()->doCurrentVisibleRequest();
updateEQ();
#ifndef Q_OS_WIN32
QString cwd = QDir::currentPath();
@@ -148,9 +142,7 @@ MainWindow::MainWindow(const QStringList& args, BuiltinCommandLineOption* option
MainWindow::~MainWindow()
-{
- //stop();
-}
+{}
void MainWindow::play()
{
@@ -160,16 +152,15 @@ void MainWindow::play()
void MainWindow::replay()
{
stop();
+ m_pl_manager->activatePlayList(m_pl_manager->selectedPlayList());
play();
}
void MainWindow::seek(qint64 pos)
{
- if (!seeking)
- m_core->seek(pos);
+ m_core->seek(pos);
}
-
void MainWindow::forward()
{
seek(m_core->elapsed() + KEY_OFFSET);
@@ -217,12 +208,12 @@ void MainWindow::updateEQ()
void MainWindow::showState(Qmmp::State state)
{
- disconnect(m_playListModel, SIGNAL(firstAdded()), this, SLOT(play()));
+ //disconnect(m_playListModel, SIGNAL(firstAdded()), this, SLOT(play()));
switch ((int) state)
{
case Qmmp::Playing:
- if (m_playListModel->currentItem())
- m_equalizer->loadPreset(m_playListModel->currentItem()->url().section("/",-1));
+ if (m_pl_manager->currentPlayList()->currentItem())
+ m_equalizer->loadPreset(m_pl_manager->currentPlayList()->currentItem()->url().section("/",-1));
if (m_playlist->listWidget())
m_playlist->listWidget()->updateList(); //removes progress message from TextScroller
break;
@@ -237,6 +228,7 @@ void MainWindow::showState(Qmmp::State state)
break;
}
}
+
void MainWindow::showMetaData()
{
qDebug("===== metadata ======");
@@ -270,7 +262,7 @@ void MainWindow::closeEvent (QCloseEvent *)
void MainWindow::addDir()
{
FileDialog::popup(this, FileDialog::AddDirs, &m_lastDir,
- m_playListModel, SLOT(addFileList(const QStringList&)),
+ m_pl_manager->selectedPlayList(), SLOT(addFileList(const QStringList&)),
tr("Choose a directory"));
}
@@ -281,25 +273,10 @@ void MainWindow::addFile()
MetaDataManager::instance()->nameFilters().join (" ") +")";
filters << MetaDataManager::instance()->filters();
FileDialog::popup(this, FileDialog::AddDirsFiles, &m_lastDir,
- m_playListModel, SLOT(addFileList(const QStringList&)),
+ m_pl_manager->selectedPlayList(), SLOT(addFileList(const QStringList&)),
tr("Select one or more files to open"), filters.join(";;"));
}
-void MainWindow::clear()
-{
- m_playListModel->clear();
-}
-
-void MainWindow::startSeek()
-{
- seeking = TRUE;
-}
-
-void MainWindow::endSeek()
-{
- seeking = FALSE;
-}
-
void MainWindow::changeEvent (QEvent * event)
{
if (event->type() == QEvent::ActivationChange)
@@ -328,14 +305,11 @@ void MainWindow::readSettings()
bool val = settings.value("Playlist/repeatable",FALSE).toBool();
// Repeat/Shuffle
- m_playListModel->prepareForRepeatablePlaying(val);
+ m_pl_manager->setRepeatableList(val);
m_display->setIsRepeatable(val);
val = settings.value("Playlist/shuffle",FALSE).toBool();
m_display->setIsShuffle(val);
- m_playListModel->prepareForShufflePlaying(val);
-
- // Playlist name
- m_playlistName = settings.value("Playlist/playlist_name","Default").toString();
+ m_pl_manager->setShuffle(val);
m_update = TRUE;
}
@@ -363,8 +337,6 @@ void MainWindow::writeSettings()
settings.setValue("repeatable",m_display->isRepeatable());
settings.setValue("shuffle",m_display->isShuffle());
- // Playlist name
- settings.setValue("playlist_name",m_playlistName);
settings.endGroup();
}
@@ -376,7 +348,6 @@ void MainWindow::showSettings()
readSettings();
m_playlist->readSettings();
TextScroller::getPointer()->readSettings();
- //m_core->updateConfig();
m_visMenu->updateActions();
m_skin->reloadSkin();
Dock::instance()->updateDock();
@@ -433,12 +404,12 @@ void MainWindow::createActions()
repeateAllAction->setShortcut(tr("R")) ;
repeateTrackAction->setShortcut(tr("Ctrl+R")) ;
shuffleAction->setShortcut(tr("S")) ;
- connect(repeateAllAction, SIGNAL(triggered (bool)), m_playListModel, SLOT(prepareForRepeatablePlaying(bool)));
+ connect(repeateAllAction, SIGNAL(triggered (bool)), m_pl_manager, SLOT(setRepeatableList(bool)));
connect(repeateTrackAction, SIGNAL(triggered (bool)), m_player, SLOT(setRepeatable(bool)));
- connect(shuffleAction, SIGNAL(triggered (bool)), m_playListModel, SLOT(prepareForShufflePlaying(bool)));
- connect(m_playListModel, SIGNAL(repeatableListChanged(bool)), repeateAllAction, SLOT(setChecked(bool)));
+ connect(shuffleAction, SIGNAL(triggered (bool)), m_pl_manager, SLOT(setShuffle(bool)));
+ connect(m_pl_manager, SIGNAL(repeatableListChanged(bool)), repeateAllAction, SLOT(setChecked(bool)));
connect(m_player, SIGNAL (repeatableChanged(bool)), repeateTrackAction, SLOT(setChecked(bool)));
- connect(m_playListModel, SIGNAL(shuffleChanged(bool)), shuffleAction, SLOT(setChecked(bool)));
+ connect(m_pl_manager, SIGNAL(shuffleChanged(bool)), shuffleAction, SLOT(setChecked(bool)));
m_mainMenu->addSeparator();
m_mainMenu->addAction(tr("&Jump To File"),this, SLOT(jumpToFile()), tr("J"));
m_mainMenu->addSeparator();
@@ -477,12 +448,6 @@ QMenu* MainWindow::menu()
return m_mainMenu;
}
-void MainWindow::newPlaylist()
-{
- m_playListModel->clear();
- m_playlistName = tr("Default");
-}
-
void MainWindow::loadPlaylist()
{
QStringList l;
@@ -497,9 +462,9 @@ void MainWindow::loadPlaylist()
QString f_name = FileDialog::getOpenFileName(this,tr("Open Playlist"),m_lastDir,mask);
if (!f_name.isEmpty())
{
- m_playListModel->clear();
- m_playListModel->loadPlaylist(f_name);
- m_playlistName = QFileInfo(f_name).baseName();
+ m_pl_manager->selectedPlayList()->clear();
+ m_pl_manager->selectedPlayList()->loadPlaylist(f_name);
+ m_pl_manager->selectedPlayList()->setName(QFileInfo(f_name).baseName());
m_lastDir = QFileInfo(f_name).absoluteDir().path();
}
}
@@ -520,12 +485,11 @@ void MainWindow::savePlaylist()
QString mask = tr("Playlist Files")+" (" + l.join(" *.").prepend("*.") + ")";
QString f_name = FileDialog::getSaveFileName(this, tr("Save Playlist"),m_lastDir + "/" +
- m_playlistName + "." + l[0],mask);
+ m_pl_manager->selectedPlayList()->name() + "." + l[0],mask);
if (!f_name.isEmpty())
{
- m_playListModel->savePlaylist(f_name);
- m_playlistName = QFileInfo(f_name).baseName();
+ m_pl_manager->selectedPlayList()->savePlaylist(f_name);
m_lastDir = QFileInfo(f_name).absoluteDir().path();
}
}
@@ -538,12 +502,12 @@ void MainWindow::setFileList(const QStringList & l)
if (m_core->state() == Qmmp::Playing || m_core->state() == Qmmp::Paused)
stop();
qApp->processEvents(); //receive stop signal
- connect(m_playListModel, SIGNAL(firstAdded()), this, SLOT(play()));
- if (!m_playListModel->setFileList(l))
+ //connect(m_playListModel, SIGNAL(firstAdded()), this, SLOT(play()));
+ /*if (!m_playListModel->setFileList(l))
{
disconnect(m_playListModel, SIGNAL(firstAdded()), this, SLOT(play()));
addFile();
- }
+ }*/
}
void MainWindow::playPause()
@@ -572,7 +536,7 @@ bool MainWindow::processCommandArgs(const QStringList &slist,const QString& cwd)
else
full_path_list << cwd + "/" + slist.at(i);
}
- m_playListModel->addFileList(full_path_list); //TODO url support
+ m_pl_manager->currentPlayList()->addFileList(full_path_list); //TODO url support
}
else if (str.startsWith("-")) // is it a command?
{
@@ -618,7 +582,7 @@ void MainWindow::handleCloseRequest()
void MainWindow::addUrl()
{
- AddUrlDialog::popup(this,m_playListModel);
+ AddUrlDialog::popup(this, m_pl_manager->currentPlayList());
}
SoundCore * MainWindow::soundCore() const
diff --git a/src/ui/mainwindow.h b/src/ui/mainwindow.h
index bb6c49001..42d3d7d77 100644
--- a/src/ui/mainwindow.h
+++ b/src/ui/mainwindow.h
@@ -34,7 +34,7 @@
@author Ilya Kotov <forkotov02@hotmail.ru>
*/
class PlayList;
-class PlayListModel;
+class PlayListManager;
class ConfigDialog;
class EqWidget;
class MainVisual;
@@ -82,23 +82,19 @@ public slots:
void addFile();
void addUrl();
- void newPlaylist();
void loadPlaylist();
void savePlaylist();
void setFileList(const QStringList&);
protected:
- virtual void closeEvent ( QCloseEvent *);
- virtual void changeEvent ( QEvent * event );
- virtual void keyPressEvent ( QKeyEvent* );
+ virtual void closeEvent (QCloseEvent *);
+ virtual void changeEvent (QEvent *event);
+ virtual void keyPressEvent (QKeyEvent* );
private slots:
void showState(Qmmp::State state);
void showMetaData();
- void clear();
- void startSeek();
- void endSeek();
void showSettings();
void updateEQ();
void forward();
@@ -110,12 +106,11 @@ private:
void readSettings();
void writeSettings();
void createActions();
- bool seeking;
SoundCore *m_core;
QMenu *m_mainMenu;
MainDisplay *m_display;
PlayList *m_playlist;
- PlayListModel *m_playListModel;
+ PlayListManager *m_pl_manager;
ConfigDialog *m_confDialog;
int m_preamp;
EqWidget *m_equalizer;
@@ -127,7 +122,6 @@ private:
bool m_paused;
bool m_showToolTip;
Skin *m_skin;
- QString m_playlistName;
JumpToTrackDialog* m_jumpDialog;
bool m_hideOnClose, m_startHidden;
VisualMenu *m_visMenu;
diff --git a/src/ui/playlist.cpp b/src/ui/playlist.cpp
index 6471bf6ed..296d26d5e 100644
--- a/src/ui/playlist.cpp
+++ b/src/ui/playlist.cpp
@@ -41,18 +41,19 @@
#include <qmmpui/playlistitem.h>
#include <qmmpui/playlistmodel.h>
+#include <qmmpui/playlistmanager.h>
#include <qmmpui/fileloader.h>
#include <qmmpui/generalhandler.h>
#include <qmmp/soundcore.h>
-PlayList::PlayList (QWidget *parent)
+PlayList::PlayList (PlayListManager *manager, QWidget *parent)
: QWidget (parent)
{
+ m_pl_manager = manager;
m_update = FALSE;
m_resize = FALSE;
m_skin = Skin::instance();
m_ratio = m_skin->ratio();
- createMenus();
m_shaded = FALSE;
resize (275*m_ratio, 116*m_ratio);
@@ -76,6 +77,7 @@ PlayList::PlayList (QWidget *parent)
m_current_time = new SymbolDisplay (this,6);
m_keyboardManager = new KeyboardManager (this);
+ m_pl_actions = new QActionGroup (this);
connect (m_listWidget, SIGNAL (selectionChanged()), parent, SLOT (replay()));
@@ -95,16 +97,29 @@ PlayList::PlayList (QWidget *parent)
connect (m_pl_control, SIGNAL (pauseClicked()), SIGNAL (pause()));
connect (m_pl_control, SIGNAL (stopClicked()), SIGNAL (stop()));
connect (m_pl_control, SIGNAL (ejectClicked()), SIGNAL (eject()));
+
+ connect (m_pl_manager, SIGNAL (selectedPlayListChanged(PlayListModel *, PlayListModel *)),
+ m_listWidget, SLOT(setModel(PlayListModel*)));
+ m_listWidget->setModel(m_pl_manager->selectedPlayList());
+
m_titleBar = new PlayListTitleBar (this);
m_titleBar->move (0,0);
+ connect (m_pl_manager, SIGNAL (currentPlayListChanged(PlayListModel *, PlayListModel *)),
+ m_titleBar, SLOT(setModel(PlayListModel*)));
+ m_titleBar->setModel(m_pl_manager->currentPlayList());
+
+ createMenus();
+ createActions();
+
readSettings();
setCursor(m_skin->getCursor(Skin::CUR_PNORMAL));
updatePositions();
}
-
PlayList::~PlayList()
-{}
+{
+ delete m_keyboardManager;
+}
void PlayList::updatePositions()
{
@@ -168,29 +183,27 @@ void PlayList::createActions()
QAction *remSelAct = new QAction (tr ("&Remove Selected"),this);
remSelAct->setShortcut (tr ("Del"));
m_subMenu->addAction (remSelAct);
- connect (remSelAct, SIGNAL (triggered()),
- m_playListModel, SLOT (removeSelected ()));
- this->addAction (remSelAct);
+ connect (remSelAct, SIGNAL (triggered()), m_pl_manager, SLOT (removeSelected ()));
+ addAction (remSelAct);
QAction *remAllAct = new QAction (tr ("&Remove All"),this);
//remAllAct->setShortcut(tr("D")); FIXME: add correct shortcat
m_subMenu->addAction (remAllAct);
- connect (remAllAct, SIGNAL (triggered()), m_playListModel, SLOT (clear ()));
+ connect (remAllAct, SIGNAL (triggered()), m_pl_manager, SLOT (clear ()));
m_actions << remAllAct;
QAction *remUnselAct = new QAction (tr ("&Remove Unselected"),this);
m_subMenu->addAction (remUnselAct);
- connect (remUnselAct, SIGNAL (triggered()),
- m_playListModel, SLOT (removeUnselected ()));
+ connect (remUnselAct, SIGNAL (triggered()), m_pl_manager, SLOT (removeUnselected ()));
m_subMenu->addSeparator();
- m_subMenu->addAction (tr("Remove unavailable files"), m_playListModel, SLOT(clearInvalidItems()));
+ m_subMenu->addAction (tr("Remove unavailable files"), m_pl_manager, SLOT(clearInvalidItems()));
//listwidget menu
QAction *detailsAct = new QAction (tr ("&View Track Details"),this);
detailsAct->setShortcut (tr ("Alt+I"));
m_listWidget->menu()->addAction (detailsAct);
- connect (detailsAct, SIGNAL (triggered()), m_playListModel, SLOT (showDetails ()));
+ connect (detailsAct, SIGNAL (triggered()), m_pl_manager, SLOT (showDetails ()));
// sort menu
m_sortMenu->addAction (detailsAct);
@@ -227,8 +240,7 @@ void PlayList::createActions()
connect (trackAct, SIGNAL (triggered (bool)), signalMapper, SLOT (map()));
signalMapper->setMapping (trackAct, PlayListModel::TRACK);
- connect (signalMapper, SIGNAL (mapped (int)),
- m_playListModel, SLOT (sort (int)));
+ connect (signalMapper, SIGNAL (mapped (int)), m_pl_manager, SLOT (sort (int)));
m_sortMenu->addMenu (sort_mode_menu);
@@ -262,14 +274,13 @@ void PlayList::createActions()
connect (trackAct, SIGNAL (triggered (bool)), signalMapper, SLOT (map()));
signalMapper->setMapping (trackAct, PlayListModel::TRACK);
- connect (signalMapper, SIGNAL (mapped (int)),
- m_playListModel, SLOT (sortSelection (int)));
+ connect (signalMapper, SIGNAL (mapped (int)), m_pl_manager, SLOT (sortSelection (int)));
m_sortMenu->addMenu (sort_mode_menu);
m_sortMenu->addSeparator();
- m_sortMenu->addAction (tr ("Randomize List"),m_playListModel,SLOT (randomizeList()));
- m_sortMenu->addAction (tr ("Reverse List"),m_playListModel,SLOT (reverseList()));
+ m_sortMenu->addAction (tr ("Randomize List"),m_pl_manager,SLOT (randomizeList()));
+ m_sortMenu->addAction (tr ("Reverse List"),m_pl_manager,SLOT (reverseList()));
m_listWidget->menu()->addSeparator();
m_listWidget->menu()->addActions (m_subMenu->actions().mid(0,3)); //use 3 first actions
@@ -277,38 +288,39 @@ void PlayList::createActions()
tr("Actions"), this));
m_listWidget->menu()->addSeparator();
- m_listWidget->menu()->addAction(tr("&Queue"),m_playListModel, SLOT(addToQueue()), tr("Q"));
+ m_listWidget->menu()->addAction(tr("&Queue"),m_pl_manager, SLOT(addToQueue()), tr("Q"));
m_actions << m_listWidget->menu()->actions();
//select menu
QAction *invSelAct = new QAction (tr ("Invert Selection"),this);
m_selectMenu->addAction (invSelAct);
- connect (invSelAct, SIGNAL (triggered()),
- m_playListModel, SLOT (invertSelection ()));
+ connect (invSelAct, SIGNAL (triggered()), m_pl_manager, SLOT (invertSelection ()));
m_selectMenu->addSeparator();
QAction *selNoneAct = new QAction (tr ("&Select None"),this);
- //selNoneAct->setShortcut(tr("Ctrl+Shift+A"));
+ selNoneAct->setShortcut(tr("Shift+A"));
m_selectMenu->addAction (selNoneAct);
- connect (selNoneAct, SIGNAL (triggered()),
- m_playListModel, SLOT (clearSelection ()));
+ connect (selNoneAct, SIGNAL (triggered()), m_pl_manager, SLOT (clearSelection ()));
this->addAction (selNoneAct);
QAction *selAllAct = new QAction (tr ("&Select All"),this);
selAllAct->setShortcut (tr ("Ctrl+A"));
m_actions << selAllAct;
m_selectMenu->addAction (selAllAct);
- connect (selAllAct, SIGNAL (triggered()),
- m_playListModel, SLOT (selectAll ()));
- //this->addAction (selAllAct);
+ connect (selAllAct, SIGNAL (triggered()), m_pl_manager, SLOT (selectAll ()));
-// Playlist Menu
+ // Playlist Menu
QAction *newListAct = new QAction (tr ("&New List"),this);
newListAct->setShortcut (tr ("Shift+N"));
m_actions << newListAct;
m_playlistMenu->addAction (newListAct);
- connect (newListAct, SIGNAL (triggered()), this, SIGNAL (newPlaylist()));
+ connect (newListAct, SIGNAL (triggered()), m_pl_manager, SLOT (createPlayList()));
+ QAction *deleteListAct = new QAction (tr ("&Delete List"),this);
+ deleteListAct->setShortcut (tr ("Shift+D"));
+ m_actions << deleteListAct;
+ m_playlistMenu->addAction (deleteListAct);
+ connect (deleteListAct, SIGNAL (triggered()), SLOT (deletePlaylist()));
m_playlistMenu->addSeparator();
QAction *loadListAct = new QAction (tr ("&Load List"),this);
@@ -322,8 +334,19 @@ void PlayList::createActions()
m_actions << saveListAct;
m_playlistMenu->addAction (saveListAct);
connect (saveListAct, SIGNAL (triggered()), this, SIGNAL (savePlaylist()));
- //this->addActions (m_playlistMenu->actions());
-
+ //plalists
+ m_playlistMenu->addSeparator();
+ foreach(QString name, m_pl_manager->playListNames())
+ {
+ QAction *pl = new QAction(name, this);
+ pl->setCheckable(TRUE);
+ m_playlistMenu->addAction (pl);
+ m_pl_actions->addAction(pl);
+ }
+ m_pl_actions->actions().at(m_pl_manager->indexOf(m_pl_manager->currentPlayList()))->setChecked(TRUE);
+ connect(m_pl_actions, SIGNAL(triggered(QAction*)), SLOT(select(QAction*)));
+ connect(m_pl_manager, SIGNAL(playListAdded(int)), SLOT(addModel(int)));
+ connect(m_pl_manager, SIGNAL(playListRemoved(int)), SLOT(removeModel(int)));
Dock::instance()->addActions (m_actions);
}
@@ -375,6 +398,7 @@ void PlayList::mousePressEvent (QMouseEvent *e)
else
m_resize = FALSE;
}
+
void PlayList::mouseMoveEvent (QMouseEvent *e)
{
if (m_resize)
@@ -396,6 +420,7 @@ void PlayList::mouseMoveEvent (QMouseEvent *e)
#endif
}
}
+
void PlayList::mouseReleaseEvent (QMouseEvent *)
{
setCursor (m_skin->getCursor (Skin::CUR_PNORMAL));
@@ -404,14 +429,6 @@ void PlayList::mouseReleaseEvent (QMouseEvent *)
m_resize = FALSE;
Dock::instance()->updateDock();
}
-void PlayList::setModel (PlayListModel *model)
-{
- m_playListModel = model;
- m_listWidget->setModel (model);
- m_keyboardManager->setModel (model);
- m_titleBar->setModel (model);
- createActions();
-}
void PlayList::changeEvent (QEvent * event)
{
@@ -442,7 +459,6 @@ void PlayList::readSettings()
settings.endGroup();
m_update = TRUE;
}
-
}
void PlayList::writeSettings()
@@ -496,14 +512,12 @@ void PlayList::setTime(qint64 time)
m_current_time->display (formatTime (time/1000));
m_current_time->update();
- if (m_playListModel && SoundCore::instance())
+ if (SoundCore::instance())
{
- m_playListModel->totalLength();
- QString str_length = formatTime (m_playListModel->totalLength()) +
+ QString str_length = formatTime (m_pl_manager->currentPlayList()->totalLength()) +
"/" + formatTime (SoundCore::instance()->totalTime()/1000);
m_length_totalLength->display (str_length);
m_length_totalLength->update();
-
}
}
@@ -515,7 +529,7 @@ void PlayList::updateList()
PlayListItem *PlayList::currentItem()
{
- return m_playListModel ? m_playListModel->currentItem() : 0;
+ return m_pl_manager->currentPlayList()->currentItem();
}
void PlayList::showPlaylistMenu()
@@ -537,6 +551,45 @@ void PlayList::updateSkin()
setMinimalMode(m_shaded);
}
+void PlayList::select(QAction *a)
+{
+ int i = m_pl_actions->actions().indexOf(a);
+ m_pl_manager->selectPlayList(i);
+}
+
+void PlayList::addModel(int i)
+{
+ QList <QAction *> actions = m_pl_actions->actions();
+ foreach(QAction *a, actions) //clear action group
+ {
+ m_pl_actions->removeAction(a);
+ m_playlistMenu->removeAction (a);
+ }
+ QAction *new_action = new QAction(m_pl_manager->playListNames().at(i), this);
+ new_action->setCheckable(TRUE);
+ actions.insert(i, new_action);
+ foreach(QAction *a, actions)
+ {
+ m_pl_actions->addAction(a);
+ m_playlistMenu->addAction (a);
+ }
+ m_pl_actions->actions().at(m_pl_manager->indexOf(m_pl_manager->currentPlayList()))->setChecked(TRUE);
+}
+
+void PlayList::removeModel(int i)
+{
+ QAction *a = m_pl_actions->actions().at(i);
+ m_pl_actions->removeAction(a);
+ m_playlistMenu->removeAction (a);
+ a->deleteLater();
+ m_pl_actions->actions().at(m_pl_manager->indexOf(m_pl_manager->currentPlayList()))->setChecked(TRUE);
+}
+
+void PlayList::deletePlaylist()
+{
+ m_pl_manager->removePlayList(m_pl_manager->selectedPlayList());
+}
+
void PlayList::setMinimalMode(bool b)
{
if(!m_shaded)
diff --git a/src/ui/playlist.h b/src/ui/playlist.h
index 2d17a59d4..4b58b0048 100644
--- a/src/ui/playlist.h
+++ b/src/ui/playlist.h
@@ -23,6 +23,7 @@
#include <QWidget>
class QMenu;
+class QActionGroup;
class Skin;
class ListWidget;
class PlayListItem;
@@ -36,6 +37,7 @@ class OutputState;
class PixmapWidget;
class PlaylistControl;
class KeyboardManager;
+class PlayListManager;
/**
@@ -45,11 +47,10 @@ class PlayList : public QWidget
{
Q_OBJECT
public:
- PlayList (QWidget *parent = 0);
+ PlayList (PlayListManager *manager, QWidget *parent = 0);
~PlayList();
void load (PlayListItem *);
- void setModel (PlayListModel *);
void readSettings();
PlayListItem *currentItem();
ListWidget* listWidget() const
@@ -67,7 +68,6 @@ class PlayList : public QWidget
void eject();
void loadPlaylist();
void savePlaylist();
- void newPlaylist();
void closed();
public slots:
@@ -81,7 +81,10 @@ class PlayList : public QWidget
void showSortMenu();
void showPlaylistMenu();
void updateSkin();
-
+ void select(QAction *a); //selects playlist with action
+ void addModel(int i);
+ void removeModel(int i);
+ void deletePlaylist();
private:
void updatePositions();
@@ -108,7 +111,6 @@ class PlayList : public QWidget
Skin *m_skin;
ListWidget *m_listWidget;
- PlayListModel *m_playListModel;
PlayListTitleBar *m_titleBar;
PlayListSlider *m_plslider;
QList <QAction *> m_actions;
@@ -118,7 +120,9 @@ class PlayList : public QWidget
int m_ratio;
int m_height;
bool m_shaded;
+ PlayListManager *m_pl_manager;
KeyboardManager* m_keyboardManager;
+ QActionGroup *m_pl_actions;
protected:
virtual void paintEvent (QPaintEvent *);
diff --git a/src/ui/playlisttitlebar.cpp b/src/ui/playlisttitlebar.cpp
index 6104ff0e6..8646f1192 100644
--- a/src/ui/playlisttitlebar.cpp
+++ b/src/ui/playlisttitlebar.cpp
@@ -194,10 +194,13 @@ void PlayListTitleBar::setActive(bool a)
}
-void PlayListTitleBar::setModel(PlayListModel *model)
+void PlayListTitleBar::setModel(PlayListModel *selected, PlayListModel *previous)
{
- m_model = model;
+ if(previous)
+ disconnect(previous, 0, this, 0); //disconnect previous model
+ m_model = selected;
connect (m_model, SIGNAL(listChanged()), SLOT(showCurrent()));
+ showCurrent();
}
void PlayListTitleBar::readSettings()
diff --git a/src/ui/playlisttitlebar.h b/src/ui/playlisttitlebar.h
index cde01c3c6..745aab446 100644
--- a/src/ui/playlisttitlebar.h
+++ b/src/ui/playlisttitlebar.h
@@ -37,15 +37,13 @@ class PlayListTitleBar : public PixmapWidget
Q_OBJECT
public:
PlayListTitleBar(QWidget *parent = 0);
-
~PlayListTitleBar();
-
void setActive(bool);
- void setModel(PlayListModel *model);
void readSettings();
public slots:
void showCurrent();
+ void setModel(PlayListModel *selected, PlayListModel *previous = 0);
private slots:
void updateSkin();
diff --git a/src/ui/translations/qmmp_cs.ts b/src/ui/translations/qmmp_cs.ts
index dd4aa1171..4c73fe409 100644
--- a/src/ui/translations/qmmp_cs.ts
+++ b/src/ui/translations/qmmp_cs.ts
@@ -615,14 +615,14 @@
<name>JumpToTrackDialog</name>
<message>
<location filename="../jumptotrackdialog.cpp" line="81"/>
- <location filename="../jumptotrackdialog.cpp" line="137"/>
+ <location filename="../jumptotrackdialog.cpp" line="132"/>
<source>Unqueue</source>
<translation>Vyřadit</translation>
</message>
<message>
<location filename="../forms/jumptotrackdialog.ui" line="79"/>
<location filename="../jumptotrackdialog.cpp" line="83"/>
- <location filename="../jumptotrackdialog.cpp" line="139"/>
+ <location filename="../jumptotrackdialog.cpp" line="134"/>
<source>Queue</source>
<translation>Zařadit</translation>
</message>
@@ -851,174 +851,168 @@
<context>
<name>MainWindow</name>
<message>
- <location filename="../mainwindow.cpp" line="64"/>
- <location filename="../mainwindow.cpp" line="483"/>
- <source>Default</source>
- <translation>Seznam</translation>
- </message>
- <message>
- <location filename="../mainwindow.cpp" line="274"/>
+ <location filename="../mainwindow.cpp" line="266"/>
<source>Choose a directory</source>
<translation>Výběr adresáře</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="285"/>
+ <location filename="../mainwindow.cpp" line="277"/>
<source>Select one or more files to open</source>
<translation>Vyberte jeden či více souborů k otevření</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="420"/>
+ <location filename="../mainwindow.cpp" line="391"/>
<source>&amp;Play</source>
<translation>Pře&amp;hrát</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="420"/>
+ <location filename="../mainwindow.cpp" line="391"/>
<source>X</source>
<translation>X</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="421"/>
+ <location filename="../mainwindow.cpp" line="392"/>
<source>&amp;Pause</source>
<translation>Pau&amp;za</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="421"/>
+ <location filename="../mainwindow.cpp" line="392"/>
<source>C</source>
<translation>C</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="422"/>
+ <location filename="../mainwindow.cpp" line="393"/>
<source>&amp;Stop</source>
<translation>&amp;Stop</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="422"/>
+ <location filename="../mainwindow.cpp" line="393"/>
<source>V</source>
<translation>V</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="423"/>
+ <location filename="../mainwindow.cpp" line="394"/>
<source>&amp;Previous</source>
<translation>&amp;Předchozí</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="423"/>
+ <location filename="../mainwindow.cpp" line="394"/>
<source>Z</source>
<translation>Z</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="424"/>
+ <location filename="../mainwindow.cpp" line="395"/>
<source>&amp;Next</source>
<translation>&amp;Další</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="424"/>
+ <location filename="../mainwindow.cpp" line="395"/>
<source>B</source>
<translation>B</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="443"/>
+ <location filename="../mainwindow.cpp" line="414"/>
<source>&amp;Jump To File</source>
<translation>Přeskočit na soubo&amp;r</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="443"/>
+ <location filename="../mainwindow.cpp" line="414"/>
<source>J</source>
<translation>J</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="449"/>
+ <location filename="../mainwindow.cpp" line="420"/>
<source>&amp;Settings</source>
<translation>&amp;Nastavení</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="449"/>
+ <location filename="../mainwindow.cpp" line="420"/>
<source>Ctrl+P</source>
<translation>Ctrl+P</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="451"/>
+ <location filename="../mainwindow.cpp" line="422"/>
<source>&amp;About</source>
<translation>O &amp;aplikaci</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="455"/>
+ <location filename="../mainwindow.cpp" line="426"/>
<source>&amp;Exit</source>
<translation>U&amp;končit</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="455"/>
+ <location filename="../mainwindow.cpp" line="426"/>
<source>Ctrl+Q</source>
<translation>Ctrl+Q</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="495"/>
- <location filename="../mainwindow.cpp" line="521"/>
+ <location filename="../mainwindow.cpp" line="460"/>
+ <location filename="../mainwindow.cpp" line="486"/>
<source>Playlist Files</source>
<translation>Seznamy skladeb</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="497"/>
+ <location filename="../mainwindow.cpp" line="462"/>
<source>Open Playlist</source>
<translation>Načíst seznam skladeb</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="522"/>
+ <location filename="../mainwindow.cpp" line="487"/>
<source>Save Playlist</source>
<translation>Uložit seznam skladeb</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="425"/>
+ <location filename="../mainwindow.cpp" line="396"/>
<source>Space</source>
<translation>Mezerník</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="452"/>
+ <location filename="../mainwindow.cpp" line="423"/>
<source>&amp;About Qt</source>
<translation>O knihovně &amp;Qt</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="425"/>
+ <location filename="../mainwindow.cpp" line="396"/>
<source>&amp;Play/Pause</source>
<translation>&amp;Přehrát/Pauza</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="280"/>
+ <location filename="../mainwindow.cpp" line="272"/>
<source>All Supported Bitstreams</source>
<translation>Všechny podporované formáty</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="428"/>
+ <location filename="../mainwindow.cpp" line="399"/>
<source>&amp;Repeat Track</source>
<translation>&amp;Opakovat stopu</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="429"/>
+ <location filename="../mainwindow.cpp" line="400"/>
<source>&amp;Shuffle</source>
<translation>Za&amp;míchat</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="433"/>
+ <location filename="../mainwindow.cpp" line="404"/>
<source>R</source>
<translation>O</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="434"/>
+ <location filename="../mainwindow.cpp" line="405"/>
<source>Ctrl+R</source>
<translation>Ctrl+R</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="435"/>
+ <location filename="../mainwindow.cpp" line="406"/>
<source>S</source>
<translation>M</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="427"/>
+ <location filename="../mainwindow.cpp" line="398"/>
<source>&amp;Repeat Playlist</source>
<translation>&amp;Opakovat seznam skladeb</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="447"/>
+ <location filename="../mainwindow.cpp" line="418"/>
<source>Tools</source>
<translation>Nástroje</translation>
</message>
@@ -1026,194 +1020,209 @@
<context>
<name>PlayList</name>
<message>
- <location filename="../playlist.cpp" line="149"/>
+ <location filename="../playlist.cpp" line="164"/>
<source>&amp;Add File</source>
<translation>Přidat &amp;soubor</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="150"/>
+ <location filename="../playlist.cpp" line="165"/>
<source>F</source>
<translation>F</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="155"/>
+ <location filename="../playlist.cpp" line="170"/>
<source>&amp;Add Directory</source>
<translation>Přidat &amp;adresář</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="156"/>
+ <location filename="../playlist.cpp" line="171"/>
<source>D</source>
<translation>D</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="168"/>
+ <location filename="../playlist.cpp" line="183"/>
<source>&amp;Remove Selected</source>
<translation>&amp;Odstranit vybrané</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="169"/>
+ <location filename="../playlist.cpp" line="184"/>
<source>Del</source>
<translation>Del</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="175"/>
+ <location filename="../playlist.cpp" line="189"/>
<source>&amp;Remove All</source>
<translation>Odstranit &amp;vše</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="181"/>
+ <location filename="../playlist.cpp" line="195"/>
<source>&amp;Remove Unselected</source>
<translation>Odstranit &amp;nevybrané</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="187"/>
+ <location filename="../playlist.cpp" line="200"/>
<source>Remove unavailable files</source>
<translation>Odstranit nedostupné soubory</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="190"/>
+ <location filename="../playlist.cpp" line="203"/>
<source>&amp;View Track Details</source>
<translation>Zobrazit &amp;informace o skladbě</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="191"/>
+ <location filename="../playlist.cpp" line="204"/>
<source>Alt+I</source>
<translation>Alt+I</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="199"/>
+ <location filename="../playlist.cpp" line="212"/>
<source>Sort List</source>
<translation>Seřadit seznam</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="202"/>
- <location filename="../playlist.cpp" line="237"/>
+ <location filename="../playlist.cpp" line="215"/>
+ <location filename="../playlist.cpp" line="249"/>
<source>By Title</source>
<translation>Podle názvu skladby</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="206"/>
- <location filename="../playlist.cpp" line="241"/>
+ <location filename="../playlist.cpp" line="219"/>
+ <location filename="../playlist.cpp" line="253"/>
<source>By Album</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../playlist.cpp" line="210"/>
- <location filename="../playlist.cpp" line="245"/>
+ <location filename="../playlist.cpp" line="223"/>
+ <location filename="../playlist.cpp" line="257"/>
<source>By Artist</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../playlist.cpp" line="214"/>
- <location filename="../playlist.cpp" line="249"/>
+ <location filename="../playlist.cpp" line="227"/>
+ <location filename="../playlist.cpp" line="261"/>
<source>By Filename</source>
<translation>Podle názvu souboru</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="218"/>
- <location filename="../playlist.cpp" line="253"/>
+ <location filename="../playlist.cpp" line="231"/>
+ <location filename="../playlist.cpp" line="265"/>
<source>By Path + Filename</source>
<translation>Podle cesty a názvu souboru</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="222"/>
- <location filename="../playlist.cpp" line="257"/>
+ <location filename="../playlist.cpp" line="235"/>
+ <location filename="../playlist.cpp" line="269"/>
<source>By Date</source>
<translation>Podle data</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="235"/>
+ <location filename="../playlist.cpp" line="247"/>
<source>Sort Selection</source>
<translation>Seřadit výběr</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="271"/>
+ <location filename="../playlist.cpp" line="282"/>
<source>Randomize List</source>
<translation>Zamíchat seznam</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="272"/>
+ <location filename="../playlist.cpp" line="283"/>
<source>Reverse List</source>
<translation>Obrátit pořadí seznamu</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="284"/>
+ <location filename="../playlist.cpp" line="295"/>
<source>Invert Selection</source>
<translation>Invertovat výběr</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="291"/>
+ <location filename="../playlist.cpp" line="301"/>
<source>&amp;Select None</source>
<translation>&amp;Zrušit výběr</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="298"/>
+ <location filename="../playlist.cpp" line="302"/>
+ <source>Shift+A</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="307"/>
<source>&amp;Select All</source>
<translation>&amp;Vybrat vše</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="299"/>
+ <location filename="../playlist.cpp" line="308"/>
<source>Ctrl+A</source>
<translation>Ctrl+A</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="307"/>
+ <location filename="../playlist.cpp" line="314"/>
<source>&amp;New List</source>
<translation>&amp;Nový seznam</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="308"/>
+ <location filename="../playlist.cpp" line="315"/>
<source>Shift+N</source>
<translation>Shift+N</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="314"/>
+ <location filename="../playlist.cpp" line="319"/>
+ <source>&amp;Delete List</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="320"/>
+ <source>Shift+D</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="326"/>
<source>&amp;Load List</source>
<translation>Načíst &amp;seznam</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="315"/>
+ <location filename="../playlist.cpp" line="327"/>
<source>O</source>
<translation>O</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="320"/>
+ <location filename="../playlist.cpp" line="332"/>
<source>&amp;Save List</source>
<translation>&amp;Uložit seznam</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="321"/>
+ <location filename="../playlist.cpp" line="333"/>
<source>Shift+S</source>
<translation>Shift+S</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="161"/>
+ <location filename="../playlist.cpp" line="176"/>
<source>&amp;Add Url</source>
<translation>Přidat &amp;URL</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="162"/>
+ <location filename="../playlist.cpp" line="177"/>
<source>U</source>
<translation>U</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="226"/>
- <location filename="../playlist.cpp" line="261"/>
+ <location filename="../playlist.cpp" line="239"/>
+ <location filename="../playlist.cpp" line="273"/>
<source>By Track Number</source>
<translation>Podle čísla skladby</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="280"/>
+ <location filename="../playlist.cpp" line="291"/>
<source>&amp;Queue</source>
<translation>&amp;Fronta</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="280"/>
+ <location filename="../playlist.cpp" line="291"/>
<source>Q</source>
<translation>Q</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="277"/>
+ <location filename="../playlist.cpp" line="288"/>
<source>Actions</source>
<translation>Činnosti</translation>
</message>
diff --git a/src/ui/translations/qmmp_de.ts b/src/ui/translations/qmmp_de.ts
index 625da29b6..5824c12c6 100644
--- a/src/ui/translations/qmmp_de.ts
+++ b/src/ui/translations/qmmp_de.ts
@@ -615,14 +615,14 @@
<name>JumpToTrackDialog</name>
<message>
<location filename="../jumptotrackdialog.cpp" line="81"/>
- <location filename="../jumptotrackdialog.cpp" line="137"/>
+ <location filename="../jumptotrackdialog.cpp" line="132"/>
<source>Unqueue</source>
<translation>Aus Warteschlange entfernen</translation>
</message>
<message>
<location filename="../forms/jumptotrackdialog.ui" line="79"/>
<location filename="../jumptotrackdialog.cpp" line="83"/>
- <location filename="../jumptotrackdialog.cpp" line="139"/>
+ <location filename="../jumptotrackdialog.cpp" line="134"/>
<source>Queue</source>
<translation>In Warteschlange</translation>
</message>
@@ -851,174 +851,168 @@
<context>
<name>MainWindow</name>
<message>
- <location filename="../mainwindow.cpp" line="64"/>
- <location filename="../mainwindow.cpp" line="483"/>
- <source>Default</source>
- <translation>Standard</translation>
- </message>
- <message>
- <location filename="../mainwindow.cpp" line="274"/>
+ <location filename="../mainwindow.cpp" line="266"/>
<source>Choose a directory</source>
<translation>Verzeichnis wählen</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="285"/>
+ <location filename="../mainwindow.cpp" line="277"/>
<source>Select one or more files to open</source>
<translation>Dateien hinzufügen</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="420"/>
+ <location filename="../mainwindow.cpp" line="391"/>
<source>&amp;Play</source>
<translation>&amp;Wiedergabe</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="420"/>
+ <location filename="../mainwindow.cpp" line="391"/>
<source>X</source>
<translation>X</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="421"/>
+ <location filename="../mainwindow.cpp" line="392"/>
<source>&amp;Pause</source>
<translation>&amp;Pause</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="421"/>
+ <location filename="../mainwindow.cpp" line="392"/>
<source>C</source>
<translation>C</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="422"/>
+ <location filename="../mainwindow.cpp" line="393"/>
<source>&amp;Stop</source>
<translation>&amp;Stopp</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="422"/>
+ <location filename="../mainwindow.cpp" line="393"/>
<source>V</source>
<translation>V</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="423"/>
+ <location filename="../mainwindow.cpp" line="394"/>
<source>&amp;Previous</source>
<translation>&amp;Vorheriger Titel</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="423"/>
+ <location filename="../mainwindow.cpp" line="394"/>
<source>Z</source>
<translation>Z</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="424"/>
+ <location filename="../mainwindow.cpp" line="395"/>
<source>&amp;Next</source>
<translation>&amp;Nächster Titel</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="424"/>
+ <location filename="../mainwindow.cpp" line="395"/>
<source>B</source>
<translation>B</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="443"/>
+ <location filename="../mainwindow.cpp" line="414"/>
<source>&amp;Jump To File</source>
<translation>Springe zu &amp;Titel</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="443"/>
+ <location filename="../mainwindow.cpp" line="414"/>
<source>J</source>
<translation>J</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="449"/>
+ <location filename="../mainwindow.cpp" line="420"/>
<source>&amp;Settings</source>
<translation>&amp;Einstellungen</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="449"/>
+ <location filename="../mainwindow.cpp" line="420"/>
<source>Ctrl+P</source>
<translation>Strg+P</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="451"/>
+ <location filename="../mainwindow.cpp" line="422"/>
<source>&amp;About</source>
<translation>Ü&amp;ber</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="455"/>
+ <location filename="../mainwindow.cpp" line="426"/>
<source>&amp;Exit</source>
<translation>Be&amp;enden</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="455"/>
+ <location filename="../mainwindow.cpp" line="426"/>
<source>Ctrl+Q</source>
<translation>Strg+Q</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="495"/>
- <location filename="../mainwindow.cpp" line="521"/>
+ <location filename="../mainwindow.cpp" line="460"/>
+ <location filename="../mainwindow.cpp" line="486"/>
<source>Playlist Files</source>
<translation>Wiedergabelisten</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="497"/>
+ <location filename="../mainwindow.cpp" line="462"/>
<source>Open Playlist</source>
<translation>Wiedergabeliste öffnen</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="522"/>
+ <location filename="../mainwindow.cpp" line="487"/>
<source>Save Playlist</source>
<translation>Wiedergabeliste speichern</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="425"/>
+ <location filename="../mainwindow.cpp" line="396"/>
<source>Space</source>
<translation>Leertaste</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="452"/>
+ <location filename="../mainwindow.cpp" line="423"/>
<source>&amp;About Qt</source>
<translation>Übe&amp;r Qt</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="425"/>
+ <location filename="../mainwindow.cpp" line="396"/>
<source>&amp;Play/Pause</source>
<translation>Wieder&amp;gabe/Pause</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="280"/>
+ <location filename="../mainwindow.cpp" line="272"/>
<source>All Supported Bitstreams</source>
<translation>Alle unterstützten Formate</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="428"/>
+ <location filename="../mainwindow.cpp" line="399"/>
<source>&amp;Repeat Track</source>
<translation>Tite&amp;l wiederholen</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="429"/>
+ <location filename="../mainwindow.cpp" line="400"/>
<source>&amp;Shuffle</source>
<translation>&amp;Zufallswiedergabe</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="433"/>
+ <location filename="../mainwindow.cpp" line="404"/>
<source>R</source>
<translation>R</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="434"/>
+ <location filename="../mainwindow.cpp" line="405"/>
<source>Ctrl+R</source>
<translation>Strg+R</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="435"/>
+ <location filename="../mainwindow.cpp" line="406"/>
<source>S</source>
<translation>S</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="427"/>
+ <location filename="../mainwindow.cpp" line="398"/>
<source>&amp;Repeat Playlist</source>
<translation>W&amp;iedergabeliste wiederholen</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="447"/>
+ <location filename="../mainwindow.cpp" line="418"/>
<source>Tools</source>
<translation>Werkzeuge</translation>
</message>
@@ -1026,194 +1020,209 @@
<context>
<name>PlayList</name>
<message>
- <location filename="../playlist.cpp" line="149"/>
+ <location filename="../playlist.cpp" line="164"/>
<source>&amp;Add File</source>
<translation>&amp;Datei hinzufügen</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="150"/>
+ <location filename="../playlist.cpp" line="165"/>
<source>F</source>
<translation>F</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="155"/>
+ <location filename="../playlist.cpp" line="170"/>
<source>&amp;Add Directory</source>
<translation>&amp;Verzeichnis hinzufügen</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="156"/>
+ <location filename="../playlist.cpp" line="171"/>
<source>D</source>
<translation>D</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="168"/>
+ <location filename="../playlist.cpp" line="183"/>
<source>&amp;Remove Selected</source>
<translation>&amp;Ausgewählte entfernen</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="169"/>
+ <location filename="../playlist.cpp" line="184"/>
<source>Del</source>
<translation>Entf</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="175"/>
+ <location filename="../playlist.cpp" line="189"/>
<source>&amp;Remove All</source>
<translation>Alle &amp;entfernen</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="181"/>
+ <location filename="../playlist.cpp" line="195"/>
<source>&amp;Remove Unselected</source>
<translation>&amp;Nicht ausgewählte entfernen</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="187"/>
+ <location filename="../playlist.cpp" line="200"/>
<source>Remove unavailable files</source>
<translation>Nichtverfügbare Dateien entfernen</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="190"/>
+ <location filename="../playlist.cpp" line="203"/>
<source>&amp;View Track Details</source>
<translation>&amp;Titeldetails anzeigen</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="191"/>
+ <location filename="../playlist.cpp" line="204"/>
<source>Alt+I</source>
<translation>Alt+I</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="199"/>
+ <location filename="../playlist.cpp" line="212"/>
<source>Sort List</source>
<translation>Wiedergabeliste sortieren</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="202"/>
- <location filename="../playlist.cpp" line="237"/>
+ <location filename="../playlist.cpp" line="215"/>
+ <location filename="../playlist.cpp" line="249"/>
<source>By Title</source>
<translation>Nach Titel</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="206"/>
- <location filename="../playlist.cpp" line="241"/>
+ <location filename="../playlist.cpp" line="219"/>
+ <location filename="../playlist.cpp" line="253"/>
<source>By Album</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../playlist.cpp" line="210"/>
- <location filename="../playlist.cpp" line="245"/>
+ <location filename="../playlist.cpp" line="223"/>
+ <location filename="../playlist.cpp" line="257"/>
<source>By Artist</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../playlist.cpp" line="214"/>
- <location filename="../playlist.cpp" line="249"/>
+ <location filename="../playlist.cpp" line="227"/>
+ <location filename="../playlist.cpp" line="261"/>
<source>By Filename</source>
<translation>Nach Dateinamen</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="218"/>
- <location filename="../playlist.cpp" line="253"/>
+ <location filename="../playlist.cpp" line="231"/>
+ <location filename="../playlist.cpp" line="265"/>
<source>By Path + Filename</source>
<translation>Nach Pfad + Dateinamen</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="222"/>
- <location filename="../playlist.cpp" line="257"/>
+ <location filename="../playlist.cpp" line="235"/>
+ <location filename="../playlist.cpp" line="269"/>
<source>By Date</source>
<translation>Nach Datum</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="235"/>
+ <location filename="../playlist.cpp" line="247"/>
<source>Sort Selection</source>
<translation>Auswahl sortieren</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="271"/>
+ <location filename="../playlist.cpp" line="282"/>
<source>Randomize List</source>
<translation>Wiedergabeliste mischen</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="272"/>
+ <location filename="../playlist.cpp" line="283"/>
<source>Reverse List</source>
<translation>Wiedergabeliste umkehren</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="284"/>
+ <location filename="../playlist.cpp" line="295"/>
<source>Invert Selection</source>
<translation>Auswahl umkehren</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="291"/>
+ <location filename="../playlist.cpp" line="301"/>
<source>&amp;Select None</source>
<translation>&amp;Auswahl aufheben</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="298"/>
+ <location filename="../playlist.cpp" line="302"/>
+ <source>Shift+A</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="307"/>
<source>&amp;Select All</source>
<translation>Alle aus&amp;wählen</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="299"/>
+ <location filename="../playlist.cpp" line="308"/>
<source>Ctrl+A</source>
<translation>Strg+A</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="307"/>
+ <location filename="../playlist.cpp" line="314"/>
<source>&amp;New List</source>
<translation>&amp;Neue Wiedergabeliste</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="308"/>
+ <location filename="../playlist.cpp" line="315"/>
<source>Shift+N</source>
<translation>Umschalt+N</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="314"/>
+ <location filename="../playlist.cpp" line="319"/>
+ <source>&amp;Delete List</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="320"/>
+ <source>Shift+D</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="326"/>
<source>&amp;Load List</source>
<translation>Wiedergabeliste &amp;laden</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="315"/>
+ <location filename="../playlist.cpp" line="327"/>
<source>O</source>
<translation>O</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="320"/>
+ <location filename="../playlist.cpp" line="332"/>
<source>&amp;Save List</source>
<translation>Wiedergabeliste &amp;speichern</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="321"/>
+ <location filename="../playlist.cpp" line="333"/>
<source>Shift+S</source>
<translation>Umschalt+S</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="161"/>
+ <location filename="../playlist.cpp" line="176"/>
<source>&amp;Add Url</source>
<translation>&amp;URL hinzufügen</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="162"/>
+ <location filename="../playlist.cpp" line="177"/>
<source>U</source>
<translation>U</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="226"/>
- <location filename="../playlist.cpp" line="261"/>
+ <location filename="../playlist.cpp" line="239"/>
+ <location filename="../playlist.cpp" line="273"/>
<source>By Track Number</source>
<translation>Nach Titelnummer</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="280"/>
+ <location filename="../playlist.cpp" line="291"/>
<source>&amp;Queue</source>
<translation>&amp;Warteschlange</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="280"/>
+ <location filename="../playlist.cpp" line="291"/>
<source>Q</source>
<translation>Q</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="277"/>
+ <location filename="../playlist.cpp" line="288"/>
<source>Actions</source>
<translation>Aktionen</translation>
</message>
diff --git a/src/ui/translations/qmmp_it.ts b/src/ui/translations/qmmp_it.ts
index de478172c..2448f7930 100644
--- a/src/ui/translations/qmmp_it.ts
+++ b/src/ui/translations/qmmp_it.ts
@@ -615,14 +615,14 @@
<name>JumpToTrackDialog</name>
<message>
<location filename="../jumptotrackdialog.cpp" line="81"/>
- <location filename="../jumptotrackdialog.cpp" line="137"/>
+ <location filename="../jumptotrackdialog.cpp" line="132"/>
<source>Unqueue</source>
<translation>Elimna dalla coda</translation>
</message>
<message>
<location filename="../forms/jumptotrackdialog.ui" line="79"/>
<location filename="../jumptotrackdialog.cpp" line="83"/>
- <location filename="../jumptotrackdialog.cpp" line="139"/>
+ <location filename="../jumptotrackdialog.cpp" line="134"/>
<source>Queue</source>
<translation>Metti in coda</translation>
</message>
@@ -851,174 +851,168 @@
<context>
<name>MainWindow</name>
<message>
- <location filename="../mainwindow.cpp" line="64"/>
- <location filename="../mainwindow.cpp" line="483"/>
- <source>Default</source>
- <translation>Défault</translation>
- </message>
- <message>
- <location filename="../mainwindow.cpp" line="274"/>
+ <location filename="../mainwindow.cpp" line="266"/>
<source>Choose a directory</source>
<translation>Scegliere una cartella</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="285"/>
+ <location filename="../mainwindow.cpp" line="277"/>
<source>Select one or more files to open</source>
<translation>Seleziona uno o più brani da aprire</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="420"/>
+ <location filename="../mainwindow.cpp" line="391"/>
<source>&amp;Play</source>
<translation>&amp;Esegui</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="420"/>
+ <location filename="../mainwindow.cpp" line="391"/>
<source>X</source>
<translation>X</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="421"/>
+ <location filename="../mainwindow.cpp" line="392"/>
<source>&amp;Pause</source>
<translation>&amp;Pausa</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="421"/>
+ <location filename="../mainwindow.cpp" line="392"/>
<source>C</source>
<translation>C</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="422"/>
+ <location filename="../mainwindow.cpp" line="393"/>
<source>&amp;Stop</source>
<translation>&amp;Arresta</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="422"/>
+ <location filename="../mainwindow.cpp" line="393"/>
<source>V</source>
<translation>V</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="423"/>
+ <location filename="../mainwindow.cpp" line="394"/>
<source>&amp;Previous</source>
<translation>&amp;Precedente</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="423"/>
+ <location filename="../mainwindow.cpp" line="394"/>
<source>Z</source>
<translation>Z</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="424"/>
+ <location filename="../mainwindow.cpp" line="395"/>
<source>&amp;Next</source>
<translation>&amp;Successivo</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="424"/>
+ <location filename="../mainwindow.cpp" line="395"/>
<source>B</source>
<translation>B</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="443"/>
+ <location filename="../mainwindow.cpp" line="414"/>
<source>&amp;Jump To File</source>
<translation>&amp;Vai al brano</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="443"/>
+ <location filename="../mainwindow.cpp" line="414"/>
<source>J</source>
<translation>J</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="449"/>
+ <location filename="../mainwindow.cpp" line="420"/>
<source>&amp;Settings</source>
<translation>&amp;Configurazione</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="449"/>
+ <location filename="../mainwindow.cpp" line="420"/>
<source>Ctrl+P</source>
<translation>Ctrl+P</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="455"/>
+ <location filename="../mainwindow.cpp" line="426"/>
<source>&amp;Exit</source>
<translation>&amp;Esci</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="455"/>
+ <location filename="../mainwindow.cpp" line="426"/>
<source>Ctrl+Q</source>
<translation>Ctrl+Q</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="497"/>
+ <location filename="../mainwindow.cpp" line="462"/>
<source>Open Playlist</source>
<translation>Apri lista di brani</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="522"/>
+ <location filename="../mainwindow.cpp" line="487"/>
<source>Save Playlist</source>
<translation>Salva lista di brani</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="451"/>
+ <location filename="../mainwindow.cpp" line="422"/>
<source>&amp;About</source>
<translation>&amp;Informazioni</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="495"/>
- <location filename="../mainwindow.cpp" line="521"/>
+ <location filename="../mainwindow.cpp" line="460"/>
+ <location filename="../mainwindow.cpp" line="486"/>
<source>Playlist Files</source>
<translation>Brani della lista</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="425"/>
+ <location filename="../mainwindow.cpp" line="396"/>
<source>Space</source>
<translation>Spazio</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="452"/>
+ <location filename="../mainwindow.cpp" line="423"/>
<source>&amp;About Qt</source>
<translation>&amp;Informazioni su Qt</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="425"/>
+ <location filename="../mainwindow.cpp" line="396"/>
<source>&amp;Play/Pause</source>
<translation>&amp;Esegui / Pausa</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="280"/>
+ <location filename="../mainwindow.cpp" line="272"/>
<source>All Supported Bitstreams</source>
<translation>Elenco di tutti i tipi di flusso accettati</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="428"/>
+ <location filename="../mainwindow.cpp" line="399"/>
<source>&amp;Repeat Track</source>
<translation>&amp;Ripeti brano</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="429"/>
+ <location filename="../mainwindow.cpp" line="400"/>
<source>&amp;Shuffle</source>
<translation>&amp;Ordine casuale</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="433"/>
+ <location filename="../mainwindow.cpp" line="404"/>
<source>R</source>
<translation>R</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="434"/>
+ <location filename="../mainwindow.cpp" line="405"/>
<source>Ctrl+R</source>
<translation>Ctrl+R</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="435"/>
+ <location filename="../mainwindow.cpp" line="406"/>
<source>S</source>
<translation>S</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="427"/>
+ <location filename="../mainwindow.cpp" line="398"/>
<source>&amp;Repeat Playlist</source>
<translation>&amp;Ripeti lista brani</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="447"/>
+ <location filename="../mainwindow.cpp" line="418"/>
<source>Tools</source>
<translation>Strumenti</translation>
</message>
@@ -1026,194 +1020,209 @@
<context>
<name>PlayList</name>
<message>
- <location filename="../playlist.cpp" line="150"/>
+ <location filename="../playlist.cpp" line="165"/>
<source>F</source>
<translation>F</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="156"/>
+ <location filename="../playlist.cpp" line="171"/>
<source>D</source>
<translation>D</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="191"/>
+ <location filename="../playlist.cpp" line="204"/>
<source>Alt+I</source>
<translation>Alt+I</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="299"/>
+ <location filename="../playlist.cpp" line="308"/>
<source>Ctrl+A</source>
<translation>Ctrl+A</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="315"/>
+ <location filename="../playlist.cpp" line="327"/>
<source>O</source>
<translation>O</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="149"/>
+ <location filename="../playlist.cpp" line="164"/>
<source>&amp;Add File</source>
<translation>&amp;Aggiungi brani</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="155"/>
+ <location filename="../playlist.cpp" line="170"/>
<source>&amp;Add Directory</source>
<translation>&amp;Aggiungi cartelle</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="168"/>
+ <location filename="../playlist.cpp" line="183"/>
<source>&amp;Remove Selected</source>
<translation>&amp;Elimina la selezione</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="175"/>
+ <location filename="../playlist.cpp" line="189"/>
<source>&amp;Remove All</source>
<translation>&amp;Elimina tutto</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="181"/>
+ <location filename="../playlist.cpp" line="195"/>
<source>&amp;Remove Unselected</source>
<translation>&amp;Elimina i non selezionati</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="187"/>
+ <location filename="../playlist.cpp" line="200"/>
<source>Remove unavailable files</source>
<translation>Rimuovi files non disponibili</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="190"/>
+ <location filename="../playlist.cpp" line="203"/>
<source>&amp;View Track Details</source>
<translation>&amp;Dettagli della traccia</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="199"/>
+ <location filename="../playlist.cpp" line="212"/>
<source>Sort List</source>
<translation>Riordina la lista</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="202"/>
- <location filename="../playlist.cpp" line="237"/>
+ <location filename="../playlist.cpp" line="215"/>
+ <location filename="../playlist.cpp" line="249"/>
<source>By Title</source>
<translation>Per titolo</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="206"/>
- <location filename="../playlist.cpp" line="241"/>
+ <location filename="../playlist.cpp" line="219"/>
+ <location filename="../playlist.cpp" line="253"/>
<source>By Album</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../playlist.cpp" line="210"/>
- <location filename="../playlist.cpp" line="245"/>
+ <location filename="../playlist.cpp" line="223"/>
+ <location filename="../playlist.cpp" line="257"/>
<source>By Artist</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../playlist.cpp" line="214"/>
- <location filename="../playlist.cpp" line="249"/>
+ <location filename="../playlist.cpp" line="227"/>
+ <location filename="../playlist.cpp" line="261"/>
<source>By Filename</source>
<translation>Per titolo del brano</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="218"/>
- <location filename="../playlist.cpp" line="253"/>
+ <location filename="../playlist.cpp" line="231"/>
+ <location filename="../playlist.cpp" line="265"/>
<source>By Path + Filename</source>
<translation>per percorso più titolo del brano</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="222"/>
- <location filename="../playlist.cpp" line="257"/>
+ <location filename="../playlist.cpp" line="235"/>
+ <location filename="../playlist.cpp" line="269"/>
<source>By Date</source>
<translation>Per data</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="235"/>
+ <location filename="../playlist.cpp" line="247"/>
<source>Sort Selection</source>
<translation>Riordina la selezione</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="271"/>
+ <location filename="../playlist.cpp" line="282"/>
<source>Randomize List</source>
<translation>Mescola i brnai della lista</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="272"/>
+ <location filename="../playlist.cpp" line="283"/>
<source>Reverse List</source>
<translation>Inverti la lista</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="284"/>
+ <location filename="../playlist.cpp" line="295"/>
<source>Invert Selection</source>
<translation>Inverti la selezione</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="291"/>
+ <location filename="../playlist.cpp" line="301"/>
<source>&amp;Select None</source>
<translation>&amp;Non scegliere alcun brano</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="298"/>
+ <location filename="../playlist.cpp" line="302"/>
+ <source>Shift+A</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="307"/>
<source>&amp;Select All</source>
<translation>&amp;Seleziona tutto</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="307"/>
+ <location filename="../playlist.cpp" line="314"/>
<source>&amp;New List</source>
<translation>&amp;Nuova lista</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="308"/>
+ <location filename="../playlist.cpp" line="315"/>
<source>Shift+N</source>
<translation>Shift+N</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="314"/>
+ <location filename="../playlist.cpp" line="319"/>
+ <source>&amp;Delete List</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="320"/>
+ <source>Shift+D</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="326"/>
<source>&amp;Load List</source>
<translation>&amp;Carica lista</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="320"/>
+ <location filename="../playlist.cpp" line="332"/>
<source>&amp;Save List</source>
<translation>&amp;Salva lista</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="321"/>
+ <location filename="../playlist.cpp" line="333"/>
<source>Shift+S</source>
<translation>Shift+S</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="169"/>
+ <location filename="../playlist.cpp" line="184"/>
<source>Del</source>
<translation>Canc</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="161"/>
+ <location filename="../playlist.cpp" line="176"/>
<source>&amp;Add Url</source>
<translation>&amp;Aggiungi URL</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="162"/>
+ <location filename="../playlist.cpp" line="177"/>
<source>U</source>
<translation>U</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="226"/>
- <location filename="../playlist.cpp" line="261"/>
+ <location filename="../playlist.cpp" line="239"/>
+ <location filename="../playlist.cpp" line="273"/>
<source>By Track Number</source>
<translation>Per numero di traccia</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="280"/>
+ <location filename="../playlist.cpp" line="291"/>
<source>&amp;Queue</source>
<translation>&amp;Metti in coda</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="280"/>
+ <location filename="../playlist.cpp" line="291"/>
<source>Q</source>
<translation>Q</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="277"/>
+ <location filename="../playlist.cpp" line="288"/>
<source>Actions</source>
<translation>Azioni</translation>
</message>
diff --git a/src/ui/translations/qmmp_lt.ts b/src/ui/translations/qmmp_lt.ts
index fcdf4bf90..7414278b4 100644
--- a/src/ui/translations/qmmp_lt.ts
+++ b/src/ui/translations/qmmp_lt.ts
@@ -615,14 +615,14 @@
<name>JumpToTrackDialog</name>
<message>
<location filename="../jumptotrackdialog.cpp" line="81"/>
- <location filename="../jumptotrackdialog.cpp" line="137"/>
+ <location filename="../jumptotrackdialog.cpp" line="132"/>
<source>Unqueue</source>
<translation>Pašalinti iš eilės</translation>
</message>
<message>
<location filename="../forms/jumptotrackdialog.ui" line="79"/>
<location filename="../jumptotrackdialog.cpp" line="83"/>
- <location filename="../jumptotrackdialog.cpp" line="139"/>
+ <location filename="../jumptotrackdialog.cpp" line="134"/>
<source>Queue</source>
<translation>Į eilę</translation>
</message>
@@ -851,174 +851,168 @@
<context>
<name>MainWindow</name>
<message>
- <location filename="../mainwindow.cpp" line="64"/>
- <location filename="../mainwindow.cpp" line="483"/>
- <source>Default</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../mainwindow.cpp" line="274"/>
+ <location filename="../mainwindow.cpp" line="266"/>
<source>Choose a directory</source>
<translation>Pasirinkite aplanką</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="285"/>
+ <location filename="../mainwindow.cpp" line="277"/>
<source>Select one or more files to open</source>
<translation>Pasirinkite vieną ar kelias bylas atvėrimui</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="420"/>
+ <location filename="../mainwindow.cpp" line="391"/>
<source>&amp;Play</source>
<translation>&amp;Groti</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="420"/>
+ <location filename="../mainwindow.cpp" line="391"/>
<source>X</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="421"/>
+ <location filename="../mainwindow.cpp" line="392"/>
<source>&amp;Pause</source>
<translation>&amp;Pristabdyti</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="421"/>
+ <location filename="../mainwindow.cpp" line="392"/>
<source>C</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="422"/>
+ <location filename="../mainwindow.cpp" line="393"/>
<source>&amp;Stop</source>
<translation>&amp;Sustabdyti</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="422"/>
+ <location filename="../mainwindow.cpp" line="393"/>
<source>V</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="423"/>
+ <location filename="../mainwindow.cpp" line="394"/>
<source>&amp;Previous</source>
<translation>&amp;Ankstesnis</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="423"/>
+ <location filename="../mainwindow.cpp" line="394"/>
<source>Z</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="424"/>
+ <location filename="../mainwindow.cpp" line="395"/>
<source>&amp;Next</source>
<translation>&amp;Sekantis</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="424"/>
+ <location filename="../mainwindow.cpp" line="395"/>
<source>B</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="443"/>
+ <location filename="../mainwindow.cpp" line="414"/>
<source>&amp;Jump To File</source>
<translation>&amp;Pereiti prie bylos</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="443"/>
+ <location filename="../mainwindow.cpp" line="414"/>
<source>J</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="449"/>
+ <location filename="../mainwindow.cpp" line="420"/>
<source>&amp;Settings</source>
<translation>&amp;Nustatymai</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="449"/>
+ <location filename="../mainwindow.cpp" line="420"/>
<source>Ctrl+P</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="455"/>
+ <location filename="../mainwindow.cpp" line="426"/>
<source>&amp;Exit</source>
<translation>&amp;Išeiti</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="455"/>
+ <location filename="../mainwindow.cpp" line="426"/>
<source>Ctrl+Q</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="497"/>
+ <location filename="../mainwindow.cpp" line="462"/>
<source>Open Playlist</source>
<translation>Atverti grojaraštį</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="522"/>
+ <location filename="../mainwindow.cpp" line="487"/>
<source>Save Playlist</source>
<translation>Išsaugoti grojaraštį</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="451"/>
+ <location filename="../mainwindow.cpp" line="422"/>
<source>&amp;About</source>
<translation>&amp;Apie</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="495"/>
- <location filename="../mainwindow.cpp" line="521"/>
+ <location filename="../mainwindow.cpp" line="460"/>
+ <location filename="../mainwindow.cpp" line="486"/>
<source>Playlist Files</source>
<translation>Grojaraščio bylos</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="425"/>
+ <location filename="../mainwindow.cpp" line="396"/>
<source>Space</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="452"/>
+ <location filename="../mainwindow.cpp" line="423"/>
<source>&amp;About Qt</source>
<translation>&amp;Apie Qt</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="425"/>
+ <location filename="../mainwindow.cpp" line="396"/>
<source>&amp;Play/Pause</source>
<translation>&amp;Groti/Pristabdyti</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="280"/>
+ <location filename="../mainwindow.cpp" line="272"/>
<source>All Supported Bitstreams</source>
<translation>Palaikomi bylų tipai</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="428"/>
+ <location filename="../mainwindow.cpp" line="399"/>
<source>&amp;Repeat Track</source>
<translation>&amp;Kartoti takelį</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="429"/>
+ <location filename="../mainwindow.cpp" line="400"/>
<source>&amp;Shuffle</source>
<translation>&amp;Atsitiktine tvarka</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="433"/>
+ <location filename="../mainwindow.cpp" line="404"/>
<source>R</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="434"/>
+ <location filename="../mainwindow.cpp" line="405"/>
<source>Ctrl+R</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="435"/>
+ <location filename="../mainwindow.cpp" line="406"/>
<source>S</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="427"/>
+ <location filename="../mainwindow.cpp" line="398"/>
<source>&amp;Repeat Playlist</source>
<translation>&amp;Kartoti grojaraštį</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="447"/>
+ <location filename="../mainwindow.cpp" line="418"/>
<source>Tools</source>
<translation>Įrankiai</translation>
</message>
@@ -1026,194 +1020,209 @@
<context>
<name>PlayList</name>
<message>
- <location filename="../playlist.cpp" line="150"/>
+ <location filename="../playlist.cpp" line="165"/>
<source>F</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../playlist.cpp" line="156"/>
+ <location filename="../playlist.cpp" line="171"/>
<source>D</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../playlist.cpp" line="191"/>
+ <location filename="../playlist.cpp" line="204"/>
<source>Alt+I</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../playlist.cpp" line="299"/>
+ <location filename="../playlist.cpp" line="308"/>
<source>Ctrl+A</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../playlist.cpp" line="315"/>
+ <location filename="../playlist.cpp" line="327"/>
<source>O</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../playlist.cpp" line="149"/>
+ <location filename="../playlist.cpp" line="164"/>
<source>&amp;Add File</source>
<translation>&amp;Pridėti bylą</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="155"/>
+ <location filename="../playlist.cpp" line="170"/>
<source>&amp;Add Directory</source>
<translation>&amp;Pridėti aplanką</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="168"/>
+ <location filename="../playlist.cpp" line="183"/>
<source>&amp;Remove Selected</source>
<translation>&amp;Pašalinti pasirinktus</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="175"/>
+ <location filename="../playlist.cpp" line="189"/>
<source>&amp;Remove All</source>
<translation>&amp;Pašalinti visus</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="181"/>
+ <location filename="../playlist.cpp" line="195"/>
<source>&amp;Remove Unselected</source>
<translation>&amp;Pašalinti NEpasirinktus</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="187"/>
+ <location filename="../playlist.cpp" line="200"/>
<source>Remove unavailable files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../playlist.cpp" line="190"/>
+ <location filename="../playlist.cpp" line="203"/>
<source>&amp;View Track Details</source>
<translation>&amp;Takelio informacija</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="199"/>
+ <location filename="../playlist.cpp" line="212"/>
<source>Sort List</source>
<translation>Rūšiuoti</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="202"/>
- <location filename="../playlist.cpp" line="237"/>
+ <location filename="../playlist.cpp" line="215"/>
+ <location filename="../playlist.cpp" line="249"/>
<source>By Title</source>
<translation>Pagal dainos pavadinimą</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="206"/>
- <location filename="../playlist.cpp" line="241"/>
+ <location filename="../playlist.cpp" line="219"/>
+ <location filename="../playlist.cpp" line="253"/>
<source>By Album</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../playlist.cpp" line="210"/>
- <location filename="../playlist.cpp" line="245"/>
+ <location filename="../playlist.cpp" line="223"/>
+ <location filename="../playlist.cpp" line="257"/>
<source>By Artist</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../playlist.cpp" line="214"/>
- <location filename="../playlist.cpp" line="249"/>
+ <location filename="../playlist.cpp" line="227"/>
+ <location filename="../playlist.cpp" line="261"/>
<source>By Filename</source>
<translation>Pagal bylos pavadinimą</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="218"/>
- <location filename="../playlist.cpp" line="253"/>
+ <location filename="../playlist.cpp" line="231"/>
+ <location filename="../playlist.cpp" line="265"/>
<source>By Path + Filename</source>
<translation>Pagal kelią iki bylos</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="222"/>
- <location filename="../playlist.cpp" line="257"/>
+ <location filename="../playlist.cpp" line="235"/>
+ <location filename="../playlist.cpp" line="269"/>
<source>By Date</source>
<translation>Pagal datą</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="235"/>
+ <location filename="../playlist.cpp" line="247"/>
<source>Sort Selection</source>
<translation>Rūšiuoti pasirinktus</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="271"/>
+ <location filename="../playlist.cpp" line="282"/>
<source>Randomize List</source>
<translation>Sumaišyti sąrašą</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="272"/>
+ <location filename="../playlist.cpp" line="283"/>
<source>Reverse List</source>
<translation>Apversti</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="284"/>
+ <location filename="../playlist.cpp" line="295"/>
<source>Invert Selection</source>
<translation type="unfinished">Atšaukti pasirinkimą</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="291"/>
+ <location filename="../playlist.cpp" line="301"/>
<source>&amp;Select None</source>
<translation>&amp;Nepasirinkti nei vieno</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="298"/>
+ <location filename="../playlist.cpp" line="302"/>
+ <source>Shift+A</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="307"/>
<source>&amp;Select All</source>
<translation>&amp;Pasirinkti visus</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="307"/>
+ <location filename="../playlist.cpp" line="314"/>
<source>&amp;New List</source>
<translation>&amp;Naujas sąrašas</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="308"/>
+ <location filename="../playlist.cpp" line="315"/>
<source>Shift+N</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../playlist.cpp" line="314"/>
+ <location filename="../playlist.cpp" line="319"/>
+ <source>&amp;Delete List</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="320"/>
+ <source>Shift+D</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="326"/>
<source>&amp;Load List</source>
<translation type="unfinished">&amp;Įkelti sąrašą</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="320"/>
+ <location filename="../playlist.cpp" line="332"/>
<source>&amp;Save List</source>
<translation>&amp;Išsaugoti sąrašą</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="321"/>
+ <location filename="../playlist.cpp" line="333"/>
<source>Shift+S</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../playlist.cpp" line="169"/>
+ <location filename="../playlist.cpp" line="184"/>
<source>Del</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../playlist.cpp" line="161"/>
+ <location filename="../playlist.cpp" line="176"/>
<source>&amp;Add Url</source>
<translation>&amp;Pridėti interneto adresą</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="162"/>
+ <location filename="../playlist.cpp" line="177"/>
<source>U</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../playlist.cpp" line="226"/>
- <location filename="../playlist.cpp" line="261"/>
+ <location filename="../playlist.cpp" line="239"/>
+ <location filename="../playlist.cpp" line="273"/>
<source>By Track Number</source>
<translation>Pagal takelio numerį</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="280"/>
+ <location filename="../playlist.cpp" line="291"/>
<source>&amp;Queue</source>
<translation>&amp;Į eilę</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="280"/>
+ <location filename="../playlist.cpp" line="291"/>
<source>Q</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../playlist.cpp" line="277"/>
+ <location filename="../playlist.cpp" line="288"/>
<source>Actions</source>
<translation>Veiksmai</translation>
</message>
diff --git a/src/ui/translations/qmmp_pl_PL.ts b/src/ui/translations/qmmp_pl_PL.ts
index e859f72e2..a8c1791b8 100644
--- a/src/ui/translations/qmmp_pl_PL.ts
+++ b/src/ui/translations/qmmp_pl_PL.ts
@@ -615,14 +615,14 @@
<name>JumpToTrackDialog</name>
<message>
<location filename="../jumptotrackdialog.cpp" line="81"/>
- <location filename="../jumptotrackdialog.cpp" line="137"/>
+ <location filename="../jumptotrackdialog.cpp" line="132"/>
<source>Unqueue</source>
<translation>Wykolejkuj</translation>
</message>
<message>
<location filename="../forms/jumptotrackdialog.ui" line="79"/>
<location filename="../jumptotrackdialog.cpp" line="83"/>
- <location filename="../jumptotrackdialog.cpp" line="139"/>
+ <location filename="../jumptotrackdialog.cpp" line="134"/>
<source>Queue</source>
<translation>Kolejkuj</translation>
</message>
@@ -851,174 +851,168 @@
<context>
<name>MainWindow</name>
<message>
- <location filename="../mainwindow.cpp" line="64"/>
- <location filename="../mainwindow.cpp" line="483"/>
- <source>Default</source>
- <translation>Domyślne</translation>
- </message>
- <message>
- <location filename="../mainwindow.cpp" line="274"/>
+ <location filename="../mainwindow.cpp" line="266"/>
<source>Choose a directory</source>
<translation>Wybierz katalog</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="285"/>
+ <location filename="../mainwindow.cpp" line="277"/>
<source>Select one or more files to open</source>
<translation>Wybierz jeden lub więcej plików do otwarcia</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="420"/>
+ <location filename="../mainwindow.cpp" line="391"/>
<source>&amp;Play</source>
<translation>&amp;Odtwarzaj</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="420"/>
+ <location filename="../mainwindow.cpp" line="391"/>
<source>X</source>
<translation>X</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="421"/>
+ <location filename="../mainwindow.cpp" line="392"/>
<source>&amp;Pause</source>
<translation>&amp;Wstrzymaj</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="421"/>
+ <location filename="../mainwindow.cpp" line="392"/>
<source>C</source>
<translation>C</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="422"/>
+ <location filename="../mainwindow.cpp" line="393"/>
<source>&amp;Stop</source>
<translation>&amp;Zatrzymaj</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="422"/>
+ <location filename="../mainwindow.cpp" line="393"/>
<source>V</source>
<translation>V</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="423"/>
+ <location filename="../mainwindow.cpp" line="394"/>
<source>&amp;Previous</source>
<translation>&amp;Poprzedni</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="423"/>
+ <location filename="../mainwindow.cpp" line="394"/>
<source>Z</source>
<translation>Z</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="424"/>
+ <location filename="../mainwindow.cpp" line="395"/>
<source>&amp;Next</source>
<translation>&amp;Następny</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="424"/>
+ <location filename="../mainwindow.cpp" line="395"/>
<source>B</source>
<translation>B</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="443"/>
+ <location filename="../mainwindow.cpp" line="414"/>
<source>&amp;Jump To File</source>
<translation>&amp;Skocz do pliku</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="443"/>
+ <location filename="../mainwindow.cpp" line="414"/>
<source>J</source>
<translation>J</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="449"/>
+ <location filename="../mainwindow.cpp" line="420"/>
<source>&amp;Settings</source>
<translation>&amp;Ustawienia</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="449"/>
+ <location filename="../mainwindow.cpp" line="420"/>
<source>Ctrl+P</source>
<translation>Ctrl+P</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="455"/>
+ <location filename="../mainwindow.cpp" line="426"/>
<source>&amp;Exit</source>
<translation>&amp;Wyjście</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="455"/>
+ <location filename="../mainwindow.cpp" line="426"/>
<source>Ctrl+Q</source>
<translation>Ctrl+Q</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="497"/>
+ <location filename="../mainwindow.cpp" line="462"/>
<source>Open Playlist</source>
<translation>Otwórz listę odtwarzania</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="522"/>
+ <location filename="../mainwindow.cpp" line="487"/>
<source>Save Playlist</source>
<translation>Zapisz listę odtwarzania</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="451"/>
+ <location filename="../mainwindow.cpp" line="422"/>
<source>&amp;About</source>
<translation>&amp;O programie</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="495"/>
- <location filename="../mainwindow.cpp" line="521"/>
+ <location filename="../mainwindow.cpp" line="460"/>
+ <location filename="../mainwindow.cpp" line="486"/>
<source>Playlist Files</source>
<translation>Pliki listy odtwarzania</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="425"/>
+ <location filename="../mainwindow.cpp" line="396"/>
<source>Space</source>
<translation></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="452"/>
+ <location filename="../mainwindow.cpp" line="423"/>
<source>&amp;About Qt</source>
<translation>&amp;O Qt</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="425"/>
+ <location filename="../mainwindow.cpp" line="396"/>
<source>&amp;Play/Pause</source>
<translation>&amp;Odtwarzaj/Wstrzymaj</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="280"/>
+ <location filename="../mainwindow.cpp" line="272"/>
<source>All Supported Bitstreams</source>
<translation>Wszystkie wspierane formaty</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="428"/>
+ <location filename="../mainwindow.cpp" line="399"/>
<source>&amp;Repeat Track</source>
<translation>&amp;Powtórz utwór</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="429"/>
+ <location filename="../mainwindow.cpp" line="400"/>
<source>&amp;Shuffle</source>
<translation>&amp;Losowo</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="433"/>
+ <location filename="../mainwindow.cpp" line="404"/>
<source>R</source>
<translation></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="434"/>
+ <location filename="../mainwindow.cpp" line="405"/>
<source>Ctrl+R</source>
<translation></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="435"/>
+ <location filename="../mainwindow.cpp" line="406"/>
<source>S</source>
<translation></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="427"/>
+ <location filename="../mainwindow.cpp" line="398"/>
<source>&amp;Repeat Playlist</source>
<translation>Powtó&amp;rz listę odtwarzania</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="447"/>
+ <location filename="../mainwindow.cpp" line="418"/>
<source>Tools</source>
<translation>Narzędzia</translation>
</message>
@@ -1026,194 +1020,209 @@
<context>
<name>PlayList</name>
<message>
- <location filename="../playlist.cpp" line="150"/>
+ <location filename="../playlist.cpp" line="165"/>
<source>F</source>
<translation>F</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="156"/>
+ <location filename="../playlist.cpp" line="171"/>
<source>D</source>
<translation>D</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="191"/>
+ <location filename="../playlist.cpp" line="204"/>
<source>Alt+I</source>
<translation>Alt+I</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="299"/>
+ <location filename="../playlist.cpp" line="308"/>
<source>Ctrl+A</source>
<translation>Ctrl+A</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="315"/>
+ <location filename="../playlist.cpp" line="327"/>
<source>O</source>
<translation>O</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="149"/>
+ <location filename="../playlist.cpp" line="164"/>
<source>&amp;Add File</source>
<translation>&amp;Dodaj plik</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="155"/>
+ <location filename="../playlist.cpp" line="170"/>
<source>&amp;Add Directory</source>
<translation>Dodaj &amp;katalog</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="168"/>
+ <location filename="../playlist.cpp" line="183"/>
<source>&amp;Remove Selected</source>
<translation>&amp;Usuń zaznaczone</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="175"/>
+ <location filename="../playlist.cpp" line="189"/>
<source>&amp;Remove All</source>
<translation>Usuń &amp;wszystkie</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="181"/>
+ <location filename="../playlist.cpp" line="195"/>
<source>&amp;Remove Unselected</source>
<translation>Usuń &amp;niezaznaczone</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="187"/>
+ <location filename="../playlist.cpp" line="200"/>
<source>Remove unavailable files</source>
<translation>Usuń niedostępne pliki</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="190"/>
+ <location filename="../playlist.cpp" line="203"/>
<source>&amp;View Track Details</source>
<translation>&amp;Pokaż informacje o pliku</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="199"/>
+ <location filename="../playlist.cpp" line="212"/>
<source>Sort List</source>
<translation>Sortuj listę</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="202"/>
- <location filename="../playlist.cpp" line="237"/>
+ <location filename="../playlist.cpp" line="215"/>
+ <location filename="../playlist.cpp" line="249"/>
<source>By Title</source>
<translation>Według nazwy</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="206"/>
- <location filename="../playlist.cpp" line="241"/>
+ <location filename="../playlist.cpp" line="219"/>
+ <location filename="../playlist.cpp" line="253"/>
<source>By Album</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../playlist.cpp" line="210"/>
- <location filename="../playlist.cpp" line="245"/>
+ <location filename="../playlist.cpp" line="223"/>
+ <location filename="../playlist.cpp" line="257"/>
<source>By Artist</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../playlist.cpp" line="214"/>
- <location filename="../playlist.cpp" line="249"/>
+ <location filename="../playlist.cpp" line="227"/>
+ <location filename="../playlist.cpp" line="261"/>
<source>By Filename</source>
<translation>Według nazwy pliku</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="218"/>
- <location filename="../playlist.cpp" line="253"/>
+ <location filename="../playlist.cpp" line="231"/>
+ <location filename="../playlist.cpp" line="265"/>
<source>By Path + Filename</source>
<translation>Według Ścieżki + Nazwy pliku</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="222"/>
- <location filename="../playlist.cpp" line="257"/>
+ <location filename="../playlist.cpp" line="235"/>
+ <location filename="../playlist.cpp" line="269"/>
<source>By Date</source>
<translation>Wg Daty</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="235"/>
+ <location filename="../playlist.cpp" line="247"/>
<source>Sort Selection</source>
<translation>Sortuj zaznaczone</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="271"/>
+ <location filename="../playlist.cpp" line="282"/>
<source>Randomize List</source>
<translation>Tasuj listę</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="272"/>
+ <location filename="../playlist.cpp" line="283"/>
<source>Reverse List</source>
<translation>Odwróć listę</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="284"/>
+ <location filename="../playlist.cpp" line="295"/>
<source>Invert Selection</source>
<translation>Odwróć zaznaczenie</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="291"/>
+ <location filename="../playlist.cpp" line="301"/>
<source>&amp;Select None</source>
<translation>&amp;Odznacz wszystkie</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="298"/>
+ <location filename="../playlist.cpp" line="302"/>
+ <source>Shift+A</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="307"/>
<source>&amp;Select All</source>
<translation>&amp;Zaznacz wszystkie</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="307"/>
+ <location filename="../playlist.cpp" line="314"/>
<source>&amp;New List</source>
<translation>&amp;Nowa lista</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="308"/>
+ <location filename="../playlist.cpp" line="315"/>
<source>Shift+N</source>
<translation>Shift+N</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="314"/>
+ <location filename="../playlist.cpp" line="319"/>
+ <source>&amp;Delete List</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="320"/>
+ <source>Shift+D</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="326"/>
<source>&amp;Load List</source>
<translation>&amp;Ładuj listę</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="320"/>
+ <location filename="../playlist.cpp" line="332"/>
<source>&amp;Save List</source>
<translation>&amp;Zapisz listę</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="321"/>
+ <location filename="../playlist.cpp" line="333"/>
<source>Shift+S</source>
<translation>Shift+S</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="169"/>
+ <location filename="../playlist.cpp" line="184"/>
<source>Del</source>
<translation>Del</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="161"/>
+ <location filename="../playlist.cpp" line="176"/>
<source>&amp;Add Url</source>
<translation>Dod&amp;aj Url</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="162"/>
+ <location filename="../playlist.cpp" line="177"/>
<source>U</source>
<translation>U</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="226"/>
- <location filename="../playlist.cpp" line="261"/>
+ <location filename="../playlist.cpp" line="239"/>
+ <location filename="../playlist.cpp" line="273"/>
<source>By Track Number</source>
<translation>Wg numeru utworu</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="280"/>
+ <location filename="../playlist.cpp" line="291"/>
<source>&amp;Queue</source>
<translation>&amp;Kolejkuj</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="280"/>
+ <location filename="../playlist.cpp" line="291"/>
<source>Q</source>
<translation>Q</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="277"/>
+ <location filename="../playlist.cpp" line="288"/>
<source>Actions</source>
<translation>Akcje</translation>
</message>
diff --git a/src/ui/translations/qmmp_pt_BR.ts b/src/ui/translations/qmmp_pt_BR.ts
index 165dea5c2..b0585a8ce 100644
--- a/src/ui/translations/qmmp_pt_BR.ts
+++ b/src/ui/translations/qmmp_pt_BR.ts
@@ -615,14 +615,14 @@
<name>JumpToTrackDialog</name>
<message>
<location filename="../jumptotrackdialog.cpp" line="81"/>
- <location filename="../jumptotrackdialog.cpp" line="137"/>
+ <location filename="../jumptotrackdialog.cpp" line="132"/>
<source>Unqueue</source>
<translation type="unfinished">Sem Faixa na Fila</translation>
</message>
<message>
<location filename="../forms/jumptotrackdialog.ui" line="79"/>
<location filename="../jumptotrackdialog.cpp" line="83"/>
- <location filename="../jumptotrackdialog.cpp" line="139"/>
+ <location filename="../jumptotrackdialog.cpp" line="134"/>
<source>Queue</source>
<translation type="unfinished">Faixa na Fila</translation>
</message>
@@ -851,174 +851,168 @@
<context>
<name>MainWindow</name>
<message>
- <location filename="../mainwindow.cpp" line="64"/>
- <location filename="../mainwindow.cpp" line="483"/>
- <source>Default</source>
- <translation type="unfinished">Padrão</translation>
- </message>
- <message>
- <location filename="../mainwindow.cpp" line="274"/>
+ <location filename="../mainwindow.cpp" line="266"/>
<source>Choose a directory</source>
<translation type="unfinished">Escolher o diretorio</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="285"/>
+ <location filename="../mainwindow.cpp" line="277"/>
<source>Select one or more files to open</source>
<translation type="unfinished">Selecionar um ou mais arquivos</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="420"/>
+ <location filename="../mainwindow.cpp" line="391"/>
<source>&amp;Play</source>
<translation type="unfinished">Tocar</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="420"/>
+ <location filename="../mainwindow.cpp" line="391"/>
<source>X</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="421"/>
+ <location filename="../mainwindow.cpp" line="392"/>
<source>&amp;Pause</source>
<translation type="unfinished">Pausar</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="421"/>
+ <location filename="../mainwindow.cpp" line="392"/>
<source>C</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="422"/>
+ <location filename="../mainwindow.cpp" line="393"/>
<source>&amp;Stop</source>
<translation type="unfinished">Parar</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="422"/>
+ <location filename="../mainwindow.cpp" line="393"/>
<source>V</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="423"/>
+ <location filename="../mainwindow.cpp" line="394"/>
<source>&amp;Previous</source>
<translation type="unfinished">Anterior</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="423"/>
+ <location filename="../mainwindow.cpp" line="394"/>
<source>Z</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="424"/>
+ <location filename="../mainwindow.cpp" line="395"/>
<source>&amp;Next</source>
<translation type="unfinished">Próximo</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="424"/>
+ <location filename="../mainwindow.cpp" line="395"/>
<source>B</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="443"/>
+ <location filename="../mainwindow.cpp" line="414"/>
<source>&amp;Jump To File</source>
<translation type="unfinished">Pular para arquivo</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="443"/>
+ <location filename="../mainwindow.cpp" line="414"/>
<source>J</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="449"/>
+ <location filename="../mainwindow.cpp" line="420"/>
<source>&amp;Settings</source>
<translation type="unfinished">Configurações</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="449"/>
+ <location filename="../mainwindow.cpp" line="420"/>
<source>Ctrl+P</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="455"/>
+ <location filename="../mainwindow.cpp" line="426"/>
<source>&amp;Exit</source>
<translation type="unfinished">Sair</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="455"/>
+ <location filename="../mainwindow.cpp" line="426"/>
<source>Ctrl+Q</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="497"/>
+ <location filename="../mainwindow.cpp" line="462"/>
<source>Open Playlist</source>
<translation type="unfinished">Abrir Playlist</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="522"/>
+ <location filename="../mainwindow.cpp" line="487"/>
<source>Save Playlist</source>
<translation type="unfinished">Salvar Playlist</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="451"/>
+ <location filename="../mainwindow.cpp" line="422"/>
<source>&amp;About</source>
<translation type="unfinished">&amp;Sobre</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="495"/>
- <location filename="../mainwindow.cpp" line="521"/>
+ <location filename="../mainwindow.cpp" line="460"/>
+ <location filename="../mainwindow.cpp" line="486"/>
<source>Playlist Files</source>
<translation type="unfinished">ФArquivos de lista de músicas</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="425"/>
+ <location filename="../mainwindow.cpp" line="396"/>
<source>Space</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="452"/>
+ <location filename="../mainwindow.cpp" line="423"/>
<source>&amp;About Qt</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="425"/>
+ <location filename="../mainwindow.cpp" line="396"/>
<source>&amp;Play/Pause</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="280"/>
+ <location filename="../mainwindow.cpp" line="272"/>
<source>All Supported Bitstreams</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="428"/>
+ <location filename="../mainwindow.cpp" line="399"/>
<source>&amp;Repeat Track</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="429"/>
+ <location filename="../mainwindow.cpp" line="400"/>
<source>&amp;Shuffle</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="433"/>
+ <location filename="../mainwindow.cpp" line="404"/>
<source>R</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="434"/>
+ <location filename="../mainwindow.cpp" line="405"/>
<source>Ctrl+R</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="435"/>
+ <location filename="../mainwindow.cpp" line="406"/>
<source>S</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="427"/>
+ <location filename="../mainwindow.cpp" line="398"/>
<source>&amp;Repeat Playlist</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="447"/>
+ <location filename="../mainwindow.cpp" line="418"/>
<source>Tools</source>
<translation type="unfinished"></translation>
</message>
@@ -1026,194 +1020,209 @@
<context>
<name>PlayList</name>
<message>
- <location filename="../playlist.cpp" line="150"/>
+ <location filename="../playlist.cpp" line="165"/>
<source>F</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../playlist.cpp" line="156"/>
+ <location filename="../playlist.cpp" line="171"/>
<source>D</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../playlist.cpp" line="191"/>
+ <location filename="../playlist.cpp" line="204"/>
<source>Alt+I</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../playlist.cpp" line="299"/>
+ <location filename="../playlist.cpp" line="308"/>
<source>Ctrl+A</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../playlist.cpp" line="315"/>
+ <location filename="../playlist.cpp" line="327"/>
<source>O</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../playlist.cpp" line="149"/>
+ <location filename="../playlist.cpp" line="164"/>
<source>&amp;Add File</source>
<translation type="unfinished">&amp;Adicionar arquivo</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="155"/>
+ <location filename="../playlist.cpp" line="170"/>
<source>&amp;Add Directory</source>
<translation type="unfinished">&amp;Adicionar Diretorio</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="168"/>
+ <location filename="../playlist.cpp" line="183"/>
<source>&amp;Remove Selected</source>
<translation type="unfinished">&amp;Remover selecionadas</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="175"/>
+ <location filename="../playlist.cpp" line="189"/>
<source>&amp;Remove All</source>
<translation type="unfinished">&amp;Remover tudo</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="181"/>
+ <location filename="../playlist.cpp" line="195"/>
<source>&amp;Remove Unselected</source>
<translation type="unfinished">&amp;Remover não selecionadas</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="187"/>
+ <location filename="../playlist.cpp" line="200"/>
<source>Remove unavailable files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../playlist.cpp" line="190"/>
+ <location filename="../playlist.cpp" line="203"/>
<source>&amp;View Track Details</source>
<translation type="unfinished">&amp;Ver detalhes da Faixa</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="199"/>
+ <location filename="../playlist.cpp" line="212"/>
<source>Sort List</source>
<translation type="unfinished">Classificar lista</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="202"/>
- <location filename="../playlist.cpp" line="237"/>
+ <location filename="../playlist.cpp" line="215"/>
+ <location filename="../playlist.cpp" line="249"/>
<source>By Title</source>
<translation type="unfinished">Por Título</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="206"/>
- <location filename="../playlist.cpp" line="241"/>
+ <location filename="../playlist.cpp" line="219"/>
+ <location filename="../playlist.cpp" line="253"/>
<source>By Album</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../playlist.cpp" line="210"/>
- <location filename="../playlist.cpp" line="245"/>
+ <location filename="../playlist.cpp" line="223"/>
+ <location filename="../playlist.cpp" line="257"/>
<source>By Artist</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../playlist.cpp" line="214"/>
- <location filename="../playlist.cpp" line="249"/>
+ <location filename="../playlist.cpp" line="227"/>
+ <location filename="../playlist.cpp" line="261"/>
<source>By Filename</source>
<translation type="unfinished">Por Nome</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="218"/>
- <location filename="../playlist.cpp" line="253"/>
+ <location filename="../playlist.cpp" line="231"/>
+ <location filename="../playlist.cpp" line="265"/>
<source>By Path + Filename</source>
<translation type="unfinished">Por Dirertório + Nome</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="222"/>
- <location filename="../playlist.cpp" line="257"/>
+ <location filename="../playlist.cpp" line="235"/>
+ <location filename="../playlist.cpp" line="269"/>
<source>By Date</source>
<translation type="unfinished">Por Data</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="235"/>
+ <location filename="../playlist.cpp" line="247"/>
<source>Sort Selection</source>
<translation type="unfinished">Classificar por Seleção</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="271"/>
+ <location filename="../playlist.cpp" line="282"/>
<source>Randomize List</source>
<translation type="unfinished">Lista Eleatória</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="272"/>
+ <location filename="../playlist.cpp" line="283"/>
<source>Reverse List</source>
<translation type="unfinished">Lista Revertida</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="284"/>
+ <location filename="../playlist.cpp" line="295"/>
<source>Invert Selection</source>
<translation type="unfinished">Inverter Seleção</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="291"/>
+ <location filename="../playlist.cpp" line="301"/>
<source>&amp;Select None</source>
<translation type="unfinished">&amp;Nenhum selecionado</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="298"/>
+ <location filename="../playlist.cpp" line="302"/>
+ <source>Shift+A</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="307"/>
<source>&amp;Select All</source>
<translation type="unfinished">&amp;Selecionar tudo</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="307"/>
+ <location filename="../playlist.cpp" line="314"/>
<source>&amp;New List</source>
<translation type="unfinished">&amp;Nova lista</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="308"/>
+ <location filename="../playlist.cpp" line="315"/>
<source>Shift+N</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../playlist.cpp" line="314"/>
+ <location filename="../playlist.cpp" line="319"/>
+ <source>&amp;Delete List</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="320"/>
+ <source>Shift+D</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="326"/>
<source>&amp;Load List</source>
<translation type="unfinished">&amp;Carregar lista</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="320"/>
+ <location filename="../playlist.cpp" line="332"/>
<source>&amp;Save List</source>
<translation type="unfinished">&amp;Salvar lista</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="321"/>
+ <location filename="../playlist.cpp" line="333"/>
<source>Shift+S</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../playlist.cpp" line="169"/>
+ <location filename="../playlist.cpp" line="184"/>
<source>Del</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../playlist.cpp" line="161"/>
+ <location filename="../playlist.cpp" line="176"/>
<source>&amp;Add Url</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../playlist.cpp" line="162"/>
+ <location filename="../playlist.cpp" line="177"/>
<source>U</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../playlist.cpp" line="226"/>
- <location filename="../playlist.cpp" line="261"/>
+ <location filename="../playlist.cpp" line="239"/>
+ <location filename="../playlist.cpp" line="273"/>
<source>By Track Number</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../playlist.cpp" line="280"/>
+ <location filename="../playlist.cpp" line="291"/>
<source>&amp;Queue</source>
<translation type="unfinished">Na fila</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="280"/>
+ <location filename="../playlist.cpp" line="291"/>
<source>Q</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../playlist.cpp" line="277"/>
+ <location filename="../playlist.cpp" line="288"/>
<source>Actions</source>
<translation type="unfinished"></translation>
</message>
diff --git a/src/ui/translations/qmmp_ru.ts b/src/ui/translations/qmmp_ru.ts
index 85e48dc4e..ac3bcbd2f 100644
--- a/src/ui/translations/qmmp_ru.ts
+++ b/src/ui/translations/qmmp_ru.ts
@@ -615,14 +615,14 @@
<name>JumpToTrackDialog</name>
<message>
<location filename="../jumptotrackdialog.cpp" line="81"/>
- <location filename="../jumptotrackdialog.cpp" line="137"/>
+ <location filename="../jumptotrackdialog.cpp" line="132"/>
<source>Unqueue</source>
<translation>Снять с очереди</translation>
</message>
<message>
<location filename="../forms/jumptotrackdialog.ui" line="79"/>
<location filename="../jumptotrackdialog.cpp" line="83"/>
- <location filename="../jumptotrackdialog.cpp" line="139"/>
+ <location filename="../jumptotrackdialog.cpp" line="134"/>
<source>Queue</source>
<translation>В очередь</translation>
</message>
@@ -851,174 +851,168 @@
<context>
<name>MainWindow</name>
<message>
- <location filename="../mainwindow.cpp" line="64"/>
- <location filename="../mainwindow.cpp" line="483"/>
- <source>Default</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../mainwindow.cpp" line="274"/>
+ <location filename="../mainwindow.cpp" line="266"/>
<source>Choose a directory</source>
<translation>Выберите директорию</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="285"/>
+ <location filename="../mainwindow.cpp" line="277"/>
<source>Select one or more files to open</source>
<translation>Выберите один или несколько файлов</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="420"/>
+ <location filename="../mainwindow.cpp" line="391"/>
<source>&amp;Play</source>
<translation>&amp;Воспроизвести</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="420"/>
+ <location filename="../mainwindow.cpp" line="391"/>
<source>X</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="421"/>
+ <location filename="../mainwindow.cpp" line="392"/>
<source>&amp;Pause</source>
<translation>&amp;Приостановить</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="421"/>
+ <location filename="../mainwindow.cpp" line="392"/>
<source>C</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="422"/>
+ <location filename="../mainwindow.cpp" line="393"/>
<source>&amp;Stop</source>
<translation>&amp;Стоп</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="422"/>
+ <location filename="../mainwindow.cpp" line="393"/>
<source>V</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="423"/>
+ <location filename="../mainwindow.cpp" line="394"/>
<source>&amp;Previous</source>
<translation>&amp;Предыдущий фрагмент</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="423"/>
+ <location filename="../mainwindow.cpp" line="394"/>
<source>Z</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="424"/>
+ <location filename="../mainwindow.cpp" line="395"/>
<source>&amp;Next</source>
<translation>&amp;Следующий фрагмент</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="424"/>
+ <location filename="../mainwindow.cpp" line="395"/>
<source>B</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="443"/>
+ <location filename="../mainwindow.cpp" line="414"/>
<source>&amp;Jump To File</source>
<translation>&amp;Перейти к файлу</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="443"/>
+ <location filename="../mainwindow.cpp" line="414"/>
<source>J</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="449"/>
+ <location filename="../mainwindow.cpp" line="420"/>
<source>&amp;Settings</source>
<translation>&amp;Настройки</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="449"/>
+ <location filename="../mainwindow.cpp" line="420"/>
<source>Ctrl+P</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="455"/>
+ <location filename="../mainwindow.cpp" line="426"/>
<source>&amp;Exit</source>
<translation>&amp;Выход</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="455"/>
+ <location filename="../mainwindow.cpp" line="426"/>
<source>Ctrl+Q</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="497"/>
+ <location filename="../mainwindow.cpp" line="462"/>
<source>Open Playlist</source>
<translation>Открыть список</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="522"/>
+ <location filename="../mainwindow.cpp" line="487"/>
<source>Save Playlist</source>
<translation>Сохранить список</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="451"/>
+ <location filename="../mainwindow.cpp" line="422"/>
<source>&amp;About</source>
<translation>&amp;О программе</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="495"/>
- <location filename="../mainwindow.cpp" line="521"/>
+ <location filename="../mainwindow.cpp" line="460"/>
+ <location filename="../mainwindow.cpp" line="486"/>
<source>Playlist Files</source>
<translation>Файлы списков</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="425"/>
+ <location filename="../mainwindow.cpp" line="396"/>
<source>Space</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="452"/>
+ <location filename="../mainwindow.cpp" line="423"/>
<source>&amp;About Qt</source>
<translation>&amp;О библиотеке Qt</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="425"/>
+ <location filename="../mainwindow.cpp" line="396"/>
<source>&amp;Play/Pause</source>
<translation>&amp;Воспр/приост</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="280"/>
+ <location filename="../mainwindow.cpp" line="272"/>
<source>All Supported Bitstreams</source>
<translation>Все форматы</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="428"/>
+ <location filename="../mainwindow.cpp" line="399"/>
<source>&amp;Repeat Track</source>
<translation>&amp;Повторять трек</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="429"/>
+ <location filename="../mainwindow.cpp" line="400"/>
<source>&amp;Shuffle</source>
<translation>&amp;В случайном порядке</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="433"/>
+ <location filename="../mainwindow.cpp" line="404"/>
<source>R</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="434"/>
+ <location filename="../mainwindow.cpp" line="405"/>
<source>Ctrl+R</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="435"/>
+ <location filename="../mainwindow.cpp" line="406"/>
<source>S</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="427"/>
+ <location filename="../mainwindow.cpp" line="398"/>
<source>&amp;Repeat Playlist</source>
<translation>&amp;Повторять список</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="447"/>
+ <location filename="../mainwindow.cpp" line="418"/>
<source>Tools</source>
<translation>Сервис</translation>
</message>
@@ -1026,194 +1020,209 @@
<context>
<name>PlayList</name>
<message>
- <location filename="../playlist.cpp" line="150"/>
+ <location filename="../playlist.cpp" line="165"/>
<source>F</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../playlist.cpp" line="156"/>
+ <location filename="../playlist.cpp" line="171"/>
<source>D</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../playlist.cpp" line="191"/>
+ <location filename="../playlist.cpp" line="204"/>
<source>Alt+I</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../playlist.cpp" line="299"/>
+ <location filename="../playlist.cpp" line="308"/>
<source>Ctrl+A</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../playlist.cpp" line="315"/>
+ <location filename="../playlist.cpp" line="327"/>
<source>O</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../playlist.cpp" line="149"/>
+ <location filename="../playlist.cpp" line="164"/>
<source>&amp;Add File</source>
<translation>&amp;Добавить файл</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="155"/>
+ <location filename="../playlist.cpp" line="170"/>
<source>&amp;Add Directory</source>
<translation>&amp;Добавить директорию</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="168"/>
+ <location filename="../playlist.cpp" line="183"/>
<source>&amp;Remove Selected</source>
<translation>&amp;Удалить выделенное</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="175"/>
+ <location filename="../playlist.cpp" line="189"/>
<source>&amp;Remove All</source>
<translation>&amp;Удалить всё</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="181"/>
+ <location filename="../playlist.cpp" line="195"/>
<source>&amp;Remove Unselected</source>
<translation>&amp;Удалить невыделенное</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="187"/>
+ <location filename="../playlist.cpp" line="200"/>
<source>Remove unavailable files</source>
<translation>Удалить недоступные файлы</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="190"/>
+ <location filename="../playlist.cpp" line="203"/>
<source>&amp;View Track Details</source>
<translation>&amp;Информация</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="199"/>
+ <location filename="../playlist.cpp" line="212"/>
<source>Sort List</source>
<translation>Сортировать</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="202"/>
- <location filename="../playlist.cpp" line="237"/>
+ <location filename="../playlist.cpp" line="215"/>
+ <location filename="../playlist.cpp" line="249"/>
<source>By Title</source>
<translation>По названию</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="206"/>
- <location filename="../playlist.cpp" line="241"/>
+ <location filename="../playlist.cpp" line="219"/>
+ <location filename="../playlist.cpp" line="253"/>
<source>By Album</source>
<translation>По альбому</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="210"/>
- <location filename="../playlist.cpp" line="245"/>
+ <location filename="../playlist.cpp" line="223"/>
+ <location filename="../playlist.cpp" line="257"/>
<source>By Artist</source>
<translation>По исполнителю</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="214"/>
- <location filename="../playlist.cpp" line="249"/>
+ <location filename="../playlist.cpp" line="227"/>
+ <location filename="../playlist.cpp" line="261"/>
<source>By Filename</source>
<translation>По имени файла</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="218"/>
- <location filename="../playlist.cpp" line="253"/>
+ <location filename="../playlist.cpp" line="231"/>
+ <location filename="../playlist.cpp" line="265"/>
<source>By Path + Filename</source>
<translation>По пути и файлу</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="222"/>
- <location filename="../playlist.cpp" line="257"/>
+ <location filename="../playlist.cpp" line="235"/>
+ <location filename="../playlist.cpp" line="269"/>
<source>By Date</source>
<translation>По дате</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="235"/>
+ <location filename="../playlist.cpp" line="247"/>
<source>Sort Selection</source>
<translation>Сортировать выделенное</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="271"/>
+ <location filename="../playlist.cpp" line="282"/>
<source>Randomize List</source>
<translation>Перемешать</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="272"/>
+ <location filename="../playlist.cpp" line="283"/>
<source>Reverse List</source>
<translation>Перевернуть</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="284"/>
+ <location filename="../playlist.cpp" line="295"/>
<source>Invert Selection</source>
<translation>Инвертировать выделение</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="291"/>
+ <location filename="../playlist.cpp" line="301"/>
<source>&amp;Select None</source>
<translation>&amp;Снять выделение</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="298"/>
+ <location filename="../playlist.cpp" line="302"/>
+ <source>Shift+A</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="307"/>
<source>&amp;Select All</source>
<translation>&amp;Выделить всё</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="307"/>
+ <location filename="../playlist.cpp" line="314"/>
<source>&amp;New List</source>
<translation>&amp;Новый лист</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="308"/>
+ <location filename="../playlist.cpp" line="315"/>
<source>Shift+N</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../playlist.cpp" line="314"/>
+ <location filename="../playlist.cpp" line="319"/>
+ <source>&amp;Delete List</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="320"/>
+ <source>Shift+D</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="326"/>
<source>&amp;Load List</source>
<translation>&amp;Загрузить лист</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="320"/>
+ <location filename="../playlist.cpp" line="332"/>
<source>&amp;Save List</source>
<translation>&amp;Сохранить лист</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="321"/>
+ <location filename="../playlist.cpp" line="333"/>
<source>Shift+S</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../playlist.cpp" line="169"/>
+ <location filename="../playlist.cpp" line="184"/>
<source>Del</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../playlist.cpp" line="161"/>
+ <location filename="../playlist.cpp" line="176"/>
<source>&amp;Add Url</source>
<translation>&amp;Добавить URL</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="162"/>
+ <location filename="../playlist.cpp" line="177"/>
<source>U</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../playlist.cpp" line="226"/>
- <location filename="../playlist.cpp" line="261"/>
+ <location filename="../playlist.cpp" line="239"/>
+ <location filename="../playlist.cpp" line="273"/>
<source>By Track Number</source>
<translation>По номеру трека</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="280"/>
+ <location filename="../playlist.cpp" line="291"/>
<source>&amp;Queue</source>
<translation>&amp;В очередь</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="280"/>
+ <location filename="../playlist.cpp" line="291"/>
<source>Q</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../playlist.cpp" line="277"/>
+ <location filename="../playlist.cpp" line="288"/>
<source>Actions</source>
<translation>Действия</translation>
</message>
diff --git a/src/ui/translations/qmmp_tr.ts b/src/ui/translations/qmmp_tr.ts
index 2e6d04b6c..58cfdc258 100644
--- a/src/ui/translations/qmmp_tr.ts
+++ b/src/ui/translations/qmmp_tr.ts
@@ -615,14 +615,14 @@
<name>JumpToTrackDialog</name>
<message>
<location filename="../jumptotrackdialog.cpp" line="81"/>
- <location filename="../jumptotrackdialog.cpp" line="137"/>
+ <location filename="../jumptotrackdialog.cpp" line="132"/>
<source>Unqueue</source>
<translation>Kuyrukta Değil</translation>
</message>
<message>
<location filename="../forms/jumptotrackdialog.ui" line="79"/>
<location filename="../jumptotrackdialog.cpp" line="83"/>
- <location filename="../jumptotrackdialog.cpp" line="139"/>
+ <location filename="../jumptotrackdialog.cpp" line="134"/>
<source>Queue</source>
<translation>Kuyruk</translation>
</message>
@@ -851,174 +851,168 @@
<context>
<name>MainWindow</name>
<message>
- <location filename="../mainwindow.cpp" line="64"/>
- <location filename="../mainwindow.cpp" line="483"/>
- <source>Default</source>
- <translation>Öntanımlı</translation>
- </message>
- <message>
- <location filename="../mainwindow.cpp" line="274"/>
+ <location filename="../mainwindow.cpp" line="266"/>
<source>Choose a directory</source>
<translation>Bir dizin seçin</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="285"/>
+ <location filename="../mainwindow.cpp" line="277"/>
<source>Select one or more files to open</source>
<translation>Açmak için bir yada daha çok dosya seçin</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="420"/>
+ <location filename="../mainwindow.cpp" line="391"/>
<source>&amp;Play</source>
<translation>&amp;Çal</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="420"/>
+ <location filename="../mainwindow.cpp" line="391"/>
<source>X</source>
<translation>X</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="421"/>
+ <location filename="../mainwindow.cpp" line="392"/>
<source>&amp;Pause</source>
<translation>&amp;Duraklat</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="421"/>
+ <location filename="../mainwindow.cpp" line="392"/>
<source>C</source>
<translation>C</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="422"/>
+ <location filename="../mainwindow.cpp" line="393"/>
<source>&amp;Stop</source>
<translation>&amp;Durdur</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="422"/>
+ <location filename="../mainwindow.cpp" line="393"/>
<source>V</source>
<translation>V</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="423"/>
+ <location filename="../mainwindow.cpp" line="394"/>
<source>&amp;Previous</source>
<translation>&amp;Önceki</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="423"/>
+ <location filename="../mainwindow.cpp" line="394"/>
<source>Z</source>
<translation>Z</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="424"/>
+ <location filename="../mainwindow.cpp" line="395"/>
<source>&amp;Next</source>
<translation>&amp;Sonraki</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="424"/>
+ <location filename="../mainwindow.cpp" line="395"/>
<source>B</source>
<translation>B</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="443"/>
+ <location filename="../mainwindow.cpp" line="414"/>
<source>&amp;Jump To File</source>
<translation>&amp;Parçaya Git</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="443"/>
+ <location filename="../mainwindow.cpp" line="414"/>
<source>J</source>
<translation>J</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="449"/>
+ <location filename="../mainwindow.cpp" line="420"/>
<source>&amp;Settings</source>
<translation>&amp;Ayarlar</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="449"/>
+ <location filename="../mainwindow.cpp" line="420"/>
<source>Ctrl+P</source>
<translation>Ctrl+P</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="455"/>
+ <location filename="../mainwindow.cpp" line="426"/>
<source>&amp;Exit</source>
<translation>&amp;Çıkış</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="455"/>
+ <location filename="../mainwindow.cpp" line="426"/>
<source>Ctrl+Q</source>
<translation>Ctrl+Q</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="497"/>
+ <location filename="../mainwindow.cpp" line="462"/>
<source>Open Playlist</source>
<translation>Çalma Listesini Aç</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="522"/>
+ <location filename="../mainwindow.cpp" line="487"/>
<source>Save Playlist</source>
<translation>Çalma Listesini Kaydet</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="451"/>
+ <location filename="../mainwindow.cpp" line="422"/>
<source>&amp;About</source>
<translation>&amp;Hakkında</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="495"/>
- <location filename="../mainwindow.cpp" line="521"/>
+ <location filename="../mainwindow.cpp" line="460"/>
+ <location filename="../mainwindow.cpp" line="486"/>
<source>Playlist Files</source>
<translation>Çalma Listesi Dosyaları</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="425"/>
+ <location filename="../mainwindow.cpp" line="396"/>
<source>Space</source>
<translation>Boşluk</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="452"/>
+ <location filename="../mainwindow.cpp" line="423"/>
<source>&amp;About Qt</source>
<translation>&amp;Qt Hakkında</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="425"/>
+ <location filename="../mainwindow.cpp" line="396"/>
<source>&amp;Play/Pause</source>
<translation>&amp;Oynat/Duraklat</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="280"/>
+ <location filename="../mainwindow.cpp" line="272"/>
<source>All Supported Bitstreams</source>
<translation>Tüm Desteklenen Bitstreamler</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="428"/>
+ <location filename="../mainwindow.cpp" line="399"/>
<source>&amp;Repeat Track</source>
<translation>&amp;Parçayı Yinele</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="429"/>
+ <location filename="../mainwindow.cpp" line="400"/>
<source>&amp;Shuffle</source>
<translation>&amp;Rastgele</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="433"/>
+ <location filename="../mainwindow.cpp" line="404"/>
<source>R</source>
<translation>R</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="434"/>
+ <location filename="../mainwindow.cpp" line="405"/>
<source>Ctrl+R</source>
<translation>Ctrl+R</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="435"/>
+ <location filename="../mainwindow.cpp" line="406"/>
<source>S</source>
<translation>S</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="427"/>
+ <location filename="../mainwindow.cpp" line="398"/>
<source>&amp;Repeat Playlist</source>
<translation>&amp;Çalma Listesini Yinele</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="447"/>
+ <location filename="../mainwindow.cpp" line="418"/>
<source>Tools</source>
<translation>Araçlar</translation>
</message>
@@ -1026,194 +1020,209 @@
<context>
<name>PlayList</name>
<message>
- <location filename="../playlist.cpp" line="150"/>
+ <location filename="../playlist.cpp" line="165"/>
<source>F</source>
<translation>F</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="156"/>
+ <location filename="../playlist.cpp" line="171"/>
<source>D</source>
<translation>D</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="191"/>
+ <location filename="../playlist.cpp" line="204"/>
<source>Alt+I</source>
<translation>Alt+I</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="299"/>
+ <location filename="../playlist.cpp" line="308"/>
<source>Ctrl+A</source>
<translation>Ctrl+A</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="315"/>
+ <location filename="../playlist.cpp" line="327"/>
<source>O</source>
<translation>O</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="149"/>
+ <location filename="../playlist.cpp" line="164"/>
<source>&amp;Add File</source>
<translation>&amp;Dosya Ekle</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="155"/>
+ <location filename="../playlist.cpp" line="170"/>
<source>&amp;Add Directory</source>
<translation>&amp;Dizin Ekle</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="168"/>
+ <location filename="../playlist.cpp" line="183"/>
<source>&amp;Remove Selected</source>
<translation>&amp;Seçileni Kaldır</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="175"/>
+ <location filename="../playlist.cpp" line="189"/>
<source>&amp;Remove All</source>
<translation>&amp;Hepsini Kaldır</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="181"/>
+ <location filename="../playlist.cpp" line="195"/>
<source>&amp;Remove Unselected</source>
<translation>&amp;Seçilmemişleri Kaldır</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="187"/>
+ <location filename="../playlist.cpp" line="200"/>
<source>Remove unavailable files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../playlist.cpp" line="190"/>
+ <location filename="../playlist.cpp" line="203"/>
<source>&amp;View Track Details</source>
<translation>&amp;Parça Detaylarını Göster</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="199"/>
+ <location filename="../playlist.cpp" line="212"/>
<source>Sort List</source>
<translation>Listeyi Sınıflandır</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="202"/>
- <location filename="../playlist.cpp" line="237"/>
+ <location filename="../playlist.cpp" line="215"/>
+ <location filename="../playlist.cpp" line="249"/>
<source>By Title</source>
<translation>Başlığa Göre</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="206"/>
- <location filename="../playlist.cpp" line="241"/>
+ <location filename="../playlist.cpp" line="219"/>
+ <location filename="../playlist.cpp" line="253"/>
<source>By Album</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../playlist.cpp" line="210"/>
- <location filename="../playlist.cpp" line="245"/>
+ <location filename="../playlist.cpp" line="223"/>
+ <location filename="../playlist.cpp" line="257"/>
<source>By Artist</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../playlist.cpp" line="214"/>
- <location filename="../playlist.cpp" line="249"/>
+ <location filename="../playlist.cpp" line="227"/>
+ <location filename="../playlist.cpp" line="261"/>
<source>By Filename</source>
<translation>Dosya Adına Göre</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="218"/>
- <location filename="../playlist.cpp" line="253"/>
+ <location filename="../playlist.cpp" line="231"/>
+ <location filename="../playlist.cpp" line="265"/>
<source>By Path + Filename</source>
<translation>Dosya Yolu + Dosya Adına Göre</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="222"/>
- <location filename="../playlist.cpp" line="257"/>
+ <location filename="../playlist.cpp" line="235"/>
+ <location filename="../playlist.cpp" line="269"/>
<source>By Date</source>
<translation>Tarihe Göre</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="235"/>
+ <location filename="../playlist.cpp" line="247"/>
<source>Sort Selection</source>
<translation>Seçilenleri Sınıflandır</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="271"/>
+ <location filename="../playlist.cpp" line="282"/>
<source>Randomize List</source>
<translation>Rastgele Listele</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="272"/>
+ <location filename="../playlist.cpp" line="283"/>
<source>Reverse List</source>
<translation>Listeyi Ters Çevir</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="284"/>
+ <location filename="../playlist.cpp" line="295"/>
<source>Invert Selection</source>
<translation>Seçimi Tersine Çevir</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="291"/>
+ <location filename="../playlist.cpp" line="301"/>
<source>&amp;Select None</source>
<translation>&amp;Hiçbirini Seçme</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="298"/>
+ <location filename="../playlist.cpp" line="302"/>
+ <source>Shift+A</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="307"/>
<source>&amp;Select All</source>
<translation>&amp;Tümünü Seç</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="307"/>
+ <location filename="../playlist.cpp" line="314"/>
<source>&amp;New List</source>
<translation>&amp;Yeni Liste</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="308"/>
+ <location filename="../playlist.cpp" line="315"/>
<source>Shift+N</source>
<translation>Shift+N</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="314"/>
+ <location filename="../playlist.cpp" line="319"/>
+ <source>&amp;Delete List</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="320"/>
+ <source>Shift+D</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="326"/>
<source>&amp;Load List</source>
<translation>&amp;Liste Yükle</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="320"/>
+ <location filename="../playlist.cpp" line="332"/>
<source>&amp;Save List</source>
<translation>&amp;Listeyi Kaydet</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="321"/>
+ <location filename="../playlist.cpp" line="333"/>
<source>Shift+S</source>
<translation>Shift+S</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="169"/>
+ <location filename="../playlist.cpp" line="184"/>
<source>Del</source>
<translation>Del</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="161"/>
+ <location filename="../playlist.cpp" line="176"/>
<source>&amp;Add Url</source>
<translation>&amp;Url Ekle</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="162"/>
+ <location filename="../playlist.cpp" line="177"/>
<source>U</source>
<translation>U</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="226"/>
- <location filename="../playlist.cpp" line="261"/>
+ <location filename="../playlist.cpp" line="239"/>
+ <location filename="../playlist.cpp" line="273"/>
<source>By Track Number</source>
<translation>Parça Numarasına Göre</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="280"/>
+ <location filename="../playlist.cpp" line="291"/>
<source>&amp;Queue</source>
<translation>&amp;Kuyruğa ekle</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="280"/>
+ <location filename="../playlist.cpp" line="291"/>
<source>Q</source>
<translation>Q</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="277"/>
+ <location filename="../playlist.cpp" line="288"/>
<source>Actions</source>
<translation>Eylemler</translation>
</message>
diff --git a/src/ui/translations/qmmp_uk_UA.ts b/src/ui/translations/qmmp_uk_UA.ts
index 395908d87..fbc46944e 100644
--- a/src/ui/translations/qmmp_uk_UA.ts
+++ b/src/ui/translations/qmmp_uk_UA.ts
@@ -615,14 +615,14 @@
<name>JumpToTrackDialog</name>
<message>
<location filename="../jumptotrackdialog.cpp" line="81"/>
- <location filename="../jumptotrackdialog.cpp" line="137"/>
+ <location filename="../jumptotrackdialog.cpp" line="132"/>
<source>Unqueue</source>
<translation>Зняти з черги</translation>
</message>
<message>
<location filename="../forms/jumptotrackdialog.ui" line="79"/>
<location filename="../jumptotrackdialog.cpp" line="83"/>
- <location filename="../jumptotrackdialog.cpp" line="139"/>
+ <location filename="../jumptotrackdialog.cpp" line="134"/>
<source>Queue</source>
<translation>В чергу</translation>
</message>
@@ -851,174 +851,168 @@
<context>
<name>MainWindow</name>
<message>
- <location filename="../mainwindow.cpp" line="64"/>
- <location filename="../mainwindow.cpp" line="483"/>
- <source>Default</source>
- <translation>За умовчанням</translation>
- </message>
- <message>
- <location filename="../mainwindow.cpp" line="274"/>
+ <location filename="../mainwindow.cpp" line="266"/>
<source>Choose a directory</source>
<translation>Виберіть теку</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="285"/>
+ <location filename="../mainwindow.cpp" line="277"/>
<source>Select one or more files to open</source>
<translation>Виберіть один чи кілька файлів</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="420"/>
+ <location filename="../mainwindow.cpp" line="391"/>
<source>&amp;Play</source>
<translation>&amp;Відтворити</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="420"/>
+ <location filename="../mainwindow.cpp" line="391"/>
<source>X</source>
<translation></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="421"/>
+ <location filename="../mainwindow.cpp" line="392"/>
<source>&amp;Pause</source>
<translation>&amp;Пауза</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="421"/>
+ <location filename="../mainwindow.cpp" line="392"/>
<source>C</source>
<translation></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="422"/>
+ <location filename="../mainwindow.cpp" line="393"/>
<source>&amp;Stop</source>
<translation>&amp;Стоп</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="422"/>
+ <location filename="../mainwindow.cpp" line="393"/>
<source>V</source>
<translation></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="423"/>
+ <location filename="../mainwindow.cpp" line="394"/>
<source>&amp;Previous</source>
<translation>&amp;Назад</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="423"/>
+ <location filename="../mainwindow.cpp" line="394"/>
<source>Z</source>
<translation></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="424"/>
+ <location filename="../mainwindow.cpp" line="395"/>
<source>&amp;Next</source>
<translation>&amp;Вперед</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="424"/>
+ <location filename="../mainwindow.cpp" line="395"/>
<source>B</source>
<translation></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="443"/>
+ <location filename="../mainwindow.cpp" line="414"/>
<source>&amp;Jump To File</source>
<translation>&amp;Перейти до файлу</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="443"/>
+ <location filename="../mainwindow.cpp" line="414"/>
<source>J</source>
<translation></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="449"/>
+ <location filename="../mainwindow.cpp" line="420"/>
<source>&amp;Settings</source>
<translation>&amp;Налаштування</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="449"/>
+ <location filename="../mainwindow.cpp" line="420"/>
<source>Ctrl+P</source>
<translation></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="455"/>
+ <location filename="../mainwindow.cpp" line="426"/>
<source>&amp;Exit</source>
<translation>&amp;Вихід</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="455"/>
+ <location filename="../mainwindow.cpp" line="426"/>
<source>Ctrl+Q</source>
<translation></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="497"/>
+ <location filename="../mainwindow.cpp" line="462"/>
<source>Open Playlist</source>
<translation>Відкрити список</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="522"/>
+ <location filename="../mainwindow.cpp" line="487"/>
<source>Save Playlist</source>
<translation>Зберегти список</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="451"/>
+ <location filename="../mainwindow.cpp" line="422"/>
<source>&amp;About</source>
<translation>&amp;Про програму</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="495"/>
- <location filename="../mainwindow.cpp" line="521"/>
+ <location filename="../mainwindow.cpp" line="460"/>
+ <location filename="../mainwindow.cpp" line="486"/>
<source>Playlist Files</source>
<translation>Файли списків</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="425"/>
+ <location filename="../mainwindow.cpp" line="396"/>
<source>Space</source>
<translation></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="452"/>
+ <location filename="../mainwindow.cpp" line="423"/>
<source>&amp;About Qt</source>
<translation>&amp;Про Qt</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="425"/>
+ <location filename="../mainwindow.cpp" line="396"/>
<source>&amp;Play/Pause</source>
<translation>&amp;Грати/Пауза</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="280"/>
+ <location filename="../mainwindow.cpp" line="272"/>
<source>All Supported Bitstreams</source>
<translation>Усі формати</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="428"/>
+ <location filename="../mainwindow.cpp" line="399"/>
<source>&amp;Repeat Track</source>
<translation>&amp;Повторити трек</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="429"/>
+ <location filename="../mainwindow.cpp" line="400"/>
<source>&amp;Shuffle</source>
<translation>&amp;Перемішати</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="433"/>
+ <location filename="../mainwindow.cpp" line="404"/>
<source>R</source>
<translation></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="434"/>
+ <location filename="../mainwindow.cpp" line="405"/>
<source>Ctrl+R</source>
<translation></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="435"/>
+ <location filename="../mainwindow.cpp" line="406"/>
<source>S</source>
<translation></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="427"/>
+ <location filename="../mainwindow.cpp" line="398"/>
<source>&amp;Repeat Playlist</source>
<translation>&amp;Повторити список</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="447"/>
+ <location filename="../mainwindow.cpp" line="418"/>
<source>Tools</source>
<translation>Утиліти</translation>
</message>
@@ -1026,194 +1020,209 @@
<context>
<name>PlayList</name>
<message>
- <location filename="../playlist.cpp" line="150"/>
+ <location filename="../playlist.cpp" line="165"/>
<source>F</source>
<translation></translation>
</message>
<message>
- <location filename="../playlist.cpp" line="156"/>
+ <location filename="../playlist.cpp" line="171"/>
<source>D</source>
<translation></translation>
</message>
<message>
- <location filename="../playlist.cpp" line="191"/>
+ <location filename="../playlist.cpp" line="204"/>
<source>Alt+I</source>
<translation></translation>
</message>
<message>
- <location filename="../playlist.cpp" line="299"/>
+ <location filename="../playlist.cpp" line="308"/>
<source>Ctrl+A</source>
<translation></translation>
</message>
<message>
- <location filename="../playlist.cpp" line="315"/>
+ <location filename="../playlist.cpp" line="327"/>
<source>O</source>
<translation></translation>
</message>
<message>
- <location filename="../playlist.cpp" line="149"/>
+ <location filename="../playlist.cpp" line="164"/>
<source>&amp;Add File</source>
<translation>&amp;Додати файл</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="155"/>
+ <location filename="../playlist.cpp" line="170"/>
<source>&amp;Add Directory</source>
<translation>&amp;Додати теку</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="168"/>
+ <location filename="../playlist.cpp" line="183"/>
<source>&amp;Remove Selected</source>
<translation>&amp;Видалити вибране</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="175"/>
+ <location filename="../playlist.cpp" line="189"/>
<source>&amp;Remove All</source>
<translation>&amp;Видалити все</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="181"/>
+ <location filename="../playlist.cpp" line="195"/>
<source>&amp;Remove Unselected</source>
<translation>&amp;Видалити не вибране</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="187"/>
+ <location filename="../playlist.cpp" line="200"/>
<source>Remove unavailable files</source>
<translation>Видалити недоступні файли</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="190"/>
+ <location filename="../playlist.cpp" line="203"/>
<source>&amp;View Track Details</source>
<translation>&amp;Інформація</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="199"/>
+ <location filename="../playlist.cpp" line="212"/>
<source>Sort List</source>
<translation>Сортувати</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="202"/>
- <location filename="../playlist.cpp" line="237"/>
+ <location filename="../playlist.cpp" line="215"/>
+ <location filename="../playlist.cpp" line="249"/>
<source>By Title</source>
<translation>За назвою</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="206"/>
- <location filename="../playlist.cpp" line="241"/>
+ <location filename="../playlist.cpp" line="219"/>
+ <location filename="../playlist.cpp" line="253"/>
<source>By Album</source>
<translation>За альбомом</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="210"/>
- <location filename="../playlist.cpp" line="245"/>
+ <location filename="../playlist.cpp" line="223"/>
+ <location filename="../playlist.cpp" line="257"/>
<source>By Artist</source>
<translation>За артистом</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="214"/>
- <location filename="../playlist.cpp" line="249"/>
+ <location filename="../playlist.cpp" line="227"/>
+ <location filename="../playlist.cpp" line="261"/>
<source>By Filename</source>
<translation>За ім&apos;ям файлу</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="218"/>
- <location filename="../playlist.cpp" line="253"/>
+ <location filename="../playlist.cpp" line="231"/>
+ <location filename="../playlist.cpp" line="265"/>
<source>By Path + Filename</source>
<translation>За шляхом та файлом</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="222"/>
- <location filename="../playlist.cpp" line="257"/>
+ <location filename="../playlist.cpp" line="235"/>
+ <location filename="../playlist.cpp" line="269"/>
<source>By Date</source>
<translation>За датою</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="235"/>
+ <location filename="../playlist.cpp" line="247"/>
<source>Sort Selection</source>
<translation>Сортувати вибране</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="271"/>
+ <location filename="../playlist.cpp" line="282"/>
<source>Randomize List</source>
<translation>Перемішати</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="272"/>
+ <location filename="../playlist.cpp" line="283"/>
<source>Reverse List</source>
<translation>Перевернути</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="284"/>
+ <location filename="../playlist.cpp" line="295"/>
<source>Invert Selection</source>
<translation>Інвертувати вибране</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="291"/>
+ <location filename="../playlist.cpp" line="301"/>
<source>&amp;Select None</source>
<translation>&amp;Зняти виділення</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="298"/>
+ <location filename="../playlist.cpp" line="302"/>
+ <source>Shift+A</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="307"/>
<source>&amp;Select All</source>
<translation>&amp;Вибрати все</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="307"/>
+ <location filename="../playlist.cpp" line="314"/>
<source>&amp;New List</source>
<translation>&amp;Новий список</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="308"/>
+ <location filename="../playlist.cpp" line="315"/>
<source>Shift+N</source>
<translation></translation>
</message>
<message>
- <location filename="../playlist.cpp" line="314"/>
+ <location filename="../playlist.cpp" line="319"/>
+ <source>&amp;Delete List</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="320"/>
+ <source>Shift+D</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="326"/>
<source>&amp;Load List</source>
<translation>&amp;Завантажити список</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="320"/>
+ <location filename="../playlist.cpp" line="332"/>
<source>&amp;Save List</source>
<translation>&amp;Зберегти список</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="321"/>
+ <location filename="../playlist.cpp" line="333"/>
<source>Shift+S</source>
<translation></translation>
</message>
<message>
- <location filename="../playlist.cpp" line="169"/>
+ <location filename="../playlist.cpp" line="184"/>
<source>Del</source>
<translation></translation>
</message>
<message>
- <location filename="../playlist.cpp" line="161"/>
+ <location filename="../playlist.cpp" line="176"/>
<source>&amp;Add Url</source>
<translation>&amp;Додати адресу</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="162"/>
+ <location filename="../playlist.cpp" line="177"/>
<source>U</source>
<translation></translation>
</message>
<message>
- <location filename="../playlist.cpp" line="226"/>
- <location filename="../playlist.cpp" line="261"/>
+ <location filename="../playlist.cpp" line="239"/>
+ <location filename="../playlist.cpp" line="273"/>
<source>By Track Number</source>
<translation></translation>
</message>
<message>
- <location filename="../playlist.cpp" line="280"/>
+ <location filename="../playlist.cpp" line="291"/>
<source>&amp;Queue</source>
<translation>&amp;В чергу</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="280"/>
+ <location filename="../playlist.cpp" line="291"/>
<source>Q</source>
<translation></translation>
</message>
<message>
- <location filename="../playlist.cpp" line="277"/>
+ <location filename="../playlist.cpp" line="288"/>
<source>Actions</source>
<translation>Дії</translation>
</message>
diff --git a/src/ui/translations/qmmp_zh_CN.ts b/src/ui/translations/qmmp_zh_CN.ts
index 370b6a017..44fd0082a 100644
--- a/src/ui/translations/qmmp_zh_CN.ts
+++ b/src/ui/translations/qmmp_zh_CN.ts
@@ -615,14 +615,14 @@
<name>JumpToTrackDialog</name>
<message>
<location filename="../jumptotrackdialog.cpp" line="81"/>
- <location filename="../jumptotrackdialog.cpp" line="137"/>
+ <location filename="../jumptotrackdialog.cpp" line="132"/>
<source>Unqueue</source>
<translation>移出队列</translation>
</message>
<message>
<location filename="../forms/jumptotrackdialog.ui" line="79"/>
<location filename="../jumptotrackdialog.cpp" line="83"/>
- <location filename="../jumptotrackdialog.cpp" line="139"/>
+ <location filename="../jumptotrackdialog.cpp" line="134"/>
<source>Queue</source>
<translation>加入队列</translation>
</message>
@@ -851,174 +851,168 @@
<context>
<name>MainWindow</name>
<message>
- <location filename="../mainwindow.cpp" line="64"/>
- <location filename="../mainwindow.cpp" line="483"/>
- <source>Default</source>
- <translation>默认</translation>
- </message>
- <message>
- <location filename="../mainwindow.cpp" line="274"/>
+ <location filename="../mainwindow.cpp" line="266"/>
<source>Choose a directory</source>
<translation>选择一个目录</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="285"/>
+ <location filename="../mainwindow.cpp" line="277"/>
<source>Select one or more files to open</source>
<translation>选择打开一个或更多文件</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="420"/>
+ <location filename="../mainwindow.cpp" line="391"/>
<source>&amp;Play</source>
<translation>播放(&amp;P)</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="420"/>
+ <location filename="../mainwindow.cpp" line="391"/>
<source>X</source>
<translation>X</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="421"/>
+ <location filename="../mainwindow.cpp" line="392"/>
<source>&amp;Pause</source>
<translation>暂停(&amp;P)</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="421"/>
+ <location filename="../mainwindow.cpp" line="392"/>
<source>C</source>
<translation>C</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="422"/>
+ <location filename="../mainwindow.cpp" line="393"/>
<source>&amp;Stop</source>
<translation>停止(&amp;S)</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="422"/>
+ <location filename="../mainwindow.cpp" line="393"/>
<source>V</source>
<translation>V</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="423"/>
+ <location filename="../mainwindow.cpp" line="394"/>
<source>&amp;Previous</source>
<translation>上一曲(&amp;P)</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="423"/>
+ <location filename="../mainwindow.cpp" line="394"/>
<source>Z</source>
<translation>Z</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="424"/>
+ <location filename="../mainwindow.cpp" line="395"/>
<source>&amp;Next</source>
<translation>下一曲(&amp;N)</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="424"/>
+ <location filename="../mainwindow.cpp" line="395"/>
<source>B</source>
<translation>B</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="443"/>
+ <location filename="../mainwindow.cpp" line="414"/>
<source>&amp;Jump To File</source>
<translation>跳到文件(&amp;J)</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="443"/>
+ <location filename="../mainwindow.cpp" line="414"/>
<source>J</source>
<translation>J</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="449"/>
+ <location filename="../mainwindow.cpp" line="420"/>
<source>&amp;Settings</source>
<translation>设置(&amp;S)</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="449"/>
+ <location filename="../mainwindow.cpp" line="420"/>
<source>Ctrl+P</source>
<translation>Ctrl+P</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="455"/>
+ <location filename="../mainwindow.cpp" line="426"/>
<source>&amp;Exit</source>
<translation>退出(&amp;E)</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="455"/>
+ <location filename="../mainwindow.cpp" line="426"/>
<source>Ctrl+Q</source>
<translation>Ctrl+Q</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="497"/>
+ <location filename="../mainwindow.cpp" line="462"/>
<source>Open Playlist</source>
<translation>打开播放列表</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="522"/>
+ <location filename="../mainwindow.cpp" line="487"/>
<source>Save Playlist</source>
<translation>保存播放列表</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="451"/>
+ <location filename="../mainwindow.cpp" line="422"/>
<source>&amp;About</source>
<translation>关于(&amp;A)</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="495"/>
- <location filename="../mainwindow.cpp" line="521"/>
+ <location filename="../mainwindow.cpp" line="460"/>
+ <location filename="../mainwindow.cpp" line="486"/>
<source>Playlist Files</source>
<translation>播放列表文件</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="425"/>
+ <location filename="../mainwindow.cpp" line="396"/>
<source>Space</source>
<translation>空格</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="452"/>
+ <location filename="../mainwindow.cpp" line="423"/>
<source>&amp;About Qt</source>
<translation>关于 Qt (&amp;A)</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="425"/>
+ <location filename="../mainwindow.cpp" line="396"/>
<source>&amp;Play/Pause</source>
<translation>播放/暂停(&amp;P)</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="280"/>
+ <location filename="../mainwindow.cpp" line="272"/>
<source>All Supported Bitstreams</source>
<translation>支持的全部文件</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="428"/>
+ <location filename="../mainwindow.cpp" line="399"/>
<source>&amp;Repeat Track</source>
<translation>重复音轨(&amp;R)</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="429"/>
+ <location filename="../mainwindow.cpp" line="400"/>
<source>&amp;Shuffle</source>
<translation>乱序(&amp;S)</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="433"/>
+ <location filename="../mainwindow.cpp" line="404"/>
<source>R</source>
<translation>R</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="434"/>
+ <location filename="../mainwindow.cpp" line="405"/>
<source>Ctrl+R</source>
<translation>Ctrl+R</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="435"/>
+ <location filename="../mainwindow.cpp" line="406"/>
<source>S</source>
<translation>S</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="427"/>
+ <location filename="../mainwindow.cpp" line="398"/>
<source>&amp;Repeat Playlist</source>
<translation>重复播放列表(&amp;R)</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="447"/>
+ <location filename="../mainwindow.cpp" line="418"/>
<source>Tools</source>
<translation>工具</translation>
</message>
@@ -1026,194 +1020,209 @@
<context>
<name>PlayList</name>
<message>
- <location filename="../playlist.cpp" line="150"/>
+ <location filename="../playlist.cpp" line="165"/>
<source>F</source>
<translation>F</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="156"/>
+ <location filename="../playlist.cpp" line="171"/>
<source>D</source>
<translation>D</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="191"/>
+ <location filename="../playlist.cpp" line="204"/>
<source>Alt+I</source>
<translation>Alt+I</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="299"/>
+ <location filename="../playlist.cpp" line="308"/>
<source>Ctrl+A</source>
<translation>Ctrl+A</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="315"/>
+ <location filename="../playlist.cpp" line="327"/>
<source>O</source>
<translation>O</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="149"/>
+ <location filename="../playlist.cpp" line="164"/>
<source>&amp;Add File</source>
<translation>添加文件(&amp;A)</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="155"/>
+ <location filename="../playlist.cpp" line="170"/>
<source>&amp;Add Directory</source>
<translation>添加文件夹(&amp;A)</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="168"/>
+ <location filename="../playlist.cpp" line="183"/>
<source>&amp;Remove Selected</source>
<translation>删除所选(&amp;R)</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="175"/>
+ <location filename="../playlist.cpp" line="189"/>
<source>&amp;Remove All</source>
<translation>删除全部(&amp;R)</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="181"/>
+ <location filename="../playlist.cpp" line="195"/>
<source>&amp;Remove Unselected</source>
<translation>删除未选(&amp;R)</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="187"/>
+ <location filename="../playlist.cpp" line="200"/>
<source>Remove unavailable files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../playlist.cpp" line="190"/>
+ <location filename="../playlist.cpp" line="203"/>
<source>&amp;View Track Details</source>
<translation>查看音轨详细信息(&amp;V)</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="199"/>
+ <location filename="../playlist.cpp" line="212"/>
<source>Sort List</source>
<translation>列表排序</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="202"/>
- <location filename="../playlist.cpp" line="237"/>
+ <location filename="../playlist.cpp" line="215"/>
+ <location filename="../playlist.cpp" line="249"/>
<source>By Title</source>
<translation>按标题</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="206"/>
- <location filename="../playlist.cpp" line="241"/>
+ <location filename="../playlist.cpp" line="219"/>
+ <location filename="../playlist.cpp" line="253"/>
<source>By Album</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../playlist.cpp" line="210"/>
- <location filename="../playlist.cpp" line="245"/>
+ <location filename="../playlist.cpp" line="223"/>
+ <location filename="../playlist.cpp" line="257"/>
<source>By Artist</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../playlist.cpp" line="214"/>
- <location filename="../playlist.cpp" line="249"/>
+ <location filename="../playlist.cpp" line="227"/>
+ <location filename="../playlist.cpp" line="261"/>
<source>By Filename</source>
<translation>按文件名</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="218"/>
- <location filename="../playlist.cpp" line="253"/>
+ <location filename="../playlist.cpp" line="231"/>
+ <location filename="../playlist.cpp" line="265"/>
<source>By Path + Filename</source>
<translation>按路径+文件名</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="222"/>
- <location filename="../playlist.cpp" line="257"/>
+ <location filename="../playlist.cpp" line="235"/>
+ <location filename="../playlist.cpp" line="269"/>
<source>By Date</source>
<translation>按日期</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="235"/>
+ <location filename="../playlist.cpp" line="247"/>
<source>Sort Selection</source>
<translation>选择排序</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="271"/>
+ <location filename="../playlist.cpp" line="282"/>
<source>Randomize List</source>
<translation>随机产生列表</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="272"/>
+ <location filename="../playlist.cpp" line="283"/>
<source>Reverse List</source>
<translation>逆序列表</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="284"/>
+ <location filename="../playlist.cpp" line="295"/>
<source>Invert Selection</source>
<translation>反选</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="291"/>
+ <location filename="../playlist.cpp" line="301"/>
<source>&amp;Select None</source>
<translation>无选择(&amp;S)</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="298"/>
+ <location filename="../playlist.cpp" line="302"/>
+ <source>Shift+A</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="307"/>
<source>&amp;Select All</source>
<translation>选择全部(&amp;S)</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="307"/>
+ <location filename="../playlist.cpp" line="314"/>
<source>&amp;New List</source>
<translation>新建列表(&amp;N)</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="308"/>
+ <location filename="../playlist.cpp" line="315"/>
<source>Shift+N</source>
<translation>Shift+N</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="314"/>
+ <location filename="../playlist.cpp" line="319"/>
+ <source>&amp;Delete List</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="320"/>
+ <source>Shift+D</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="326"/>
<source>&amp;Load List</source>
<translation>载入列表(&amp;L)</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="320"/>
+ <location filename="../playlist.cpp" line="332"/>
<source>&amp;Save List</source>
<translation>保存列表(&amp;S)</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="321"/>
+ <location filename="../playlist.cpp" line="333"/>
<source>Shift+S</source>
<translation>Shift+S</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="169"/>
+ <location filename="../playlist.cpp" line="184"/>
<source>Del</source>
<translation>Del</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="161"/>
+ <location filename="../playlist.cpp" line="176"/>
<source>&amp;Add Url</source>
<translation>添加 URL (&amp;A)</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="162"/>
+ <location filename="../playlist.cpp" line="177"/>
<source>U</source>
<translation>U</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="226"/>
- <location filename="../playlist.cpp" line="261"/>
+ <location filename="../playlist.cpp" line="239"/>
+ <location filename="../playlist.cpp" line="273"/>
<source>By Track Number</source>
<translation>按音轨</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="280"/>
+ <location filename="../playlist.cpp" line="291"/>
<source>&amp;Queue</source>
<translation>队列(&amp;Q)</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="280"/>
+ <location filename="../playlist.cpp" line="291"/>
<source>Q</source>
<translation>Q</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="277"/>
+ <location filename="../playlist.cpp" line="288"/>
<source>Actions</source>
<translation>动作</translation>
</message>
diff --git a/src/ui/translations/qmmp_zh_TW.ts b/src/ui/translations/qmmp_zh_TW.ts
index 9ea1a9df2..89a1e7abd 100644
--- a/src/ui/translations/qmmp_zh_TW.ts
+++ b/src/ui/translations/qmmp_zh_TW.ts
@@ -615,14 +615,14 @@
<name>JumpToTrackDialog</name>
<message>
<location filename="../jumptotrackdialog.cpp" line="81"/>
- <location filename="../jumptotrackdialog.cpp" line="137"/>
+ <location filename="../jumptotrackdialog.cpp" line="132"/>
<source>Unqueue</source>
<translation>移出佇列</translation>
</message>
<message>
<location filename="../forms/jumptotrackdialog.ui" line="79"/>
<location filename="../jumptotrackdialog.cpp" line="83"/>
- <location filename="../jumptotrackdialog.cpp" line="139"/>
+ <location filename="../jumptotrackdialog.cpp" line="134"/>
<source>Queue</source>
<translation>加入佇列</translation>
</message>
@@ -851,174 +851,168 @@
<context>
<name>MainWindow</name>
<message>
- <location filename="../mainwindow.cpp" line="64"/>
- <location filename="../mainwindow.cpp" line="483"/>
- <source>Default</source>
- <translation>預設</translation>
- </message>
- <message>
- <location filename="../mainwindow.cpp" line="274"/>
+ <location filename="../mainwindow.cpp" line="266"/>
<source>Choose a directory</source>
<translation>選取一個目錄</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="285"/>
+ <location filename="../mainwindow.cpp" line="277"/>
<source>Select one or more files to open</source>
<translation>選取開啟一個或更多檔案</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="420"/>
+ <location filename="../mainwindow.cpp" line="391"/>
<source>&amp;Play</source>
<translation>播放(&amp;P)</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="420"/>
+ <location filename="../mainwindow.cpp" line="391"/>
<source>X</source>
<translation>X</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="421"/>
+ <location filename="../mainwindow.cpp" line="392"/>
<source>&amp;Pause</source>
<translation>暫停(&amp;P)</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="421"/>
+ <location filename="../mainwindow.cpp" line="392"/>
<source>C</source>
<translation>C</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="422"/>
+ <location filename="../mainwindow.cpp" line="393"/>
<source>&amp;Stop</source>
<translation>停止(&amp;S)</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="422"/>
+ <location filename="../mainwindow.cpp" line="393"/>
<source>V</source>
<translation>V</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="423"/>
+ <location filename="../mainwindow.cpp" line="394"/>
<source>&amp;Previous</source>
<translation>上一曲(&amp;P)</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="423"/>
+ <location filename="../mainwindow.cpp" line="394"/>
<source>Z</source>
<translation>Z</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="424"/>
+ <location filename="../mainwindow.cpp" line="395"/>
<source>&amp;Next</source>
<translation>下一曲(&amp;N)</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="424"/>
+ <location filename="../mainwindow.cpp" line="395"/>
<source>B</source>
<translation>B</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="443"/>
+ <location filename="../mainwindow.cpp" line="414"/>
<source>&amp;Jump To File</source>
<translation>跳到檔案(&amp;J)</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="443"/>
+ <location filename="../mainwindow.cpp" line="414"/>
<source>J</source>
<translation>J</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="449"/>
+ <location filename="../mainwindow.cpp" line="420"/>
<source>&amp;Settings</source>
<translation>設定(&amp;S)</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="449"/>
+ <location filename="../mainwindow.cpp" line="420"/>
<source>Ctrl+P</source>
<translation>Ctrl+P</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="455"/>
+ <location filename="../mainwindow.cpp" line="426"/>
<source>&amp;Exit</source>
<translation>結束(&amp;E)</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="455"/>
+ <location filename="../mainwindow.cpp" line="426"/>
<source>Ctrl+Q</source>
<translation>Ctrl+Q</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="497"/>
+ <location filename="../mainwindow.cpp" line="462"/>
<source>Open Playlist</source>
<translation>開啟播放清單</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="522"/>
+ <location filename="../mainwindow.cpp" line="487"/>
<source>Save Playlist</source>
<translation>儲存播放清單</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="451"/>
+ <location filename="../mainwindow.cpp" line="422"/>
<source>&amp;About</source>
<translation>關於(&amp;A)</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="495"/>
- <location filename="../mainwindow.cpp" line="521"/>
+ <location filename="../mainwindow.cpp" line="460"/>
+ <location filename="../mainwindow.cpp" line="486"/>
<source>Playlist Files</source>
<translation>播放清單檔案</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="425"/>
+ <location filename="../mainwindow.cpp" line="396"/>
<source>Space</source>
<translation>空格</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="452"/>
+ <location filename="../mainwindow.cpp" line="423"/>
<source>&amp;About Qt</source>
<translation>關於 Qt (&amp;A)</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="425"/>
+ <location filename="../mainwindow.cpp" line="396"/>
<source>&amp;Play/Pause</source>
<translation>播放/暫停(&amp;P)</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="280"/>
+ <location filename="../mainwindow.cpp" line="272"/>
<source>All Supported Bitstreams</source>
<translation>支援的全部檔案</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="428"/>
+ <location filename="../mainwindow.cpp" line="399"/>
<source>&amp;Repeat Track</source>
<translation>重復音軌(&amp;R)</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="429"/>
+ <location filename="../mainwindow.cpp" line="400"/>
<source>&amp;Shuffle</source>
<translation>亂序(&amp;S)</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="433"/>
+ <location filename="../mainwindow.cpp" line="404"/>
<source>R</source>
<translation>R</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="434"/>
+ <location filename="../mainwindow.cpp" line="405"/>
<source>Ctrl+R</source>
<translation>Ctrl+R</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="435"/>
+ <location filename="../mainwindow.cpp" line="406"/>
<source>S</source>
<translation>S</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="427"/>
+ <location filename="../mainwindow.cpp" line="398"/>
<source>&amp;Repeat Playlist</source>
<translation>重復播放清單(&amp;R)</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="447"/>
+ <location filename="../mainwindow.cpp" line="418"/>
<source>Tools</source>
<translation>工具</translation>
</message>
@@ -1026,194 +1020,209 @@
<context>
<name>PlayList</name>
<message>
- <location filename="../playlist.cpp" line="150"/>
+ <location filename="../playlist.cpp" line="165"/>
<source>F</source>
<translation>F</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="156"/>
+ <location filename="../playlist.cpp" line="171"/>
<source>D</source>
<translation>D</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="191"/>
+ <location filename="../playlist.cpp" line="204"/>
<source>Alt+I</source>
<translation>Alt+I</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="299"/>
+ <location filename="../playlist.cpp" line="308"/>
<source>Ctrl+A</source>
<translation>Ctrl+A</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="315"/>
+ <location filename="../playlist.cpp" line="327"/>
<source>O</source>
<translation>O</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="149"/>
+ <location filename="../playlist.cpp" line="164"/>
<source>&amp;Add File</source>
<translation>添加檔案(&amp;A)</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="155"/>
+ <location filename="../playlist.cpp" line="170"/>
<source>&amp;Add Directory</source>
<translation>添加檔案夾(&amp;A)</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="168"/>
+ <location filename="../playlist.cpp" line="183"/>
<source>&amp;Remove Selected</source>
<translation>移除所選(&amp;R)</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="175"/>
+ <location filename="../playlist.cpp" line="189"/>
<source>&amp;Remove All</source>
<translation>移除全部(&amp;R)</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="181"/>
+ <location filename="../playlist.cpp" line="195"/>
<source>&amp;Remove Unselected</source>
<translation>移除未選(&amp;R)</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="187"/>
+ <location filename="../playlist.cpp" line="200"/>
<source>Remove unavailable files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../playlist.cpp" line="190"/>
+ <location filename="../playlist.cpp" line="203"/>
<source>&amp;View Track Details</source>
<translation>檢視音軌詳細資訊(&amp;V)</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="199"/>
+ <location filename="../playlist.cpp" line="212"/>
<source>Sort List</source>
<translation>清單排序</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="202"/>
- <location filename="../playlist.cpp" line="237"/>
+ <location filename="../playlist.cpp" line="215"/>
+ <location filename="../playlist.cpp" line="249"/>
<source>By Title</source>
<translation>按標題</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="206"/>
- <location filename="../playlist.cpp" line="241"/>
+ <location filename="../playlist.cpp" line="219"/>
+ <location filename="../playlist.cpp" line="253"/>
<source>By Album</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../playlist.cpp" line="210"/>
- <location filename="../playlist.cpp" line="245"/>
+ <location filename="../playlist.cpp" line="223"/>
+ <location filename="../playlist.cpp" line="257"/>
<source>By Artist</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../playlist.cpp" line="214"/>
- <location filename="../playlist.cpp" line="249"/>
+ <location filename="../playlist.cpp" line="227"/>
+ <location filename="../playlist.cpp" line="261"/>
<source>By Filename</source>
<translation>按檔名</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="218"/>
- <location filename="../playlist.cpp" line="253"/>
+ <location filename="../playlist.cpp" line="231"/>
+ <location filename="../playlist.cpp" line="265"/>
<source>By Path + Filename</source>
<translation>按路徑+檔名</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="222"/>
- <location filename="../playlist.cpp" line="257"/>
+ <location filename="../playlist.cpp" line="235"/>
+ <location filename="../playlist.cpp" line="269"/>
<source>By Date</source>
<translation>按日期</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="235"/>
+ <location filename="../playlist.cpp" line="247"/>
<source>Sort Selection</source>
<translation>選取排序</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="271"/>
+ <location filename="../playlist.cpp" line="282"/>
<source>Randomize List</source>
<translation>隨機產生清單</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="272"/>
+ <location filename="../playlist.cpp" line="283"/>
<source>Reverse List</source>
<translation>逆串列表</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="284"/>
+ <location filename="../playlist.cpp" line="295"/>
<source>Invert Selection</source>
<translation>反選</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="291"/>
+ <location filename="../playlist.cpp" line="301"/>
<source>&amp;Select None</source>
<translation>無選取(&amp;S)</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="298"/>
+ <location filename="../playlist.cpp" line="302"/>
+ <source>Shift+A</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="307"/>
<source>&amp;Select All</source>
<translation>選取全部(&amp;S)</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="307"/>
+ <location filename="../playlist.cpp" line="314"/>
<source>&amp;New List</source>
<translation>新建清單(&amp;N)</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="308"/>
+ <location filename="../playlist.cpp" line="315"/>
<source>Shift+N</source>
<translation>Shift+N</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="314"/>
+ <location filename="../playlist.cpp" line="319"/>
+ <source>&amp;Delete List</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="320"/>
+ <source>Shift+D</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../playlist.cpp" line="326"/>
<source>&amp;Load List</source>
<translation>載入清單(&amp;L)</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="320"/>
+ <location filename="../playlist.cpp" line="332"/>
<source>&amp;Save List</source>
<translation>儲存清單(&amp;S)</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="321"/>
+ <location filename="../playlist.cpp" line="333"/>
<source>Shift+S</source>
<translation>Shift+S</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="169"/>
+ <location filename="../playlist.cpp" line="184"/>
<source>Del</source>
<translation>Del</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="161"/>
+ <location filename="../playlist.cpp" line="176"/>
<source>&amp;Add Url</source>
<translation>添加 URL (&amp;A)</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="162"/>
+ <location filename="../playlist.cpp" line="177"/>
<source>U</source>
<translation>U</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="226"/>
- <location filename="../playlist.cpp" line="261"/>
+ <location filename="../playlist.cpp" line="239"/>
+ <location filename="../playlist.cpp" line="273"/>
<source>By Track Number</source>
<translation>按音軌</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="280"/>
+ <location filename="../playlist.cpp" line="291"/>
<source>&amp;Queue</source>
<translation>佇列(&amp;Q)</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="280"/>
+ <location filename="../playlist.cpp" line="291"/>
<source>Q</source>
<translation>Q</translation>
</message>
<message>
- <location filename="../playlist.cpp" line="277"/>
+ <location filename="../playlist.cpp" line="288"/>
<source>Actions</source>
<translation>動作</translation>
</message>