cmodlist.h 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. #pragma once
  2. #include <QVariantMap>
  3. #include <QVariant>
  4. class JsonNode;
  5. namespace ModStatus
  6. {
  7. enum EModStatus
  8. {
  9. MASK_NONE = 0,
  10. ENABLED = 1,
  11. INSTALLED = 2,
  12. UPDATEABLE = 4,
  13. MASK_ALL = 255
  14. };
  15. }
  16. class CModEntry
  17. {
  18. // repository contains newest version only (if multiple are available)
  19. QVariantMap repository;
  20. QVariantMap localData;
  21. QVariantMap modSettings;
  22. QString modname;
  23. public:
  24. CModEntry(QVariantMap repository, QVariantMap localData, QVariantMap modSettings, QString modname);
  25. // installed and enabled
  26. bool isEnabled() const;
  27. // installed but disabled
  28. bool isDisabled() const;
  29. // available in any of repositories but not installed
  30. bool isAvailable() const;
  31. // installed and greater version exists in repository
  32. bool isUpdateable() const;
  33. // installed
  34. bool isInstalled() const;
  35. // see ModStatus enum
  36. int getModStatus() const;
  37. QString getName() const;
  38. // get value of some field in mod structure. Returns empty optional if value is not present
  39. QVariant getValue(QString value) const;
  40. // returns true if less < greater comparing versions section by section
  41. static bool compareVersions(QString lesser, QString greater);
  42. static QString sizeToString(double size);
  43. };
  44. class CModList
  45. {
  46. QVector<QVariantMap> repositories;
  47. QVariantMap localModList;
  48. QVariantMap modSettings;
  49. QVariantMap copyField(QVariantMap data, QString from, QString to);
  50. public:
  51. virtual void resetRepositories();
  52. virtual void addRepository(QVariantMap data);
  53. virtual void setLocalModList(QVariantMap data);
  54. virtual void setModSettings(QVariant data);
  55. virtual void modChanged(QString modID);
  56. // returns mod by name. Note: mod MUST exist
  57. CModEntry getMod(QString modname) const;
  58. // returns list of all mods necessary to run selected one, including mod itself
  59. // order is: first mods in list don't have any dependencies, last mod is modname
  60. // note: may include mods not present in list
  61. QStringList getRequirements(QString modname);
  62. bool hasMod(QString modname) const;
  63. // returns list of all available mods
  64. QVector<QString> getModList() const;
  65. };