#ifndef FILECONTROL_H #define FILECONTROL_H #include #include #include #include #include #include #include #include #include #include namespace Ui { class FileManager; } enum class SortMethod { SMD_BY_NAME_ASC, SMD_BY_NAME_DESC, SMD_BY_TIME_DESC, SMD_BY_TIME_ASC, SMD_BY_TYPE_DESC, SMD_BY_TYPE_ASC, SMD_BY_SIZE_DESC, SMD_BY_SIZE_ASC, }; class FileManager : public QWidget { Q_OBJECT public: explicit FileManager(QWidget* parent = nullptr); ~FileManager(); public: QString GetRoot(); void SetUiCurrentPath(const QString& path); void SetModeStr(const QString& modeStr, int type = 0, ClientCore* clientCore = nullptr); signals: void sigSendTasks(const QVector& tasks); private: void InitControl(); void InitMenu(); void ShowPath(const QString& path, const QVector& drivers); void ShowFile(const DirFileInfoVec& info); void doubleClick(int row, int column); void SetRoot(const QString& path); void SortFileInfo(SortMethod method); void HeaderClicked(int column); void FilterFile(const QVector& selectedTypes); void GenFilter(); void ShowFilterForm(); void CopyFullPath(); void ShowProperties(); void UpDown(); private: void OperNewFolder(); void OperDelete(); void OperRename(); void WaitMsg(); public slots: void evtHome(); void evtFile(); void evtUp(); void RefreshTab(); private: bool isRemote_; Ui::FileManager* ui; QMenu* menu_; ClientCore* cliCore_; QMutex cbMut_; QMutex tbMut_; bool userScrol_{}; QVector drivers_; QSet fileTypes_; QSet curSelectTypes_; DirFileInfoVec currentInfo_; DirFileInfoVec currentShowInfo_; std::map sortMedRecord_; std::shared_ptr fileHelper_; }; #endif // FILECONTROL_H