]> Some of my projects - aniplayer-old.git/commitdiff
- Add auto mark watched after % watched.
authorunknown <APTX@.(none)>
Thu, 26 Mar 2009 16:38:41 +0000 (17:38 +0100)
committerunknown <APTX@.(none)>
Thu, 26 Mar 2009 16:38:41 +0000 (17:38 +0100)
src/anidbconfigdialog.cpp
src/anidbconfigdialog.h
src/anidbconfigdialog.ui
src/videowindow.cpp
src/videowindow.h

index 2b726d53b892c1de7beeecaf16bb88413c45aaa3..5a6050bf1c98bf5cac3771332acc2b48b9b04d08 100644 (file)
@@ -57,6 +57,16 @@ void AniDBConfigDialog::setPass(const QString &pass)
        m_ui->pass->setText(pass);
 }
 
+int AniDBConfigDialog::automark() const
+{
+       return m_ui->automark->value();
+}
+
+void AniDBConfigDialog::setAutomark(int percent)
+{
+       m_ui->automark->setValue(percent);
+}
+
 AniDBConfigDialog::~AniDBConfigDialog()
 {
     delete m_ui;
index c1fbb1e3c49eecc650847a528d03a411a600e389..b94504d2cceb6eb149597713bb95bc3b1e71c2bc 100644 (file)
@@ -29,18 +29,15 @@ public:
        QString pass() const;
        void setPass(const QString &pass);
 
+       int automark() const;
+       void setAutomark(int percent);
+
 protected:
     virtual void changeEvent(QEvent *e);
 
 private:
     Ui::AniDBConfigDialog *m_ui;
 
-       QString m_user;
-       QString m_pass;
-       QString m_host;
-       quint16 m_hostPort;
-       quint16 m_localPort;
-
 };
 
 #endif // ANIDBCONFIGDIALOG_H
index 97664afe4e1b7b3ebf0038b348832b2322e450d7..d14f04e6c07ae5acfca0d62b7001f4e7888c6284 100644 (file)
         </property>
        </widget>
       </item>
+      <item row="5" column="0">
+       <widget class="QLabel" name="lAutomark">
+        <property name="text">
+         <string>Automark on:</string>
+        </property>
+       </widget>
+      </item>
+      <item row="5" column="1">
+       <widget class="QSpinBox" name="automark">
+        <property name="specialValueText">
+         <string>Disabled</string>
+        </property>
+        <property name="suffix">
+         <string>%</string>
+        </property>
+        <property name="maximum">
+         <number>100</number>
+        </property>
+       </widget>
+      </item>
      </layout>
     </widget>
    </item>
index 8abbda308dcff88711f7ce3df95d6aef6148e769..244c660f30cbe3bd028be2cf6210fa5eb2ef8a2a 100644 (file)
@@ -39,6 +39,8 @@ VideoWindow::VideoWindow(QWidget *parent) : QMainWindow(parent)
 
        addCommand = 0;
        destroyed = menuMoving = windowMoving = m_closeOnStop = false;
+       m_automarked = true;
+       m_automark = 0;
        m_currentFile = "";
 
 
@@ -143,7 +145,7 @@ VideoWindow::VideoWindow(QWidget *parent) : QMainWindow(parent)
        connect(menu, SIGNAL(positionChanged()), this, SLOT(moveWithMenu()));
 #endif
        connect(mediaObject, SIGNAL(totalTimeChanged(qint64)), menu, SLOT(setTotalTime(qint64)));
-       connect(mediaObject, SIGNAL(tick(qint64)), menu, SLOT(tick(qint64)));
+       connect(mediaObject, SIGNAL(tick(qint64)), this, SLOT(tick(qint64)));
 
        menu->seekSlider()->setMediaObject(mediaObject);
        menu->volumeSlider()->setAudioOutput(audioOutput);
@@ -392,8 +394,9 @@ qDebug() << "Media changed state from" << oldstate << "to" << newstate;
                        m_actions["pause"]->setDisabled(true);
                        m_actions["stop"]->setDisabled(false);
                break;
-#ifdef BROWSERPLUGIN_BUILD
                case Phonon::LoadingState:
+#ifdef BROWSERPLUGIN_BUILD
+
                        m_endBrowserStreamRead = true;
                break;
 #endif
@@ -411,6 +414,7 @@ qDebug() << "Media changed state from" << oldstate << "to" << newstate;
                                addCommand->deleteLater();
 
                        addCommand = new MylistAddCommand(m_currentFile, this);
+                       m_automarked = false;
                break;
                case Phonon::PlayingState:
                        if (newstate == Phonon::PausedState && mediaObject->remainingTime() == 0)
@@ -420,6 +424,21 @@ qDebug() << "Media changed state from" << oldstate << "to" << newstate;
        }
 }
 
+void VideoWindow::tick(qint64 time)
+{
+       menu->tick(time);
+
+       if (!m_automark || m_automarked)
+               return;
+
+       int percentPlayed = int(double(time) / double(mediaObject->totalTime()) * double(100));
+       if (percentPlayed < m_automark)
+               return;
+
+       markWatched();
+       m_automarked = true;
+}
+
 void VideoWindow::updateChapters()
 {
 
@@ -604,6 +623,7 @@ void VideoWindow::anidbSettings()
        dialog.setLocalPort(anidb->localPort());
        dialog.setUser(anidb->user());
        dialog.setPass(anidb->pass());
+       dialog.setAutomark(m_automark);
 
        if (!dialog.exec())
        {
@@ -617,8 +637,7 @@ void VideoWindow::anidbSettings()
        anidb->setLocalPort(dialog.localPort());
        anidb->setUser(dialog.user());
        anidb->setPass(dialog.pass());
-
-       anidb->connect();
+       m_automark = dialog.automark();
 }
 
 void VideoWindow::addAction(const QString &name, const QString &text, const QKeySequence &shortcut, bool checkable)
@@ -673,6 +692,7 @@ void VideoWindow::saveSettings()
                settings.setValue("localPort", anidb->localPort());
                settings.setValue("user", anidb->user());
                settings.setValue("pass", anidb->pass());
+               settings.setValue("automark", m_automark);
        settings.endGroup();
 #endif
 }
@@ -702,6 +722,7 @@ void VideoWindow::loadSettings()
                anidb->setLocalPort(settings.value("localPort", 9001).toInt());
                anidb->setUser(settings.value("user").toString());
                anidb->setPass(settings.value("pass").toString());
+               m_automark = settings.value("automark", 0).toInt();
        settings.endGroup();
        QFileInfo file(m_currentFile);
        if (!file.exists())
index 7eedfbb096b79797d05dc180940f02a095077fb6..83dee8950b239978b4a1289ed5bbe382b4e5e104 100644 (file)
@@ -105,6 +105,8 @@ protected slots:
 private slots:
        void handleStateChange(Phonon::State newstate, Phonon::State oldstate);
 
+       void tick(qint64 time);
+
        void updateChapters();
        void updateSubtitles();
 
@@ -156,6 +158,9 @@ private:
 
        bool m_closeOnStop;
 
+       int m_automark;
+       bool m_automarked;
+
        DirectoryPlaylist *playlist;
        AniDBUdpClient *anidb;
        MylistAddCommand *addCommand;