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