111 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			111 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| #pragma once
 | |
| 
 | |
| #include <memory>
 | |
| #include <QList>
 | |
| #include <QJsonDocument>
 | |
| #include <QDateTime>
 | |
| #include "meta/JsonFormat.h"
 | |
| #include "ProblemProvider.h"
 | |
| #include "QObjectPtr.h"
 | |
| 
 | |
| class PackProfile;
 | |
| class LaunchProfile;
 | |
| namespace Meta
 | |
| {
 | |
|     class Version;
 | |
|     class VersionList;
 | |
| }
 | |
| class VersionFile;
 | |
| 
 | |
| class Component : public QObject, public ProblemProvider
 | |
| {
 | |
| Q_OBJECT
 | |
| public:
 | |
|     Component(PackProfile * parent, const QString &uid);
 | |
| 
 | |
|     // DEPRECATED: remove these constructors?
 | |
|     Component(PackProfile * parent, std::shared_ptr<Meta::Version> version);
 | |
|     Component(PackProfile * parent, const QString & uid, std::shared_ptr<VersionFile> file);
 | |
| 
 | |
|     virtual ~Component(){};
 | |
|     void applyTo(LaunchProfile *profile);
 | |
| 
 | |
|     bool isEnabled();
 | |
|     bool setEnabled (bool state);
 | |
|     bool canBeDisabled();
 | |
| 
 | |
|     bool isMoveable();
 | |
|     bool isCustomizable();
 | |
|     bool isRevertible();
 | |
|     bool isRemovable();
 | |
|     bool isCustom();
 | |
|     bool isVersionChangeable();
 | |
| 
 | |
|     // DEPRECATED: explicit numeric order values, used for loading old non-component config. TODO: refactor and move to migration code
 | |
|     void setOrder(int order);
 | |
|     int getOrder();
 | |
| 
 | |
|     QString getID();
 | |
|     QString getName();
 | |
|     QString getVersion();
 | |
|     std::shared_ptr<Meta::Version> getMeta();
 | |
|     QDateTime getReleaseDateTime();
 | |
| 
 | |
|     QString getFilename();
 | |
| 
 | |
|     std::shared_ptr<class VersionFile> getVersionFile() const;
 | |
|     std::shared_ptr<class Meta::VersionList> getVersionList() const;
 | |
| 
 | |
|     void setImportant (bool state);
 | |
| 
 | |
| 
 | |
|     const QList<PatchProblem> getProblems() const override;
 | |
|     ProblemSeverity getProblemSeverity() const override;
 | |
| 
 | |
|     void setVersion(const QString & version);
 | |
|     bool customize();
 | |
|     bool revert();
 | |
| 
 | |
|     void updateCachedData();
 | |
| 
 | |
| signals:
 | |
|     void dataChanged();
 | |
| 
 | |
| public: /* data */
 | |
|     PackProfile * m_parent;
 | |
| 
 | |
|     // BEGIN: persistent component list properties
 | |
|     /// ID of the component
 | |
|     QString m_uid;
 | |
|     /// version of the component - when there's a custom json override, this is also the version the component reverts to
 | |
|     QString m_version;
 | |
|     /// if true, this has been added automatically to satisfy dependencies and may be automatically removed
 | |
|     bool m_dependencyOnly = false;
 | |
|     /// if true, the component is either the main component of the instance, or otherwise important and cannot be removed.
 | |
|     bool m_important = false;
 | |
|     /// if true, the component is disabled
 | |
|     bool m_disabled = false;
 | |
| 
 | |
|     /// cached name for display purposes, taken from the version file (meta or local override)
 | |
|     QString m_cachedName;
 | |
|     /// cached version for display AND other purposes, taken from the version file (meta or local override)
 | |
|     QString m_cachedVersion;
 | |
|     /// cached set of requirements, taken from the version file (meta or local override)
 | |
|     Meta::RequireSet m_cachedRequires;
 | |
|     Meta::RequireSet m_cachedConflicts;
 | |
|     /// if true, the component is volatile and may be automatically removed when no longer needed
 | |
|     bool m_cachedVolatile = false;
 | |
|     // END: persistent component list properties
 | |
| 
 | |
|     // DEPRECATED: explicit numeric order values, used for loading old non-component config. TODO: refactor and move to migration code
 | |
|     bool m_orderOverride = false;
 | |
|     int m_order = 0;
 | |
| 
 | |
|     // load state
 | |
|     std::shared_ptr<Meta::Version> m_metaVersion;
 | |
|     std::shared_ptr<VersionFile> m_file;
 | |
|     bool m_loaded = false;
 | |
| };
 | |
| 
 | |
| typedef shared_qobject_ptr<Component> ComponentPtr;
 |