summaryrefslogtreecommitdiffstats
path: root/xbmc/video/jobs/VideoLibraryScanningJob.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'xbmc/video/jobs/VideoLibraryScanningJob.cpp')
-rw-r--r--xbmc/video/jobs/VideoLibraryScanningJob.cpp50
1 files changed, 50 insertions, 0 deletions
diff --git a/xbmc/video/jobs/VideoLibraryScanningJob.cpp b/xbmc/video/jobs/VideoLibraryScanningJob.cpp
new file mode 100644
index 0000000..f938420
--- /dev/null
+++ b/xbmc/video/jobs/VideoLibraryScanningJob.cpp
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2014-2018 Team Kodi
+ * This file is part of Kodi - https://kodi.tv
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ * See LICENSES/README.md for more information.
+ */
+
+#include "VideoLibraryScanningJob.h"
+
+#include "video/VideoDatabase.h"
+
+CVideoLibraryScanningJob::CVideoLibraryScanningJob(const std::string& directory, bool scanAll /* = false */, bool showProgress /* = true */)
+ : m_scanner(),
+ m_directory(directory),
+ m_showProgress(showProgress),
+ m_scanAll(scanAll)
+{ }
+
+CVideoLibraryScanningJob::~CVideoLibraryScanningJob() = default;
+
+bool CVideoLibraryScanningJob::Cancel()
+{
+ if (!m_scanner.IsScanning())
+ return true;
+
+ m_scanner.Stop();
+ return true;
+}
+
+bool CVideoLibraryScanningJob::operator==(const CJob* job) const
+{
+ if (strcmp(job->GetType(), GetType()) != 0)
+ return false;
+
+ const CVideoLibraryScanningJob* scanningJob = dynamic_cast<const CVideoLibraryScanningJob*>(job);
+ if (scanningJob == NULL)
+ return false;
+
+ return m_directory == scanningJob->m_directory &&
+ m_scanAll == scanningJob->m_scanAll;
+}
+
+bool CVideoLibraryScanningJob::Work(CVideoDatabase &db)
+{
+ m_scanner.ShowDialog(m_showProgress);
+ m_scanner.Start(m_directory, m_scanAll);
+
+ return true;
+}