Guitar
RepositoryTreeWidget.h
Go to the documentation of this file.
1 #ifndef REPOSITORYTREEWIDGET_H
2 #define REPOSITORYTREEWIDGET_H
3 
4 #include <QTreeWidget>
5 #include "IncrementalSearch.h"
6 #include "RepositoryInfo.h"
7 
8 class MainWindow;
9 struct RepositoryInfo;
10 
11 class RepositoryTreeWidgetItem : public QTreeWidgetItem {
12 public:
13  enum {
14  IndexRole = Qt::UserRole,
15 
16  };
17 
18 };
19 
20 class RepositoryTreeWidget : public QTreeWidget {
21  Q_OBJECT
23 public:
24  enum class RepositoryListStyle {
25  _Keep,
26  Standard,
27  SortRecent,
28  };
29  enum {
30  GroupItem = -1,
31  };
32 private:
33  struct Private;
36  QTreeWidgetItem *current_item = nullptr;
37  std::shared_ptr<AbstractIncrementalFilter> makeFilter() const;
39 protected:
40  void paintEvent(QPaintEvent *event) override;
41  void dropEvent(QDropEvent *event) override;
42  void dragEnterEvent(QDragEnterEvent *event) override;
43 private:
44  enum Type {
47  };
48  static RepositoryTreeWidgetItem *newQTreeWidgetItem(const QString &name, Type kind, int index);
49  std::shared_ptr<AbstractIncrementalFilter> makeFilter(const QString &filtertext);
50 public:
51  static RepositoryTreeWidgetItem *newQTreeWidgetGroupItem(QString const &name);
52  static RepositoryTreeWidgetItem *newQTreeWidgetRepositoryItem(const QString &name, int index);
53 public:
54  explicit RepositoryTreeWidget(QWidget *parent = nullptr);
56  void enableDragAndDrop(bool enabled);
57  bool isFiltered() const;
58  void setFilter(std::shared_ptr<AbstractIncrementalFilter> filter);
61  void updateList(RepositoryTreeWidget::RepositoryListStyle style, const QList<RepositoryInfo> &repos, const QString &filtertext, int select_row);
62  static RepositoryTreeWidgetItem *item_cast(QTreeWidgetItem *item);
63  static int repoIndex(QTreeWidgetItem *item);
64  static void setRepoIndex(QTreeWidgetItem *item, int index);
65  static bool isGroupItem(QTreeWidgetItem *item);
66  static QString treeItemName(QTreeWidgetItem *item);
67  static QString treeItemGroup(QTreeWidgetItem *item);
68  static QString treeItemPath(QTreeWidgetItem *item);
69 signals:
70  void dropped();
71 };
72 
73 #endif // REPOSITORYTREEWIDGET_H
Definition: MainWindow.h:90
Definition: RepositoryTreeWidget.cpp:14
Definition: RepositoryTreeWidget.h:11
@ IndexRole
Definition: RepositoryTreeWidget.h:14
Definition: RepositoryTreeWidget.h:20
void dropEvent(QDropEvent *event) override
Definition: RepositoryTreeWidget.cpp:411
static QString treeItemName(QTreeWidgetItem *item)
Definition: RepositoryTreeWidget.cpp:363
static QString treeItemGroup(QTreeWidgetItem *item)
Definition: RepositoryTreeWidget.cpp:368
std::shared_ptr< AbstractIncrementalFilter > makeFilter() const
Definition: RepositoryTreeWidget.cpp:145
void enableDragAndDrop(bool enabled)
Definition: RepositoryTreeWidget.cpp:98
~RepositoryTreeWidget()
Definition: RepositoryTreeWidget.cpp:93
RepositoryTreeWidget(QWidget *parent=nullptr)
Definition: RepositoryTreeWidget.cpp:79
Type
Definition: RepositoryTreeWidget.h:44
@ Group
Definition: RepositoryTreeWidget.h:45
@ Repository
Definition: RepositoryTreeWidget.h:46
RepositoryListStyle current_repository_list_style_
Definition: RepositoryTreeWidget.h:38
MainWindow * mainwindow()
Definition: RepositoryTreeWidget.cpp:394
void updateList(RepositoryTreeWidget::RepositoryListStyle style, const QList< RepositoryInfo > &repos, const QString &filtertext, int select_row)
Definition: RepositoryTreeWidget.cpp:172
static QString treeItemPath(QTreeWidgetItem *item)
Definition: RepositoryTreeWidget.cpp:384
@ GroupItem
Definition: RepositoryTreeWidget.h:30
void setRepositoryListStyle(RepositoryListStyle style)
Definition: RepositoryTreeWidget.cpp:155
void dragEnterEvent(QDragEnterEvent *event) override
Definition: RepositoryTreeWidget.cpp:399
bool isFiltered() const
Definition: RepositoryTreeWidget.cpp:106
static RepositoryTreeWidgetItem * item_cast(QTreeWidgetItem *item)
Definition: RepositoryTreeWidget.cpp:336
void setFilter(std::shared_ptr< AbstractIncrementalFilter > filter)
Definition: RepositoryTreeWidget.cpp:140
static RepositoryTreeWidgetItem * newQTreeWidgetRepositoryItem(const QString &name, int index)
Definition: RepositoryTreeWidget.cpp:135
static void setRepoIndex(QTreeWidgetItem *item, int index)
Definition: RepositoryTreeWidget.cpp:347
void paintEvent(QPaintEvent *event) override
Definition: RepositoryTreeWidget.cpp:150
QTreeWidgetItem * current_item
Definition: RepositoryTreeWidget.h:36
RepositoryListStyle currentRepositoryListStyle() const
Definition: RepositoryTreeWidget.cpp:389
static int repoIndex(QTreeWidgetItem *item)
Definition: RepositoryTreeWidget.cpp:341
static bool isGroupItem(QTreeWidgetItem *item)
Definition: RepositoryTreeWidget.cpp:352
RepositoryListStyle
Definition: RepositoryTreeWidget.h:24
static RepositoryTreeWidgetItem * newQTreeWidgetGroupItem(QString const &name)
Definition: RepositoryTreeWidget.cpp:130
Private * m
Definition: RepositoryTreeWidget.h:33
static RepositoryTreeWidgetItem * newQTreeWidgetItem(const QString &name, Type kind, int index)
Definition: RepositoryTreeWidget.cpp:111
Definition: RepositoryInfo.h:7
Definition: RepositoryTreeWidget.cpp:73