From: APTX Date: Sat, 2 Mar 2013 17:37:00 +0000 (+0100) Subject: Add mark watched support via localmylist X-Git-Url: https://gitweb.aptx.org/?a=commitdiff_plain;h=4eb6ebd7a3c457a5c0afc17c30f7b49d7f180480;p=aniplayer2.git Add mark watched support via localmylist --- diff --git a/aniplayer/aniplayer.cpp b/aniplayer/aniplayer.cpp index 396064f..f37b5c4 100644 --- a/aniplayer/aniplayer.cpp +++ b/aniplayer/aniplayer.cpp @@ -3,9 +3,19 @@ #include #include +#include + AniPlayer::AniPlayer(QObject *parent) : QObject(parent), m_state(NoFileLoaded) { -} + m_automark = 0; + marked = false; + + LocalMyList::instance()->loadLocalSettings(); +/* if (!LocalMyList::instance()->database()->connect()) + { + qWarning("LocalMyList failed to connect to DB"); + } +*/} AniPlayer::~AniPlayer() { @@ -46,6 +56,11 @@ Stream *AniPlayer::stream(int i) const return m_streams[i]; } +int AniPlayer::automark() const +{ + return m_automark; +} + bool AniPlayer::open(const QString &file) { if (file == m_currentFile) @@ -56,6 +71,7 @@ bool AniPlayer::open(const QString &file) setState(Stopped); m_currentFile = file; + marked = false; emit currentFileChanged(m_currentFile); emit totalTimeChanged(totalTime()); emit videoSizeChanged(videoSize()); @@ -164,6 +180,43 @@ bool AniPlayer::changeToStream(int i) return changeToStream(m_streams[i]); } +void AniPlayer::markWatched() +{ + if (marked) + { + emit message(tr("File already marked")); + return; + } + + if (currentFile().isEmpty()) + return; + + using namespace LocalMyList; + File f = MyList::instance()->database()->getFileByPath(QFileInfo(currentFile()).canonicalFilePath()); + if (!f.fid) + { + emit message(tr("File not in LocalMyList!")); + return; + } + if (f.myWatched.isValid()) + { + emit message(tr("File already marked watched")); + return; + } + MyList::instance()->markWatched(f.fid); + emit message(tr("Mark watched request submitted to LocalMyList")); + + marked = true; +} + +void AniPlayer::setAutomark(int mark) +{ + if (m_automark != mark) { + m_automark = mark; + emit automarkChanged(mark); + } +} + void AniPlayer::timerEvent(QTimerEvent *e) { if (e->timerId() != tickTimer.timerId()) @@ -175,6 +228,9 @@ void AniPlayer::timerEvent(QTimerEvent *e) lastTick = ct; emit tick(ct); + + if (!marked && m_automark && (100 * ct / totalTime()) > m_automark) + markWatched(); } bool AniPlayer::seekInternal(qint64 position) diff --git a/aniplayer/aniplayer.h b/aniplayer/aniplayer.h index 31d4676..daad017 100644 --- a/aniplayer/aniplayer.h +++ b/aniplayer/aniplayer.h @@ -47,6 +47,7 @@ class ANIPLAYERSHARED_EXPORT AniPlayer : public QObject Q_PROPERTY(qint64 tickInterval READ tickInterval WRITE setTickInterval NOTIFY tickIntervalChanged) Q_PROPERTY(ChapterList chapters READ chapters NOTIFY chaptersChanged) Q_PROPERTY(StreamList streams READ streams NOTIFY streamsChanged) + Q_PROPERTY(int automark READ automark WRITE setAutomark NOTIFY automarkChanged) public: enum State @@ -85,6 +86,8 @@ public: StreamList streams() const; Stream *stream(int i) const; + int automark() const; + public slots: bool open(const QString &file); void play(); @@ -110,6 +113,10 @@ public slots: bool changeToStream(Stream *stream); bool changeToStream(int i); + // LML + void markWatched(); + void setAutomark(int mark); + signals: void stateChanged(AniPlayer::State newState); void stateChanged(AniPlayer::State newState, AniPlayer::State oldState); @@ -128,6 +135,10 @@ signals: void chaptersChanged(ChapterList chapters); void streamsChanged(StreamList streams); + void automarkChanged(int mark); + + void message(const QString &message); + protected slots: void fileFinished(); @@ -168,6 +179,10 @@ protected: qint64 lastTick; QBasicTimer tickTimer; static const int TICK_TIMER_INTERVAL = 16; + + // LML + int m_automark; + bool marked; }; #endif // ANIPLAYER_H diff --git a/aniplayer/aniplayer.pro b/aniplayer/aniplayer.pro index 73438e1..47029bc 100644 --- a/aniplayer/aniplayer.pro +++ b/aniplayer/aniplayer.pro @@ -1,4 +1,4 @@ -QT += core gui +QT += core gui sql greaterThan(QT_MAJOR_VERSION, 4): QT += widgets @@ -14,12 +14,12 @@ HEADERS += aniplayer_global.h \ aniplayerapplication.h \ aniplayer.h \ videowidget.h \ - volumeslider.h + volumeslider.h SOURCES += aniplayer.cpp \ videowidget.cpp \ aniplayerapplication.cpp \ - volumeslider.cpp + volumeslider.cpp include(../config.pri) @@ -27,3 +27,5 @@ include(../qtsingleapplication/qtsingleapplication.pri) REV = $$system(git show-ref --head -s HEAD) DEFINES += REVISION=\"$${REV}\" + +LIBS += -llocalmylist diff --git a/player/mainwindow.cpp b/player/mainwindow.cpp index 19ee8d6..efb0cc6 100644 --- a/player/mainwindow.cpp +++ b/player/mainwindow.cpp @@ -72,7 +72,7 @@ MainWindow::MainWindow(QWidget *parent) : connect(player, SIGNAL(stateChanged(AniPlayer::State, AniPlayer::State)), this, SLOT(handleStateChange(AniPlayer::State,AniPlayer::State))); // connect(videoPlayer->mediaController(), SIGNAL(availableSubtitlesChanged()), this, SLOT(updateSubtitles())); -// connect(m_actions["markWatched"], SIGNAL(triggered()), this, SLOT(markWatched())); + connect(m_actions["markWatched"], SIGNAL(triggered()), player, SLOT(markWatched())); // connect(m_actions["settings"], SIGNAL(triggered()), this, SLOT(anidbSettings())); connect(m_actions["about"], SIGNAL(triggered()), this, SLOT(about())); @@ -106,6 +106,9 @@ MainWindow::MainWindow(QWidget *parent) : connect(menu->volumeSlider(), SIGNAL(volumeChangedByUser(double)), player, SLOT(setVolume(double))); connect(player, SIGNAL(mutedChanged(bool)), menu->volumeSlider(), SLOT(setMuted(bool))); connect(menu->volumeSlider(), SIGNAL(mutedChangedByUser(bool)), player, SLOT(setMuted(bool))); + + connect(player, SIGNAL(message(QString)), menu, SLOT(showMessage(QString))); + setCentralWidget(player->videoWidget()); handleStateChange(player->state(), player->state()); @@ -477,6 +480,9 @@ void MainWindow::saveSettings() settings.setValue("state", menu->saveState()); settings.setValue("isVisible", menu->isVisible()); settings.endGroup(); + settings.beginGroup("anidbudpapiclient"); + settings.setValue("automark", player->automark()); + settings.endGroup(); } void MainWindow::loadSettings() @@ -499,7 +505,7 @@ void MainWindow::loadSettings() menu->setVisible(settings.value("isVisible", true).toBool()); settings.endGroup(); settings.beginGroup("anidbudpapiclient"); -// m_automark = settings.value("automark", 0).toInt(); + player->setAutomark(settings.value("automark", 0).toInt()); // m_automarkPaths = settings.value("paths", QStringList()).toStringList(); settings.endGroup(); }