diff --git a/SandboxiePlus/SandMan/Forms/OptionsWindow.ui b/SandboxiePlus/SandMan/Forms/OptionsWindow.ui index d872dd69..733f863f 100644 --- a/SandboxiePlus/SandMan/Forms/OptionsWindow.ui +++ b/SandboxiePlus/SandMan/Forms/OptionsWindow.ui @@ -7,7 +7,7 @@ 0 0 817 - 626 + 555 @@ -45,7 +45,7 @@ QTabWidget::North - 1 + 0 @@ -55,7 +55,7 @@ - 1 + 0 @@ -64,83 +64,11 @@ - - - - - 0 - 0 - - - - - 16 - 16777215 - - - - - - + + - - - - Always show this sandbox in the systray list (Pinned) - - - - - - - Sandbox Indicator in title: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - cmbBoxIndicator - - - - - - - Sandboxed window border: - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - cmbBoxBorder - - - - - - - Qt::Horizontal - - - - 40 - 0 - - - - - - - - 1 - - - 10 - - - 1 - - + + @@ -158,27 +86,16 @@ - - - - - + + - + Box Type Preset: - - - - - - + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - Show this box in the 'run in box' selection prompt + + cmbBoxType @@ -198,7 +115,48 @@ - + + + + + + + + + + + Always show this sandbox in the systray list (Pinned) + + + + + + + Qt::Horizontal + + + + 40 + 0 + + + + + + + + + + + + + + + Show this box in the 'run in box' selection prompt + + + + Qt::Vertical @@ -211,63 +169,22 @@ - - - - - - - - - - Box Type Preset: + + + + + 0 + 0 + - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - cmbBoxType - - - - - - - px Width - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - spinBorderWidth - - - - - - - - 75 - true - true - + + + 16 + 16777215 + - General Configuration - - - - - - - - 75 - true - true - - - - Appearance + @@ -284,6 +201,71 @@ + + + + Sandboxed window border: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + cmbBoxBorder + + + + + + + 1 + + + 10 + + + 1 + + + + + + + px Width + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + spinBorderWidth + + + + + + + Sandbox Indicator in title: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + cmbBoxIndicator + + + + + + + + true + true + + + + General Configuration + + + @@ -291,6 +273,45 @@ + + + + + true + true + + + + Appearance + + + + + + + + + + + true + true + + + + Box Notes + + + + + + + + 16777215 + 100 + + + + @@ -313,7 +334,6 @@ - 75 true true @@ -363,7 +383,6 @@ - 75 true true @@ -459,7 +478,6 @@ - 75 true true @@ -550,7 +568,6 @@ - 75 true true @@ -702,7 +719,6 @@ - 75 true true @@ -746,7 +762,6 @@ - 75 true true @@ -1126,7 +1141,7 @@ - 1 + 0 @@ -1328,7 +1343,7 @@ - Use original Access Control Entries for boxed Files and Folders (for MSIServer enable exemptions) + Use original Access Control Entries for boxed Files and Folders (for MSIServer enable excemptions) @@ -1343,20 +1358,14 @@ - - - - Qt::Vertical + + + + Run Processes on an own Sandboxed Desktop - - - 20 - 5 - - - + - + Qt::Horizontal @@ -1369,6 +1378,22 @@ + + + + + true + true + + + + Protect the sandbox integrity itself + + + Security Isolation & Filtering + + + @@ -1379,6 +1404,20 @@ + + + + Disable Security Filtering (not recommended) + + + + + + + Disable Security Isolation + + + @@ -1389,6 +1428,19 @@ + + + + Qt::Vertical + + + + 20 + 5 + + + + @@ -1399,11 +1451,10 @@ - - + + - 75 true true @@ -1412,21 +1463,14 @@ Protect the sandbox integrity itself - Security Isolation & Filtering + Desktop Isolation - - + + - Disable Security Isolation - - - - - - - Disable Security Filtering (not recommended) + Open Window Station (improves compatybility by reducing desktop isolation) @@ -1438,7 +1482,7 @@ Box Protection - + @@ -1517,7 +1561,7 @@ - + Qt::Vertical @@ -1546,7 +1590,6 @@ - 75 true true @@ -1645,7 +1688,6 @@ - 75 true true @@ -1737,7 +1779,6 @@ - 75 true true @@ -1827,7 +1868,6 @@ - 50 false true @@ -1842,7 +1882,6 @@ - 75 true true @@ -1856,7 +1895,6 @@ - 75 true true @@ -1884,7 +1922,6 @@ - 75 true true @@ -1931,7 +1968,6 @@ - 75 true true @@ -2574,7 +2610,6 @@ Partially checked: No groups will be added to the newly created sandboxed token. - 75 true true @@ -3357,7 +3392,6 @@ To specify a process use '$:program.exe' as path. - 75 true true @@ -3391,7 +3425,6 @@ To specify a process use '$:program.exe' as path. - 75 true true @@ -3682,7 +3715,6 @@ The process match level has a higher priority than the specificity and describes - 75 true true @@ -3795,7 +3827,7 @@ The process match level has a higher priority than the specificity and describes - + Sandboxed programs can be forced to use a preset SOCKS5 proxy. @@ -3978,7 +4010,6 @@ The process match level has a higher priority than the specificity and describes - 75 true true @@ -4005,7 +4036,6 @@ The process match level has a higher priority than the specificity and describes - 75 true true @@ -4228,7 +4258,6 @@ The process match level has a higher priority than the specificity and describes - 50 false true @@ -4298,7 +4327,6 @@ The process match level has a higher priority than the specificity and describes - 75 true true @@ -4363,7 +4391,6 @@ The process match level has a higher priority than the specificity and describes - 75 true true @@ -4473,7 +4500,6 @@ This is done to prevent rogue processes inside the sandbox from creating a renam - 50 false true @@ -4854,26 +4880,73 @@ This is done to prevent rogue processes inside the sandbox from creating a renam - - - - 50 - false - true - - + - Privacy + Processes - + - + - Use a custom Locale/LangID + Don't allow sandboxed processes to see processes running outside any boxes - + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + Remove + + + + + + + + true + true + + + + Process Hiding + + + + + + + Show Templates + + + + + + + Add Process + + + + + + + Don't allow sandboxed processes to see processes running in other boxes + + + + Hide host processes from processes running in the sandbox. @@ -4883,24 +4956,7 @@ This is done to prevent rogue processes inside the sandbox from creating a renam - - - - Don't allow sandboxed processes to see processes running in other boxes - - - - - - - - - - Add Process - - - - + @@ -4923,62 +4979,50 @@ This is done to prevent rogue processes inside the sandbox from creating a renam - - - - Show Templates - - - - - + + - Dump the current Firmware Tables to HKCU\System\SbieCustom + Some programs read system details through WMI (a Windows built-in database) instead of normal ways. For example, "tasklist.exe" could get full processes list through accessing WMI, even if "HideOtherBoxes" is used. Enable this option to stop this behaviour. - Dump FW Tables + Prevent sandboxed processes from accessing system details through WMI (see tooltip for more info) - - + + + + + + false + true + + + + Privacy + + + + + + + - Remove + Hide Firmware Information - - + + - Don't allow sandboxed processes to see processes running outside any boxes + Hide Disk Serial Number - - - - - 75 - true - true - - + + - Data Protection - - - - - - - - 75 - true - true - - - - Process Hiding + Obfuscate known unique identifiers in the registry @@ -4995,8 +5039,61 @@ This is done to prevent rogue processes inside the sandbox from creating a renam - - + + + + Dump the current Firmware Tables to HKCU\System\SbieCustom + + + Dump FW Tables + + + + + + + + + + Hide Network Adapter MAC Address + + + + + + + + true + true + + + + Data Protection + + + + + + + Use a custom Locale/LangID + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + Qt::Vertical @@ -5008,53 +5105,11 @@ This is done to prevent rogue processes inside the sandbox from creating a renam - - - - Some programs read system details through WMI (a Windows built-in database) instead of normal ways. For example, "tasklist.exe" could get full processes list through accessing WMI, even if "HideOtherBoxes" is used. Enable this option to stop this behaviour. - - - Prevent sandboxed processes from accessing system details through WMI (see tooltip for more info) - - - - - - - Obfuscate known unique identifiers in the registry - - - - - - - Hide Network Adapter MAC Address - - - - - - - Hide Disk Serial Number - - - - - - - - - - Hide Firmware Information - - - - 50 false true @@ -5158,7 +5213,6 @@ Note: Forced Programs and Force Folders settings for a sandbox do not apply to - 75 true true @@ -5287,7 +5341,6 @@ instead of "*". - 75 true true @@ -5331,7 +5384,6 @@ instead of "*". - 50 false true @@ -5387,7 +5439,6 @@ instead of "*". - 75 true true @@ -6058,13 +6109,6 @@ Please note that this values are currently user specific and saved globally for chkHideSerial chkHideMac chkHideUID - chkHideOtherBoxes - chkHideNonSystemProcesses - treeHideProc - btnAddProcess - chkShowHiddenProcTmpl - btnDelProcess - chkBlockWMI lstUsers btnAddUser btnDelUser diff --git a/SandboxiePlus/SandMan/Forms/SettingsWindow.ui b/SandboxiePlus/SandMan/Forms/SettingsWindow.ui index 923bf6ae..e13a4c83 100644 --- a/SandboxiePlus/SandMan/Forms/SettingsWindow.ui +++ b/SandboxiePlus/SandMan/Forms/SettingsWindow.ui @@ -459,27 +459,30 @@ - 0 + 1 Windows Shell - - + + - Add 'Run Un-Sandboxed' to the context menu + Add 'Run Sandboxed' to the explorer context menu - - - - - + + + + + true + true + + - Always use DefaultBox + Start Sandbox Manager @@ -496,48 +499,26 @@ - - - - - 75 - true - true - + + + + Qt::Horizontal - - Start Menu Integration + + + 272 + 13 + - + - - - - Start UI when a sandboxed process is started - - + + - - - - - - - - 75 - true - true - - + + - Run Sandboxed - Actions - - - - - - - Scan shell folders and offer links in run menu + Always use DefaultBox @@ -554,47 +535,6 @@ - - - - Add 'Set Open Path in Sandbox' to context menu - - - - - - - - 75 - true - true - - - - Start Sandbox Manager - - - - - - - Qt::Horizontal - - - - 272 - 13 - - - - - - - - Add 'Set Force in Sandbox' to the context menu - - - @@ -624,17 +564,43 @@ - - + + - Add 'Run Sandboxed' to the explorer context menu + Add 'Set Open Path in Sandbox' to context menu - - + + - Start UI with Windows + Scan shell folders and offer links in run menu + + + + + + + Qt::Vertical + + + + 20 + 154 + + + + + + + + + true + true + + + + Run Sandboxed - Actions @@ -654,18 +620,76 @@ - - - - Qt::Vertical + + + + Start UI when a sandboxed process is started - - - 20 - 154 - + + + + + + + + + Start UI with Windows - + + + + + + + true + true + + + + Start Menu Integration + + + + + + + Add 'Run Un-Sandboxed' to the context menu + + + + + + + Add 'Set Force in Sandbox' to the context menu + + + + + + + + true + true + + + + Sandboxed Desktop + + + + + + + Switch to sandboxed desktop when starting a process + + + + + + + Switch to sandboxed desktop with double click + + diff --git a/SandboxiePlus/SandMan/Views/FileView.cpp b/SandboxiePlus/SandMan/Views/FileView.cpp index 304dfeb6..af9eb2fd 100644 --- a/SandboxiePlus/SandMan/Views/FileView.cpp +++ b/SandboxiePlus/SandMan/Views/FileView.cpp @@ -332,7 +332,7 @@ void CFileView::OnFileMenu(const QPoint&) { auto pBoxPlus = m_pBox.objectCast(); if (FoundPin.isEmpty()) - pBoxPlus->InsertText("RunCommand", Split2(Files.first(), "\\", true).second + "|\"" + pBoxPlus->MakeBoxCommand(Files.first()) + "\""); + pBoxPlus->AppendText("RunCommand", Split2(Files.first(), "\\", true).second + "|\"" + pBoxPlus->MakeBoxCommand(Files.first()) + "\""); else pBoxPlus->DelValue("RunCommand", FoundPin); break; diff --git a/SandboxiePlus/SandMan/Views/SbieView.cpp b/SandboxiePlus/SandMan/Views/SbieView.cpp index f5a91894..847d00b8 100644 --- a/SandboxiePlus/SandMan/Views/SbieView.cpp +++ b/SandboxiePlus/SandMan/Views/SbieView.cpp @@ -1707,7 +1707,7 @@ void CSbieView::OnProcessAction(QAction* Action, const QList& Entry["Name"] = pProcess->GetProcessName(); Entry["WorkingDir"] = pProcess->GetWorkingDir(); Entry["Command"] = pBoxPlus->MakeBoxCommand(pProcess->GetFileName()); - pBoxPlus->InsertText("RunCommand", MakeRunEntry(Entry)); + pBoxPlus->AppendText("RunCommand", MakeRunEntry(Entry)); } else if(!m_pMenuPinToRun->data().toString().isEmpty()) pBoxPlus->DelValue("RunCommand", m_pMenuPinToRun->data().toString()); @@ -1982,7 +1982,7 @@ void CSbieView::OnMenuContextAction() QString Link = m_pCtxPinToRun->data().toString(); if (!Link.isEmpty()) { if (m_pCtxPinToRun->isChecked()) - pBoxPlus->InsertText("RunCommand", Link); + pBoxPlus->AppendText("RunCommand", Link); else pBoxPlus->DelValue("RunCommand", Link); } diff --git a/SandboxiePlus/SandMan/Windows/OptionsAdvanced.cpp b/SandboxiePlus/SandMan/Windows/OptionsAdvanced.cpp index 5dd02330..e7583bd0 100644 --- a/SandboxiePlus/SandMan/Windows/OptionsAdvanced.cpp +++ b/SandboxiePlus/SandMan/Windows/OptionsAdvanced.cpp @@ -44,6 +44,13 @@ void COptionsWindow::CreateAdvanced() connect(ui.chkNoSecurityIsolation, SIGNAL(clicked(bool)), this, SLOT(OnIsolationChanged())); connect(ui.chkNoSecurityFiltering, SIGNAL(clicked(bool)), this, SLOT(OnAdvancedChanged())); +#ifdef INSIDER_BUILD + connect(ui.chkSbieDesktop, SIGNAL(clicked(bool)), this, SLOT(OnAdvancedChanged())); +#else + ui.chkSbieDesktop->setVisible(false); +#endif + connect(ui.chkOpenWndStation, SIGNAL(clicked(bool)), this, SLOT(OnAdvancedChanged())); + connect(ui.chkOpenDevCMApi, SIGNAL(clicked(bool)), this, SLOT(OnAdvancedChanged())); //connect(ui.chkOpenLsaSSPI, SIGNAL(clicked(bool)), this, SLOT(OnAdvancedChanged())); connect(ui.chkOpenSamEndpoint, SIGNAL(clicked(bool)), this, SLOT(OnAdvancedChanged())); @@ -187,6 +194,11 @@ void COptionsWindow::LoadAdvanced() ui.chkNoSecurityIsolation->setChecked(m_pBox->GetBool("NoSecurityIsolation", false)); ui.chkNoSecurityFiltering->setChecked(m_pBox->GetBool("NoSecurityFiltering", false)); +#ifdef INSIDER_BUILD + ui.chkSbieDesktop->setChecked(m_pBox->GetBool("UseSandboxDesktop", false)); +#endif + ui.chkOpenWndStation->setChecked(m_pBox->GetBool("OpenWndStation", false)); + ui.chkOpenDevCMApi->setChecked(m_pBox->GetBool("OpenDevCMApi", false)); //ui.chkOpenLsaSSPI->setChecked(!m_pBox->GetBool("BlockPassword", true)); // OpenLsaSSPI ui.chkOpenSamEndpoint->setChecked(m_pBox->GetBool("OpenSamEndpoint", false)); @@ -442,6 +454,11 @@ void COptionsWindow::SaveAdvanced() WriteAdvancedCheck(ui.chkNoSecurityIsolation, "NoSecurityIsolation", "y", ""); WriteAdvancedCheck(ui.chkNoSecurityFiltering, "NoSecurityFiltering", "y", ""); +#ifdef INSIDER_BUILD + WriteAdvancedCheck(ui.chkSbieDesktop, "UseSandboxDesktop", "y", ""); +#endif + WriteAdvancedCheck(ui.chkOpenWndStation, "OpenWndStation", "y", ""); + WriteAdvancedCheck(ui.chkOpenDevCMApi, "OpenDevCMApi", "y", ""); //WriteAdvancedCheck(ui.chkOpenLsaSSPI, "BlockPassword", "n", ""); // OpenLsaSSPI WriteAdvancedCheck(ui.chkOpenSamEndpoint, "OpenSamEndpoint", "y", ""); diff --git a/SandboxiePlus/SandMan/Windows/OptionsGeneral.cpp b/SandboxiePlus/SandMan/Windows/OptionsGeneral.cpp index 8b7ad569..a1067022 100644 --- a/SandboxiePlus/SandMan/Windows/OptionsGeneral.cpp +++ b/SandboxiePlus/SandMan/Windows/OptionsGeneral.cpp @@ -242,6 +242,8 @@ void COptionsWindow::CreateGeneral() connect(ui.btnCmdDown, SIGNAL(clicked(bool)), this, SLOT(OnCommandDown())); connect(ui.btnDelCmd, SIGNAL(clicked(bool)), this, SLOT(OnDelCommand())); connect(ui.treeRun, SIGNAL(itemChanged(QTreeWidgetItem *, int)), this, SLOT(OnRunChanged())); + + connect(ui.txtNotes, SIGNAL(textChanged()), this, SLOT(OnGeneralChanged())); } void COptionsWindow::LoadGeneral() @@ -381,6 +383,8 @@ void COptionsWindow::LoadGeneral() ui.chkAllowEfs->setChecked(m_pBox->GetBool("EnableEFS", false)); + ui.txtNotes->setPlainText(m_pBox->GetTextList("Note", false).join("\n")); + OnGeneralChanged(); m_GeneralChanged = false; @@ -452,7 +456,7 @@ void COptionsWindow::SaveGeneral() //WriteTextList("RunCommand", RunCommands); m_pBox->DelValue("RunCommand"); foreach(const QString& Value, RunCommands) - m_pBox->InsertText("RunCommand", Value); + m_pBox->AppendText("RunCommand", Value); if (ui.cmbVersion->isEnabled()) @@ -514,6 +518,10 @@ void COptionsWindow::SaveGeneral() WriteAdvancedCheck(ui.chkAllowEfs, "EnableEFS", "y", ""); + m_pBox->DelValue("Note"); + foreach(const QString& Value, ui.txtNotes->toPlainText().split("\n")) + m_pBox->AppendText("Note", Value); + m_GeneralChanged = false; } diff --git a/SandboxiePlus/SandMan/Windows/OptionsWindow.cpp b/SandboxiePlus/SandMan/Windows/OptionsWindow.cpp index 78c117eb..cef30d49 100644 --- a/SandboxiePlus/SandMan/Windows/OptionsWindow.cpp +++ b/SandboxiePlus/SandMan/Windows/OptionsWindow.cpp @@ -254,16 +254,18 @@ COptionsWindow::COptionsWindow(const QSharedPointer& pBox, const QStri ui.tabsAdvanced->setCurrentIndex(0); ui.tabsAdvanced->setTabIcon(0, CSandMan::GetIcon("Presets")); ui.tabsAdvanced->setTabIcon(1, CSandMan::GetIcon("Trigger")); - ui.tabsAdvanced->setTabIcon(2, CSandMan::GetIcon("Anon")); - ui.tabsAdvanced->setTabIcon(3, CSandMan::GetIcon("Users")); - ui.tabsAdvanced->setTabIcon(4, CSandMan::GetIcon("SetLogging")); - ui.tabsAdvanced->setTabIcon(5, CSandMan::GetIcon("Bug")); + ui.tabsAdvanced->setTabIcon(2, CSandMan::GetIcon("Shield2")); + ui.tabsAdvanced->setTabIcon(3, CSandMan::GetIcon("Anon")); + ui.tabsAdvanced->setTabIcon(4, CSandMan::GetIcon("Users")); + ui.tabsAdvanced->setTabIcon(5, CSandMan::GetIcon("SetLogging")); + ui.tabsAdvanced->setTabIcon(6, CSandMan::GetIcon("Bug")); ui.tabsTemplates->setCurrentIndex(0); ui.tabsTemplates->setTabIcon(0, CSandMan::GetIcon("Template")); ui.tabsTemplates->setTabIcon(1, CSandMan::GetIcon("Explore")); ui.tabsTemplates->setTabIcon(2, CSandMan::GetIcon("Accessibility")); + int iViewMode = theConf->GetInt("Options/ViewMode", 1); int iOptionLayout = theConf->GetInt("Options/NewConfigLayout", 2); if (iOptionLayout == 2) @@ -367,6 +369,7 @@ COptionsWindow::COptionsWindow(const QSharedPointer& pBox, const QStri #endif AddIconToLabel(ui.lblAppearance, CSandMan::GetIcon("Design").pixmap(size,size)); AddIconToLabel(ui.lblBoxType, CSandMan::GetIcon("Maintenance").pixmap(size,size)); + AddIconToLabel(ui.lblNotes, CSandMan::GetIcon("EditIni").pixmap(size,size)); AddIconToLabel(ui.lblStructure, CSandMan::GetIcon("Structure").pixmap(size,size)); AddIconToLabel(ui.lblMigration, CSandMan::GetIcon("Move").pixmap(size,size)); AddIconToLabel(ui.lblDelete, CSandMan::GetIcon("Erase").pixmap(size,size)); @@ -394,6 +397,7 @@ COptionsWindow::COptionsWindow(const QSharedPointer& pBox, const QStri AddIconToLabel(ui.lblPrivilege, CSandMan::GetIcon("Token").pixmap(size,size)); AddIconToLabel(ui.lblToken, CSandMan::GetIcon("Sandbox").pixmap(size,size)); AddIconToLabel(ui.lblIsolation, CSandMan::GetIcon("Fence").pixmap(size,size)); + AddIconToLabel(ui.lblDesktop, CSandMan::GetIcon("Monitor").pixmap(size,size)); AddIconToLabel(ui.lblAccess, CSandMan::GetIcon("NoAccess").pixmap(size,size)); AddIconToLabel(ui.lblProtection, CSandMan::GetIcon("EFence").pixmap(size,size)); @@ -911,7 +915,7 @@ void COptionsWindow::WriteAdvancedCheck(QCheckBox* pCheck, const QString& Name, } if (!StrValue.isEmpty()) { - SB_STATUS Status = m_pBox->InsertText(Name, StrValue); + SB_STATUS Status = m_pBox->AppendText(Name, StrValue); if (!Status) throw Status; } @@ -1325,14 +1329,14 @@ void COptionsWindow::SaveIniSection() //if (!OldSettings.removeOne(Settings)) // NewSettings.append(Settings); - m_pBox->InsertText(Settings.first, Settings.second); + m_pBox->AppendText(Settings.first, Settings.second); } //for (QList>::const_iterator I = OldSettings.begin(); I != OldSettings.end(); ++I) // m_pBox->DelValue(I->first, I->second); // //for (QList>::const_iterator I = NewSettings.begin(); I != NewSettings.end(); ++I) - // m_pBox->InsertText(I->first, I->second); + // m_pBox->AppendText(I->first, I->second); m_pBox->SetRefreshOnChange(true); m_pBox->GetAPI()->CommitIniChanges();*/ diff --git a/SandboxiePlus/SandMan/Windows/SettingsWindow.cpp b/SandboxiePlus/SandMan/Windows/SettingsWindow.cpp index f4cd35c5..aed7b43a 100644 --- a/SandboxiePlus/SandMan/Windows/SettingsWindow.cpp +++ b/SandboxiePlus/SandMan/Windows/SettingsWindow.cpp @@ -176,6 +176,7 @@ CSettingsWindow::CSettingsWindow(QWidget* parent) AddIconToLabel(ui.lblStartUp, CSandMan::GetIcon("Start").pixmap(size,size)); AddIconToLabel(ui.lblRunBoxed, CSandMan::GetIcon("Run").pixmap(size,size)); AddIconToLabel(ui.lblStartMenu, CSandMan::GetIcon("StartMenu").pixmap(size,size)); + AddIconToLabel(ui.lblDesktop, CSandMan::GetIcon("Monitor").pixmap(size,size)); AddIconToLabel(ui.lblSysTray, CSandMan::GetIcon("Maintenance").pixmap(size,size)); AddIconToLabel(ui.lblInterface, CSandMan::GetIcon("GUI").pixmap(size,size)); @@ -348,6 +349,15 @@ CSettingsWindow::CSettingsWindow(QWidget* parent) connect(ui.chkScanMenu, SIGNAL(stateChanged(int)), this, SLOT(OnOptChanged())); connect(ui.cmbIntegrateMenu, SIGNAL(currentIndexChanged(int)), this, SLOT(OnOptChanged())); connect(ui.cmbIntegrateDesk, SIGNAL(currentIndexChanged(int)), this, SLOT(OnOptChanged())); + +#ifdef INSIDER_BUILD + connect(ui.chkDeskAutoSwitch, SIGNAL(stateChanged(int)), this, SLOT(OnOptChanged())); + connect(ui.chkDeskQuickSwitch, SIGNAL(stateChanged(int)), this, SLOT(OnOptChanged())); +#else + ui.lblDesktop->setVisible(false); + ui.chkDeskAutoSwitch->setVisible(false); + ui.chkDeskQuickSwitch->setVisible(false); +#endif connect(ui.cmbSysTray, SIGNAL(currentIndexChanged(int)), this, SLOT(OnOptChanged())); connect(ui.cmbTrayBoxes, SIGNAL(currentIndexChanged(int)), this, SLOT(OnOptChanged())); @@ -434,7 +444,6 @@ CSettingsWindow::CSettingsWindow(QWidget* parent) connect(ui.chkObjCb, SIGNAL(stateChanged(int)), this, SLOT(OnFeaturesChanged())); if (CurrentVersion.value("CurrentBuild").toInt() < 14393) // Windows 10 RS1 and later ui.chkWin32k->setEnabled(false); - //connect(ui.chkForceExplorerChild, SIGNAL(stateChanged(int)), this, SLOT(OnFeaturesChanged())); //connect(ui.chkWin32k, SIGNAL(stateChanged(int)), this, SLOT(OnFeaturesChanged())); m_FeaturesChanged = false; connect(ui.chkWin32k, SIGNAL(stateChanged(int)), this, SLOT(OnGeneralChanged())); @@ -987,7 +996,12 @@ void CSettingsWindow::LoadSettings() ui.chkScanMenu->setChecked(theConf->GetBool("Options/ScanStartMenu", true)); ui.cmbIntegrateMenu->setCurrentIndex(theConf->GetInt("Options/IntegrateStartMenu", 0)); ui.cmbIntegrateDesk->setCurrentIndex(theConf->GetInt("Options/IntegrateDesktop", 0)); - + +#ifdef INSIDER_BUILD + ui.chkDeskAutoSwitch->setChecked(theConf->GetBool("Options/AutoDesktopSwitch", true)); + ui.chkDeskQuickSwitch->setChecked(theConf->GetBool("Options/QuickDesktopSwitch", true)); +#endif + ui.cmbSysTray->setCurrentIndex(theConf->GetInt("Options/SysTrayIcon", 1)); ui.cmbTrayBoxes->setCurrentIndex(theConf->GetInt("Options/SysTrayFilter", 0)); ui.chkCompactTray->setChecked(theConf->GetBool("Options/CompactTray", false)); @@ -996,7 +1010,6 @@ void CSettingsWindow::LoadSettings() ui.chkMinimize->setChecked(theConf->GetBool("Options/MinimizeToTray", false)); ui.chkSingleShow->setChecked(theConf->GetBool("Options/TraySingleClick", false)); - //ui.chkForceExplorerChild->setChecked(strcmp(theAPI->GetGlobalSettings()->GetText("ForceExplorerChild").toStdString().c_str(), theAPI->GetGlobalSettings()->GetText("DefaultBox").toStdString().c_str())==0); OnLoadAddon(); bool bImDiskReady = theGUI->IsImDiskReady(); @@ -1773,6 +1786,11 @@ void CSettingsWindow::SaveSettings() theGUI->SyncStartMenu(); } +#ifdef INSIDER_BUILD + theConf->SetValue("Options/AutoDesktopSwitch", ui.chkDeskAutoSwitch->isChecked()); + theConf->SetValue("Options/QuickDesktopSwitch", ui.chkDeskQuickSwitch->isChecked()); +#endif + theConf->SetValue("Options/SysTrayIcon", ui.cmbSysTray->currentIndex()); theConf->SetValue("Options/SysTrayFilter", ui.cmbTrayBoxes->currentIndex()); theConf->SetValue("Options/CompactTray", ui.chkCompactTray->isChecked()); @@ -1811,7 +1829,7 @@ void CSettingsWindow::SaveSettings() //WriteTextList("RunCommand", RunCommands); theAPI->GetGlobalSettings()->DelValue("RunCommand"); foreach(const QString & Value, RunCommands) - theAPI->GetGlobalSettings()->InsertText("RunCommand", Value); + theAPI->GetGlobalSettings()->AppendText("RunCommand", Value); } if (m_GeneralChanged)