本文整理汇总了C++中CAddonDatabase::SetLastUpdated方法的典型用法代码示例。如果您正苦于以下问题:C++ CAddonDatabase::SetLastUpdated方法的具体用法?C++ CAddonDatabase::SetLastUpdated怎么用?C++ CAddonDatabase::SetLastUpdated使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CAddonDatabase
的用法示例。
在下文中一共展示了CAddonDatabase::SetLastUpdated方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: DoWork
//.........这里部分代码省略.........
}
// zip passed in - download + extract
if (!CFile::Exists(package))
{
std::string path(m_addon->Path());
if (!DownloadPackage(path, dest))
{
CFile::Delete(package);
CLog::Log(LOGERROR, "CAddonInstallJob[%s]: failed to download %s", m_addon->ID().c_str(), package.c_str());
ReportInstallError(m_addon->ID(), URIUtils::GetFileName(package));
return false;
}
}
// at this point we have the package - check that it is valid
SetText(g_localizeStrings.Get(24077));
if (!m_hash.empty())
{
md5 = CUtil::GetFileMD5(package);
if (!StringUtils::EqualsNoCase(md5, m_hash))
{
CFile::Delete(package);
CLog::Log(LOGERROR, "CAddonInstallJob[%s]: MD5 mismatch after download %s", m_addon->ID().c_str(), package.c_str());
ReportInstallError(m_addon->ID(), URIUtils::GetFileName(package));
return false;
}
db.AddPackage(m_addon->ID(), package, md5);
}
// check the archive as well - should have just a single folder in the root
CURL archive = URIUtils::CreateArchivePath("zip", CURL(package), "");
CFileItemList archivedFiles;
CDirectory::GetDirectory(archive, archivedFiles);
if (archivedFiles.Size() != 1 || !archivedFiles[0]->m_bIsFolder)
{
// invalid package
db.RemovePackage(package);
CFile::Delete(package);
CLog::Log(LOGERROR, "CAddonInstallJob[%s]: invalid package %s", m_addon->ID().c_str(), package.c_str());
ReportInstallError(m_addon->ID(), URIUtils::GetFileName(package));
return false;
}
installFrom = archivedFiles[0]->GetPath();
}
}
// run any pre-install functions
ADDON::OnPreInstall(m_addon);
// perform install
if (!Install(installFrom, m_repo))
return false;
CAddonMgr::GetInstance().UnregisterAddon(m_addon->ID());
CAddonMgr::GetInstance().FindAddons();
if (!CAddonMgr::GetInstance().GetAddon(m_addon->ID(), m_addon, ADDON_UNKNOWN, false))
{
CLog::Log(LOGERROR, "CAddonInstallJob[%s]: failed to reload addon", m_addon->ID().c_str());
return false;
}
g_localizeStrings.LoadAddonStrings(URIUtils::AddFileToFolder(m_addon->Path(), "resources/language/"),
CSettings::GetInstance().GetString(CSettings::SETTING_LOCALE_LANGUAGE), m_addon->ID());
ADDON::OnPostInstall(m_addon, m_update, IsModal());
//Enable it if it was previously disabled
CAddonMgr::GetInstance().EnableAddon(m_addon->ID());
if (m_update)
{
auto& addon = m_addon;
auto time = CDateTime::GetCurrentDateTime();
CJobManager::GetInstance().Submit([addon, time](){
CAddonDatabase db;
if (db.Open())
db.SetLastUpdated(addon->ID(), time);
});
}
// notify any observers that add-ons have changed
CAddonMgr::GetInstance().NotifyObservers(ObservableMessageAddons);
CEventLog::GetInstance().Add(
EventPtr(new CAddonManagementEvent(m_addon, m_update ? 24065 : 24064)),
!IsModal() && CSettings::GetInstance().GetBool(CSettings::SETTING_ADDONS_NOTIFICATIONS), false);
// and we're done!
MarkFinished();
return true;
}
示例2: DoWork
//.........这里部分代码省略.........
{
db.RemovePackage(package);
CFile::Delete(package);
}
}
// zip passed in - download + extract
if (!CFile::Exists(package))
{
std::string path(m_addon->Path());
if (!DownloadPackage(path, dest))
{
CFile::Delete(package);
CLog::Log(LOGERROR, "CAddonInstallJob[%s]: failed to download %s", m_addon->ID().c_str(), package.c_str());
ReportInstallError(m_addon->ID(), URIUtils::GetFileName(package));
return false;
}
}
// at this point we have the package - check that it is valid
SetText(g_localizeStrings.Get(24077));
if (!m_hash.empty())
{
md5 = CUtil::GetFileMD5(package);
if (!StringUtils::EqualsNoCase(md5, m_hash))
{
CFile::Delete(package);
CLog::Log(LOGERROR, "CAddonInstallJob[%s]: MD5 mismatch after download. Expected %s, was %s",
m_addon->ID().c_str(), m_hash.c_str(), md5.c_str());
ReportInstallError(m_addon->ID(), URIUtils::GetFileName(package));
return false;
}
db.AddPackage(m_addon->ID(), package, md5);
}
// check if the archive is valid
CURL archive = URIUtils::CreateArchivePath("zip", CURL(package), "");
CFileItemList archivedFiles;
AddonPtr temp;
if (!CDirectory::GetDirectory(archive, archivedFiles) ||
archivedFiles.Size() != 1 || !archivedFiles[0]->m_bIsFolder ||
!CAddonMgr::GetInstance().LoadAddonDescription(archivedFiles[0]->GetPath(), temp))
{
CLog::Log(LOGERROR, "CAddonInstallJob[%s]: invalid package %s", m_addon->ID().c_str(), package.c_str());
db.RemovePackage(package);
CFile::Delete(package);
ReportInstallError(m_addon->ID(), URIUtils::GetFileName(package));
return false;
}
installFrom = package;
}
}
// run any pre-install functions
ADDON::OnPreInstall(m_addon);
// perform install
if (!Install(installFrom, m_repo))
return false;
if (!CAddonMgr::GetInstance().ReloadAddon(m_addon))
{
CLog::Log(LOGERROR, "CAddonInstallJob[%s]: failed to reload addon", m_addon->ID().c_str());
return false;
}
g_localizeStrings.LoadAddonStrings(URIUtils::AddFileToFolder(m_addon->Path(), "resources/language/"),
CServiceBroker::GetSettings().GetString(CSettings::SETTING_LOCALE_LANGUAGE), m_addon->ID());
ADDON::OnPostInstall(m_addon, m_isUpdate, IsModal());
{
CAddonDatabase database;
database.Open();
database.SetOrigin(m_addon->ID(), m_repo ? m_repo->ID() : "");
if (m_isUpdate)
database.SetLastUpdated(m_addon->ID(), CDateTime::GetCurrentDateTime());
}
bool notify = (CServiceBroker::GetSettings().GetBool(CSettings::SETTING_ADDONS_NOTIFICATIONS)
|| !m_isAutoUpdate) && !IsModal();
CEventLog::GetInstance().Add(
EventPtr(new CAddonManagementEvent(m_addon, m_isUpdate ? 24065 : 24084)), notify, false);
if (m_isAutoUpdate && !m_addon->Broken().empty())
{
CLog::Log(LOGDEBUG, "CAddonInstallJob[%s]: auto-disabling due to being marked as broken", m_addon->ID().c_str());
CAddonMgr::GetInstance().DisableAddon(m_addon->ID());
CEventLog::GetInstance().Add(EventPtr(new CAddonManagementEvent(m_addon, 24094)), true, false);
}
// and we're done!
MarkFinished();
return true;
}