cmodlist.h 2.1 KB

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