Show the "status bar" as part of the central widget
This commit is contained in:
parent
9b39b2db68
commit
0d7eabcfb0
|
@ -38,12 +38,6 @@ PlaylistSequence::PlaylistSequence(QWidget *parent, SettingsProvider *settings)
|
|||
{
|
||||
ui_->setupUi(this);
|
||||
|
||||
// Windows puts lines between status bar widgets already
|
||||
#ifdef Q_OS_WIN32
|
||||
ui_->line_left->hide();
|
||||
ui_->line_right->hide();
|
||||
#endif
|
||||
|
||||
// Icons
|
||||
ui_->repeat->setIcon(AddDesaturatedIcon(IconLoader::Load("media-playlist-repeat")));
|
||||
ui_->shuffle->setIcon(AddDesaturatedIcon(IconLoader::Load("media-playlist-shuffle")));
|
||||
|
|
|
@ -24,13 +24,6 @@
|
|||
<property name="margin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="Line" name="line_left">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QToolButton" name="repeat">
|
||||
<property name="toolTip">
|
||||
|
@ -69,13 +62,6 @@
|
|||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="Line" name="line_right">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
<action name="action_repeat_off">
|
||||
<property name="checkable">
|
||||
|
|
|
@ -100,10 +100,7 @@ MainWindow::MainWindow(NetworkAccessManager* network, Engine::Type engine, QWidg
|
|||
ui_(new Ui_MainWindow),
|
||||
tray_icon_(new SystemTrayIcon(this)),
|
||||
osd_(new OSD(tray_icon_, network, this)),
|
||||
track_slider_(new TrackSlider(this)),
|
||||
playlist_sequence_(new PlaylistSequence(this)),
|
||||
edit_tag_dialog_(new EditTagDialog),
|
||||
multi_loading_indicator_(new MultiLoadingIndicator(this)),
|
||||
about_dialog_(new About),
|
||||
database_(new BackgroundThreadImplementation<Database, Database>(this)),
|
||||
radio_model_(NULL),
|
||||
|
@ -126,7 +123,6 @@ 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.
|
||||
|
@ -275,8 +271,8 @@ MainWindow::MainWindow(NetworkAccessManager* network, Engine::Type engine, QWidg
|
|||
#endif
|
||||
|
||||
// Add the shuffle and repeat action groups to the menu
|
||||
ui_->action_shuffle_mode->setMenu(playlist_sequence_->shuffle_menu());
|
||||
ui_->action_repeat_mode->setMenu(playlist_sequence_->repeat_menu());
|
||||
ui_->action_shuffle_mode->setMenu(ui_->playlist_sequence->shuffle_menu());
|
||||
ui_->action_repeat_mode->setMenu(ui_->playlist_sequence->repeat_menu());
|
||||
|
||||
// Stop actions
|
||||
QMenu* stop_menu = new QMenu(this);
|
||||
|
@ -314,7 +310,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(playlists_, SIGNAL(SummaryTextChanged(QString)), ui_->playlist_summary, SLOT(setText(QString)));
|
||||
connect(playlists_, SIGNAL(LoadTracksStarted()), SLOT(LoadTracksStarted()));
|
||||
connect(playlists_, SIGNAL(LoadTracksFinished()), SLOT(LoadTracksFinished()));
|
||||
connect(playlists_, SIGNAL(PlayRequested(QModelIndex)), SLOT(PlayIndex(QModelIndex)));
|
||||
|
@ -323,7 +319,7 @@ MainWindow::MainWindow(NetworkAccessManager* network, Engine::Type engine, QWidg
|
|||
connect(ui_->playlist->view(), SIGNAL(PlayPauseItem(QModelIndex)), SLOT(PlayIndex(QModelIndex)));
|
||||
connect(ui_->playlist->view(), SIGNAL(RightClicked(QPoint,QModelIndex)), SLOT(PlaylistRightClick(QPoint,QModelIndex)));
|
||||
|
||||
connect(track_slider_, SIGNAL(ValueChanged(int)), player_, SLOT(Seek(int)));
|
||||
connect(ui_->track_slider, SIGNAL(ValueChanged(int)), player_, SLOT(Seek(int)));
|
||||
|
||||
// Database connections
|
||||
connect(database_->Worker().get(), SIGNAL(Error(QString)), error_dialog_.get(), SLOT(ShowMessage(QString)));
|
||||
|
@ -364,8 +360,8 @@ MainWindow::MainWindow(NetworkAccessManager* network, Engine::Type engine, QWidg
|
|||
SLOT(PlaylistUndoRedoChanged(QAction*,QAction*)));
|
||||
|
||||
// Radio connections
|
||||
connect(radio_model_, SIGNAL(TaskStarted(MultiLoadingIndicator::TaskType)), multi_loading_indicator_, SLOT(TaskStarted(MultiLoadingIndicator::TaskType)));
|
||||
connect(radio_model_, SIGNAL(TaskFinished(MultiLoadingIndicator::TaskType)), multi_loading_indicator_, SLOT(TaskFinished(MultiLoadingIndicator::TaskType)));
|
||||
connect(radio_model_, SIGNAL(TaskStarted(MultiLoadingIndicator::TaskType)), ui_->multi_loading_indicator, SLOT(TaskStarted(MultiLoadingIndicator::TaskType)));
|
||||
connect(radio_model_, SIGNAL(TaskFinished(MultiLoadingIndicator::TaskType)), ui_->multi_loading_indicator, SLOT(TaskFinished(MultiLoadingIndicator::TaskType)));
|
||||
connect(radio_model_, SIGNAL(StreamError(QString)), error_dialog_.get(), SLOT(ShowMessage(QString)));
|
||||
connect(radio_model_, SIGNAL(AsyncLoadFinished(PlaylistItem::SpecialLoadResult)), player_, SLOT(HandleSpecialLoad(PlaylistItem::SpecialLoadResult)));
|
||||
connect(radio_model_, SIGNAL(StreamMetadataFound(QUrl,Song)), playlists_, SLOT(SetActiveStreamMetadata(QUrl,Song)));
|
||||
|
@ -456,20 +452,16 @@ MainWindow::MainWindow(NetworkAccessManager* network, Engine::Type engine, QWidg
|
|||
equalizer_->preamp_value(), equalizer_->gain_values());
|
||||
|
||||
// Statusbar widgets
|
||||
playlist_summary_->setMinimumWidth(QFontMetrics(font()).width("WW selected of WW tracks - [ WW:WW ]"));
|
||||
playlist_summary_->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
|
||||
ui_->statusBar->addPermanentWidget(playlist_summary_);
|
||||
ui_->statusBar->addPermanentWidget(playlist_sequence_);
|
||||
ui_->statusBar->addPermanentWidget(track_slider_);
|
||||
ui_->statusBar->addWidget(multi_loading_indicator_);
|
||||
multi_loading_indicator_->hide();
|
||||
ui_->playlist_summary->setMinimumWidth(QFontMetrics(font()).width("WW selected of WW tracks - [ WW:WW ]"));
|
||||
ui_->status_bar_stack->setCurrentWidget(ui_->playlist_summary_page);
|
||||
connect(ui_->multi_loading_indicator, SIGNAL(TaskCountChange(int)), SLOT(TaskCountChanged(int)));
|
||||
|
||||
// Load theme
|
||||
StyleSheetLoader* css_loader = new StyleSheetLoader(this);
|
||||
css_loader->SetStyleSheet(this, ":mainwindow.css");
|
||||
|
||||
// Load playlists
|
||||
playlists_->Init(library_->backend(), playlist_backend_, playlist_sequence_);
|
||||
playlists_->Init(library_->backend(), playlist_backend_, ui_->playlist_sequence);
|
||||
|
||||
// Load settings
|
||||
settings_.beginGroup(kSettingsGroup);
|
||||
|
@ -563,11 +555,11 @@ void MainWindow::AddUrls(bool play_now, const QList<QUrl> &urls) {
|
|||
}
|
||||
|
||||
void MainWindow::LoadTracksStarted() {
|
||||
multi_loading_indicator_->TaskStarted(MultiLoadingIndicator::LoadingTracks);
|
||||
ui_->multi_loading_indicator->TaskStarted(MultiLoadingIndicator::LoadingTracks);
|
||||
}
|
||||
|
||||
void MainWindow::LoadTracksFinished() {
|
||||
multi_loading_indicator_->TaskFinished(MultiLoadingIndicator::LoadingTracks);
|
||||
ui_->multi_loading_indicator->TaskFinished(MultiLoadingIndicator::LoadingTracks);
|
||||
}
|
||||
|
||||
void MainWindow::AddLibrarySongsToPlaylist(const SongList &songs) {
|
||||
|
@ -611,7 +603,7 @@ void MainWindow::MediaStopped() {
|
|||
ui_->action_love->setEnabled(false);
|
||||
|
||||
track_position_timer_->stop();
|
||||
track_slider_->SetStopped();
|
||||
ui_->track_slider->SetStopped();
|
||||
tray_icon_->SetProgress(0);
|
||||
tray_icon_->SetStopped();
|
||||
}
|
||||
|
@ -644,7 +636,7 @@ void MainWindow::MediaPlaying() {
|
|||
ui_->action_ban->setEnabled(lastfm->IsScrobblingEnabled() && is_lastfm);
|
||||
ui_->action_love->setEnabled(lastfm->IsScrobblingEnabled());
|
||||
|
||||
track_slider_->SetCanSeek(!is_lastfm);
|
||||
ui_->track_slider->SetCanSeek(!is_lastfm);
|
||||
|
||||
track_position_timer_->start();
|
||||
UpdateTrackPosition();
|
||||
|
@ -797,7 +789,7 @@ void MainWindow::UpdateTrackPosition() {
|
|||
|
||||
if (length <= 0) {
|
||||
// Probably a stream that we don't know the length of
|
||||
track_slider_->SetStopped();
|
||||
ui_->track_slider->SetStopped();
|
||||
tray_icon_->SetProgress(0);
|
||||
return;
|
||||
}
|
||||
|
@ -812,7 +804,7 @@ void MainWindow::UpdateTrackPosition() {
|
|||
}
|
||||
|
||||
// Update the slider
|
||||
track_slider_->SetValue(position, length);
|
||||
ui_->track_slider->SetValue(position, length);
|
||||
|
||||
// Update the tray icon every 10 seconds
|
||||
if (position % 10 == 1) {
|
||||
|
@ -1034,11 +1026,11 @@ void MainWindow::EditValue() {
|
|||
}
|
||||
|
||||
void MainWindow::LibraryScanStarted() {
|
||||
multi_loading_indicator_->TaskStarted(MultiLoadingIndicator::UpdatingLibrary);
|
||||
ui_->multi_loading_indicator->TaskStarted(MultiLoadingIndicator::UpdatingLibrary);
|
||||
}
|
||||
|
||||
void MainWindow::LibraryScanFinished() {
|
||||
multi_loading_indicator_->TaskFinished(MultiLoadingIndicator::UpdatingLibrary);
|
||||
ui_->multi_loading_indicator->TaskFinished(MultiLoadingIndicator::UpdatingLibrary);
|
||||
}
|
||||
|
||||
void MainWindow::AddFile() {
|
||||
|
@ -1206,3 +1198,11 @@ void MainWindow::PlaylistUndoRedoChanged(QAction *undo, QAction *redo) {
|
|||
void MainWindow::ShowLibraryConfig() {
|
||||
settings_dialog_->OpenAtPage(SettingsDialog::Page_Library);
|
||||
}
|
||||
|
||||
void MainWindow::TaskCountChanged(int count) {
|
||||
if (count == 0) {
|
||||
ui_->status_bar_stack->setCurrentWidget(ui_->playlist_summary_page);
|
||||
} else {
|
||||
ui_->status_bar_stack->setCurrentWidget(ui_->multi_loading_indicator);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -48,18 +48,15 @@ class Player;
|
|||
class PlaylistBackend;
|
||||
class PlaylistManager;
|
||||
class PlaylistParser;
|
||||
class PlaylistSequence;
|
||||
class RadioItem;
|
||||
class RadioModel;
|
||||
class SettingsDialog;
|
||||
class Song;
|
||||
class SystemTrayIcon;
|
||||
class TrackSlider;
|
||||
class TranscodeDialog;
|
||||
class VisualisationContainer;
|
||||
class Ui_MainWindow;
|
||||
|
||||
class QLabel;
|
||||
class QSortFilterProxyModel;
|
||||
|
||||
class MainWindow : public QMainWindow, public PlatformInterface {
|
||||
|
@ -139,9 +136,9 @@ class MainWindow : public QMainWindow, public PlatformInterface {
|
|||
|
||||
void LibraryScanStarted();
|
||||
void LibraryScanFinished();
|
||||
|
||||
void LoadTracksStarted();
|
||||
void LoadTracksFinished();
|
||||
void TaskCountChanged(int count);
|
||||
|
||||
void ShowLibraryConfig();
|
||||
void ReloadSettings();
|
||||
|
@ -166,8 +163,6 @@ class MainWindow : public QMainWindow, public PlatformInterface {
|
|||
Ui_MainWindow* ui_;
|
||||
SystemTrayIcon* tray_icon_;
|
||||
OSD* osd_;
|
||||
TrackSlider* track_slider_;
|
||||
PlaylistSequence* playlist_sequence_;
|
||||
boost::scoped_ptr<EditTagDialog> edit_tag_dialog_;
|
||||
MultiLoadingIndicator* multi_loading_indicator_;
|
||||
boost::scoped_ptr<About> about_dialog_;
|
||||
|
@ -204,8 +199,6 @@ class MainWindow : public QMainWindow, public PlatformInterface {
|
|||
QTimer* track_position_timer_;
|
||||
QSettings settings_;
|
||||
|
||||
QLabel* playlist_summary_;
|
||||
|
||||
bool was_maximized_;
|
||||
bool autoclear_playlist_;
|
||||
};
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
<normaloff>:/icon.png</normaloff>:/icon.png</iconset>
|
||||
</property>
|
||||
<widget class="QWidget" name="centralWidget">
|
||||
<layout class="QVBoxLayout" name="verticalLayout_8">
|
||||
<layout class="QVBoxLayout" name="verticalLayout_4">
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
|
@ -123,8 +123,8 @@
|
|||
</layout>
|
||||
</widget>
|
||||
</widget>
|
||||
<widget class="QWidget" name="layoutWidget">
|
||||
<layout class="QVBoxLayout" name="verticalLayout_7">
|
||||
<widget class="QWidget" name="">
|
||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
|
@ -338,13 +338,79 @@
|
|||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="Line" name="line_6">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QWidget" name="status_bar" native="true">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<property name="spacing">
|
||||
<number>3</number>
|
||||
</property>
|
||||
<property name="margin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QStackedWidget" name="status_bar_stack">
|
||||
<widget class="MultiLoadingIndicator" name="multi_loading_indicator"/>
|
||||
<widget class="QWidget" name="playlist_summary_page">
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<property name="spacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="margin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QLabel" name="playlist_summary">
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="Line" name="line_5">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="PlaylistSequence" name="playlist_sequence" native="true"/>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="Line" name="line_2">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="TrackSlider" name="track_slider" native="true"/>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QStatusBar" name="statusBar"/>
|
||||
<widget class="QMenuBar" name="menuBar">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
|
@ -671,6 +737,24 @@
|
|||
<header>playlist/playlistcontainer.h</header>
|
||||
<container>1</container>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>TrackSlider</class>
|
||||
<extends>QWidget</extends>
|
||||
<header>widgets/trackslider.h</header>
|
||||
<container>1</container>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>PlaylistSequence</class>
|
||||
<extends>QWidget</extends>
|
||||
<header>playlist/playlistsequence.h</header>
|
||||
<container>1</container>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>MultiLoadingIndicator</class>
|
||||
<extends>QWidget</extends>
|
||||
<header>widgets/multiloadingindicator.h</header>
|
||||
<container>1</container>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<resources>
|
||||
<include location="../../data/data.qrc"/>
|
||||
|
|
|
@ -35,15 +35,14 @@ void MultiLoadingIndicator::TaskStarted(TaskType type) {
|
|||
tasks_ << type;
|
||||
|
||||
UpdateText();
|
||||
show();
|
||||
emit TaskCountChange(tasks_.count());
|
||||
}
|
||||
|
||||
void MultiLoadingIndicator::TaskFinished(TaskType type) {
|
||||
tasks_.removeAll(type);
|
||||
|
||||
UpdateText();
|
||||
if (tasks_.count() == 0)
|
||||
hide();
|
||||
emit TaskCountChange(tasks_.count());
|
||||
}
|
||||
|
||||
void MultiLoadingIndicator::UpdateText() {
|
||||
|
|
|
@ -38,6 +38,9 @@ class MultiLoadingIndicator : public QWidget {
|
|||
LoadingTracks,
|
||||
};
|
||||
|
||||
signals:
|
||||
void TaskCountChange(int tasks);
|
||||
|
||||
public slots:
|
||||
void TaskStarted(MultiLoadingIndicator::TaskType type);
|
||||
void TaskFinished(MultiLoadingIndicator::TaskType type);
|
||||
|
|
Loading…
Reference in New Issue