mirror of
https://github.com/Xevion/easy7zip.git
synced 2025-12-14 08:11:35 -06:00
162 lines
3.9 KiB
C++
Executable File
162 lines
3.9 KiB
C++
Executable File
// FoldersDialog.cpp
|
|
|
|
#include "StdAfx.h"
|
|
|
|
#include "resource.h"
|
|
#include "FoldersPage.h"
|
|
|
|
#include "Common/StringConvert.h"
|
|
#include "Windows/Defs.h"
|
|
#include "Windows/Shell.h"
|
|
#include "Windows/ResourceString.h"
|
|
|
|
#include "../../../FileManager/HelpUtils.h"
|
|
#include "../../Common/ZipRegistry.h"
|
|
|
|
#include "../../../FileManager/LangUtils.h"
|
|
|
|
using namespace NWindows;
|
|
|
|
static CIDLangPair kIDLangPairs[] =
|
|
{
|
|
{ IDC_FOLDERS_STATIC_WORKING_FOLDER, 0x01000210 },
|
|
{ IDC_FOLDERS_WORK_RADIO_SYSTEM, 0x01000211 },
|
|
{ IDC_FOLDERS_WORK_RADIO_CURRENT, 0x01000212 },
|
|
{ IDC_FOLDERS_WORK_RADIO_SPECIFIED, 0x01000213 },
|
|
{ IDC_FOLDERS_WORK_CHECK_FOR_REMOVABLE, 0x01000214 }
|
|
};
|
|
|
|
static const int kWorkModeButtons[] =
|
|
{
|
|
IDC_FOLDERS_WORK_RADIO_SYSTEM,
|
|
IDC_FOLDERS_WORK_RADIO_CURRENT,
|
|
IDC_FOLDERS_WORK_RADIO_SPECIFIED
|
|
};
|
|
|
|
static const int kNumWorkModeButtons = sizeof(kWorkModeButtons) / sizeof(kWorkModeButtons[0]);
|
|
|
|
bool CFoldersPage::OnInit()
|
|
{
|
|
LangSetDlgItemsText(HWND(*this), kIDLangPairs, sizeof(kIDLangPairs) / sizeof(kIDLangPairs[0]));
|
|
// CZipRegistryManager aRegistryManager;
|
|
ReadWorkDirInfo(m_WorkDirInfo);
|
|
|
|
CheckButton(IDC_FOLDERS_WORK_CHECK_FOR_REMOVABLE, m_WorkDirInfo.ForRemovableOnly);
|
|
|
|
CheckRadioButton(kWorkModeButtons[0], kWorkModeButtons[kNumWorkModeButtons - 1],
|
|
kWorkModeButtons[m_WorkDirInfo.Mode]);
|
|
|
|
m_WorkPath.Init(*this, IDC_FOLDERS_WORK_EDIT_PATH);
|
|
m_ButtonSetWorkPath.Init(*this, IDC_FOLDERS_WORK_BUTTON_PATH);
|
|
|
|
m_WorkPath.SetText(m_WorkDirInfo.Path);
|
|
|
|
MyEnableControls();
|
|
|
|
return CPropertyPage::OnInit();
|
|
}
|
|
|
|
int CFoldersPage::GetWorkMode() const
|
|
{
|
|
for (int i = 0; i < kNumWorkModeButtons; i++)
|
|
if(IsButtonCheckedBool(kWorkModeButtons[i]))
|
|
return i;
|
|
throw 0;
|
|
}
|
|
|
|
void CFoldersPage::MyEnableControls()
|
|
{
|
|
bool anEnablePath = (GetWorkMode() == NWorkDir::NMode::kSpecified);
|
|
m_WorkPath.Enable(anEnablePath);
|
|
m_ButtonSetWorkPath.Enable(anEnablePath);
|
|
}
|
|
|
|
void CFoldersPage::GetWorkDir(NWorkDir::CInfo &aWorkDirInfo)
|
|
{
|
|
m_WorkPath.GetText(aWorkDirInfo.Path);
|
|
aWorkDirInfo.ForRemovableOnly = IsButtonCheckedBool(IDC_FOLDERS_WORK_CHECK_FOR_REMOVABLE);
|
|
aWorkDirInfo.Mode = NWorkDir::NMode::EEnum(GetWorkMode());
|
|
}
|
|
|
|
/*
|
|
bool CFoldersPage::WasChanged()
|
|
{
|
|
NWorkDir::CInfo aWorkDirInfo;
|
|
GetWorkDir(aWorkDirInfo);
|
|
return (aWorkDirInfo.Mode != m_WorkDirInfo.Mode ||
|
|
aWorkDirInfo.ForRemovableOnly != m_WorkDirInfo.ForRemovableOnly ||
|
|
aWorkDirInfo.Path.Compare(m_WorkDirInfo.Path) != 0);
|
|
}
|
|
*/
|
|
|
|
void CFoldersPage::ModifiedEvent()
|
|
{
|
|
Changed();
|
|
/*
|
|
if (WasChanged())
|
|
Changed();
|
|
else
|
|
UnChanged();
|
|
*/
|
|
}
|
|
|
|
bool CFoldersPage::OnButtonClicked(int aButtonID, HWND aButtonHWND)
|
|
{
|
|
for (int i = 0; i < kNumWorkModeButtons; i++)
|
|
if (aButtonID == kWorkModeButtons[i])
|
|
{
|
|
MyEnableControls();
|
|
ModifiedEvent();
|
|
return true;
|
|
}
|
|
switch(aButtonID)
|
|
{
|
|
case IDC_FOLDERS_WORK_BUTTON_PATH:
|
|
OnFoldersWorkButtonPath();
|
|
break;
|
|
case IDC_FOLDERS_WORK_CHECK_FOR_REMOVABLE:
|
|
break;
|
|
default:
|
|
return CPropertyPage::OnButtonClicked(aButtonID, aButtonHWND);
|
|
}
|
|
ModifiedEvent();
|
|
return true;
|
|
}
|
|
|
|
bool CFoldersPage::OnCommand(int aCode, int anItemID, LPARAM lParam)
|
|
{
|
|
if (aCode == EN_CHANGE && anItemID == IDC_FOLDERS_WORK_EDIT_PATH)
|
|
{
|
|
ModifiedEvent();
|
|
return true;
|
|
}
|
|
return CPropertyPage::OnCommand(aCode, anItemID, lParam);
|
|
}
|
|
|
|
void CFoldersPage::OnFoldersWorkButtonPath()
|
|
{
|
|
CSysString currentPath;
|
|
m_WorkPath.GetText(currentPath);
|
|
|
|
UString title = LangLoadStringW(IDS_FOLDERS_SET_WORK_PATH_TITLE, 0x01000281);
|
|
|
|
CSysString resultPath;
|
|
if (NShell::BrowseForFolder(HWND(*this), GetSystemString(title),
|
|
currentPath, resultPath))
|
|
m_WorkPath.SetText(resultPath);
|
|
}
|
|
|
|
LONG CFoldersPage::OnApply()
|
|
{
|
|
GetWorkDir(m_WorkDirInfo);
|
|
SaveWorkDirInfo(m_WorkDirInfo);
|
|
return PSNRET_NOERROR;
|
|
}
|
|
|
|
static LPCWSTR kFoldersTopic = L"fm/plugins/7-zip/options.htm#folders";
|
|
|
|
void CFoldersPage::OnNotifyHelp()
|
|
{
|
|
ShowHelpWindow(NULL, kFoldersTopic);
|
|
}
|