/* 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 FILESYSTEMWIDGET_H #define FILESYSTEMWIDGET_H #include #include #include #include #include #include class SmTreeView; class FilesystemDirProxy; class FileView; class FilesystemFileProxy; class QLineEdit; class PictureViewer2; class FileSystemModel; class SheMovIconProvider; class SmDirModel; class QToolBar; class QSplitter; class UnpackDialog; class Unpacker; class FilesystemWidget : public QWidget { Q_OBJECT public: enum ClipboardMode { Copy, Cut, None }; enum SelectedFiles { Current, Previous }; FilesystemWidget(QWidget *parent = 0); FileView *fileView() { return mFileView; } FilesystemFileProxy *fileProxy() { return mFileProxy; } FileSystemModel *dirModel() { return mModel; } SmDirModel *fileModel() { return mFileModel; } const QString windowTitle() const { return mWindowTitle; } PictureViewer2 *pictureViewer() { return mPicViewer; } QToolBar *toolBar() { return mToolBar; } bool isMounted(); const QString currentDir() const; signals: void windowTitle(const QString &); void statusbarMessage(const QString &); void mounted(bool); void upSelected(const QString &); public slots: void directoryChanged(const QModelIndex &selected, const QModelIndex &); void directoryEdited(); void fileViewActivated(const QModelIndex &index); void parentDir(); void goBack(); void deleteFiles(); void toClipboard(int clipmode); void fromClipboard(); void renameFile(); void playSelected(const QString &player = QString()); void playSelectedRepeat(int times); void playSelectedInfinite(); void readSettings(); void writeSettings(); void configChanged(); void dvdMount(); void moveToArchive(); void selectAllPV(); void setWindowTitle(); void preview(); void unpack(); void selectUnpackDir(); void centerCurrent(); protected: void keyPressEvent(QKeyEvent *e); private slots: void dirExpanded(const QModelIndex &idx); void dirCollapsed(const QModelIndex &idx); void fileEditorClosed(const QModelIndex &idx); void resizeFileView(); private: void deleteRecursive(const QFileInfo &start); QFileInfoList getRecursive(const QFileInfo &start) const; void copyFiles(const QStringList &files, const QString &dest); void moveFiles(const QStringList &files, const QString &dest); void copyRecursive(const QFileInfo &start, const QString &destdir); const QString selectedDir(); QPair programData(const QString &prefix, const QString &preferred); QStringList selectedFiles(); QStringList mExpandedDirs; FileSystemModel *mModel; SmDirModel *mFileModel; SmTreeView *mDirView; FileView *mFileView; FilesystemDirProxy *mDirProxy; FilesystemFileProxy *mFileProxy; QToolBar *mToolBar; QLineEdit *mDirEdit; QString mWindowTitle; QString mTemplate; qint64 mSize; PictureViewer2 *mPicViewer; SheMovIconProvider *mIconProvider; QString mLastDir; QHash mLastFiles; int mClipboardMode; QSplitter *mIconDirSplitter; UnpackDialog *mUnpackDlg; }; class FileSystemModel : public QFileSystemModel { Q_OBJECT public: FileSystemModel(QObject *parent = 0); ~FileSystemModel() {} public slots: void markForClipboard(const QPersistentModelIndex &idx); void clearClipboardList(); private: void cleanup(); QHash mSeen; QSqlDatabase mDb; QSqlQuery *mDeleteFromSeenQuery; QSqlQuery *mMarkAsSeenQuery; QList mClipEntries; }; #endif