mirror of
https://github.com/Xevion/easy7zip.git
synced 2025-12-06 07:14:55 -06:00
173 lines
3.6 KiB
C++
Executable File
173 lines
3.6 KiB
C++
Executable File
// FoldersPage.cpp
|
|
|
|
#include "StdAfx.h"
|
|
|
|
#include "FoldersPageRes.h"
|
|
#include "FoldersPage.h"
|
|
|
|
#include "../FileManager/BrowseDialog.h"
|
|
#include "../FileManager/HelpUtils.h"
|
|
#include "../FileManager/LangUtils.h"
|
|
|
|
using namespace NWindows;
|
|
|
|
#ifdef Z7_LANG
|
|
static const UInt32 kLangIDs[] =
|
|
{
|
|
IDT_FOLDERS_WORKING_FOLDER,
|
|
IDR_FOLDERS_WORK_SYSTEM,
|
|
IDR_FOLDERS_WORK_CURRENT,
|
|
IDR_FOLDERS_WORK_SPECIFIED,
|
|
IDX_FOLDERS_WORK_FOR_REMOVABLE
|
|
};
|
|
#endif
|
|
|
|
static const unsigned kWorkModeButtons[] =
|
|
{
|
|
IDR_FOLDERS_WORK_SYSTEM,
|
|
IDR_FOLDERS_WORK_CURRENT,
|
|
IDR_FOLDERS_WORK_SPECIFIED
|
|
};
|
|
|
|
#define kFoldersTopic "fm/options.htm#folders"
|
|
|
|
static const unsigned kNumWorkModeButtons = Z7_ARRAY_SIZE(kWorkModeButtons);
|
|
|
|
bool CFoldersPage::OnInit()
|
|
{
|
|
_initMode = true;
|
|
_needSave = false;
|
|
|
|
#ifdef Z7_LANG
|
|
LangSetDlgItems(*this, kLangIDs, Z7_ARRAY_SIZE(kLangIDs));
|
|
#endif
|
|
m_WorkDirInfo.Load();
|
|
|
|
CheckButton(IDX_FOLDERS_WORK_FOR_REMOVABLE, m_WorkDirInfo.ForRemovableOnly);
|
|
|
|
CheckRadioButton(
|
|
kWorkModeButtons[0],
|
|
kWorkModeButtons[kNumWorkModeButtons - 1],
|
|
kWorkModeButtons[m_WorkDirInfo.Mode]);
|
|
|
|
m_WorkPath.Init(*this, IDE_FOLDERS_WORK_PATH);
|
|
|
|
m_WorkPath.SetText(fs2us(m_WorkDirInfo.Path));
|
|
|
|
MyEnableControls();
|
|
|
|
_initMode = false;
|
|
return CPropertyPage::OnInit();
|
|
}
|
|
|
|
int CFoldersPage::GetWorkMode() const
|
|
{
|
|
for (unsigned i = 0; i < kNumWorkModeButtons; i++)
|
|
if (IsButtonCheckedBool(kWorkModeButtons[i]))
|
|
return (int)i;
|
|
throw 0;
|
|
}
|
|
|
|
void CFoldersPage::MyEnableControls()
|
|
{
|
|
bool enablePath = (GetWorkMode() == NWorkDir::NMode::kSpecified);
|
|
m_WorkPath.Enable(enablePath);
|
|
EnableItem(IDB_FOLDERS_WORK_PATH, enablePath);
|
|
}
|
|
|
|
void CFoldersPage::GetWorkDir(NWorkDir::CInfo &workDirInfo)
|
|
{
|
|
UString s;
|
|
m_WorkPath.GetText(s);
|
|
workDirInfo.Path = us2fs(s);
|
|
workDirInfo.ForRemovableOnly = IsButtonCheckedBool(IDX_FOLDERS_WORK_FOR_REMOVABLE);
|
|
workDirInfo.Mode = NWorkDir::NMode::EEnum(GetWorkMode());
|
|
}
|
|
|
|
/*
|
|
bool CFoldersPage::WasChanged()
|
|
{
|
|
NWorkDir::CInfo workDirInfo;
|
|
GetWorkDir(workDirInfo);
|
|
return (workDirInfo.Mode != m_WorkDirInfo.Mode ||
|
|
workDirInfo.ForRemovableOnly != m_WorkDirInfo.ForRemovableOnly ||
|
|
workDirInfo.Path.Compare(m_WorkDirInfo.Path) != 0);
|
|
}
|
|
*/
|
|
|
|
void CFoldersPage::ModifiedEvent()
|
|
{
|
|
if (!_initMode)
|
|
{
|
|
_needSave = true;
|
|
Changed();
|
|
}
|
|
/*
|
|
if (WasChanged())
|
|
Changed();
|
|
else
|
|
UnChanged();
|
|
*/
|
|
}
|
|
|
|
bool CFoldersPage::OnButtonClicked(unsigned buttonID, HWND buttonHWND)
|
|
{
|
|
for (unsigned i = 0; i < kNumWorkModeButtons; i++)
|
|
if (buttonID == kWorkModeButtons[i])
|
|
{
|
|
MyEnableControls();
|
|
ModifiedEvent();
|
|
return true;
|
|
}
|
|
|
|
switch (buttonID)
|
|
{
|
|
case IDB_FOLDERS_WORK_PATH:
|
|
OnFoldersWorkButtonPath();
|
|
return true;
|
|
case IDX_FOLDERS_WORK_FOR_REMOVABLE:
|
|
break;
|
|
default:
|
|
return CPropertyPage::OnButtonClicked(buttonID, buttonHWND);
|
|
}
|
|
|
|
ModifiedEvent();
|
|
return true;
|
|
}
|
|
|
|
bool CFoldersPage::OnCommand(unsigned code, unsigned itemID, LPARAM lParam)
|
|
{
|
|
if (code == EN_CHANGE && itemID == IDE_FOLDERS_WORK_PATH)
|
|
{
|
|
ModifiedEvent();
|
|
return true;
|
|
}
|
|
return CPropertyPage::OnCommand(code, itemID, lParam);
|
|
}
|
|
|
|
void CFoldersPage::OnFoldersWorkButtonPath()
|
|
{
|
|
UString currentPath;
|
|
m_WorkPath.GetText(currentPath);
|
|
UString title = LangString(IDS_FOLDERS_SET_WORK_PATH_TITLE);
|
|
UString resultPath;
|
|
if (MyBrowseForFolder(*this, title, currentPath, resultPath))
|
|
m_WorkPath.SetText(resultPath);
|
|
}
|
|
|
|
LONG CFoldersPage::OnApply()
|
|
{
|
|
if (_needSave)
|
|
{
|
|
GetWorkDir(m_WorkDirInfo);
|
|
m_WorkDirInfo.Save();
|
|
_needSave = false;
|
|
}
|
|
return PSNRET_NOERROR;
|
|
}
|
|
|
|
void CFoldersPage::OnNotifyHelp()
|
|
{
|
|
ShowHelpWindow(kFoldersTopic);
|
|
}
|