Browse Source

Begin implementation of InternalLogicManager

Ivan Arkhipov 5 years ago
parent
commit
640e504961

+ 114 - 1
src/Legacy/models/internallogicmanager.cpp

@@ -1,7 +1,120 @@
 #include "internallogicmanager.h"
 #include "widgets/mainwindow.h"
 
-InternalLogicManager::InternalLogicManager(MainWindow *gui_, QSettings *settings_, PatchDownloader *patch_downloader_, LotroDatManager *lotro_manager_, QObject *parent)
+
+InternalLogicManager::InternalLogicManager(MainWindow *gui_, QSettings *settings_, QObject *parent)
+{
+    qDebug() << "Creating patch downloader instance & thread";
+    patch_downloader_thread = new QThread();
+    patch_downloader = new PatchDownloader(settings);
+
+    lotro_manager_thread = new QThread();
+    lotro_manager = new LotroDatManager(settings);
+
+    connect(patch_downloader, &PatchDownloader::checkForUpdatesStarted, this, &InternalLogicManager::semiCriticalSectionEntered, Qt::BlockingQueuedConnection);
+    connect(patch_downloader, &PatchDownloader::checkForUpdatesFinished, this, &InternalLogicManager::semiCriticalSectionLeaved, Qt::BlockingQueuedConnection);
+    connect(lotro_manager, &LotroDatManager::processStarted, this, &InternalLogicManager::criticalSectionEntered, Qt::BlockingQueuedConnection);
+    connect(lotro_manager, &LotroDatManager::processFinished, this, &InternalLogicManager::criticalSectionLeaved, Qt::BlockingQueuedConnection);
+//    connect(lotro_manager, &LotroDatManager::caughtError, this, &MainWindow::onLotroManagerErrorOccured, Qt::BlockingQueuedConnection);
+
+    connect(lotro_manager_thread, &QThread::finished, lotro_manager, &QObject::deleteLater, Qt::QueuedConnection);
+    connect(patch_downloader_thread, &QThread::finished, patch_downloader, &QObject::deleteLater, Qt::QueuedConnection);
+
+    patch_downloader->moveToThread(patch_downloader_thread);
+    lotro_manager->moveToThread(lotro_manager_thread);
+    lotro_manager_thread->start();
+    patch_downloader_thread->start();
+}
+
+InternalLogicManager::~InternalLogicManager()
+{
+}
+
+void InternalLogicManager::startInitPipeline()
+{
+
+}
+
+void InternalLogicManager::startGame(QString locale)
+{
+
+}
+
+void InternalLogicManager::lotroSettingsUpdated()
+{
+
+}
+
+void InternalLogicManager::createLotroFilesBackup()
+{
+
+}
+
+void InternalLogicManager::removeLotroFilesBackup()
+{
+
+}
+
+void InternalLogicManager::applySelectedPatches()
+{
+
+}
+
+void InternalLogicManager::updateSettingsChanged()
+{
+
+}
+
+void InternalLogicManager::terminateThreads()
+{
+
+}
+
+void InternalLogicManager::stopThreads()
+{
+    lotro_manager_thread->quit();
+    patch_downloader_thread->quit();
+
+    lotro_manager_thread->wait();
+    patch_downloader_thread->wait();
+}
+
+void InternalLogicManager::checkFirstTimeOpening()
+{
+
+}
+
+void InternalLogicManager::checkGameFolderCorrectness()
+{
+
+}
+
+void InternalLogicManager::checkDatFilesExist()
+{
+
+}
+
+void InternalLogicManager::processLotroManagerInit()
+{
+
+}
+
+void InternalLogicManager::processPatchDownloaderInit()
+{
+
+}
+
+void InternalLogicManager::checkBackupExist()
+{
+
+}
+
+void InternalLogicManager::checkUserHasEnteredPatchOptions()
+{
+
+}
+
+void InternalLogicManager::checkDatFileWasPatched()
 {
 
 }

+ 13 - 4
src/Legacy/models/internallogicmanager.h

@@ -3,6 +3,7 @@
 
 #include <QObject>
 #include <QSettings>
+#include <QThread>
 
 #include "models/patchdownloader.h"
 #include "models/lotrodatmanager.h"
@@ -31,10 +32,12 @@ Stage 6 - if user runs for the first time, then ask to create backup
 Stage 7 - check that user has chosen patches options. Otherwise move user to settings with enabled
           position of choosing (this skips stage 8 and goes to st.9)
 
-Stage 8 - if there are flags that patches already applied but this is not true with .dat - ask to
+Stage 8 - if user runs app for the first time - ask to download micropatches
+
+Stage 9 - if there are flags that patches already applied but this is not true with .dat - ask to
           apply them once more
 
-Stage 9 - All settings are checked and set. If user is for the first time - show message "ready to begin"
+Stage 10 - All settings are checked and set. If user is for the first time - show message "ready to begin"
           Start check for updates. Start check for updates timer.
 */
 
@@ -44,7 +47,8 @@ class InternalLogicManager : public QObject
 {
     Q_OBJECT
 public:
-    explicit InternalLogicManager(MainWindow *gui_, QSettings *settings_, PatchDownloader *patch_downloader_, LotroDatManager *lotro_manager_, QObject *parent = nullptr);
+    explicit InternalLogicManager(MainWindow *gui_, QSettings *settings_, QObject *parent = nullptr);
+    ~InternalLogicManager();
 
 signals:
     void initPipelineStarted();
@@ -70,7 +74,8 @@ signals:
 //    void removeLotroFilesBackup();
 //    void applySelectedPatches();
 //    void updateSettingsChanged();
-
+//    void terminateThreads();
+//    void stopThreads();
 //private slots:
 //    void checkFirstTimeOpening();
 //    void checkGameFolderCorrectness();
@@ -83,7 +88,11 @@ signals:
 
 private:
     PatchDownloader *patch_downloader;
+    QThread *patch_downloader_thread;
+
     LotroDatManager *lotro_manager;
+    QThread *lotro_manager_thread;
+
     QSettings *settings;
     MainWindow *gui;
 };

+ 0 - 10
src/Legacy/widgets/mainwindow.h

@@ -20,9 +20,6 @@ class MainWindow;
 }
 
 class MenuEntry;
-class LotroDatManager;
-// class NetworkUpdater;
-class PatchDownloader;
 class DialogWindow;
 
 class MainWindow : public QMainWindow
@@ -88,13 +85,6 @@ private:
     MenuEntry* currently_active_entry;
     MenuEntry* currently_hover_entry;
 
-    PatchDownloader *patch_updater;
-//    QThread *patch_updater_thread;
-
-    LotroDatManager *lotro_manager;
-    QThread *lotro_functions_thread;
-//    QThread *lotro_manager_thread;
-
     Ui::MainWindow *ui;
 
     StatusWidget *status_widget;