[videodb] remove unused seasons table from episode_view
[xbmc.git] / xbmc / video / jobs / VideoLibraryResetResumePointJob.cpp
blob1c9d2c768d2b759fd003bb99608f0553cdc458e2
1 /*
2 * Copyright (C) 2017-2018 Team Kodi
3 * This file is part of Kodi - https://kodi.tv
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
7 */
9 #include "VideoLibraryResetResumePointJob.h"
11 #include "FileItem.h"
12 #include "FileItemList.h"
13 #include "ServiceBroker.h"
14 #include "Util.h"
15 #include "filesystem/IDirectory.h"
17 #include <vector>
18 #ifdef HAS_UPNP
19 #include "network/upnp/UPnP.h"
20 #endif
21 #include "profiles/ProfileManager.h"
22 #include "pvr/PVRManager.h"
23 #include "pvr/recordings/PVRRecordings.h"
24 #include "settings/SettingsComponent.h"
25 #include "utils/URIUtils.h"
26 #include "video/VideoDatabase.h"
28 CVideoLibraryResetResumePointJob::CVideoLibraryResetResumePointJob(
29 const std::shared_ptr<CFileItem>& item)
30 : m_item(item)
34 bool CVideoLibraryResetResumePointJob::operator==(const CJob* job) const
36 if (strcmp(job->GetType(), GetType()) != 0)
37 return false;
39 const CVideoLibraryResetResumePointJob* resetJob = dynamic_cast<const CVideoLibraryResetResumePointJob*>(job);
40 if (!resetJob)
41 return false;
43 return m_item->IsSamePath(resetJob->m_item.get());
46 bool CVideoLibraryResetResumePointJob::Work(CVideoDatabase &db)
48 const std::shared_ptr<CProfileManager> profileManager = CServiceBroker::GetSettingsComponent()->GetProfileManager();
50 if (!profileManager->GetCurrentProfile().canWriteDatabases())
51 return false;
53 CFileItemList items;
54 items.Add(std::make_shared<CFileItem>(*m_item));
56 if (m_item->m_bIsFolder)
57 CUtil::GetRecursiveListing(m_item->GetPath(), items, "", XFILE::DIR_FLAG_NO_FILE_INFO);
59 std::vector<CFileItemPtr> resetItems;
60 for (const auto& item : items)
62 #ifdef HAS_UPNP
63 if (URIUtils::IsUPnP(item->GetPath()) && UPNP::CUPnP::SaveFileState(*item, CBookmark(), false /* updatePlayCount */))
64 continue;
65 #endif
67 if (item->HasPVRRecordingInfoTag() &&
68 CServiceBroker::GetPVRManager().Recordings()->ResetResumePoint(item->GetPVRRecordingInfoTag()))
69 continue;
71 resetItems.emplace_back(item);
74 if (resetItems.empty())
75 return true;
77 db.BeginTransaction();
79 for (const auto& resetItem : resetItems)
81 db.DeleteResumeBookMark(*resetItem);
84 db.CommitTransaction();
85 db.Close();
87 return true;