cmodlistview_moc.h 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. /*
  2. * cmodlistview_moc.h, part of VCMI engine
  3. *
  4. * Authors: listed in file AUTHORS in main folder
  5. *
  6. * License: GNU General Public License v2.0 or later
  7. * Full text of license available in license.txt file, in main folder
  8. *
  9. */
  10. #pragma once
  11. #include "../StdInc.h"
  12. #include "../../lib/CConfigHandler.h"
  13. namespace Ui
  14. {
  15. class CModListView;
  16. }
  17. class CModManager;
  18. class CModList;
  19. class CModListModel;
  20. class CModFilterModel;
  21. class CDownloadManager;
  22. class QTableWidgetItem;
  23. class CModEntry;
  24. class CModListView : public QWidget
  25. {
  26. Q_OBJECT
  27. std::unique_ptr<CModManager> manager;
  28. CModListModel * modModel;
  29. CModFilterModel * filterModel;
  30. CDownloadManager * dlManager;
  31. void setupModModel();
  32. void setupFilterModel();
  33. void setupModsView();
  34. void checkManagerErrors();
  35. /// replace mod ID's with proper human-readable mod names
  36. QStringList getModNames(QStringList input);
  37. // find mods unknown to mod list (not present in repo and not installed)
  38. QStringList findInvalidDependencies(QString mod);
  39. // find mods that block enabling of this mod: conflicting with this mod or one of required mods
  40. QStringList findBlockingMods(QString modUnderTest);
  41. // find mods that depend on this one
  42. QStringList findDependentMods(QString mod, bool excludeDisabled);
  43. void manualInstallFile(QString filePath);
  44. void downloadFile(QString file, QString url, QString description, qint64 size = 0);
  45. void downloadFile(QString file, QUrl url, QString description, qint64 size = 0);
  46. void installMods(QStringList archives);
  47. void installMaps(QStringList maps);
  48. void installFiles(QStringList mods);
  49. QString genChangelogText(CModEntry & mod);
  50. QString genModInfoText(CModEntry & mod);
  51. void changeEvent(QEvent *event) override;
  52. void dragEnterEvent(QDragEnterEvent* event) override;
  53. void dropEvent(QDropEvent *event) override;
  54. signals:
  55. void modsChanged();
  56. public:
  57. explicit CModListView(QWidget * parent = nullptr);
  58. ~CModListView();
  59. void loadScreenshots();
  60. void loadRepositories();
  61. void disableModInfo();
  62. void selectMod(const QModelIndex & index);
  63. const CModList & getModList() const;
  64. // First Launch View interface
  65. /// install mod by name
  66. void doInstallMod(const QString & modName);
  67. /// returns true if mod is available in repository and can be installed
  68. bool isModAvailable(const QString & modName);
  69. /// finds translation mod for specified languages. Returns empty string on error
  70. QString getTranslationModName(const QString & language);
  71. /// returns true if mod is currently enabled
  72. bool isModEnabled(const QString & modName);
  73. /// returns true if mod is currently installed
  74. bool isModInstalled(const QString & modName);
  75. public slots:
  76. void enableModByName(QString modName);
  77. void disableModByName(QString modName);
  78. private slots:
  79. void dataChanged(const QModelIndex & topleft, const QModelIndex & bottomRight);
  80. void modSelected(const QModelIndex & current, const QModelIndex & previous);
  81. void downloadProgress(qint64 current, qint64 max);
  82. void extractionProgress(qint64 current, qint64 max);
  83. void downloadFinished(QStringList savedFiles, QStringList failedFiles, QStringList errors);
  84. void modelReset();
  85. void hideProgressBar();
  86. void on_lineEdit_textChanged(const QString & arg1);
  87. void on_comboBox_currentIndexChanged(int index);
  88. void on_enableButton_clicked();
  89. void on_disableButton_clicked();
  90. void on_updateButton_clicked();
  91. void on_uninstallButton_clicked();
  92. void on_installButton_clicked();
  93. void on_installFromFileButton_clicked();
  94. void on_pushButton_clicked();
  95. void on_refreshButton_clicked();
  96. void on_allModsView_activated(const QModelIndex & index);
  97. void on_tabWidget_currentChanged(int index);
  98. void on_screenshotsList_clicked(const QModelIndex & index);
  99. void on_allModsView_doubleClicked(const QModelIndex &index);
  100. private:
  101. Ui::CModListView * ui;
  102. };