summaryrefslogtreecommitdiffstats
path: root/xbmc/video/jobs/VideoLibraryCleaningJob.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'xbmc/video/jobs/VideoLibraryCleaningJob.cpp')
-rw-r--r--xbmc/video/jobs/VideoLibraryCleaningJob.cpp45
1 files changed, 45 insertions, 0 deletions
diff --git a/xbmc/video/jobs/VideoLibraryCleaningJob.cpp b/xbmc/video/jobs/VideoLibraryCleaningJob.cpp
new file mode 100644
index 0000000..7f4adfd
--- /dev/null
+++ b/xbmc/video/jobs/VideoLibraryCleaningJob.cpp
@@ -0,0 +1,45 @@
+/*
+ * 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 "VideoLibraryCleaningJob.h"
+
+#include "dialogs/GUIDialogExtendedProgressBar.h"
+#include "video/VideoDatabase.h"
+
+CVideoLibraryCleaningJob::CVideoLibraryCleaningJob(const std::set<int>& paths /* = std::set<int>() */, bool showDialog /* = false */)
+ : CVideoLibraryProgressJob(NULL),
+ m_paths(paths),
+ m_showDialog(showDialog)
+{ }
+
+CVideoLibraryCleaningJob::CVideoLibraryCleaningJob(const std::set<int>& paths, CGUIDialogProgressBarHandle* progressBar)
+ : CVideoLibraryProgressJob(progressBar),
+ m_paths(paths),
+ m_showDialog(false)
+{ }
+
+CVideoLibraryCleaningJob::~CVideoLibraryCleaningJob() = default;
+
+bool CVideoLibraryCleaningJob::operator==(const CJob* job) const
+{
+ if (strcmp(job->GetType(), GetType()) != 0)
+ return false;
+
+ const CVideoLibraryCleaningJob* cleaningJob = dynamic_cast<const CVideoLibraryCleaningJob*>(job);
+ if (cleaningJob == NULL)
+ return false;
+
+ return m_paths == cleaningJob->m_paths &&
+ m_showDialog == cleaningJob->m_showDialog;
+}
+
+bool CVideoLibraryCleaningJob::Work(CVideoDatabase &db)
+{
+ db.CleanDatabase(GetProgressBar(), m_paths, m_showDialog);
+ return true;
+}