Bläddra i källkod

compilation optiom

isundil 9 månader sedan
förälder
incheckning
6a9701eab5

+ 2 - 2
Engine/IEngine.h

@@ -19,10 +19,10 @@ namespace craftlab::fakeraid
 		virtual void Cd(const std::string& dirName) =0;
 	};
 
-	class EngineManager
+	class ENGINEAPI_EXPORT EngineManager
 	{
 	public:
 		EngineManager() =delete;
-		ENGINEAPI_EXPORT static IEngine* Open(const std::vector<std::string>& paths);
+		static IEngine* Open(const std::vector<std::string>& paths);
 	};
 }

+ 4 - 4
Engine/fileDiff.h

@@ -15,13 +15,13 @@ namespace craftlab::fakeraid
 		std::map<std::string, FileAndSum> FileList;
 	};
 
-	class FileDiff
+	class ENGINEAPI_EXPORT FileDiff
 	{
 	public:
-		ENGINEAPI_EXPORT FileDiff();
-		ENGINEAPI_EXPORT ~FileDiff();
+		FileDiff();
+		~FileDiff();
 
-		ENGINEAPI_EXPORT DiffResult Process(const FileAndSumListByRepositoryIndex& fileList);
+		DiffResult Process(const FileAndSumListByRepositoryIndex& fileList);
 
 	private:
 		typedef std::optional<FileAndSum> OptionalFileAndSum;

+ 12 - 11
fakeRaid/browseModal.cpp

@@ -1,27 +1,28 @@
 #include <QFileDialog>
+#include "ui_BrowseModal.h"
 #include "browseModal.h"
 
 using namespace craftlab::fakeraid;
 
-BrowseModal::BrowseModal(bool _cancellable, const std::vector<std::string>& previous): cancellable(_cancellable)
+BrowseModal::BrowseModal(bool _cancellable, const std::vector<std::string>& previous): cancellable(_cancellable), ui(std::make_unique<Ui_BrowseModal>())
 {
-	ui.setupUi(this);
+	ui->setupUi(this);
 	if (!cancellable)
 	{
 		setWindowFlags(windowFlags() & ~Qt::WindowCloseButtonHint);
-		ui.buttonBox->setStandardButtons(QDialogButtonBox::StandardButton::Open);
+		ui->buttonBox->setStandardButtons(QDialogButtonBox::StandardButton::Open);
 	}
 	else
 	{
-		ui.buttonBox->setStandardButtons(QDialogButtonBox::StandardButton::Open | QDialogButtonBox::StandardButton::Cancel);
-		connect(ui.buttonBox, &QDialogButtonBox::rejected, this, [this]() { rejected = true; });
+		ui->buttonBox->setStandardButtons(QDialogButtonBox::StandardButton::Open | QDialogButtonBox::StandardButton::Cancel);
+		connect(ui->buttonBox, &QDialogButtonBox::rejected, this, [this]() { rejected = true; });
 	}
-	connect(ui.pushButton, &QPushButton::clicked, this, [this]() { BrowseForInput(*ui.lineEdit); });
-	connect(ui.pushButton_2, &QPushButton::clicked, this, [this]() { BrowseForInput(*ui.lineEdit_2); });
+	connect(ui->pushButton, &QPushButton::clicked, this, [this]() { BrowseForInput(*ui->lineEdit); });
+	connect(ui->pushButton_2, &QPushButton::clicked, this, [this]() { BrowseForInput(*ui->lineEdit_2); });
 	if (previous.size() > 0)
-		ui.lineEdit->setText(previous[0].c_str());
+		ui->lineEdit->setText(previous[0].c_str());
 	if (previous.size() > 1)
-		ui.lineEdit_2->setText(previous[1].c_str());
+		ui->lineEdit_2->setText(previous[1].c_str());
 	setModal(this);
 }
 
@@ -48,7 +49,7 @@ std::vector<std::string> BrowseModal::Display(bool cancellable, const std::vecto
 	if (dialog.rejected)
 		return std::vector<std::string> {};
 	std::vector<std::string> result;
-	result.push_back(dialog.ui.lineEdit->text().toStdString());
-	result.push_back(dialog.ui.lineEdit_2->text().toStdString());
+	result.push_back(dialog.ui->lineEdit->text().toStdString());
+	result.push_back(dialog.ui->lineEdit_2->text().toStdString());
 	return result;
 }

+ 4 - 2
fakeRaid/browseModal.h

@@ -1,7 +1,9 @@
 #pragma once
 
+#include <QLineEdit>
 #include <QDialog>
-#include "ui_BrowseModal.h"
+
+class Ui_BrowseModal;
 
 namespace craftlab::fakeraid
 {
@@ -21,6 +23,6 @@ namespace craftlab::fakeraid
 
 		bool rejected = false;
 		bool cancellable;
-		Ui_BrowseModal ui;
+		std::unique_ptr<Ui_BrowseModal> ui;
 	};
 }

