#ifndef VFILELIST_H #define VFILELIST_H #include #include #include #include #include #include #include "vnotebook.h" #include "vconstants.h" #include "vdirectory.h" #include "vfile.h" class QAction; class VNote; class QListWidget; class QPushButton; class VEditArea; class VFileList : public QWidget { Q_OBJECT public: explicit VFileList(QWidget *parent = 0); bool importFile(const QString &p_srcFilePath); inline void setEditArea(VEditArea *editArea); void fileInfo(VFile *p_file); void deleteFile(VFile *p_file); signals: void fileClicked(VFile *p_file, OpenFileMode mode = OpenFileMode::Read); void fileCreated(VFile *p_file, OpenFileMode mode = OpenFileMode::Read); void fileUpdated(const VFile *p_file); private slots: void contextMenuRequested(QPoint pos); void handleItemClicked(QListWidgetItem *currentItem); void fileInfo(); // m_copiedFiles will keep the files's VFile. void copySelectedFiles(bool p_isCut = false); void cutSelectedFiles(); void pasteFilesInCurDir(); void deleteFile(); public slots: void setDirectory(VDirectory *p_directory); void newFile(); protected: void keyPressEvent(QKeyEvent *event) Q_DECL_OVERRIDE; private: void setupUI(); void updateFileList(); QListWidgetItem *insertFileListItem(VFile *file, bool atFront = false); void removeFileListItem(QListWidgetItem *item); void initActions(); QListWidgetItem *findItem(const VFile *p_file); void copyFileInfoToClipboard(const QJsonArray &p_files, bool p_isCut); void pasteFiles(VDirectory *p_destDir); bool copyFile(VDirectory *p_destDir, const QString &p_destName, VFile *p_file, bool p_cut); // New items have been added to direcotry. Update file list accordingly. QVector updateFileListAdded(); inline QPointer getVFile(QListWidgetItem *p_item); VEditArea *editArea; QListWidget *fileList; QPointer m_directory; QVector > m_copiedFiles; // Actions QAction *newFileAct; QAction *deleteFileAct; QAction *fileInfoAct; QAction *copyAct; QAction *cutAct; QAction *pasteAct; }; inline void VFileList::setEditArea(VEditArea *editArea) { this->editArea = editArea; } inline QPointer VFileList::getVFile(QListWidgetItem *p_item) { Q_ASSERT(p_item); return p_item->data(Qt::UserRole).value(); } #endif // VFILELIST_H