⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 prefer.cpp

📁 XOSL 多操作系统管理工具 源代码 多系统引导工具
💻 CPP
字号:
/*
 * Extended Operating System Loader (XOSL)
 * Copyright (c) 1999 by Geurt Vos
 *
 * This code is distributed under GNU General Public License (GPL)
 *
 * The full text of the license can be found in the GPL.TXT file,
 * or at http://www.gnu.org
 */

#include <prefer.h>

#include <loader.h>

#include <text.h>
extern void printf(const char *fmt,...);

#define TAB_GRAPHICS 0
#define TAB_COLOR    1
#define TAB_MOUSE    2
#define TAB_PASSWORD 3
#define TAB_MISC     4





CPreference::CPreference(CLoader &LoaderToUse, CSetup &SetupToUse, CAbout &AboutToUse, CScreen &ScreenToUse, 
						 CXOSLData &XoslDataToUse, CMouse &MouseToUse):
	Loader(LoaderToUse), Screen(ScreenToUse), XoslData(XoslDataToUse), 
	Dialogs(ScreenToUse),
	GraphSettings(XoslDataToUse,*this,SetupToUse,LoaderToUse,AboutToUse,ScreenToUse,MouseToUse),
	ColorSettings(XoslDataToUse),
	MouseSettings(XoslDataToUse,Dialogs,MouseToUse),
	XoslPassword(XoslDataToUse,Dialogs),
	Miscellaneous(XoslDataToUse,*this)
{

	IgnoreKey = false;
	Initialized = false;
	Form = NULL;
}

CPreference::~CPreference()
{
}

void CPreference::Show()
{
	if (!Initialized) {
		Initialize();
		CenterWindow();
		if (XoslData.GetGraphics()->Font9) {
			RealignText();
		}
	}

	if (!Form->Visible) {
		Form->Show();
		Form->FocusControl(CloseBtn);
	}
	else
		Screen.SetFocusWnd(Form);
}

void CPreference::Hide()
{
	if (Form && Form->Visible) {
		if (XoslData.GetMiscPref()->AutoSave) {
			XoslData.SaveData();
		}
		Form->Hide();
	}
}

int CPreference::IsVisible()
{
	if (!Form) {
		return false;
	}
	return Form->Visible && Form->IsEnabled();
}

bool CPreference::GotFocus()
{
	if (!Form) {
		return false;
	}
	return Screen.GetFocusWnd() == Form;
}

int CPreference::GetIgnoreNextKey()
{
	if (IgnoreKey) {
		IgnoreKey = 0;
		return 1;
	}
	return 0;
}

void CPreference::SetIgnoreNextKey()
{
	IgnoreKey = 1;
}

void CPreference::Initialize()
{
	CreateControls();
	InitializeControls();
	ConnectEventHandlers();
	InitializeData();
	InstallControls();
	Initialized = true;
}


void CPreference::CreateControls()
{
	// main controls
	Form = new CForm("XOSL Preference",FORM_NORMAL,true,200,200,478,385,false);
	TabBevel = new CBevel(BEVEL_BOX,false,8,8,457,290,true);
	TabControl = new CTabControl(5,8,297,370,true,this);
	ResetBtn = new CButton("Reset",205,328,75,25,true,this);
	SaveBtn = new CButton("Save",292,328,75,25,true,this);
	CloseBtn = new CButton("Close",391,328,75,25,true,this);

	GraphSettings.CreateControls();
	ColorSettings.CreateControls();
	MouseSettings.CreateControls();
	XoslPassword.CreateControls();
	Miscellaneous.CreateControls();
}

void CPreference::InitializeControls()
{
	int Index;

	TabControl->SetTabCaption(0,"Graphics");
	TabControl->SetTabCaption(1,"Color");
	TabControl->SetTabCaption(2,"Mouse/Keyboard");
	TabControl->SetTabCaption(3,"Password");
	TabControl->SetTabCaption(4,"Misc");
	TabControl->SetTabPage(TabBevel);

	GraphSettings.InitializeControls(TabControl);
	ColorSettings.InitializeControls(TabControl);
	MouseSettings.InitializeControls(TabControl);
	XoslPassword.InitializeControls(TabControl);
	Miscellaneous.InitializeControls(TabControl);
}

void CPreference::ConnectEventHandlers()
{
	CloseBtn->OnClick((TWndOnClick)CloseBtnClick);
	ResetBtn->OnClick((TWndOnClick)ResetBtnClick);
	SaveBtn->OnClick((TWndOnClick)SaveBtnClick);
	TabControl->OnChange((TTabChange)TabChange);

	GraphSettings.ConnectEventHandlers();
	ColorSettings.ConnectEventHandlers();
	MouseSettings.ConnectEventHandlers();
	XoslPassword.ConnectEventHandlers();
	Miscellaneous.ConnectEventHandlers();
}

void CPreference::InitializeData()
{
	GraphSettings.InitializeData();
	ColorSettings.InitializeData();
	MouseSettings.InitializeData();
	Miscellaneous.InitializeData();
}


void CPreference::InstallControls()
{
	Form->AddControl(TabBevel);
	Form->AddControl(TabControl);
	Form->AddControl(ResetBtn);
	Form->AddControl(SaveBtn);
	Form->AddControl(CloseBtn);
	Screen.AddWindow(Form);

	GraphSettings.InstallControls(Form);
	ColorSettings.InstallControls(Form);
	MouseSettings.InstallControls(Form);
	XoslPassword.InstallControls(Form);
	Miscellaneous.InstallControls(Form);
}

void CPreference::CenterWindow()
{
	if (Form) {
		Screen.CenterWindow(Form);
	}
}

void CPreference::RealignText()
{
	if (Form) {
		GraphSettings.RealignText();
		ColorSettings.RealingText();
		MouseSettings.RealignText();
		XoslPassword.RealignText();
		Miscellaneous.RealignText();
	}
}



void CPreference::CloseBtnClick(CPreference &Preference)
{
	Preference.Hide();
	Preference.Loader.Focus();
}

void CPreference::ResetBtnClick(CPreference &Preference)
{
	switch (Preference.TabControl->GetActiveTab()) {
		case TAB_GRAPHICS:
			Preference.XoslData.ResetGraphics();
			Preference.GraphSettings.InitializeData();
			break;
		case TAB_COLOR:
			Preference.XoslData.ResetColor();
			Preference.ColorSettings.InitializeData();
			break;
		case TAB_MOUSE:
			Preference.XoslData.ResetMouse();
			Preference.MouseSettings.InitializeData();
			break;
		case TAB_MISC:
			Preference.XoslData.ResetMiscPref();
			Preference.Miscellaneous.InitializeData();
			break;
		default:
			break;
	}
}

void CPreference::SaveBtnClick(CPreference &Preference)
{
	Preference.XoslData.SaveData();
	Preference.Dialogs.ShowMessageDialog(Preference.Form,"Save","Data saved.");
}

void CPreference::TabChange(CPreference &Preference, int ActiveTab)
{
	if (ActiveTab == 3)
		Preference.ResetBtn->Disable();
	else
		Preference.ResetBtn->Enable();
}



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -