Removed debug info
[someplayer] / src / playerform.cpp
1 #include "playerform.h"
2 #include "ui_playerform.h"
3 #include "library.h"
4 #include <QDebug>
5 #include <QTime>
6 #include <QSlider>
7
8 using namespace SomePlayer::DataObjects;
9 using namespace SomePlayer::Playback;
10
11 inline void __fill_list(QStandardItemModel *_model, Playlist playlist) {
12         _model->clear();
13         QList<Track> tracks = playlist.tracks();
14         int count = tracks.count();
15         _model->setRowCount(count);
16         for (int i = 0; i < count; i++) {
17                 TrackMetadata meta = tracks.at(i).metadata();
18                 _model->setItem(i, 0, new QStandardItem(meta.title()));
19                 _model->setItem(i, 1, new QStandardItem(meta.artist()));
20         }
21 }
22
23 PlayerForm::PlayerForm(Library* lib, QWidget *parent) :
24     QWidget(parent),
25     ui(new Ui::PlayerForm)
26 {
27         _lib = lib;
28         _player = new Player(this);
29     ui->setupUi(this);
30         connect(ui->libraryButton, SIGNAL(clicked()), this, SLOT(_library()));
31         connect(ui->viewButton, SIGNAL(clicked()), this, SLOT(_toggle_view()));
32         connect(ui->playlistView, SIGNAL(clicked(QModelIndex)), this, SLOT(_process_click(QModelIndex)));
33         connect(ui->playButton, SIGNAL(clicked()), _player, SLOT(play()));
34         connect(ui->pauseButton, SIGNAL(clicked()), _player, SLOT(pause()));
35         connect(ui->stopButton, SIGNAL(clicked()), _player, SLOT(stop()));
36         connect(ui->nextButton, SIGNAL(clicked()), _player, SLOT(next()));
37         connect(ui->prevButton, SIGNAL(clicked()), _player, SLOT(prev()));
38         connect(_player, SIGNAL(trackChanged(Track)), this, SLOT(_track_changed(Track)));
39         connect(_player, SIGNAL(tick(int,int)), this, SLOT(_tick(int,int)));
40         _seek_slider = new QSlider(Qt::Horizontal);
41         ui->progressLayout->insertWidget(1, _seek_slider);
42         _seek_slider->setTracking(false);
43         connect(_seek_slider, SIGNAL(sliderMoved(int)), _player, SLOT(seek(int)));
44         _model = new QStandardItemModel(0, 2, this);
45         ui->playlistView->setModel(_model);
46 }
47
48 PlayerForm::~PlayerForm()
49 {
50     delete ui;
51 }
52
53 void PlayerForm::_library() {
54         emit library();
55 }
56
57 void PlayerForm::reload() {
58         _current_playlist = _lib->getCurrentPlaylist();
59         _player->setPlaylist(_current_playlist);
60         __fill_list(_model, _current_playlist);
61 }
62
63 void PlayerForm::_toggle_view() {
64         int index = ui->stackedWidget->currentIndex();
65         index = (!index % 2);
66         ui->stackedWidget->setCurrentIndex(index);
67 }
68
69 void PlayerForm::_process_click(QModelIndex index) {
70         int id = index.row();
71         _player->stop();
72         _player->setTrackId(id);
73         _player->play();
74 }
75
76 void PlayerForm::_track_changed(Track track) {
77         int id = _current_playlist.tracks().indexOf(track);
78         QModelIndex index = _model->index(id, 0);
79         ui->playlistView->setCurrentIndex(index);
80         _display_track(track);
81 }
82
83 void PlayerForm::_display_track(Track track) {
84         ui->countLabel->setText(QString("%1/%2").
85                                                         arg(_current_playlist.tracks().indexOf(track)+1).
86                                                         arg(_current_playlist.tracks().count()));
87         ui->titleLabel->setText(QString("<h3>%1</h3>").arg(track.metadata().title()));
88         ui->artistAlbumLabel->setText(QString("<h3>%1</h3><br/>%2").
89                                                                   arg(track.metadata().artist()).
90                                                                   arg(track.metadata().album()));
91         _seek_slider->setMinimum(0);
92         _seek_slider->setMaximum(track.metadata().length());
93 }
94
95 void PlayerForm::_tick(int done, int all) {
96         QTime time1(0, all/60, all%60);
97         QTime time2(0, done/60, done%60);
98         ui->allTimeLabel->setText(time1.toString("mm:ss"));
99         ui->doneTimeLabel->setText(time2.toString("mm:ss"));
100         _seek_slider->setValue(done);
101 }
102
103 void PlayerForm::_slider_released() {
104         _player->seek(_seek_slider->value());
105 }