#include <QDebug>
+namespace {
+LocalMyList::File lmlFile(const QString& file)
+{
+ LocalMyList::File f = LocalMyList::instance()->database()->getFileByPath(QFileInfo(file).absoluteFilePath());
+ if (!f.fid)
+ f = LocalMyList::instance()->database()->getFileByPath(QFileInfo(file).canonicalFilePath());
+ if (!f.fid)
+ return {};
+ return f;
+}
+}
+
AniPlayer::AniPlayer(QObject *parent) : QObject(parent), m_state(NoFileLoaded)
{
m_automark = 0;
if (file == m_currentFile)
return true;
+ emit message(tr("Opening: %1").arg(file));
+
if (!iopen(file))
return false;
return changeToStream(m_streams[i]);
}
+bool AniPlayer::next()
+{
+ if (currentFile().isEmpty())
+ return false;
+
+ LocalMyList::File f = lmlFile(currentFile());
+ if (!f.fid)
+ return false;
+
+ LocalMyList::OpenFileData nextFile = LocalMyList::instance()->database()->nextEpisode(f.fid);
+ if (!nextFile.fid)
+ return false;
+ qDebug() << "next" << nextFile.localPath;
+ if (!open(nextFile.localPath))
+ return false;
+ play();
+ return true;
+}
+
+bool AniPlayer::previous()
+{
+ if (currentFile().isEmpty())
+ return false;
+
+ LocalMyList::File f = lmlFile(currentFile());
+ if (!f.fid)
+ return false;
+
+ LocalMyList::OpenFileData nextFile = LocalMyList::instance()->database()->previousEpisode(f.fid);
+ if (!nextFile.fid)
+ return false;
+
+ if (!open(nextFile.localPath))
+ return false;
+ play();
+ return true;
+}
+
void AniPlayer::markWatched()
{
if (marked == Marked)
using namespace LocalMyList;
qDebug() << "path" << currentFile()<< QFileInfo(currentFile()).absoluteFilePath() << QFileInfo(currentFile()).canonicalFilePath();
- File f = MyList::instance()->database()->getFileByPath(QFileInfo(currentFile()).absoluteFilePath());
+ File f = lmlFile(currentFile());
if (!f.fid)
{
- f = MyList::instance()->database()->getFileByPath(QFileInfo(currentFile()).canonicalFilePath());
- if (!f.fid)
- {
- emit message(tr("File not in LocalMyList!"));
- marked = NotInMyList;
- return;
- }
+ emit message(tr("File not in LocalMyList!"));
+ marked = NotInMyList;
+ return;
}
if (f.myWatched.isValid())
{
emit streamsChanged(streams);
}
-
void AniPlayer::fileFinished()
{
ifileFinished();
connect(m_actions["opSkip"], SIGNAL(triggered()), this, SLOT(opSkip()));
connect(m_actions["back1sec"], SIGNAL(triggered()), this, SLOT(skipback()));
-// connect(m_actions["next"], SIGNAL(triggered()), playlist, SLOT(next()));
-// connect(m_actions["previous"], SIGNAL(triggered()), playlist, SLOT(previous()));
+ connect(m_actions["next"], SIGNAL(triggered()), player, SLOT(next()));
+ connect(m_actions["previous"], SIGNAL(triggered()), player, SLOT(previous()));
connect(player, SIGNAL(totalTimeChanged(qint64)), menu, SLOT(totalTimeChanged(qint64)));
connect(menu->seekSlider(), SIGNAL(seekRequested(qint64)), player, SLOT(seek(qint64)));
connect(player, SIGNAL(automarkChanged(int)), menu->seekSlider(), SLOT(setAutomark(int)));
connect(player, SIGNAL(message(QString)), menu, SLOT(showMessage(QString)));
+ connect(player, SIGNAL(currentFileChanged(QString)), this, SLOT(handleCurrentFileChanged()));
setCentralWidget(player->videoWidget());
return false;
}
-// playlist->setDirectory(fileInfo.absoluteDir());
-// playlist->setCurrent(playlist->indexOfFile(file));
-
- menu->showMessage(tr("Opening: %1").arg(file));
-
player->open(file);
-
-// updateAutomarkable();
-
- updateWindowTitle(fileInfo);
return true;
}
m_opSkip = dialog.opSkip();
}
+void MainWindow::handleCurrentFileChanged()
+{
+ updateWindowTitle(QFileInfo(player->currentFile()));
+}
+
void MainWindow::chaptersChanged()
{
/*