6#include <QtCore/QTimer>
9#include <imod/IModel.h>
10#include <imod/TModelWrap.h>
11#include <ilog/TLoggerCompWrap.h>
12#include <ifile/IFilePersistence.h>
13#include <ifile/IFileNameParam.h>
16#include <imtbase/TModelUpdateBinder.h>
17#include <imtcrypt/IEncryptionKeysProvider.h>
18#include <imtcrypt/IEncryptedFilePersistence.h>
19#include <imtlic/IProductInstanceInfo.h>
20#include <imtlic/ILicenseController.h>
21#include <imtlic/ILicenseStatus.h>
22#include <imtlic/IKeyRing.h>
38 typedef ilog::CLoggerComponentBase BaseClass;
42 I_REGISTER_SUBELEMENT(LicenseStatus);
44 I_REGISTER_SUBELEMENT_INTERFACE(LicenseStatus, istd::IChangeable, ExtractLicenseStatus);
45 I_REGISTER_SUBELEMENT_INTERFACE(LicenseStatus, imod::IModel, ExtractLicenseStatus);
46 I_ASSIGN(m_productInstanceCompPtr,
"ProductInstance",
"Instance of the product installation",
true,
"ProductInstance");
47 I_ASSIGN(m_productInstancePersistenceCompPtr,
"ProductInstancePersistence",
"Encrypted ersistence for the product instance",
true,
"ProductInstancePersistence");
48 I_ASSIGN_TO(m_encryptedInstancePersistenceCompPtr, m_productInstancePersistenceCompPtr,
true);
49 I_ASSIGN(m_fingerprintInstancePersistenceCompPtr,
"FingerprintInstancePersistence",
"Fingerprint persistence for the product instance",
true,
"FingerprintPersistence");
50 I_ASSIGN(m_licensePathCompPtr,
"LicenseFilePath",
"Path to the license file",
true,
"LicenseFilePath");
51 I_ASSIGN(m_licenseKeysProviderCompPtr,
"LicenseKeys",
"Provider of license keys",
false,
"LicenseKeys");
52 I_ASSIGN(m_keyRingCompPtr,
"KeyRing",
"Provider/keeper of multiple Keys",
false,
"KeyRing");
53 I_ASSIGN(m_licenseFingerprintPathCompPtr,
"LicenseFingerprintPath",
"Folder containing license fingerprint file",
false,
"LicenseFingerprintPath");
54 I_ASSIGN(m_fingerprintExpirationAttrPtr,
"FingerprintExpiration",
"Time in days for the license fingerprint expiration",
false, 5);
55 I_ASSIGN(m_additionalImportLicenseErrorMessageAttrPtr,
"AdditionalImportLicenseErrorMessage",
"Additional message for explaining possible license import problems",
false,
"");
61 virtual bool ImportLicense(
const QString& licenseFilePath, ilog::IMessageConsumer* logPtr =
nullptr)
const override;
62 virtual bool CheckLicense(
const QByteArray& key)
const override;
63 virtual bool CheckLicense(
const QByteArray& key,
const QString& licensePath)
const override;
66 void OnFingeprintCheckTimer()
const;
69 virtual void OnComponentCreated()
override;
70 virtual void OnComponentDestroyed()
override;
76 QString GetFingerprintPath()
const;
86 virtual int GetLicenseStatusFlags()
const override;
87 virtual void SetLicenseStatusFlags(
int licenseStatusFlags)
override;
88 virtual QString GetLicenseLocation()
const override;
89 virtual void SetLicenseLocation(
const QString & licenseLocation)
override;
90 virtual int GetGoodwillRemainingDays()
const override;
91 virtual void SetGoodwillRemainingDays(
int days)
override;
94 int m_licenseStatusFlags;
95 QString m_licenseLocation;
96 int m_goodwillRemainingDays;
99 template <
typename InterfaceType>
102 return &component.m_licenseStatus;
107 bool m_isInitializing;
110 I_REF(ifile::IFilePersistence, m_fingerprintInstancePersistenceCompPtr);
111 I_REF(ifile::IFilePersistence, m_productInstancePersistenceCompPtr);
113 I_REF(ifile::IFileNameParam, m_licensePathCompPtr);
114 I_REF(ifile::IFileNameParam, m_licenseFingerprintPathCompPtr);
117 I_ATTR(
int, m_fingerprintExpirationAttrPtr);
118 I_TEXTATTR(m_additionalImportLicenseErrorMessageAttrPtr);
120 QTimer m_checkLicenseTimer;
122 mutable imod::TModelWrap<LicenseStatus> m_licenseStatus;
Core licensing domain model providing feature-based product licensing and instance management.