+ 24 - 23
fakeRaid/conflictItemWidget.cpp

@@ -1,4 +1,5 @@
 #include <sstream>
+#include "ui_ConflictItemWidget.h"
 #include "conflictItemWidget.h"
 #include "iconProvider.h"
 #include "htmlFont.hh"
@@ -6,27 +7,27 @@
 using namespace craftlab::fakeraid;
 using namespace craftlab::ui;
 
-ConflictItemWidget::ConflictItemWidget(QListWidget* parent, const QFile& file, const std::string& _fileName): QWidget(parent), filename(_fileName)
+ConflictItemWidget::ConflictItemWidget(QListWidget* parent, const QFile& file, const std::string& _fileName): QWidget(parent), filename(_fileName), ui(std::make_unique<Ui_ConflictItemWidget>())
 {
 	std::filesystem::path p(file.fileName().toStdString());
-	ui.setupUi(this);
-	ui.warningIcon->setPixmap(IconProvider::WarningIcon(*this));
-	ui.fileIcon->resize(ui.fileIcon->baseSize());
-	ui.fileIcon->setPixmap(IconProvider::FromFile(file, ui.fileIcon->baseSize()));
-	ui.filename->setText(p.filename().string().c_str());
-
-	connect(ui.ddUseVersion, &CheckableComboBox::activated, this, [this]() { SetAction(Action::UseVersion); });
-	connect(ui.buttonCopy, &QPushButton::clicked, this, [this]() { SetAction(Action::Copy); });
-	connect(ui.buttonRemove, &QPushButton::clicked, this, [this]() { SetAction(Action::Remove); });
-	connect(ui.buttonIgnore, &QPushButton::clicked, this, [this]() { SetAction(Action::Ignore); });
+	ui->setupUi(this);
+	ui->warningIcon->setPixmap(IconProvider::WarningIcon(*this));
+	ui->fileIcon->resize(ui->fileIcon->baseSize());
+	ui->fileIcon->setPixmap(IconProvider::FromFile(file, ui->fileIcon->baseSize()));
+	ui->filename->setText(p.filename().string().c_str());
+
+	connect(ui->ddUseVersion, &CheckableComboBox::activated, this, [this]() { SetAction(Action::UseVersion); });
+	connect(ui->buttonCopy, &QPushButton::clicked, this, [this]() { SetAction(Action::Copy); });
+	connect(ui->buttonRemove, &QPushButton::clicked, this, [this]() { SetAction(Action::Remove); });
+	connect(ui->buttonIgnore, &QPushButton::clicked, this, [this]() { SetAction(Action::Ignore); });
 }
 
 void ConflictItemWidget::SetAction(Action&& action)
 {
-	ui.ddUseVersion->setChecked(action == Action::UseVersion);
-	ui.buttonCopy->setChecked(action == Action::Copy);
-	ui.buttonRemove->setChecked(action == Action::Remove);
-	ui.buttonIgnore->setChecked(action == Action::Ignore);
+	ui->ddUseVersion->setChecked(action == Action::UseVersion);
+	ui->buttonCopy->setChecked(action == Action::Copy);
+	ui->buttonRemove->setChecked(action == Action::Remove);
+	ui->buttonIgnore->setChecked(action == Action::Ignore);
 	if (currentAction != action)
 	{
 		currentAction = action;
@@ -111,12 +112,12 @@ ConflictItemWidget* ConflictItemWidget::FromMissingFile(QListWidget* parent, con
 {
 	const std::string fullPathFirstFound = rootPaths[std::distance(version.begin(), std::find(version.begin(), version.end(), true))] + "/" + filename;
 	ConflictItemWidget* result = new ConflictItemWidget(parent, QFile(fullPathFirstFound.c_str()), filename);
-	result->ui.ddUseVersion->setVisible(false);
+	result->ui->ddUseVersion->setVisible(false);
 	std::stringstream ss;
 	ss << "File " << HTMLFont(filename, FILE_STYLE) << " does not exists in every repositories: <ul>";
 	populateListStream(groupFileByVersion(versionExistsToVersionNumber(version)), ss);
 	ss << "</ul>";
-	result->ui.labelIssue->setText(ss.str().c_str());
+	result->ui->labelIssue->setText(ss.str().c_str());
 	return result;
 }
 
@@ -124,12 +125,12 @@ ConflictItemWidget* ConflictItemWidget::FromMissingDir(QListWidget* parent, cons
 {
 	const std::string fullPathFirstFound = rootPaths[std::distance(version.begin(), std::find(version.begin(), version.end(), true))] + "/" + filename;
 	ConflictItemWidget* result = new ConflictItemWidget(parent, QFile(fullPathFirstFound.c_str()), filename);
-	result->ui.ddUseVersion->setVisible(false);
+	result->ui->ddUseVersion->setVisible(false);
 	std::stringstream ss;
 	ss << "Folder " << HTMLFont(filename, FILE_STYLE) << " does not exists in every repositories: <ul>";
 	populateListStream(groupFileByVersion(versionExistsToVersionNumber(version)), ss);
 	ss << "</ul>";
-	result->ui.labelIssue->setText(ss.str().c_str());
+	result->ui->labelIssue->setText(ss.str().c_str());
 	return result;
 }
 
@@ -140,14 +141,14 @@ ConflictItemWidget* ConflictItemWidget::FromConflict(QListWidget* parent, const
 	const auto fileByVersion = groupFileByVersion(version);
 	for (const auto& i : fileByVersion)
 		if (i.first)
-			result->ui.ddUseVersion->addItem("Use version " +QString::number(i.first), i.first);
-	result->ui.ddUseVersion->setCurrentIndex(0);
-	result->ui.buttonCopy->setVisible(false);
+			result->ui->ddUseVersion->addItem("Use version " +QString::number(i.first), i.first);
+	result->ui->ddUseVersion->setCurrentIndex(0);
+	result->ui->buttonCopy->setVisible(false);
 
 	std::stringstream ss;
 	ss << "Found different versions for file " << HTMLFont(filename, FILE_STYLE) << ": <ul>";
 	populateListStream(fileByVersion, ss);
 	ss << "</ul>";
-	result->ui.labelIssue->setText(ss.str().c_str());
+	result->ui->labelIssue->setText(ss.str().c_str());
 	return result;
 }

+ 3 - 2
fakeRaid/conflictItemWidget.h

@@ -4,7 +4,8 @@
 #include <QWidget>
 #include <QListWidget>
 #include "FileDiff.h"
-#include "ui_ConflictItemWidget.h"
+
+class Ui_ConflictItemWidget;
 
 namespace craftlab::fakeraid
 {
@@ -42,6 +43,6 @@ namespace craftlab::fakeraid
 
 		const std::string filename;
 		Action currentAction = Action::Undefined;
-		Ui_ConflictItemWidget ui;
+		std::unique_ptr<Ui_ConflictItemWidget> ui;
 	};
 }

+ 13 - 12
fakeRaid/conflictModal.cpp

@@ -1,25 +1,26 @@
 #include <QListWidgetItem>
 #include <QMessageBox>
+#include "ui_ConflictModal.h"
 #include "conflictModal.h"
 #include "ConflictItemWidget.h"
 #include "fileDiff.h"
 
 using namespace craftlab::fakeraid;
 
-ConflictModal::ConflictModal(const std::vector<std::string>& rootPaths, const DiffResult& _diffResult): diffResult(std::make_unique<DiffResult>(_diffResult))
+ConflictModal::ConflictModal(const std::vector<std::string>& rootPaths, const DiffResult& _diffResult): diffResult(std::make_unique<DiffResult>(_diffResult)), ui(std::make_unique<Ui_ConflictModal>())
 {
-	ui.setupUi(this);
+	ui->setupUi(this);
 
 	for (const std::pair<std::string, std::vector<bool>>& i : diffResult->missingFiles)
-		AddConflictingFile(ConflictItemWidget::FromMissingFile(ui.listWidget, rootPaths, i.first, i.second));
+		AddConflictingFile(ConflictItemWidget::FromMissingFile(ui->listWidget, rootPaths, i.first, i.second));
 	for (const std::pair<std::string, std::vector<bool>>& i : diffResult->missingDirs)
-		AddConflictingFile(ConflictItemWidget::FromMissingDir(ui.listWidget, rootPaths, i.first, i.second));
+		AddConflictingFile(ConflictItemWidget::FromMissingDir(ui->listWidget, rootPaths, i.first, i.second));
 	for (const std::pair<std::string, std::vector<int>>& i : diffResult->differentFiles)
-		AddConflictingFile(ConflictItemWidget::FromConflict(ui.listWidget, rootPaths, i.first, i.second));
+		AddConflictingFile(ConflictItemWidget::FromConflict(ui->listWidget, rootPaths, i.first, i.second));
 	setModal(true);
-	ui.buttonProcess->setEnabled(false);
-	connect(ui.buttonIgnoreAll, &QPushButton::clicked, this, &ConflictModal::IgnoreAllAndProcess);
-	connect(ui.buttonProcess, &QPushButton::clicked, this, &ConflictModal::Process);
+	ui->buttonProcess->setEnabled(false);
+	connect(ui->buttonIgnoreAll, &QPushButton::clicked, this, &ConflictModal::IgnoreAllAndProcess);
+	connect(ui->buttonProcess, &QPushButton::clicked, this, &ConflictModal::Process);
 }
 
 ConflictModal::~ConflictModal()
@@ -40,11 +41,11 @@ void ConflictModal::Process()
 
 void ConflictModal::AddConflictingFile(ConflictItemWidget* widget)
 {
-	QListWidgetItem* listItem = new QListWidgetItem(ui.listWidget);
+	QListWidgetItem* listItem = new QListWidgetItem(ui->listWidget);
 
 	listItem->setSizeHint(widget->size());
-	ui.listWidget->addItem(listItem);
-	ui.listWidget->setItemWidget(listItem, widget);
+	ui->listWidget->addItem(listItem);
+	ui->listWidget->setItemWidget(listItem, widget);
 	conflicts.push_back(widget);
 	connect(widget, &ConflictItemWidget::ActionChanged, this, &ConflictModal::UpdateProcessButtonStatus);
 }
@@ -55,7 +56,7 @@ void ConflictModal::UpdateProcessButtonStatus()
 		conflicts.begin(),
 		conflicts.end(),
 		[](const ConflictItemWidget* o) { return o->GetAction() == ConflictItemWidget::Action::Undefined; });
-	ui.buttonProcess->setEnabled(!pending);
+	ui->buttonProcess->setEnabled(!pending);
 }
 
 DiffResult ConflictModal::ComputeOutcome() const

+ 3 - 2
fakeRaid/conflictModal.h

@@ -2,7 +2,8 @@
 
 #include <QDialog>
 #include "IEngine.h"
-#include "ui_ConflictModal.h"
+
+class Ui_ConflictModal;
 
 namespace craftlab::fakeraid
 {
@@ -35,7 +36,7 @@ namespace craftlab::fakeraid
 
 		std::vector<ConflictItemWidget*> conflicts;
 		std::unique_ptr<DiffResult> diffResult;
-		Ui_ConflictModal ui;
+		std::unique_ptr<Ui_ConflictModal> ui;
 		bool processed = false;
 	};
 }

