1 #ifndef DIRECTORYTREEVIEWMODEL_H
2 #define DIRECTORYTREEVIEWMODEL_H
3 
4 #include "directorymodel.h"
5 #include "config/local.h"
6 #include "directorycontextmenu.h"
7 #include "directorysortmenu.h"
8 
9 #include <QObject>
10 #include <QTreeView>
11 #include <QPoint>
12 #include <QString>
13 #include <QDir>
14 #include <QEvent>
15 #include <QLineEdit>
16 #include <QComboBox>
17 #include <QToolButton>
18 
19 namespace DirectoryUi {
20   class Controller : public QObject {
21     Q_OBJECT
22 
23   public:
24     explicit Controller(QTreeView *view, QLineEdit *search, QComboBox *libswitch, QToolButton *libcfg, QToolButton *libsort, Config::Local &local_cfg, QObject *parent = nullptr);
25 
26   signals:
27     void createNewPlaylist(const QList<QDir> &filepaths);
28     void appendToCurrentPlaylist(const QList<QDir> &filepaths);
29 
30   private slots:
31     void on_search(const QString& term);
32     void on_doubleclick(const QModelIndex &index);
33 
34   private:
35     QTreeView *view;
36     Model *model;
37     QLineEdit *search;
38     Config::Local &local_conf;
39     bool restore_scroll_once;
40     DirectoryContextMenu *context_menu;
41     DirectoryUi::SortMenu *sort_menu;
42 
43     void settingsDialog(QComboBox *libswitch);
44 
45   protected:
46     bool eventFilter(QObject *obj, QEvent *event) override;
47   };
48 }
49 
50 #endif // DIRECTORYTREEVIEWMODEL_H
51