summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorisanae <14251494+isanae@users.noreply.github.com>2019-05-28 14:55:01 -0400
committerisanae <14251494+isanae@users.noreply.github.com>2019-05-31 11:54:30 -0400
commitd168b5db084457a106c5bb155be6eca5013f77c0 (patch)
treeee1308087fc1fd26e0f8ce3f231a4dbe5706d679 /src
parent3666995ce1c02bcb3b7937dfc112c84e81c4fead (diff)
added AlternativesVector typedef to FileEntry
split item creation from refreshConflictLists()
Diffstat (limited to 'src')
-rw-r--r--src/modinfodialog.cpp130
-rw-r--r--src/modinfodialog.h11
-rw-r--r--src/shared/directoryentry.h6
3 files changed, 92 insertions, 55 deletions
diff --git a/src/modinfodialog.cpp b/src/modinfodialog.cpp
index f330703a..f5b6abc8 100644
--- a/src/modinfodialog.cpp
+++ b/src/modinfodialog.cpp
@@ -623,67 +623,21 @@ void ModInfoDialog::refreshConflictLists()
const auto& alternatives = file->getAlternatives();
if (!alternatives.empty()) {
- QString altString;
+ ui->overwriteTree->addTopLevelItem(createOverwriteItem(
+ archive, fileName, relativeName, alternatives));
- for (const auto& alt : alternatives) {
- if (!altString.isEmpty()) {
- altString += ", ";
- }
-
- altString += ToQString(m_Directory->getOriginByID(alt.first).getName());
- }
-
- QStringList fields(relativeName);
- fields.append(altString);
-
- QTreeWidgetItem *item = new QTreeWidgetItem(fields);
- item->setData(0, Qt::UserRole, fileName);
- item->setData(1, Qt::UserRole, ToQString(m_Directory->getOriginByID(alternatives.back().first).getName()));
- item->setData(1, Qt::UserRole + 1, alternatives.back().first);
- item->setData(1, Qt::UserRole + 2, archive);
-
- if (archive) {
- QFont font = item->font(0);
- font.setItalic(true);
- item->setFont(0, font);
- item->setFont(1, font);
- }
-
- ui->overwriteTree->addTopLevelItem(item);
++numOverwrite;
} else {
// otherwise, put the file in the nonconflict tree
- QTreeWidgetItem *item = new QTreeWidgetItem(QStringList({relativeName}));
- item->setData(0, Qt::UserRole, fileName);
+ ui->noConflictTree->addTopLevelItem(createNoConflictItem(
+ archive, fileName, relativeName));
- if (archive) {
- QFont font = item->font(0);
- font.setItalic(true);
- item->setFont(0, font);
- }
-
- ui->noConflictTree->addTopLevelItem(item);
++numNonConflicting;
}
} else {
- const FilesOrigin &realOrigin = m_Directory->getOriginByID(file->getOrigin(archive));
-
- QStringList fields(relativeName);
- fields.append(ToQString(realOrigin.getName()));
+ ui->overwrittenTree->addTopLevelItem(createOverwrittenItem(
+ file, archive, fileName, relativeName));
- QTreeWidgetItem *item = new QTreeWidgetItem(fields);
- item->setData(0, Qt::UserRole, fileName);
- item->setData(1, Qt::UserRole, ToQString(realOrigin.getName()));
- item->setData(1, Qt::UserRole + 2, archive);
-
- if (archive) {
- QFont font = item->font(0);
- font.setItalic(true);
- item->setFont(0, font);
- item->setFont(1, font);
- }
-
- ui->overwrittenTree->addTopLevelItem(item);
++numOverwritten;
}
}
@@ -694,6 +648,78 @@ void ModInfoDialog::refreshConflictLists()
ui->noConflictCount->display(numNonConflicting);
}
+QTreeWidgetItem* ModInfoDialog::createOverwriteItem(
+ bool archive, const QString& fileName, const QString& relativeName,
+ const FileEntry::AlternativesVector& alternatives)
+{
+ QString altString;
+
+ for (const auto& alt : alternatives) {
+ if (!altString.isEmpty()) {
+ altString += ", ";
+ }
+
+ altString += ToQString(m_Directory->getOriginByID(alt.first).getName());
+ }
+
+ QStringList fields(relativeName);
+ fields.append(altString);
+
+ QTreeWidgetItem *item = new QTreeWidgetItem(fields);
+ item->setData(0, Qt::UserRole, fileName);
+ item->setData(1, Qt::UserRole, ToQString(m_Directory->getOriginByID(alternatives.back().first).getName()));
+ item->setData(1, Qt::UserRole + 1, alternatives.back().first);
+ item->setData(1, Qt::UserRole + 2, archive);
+
+ if (archive) {
+ QFont font = item->font(0);
+ font.setItalic(true);
+ item->setFont(0, font);
+ item->setFont(1, font);
+ }
+
+ return item;
+}
+
+QTreeWidgetItem* ModInfoDialog::createNoConflictItem(
+ bool archive, const QString& fileName, const QString& relativeName)
+{
+ QTreeWidgetItem *item = new QTreeWidgetItem(QStringList({relativeName}));
+ item->setData(0, Qt::UserRole, fileName);
+
+ if (archive) {
+ QFont font = item->font(0);
+ font.setItalic(true);
+ item->setFont(0, font);
+ }
+
+ return item;
+}
+
+QTreeWidgetItem* ModInfoDialog::createOverwrittenItem(
+ const MOShared::FileEntry::Ptr& file,
+ bool archive, const QString& fileName, const QString& relativeName)
+{
+ const FilesOrigin &realOrigin = m_Directory->getOriginByID(file->getOrigin(archive));
+
+ QStringList fields(relativeName);
+ fields.append(ToQString(realOrigin.getName()));
+
+ QTreeWidgetItem *item = new QTreeWidgetItem(fields);
+ item->setData(0, Qt::UserRole, fileName);
+ item->setData(1, Qt::UserRole, ToQString(realOrigin.getName()));
+ item->setData(1, Qt::UserRole + 2, archive);
+
+ if (archive) {
+ QFont font = item->font(0);
+ font.setItalic(true);
+ item->setFont(0, font);
+ item->setFont(1, font);
+ }
+
+ return item;
+}
+
void ModInfoDialog::refreshFiles()
{
if (m_RootPath.length() > 0) {
diff --git a/src/modinfodialog.h b/src/modinfodialog.h
index 95b9db9c..3c193cd3 100644
--- a/src/modinfodialog.h
+++ b/src/modinfodialog.h
@@ -432,6 +432,17 @@ private:
void refreshConflictLists();
void refreshFiles();
+ QTreeWidgetItem* createOverwriteItem(
+ bool archive, const QString& fileName, const QString& relativeName,
+ const MOShared::FileEntry::AlternativesVector& alternatives);
+
+ QTreeWidgetItem* createNoConflictItem(
+ bool archive, const QString& fileName, const QString& relativeName);
+
+ QTreeWidgetItem* createOverwrittenItem(
+ const MOShared::FileEntry::Ptr& file,
+ bool archive, const QString& fileName, const QString& relativeName);
+
void restoreTabState(const QByteArray &state);
void restoreConflictExpandersState(const QByteArray &state);
diff --git a/src/shared/directoryentry.h b/src/shared/directoryentry.h
index 12cef11d..e7af1ae7 100644
--- a/src/shared/directoryentry.h
+++ b/src/shared/directoryentry.h
@@ -49,8 +49,8 @@ class FileEntry {
public:
typedef unsigned int Index;
-
typedef boost::shared_ptr<FileEntry> Ptr;
+ typedef std::vector<std::pair<int, std::pair<std::wstring, int>>> AlternativesVector;
public:
@@ -72,7 +72,7 @@ public:
// gets the list of alternative origins (origins with lower priority than the primary one).
// if sortOrigins has been called, it is sorted by priority (ascending)
- const std::vector<std::pair<int, std::pair<std::wstring, int>>> &getAlternatives() const { return m_Alternatives; }
+ const AlternativesVector &getAlternatives() const { return m_Alternatives; }
const std::wstring &getName() const { return m_Name; }
int getOrigin() const { return m_Origin; }
@@ -98,7 +98,7 @@ private:
std::wstring m_Name;
int m_Origin = -1;
std::pair<std::wstring, int> m_Archive;
- std::vector<std::pair<int, std::pair<std::wstring, int>>> m_Alternatives;
+ AlternativesVector m_Alternatives;
DirectoryEntry *m_Parent;
mutable FILETIME m_FileTime;