ImagingTools Core SDK
CInstallationInfoProviderComp.h
1// SPDX-License-Identifier: LGPL-2.1-or-later OR GPL-2.0-or-later OR GPL-3.0-or-later OR LicenseRef-ImtCore-Commercial
2#pragma once
3
4
5// ACF includes
6#include<ilog/TLoggerCompWrap.h>
7#include <ibase/IProgressManager.h>
8
9// imtupdate includes
10#include<imtupdate/IInstallationInfoProvider.h>
11#include<imtupdate/IDownloader.h>
12#include<imtupdate/CUpdateManifest.h>
13#include<imtupdate/CInstallationInfo.h>
14
15
16namespace imtupdate
17{
18
19
20class CInstallationInfoProviderComp:
21 virtual public IInstallationInfoProvider,
22 public ilog::CLoggerComponentBase
23{
24public:
25 typedef ilog::CLoggerComponentBase BaseClass;
26
27 I_BEGIN_COMPONENT(CInstallationInfoProviderComp);
28 I_REGISTER_INTERFACE(IInstallationInfoProvider);
29
30 I_ASSIGN(m_downloaderCompPtr, "ComponentDownloader", "Downloader component", true, "ComponentDownloader");
31 I_ASSIGN(m_downloadLinkAttrPtr, "InstallationInfoLink", "Link for retrieving informations about the available installtion on the server", true, "");
32 I_ASSIGN(m_productNameAttrPtr, "ProductName", "Name of the prodoct for information download", true, "");
33 I_END_COMPONENT;
34
35 void SetInstallationInfo(const CInstallationInfo& installationInfo);
36
37 // reimplemented(IInstallationInfoProvider)
38 virtual const IInstallationInfo* GetInstallationInfo() const override;
39
40protected:
41 virtual bool AcquireInstallationInfo(const QString &link, ibase::IProgressManager *progressManagerPtr = nullptr) const;
42
43private:
44 I_REF(IDownloader, m_downloaderCompPtr);
45 I_ATTR(QString, m_downloadLinkAttrPtr);
46 I_ATTR(QString, m_productNameAttrPtr);
47
48 CUpdateManifest m_manifest;
49 mutable CInstallationInfo m_installationInfo;
50};
51
52
53} // namespace imtupdate
54