diff options
| author | isanae <14251494+isanae@users.noreply.github.com> | 2019-05-28 14:55:01 -0400 |
|---|---|---|
| committer | isanae <14251494+isanae@users.noreply.github.com> | 2019-05-31 11:54:30 -0400 |
| commit | d168b5db084457a106c5bb155be6eca5013f77c0 (patch) | |
| tree | ee1308087fc1fd26e0f8ce3f231a4dbe5706d679 /src | |
| parent | 3666995ce1c02bcb3b7937dfc112c84e81c4fead (diff) | |
added AlternativesVector typedef to FileEntry
split item creation from refreshConflictLists()
Diffstat (limited to 'src')
| -rw-r--r-- | src/modinfodialog.cpp | 130 | ||||
| -rw-r--r-- | src/modinfodialog.h | 11 | ||||
| -rw-r--r-- | src/shared/directoryentry.h | 6 |
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;
|
