/* This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. */ #ifndef ARCHIVEVIEW_H #define ARCHIVEVIEW_H #include #include #include #include #include "archivemodel.h" #include "smtreeview.h" class QComboBox; class QLabel; class QLineEdit; class QSortFilterProxyModel; class ArchiveTree; class ArchiveFiles; class ArchiveProxy; class ArchiveFilesProxy; class ArchiveController; class ArchiveView : public QWidget { Q_OBJECT public: explicit ArchiveView(QWidget *parent = 0); int currentSortOrder() const; void readSettings(); void writeSettings(); ArchiveModel *archiveModel() { return mArchiveModel; } ArchiveTree *archiveTree() { return mTree; } public slots: void refreshArchive(); void expandedItems(); private slots: void setFilter(); void clearFilter(); void showDatabaseError(const QString &errorMsg); void expandItem(const QModelIndex &idx); void collapseItem(const QModelIndex &idx); private: void initController(); QComboBox *mSortOrder; QLineEdit *mFilter; ArchiveTree *mTree; ArchiveFiles *mFiles; ArchiveModel *mArchiveModel; ArchiveFilesModel *mFilesModel; ArchiveProxy *mProxy; ArchiveFilesProxy *mFilesProxy; QHash mExpandedItems; ArchiveController *mController; }; class ArchiveTree : public SmTreeView { Q_OBJECT public: explicit ArchiveTree(QWidget *parent = 0); virtual void setModel(ArchiveProxy *model); public slots: void rename(); void remove(); private: void impossible(const QString msg = tr("Unable to perform function!")); ArchiveProxy *mProxy; ArchiveModel *mModel; }; class ArchiveFiles : public SmTreeView { public: explicit ArchiveFiles(QWidget *parent = 0); }; class ArchiveProxy : public QSortFilterProxyModel { Q_OBJECT public: ArchiveProxy(QObject *parent = 0); public slots: void setFilter(const QString &filter, int sortOrder); protected: bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const; private: QRegExp mFilter; int mSortOrder; }; class ArchiveFilesProxy : public QSortFilterProxyModel { Q_OBJECT public: explicit ArchiveFilesProxy(QObject *parent = 0); }; #endif // ARCHIVEVIEW_H