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  const MigemoFilter &filter() 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 public:
50  static RepositoryTreeWidgetItem *newQTreeWidgetGroupItem(QString const &name);
51  static RepositoryTreeWidgetItem *newQTreeWidgetRepositoryItem(const QString &name, int index);
52 public:
53  explicit RepositoryTreeWidget(QWidget *parent = nullptr);
55  void enableDragAndDrop(bool enabled);
56  bool isFiltered() const;
57  void setFilter(const MigemoFilter &filter);
60  void updateList(RepositoryTreeWidget::RepositoryListStyle style, const QList<RepositoryInfo> &repos, const QString &filtertext, int select_row);
61  static RepositoryTreeWidgetItem *item_cast(QTreeWidgetItem *item);
62  static int repoIndex(QTreeWidgetItem *item);
63  static void setRepoIndex(QTreeWidgetItem *item, int index);
64  static bool isGroupItem(QTreeWidgetItem *item);
65  static QString treeItemName(QTreeWidgetItem *item);
66  static QString treeItemGroup(QTreeWidgetItem *item);
67  static QString treeItemPath(QTreeWidgetItem *item);
68 signals:
69  void dropped();
70 };
71 
72 #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:404
void setFilter(const MigemoFilter &filter)
Definition: RepositoryTreeWidget.cpp:139
static QString treeItemName(QTreeWidgetItem *item)
Definition: RepositoryTreeWidget.cpp:356
static QString treeItemGroup(QTreeWidgetItem *item)
Definition: RepositoryTreeWidget.cpp:361
void enableDragAndDrop(bool enabled)
Definition: RepositoryTreeWidget.cpp:95
~RepositoryTreeWidget()
Definition: RepositoryTreeWidget.cpp:90
RepositoryTreeWidget(QWidget *parent=nullptr)
Definition: RepositoryTreeWidget.cpp:78
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:387
void updateList(RepositoryTreeWidget::RepositoryListStyle style, const QList< RepositoryInfo > &repos, const QString &filtertext, int select_row)
Definition: RepositoryTreeWidget.cpp:165
static QString treeItemPath(QTreeWidgetItem *item)
Definition: RepositoryTreeWidget.cpp:377
void setRepositoryListStyle(RepositoryListStyle style)
Definition: RepositoryTreeWidget.cpp:154
void dragEnterEvent(QDragEnterEvent *event) override
Definition: RepositoryTreeWidget.cpp:392
bool isFiltered() const
Definition: RepositoryTreeWidget.cpp:103
static RepositoryTreeWidgetItem * item_cast(QTreeWidgetItem *item)
Definition: RepositoryTreeWidget.cpp:329
@ GroupItem
Definition: RepositoryTreeWidget.h:30
static RepositoryTreeWidgetItem * newQTreeWidgetRepositoryItem(const QString &name, int index)
Definition: RepositoryTreeWidget.cpp:134
static void setRepoIndex(QTreeWidgetItem *item, int index)
Definition: RepositoryTreeWidget.cpp:340
void paintEvent(QPaintEvent *event) override
Definition: RepositoryTreeWidget.cpp:149
QTreeWidgetItem * current_item
Definition: RepositoryTreeWidget.h:36
RepositoryListStyle currentRepositoryListStyle() const
Definition: RepositoryTreeWidget.cpp:382
static int repoIndex(QTreeWidgetItem *item)
Definition: RepositoryTreeWidget.cpp:334
static bool isGroupItem(QTreeWidgetItem *item)
Definition: RepositoryTreeWidget.cpp:345
const MigemoFilter & filter() const
Definition: RepositoryTreeWidget.cpp:144
RepositoryListStyle
Definition: RepositoryTreeWidget.h:24
static RepositoryTreeWidgetItem * newQTreeWidgetGroupItem(QString const &name)
Definition: RepositoryTreeWidget.cpp:129
Private * m
Definition: RepositoryTreeWidget.h:33
static RepositoryTreeWidgetItem * newQTreeWidgetItem(const QString &name, Type kind, int index)
Definition: RepositoryTreeWidget.cpp:110
Definition: IncrementalSearch.h:34
Definition: RepositoryInfo.h:7
Definition: RepositoryTreeWidget.cpp:73