Add a status bar indicator to tell the user how many tracks are loaded. Fixes issue #155

This commit is contained in:
David Sansome 2010-06-12 21:20:53 +00:00
parent 8340aa0a64
commit a8d79582c1
33 changed files with 409 additions and 0 deletions

View File

@ -16,6 +16,9 @@
#include "utilities.h"
#include <QCoreApplication>
#include <QStringList>
namespace Utilities {
QString PrettyTime(int seconds) {
@ -36,4 +39,21 @@ QString PrettyTime(int seconds) {
return ret;
}
static QString tr(const char* str) {
return QCoreApplication::translate("", str);
}
QString WordyTime(quint64 seconds) {
quint64 days = seconds / (60*60*24);
// TODO: Make the plural rules translatable
QStringList parts;
if (days)
parts << (days == 1 ? tr("1 day") : tr("%1 days").arg(days));
parts << PrettyTime(seconds - days*60*60*24);
return parts.join(" ");
}
} // namespace

View File

@ -21,6 +21,7 @@
namespace Utilities {
QString PrettyTime(int seconds);
QString WordyTime(quint64 seconds);
}
#endif // UTILITIES_H

View File

@ -1041,3 +1041,13 @@ SongList Playlist::GetAllSongs() const {
}
return ret;
}
quint64 Playlist::GetTotalLength() const {
quint64 ret = 0;
foreach (boost::shared_ptr<PlaylistItem> item, items_) {
int length = item->Metadata().length();
if (length > 0)
ret += length;
}
return ret;
}

View File

