Restoring eq after start, checkable fav button
authorNikolay Tischenko <niktischenko@gmail.com>
Sun, 21 Nov 2010 14:17:43 +0000 (20:17 +0600)
committerNikolay Tischenko <niktischenko@gmail.com>
Sun, 21 Nov 2010 14:17:43 +0000 (20:17 +0600)
src/dbstorage.cpp
src/dbstorage.h
src/dbusadaptor.cpp
src/equalizerdialog.cpp
src/library.cpp
src/library.h
src/mainwindow.cpp
src/player/player.cpp
src/player/player.h
src/playerform.cpp
src/ui/playerform.ui

index 2b9d03f..71f1a36 100644 (file)
@@ -118,6 +118,9 @@ void DbStorage::_prepare_queries() {
        _check_directory_query = new QSqlQuery(db);
        _check_directory_query->prepare("SELECT id from directories WHERE path = :path");
 
        _check_directory_query = new QSqlQuery(db);
        _check_directory_query->prepare("SELECT id from directories WHERE path = :path");
 
+       _check_favorite_query = new QSqlQuery(db);
+       _check_favorite_query->prepare("SELECT 'yes' from favorites WHERE track_id in (SELECT id from tracks WHERE source = :source)");
+
        _insert_artist_query = new QSqlQuery(db);
        _insert_artist_query->prepare("INSERT INTO artist (name, uname) values (:name, :uname)");
 
        _insert_artist_query = new QSqlQuery(db);
        _insert_artist_query->prepare("INSERT INTO artist (name, uname) values (:name, :uname)");
 
@@ -663,3 +666,14 @@ void DbStorage::removeFromFavorites(Track track) {
        query->bindValue(":source", track.source());
        query->exec();
 }
        query->bindValue(":source", track.source());
        query->exec();
 }
+
+bool DbStorage::isFavorite(Track track) {
+       QSqlQuery *query = _check_favorite_query;
+       query->bindValue(":source", track.source());
+       query->exec();
+       if (query->next()) {
+               QString ans = query->value(0).toString();
+               return ans == "yes";
+       }
+       return false;
+}
index 7e7e8e8..60b63ee 100644 (file)
@@ -69,6 +69,8 @@ namespace SomePlayer {
                        void deleteTracksFrom(QString path);
                        void checkTracksFrom(QString path);
 
                        void deleteTracksFrom(QString path);
                        void checkTracksFrom(QString path);
 
+                       bool isFavorite(Track);
+
                private:
                        QSqlDatabase db;
                        void _create_database_structure();
                private:
                        QSqlDatabase db;
                        void _create_database_structure();
@@ -101,6 +103,7 @@ namespace SomePlayer {
                        QSqlQuery *_check_artist_query;
                        QSqlQuery *_check_album_query;
                        QSqlQuery *_check_directory_query;
                        QSqlQuery *_check_artist_query;
                        QSqlQuery *_check_album_query;
                        QSqlQuery *_check_directory_query;
+                       QSqlQuery *_check_favorite_query;
 
                        QSqlQuery *_insert_artist_query;
                        QSqlQuery *_insert_album_query;
 
                        QSqlQuery *_insert_artist_query;
                        QSqlQuery *_insert_album_query;
index 64a9d91..945ced5 100644 (file)
@@ -103,14 +103,13 @@ void DBusAdaptop::processBTSignal(QString event, QString state) {
        if (msec > _DBUS_ACTION_TIMEOUT_) {
                if (event == "ButtonPressed") {
                        if (state == "next-song") {
        if (msec > _DBUS_ACTION_TIMEOUT_) {
                if (event == "ButtonPressed") {
                        if (state == "next-song") {
-                               QMetaObject::invokeMethod(parent(), "next");
+                               next();
                        } else if (state == "previous-song") {
                        } else if (state == "previous-song") {
-                               QMetaObject::invokeMethod(parent(), "prev");
+                               prev();
                        } else if (state == "play-cd" || state == "pause-cd") {
                        } else if (state == "play-cd" || state == "pause-cd") {
-                               QMetaObject::invokeMethod(parent(), "toggle");
+                               toggle();
                        }
                }
        }
        _time = t;
 }
                        }
                }
        }
        _time = t;
 }
-
index dd0a8e5..c828550 100644 (file)
@@ -78,6 +78,12 @@ EqualizerDialog::EqualizerDialog(QWidget *parent) :
        connect(ui->enableToggleButton, SIGNAL(clicked()), this, SLOT(_state_changed()));
        connect(ui->saveButton, SIGNAL(clicked()), this, SLOT(_save_preset()));
        connect(ui->presetComboBox, SIGNAL(activated(QString)), this, SLOT(_load_preset(QString)));
        connect(ui->enableToggleButton, SIGNAL(clicked()), this, SLOT(_state_changed()));
        connect(ui->saveButton, SIGNAL(clicked()), this, SLOT(_save_preset()));
        connect(ui->presetComboBox, SIGNAL(activated(QString)), this, SLOT(_load_preset(QString)));
+
+       Config config;
+       if (config.equalizerEnabled()) {
+               setEqualizerEnabled(true);
+               _load_preset("");
+       }
 }
 
 EqualizerDialog::~EqualizerDialog()
 }
 
 EqualizerDialog::~EqualizerDialog()
