179 lines
5.1 KiB
C++
179 lines
5.1 KiB
C++
#include "stdafx.h"
|
|
#include "OptionsWindow.h"
|
|
#include "SandMan.h"
|
|
#include "SettingsWindow.h"
|
|
#include "../MiscHelpers/Common/Settings.h"
|
|
#include "../MiscHelpers/Common/Common.h"
|
|
#include "../MiscHelpers/Common/ComboInputDialog.h"
|
|
#include "../MiscHelpers/Common/SettingsWidgets.h"
|
|
#include "Helpers/WinAdmin.h"
|
|
|
|
|
|
void COptionsWindow::LoadStop()
|
|
{
|
|
ui.treeStop->clear();
|
|
foreach(const QString& Value, m_pBox->GetTextList("LingerProcess", m_Template))
|
|
AddStopEntry(Value);
|
|
foreach(const QString& Value, m_pBox->GetTextList("LingerProcessDisabled", m_Template))
|
|
AddStopEntry(Value, true);
|
|
LoadStopTmpl();
|
|
|
|
ui.treeLeader->clear();
|
|
foreach(const QString& Value, m_pBox->GetTextList("LeaderProcess", m_Template))
|
|
AddLeaderEntry(Value);
|
|
foreach(const QString& Value, m_pBox->GetTextList("LeaderProcessDisabled", m_Template))
|
|
AddLeaderEntry(Value, true);
|
|
LoadLeaderTmpl();
|
|
|
|
ui.chkNoStopWnd->setChecked(m_pBox->GetBool("LingerExemptWnds", true));
|
|
ui.chkLingerLeniency->setChecked(m_pBox->GetBool("LingerLeniency", true));
|
|
|
|
m_StopChanged = false;
|
|
}
|
|
|
|
void COptionsWindow::LoadStopTmpl(bool bUpdate)
|
|
{
|
|
if (ui.chkShowStopTmpl->isChecked())
|
|
{
|
|
foreach(const QString & Template, m_pBox->GetTemplates())
|
|
{
|
|
foreach(const QString & Value, m_pBox->GetTextListTmpl("LingerProcess", Template))
|
|
AddStopEntry(Value, false, Template);
|
|
}
|
|
}
|
|
else if (bUpdate)
|
|
{
|
|
for (int i = 0; i < ui.treeStop->topLevelItemCount(); )
|
|
{
|
|
QTreeWidgetItem* pItem = ui.treeStop->topLevelItem(i);
|
|
int Type = pItem->data(1, Qt::UserRole).toInt();
|
|
if (Type == -1) {
|
|
delete pItem;
|
|
continue; // entry from template
|
|
}
|
|
i++;
|
|
}
|
|
}
|
|
}
|
|
|
|
void COptionsWindow::LoadLeaderTmpl(bool bUpdate)
|
|
{
|
|
if (ui.chkShowLeaderTmpl->isChecked())
|
|
{
|
|
foreach(const QString & Template, m_pBox->GetTemplates())
|
|
{
|
|
foreach(const QString & Value, m_pBox->GetTextListTmpl("LeaderProcess", Template))
|
|
AddLeaderEntry(Value, false, Template);
|
|
}
|
|
}
|
|
else if (bUpdate)
|
|
{
|
|
for (int i = 0; i < ui.treeLeader->topLevelItemCount(); )
|
|
{
|
|
QTreeWidgetItem* pItem = ui.treeLeader->topLevelItem(i);
|
|
int Type = pItem->data(1, Qt::UserRole).toInt();
|
|
if (Type == -1) {
|
|
delete pItem;
|
|
continue; // entry from template
|
|
}
|
|
i++;
|
|
}
|
|
}
|
|
}
|
|
|
|
void COptionsWindow::AddStopEntry(const QString& Name, bool disabled, const QString& Template)
|
|
{
|
|
QTreeWidgetItem* pItem = new QTreeWidgetItem();
|
|
pItem->setCheckState(0, disabled ? Qt::Unchecked : Qt::Checked);
|
|
pItem->setData(1, Qt::UserRole, Template.isEmpty() ? 0 : -1);
|
|
SetProgramItem(Name, pItem, 0, (Template.isEmpty() ? "" : " (" + Template + ")"));
|
|
if(Template.isEmpty())
|
|
pItem->setFlags(pItem->flags() | Qt::ItemIsEditable);
|
|
ui.treeStop->addTopLevelItem(pItem);
|
|
}
|
|
|
|
void COptionsWindow::AddLeaderEntry(const QString& Name, bool disabled, const QString& Template)
|
|
{
|
|
QTreeWidgetItem* pItem = new QTreeWidgetItem();
|
|
pItem->setCheckState(0, disabled ? Qt::Unchecked : Qt::Checked);
|
|
pItem->setData(1, Qt::UserRole, Template.isEmpty() ? 0 : -1);
|
|
SetProgramItem(Name, pItem, 0, (Template.isEmpty() ? "" : " (" + Template + ")"));
|
|
if(Template.isEmpty())
|
|
pItem->setFlags(pItem->flags() | Qt::ItemIsEditable);
|
|
ui.treeLeader->addTopLevelItem(pItem);
|
|
}
|
|
|
|
void COptionsWindow::SaveStop()
|
|
{
|
|
QStringList LingerProcess;
|
|
QStringList LingerProcessDisabled;
|
|
for (int i = 0; i < ui.treeStop->topLevelItemCount(); i++)
|
|
{
|
|
QTreeWidgetItem* pItem = ui.treeStop->topLevelItem(i);
|
|
int Type = pItem->data(1, Qt::UserRole).toInt();
|
|
if (Type == -1)
|
|
continue; // entry from template
|
|
if (pItem->checkState(0) == Qt::Checked)
|
|
LingerProcess.append(pItem->data(0, Qt::UserRole).toString());
|
|
else
|
|
LingerProcessDisabled.append(pItem->data(0, Qt::UserRole).toString());
|
|
}
|
|
WriteTextList("LingerProcess", LingerProcess);
|
|
WriteTextList("LingerProcessDisabled", LingerProcessDisabled);
|
|
|
|
QStringList LeaderProcess;
|
|
QStringList LeaderProcessDisabled;
|
|
for (int i = 0; i < ui.treeLeader->topLevelItemCount(); i++)
|
|
{
|
|
QTreeWidgetItem* pItem = ui.treeLeader->topLevelItem(i);
|
|
int Type = pItem->data(1, Qt::UserRole).toInt();
|
|
if (Type == -1)
|
|
continue; // entry from template
|
|
if (pItem->checkState(0) == Qt::Checked)
|
|
LeaderProcess.append(pItem->data(0, Qt::UserRole).toString());
|
|
else
|
|
LeaderProcessDisabled.append(pItem->data(0, Qt::UserRole).toString());
|
|
}
|
|
WriteTextList("LeaderProcess", LeaderProcess);
|
|
WriteTextList("LeaderProcessDisabled", LeaderProcessDisabled);
|
|
|
|
WriteAdvancedCheck(ui.chkNoStopWnd, "LingerExemptWnds", "", "n");
|
|
WriteAdvancedCheck(ui.chkLingerLeniency, "LingerLeniency", "", "n");
|
|
|
|
m_StopChanged = false;
|
|
}
|
|
|
|
void COptionsWindow::OnAddLingering()
|
|
{
|
|
QString Value = SelectProgram();
|
|
if (Value.isEmpty())
|
|
return;
|
|
AddStopEntry(Value);
|
|
m_StopChanged = true;
|
|
OnOptChanged();
|
|
}
|
|
|
|
void COptionsWindow::OnAddLeader()
|
|
{
|
|
QString Value = SelectProgram();
|
|
if (Value.isEmpty())
|
|
return;
|
|
AddLeaderEntry(Value);
|
|
m_StopChanged = true;
|
|
OnOptChanged();
|
|
}
|
|
|
|
void COptionsWindow::OnDelStopProg()
|
|
{
|
|
DeleteAccessEntry(ui.treeStop->currentItem(), 1);
|
|
m_StopChanged = true;
|
|
OnOptChanged();
|
|
}
|
|
|
|
void COptionsWindow::OnDelLeader()
|
|
{
|
|
DeleteAccessEntry(ui.treeLeader->currentItem(), 1);
|
|
m_StopChanged = true;
|
|
OnOptChanged();
|
|
}
|