@ -113,6 +113,7 @@ class Playlist : public QAbstractListModel {
Song current_item_metadata() const;
SongList GetAllSongs() const;
quint64 GetTotalLength() const; // in seconds
void set_sequence(PlaylistSequence* v);
PlaylistSequence* sequence() const { return playlist_sequence_; }

View File

@ -17,6 +17,7 @@
#include "playlist.h"
#include "playlistbackend.h"
#include "playlistmanager.h"
#include "core/utilities.h"
#include "playlistparsers/playlistparser.h"
#include <QFileInfo>
@ -60,6 +61,7 @@ Playlist* PlaylistManager::AddPlaylist(int id, const QString& name) {
connect(ret, SIGNAL(CurrentSongChanged(Song)), SIGNAL(CurrentSongChanged(Song)));
connect(ret, SIGNAL(PlaylistChanged()), SIGNAL(PlaylistChanged()));
connect(ret, SIGNAL(PlaylistChanged()), SLOT(UpdateSummaryText()));
connect(ret, SIGNAL(EditingFinished(QModelIndex)), SIGNAL(EditingFinished(QModelIndex)));
playlists_[id] = Data(ret, name);
@ -142,6 +144,7 @@ void PlaylistManager::SetCurrentPlaylist(int id) {
Q_ASSERT(playlists_.contains(id));
current_ = id;
emit CurrentChanged(current());
UpdateSummaryText();
}
void PlaylistManager::SetActivePlaylist(int id) {
@ -183,3 +186,16 @@ void PlaylistManager::SetActiveStreamMetadata(const QUrl &url, const Song &song)
void PlaylistManager::ChangePlaylistOrder(const QList<int>& ids) {
playlist_backend_->SetPlaylistOrder(ids);
}
void PlaylistManager::UpdateSummaryText() {
int tracks = current()->rowCount();
quint64 seconds = current()->GetTotalLength();
// TODO: Make the plurals translatable
QString summary = tracks == 1 ? tr("1 track") : tr("%1 tracks").arg(tracks);
if (seconds)
summary += " (" + Utilities::WordyTime(seconds) + ")";
emit SummaryTextChanged(summary);
}

View File

@ -83,12 +83,16 @@ signals:
void ActiveChanged(Playlist* new_playlist);
void Error(const QString& message);
void SummaryTextChanged(const QString& summary);
// Forwarded from individual playlists
void CurrentSongChanged(const Song& song);
void PlaylistChanged();
void EditingFinished(const QModelIndex& index);
private slots:
void UpdateSummaryText();
private:
Playlist* AddPlaylist(int id, const QString& name);

View File

@ -141,6 +141,13 @@ msgstr ""
msgid "Seek backward"
msgstr ""
msgid "1 day"
msgstr ""
#, qt-format
msgid "%1 days"
msgstr ""
msgid "Add directory..."
msgstr "أضف مجلد..."
@ -297,6 +304,13 @@ msgstr "أخفِ %1"
msgid "The playlist '%1' was empty or could not be loaded."
msgstr ""
msgid "1 track"
msgstr ""
#, qt-format
msgid "%1 tracks"
msgstr ""
msgid "Remove playlist"
msgstr ""

View File

@ -142,6 +142,13 @@ msgstr "Přetočit vpřed"
msgid "Seek backward"
msgstr "Přetočit zpět"
msgid "1 day"
msgstr ""
#, qt-format
msgid "%1 days"
msgstr ""
msgid "Add directory..."
msgstr "Přidat adresář..."
@ -298,6 +305,13 @@ msgstr "Skrýt %1"
msgid "The playlist '%1' was empty or could not be loaded."
msgstr ""
msgid "1 track"
msgstr ""
#, qt-format
msgid "%1 tracks"
msgstr ""
msgid "Remove playlist"
msgstr "Odstranit playlist"

View File

@ -144,6 +144,13 @@ msgstr ""
msgid "Seek backward"
msgstr ""
msgid "1 day"
msgstr ""
#, qt-format
msgid "%1 days"
msgstr ""
msgid "Add directory..."
msgstr "Tilføj mappe..."
@ -300,6 +307,13 @@ msgstr "Skjul %1"
msgid "The playlist '%1' was empty or could not be loaded."
msgstr ""
msgid "1 track"
msgstr ""
#, qt-format
msgid "%1 tracks"
msgstr ""
msgid "Remove playlist"
msgstr ""

View File

@ -141,6 +141,13 @@ msgstr "Vorspulen"
msgid "Seek backward"
msgstr "Zurückspulen"
msgid "1 day"
msgstr ""
#, qt-format
msgid "%1 days"
msgstr ""
msgid "Add directory..."
msgstr "Verzeichnis hinzufügen..."
@ -298,6 +305,13 @@ msgstr "%1 ausblenden"
msgid "The playlist '%1' was empty or could not be loaded."
msgstr "Die Wiedergabeliste \"%1\" ist leer oder konnte nicht geladen werden."
msgid "1 track"
msgstr ""
#, qt-format
msgid "%1 tracks"
msgstr ""
msgid "Remove playlist"
msgstr "Wiedergabeliste entfernen"

View File

@ -143,6 +143,13 @@ msgstr "Αναζήτηση εμπρός"
msgid "Seek backward"
msgstr "Αναζήτηση πίσω"
msgid "1 day"
msgstr ""
#, qt-format
msgid "%1 days"
msgstr ""
msgid "Add directory..."
msgstr "Προσθήκη καταλόγου..."
@ -301,6 +308,13 @@ msgstr "Απόκρυψη %1"
msgid "The playlist '%1' was empty or could not be loaded."
msgstr "Η λίστα αναπαραγωγής '%1' ήταν άδεια ή δεν μπόρεσε να φορτωθεί."
msgid "1 track"
msgstr ""
#, qt-format
msgid "%1 tracks"
msgstr ""
msgid "Remove playlist"
msgstr "Αφαίρεση λίστας αναπαραγωγής"

View File

@ -141,6 +141,13 @@ msgstr "Seek forward"
msgid "Seek backward"
msgstr "Seek backward"
msgid "1 day"
msgstr ""
#, qt-format
msgid "%1 days"
msgstr ""
msgid "Add directory..."
msgstr "Add directory..."
@ -298,6 +305,13 @@ msgstr "Hide %1"
msgid "The playlist '%1' was empty or could not be loaded."
msgstr "The playlist '%1' was empty or could not be loaded."
msgid "1 track"
msgstr ""
#, qt-format
msgid "%1 tracks"
msgstr ""
msgid "Remove playlist"
msgstr "Remove playlist"

View File

@ -141,6 +141,13 @@ msgstr ""
msgid "Seek backward"
msgstr ""
msgid "1 day"
msgstr ""
#, qt-format
msgid "%1 days"
msgstr ""
msgid "Add directory..."
msgstr "Add directory..."
@ -297,6 +304,13 @@ msgstr "Hide %1"
msgid "The playlist '%1' was empty or could not be loaded."
msgstr ""
msgid "1 track"
msgstr ""
#, qt-format
msgid "%1 tracks"
msgstr ""
msgid "Remove playlist"
msgstr ""

View File

@ -142,6 +142,13 @@ msgstr "Avanzar"
msgid "Seek backward"
msgstr "Retroceder"
msgid "1 day"
msgstr ""
#, qt-format
msgid "%1 days"
msgstr ""
msgid "Add directory..."
msgstr "Añadir directorio..."
@ -300,6 +307,13 @@ msgstr "Ocultar %1"
msgid "The playlist '%1' was empty or could not be loaded."
msgstr "La lista de reproducción '%1' estaba vacía o no pudo ser cargada."
msgid "1 track"
msgstr ""
#, qt-format
msgid "%1 tracks"
msgstr ""
msgid "Remove playlist"
msgstr "Quitar lista de reproducción"

View File

@ -141,6 +141,13 @@ msgstr ""
msgid "Seek backward"
msgstr ""
msgid "1 day"
msgstr ""
#, qt-format
msgid "%1 days"
msgstr ""
msgid "Add directory..."
msgstr "Lisää kansio..."
@ -297,6 +304,13 @@ msgstr "Piilota %1"
msgid "The playlist '%1' was empty or could not be loaded."
msgstr ""
msgid "1 track"
msgstr ""
#, qt-format
msgid "%1 tracks"
msgstr ""
msgid "Remove playlist"
msgstr ""

View File

@ -142,6 +142,13 @@ msgstr "Avancer"
msgid "Seek backward"
msgstr "Reculer"
msgid "1 day"
msgstr ""
#, qt-format
msgid "%1 days"
msgstr ""
msgid "Add directory..."
msgstr "Ajouter un répertoire..."
@ -298,6 +305,13 @@ msgstr "Masquer %1"
msgid "The playlist '%1' was empty or could not be loaded."
msgstr ""
msgid "1 track"
msgstr ""
#, qt-format
msgid "%1 tracks"
msgstr ""
msgid "Remove playlist"
msgstr ""

View File

@ -141,6 +141,13 @@ msgstr ""
msgid "Seek backward"
msgstr ""
msgid "1 day"
msgstr ""
#, qt-format
msgid "%1 days"
msgstr ""
msgid "Add directory..."
msgstr "Adicionar directório..."
@ -297,6 +304,13 @@ msgstr "Esconder %1"
msgid "The playlist '%1' was empty or could not be loaded."
msgstr ""
msgid "1 track"
msgstr ""
#, qt-format
msgid "%1 tracks"
msgstr ""
msgid "Remove playlist"
msgstr ""

View File

@ -142,6 +142,13 @@ msgstr "Scorri in avanti"
msgid "Seek backward"
msgstr "Scorri indietro"
msgid "1 day"
msgstr ""
#, qt-format
msgid "%1 days"
msgstr ""
msgid "Add directory..."
msgstr "Aggiungi cartella..."
@ -300,6 +307,13 @@ msgstr "Nascondi %1"
msgid "The playlist '%1' was empty or could not be loaded."
msgstr "La scaletta '%1' è vuota o non può essere caricata."
msgid "1 track"
msgstr ""
#, qt-format
msgid "%1 tracks"
msgstr ""
msgid "Remove playlist"
msgstr "Rimuovi la scaletta"

View File

@ -141,6 +141,13 @@ msgstr ""
msgid "Seek backward"
msgstr ""
msgid "1 day"
msgstr ""
#, qt-format
msgid "%1 days"
msgstr ""
msgid "Add directory..."
msgstr ""
@ -297,6 +304,13 @@ msgstr "%1 жасыру"
msgid "The playlist '%1' was empty or could not be loaded."
msgstr ""
msgid "1 track"
msgstr ""
#, qt-format
msgid "%1 tracks"
msgstr ""
msgid "Remove playlist"
msgstr ""

View File

@ -141,6 +141,13 @@ msgstr ""
msgid "Seek backward"
msgstr ""
msgid "1 day"
msgstr ""
#, qt-format
msgid "%1 days"
msgstr ""
msgid "Add directory..."
msgstr "Legg til katalog..."
@ -297,6 +304,13 @@ msgstr "Skjul %1"
msgid "The playlist '%1' was empty or could not be loaded."
msgstr ""
msgid "1 track"
msgstr ""
#, qt-format
msgid "%1 tracks"
msgstr ""
msgid "Remove playlist"
msgstr ""

View File

@ -141,6 +141,13 @@ msgstr ""
msgid "Seek backward"
msgstr ""
msgid "1 day"
msgstr ""
#, qt-format
msgid "%1 days"
msgstr ""
msgid "Add directory..."
msgstr ""
@ -297,6 +304,13 @@ msgstr "Amagar « %1 »"
msgid "The playlist '%1' was empty or could not be loaded."
msgstr ""
msgid "1 track"
msgstr ""
#, qt-format
msgid "%1 tracks"
msgstr ""
msgid "Remove playlist"
msgstr ""

View File

@ -142,6 +142,13 @@ msgstr ""
msgid "Seek backward"
msgstr ""
msgid "1 day"
msgstr ""
#, qt-format
msgid "%1 days"
msgstr ""
msgid "Add directory..."
msgstr "Dodaj katalog..."
@ -298,6 +305,13 @@ msgstr "Ukryj %1"
msgid "The playlist '%1' was empty or could not be loaded."
msgstr ""
msgid "1 track"
msgstr ""
#, qt-format
msgid "%1 tracks"
msgstr ""
msgid "Remove playlist"
msgstr ""

View File

@ -141,6 +141,13 @@ msgstr "Avançar"
msgid "Seek backward"
msgstr "Retroceder"
msgid "1 day"
msgstr ""
#, qt-format
msgid "%1 days"
msgstr ""
msgid "Add directory..."
msgstr "Adicionar directoria..."
@ -299,6 +306,13 @@ msgstr "Ocultar %1"
msgid "The playlist '%1' was empty or could not be loaded."
msgstr "A lista de reprodução '%1' está vazia ou não pôde ser carregada."
msgid "1 track"
msgstr ""
#, qt-format
msgid "%1 tracks"
msgstr ""
msgid "Remove playlist"
msgstr "Remover lista de reprodução"

View File

@ -141,6 +141,13 @@ msgstr "Avançar"
msgid "Seek backward"
msgstr "Retroceder"
msgid "1 day"
msgstr ""
#, qt-format
msgid "%1 days"
msgstr ""
msgid "Add directory..."
msgstr "Adicionar diretório"
@ -299,6 +306,13 @@ msgstr "Ocultar %1"
msgid "The playlist '%1' was empty or could not be loaded."
msgstr "A lista de reprodução '%1' está vazia ou não pode ser carregada."
msgid "1 track"
msgstr ""
#, qt-format
msgid "%1 tracks"
msgstr ""
msgid "Remove playlist"
msgstr "Remover playlist"

View File

@ -141,6 +141,13 @@ msgstr ""
msgid "Seek backward"
msgstr ""
msgid "1 day"
msgstr ""
#, qt-format
msgid "%1 days"
msgstr ""
msgid "Add directory..."
msgstr "Adaugă director..."
@ -297,6 +304,13 @@ msgstr "Ascunde %1"
msgid "The playlist '%1' was empty or could not be loaded."
msgstr ""
msgid "1 track"
msgstr ""
#, qt-format
msgid "%1 tracks"
msgstr ""
msgid "Remove playlist"
msgstr ""

View File

@ -140,6 +140,13 @@ msgstr "Перемотка вперед"
msgid "Seek backward"
msgstr "Перемотка назад"
msgid "1 day"
msgstr ""
#, qt-format
msgid "%1 days"
msgstr ""
msgid "Add directory..."
msgstr "Добавить каталог..."
@ -298,6 +305,13 @@ msgstr "Скрыть %1"
msgid "The playlist '%1' was empty or could not be loaded."
msgstr "Список воспроизведения '%1' пуст или не может быть загружен."
msgid "1 track"
msgstr ""
#, qt-format
msgid "%1 tracks"
msgstr ""
msgid "Remove playlist"
msgstr "Удалить список воспроизведения"

View File

@ -142,6 +142,13 @@ msgstr "Posunúť vpred"
msgid "Seek backward"
msgstr "Posunúť vzad"
msgid "1 day"
msgstr ""
#, qt-format
msgid "%1 days"
msgstr ""
msgid "Add directory..."
msgstr "Pridať priečinok..."
@ -299,6 +306,13 @@ msgstr "Skryť %1"
msgid "The playlist '%1' was empty or could not be loaded."
msgstr "Playlist '%1' je prázdny alebo nemôže byť načítaný."
msgid "1 track"
msgstr ""
#, qt-format
msgid "%1 tracks"
msgstr ""
msgid "Remove playlist"
msgstr "Odstrániť playlist"

View File

@ -141,6 +141,13 @@ msgstr "Sök framåt"
msgid "Seek backward"
msgstr "Sök bakåt"
msgid "1 day"
msgstr ""
#, qt-format
msgid "%1 days"
msgstr ""
msgid "Add directory..."
msgstr "Lägg till katalog..."
@ -297,6 +304,13 @@ msgstr "Dölj %1"
msgid "The playlist '%1' was empty or could not be loaded."
msgstr ""
msgid "1 track"
msgstr ""
#, qt-format
msgid "%1 tracks"
msgstr ""
msgid "Remove playlist"
msgstr ""

View File

@ -141,6 +141,13 @@ msgstr ""
msgid "Seek backward"
msgstr ""
msgid "1 day"
msgstr ""
#, qt-format
msgid "%1 days"
msgstr ""
msgid "Add directory..."
msgstr ""
@ -297,6 +304,13 @@ msgstr "Gizle %1"
msgid "The playlist '%1' was empty or could not be loaded."
msgstr ""
msgid "1 track"
msgstr ""
#, qt-format
msgid "%1 tracks"
msgstr ""
msgid "Remove playlist"
msgstr ""

View File

@ -141,6 +141,13 @@ msgstr "快进"
msgid "Seek backward"
msgstr "快退"
msgid "1 day"
msgstr ""
#, qt-format
msgid "%1 days"
msgstr ""
msgid "Add directory..."
msgstr "添加目录"
@ -297,6 +304,13 @@ msgstr "隐藏 %1"
msgid "The playlist '%1' was empty or could not be loaded."
msgstr ""
msgid "1 track"
msgstr ""
#, qt-format
msgid "%1 tracks"
msgstr ""
msgid "Remove playlist"
msgstr "删除播放列表"

View File

@ -141,6 +141,13 @@ msgstr ""
msgid "Seek backward"
msgstr ""
msgid "1 day"
msgstr ""
#, qt-format
msgid "%1 days"
msgstr ""
msgid "Add directory..."
msgstr ""
@ -297,6 +304,13 @@ msgstr ""
msgid "The playlist '%1' was empty or could not be loaded."
msgstr ""
msgid "1 track"
msgstr ""
#, qt-format
msgid "%1 tracks"
msgstr ""
msgid "Remove playlist"
msgstr "移除撥放清單"

View File

@ -126,6 +126,7 @@ MainWindow::MainWindow(NetworkAccessManager* network, Engine::Type engine, QWidg
playlist_menu_(new QMenu(this)),
library_sort_model_(new QSortFilterProxyModel(this)),
track_position_timer_(new QTimer(this)),
playlist_summary_(new QLabel(this)),
was_maximized_(false)
{
// Wait for the database thread to start - lots of stuff depends on it.
@ -311,6 +312,7 @@ MainWindow::MainWindow(NetworkAccessManager* network, Engine::Type engine, QWidg
connect(playlists_, SIGNAL(PlaylistChanged()), player_, SLOT(PlaylistChanged()));
connect(playlists_, SIGNAL(EditingFinished(QModelIndex)), SLOT(PlaylistEditFinished(QModelIndex)));
connect(playlists_, SIGNAL(Error(QString)), error_dialog_.get(), SLOT(ShowMessage(QString)));
connect(playlists_, SIGNAL(SummaryTextChanged(QString)), playlist_summary_, SLOT(setText(QString)));
connect(ui_->playlist->view(), SIGNAL(doubleClicked(QModelIndex)), SLOT(PlayIndex(QModelIndex)));
connect(ui_->playlist->view(), SIGNAL(PlayPauseItem(QModelIndex)), SLOT(PlayIndex(QModelIndex)));
@ -452,7 +454,9 @@ MainWindow::MainWindow(NetworkAccessManager* network, Engine::Type engine, QWidg
ui_->statusBar->addPermanentWidget(playlist_sequence_);
ui_->statusBar->addPermanentWidget(track_slider_);
ui_->statusBar->addWidget(multi_loading_indicator_);
ui_->statusBar->addWidget(playlist_summary_);
multi_loading_indicator_->hide();
playlist_summary_->setIndent(4);
// Load theme
StyleSheetLoader* css_loader = new StyleSheetLoader(this);

View File

@ -58,6 +58,7 @@ class TranscodeDialog;
class VisualisationContainer;
class Ui_MainWindow;
class QLabel;
class QSortFilterProxyModel;
class MainWindow : public QMainWindow {
@ -197,6 +198,8 @@ class MainWindow : public QMainWindow {
QTimer* track_position_timer_;
QSettings settings_;
QLabel* playlist_summary_;
bool was_maximized_;
bool autoclear_playlist_;
};