mirror of
https://github.com/TES3MP/openmw-tes3mp.git
synced 2025-01-16 10:19:55 +00:00
700d55f1fb
Implemented updating editor application from preferences menu, loading settings when editor loads, adding Record Status Display prefernce. Fixed multiple bugs, made changes to CSM(V)Settings classes to make implementing new prefrences easier. Rewrote CSMSettings::UserSettings to retain last-loaded settings. Adjusted icon position in Record Status column Capitalized status text Added delegate to referenceables table
120 lines
3.1 KiB
C++
120 lines
3.1 KiB
C++
#include "customblock.hpp"
|
|
#include "groupblock.hpp"
|
|
#include "itemblock.hpp"
|
|
#include "proxyblock.hpp"
|
|
|
|
CSVSettings::CustomBlock::CustomBlock (QWidget *parent) : AbstractBlock (parent)
|
|
{
|
|
}
|
|
|
|
int CSVSettings::CustomBlock::build(GroupBlockDefList &defList, GroupBlockDefList::iterator *it)
|
|
{
|
|
int retVal = 0;
|
|
|
|
GroupBlockDefList::iterator defaultIt;
|
|
GroupBlockDefList::iterator listIt = defList.begin();
|
|
GroupBlockDefList::iterator proxyIt = defaultIt;
|
|
|
|
if (it)
|
|
listIt = *it;
|
|
|
|
ProxyBlock *proxyBlock = new ProxyBlock(getParent());
|
|
|
|
for (; listIt != defList.end(); ++listIt)
|
|
{
|
|
if (!(*listIt)->isProxy)
|
|
retVal = buildGroupBlock (*listIt);
|
|
else
|
|
{
|
|
mGroupList << proxyBlock;
|
|
proxyIt = listIt;
|
|
}
|
|
}
|
|
|
|
if (proxyIt != defaultIt)
|
|
retVal = buildProxyBlock (*proxyIt, proxyBlock);
|
|
|
|
return retVal;
|
|
}
|
|
|
|
CSVSettings::GroupBox *CSVSettings::CustomBlock::buildGroupBox (Orientation orientation)
|
|
{
|
|
GroupBox *box = new GroupBox (false, mBox);
|
|
QLayout *layout = createLayout (orientation, true, box);
|
|
|
|
return box;
|
|
}
|
|
|
|
int CSVSettings::CustomBlock::buildGroupBlock(GroupBlockDef *def)
|
|
{
|
|
GroupBlock *block = new GroupBlock (getParent());
|
|
|
|
mGroupList << block;
|
|
|
|
connect (block, SIGNAL (signalUpdateSetting(const QString &, const QString &)),
|
|
this, SLOT (slotUpdateSetting (const QString &, const QString &)));
|
|
|
|
return block->build(def);
|
|
}
|
|
|
|
int CSVSettings::CustomBlock::buildProxyBlock(GroupBlockDef *def, ProxyBlock *block)
|
|
{
|
|
if (def->properties.size() != 1)
|
|
return -1;
|
|
|
|
int retVal = block->build(def);
|
|
|
|
if (retVal != 0)
|
|
return retVal;
|
|
|
|
foreach (QStringList *list, *(def->properties.at(0)->proxyList))
|
|
{
|
|
QString proxiedBlockName = list->at(0);
|
|
|
|
//iterate each group in the custom block, matching it to each proxied setting
|
|
//and connecting it appropriately
|
|
foreach (GroupBlock *groupBlock, mGroupList)
|
|
{
|
|
ItemBlock *proxiedBlock = groupBlock->getItemBlock (proxiedBlockName);
|
|
|
|
if (proxiedBlock)
|
|
{
|
|
block->addSetting(proxiedBlock, list);
|
|
|
|
//connect the proxy block's update signal to the custom block's slot
|
|
connect (block, SIGNAL (signalUpdateSetting (const QString &, const QString &)),
|
|
this, SLOT (slotUpdateSetting (const QString &, const QString &)));
|
|
}
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
CSMSettings::SettingList *CSVSettings::CustomBlock::getSettings()
|
|
{
|
|
CSMSettings::SettingList *settings = new CSMSettings::SettingList();
|
|
|
|
foreach (GroupBlock *block, mGroupList)
|
|
{
|
|
CSMSettings::SettingList *groupSettings = block->getSettings();
|
|
|
|
if (groupSettings)
|
|
settings->append(*groupSettings);
|
|
}
|
|
|
|
return settings;
|
|
}
|
|
|
|
bool CSVSettings::CustomBlock::updateSettings (const CSMSettings::SettingMap &settings)
|
|
{
|
|
bool success = true;
|
|
|
|
foreach (GroupBlock *block, mGroupList)
|
|
{
|
|
bool success2 = block->updateSettings (settings);
|
|
success = success && success2;
|
|
}
|
|
|
|
return success;
|
|
}
|