#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()
{
return m_streams[i];
}
+int AniPlayer::automark() const
+{
+ return m_automark;
+}
+
bool AniPlayer::open(const QString &file)
{
if (file == m_currentFile)
setState(Stopped);
m_currentFile = file;
+ marked = false;
emit currentFileChanged(m_currentFile);
emit totalTimeChanged(totalTime());
emit videoSizeChanged(videoSize());
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())
lastTick = ct;
emit tick(ct);
+
+ if (!marked && m_automark && (100 * ct / totalTime()) > m_automark)
+ markWatched();
}
bool AniPlayer::seekInternal(qint64 position)
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
StreamList streams() const;
Stream *stream(int i) const;
+ int automark() const;
+
public slots:
bool open(const QString &file);
void play();
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);
void chaptersChanged(ChapterList chapters);
void streamsChanged(StreamList streams);
+ void automarkChanged(int mark);
+
+ void message(const QString &message);
+
protected slots:
void fileFinished();
qint64 lastTick;
QBasicTimer tickTimer;
static const int TICK_TIMER_INTERVAL = 16;
+
+ // LML
+ int m_automark;
+ bool marked;
};
#endif // ANIPLAYER_H
-QT += core gui
+QT += core gui sql
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
aniplayerapplication.h \
aniplayer.h \
videowidget.h \
- volumeslider.h
+ volumeslider.h
SOURCES += aniplayer.cpp \
videowidget.cpp \
aniplayerapplication.cpp \
- volumeslider.cpp
+ volumeslider.cpp
include(../config.pri)
REV = $$system(git show-ref --head -s HEAD)
DEFINES += REVISION=\"$${REV}\"
+
+LIBS += -llocalmylist
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()));
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());
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()
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();
}