diff --git a/src/Controller/FileController/FileController.cpp b/src/Controller/FileController/FileController.cpp index f90278a..2fb7783 100644 --- a/src/Controller/FileController/FileController.cpp +++ b/src/Controller/FileController/FileController.cpp @@ -1,16 +1,26 @@ #include "FileController.hpp" #include #include +#include -FileController::FileController() { - m_fmWorker = std::make_unique(QString("/home/crylia/"), - std::chrono::milliseconds(1000)); +FileController::FileController( ) { + m_fmWorker = std::make_shared(QString("/home/crylia/Dokumente"), + std::chrono::milliseconds(1000)); m_fmWorker->moveToThread(&m_fsThread); - m_fmWorker->start(QString("/home/crylia/")); + connect(this, &FileController::operate, m_fmWorker.get( ), &FileMonitor::start); + connect(m_fmWorker.get( ), &FileMonitor::update, this, &FileController::update); + + m_fsThread.start( ); + + emit operate( ); } -FileController::~FileController() { - m_fsThread.quit(); - m_fsThread.wait(); +FileController::~FileController( ) { + m_fsThread.quit( ); + m_fsThread.wait( ); +} + +void FileController::update(const QString path, const FileEvent event) { + std::cout << path.toStdString( ) << std::endl; } diff --git a/src/Controller/FileController/FileController.hpp b/src/Controller/FileController/FileController.hpp index 0908c6c..c073bd9 100644 --- a/src/Controller/FileController/FileController.hpp +++ b/src/Controller/FileController/FileController.hpp @@ -8,11 +8,23 @@ class FileController : public QObject { Q_OBJECT public: - FileController(); - ~FileController(); + FileController( ); + ~FileController( ); private: QThread m_fsThread; - std::unique_ptr m_fmWorker; + std::shared_ptr m_fmWorker; + +private slots: + + void update(const QString path, const FileEvent); + +signals: + // Start signal to start the function in the thread + void operate( ); + // Stop signal to stop the function in the thread + void pause( ); + // Signal to update the path inside the thread + void updatePath(const QString&); }; diff --git a/src/Core/FileMonitor/FileMonitor.cpp b/src/Core/FileMonitor/FileMonitor.cpp index 6ab5154..4450d5e 100644 --- a/src/Core/FileMonitor/FileMonitor.cpp +++ b/src/Core/FileMonitor/FileMonitor.cpp @@ -3,53 +3,53 @@ #include FileMonitor::FileMonitor(QString path, - std::chrono::duration delay) - : m_path(path), m_delay(delay) { + std::chrono::duration delay) + : m_path(path), m_delay(delay) { - for (auto &file : - std::filesystem::recursive_directory_iterator(m_path.toStdString())) { - m_paths[QString::fromStdString(file.path().string())] = - std::filesystem::last_write_time(file); + for (auto& file : + std::filesystem::directory_iterator(m_path.toStdString( ))) { + m_paths[QString::fromStdString(file.path( ).string( ))] = + std::filesystem::last_write_time(file); } } -void FileMonitor::start(const QString path) { +void FileMonitor::start( ) { while (m_running) { std::this_thread::sleep_for(m_delay); - auto pbegin = m_paths.begin(); - while (pbegin != m_paths.end()) { - if (!std::filesystem::exists(pbegin->first.toStdString())) { + auto pbegin = m_paths.begin( ); + while (pbegin != m_paths.end( )) { + if (!std::filesystem::exists(pbegin->first.toStdString( ))) { emit update(pbegin->first, FileEvent::erased); pbegin = m_paths.erase(pbegin); } else pbegin++; } - for (auto &file : - std::filesystem::recursive_directory_iterator(m_path.toStdString())) { + for (auto& file : + std::filesystem::directory_iterator(m_path.toStdString( ))) { auto curr_file_last_write = std::filesystem::last_write_time(file); - if (!contains(QString::fromStdString(file.path().string()))) { - m_paths[QString::fromStdString(file.path().string())] = - curr_file_last_write; - emit update(QString::fromStdString(file.path().string()), - FileEvent::created); + if (!contains(QString::fromStdString(file.path( ).string( )))) { + m_paths[QString::fromStdString(file.path( ).string( ))] = + curr_file_last_write; + emit update(QString::fromStdString(file.path( ).string( )), + FileEvent::created); } else { - if (m_paths[QString::fromStdString(file.path().string())] != - curr_file_last_write) { - m_paths[QString::fromStdString(file.path().string())] = - curr_file_last_write; - emit update(QString::fromStdString(file.path().string()), - FileEvent::modified); + if (m_paths[QString::fromStdString(file.path( ).string( ))] != + curr_file_last_write) { + m_paths[QString::fromStdString(file.path( ).string( ))] = + curr_file_last_write; + emit update(QString::fromStdString(file.path( ).string( )), + FileEvent::modified); } } } } } -void FileMonitor::stop() { m_running = false; } +void FileMonitor::stop( ) { m_running = false; } -bool FileMonitor::contains(const QString &key) { - return m_paths.find(key) != m_paths.end(); +bool FileMonitor::contains(const QString& key) { + return m_paths.find(key) != m_paths.end( ); } diff --git a/src/Core/FileMonitor/FileMonitor.hpp b/src/Core/FileMonitor/FileMonitor.hpp index c047ed5..88dbe66 100644 --- a/src/Core/FileMonitor/FileMonitor.hpp +++ b/src/Core/FileMonitor/FileMonitor.hpp @@ -14,20 +14,20 @@ public: std::chrono::duration m_delay; FileMonitor(QString path, std::chrono::duration delay); - ~FileMonitor() = default; + ~FileMonitor( ) = default; void SetPath(QString path) { m_path = path; } public slots: - void start(const QString path); - void stop(); + void start( ); + void stop( ); private: std::unordered_map m_paths; bool m_running; QString m_path; - bool contains(const QString &key); + bool contains(const QString& key); signals: void update(const QString path, const FileEvent); diff --git a/src/View/MainWidget/MainWidget.cpp b/src/View/MainWidget/MainWidget.cpp index e69de29..4053a78 100644 --- a/src/View/MainWidget/MainWidget.cpp +++ b/src/View/MainWidget/MainWidget.cpp @@ -0,0 +1,15 @@ +#include "MainWidget.hpp" + +MainWidget::MainWidget(QWidget* parent) { + + auto path_mainContentLayout = std::make_shared(this); + auto fileTree_fileGridLayout = std::make_shared(this); + + path_mainContentLayout->addLayout(fileTree_fileGridLayout.get( )); + + setLayout(path_mainContentLayout.get( )); + + auto fmc = new FileController( ); +} + +MainWidget::~MainWidget( ) { } diff --git a/src/View/MainWidget/MainWidget.hpp b/src/View/MainWidget/MainWidget.hpp index 9adea02..2a61e8d 100644 --- a/src/View/MainWidget/MainWidget.hpp +++ b/src/View/MainWidget/MainWidget.hpp @@ -1,15 +1,16 @@ #pragma once #include +#include #include -#include -#include + +#include "../../Controller/FileController/FileController.hpp" class MainWidget : public QWidget { Q_OBJECT public: - MainWidget() = default; - ~MainWidget() = default; + MainWidget(QWidget* parent = nullptr); + ~MainWidget( ); private: }; diff --git a/src/View/MainWindow/MainWindow.cpp b/src/View/MainWindow/MainWindow.cpp index 7cdb654..33d3c01 100644 --- a/src/View/MainWindow/MainWindow.cpp +++ b/src/View/MainWindow/MainWindow.cpp @@ -1,5 +1,12 @@ #include "MainWindow.hpp" -MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) {} +MainWindow::MainWindow(QWidget* parent) + : QMainWindow(parent), m_mainWidget(std::make_shared( )) { + setWindowTitle("QutieFM"); -MainWindow::~MainWindow() {} + setObjectName("MainWindow"); + + this->setCentralWidget(m_mainWidget.get( )); +} + +MainWindow::~MainWindow( ) { } diff --git a/src/View/MainWindow/MainWindow.hpp b/src/View/MainWindow/MainWindow.hpp index bce95f4..593dbb6 100644 --- a/src/View/MainWindow/MainWindow.hpp +++ b/src/View/MainWindow/MainWindow.hpp @@ -2,11 +2,15 @@ #include +#include "../MainWidget/MainWidget.hpp" + class MainWindow : public QMainWindow { Q_OBJECT public: - MainWindow(QWidget *parent = nullptr); - ~MainWindow(); + MainWindow(QWidget* parent = nullptr); + ~MainWindow( ); private: + + std::shared_ptr m_mainWidget; };