/
waterstone
/
file_processor
Обзор
Документация
Войти
/
waterstone
/
file_processor
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/main_view.h
133 строки
3 KB
Peter Sakhno
Initial commit
19 янв 2026, 11:08
19 янв 2026, 11:08
1ffa16c
Код
Авторство
О чём код?
#ifndef MAIN_VIEW_H #define MAIN_VIEW_H #include <map> #include <memory> #include <QWidget> #include <QPointer> #include <QLineEdit> #include <QFileInfo> #include <QBasicTimer> #include <QCloseEvent> #include <QTimerEvent> #include <QFutureWatcher> #include "xor_file_processor.h" QT_BEGIN_NAMESPACE namespace Ui { class MainView; } QT_END_NAMESPACE class TaskWatcher; using TaskWatcherQP = QPointer<TaskWatcher>; class MainView; using MainViewQP = QPointer<MainView>; class MainView : public QWidget { Q_OBJECT public: MainView(QWidget* parent = nullptr); ~MainView(); private slots: void OnProcessFiles(); void OnSelectInputPath(); void OnSelectOutputPath(); void OnProcessAndStartTimer(); void OnStopTimer(); void OnTimerPeriodChanged(); void OnProcessingModeChanged(); void OnAppAboutToQuit(); private slots: void OnTaskStarted(); void OnTaskProgress(); void OnTaskFinished(); private: enum TimeButton { TimeButtonBeg = 0, // TimeButtonStart = TimeButtonBeg, TimeButtonStop, // TimeButtonEnd }; enum ProcessingMode { ProcessingModeBeg = 0, // ManualProcessingMode = ProcessingModeBeg, AutomaticProcessingMode, // ProcessingModeEnd }; enum ExistingOutputMode { ExistingOutputModeBeg = 0, // ExistingOutputOverride = ExistingOutputModeBeg, ExistingOutputAddCounter, ExistingOutputAbortProcessing, ExistingOutputAskForAdvice, // ExistingOutputModeEnd }; bool GetPath(QString caption, QLineEdit* edit); QStringList GetInputFileMask() const; void ProcessFile(uint64_t key, const QFileInfo& input_file_info); QString GenerateOutputFilePath(const QFileInfo& input_file_info); void DeleteTaskWatcher(uint64_t task_id); void StopAllTasks(); void closeEvent(QCloseEvent* event) override; void timerEvent(QTimerEvent* event) override; std::unique_ptr<Ui::MainView> m_ui; QBasicTimer m_automation_timer; uint64_t m_process_task_id_counter{ 1 }; std::map <uint64_t, TaskWatcherQP> m_task_watchers; }; class TaskWatcher : public QFutureWatcher<XorFileProcessor::Result> { Q_OBJECT public: explicit TaskWatcher(const XorFileProcessor::Context& cts, QObject* parent = nullptr) : QFutureWatcher<XorFileProcessor::Result>(parent), m_task_id(cts.id), m_input_file(cts.input_file_path), m_output_file(cts.output_file_path) { } auto taskId() const { return m_task_id; } auto inputFile() const { return m_input_file; } auto outputFile() const { return m_output_file; } private: uint64_t m_task_id{ 0 }; std::wstring m_input_file; std::wstring m_output_file; }; #endif // MAIN_VIEW_H