summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/categories.cpp87
-rw-r--r--src/installationmanager.cpp10
-rw-r--r--src/modinfo.cpp1
-rw-r--r--src/modinfo.h3
-rw-r--r--src/modinforegular.cpp2
-rw-r--r--src/modlist.cpp3
-rw-r--r--src/organizercore.cpp16
-rw-r--r--src/resources.qrc1
8 files changed, 78 insertions, 45 deletions
diff --git a/src/categories.cpp b/src/categories.cpp
index be6af9ae..02ebbd8a 100644
--- a/src/categories.cpp
+++ b/src/categories.cpp
@@ -205,42 +205,65 @@ void CategoryFactory::loadDefaultCategories()
{
// the order here is relevant as it defines the order in which the
// mods appear in the combo box
- addCategory(1, "Animations", MakeVector<int>(1, 51), 0);
- addCategory(2, "Armour", MakeVector<int>(1, 54), 0);
- addCategory(3, "Sound & Music", MakeVector<int>(1, 61), 0);
- addCategory(5, "Clothing", MakeVector<int>(1, 60), 0);
- addCategory(6, "Collectables", MakeVector<int>(1, 92), 0);
- addCategory(28, "Companions", MakeVector<int>(2, 66, 96), 0);
- addCategory(7, "Creatures & Mounts", MakeVector<int>(2, 83, 65), 0);
- addCategory(8, "Factions", MakeVector<int>(1, 25), 0);
- addCategory(9, "Gameplay", MakeVector<int>(1, 24), 0);
- addCategory(10, "Hair", MakeVector<int>(1, 26), 0);
- addCategory(11, "Items", MakeVector<int>(2, 27, 85), 0);
- addCategory(32, "Mercantile", MakeVector<int>(1, 69), 0);
- addCategory(19, "Weapons", MakeVector<int>(1, 55), 11);
- addCategory(36, "Weapon & Armour Sets", MakeVector<int>(1, 39), 11);
- addCategory(12, "Locations", MakeVector<int>(7, 22, 30, 70, 88, 89, 90, 91), 0);
- addCategory(31, "Landscape Changes", MakeVector<int>(1, 58), 0);
- addCategory(4, "Cities", MakeVector<int>(1, 53), 12);
- addCategory(29, "Environment", MakeVector<int>(1, 74), 0);
- addCategory(30, "Immersion", MakeVector<int>(1, 78), 0);
+ addCategory(1, "Animations", MakeVector<int>(2, 4, 51), 0);
+ addCategory(52, "Poses", MakeVector<int>(1, 29), 1);
+ addCategory(2, "Armour", MakeVector<int>(2, 5, 54), 0);
+ addCategory(53, "Power Armor", MakeVector<int>(1, 53), 2);
+ addCategory(3, "Audio", MakeVector<int>(3, 33, 35, 106), 0);
+ addCategory(38, "Music", MakeVector<int>(2, 34, 61), 0);
+ addCategory(39, "Voice", MakeVector<int>(2, 36, 107), 0);
+ addCategory(5, "Clothing", MakeVector<int>(2, 9, 60), 0);
+ addCategory(41, "Jewelry", MakeVector<int>(1, 102), 5);
+ addCategory(42, "Backpacks", MakeVector<int>(1, 49), 5);
+ addCategory(6, "Collectables", MakeVector<int>(2, 10, 92), 0);
+ addCategory(28, "Companions", MakeVector<int>(3, 11, 66, 96), 0);
+ addCategory(7, "Creatures, Mounts, & Vehicles", MakeVector<int>(4, 12, 39, 83, 65), 0);
+ addCategory(8, "Factions", MakeVector<int>(2, 16, 25), 0);
+ addCategory(9, "Gameplay", MakeVector<int>(2, 15, 24), 0);
+ addCategory(27, "Combat", MakeVector<int>(1, 77), 9);
+ addCategory(43, "Crafting", MakeVector<int>(2, 50, 100), 9);
+ addCategory(48, "Overhauls", MakeVector<int>(2, 24, 79), 9);
+ addCategory(49, "Perks", MakeVector<int>(1, 27), 9);
+ addCategory(54, "Radio", MakeVector<int>(1, 31), 9);
+ addCategory(55, "Shouts", MakeVector<int>(1, 104), 9);
+ addCategory(22, "Skills & Levelling", MakeVector<int>(2, 46, 73), 9);
+ addCategory(58, "Weather & Lighting", MakeVector<int>(1, 56), 9);
+ addCategory(44, "Equipment", MakeVector<int>(1, 44), 43);
+ addCategory(45, "Home/Settlement", MakeVector<int>(1, 45), 43);
+ addCategory(10, "Body, Face, & Hair", MakeVector<int>(2, 17, 26), 0);
+ addCategory(56, "Tattoos", MakeVector<int>(1, 57), 10);
+ addCategory(40, "Character Presets", MakeVector<int>(1, 58), 0);
+ addCategory(11, "Items", MakeVector<int>(3, 27, 85), 0);
+ addCategory(32, "Mercantile", MakeVector<int>(2, 23, 69), 0);
+ addCategory(37, "Ammo", MakeVector<int>(1, 3), 11);
+ addCategory(19, "Weapons", MakeVector<int>(2, 41, 55), 11);
+ addCategory(36, "Weapon & Armour Sets", MakeVector<int>(2, 39, 42), 11);
+ addCategory(23, "Player Homes", MakeVector<int>(1, 28, 67), 0);
addCategory(25, "Castles & Mansions", MakeVector<int>(1, 68), 23);
+ addCategory(51, "Settlements", MakeVector<int>(1, 48), 23);
+ addCategory(57, "Blueprints", MakeVector<int>(1, 61), 51);
+ addCategory(12, "Locations", MakeVector<int>(10, 20, 21, 22, 30, 47, 70, 88, 89, 90, 91), 0);
+ addCategory(4, "Cities", MakeVector<int>(1, 53), 12);
+ addCategory(31, "Landscape Changes", MakeVector<int>(1, 58), 0);
+ addCategory(29, "Environment", MakeVector<int>(1, 14, 74), 0);
+ addCategory(30, "Immersion", MakeVector<int>(2, 51, 78), 0);
addCategory(20, "Magic", MakeVector<int>(3, 75, 93, 94), 0);
- addCategory(21, "Models & Textures", MakeVector<int>(1, 29), 0);
- addCategory(33, "Modders resources", MakeVector<int>(1, 82), 0);
- addCategory(13, "NPCs", MakeVector<int>(1, 33), 0);
- addCategory(14, "Patches", MakeVector<int>(2, 79, 84), 0);
- addCategory(24, "Bugfixes", MakeVector<int>(1, 95), 0);
- addCategory(35, "Utilities", MakeVector<int>(1, 39), 0);
- addCategory(26, "Cheats", MakeVector<int>(1, 40), 0);
- addCategory(23, "Player Homes", MakeVector<int>(1, 67), 0);
- addCategory(15, "Quests", MakeVector<int>(1, 35), 0);
+ addCategory(21, "Models & Textures", MakeVector<int>(2, 19, 29), 0);
+ addCategory(33, "Modders resources", MakeVector<int>(2, 18, 82), 0);
+ addCategory(13, "NPCs", MakeVector<int>(3, 22, 33, 99), 0);
+ addCategory(24, "Bugfixes", MakeVector<int>(2, 6, 95), 0);
+ addCategory(14, "Patches", MakeVector<int>(2, 25, 84), 24);
+ addCategory(39, "Performance", MakeVector<int>(1, 26), 24);
+ addCategory(35, "Utilities", MakeVector<int>(2, 38, 39), 0);
+ addCategory(26, "Cheats", MakeVector<int>(1, 8, 40), 0);
+ addCategory(15, "Quests", MakeVector<int>(2, 30, 35), 0);
addCategory(16, "Races & Classes", MakeVector<int>(1, 34), 0);
- addCategory(27, "Combat", MakeVector<int>(1, 77), 0);
- addCategory(22, "Skills", MakeVector<int>(1, 73), 0);
addCategory(34, "Stealth", MakeVector<int>(1, 76), 0);
- addCategory(17, "UI", MakeVector<int>(1, 42), 0);
- addCategory(18, "Visuals", MakeVector<int>(1, 62), 0);
+ addCategory(17, "UI", MakeVector<int>(2, 37, 42), 0);
+ addCategory(18, "Visuals", MakeVector<int>(2, 40, 62), 0);
+ addCategory(50, "Pip-Boy", MakeVector<int>(1, 52), 18);
+ addCategory(46, "Shader Presets", MakeVector<int>(3, 13, 97, 105), 0);
+ addCategory(47, "Miscellaneous", MakeVector<int>(2, 2, 28), 0);
}
diff --git a/src/installationmanager.cpp b/src/installationmanager.cpp
index 9be4cdd9..9a70f8bd 100644
--- a/src/installationmanager.cpp
+++ b/src/installationmanager.cpp
@@ -187,6 +187,7 @@ bool InstallationManager::unpackSingleFile(const QString &fileName)
m_InstallationProgress->setWindowTitle(tr("Extracting files"));
m_InstallationProgress->setWindowModality(Qt::WindowModal);
+ m_InstallationProgress->setFixedSize(600, 100);
m_InstallationProgress->show();
bool res = m_ArchiveHandler->extract(QDir::tempPath(),
@@ -274,6 +275,7 @@ QStringList InstallationManager::extractFiles(const QStringList &filesOrig, bool
m_InstallationProgress->windowFlags() & (~Qt::WindowContextHelpButtonHint));
m_InstallationProgress->setWindowTitle(tr("Extracting files"));
m_InstallationProgress->setWindowModality(Qt::WindowModal);
+ m_InstallationProgress->setFixedSize(600, 100);
m_InstallationProgress->show();
// unpack only the files we need for the installer
@@ -419,9 +421,10 @@ void InstallationManager::updateProgress(float percentage)
void InstallationManager::updateProgressFile(QString const &fileName)
{
- if (m_InstallationProgress != nullptr) {
- m_InstallationProgress->setLabelText(fileName);
- }
+ if (m_InstallationProgress != nullptr) {
+ m_InstallationProgress->setLabelText(fileName);
+ QCoreApplication::processEvents();
+ }
}
@@ -563,6 +566,7 @@ bool InstallationManager::doInstall(GuessedValue<QString> &modName, int modID,
m_InstallationProgress->setWindowFlags(
m_InstallationProgress->windowFlags() & (~Qt::WindowContextHelpButtonHint));
m_InstallationProgress->setWindowModality(Qt::WindowModal);
+ m_InstallationProgress->setFixedSize(600, 100);
m_InstallationProgress->show();
if (!m_ArchiveHandler->extract(targetDirectory,
new MethodCallback<InstallationManager, void, float>(this, &InstallationManager::updateProgress),
diff --git a/src/modinfo.cpp b/src/modinfo.cpp
index 7cb4b4ba..5d3c1e41 100644
--- a/src/modinfo.cpp
+++ b/src/modinfo.cpp
@@ -99,6 +99,7 @@ QString ModInfo::getContentTypeName(int contentType)
case CONTENT_SCRIPT: return tr("Scripts");
case CONTENT_SKSE: return tr("SKSE Plugins");
case CONTENT_SKYPROC: return tr("SkyProc Tools");
+ case CONTENT_MCM: return tr("MCM Data");
default: throw MyException(tr("invalid content type %1").arg(contentType));
}
}
diff --git a/src/modinfo.h b/src/modinfo.h
index 501588ec..1485a4b3 100644
--- a/src/modinfo.h
+++ b/src/modinfo.h
@@ -79,7 +79,8 @@ public:
CONTENT_SOUND,
CONTENT_SCRIPT,
CONTENT_SKSE,
- CONTENT_SKYPROC
+ CONTENT_SKYPROC,
+ CONTENT_MCM
};
static const int NUM_CONTENT_TYPES = CONTENT_SKYPROC + 1;
diff --git a/src/modinforegular.cpp b/src/modinforegular.cpp
index 1194f604..c296d792 100644
--- a/src/modinforegular.cpp
+++ b/src/modinforegular.cpp
@@ -458,6 +458,8 @@ std::vector<ModInfo::EContent> ModInfoRegular::getContents() const
m_CachedContent.push_back(CONTENT_SCRIPT);
if (dir.exists("SkyProc Patchers"))
m_CachedContent.push_back(CONTENT_SKYPROC);
+ if (dir.exists("MCM"))
+ m_CachedContent.push_back(CONTENT_MCM);
m_LastContentCheck = QTime::currentTime();
}
diff --git a/src/modlist.cpp b/src/modlist.cpp
index 0aea7a98..ffbdee95 100644
--- a/src/modlist.cpp
+++ b/src/modlist.cpp
@@ -60,7 +60,7 @@ ModList::ModList(QObject *parent)
, m_FontMetrics(QFont())
, m_DropOnItems(false)
{
- m_ContentIcons[ModInfo::CONTENT_PLUGIN] = std::make_tuple(":/MO/gui/content/plugin", tr("Game plugins (esp/esm/esl)"));
+ m_ContentIcons[ModInfo::CONTENT_PLUGIN] = std::make_tuple(":/MO/gui/content/plugin", tr("Game Plugins (ESP/ESM/ESL)"));
m_ContentIcons[ModInfo::CONTENT_INTERFACE] = std::make_tuple(":/MO/gui/content/interface", tr("Interface"));
m_ContentIcons[ModInfo::CONTENT_MESH] = std::make_tuple(":/MO/gui/content/mesh", tr("Meshes"));
m_ContentIcons[ModInfo::CONTENT_BSA] = std::make_tuple(":/MO/gui/content/bsa", tr("BSA"));
@@ -69,6 +69,7 @@ ModList::ModList(QObject *parent)
m_ContentIcons[ModInfo::CONTENT_SKYPROC] = std::make_tuple(":/MO/gui/content/skyproc", tr("SkyProc Patcher"));
m_ContentIcons[ModInfo::CONTENT_SOUND] = std::make_tuple(":/MO/gui/content/sound", tr("Sound or Music"));
m_ContentIcons[ModInfo::CONTENT_TEXTURE] = std::make_tuple(":/MO/gui/content/texture", tr("Textures"));
+ m_ContentIcons[ModInfo::CONTENT_MCM] = std::make_tuple(":/MO/gui/content/menu", tr("MCM Configuration"));
m_LastCheck.start();
}
diff --git a/src/organizercore.cpp b/src/organizercore.cpp
index deb47d74..f8a368c9 100644
--- a/src/organizercore.cpp
+++ b/src/organizercore.cpp
@@ -1253,16 +1253,14 @@ bool OrganizerCore::waitForProcessCompletion(HANDLE handle, LPDWORD exitCode)
LPDWORD processes = new DWORD[maxCount];
std::map<DWORD, HANDLE> handles;
- DWORD currentProcess = 0UL;
bool tryAgain = true;
DWORD moProcess = -1;
DWORD res;
// Wait for a an event on the handle, a key press, mouse click or timeout
- //TODO: Remove MOBase::isOneOf from this query as it was always returning true.
while (
res = ::MsgWaitForMultipleObjects(1, &handle, false, 500,
- QS_KEY | QS_MOUSE),
+ QS_KEY | QS_MOUSEBUTTON),
((m_UserInterface == nullptr) || !m_UserInterface->unlockClicked())) {
if (!::GetVFSProcessList(&numProcesses, processes)) {
@@ -1304,20 +1302,22 @@ bool OrganizerCore::waitForProcessCompletion(HANDLE handle, LPDWORD exitCode)
}
}
+ // Update the lock process name with the name of the lowest active PID - though this may not actually be the main process
if (handles.size() > 0)
m_UserInterface->setProcessName(QString::fromStdWString(getProcessName(handles.begin()->second)));
+ // If the main wait process dies, we need a backup wait process until the subprocesses close
if ((res == WAIT_FAILED) || (res == WAIT_OBJECT_0)) {
if (handles.size() > 0) {
- QThread::msleep(500);
+ // By the time we get here, the main wait function should always immediately continue
+ // Passing in a handle doesn't seem to work for subprocesses
+ ::MsgWaitForMultipleObjects(0, NULL, FALSE, 500, QS_KEY | QS_MOUSEBUTTON);
}
}
- // If process handle is still closed, let's give it one more try...
+ // Give the process list a short time to populate
+ // Required for initial USVFS boot and process switching
if (handles.size() == 0 && !found) {
- // it's possible the previous process has deregistered before
- // the new one has registered, so we should try one more time
- // with a little delay
if (tryAgain) {
tryAgain = false;
QThread::msleep(500);
diff --git a/src/resources.qrc b/src/resources.qrc
index d357801c..e88eda06 100644
--- a/src/resources.qrc
+++ b/src/resources.qrc
@@ -82,6 +82,7 @@
<file alias="mesh">resources/contents/breastplate.png</file>
<file alias="string">resources/contents/conversation.png</file>
<file alias="bsa">resources/contents/locked-chest.png</file>
+ <file alias="menu">resources/contents/config.png</file>
</qresource>
<qresource prefix="/qt/etc">
<file>qt.conf</file>