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.
9 #include "VideoLibraryResetResumePointJob.h"
12 #include "FileItemList.h"
13 #include "ServiceBroker.h"
15 #include "filesystem/IDirectory.h"
19 #include "network/upnp/UPnP.h"
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
)
34 bool CVideoLibraryResetResumePointJob::operator==(const CJob
* job
) const
36 if (strcmp(job
->GetType(), GetType()) != 0)
39 const CVideoLibraryResetResumePointJob
* resetJob
= dynamic_cast<const CVideoLibraryResetResumePointJob
*>(job
);
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())
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
)
63 if (URIUtils::IsUPnP(item
->GetPath()) && UPNP::CUPnP::SaveFileState(*item
, CBookmark(), false /* updatePlayCount */))
67 if (item
->HasPVRRecordingInfoTag() &&
68 CServiceBroker::GetPVRManager().Recordings()->ResetResumePoint(item
->GetPVRRecordingInfoTag()))
71 resetItems
.emplace_back(item
);
74 if (resetItems
.empty())
77 db
.BeginTransaction();
79 for (const auto& resetItem
: resetItems
)
81 db
.DeleteResumeBookMark(*resetItem
);
84 db
.CommitTransaction();