]> Some of my projects - aniplayer2.git/commitdiff
Add mark watched support via localmylist
authorAPTX <marek321@gmail.com>
Sat, 2 Mar 2013 17:37:00 +0000 (18:37 +0100)
committerAPTX <marek321@gmail.com>
Sat, 2 Mar 2013 17:37:00 +0000 (18:37 +0100)
aniplayer/aniplayer.cpp
aniplayer/aniplayer.h
aniplayer/aniplayer.pro
player/mainwindow.cpp

index 396064f162a1aa0ec28bb7f25182b30b269483c0..f37b5c4f69536d6221084c63a2990c5a81b1d8aa 100644 (file)
@@ -3,9 +3,19 @@
 #include <QTimerEvent>
 #include <QSettings>
 
+#include <LocalMyList/MyList>
+
 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)
index 31d467646b3fd2f827bab296dc930b08f645f5d2..daad0179cc782a78728d8d48d9e62673f415523e 100644 (file)
@@ -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
index 73438e1099d2113a7a9ce36638b7acdde3ba88c3..47029bc3673f9dce0906c6d5cbf1f6a60fd0e94c 100644 (file)
@@ -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
index 19ee8d6fc7e4a90b1a109787fc67341165908812..efb0cc6b465ca63ef10263bbcc33497185c376b8 100644 (file)
@@ -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();
 }