gitbranch.h 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. #ifndef GITBRANCH_H
  2. #define GITBRANCH_H
  3. #include <gitreference.h>
  4. #include <git2/types.h>
  5. struct git_oid;
  6. class CommitModel;
  7. class GitBranch : public GitReference
  8. {
  9. Q_OBJECT
  10. Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged)
  11. Q_PROPERTY(BranchType type READ type CONSTANT)
  12. Q_ENUMS(BranchType)
  13. public:
  14. enum BranchType {
  15. Local = GIT_BRANCH_LOCAL,
  16. Remote = GIT_BRANCH_REMOTE
  17. };
  18. GitBranch(git_reference* ref, git_branch_t type, GitRepository* parent);
  19. virtual ~GitBranch();
  20. QString name() const {
  21. return m_name;
  22. }
  23. BranchType type() const;
  24. public slots:
  25. void setName(QString name) {
  26. if (m_name == name)
  27. return;
  28. m_name = name;
  29. emit nameChanged(name);
  30. }
  31. signals:
  32. void nameChanged(QString name);
  33. void commitsChanged(CommitModel* commits);
  34. private:
  35. void free();
  36. GitBranch();
  37. Q_DISABLE_COPY(GitBranch)
  38. QString m_name;
  39. git_annotated_commit* m_commit;
  40. BranchType m_type;
  41. };
  42. #endif // GITBRANCH_H