gitrepository.h 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. #ifndef GITREPOSITORY_H
  2. #define GITREPOSITORY_H
  3. #include <QObject>
  4. #include <QString>
  5. #include <QHash>
  6. #include <QPointer>
  7. struct git_repository;
  8. class GitBranch;
  9. typedef QHash<QString, QPointer<GitBranch>> BranchContainer;
  10. class GitRepository : public QObject
  11. {
  12. Q_OBJECT
  13. Q_PROPERTY(QString root READ root WRITE setRoot NOTIFY rootChanged)
  14. Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged)
  15. Q_PROPERTY(QString path READ path NOTIFY rootChanged)
  16. public:
  17. GitRepository(const QString &root);
  18. ~GitRepository();
  19. QString root() const {
  20. return m_root;
  21. }
  22. QString name() const {
  23. return m_name;
  24. }
  25. QString path() const {
  26. return m_path;
  27. }
  28. git_repository* raw() const {
  29. return m_raw;
  30. }
  31. bool isValid() const {
  32. return m_raw != nullptr;
  33. }
  34. BranchContainer& branches() {
  35. return m_branches;
  36. }
  37. public slots:
  38. void setRoot(QString root) {
  39. if (m_root == root)
  40. return;
  41. m_root = root;
  42. emit rootChanged(root);
  43. }
  44. void setName(QString name) {
  45. if (m_name == name)
  46. return;
  47. m_name = name;
  48. emit nameChanged(name);
  49. }
  50. signals:
  51. void rootChanged(QString root);
  52. void nameChanged(QString name);
  53. private:
  54. void close();
  55. void readBranches();
  56. QString m_root;
  57. QString m_name;
  58. QString m_path;
  59. git_repository* m_raw;
  60. BranchContainer m_branches;
  61. };
  62. #endif // GITREPOSITORY_H