#pragma once #include #include #include #include #include "ui_encodeconvert.h" #include "rcglobal.h" typedef struct EncodeThreadParameter_ { QString filepath; CODE_ID code; QTreeWidgetItem* item; EncodeThreadParameter_(QString filePath_) { filepath = filePath_; code = CODE_ID::UNKOWN; } }EncodeThreadParameter; class EncodeConvert : public QWidget { Q_OBJECT public: EncodeConvert(QWidget *parent = Q_NULLPTR); ~EncodeConvert(); private: int allfile(QTreeWidgetItem* root_, QString path_); int loadDir(QString rootDirPath); bool isSupportExt(int index, QString ext); QFuture commitTask(std::function fun, EncodeThreadParameter* parameter); QFuture checkFileCode(QString filePath, QTreeWidgetItem* item); static CODE_ID convertFileToCode(QString& filePath, CODE_ID srcCode, CODE_ID dstDode); static CODE_ID getComboBoxCode(int index); QFuture convertFileCode(QString filePath, QTreeWidgetItem* item); void scanFileCode(); protected: void dragEnterEvent(QDragEnterEvent* event) override; void dropEvent(QDropEvent* e) override; public slots: void slot_scanFileCode(); void slot_userDefineExt(); private slots: void slot_selectFile(); void slot_startConvert(); void slot_convertFileFinish(); void slot_itemClicked(QTreeWidgetItem* item, int column); private: void setItemIntervalBackground(); void setItemBackground(QTreeWidgetItem* item, const QColor& color); private: Ui::EncodeConvert ui; QList m_fileAttris; QString m_fileDirPath; int m_commitCmpFileNums; int m_finishCmpFileNums; int m_extComBoxNum; QList< QMap* > m_supportFileExt; QMenu* m_menu; };