index 0aeddad..ee94569 100644 (file)
@@ -232,3 +232,7 @@ void Library::updatePlaylists() {
 void Library::removeFromFavorites(Track track) {
        _library_storage->removeFromFavorites(track);
 }
 void Library::removeFromFavorites(Track track) {
        _library_storage->removeFromFavorites(track);
 }
+
+bool Library::isFavorite(Track track) {
+       return _library_storage->isFavorite(track);
+}
index ed9b2be..9fc9a1a 100644 (file)
@@ -81,6 +81,8 @@ namespace SomePlayer {
                        void updateAll();
                        void deleteDirectories(QList<QString> directories);
 
                        void updateAll();
                        void deleteDirectories(QList<QString> directories);
 
+                       bool isFavorite(Track);
+
                signals:
                        void started();
                        void done();
                signals:
                        void started();
                        void done();
index 5f85bdd..ab982f4 100644 (file)
@@ -250,7 +250,7 @@ void MainWindow::_timeout() {
                QString hp = h < 10 ? QString("0%1").arg(h) : QString("%1").arg(h);
                QString mp = m < 10 ? QString("0%1").arg(m) : QString("%1").arg(m);
                QString sp = s < 10 ? QString("0%1").arg(s) : QString("%1").arg(s);
                QString hp = h < 10 ? QString("0%1").arg(h) : QString("%1").arg(h);
                QString mp = m < 10 ? QString("0%1").arg(m) : QString("%1").arg(m);
                QString sp = s < 10 ? QString("0%1").arg(s) : QString("%1").arg(s);
-               _player_form->showCountdown(hp+":"+mp+":"+sp);
+               _player_form->showCountdown(tr("Music off: ")+hp+":"+mp+":"+sp);
        }
 }
 
        }
 }
 
