/* 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 QTreeView; class FilesystemDirProxy; class FileView; class QModelIndex; class FilesystemFileProxy; class QLineEdit; class QFileInfo; class QAction; class QVariant; class PictureViewer2; class QStringList; class FileSystemModel; class QSqlQuery; class SheMovIconProvider; class FilesystemWidget : public QWidget { Q_OBJECT public: enum ClipboardMode { Copy, Cut, None }; FilesystemWidget(QWidget *parent = 0); ~FilesystemWidget() {} FileView *fileView() { return mFileView; } FilesystemFileProxy *fileProxy() { return mFileProxy; } FileSystemModel *dirModel() { return mModel; } const QString windowTitle() const { return mWindowTitle; } PictureViewer2 *pictureViewer() { return mPicViewer; } bool isMounted(); signals: void windowTitle(const QString &); void statusbarMessage(const QString &); void mounted(bool); 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 readSettings(); void writeSettings(); void configChanged(); void dvdMount(); void markSeen(); void selectAllPV(); private slots: void dirExpanded(const QModelIndex &idx); void dirCollapsed(const QModelIndex &idx); void fileEditorClosed(const QModelIndex &idx); private: void setWindowTitle(const QString &dir); void deleteRecursive(const QFileInfo &start); 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; QTreeView *mDirView; FileView *mFileView; FilesystemDirProxy *mDirProxy; FilesystemFileProxy *mFileProxy; QLineEdit *mDirEdit; QString mWindowTitle; QString mTemplate; qint64 mSize; PictureViewer2 *mPicViewer; SheMovIconProvider *mIconProvider; QString mLastDir; int mClipboardMode; }; class FileSystemModel : public QFileSystemModel { Q_OBJECT public: FileSystemModel(QObject *parent = 0); ~FileSystemModel(); virtual QVariant data(const QModelIndex &index, int role) const; bool isSeen(const QString &path) const; public slots: void markAsSeen(const QString &path, bool seen); void markForClipboard(const QPersistentModelIndex &idx); void clearClipboardList(); private: void cleanup(); QHash mSeen; QSqlDatabase mDb; QSqlQuery *mDeleteFromSeenQuery; QSqlQuery *mMarkAsSeenQuery; QList mClipEntries; }; #endif