Implemented playback.
[someplayer] / src / mainwindow.cpp
1 #include "mainwindow.h"
2 #include "ui_mainwindow.h"
3 #include <QFileDialog>
4 #include <QMessageBox>
5 #include <QFile>
6
7 #include "player/player.h"
8
9 #include "library.h"
10
11 using namespace SomePlayer::DataObjects;
12
13 MainWindow::MainWindow(QWidget *parent) :
14         QMainWindow(parent),
15         ui(new Ui::MainWindow)
16 {
17         _library = new Library(_DATABASE_PATH_, _PLAYLISTS_PATH_);
18         ui->setupUi(this);
19         connect(ui->actionOpen, SIGNAL(triggered()), this, SLOT(openMedia()));
20         connect(ui->actionAbout_Qt, SIGNAL(triggered()), this, SLOT(aboutQt()));
21         connect(ui->actionAbout, SIGNAL(triggered()), this, SLOT(about()));
22         connect(ui->actionPlayer, SIGNAL(triggered()), this, SLOT(player()));
23         connect(ui->actionLibrary, SIGNAL(triggered()), this, SLOT(library()));
24         setAnimated(true);
25         _player_form = new PlayerForm(_library, ui->stackedWidget);
26         _library_form = new LibraryForm(_library, ui->stackedWidget);
27         _busy_widget = new BusyWidget(ui->stackedWidget);
28         ui->stackedWidget->insertWidget(0, _player_form);
29         ui->stackedWidget->insertWidget(1, _library_form);
30         ui->stackedWidget->insertWidget(2, _busy_widget);
31         _library_menu = new QMenu("Lirary");
32         QAction *add_directory = _library_menu->addAction("Add directory");
33         _player_menu = new QMenu("Player");
34         connect(_player_form, SIGNAL(library()), this, SLOT(library()));
35         connect(_library_form, SIGNAL(player()), this, SLOT(player()));
36         connect(add_directory, SIGNAL(triggered()), this, SLOT(_add_directory()));
37         connect(_library, SIGNAL(addingDone()), this, SLOT(library()));
38         library();
39 }
40
41 MainWindow::~MainWindow()
42 {
43         delete _player_form;
44         delete _library_form;
45         delete ui;
46 }
47
48 void MainWindow::openMedia()
49 {
50 //      SomePlayer::DataObjects::Library *l = new SomePlayer::DataObjects::Library("/tmp", "/tmp");
51 //      l->addDirectory("/mnt/music/Three Days Grace");
52 }
53
54 void MainWindow::aboutQt() {
55         QMessageBox::aboutQt(this, "About Qt");
56 }
57
58 void MainWindow::about() {
59         QMessageBox::about(this, "About SomePlayer", "Alternate music player for Maemo 5 "
60                                            "written in C++ with Qt4\n\n"
61                                            "Author: Nikolay Tischenko aka \"somebody\" <niktischenko@gmail.com>");
62 }
63
64 void MainWindow::player() {
65         ui->stackedWidget->setCurrentIndex(0);
66         _player_form->reload();
67         setWindowTitle("SomePlayer");
68 }
69
70 void MainWindow::library() {
71         ui->menuBar->setEnabled(true);
72         ui->stackedWidget->setCurrentIndex(1);
73         setWindowTitle("SomePlayer Library");
74         ui->menuBar->addMenu(_library_menu);
75 }
76
77 void MainWindow::_add_directory() {
78         QString directory = QFileDialog::getExistingDirectory (this, "Select directory", "/home/user/MyDocs", QFileDialog::ShowDirsOnly );
79         if (!directory.isEmpty()) {
80                 _busy_widget->setText("<H1>Scanning... Please wait</H1>");
81                 ui->menuBar->setEnabled(false);
82                 ui->stackedWidget->setCurrentIndex(2);
83                 _library->addDirectory(directory);
84         }
85 }