Files
frelay/Gui/Control/FileControl.h
2025-06-28 22:53:42 +08:00

73 lines
1.5 KiB
C++

#ifndef FILECONTROL_H
#define FILECONTROL_H
#include <ClientCore.h>
#include <FileTrans.h>
#include <InfoDirFile.h>
#include <QMenu>
#include <QMutex>
#include <QWidget>
#include <Util.h>
#include <memory>
#include <map>
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 SetModeStr(const QString& modeStr, int type = 0, ClientCore* clientCore = nullptr);
signals:
void sigSendTasks(const QVector<TransTask>& tasks);
private:
void InitControl();
void InitMenu(bool remote = false);
void ShowPath(const QString& path);
void ShowFile(const DirFileInfoVec& info);
void doubleClick(int row, int column);
void SetRoot(const QString& path);
void SortFileInfo(SortMethod method);
void HeaderClicked(int column);
public slots:
void evtHome();
void evtFile();
void evtUp();
void RefreshTab();
private:
bool isRemote_;
Ui::FileManager* ui;
QMenu* menu_;
ClientCore* cliCore_;
QMutex cbMut_;
QMutex tbMut_;
DirFileInfoVec currentInfo_;
std::map<int, SortMethod> sortMedRecord_;
std::shared_ptr<DirFileHelper> fileHelper_;
};
#endif // FILECONTROL_H