From: unknown Date: Thu, 26 Mar 2009 16:38:41 +0000 (+0100) Subject: - Add auto mark watched after % watched. X-Git-Url: https://gitweb.tyo.aptx.org/?a=commitdiff_plain;h=efc60401303a6d72c57a4d66d4bbff6d17a55c5c;p=aniplayer-old.git - Add auto mark watched after % watched. --- diff --git a/src/anidbconfigdialog.cpp b/src/anidbconfigdialog.cpp index 2b726d5..5a6050b 100644 --- a/src/anidbconfigdialog.cpp +++ b/src/anidbconfigdialog.cpp @@ -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; diff --git a/src/anidbconfigdialog.h b/src/anidbconfigdialog.h index c1fbb1e..b94504d 100644 --- a/src/anidbconfigdialog.h +++ b/src/anidbconfigdialog.h @@ -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 diff --git a/src/anidbconfigdialog.ui b/src/anidbconfigdialog.ui index 97664af..d14f04e 100644 --- a/src/anidbconfigdialog.ui +++ b/src/anidbconfigdialog.ui @@ -94,6 +94,26 @@ + + + + Automark on: + + + + + + + Disabled + + + % + + + 100 + + + diff --git a/src/videowindow.cpp b/src/videowindow.cpp index 8abbda3..244c660 100644 --- a/src/videowindow.cpp +++ b/src/videowindow.cpp @@ -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()) diff --git a/src/videowindow.h b/src/videowindow.h index 7eedfbb..83dee89 100644 --- a/src/videowindow.h +++ b/src/videowindow.h @@ -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;