1 /*
2     SPDX-FileCopyrightText: 2008 Joris Guisson <joris.guisson@gmail.com>
3     SPDX-FileCopyrightText: 2008 Ivan Vasic <ivasic@gmail.com>
4     SPDX-License-Identifier: GPL-2.0-or-later
5 */
6 
7 #ifndef KTMEDIAVIEW_H
8 #define KTMEDIAVIEW_H
9 
10 #include <KSharedConfig>
11 #include <QCheckBox>
12 #include <QListView>
13 #include <QSortFilterProxyModel>
14 
15 #include "mediafile.h"
16 
17 class QLineEdit;
18 class KToolBar;
19 
20 namespace kt
21 {
22 class MediaModel;
23 
24 /**
25  * QSortFilterProxyModel to filter out incomplete files
26  */
27 class MediaViewFilter : public QSortFilterProxyModel
28 {
29     Q_OBJECT
30 public:
31     MediaViewFilter(QObject *parent = nullptr);
32     ~MediaViewFilter() override;
33 
34     bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const override;
35 
36     /// Enable or disable showing of incomplete files
37     void setShowIncomplete(bool on);
38 
39 public Q_SLOTS:
40     void refresh();
41 
42 private:
43     bool show_incomplete;
44 };
45 
46 /**
47     @author
48 */
49 class MediaView : public QWidget
50 {
51     Q_OBJECT
52 public:
53     MediaView(MediaModel *model, QWidget *parent);
54     ~MediaView() override;
55 
56     void saveState(KSharedConfig::Ptr cfg);
57     void loadState(KSharedConfig::Ptr cfg);
58 
59 Q_SIGNALS:
60     void doubleClicked(const MediaFileRef &mf);
61 
62 private Q_SLOTS:
63     void onDoubleClicked(const QModelIndex &index);
64     void showIncompleteChanged(bool on);
65 
66 private:
67     MediaModel *model;
68     QListView *media_tree;
69     QLineEdit *search_box;
70     MediaViewFilter *filter;
71     KToolBar *tool_bar;
72     QAction *show_incomplete;
73     QAction *refresh;
74 };
75 
76 }
77 
78 #endif
79