+ 10 - 8
fakeRaid/mainWindow.cpp

@@ -1,4 +1,5 @@
 #include <QMessageBox>
+#include "ui_MainWindow.h"
 #include "mainWindow.h"
 #include "conflictModal.h"
 #include "browseModal.h"
@@ -8,16 +9,17 @@
 using namespace craftlab::fakeraid::ui;
 
 MainWindow::MainWindow()
-	: fileListItemModel(std::make_unique<QStandardItemModel>(this))
+	: fileListItemModel(std::make_unique<QStandardItemModel>(this)),
+	ui(std::make_unique<Ui_MainWindow>())
 {
 	window = std::make_unique<QMainWindow>();
 
-	ui.setupUi(window.get());
-	ui.listView->setModel(fileListItemModel.get());
-	ui.listView->setItemDelegate(new FileItemDelegate(this));
+	ui->setupUi(window.get());
+	ui->listView->setModel(fileListItemModel.get());
+	ui->listView->setItemDelegate(new FileItemDelegate(this));
 
-	connect(ui.actionOuvrir, &QAction::triggered, this, &MainWindow::MenuBarActionTrigerred);
-	connect(ui.listView, &QListView::doubleClicked, this, [this](const QModelIndex& index)
+	connect(ui->actionOuvrir, &QAction::triggered, this, &MainWindow::MenuBarActionTrigerred);
+	connect(ui->listView, &QListView::doubleClicked, this, [this](const QModelIndex& index)
 	{
 		if (index.isValid() && currentDiffResult)
 		{
@@ -53,7 +55,7 @@ void MainWindow::UpdateFileList()
 {
 	fileListItemModel->clear();
 	for (const File& file : currentDiffResult->correctFiles)
-		fileListItemModel->appendRow(new FileItem(*ui.listView, engine->GetRootPaths(), file));
+		fileListItemModel->appendRow(new FileItem(*ui->listView, engine->GetRootPaths(), file));
 	std::vector<std::string> allFilenames;
 	std::transform(currentDiffResult->differentFiles.begin(), currentDiffResult->differentFiles.end(), std::back_inserter(allFilenames), [](const std::pair<std::string, std::vector<int>>& i) { return i.first; });
 	std::transform(currentDiffResult->missingFiles.begin(), currentDiffResult->missingFiles.end(), std::back_inserter(allFilenames), [](const std::pair<std::string, std::vector<bool>>& i) { return i.first; });
@@ -61,7 +63,7 @@ void MainWindow::UpdateFileList()
 	std::sort(allFilenames.begin(), allFilenames.end());
 	for (const std::string& file : allFilenames)
 	{
-		fileListItemModel->appendRow(new FileItem(*ui.listView, engine->GetRootPaths(), currentDiffResult->FileList[file], false));
+		fileListItemModel->appendRow(new FileItem(*ui->listView, engine->GetRootPaths(), currentDiffResult->FileList[file], false));
 	}
 }
 

+ 3 - 2
fakeRaid/mainWindow.h

@@ -4,9 +4,10 @@
 #include <QStandardItem>
 #include <QMainWindow>
 #include <QObject>
-#include "ui_MainWindow.h"
 #include "IEngine.h"
 
+class Ui_MainWindow;
+
 namespace craftlab::fakeraid
 {
 	struct DiffResult;
@@ -41,6 +42,6 @@ namespace craftlab::fakeraid::ui
 		std::unique_ptr<QMainWindow> window;
 		std::unique_ptr<IEngine> engine;
 		std::unique_ptr<DiffResult> currentDiffResult;
-		Ui_MainWindow ui;
+		std::unique_ptr<Ui_MainWindow> ui;
 	};
 }