@@ -275,17 +275,6 @@ void MainWindow::_equalizer_value_changed(int band, int val) {
 
 void MainWindow::settings() {
        _settings_form->show();
 
 void MainWindow::settings() {
        _settings_form->show();
-
-//     Config config;
-//     _library_form->refresh();
-//     _player_form->updateIcons();
-//     _library_form->updateIcons();
-//     _manage_library_form->updateIcons();
-//     _player_form->checkGradient();
-//     _library_form->checkGradient();
-//     _directory_form->updateIcons();
-//     _directory_form->updateGradient();
-//     updateTranslations();
 }
 
 void MainWindow::_change_orientation() {
 }
 
 void MainWindow::_change_orientation() {
index 1a83844..758b09e 100644 (file)
@@ -326,3 +326,11 @@ QString Player::title() {
                return "";
        return _playlist.tracks().at(_current).metadata().title();
 }
                return "";
        return _playlist.tracks().at(_current).metadata().title();
 }
+
+Track Player::current() {
+       if (_current >= 0) {
+               return _playlist.tracks().at(_current);
+       } else {
+               return Track();
+       }
+}
index f756ac1..2ecc032 100644 (file)
@@ -69,6 +69,7 @@ namespace SomePlayer {
                        bool equalizerEnabled() {return _equalizer_enabled;}
                        bool equalizerAvailable() {return _equalizer != NULL;}
                        PlayerState state() {return _state;}
                        bool equalizerEnabled() {return _equalizer_enabled;}
                        bool equalizerAvailable() {return _equalizer != NULL;}
                        PlayerState state() {return _state;}
+                       Track current();
 
                signals:
                        void stateChanged (PlayerState);
 
                signals:
                        void stateChanged (PlayerState);
index 4be237f..5f9c089 100644 (file)
@@ -241,6 +241,7 @@ void PlayerForm::_display_track(Track track) {
        ui->seekSlider->setMaximum(track.metadata().length());
        _tick(0, track.metadata().length());
        _coverfinder->find(track);
        ui->seekSlider->setMaximum(track.metadata().length());
        _tick(0, track.metadata().length());
        _coverfinder->find(track);
+       ui->cfavButton->setChecked(_lib->isFavorite(track));
 }
 
 void PlayerForm::_tick(int done, int all) {
 }
 
 void PlayerForm::_tick(int done, int all) {
@@ -288,7 +289,12 @@ void PlayerForm::_add_to_favorites() {
        if (idx.isEmpty())
                return;
        int id = idx.first().row();
        if (idx.isEmpty())
                return;
        int id = idx.first().row();
-       _lib->addToFavorites(_current_playlist.tracks().at(id));
+       if (ui->cfavButton->isChecked()) {
+               _lib->addToFavorites(_current_playlist.tracks().at(id));
+       } else {
+               _lib->removeFromFavorites(_current_playlist.tracks().at(id));
+       }
+       ui->cfavButton->setChecked(_lib->isFavorite(_current_playlist.tracks().at(id)));
 }
 
 void PlayerForm::_state_changed(PlayerState state) {
 }
 
 void PlayerForm::_state_changed(PlayerState state) {
@@ -705,6 +711,7 @@ void PlayerForm::_toggle_extra_buttons() {
                ui->caddButton->setEnabled(true);
                ui->cdeleteButton->setEnabled(true);
                ui->cfavButton->setEnabled(true);
                ui->caddButton->setEnabled(true);
                ui->cdeleteButton->setEnabled(true);
                ui->cfavButton->setEnabled(true);
+               ui->cfavButton->setChecked(_lib->isFavorite(_player->current()));
                ui->ctagButton->setEnabled(true);
                ui->caddButton->setIcon(QIcon(":/icons/"+_icons_theme+"/add.png"));
                ui->cdeleteButton->setIcon(QIcon(":/icons/"+_icons_theme+"/delete.png"));
                ui->ctagButton->setEnabled(true);
                ui->caddButton->setIcon(QIcon(":/icons/"+_icons_theme+"/add.png"));
                ui->cdeleteButton->setIcon(QIcon(":/icons/"+_icons_theme+"/delete.png"));
index 9a1b111..cef87fe 100644 (file)
              <number>0</number>
             </property>
             <item>
              <number>0</number>
             </property>
             <item>
-             <widget class="QLabel" name="label">
+             <widget class="QLabel" name="timeLabel">
               <property name="text">
               <property name="text">
-               <string>Music off:</string>
+               <string>Music off: 00:00:00</string>
               </property>
               <property name="alignment">
               </property>
               <property name="alignment">
-               <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
-              </property>
-             </widget>
-            </item>
-            <item>
-             <widget class="QLabel" name="timeLabel">
-              <property name="text">
-               <string>00:00:00</string>
+               <set>Qt::AlignCenter</set>
               </property>
              </widget>
             </item>
               </property>
              </widget>
             </item>
                    <iconset resource="../../resources/resources.qrc">
                     <normaloff>:/icons/white/fav.png</normaloff>:/icons/white/fav.png</iconset>
                   </property>
                    <iconset resource="../../resources/resources.qrc">
                     <normaloff>:/icons/white/fav.png</normaloff>:/icons/white/fav.png</iconset>
                   </property>
+                  <property name="checkable">
+                   <bool>true</bool>
+                  </property>
                   <property name="flat">
                    <bool>true</bool>
                   </property>
                   <property name="flat">
                    <bool>true</bool>
                   </property>