mykedge app android,PrefsDialog.cpp

这个C++代码实现了一个用于管理用户偏好设置的对话框,包括模拟器和运行时选项。对话框从配置文件加载初始设置,如伽马校正、调试器路径、声音和假摄像头启用状态,并允许用户进行修改。数据验证确保输入的有效性,更新后的设置会保存回配置文件。
摘要由CSDN通过智能技术生成

//

// Copyright 2005 The Android Open Source Project

//

// Preferences modal dialog.

//

// For compilers that support precompilation, include "wx/wx.h".

#include "wx/wxprec.h"

// Otherwise, include all standard headers

#ifndef WX_PRECOMP

# include "wx/wx.h"

#endif

#include "PrefsDialog.h"

#include "Preferences.h"

#include "MyApp.h"

#include "Resource.h"

BEGIN_EVENT_TABLE(PrefsDialog, wxDialog)

END_EVENT_TABLE()

/*

* Constructor.

*/

PrefsDialog::PrefsDialog(wxWindow* parent)

: wxDialog(parent, IDD_PREFS, wxT("Preferences"), wxDefaultPosition,

wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER ),

mAutoPowerOn(false),

mGammaCorrection(1.0),

mEnableSound(true),

mEnableFakeCamera(true),

mLogLevel(0)

{

LoadPreferences();

CreateControls();

}

/*

* Destructor. Not much to do.

*/

PrefsDialog::~PrefsDialog()

{

}

/*

* Create all of the pages and add them to the notebook.

*/

void PrefsDialog::CreateControls(void)

{

wxBoxSizer* mainSizer = new wxBoxSizer(wxVERTICAL);

wxBoxSizer* okCancelSizer = new wxBoxSizer(wxHORIZONTAL);

mNotebook.Create(this, wxID_ANY);

wxPanel* page;

/* pages added to notebook are owned by notebook */

page = CreateSimulatorPage(&mNotebook);

mNotebook.AddPage(page, wxT("Simulator"), true); // selected page

page = CreateRuntimePage(&mNotebook);

mNotebook.AddPage(page, wxT("Runtime"), false);

wxButton* cancel = new wxButton(this, wxID_CANCEL, wxT("&Cancel"),

wxDefaultPosition, wxDefaultSize, 0);

okCancelSizer->Add(cancel, 0, wxALL | wxALIGN_RIGHT, kInterSpacing);

wxButton* ok = new wxButton(this, wxID_OK, wxT("&OK"),

wxDefaultPosition, wxDefaultSize, 0);

okCancelSizer->Add(ok, 0, wxALL | wxALIGN_RIGHT, kInterSpacing);

mainSizer->Add(&mNotebook, 1, wxEXPAND);

mainSizer->Add(okCancelSizer, 0, wxALIGN_RIGHT);

SetSizer(mainSizer);

mainSizer->Fit(this); // shrink-to-fit

mainSizer->SetSizeHints(this); // define minimum size

}

/*

* Load preferences from config file

*/

void PrefsDialog::LoadPreferences(void)

{

Preferences* pPrefs = ((MyApp*)wxTheApp)->GetPrefs();

assert(pPrefs != NULL);

/*

* Load preferences.

*/

mConfigFile = ((MyApp*)wxTheApp)->GetConfigFileName();

pPrefs->GetDouble("gamma", &mGammaCorrection);

pPrefs->GetString("debugger", /*ref*/ mDebugger);

pPrefs->GetString("valgrinder", /*ref*/ mValgrinder);

pPrefs->GetBool("auto-power-on", &mAutoPowerOn);

pPrefs->GetBool("enable-sound", &mEnableSound);

pPrefs->GetBool("enable-fake-camera", &mEnableFakeCamera);

}

/*

* Transfer data from our members to the window controls.

*

* First we have to pull the data out of the preferences database.

* Anything that hasn't already been added with a default value will

* be given a default here, which may or may not match the default

* behavior elsewhere. The best solution to this is to define the

* default when the preferences file is created or read, so that we're

* never left guessing here.

*/

bool PrefsDialog::TransferDataToWindow(void)

{

/*

* Do standard dialog setup.

*/

wxTextCtrl* configFileName = (wxTextCtrl*) FindWindow(IDC_SPREFS_CONFIG_NAME);

wxTextCtrl* debugger = (wxTextCtrl*) FindWindow(IDC_SPREFS_DEBUGGER);

wxTextCtrl* valgrinder = (wxTextCtrl*) FindWindow(IDC_SPREFS_VALGRINDER);

wxCheckBox* autoPowerOn = (wxCheckBox*) FindWindow(IDC_SPREFS_AUTO_POWER_ON);

wxCheckBox* enableSound = (wxCheckBox*) FindWindow(IDC_RPREFS_ENABLE_SOUND);

wxCheckBox* enableFakeCamera = (wxCheckBox*) FindWindow(IDC_RPREFS_ENABLE_FAKE_CAMERA);

wxTextCtrl* gamma = (wxTextCtrl*) FindWindow(IDC_RPREFS_GAMMA);

configFileName->SetValue(mConfigFile);

debugger->SetValue(mDebugger);

valgrinder->SetValue(mValgrinder);

autoPowerOn->SetValue(mAutoPowerOn);

enableSound->SetValue(mEnableSound);

enableFakeCamera->SetValue(mEnableFakeCamera);

wxString tmpStr;

tmpStr.Printf(wxT("%.3f"), mGammaCorrection);

gamma->SetValue(tmpStr);

return true;

}

/*

* Transfer and validate data from the window controls.

*

* This doesn't get called if the user cancels out of the dialog.

*/

bool PrefsDialog::TransferDataFromControls(void)

{

/*

* Do standard dialog export.

*

* We should error-check all of these.

*/

// configName is read-only, don't need it here

wxTextCtrl* debugger = (wxTextCtrl*) FindWindow(IDC_SPREFS_DEBUGGER);

wxTextCtrl* valgrinder = (wxTextCtrl*) FindWindow(IDC_SPREFS_VALGRINDER);

wxCheckBox* autoPowerOn = (wxCheckBox*) FindWindow(IDC_SPREFS_AUTO_POWER_ON);

wxCheckBox* enableSound = (wxCheckBox*) FindWindow(IDC_RPREFS_ENABLE_SOUND);

wxCheckBox* enableFakeCamera = (wxCheckBox*) FindWindow(IDC_RPREFS_ENABLE_FAKE_CAMERA);

wxTextCtrl* gamma = (wxTextCtrl*) FindWindow(IDC_RPREFS_GAMMA);

mDebugger = debugger->GetValue();

mValgrinder = valgrinder->GetValue();

mAutoPowerOn = autoPowerOn->GetValue();

mEnableSound = enableSound->GetValue();

mEnableFakeCamera = enableFakeCamera->GetValue();

wxString tmpStr;

tmpStr = gamma->GetValue();

bool toDouble = tmpStr.ToDouble(&mGammaCorrection); // returns 0.0 on err; use strtof()?

if (!toDouble || mGammaCorrection <= 0.0 || mGammaCorrection > 2.0) {

wxMessageBox(wxT("Bad value for gamma -- must be > 0.0 and <= 2.0"),

wxT("Hoser"), wxOK, this);

return false;

}

return true;

}

/*

* Transfer preferences to config file

*/

bool PrefsDialog::TransferDataFromWindow(void)

{

Preferences* pPrefs = ((MyApp*)wxTheApp)->GetPrefs();

assert(pPrefs != NULL);

/*

* Grab the information from the controls and save in member field

*/

if (!TransferDataFromControls())

return false;

pPrefs->SetString("debugger", mDebugger.ToAscii());

pPrefs->SetString("valgrinder", mValgrinder.ToAscii());

pPrefs->SetBool("auto-power-on", mAutoPowerOn);

pPrefs->SetBool("enable-sound", mEnableSound);

pPrefs->SetBool("enable-fake-camera", mEnableFakeCamera);

pPrefs->SetDouble("gamma", mGammaCorrection);

return true;

}

/*

* Create the Simulator Preferences page.

*/

wxPanel* PrefsDialog::CreateSimulatorPage(wxBookCtrlBase* parent)

{

wxPanel* panel = new wxPanel(parent);

wxStaticText* configNameDescr = new wxStaticText(panel, wxID_STATIC,

wxT("Config file:"));

wxTextCtrl* configName = new wxTextCtrl(panel, IDC_SPREFS_CONFIG_NAME,

wxT(""), wxDefaultPosition, wxDefaultSize, wxTE_READONLY);

// make it visibly different; unfortunately this kills scroll, copy&paste

configName->Enable(false);

wxStaticText* debuggerDescr = new wxStaticText(panel, wxID_STATIC,

wxT("Debugger:"));

wxTextCtrl* debugger = new wxTextCtrl(panel, IDC_SPREFS_DEBUGGER);

wxStaticText* valgrinderDescr = new wxStaticText(panel, wxID_STATIC,

wxT("Valgrind:"));

wxTextCtrl* valgrinder = new wxTextCtrl(panel, IDC_SPREFS_VALGRINDER);

wxCheckBox* autoPowerOn = new wxCheckBox(panel, IDC_SPREFS_AUTO_POWER_ON,

wxT("Boot runtime when simulator starts"));

wxBoxSizer* sizerPanel = new wxBoxSizer(wxVERTICAL);

sizerPanel->Add(kMinWidth, kEdgeSpacing); // forces minimum width

sizerPanel->Add(configNameDescr);

sizerPanel->Add(configName, 0, wxEXPAND);

sizerPanel->AddSpacer(kInterSpacing);

sizerPanel->AddSpacer(kInterSpacing);

sizerPanel->Add(debuggerDescr);

sizerPanel->Add(debugger, 0, wxEXPAND);

sizerPanel->AddSpacer(kInterSpacing);

sizerPanel->Add(valgrinderDescr);

sizerPanel->Add(valgrinder, 0, wxEXPAND);

sizerPanel->AddSpacer(kInterSpacing);

sizerPanel->Add(autoPowerOn);

sizerPanel->AddSpacer(kInterSpacing);

wxBoxSizer* horizIndent = new wxBoxSizer(wxHORIZONTAL);

horizIndent->AddSpacer(kEdgeSpacing);

horizIndent->Add(sizerPanel, wxSHAPED);

horizIndent->AddSpacer(kEdgeSpacing);

panel->SetSizer(horizIndent);

return panel;

}

/*

* Create the Runtime Preferences page.

*/

wxPanel* PrefsDialog::CreateRuntimePage(wxBookCtrlBase* parent)

{

wxPanel* panel = new wxPanel(parent);

wxStaticText* gammaStrDescr = new wxStaticText(panel, wxID_STATIC,

wxT("Gamma correction:"));

wxTextCtrl* gammaStr = new wxTextCtrl(panel, IDC_RPREFS_GAMMA);

wxBoxSizer* gammaSizer = new wxBoxSizer(wxHORIZONTAL);

gammaSizer->Add(gammaStrDescr, 0, wxALIGN_CENTER_VERTICAL);

gammaSizer->AddSpacer(kInterSpacing);

gammaSizer->Add(gammaStr);

wxBoxSizer* sizerPanel = new wxBoxSizer(wxVERTICAL);

sizerPanel->Add(kMinWidth, kEdgeSpacing); // forces minimum width

sizerPanel->Add(gammaSizer);

sizerPanel->AddSpacer(kInterSpacing);

wxCheckBox* enableSound = new wxCheckBox(panel, IDC_RPREFS_ENABLE_SOUND,

wxT("Enable Sound"));

sizerPanel->AddSpacer(kInterSpacing);

sizerPanel->Add(enableSound);

wxCheckBox* enableFakeCamera = new wxCheckBox(panel, IDC_RPREFS_ENABLE_FAKE_CAMERA,

wxT("Enable Fake Camera"));

sizerPanel->AddSpacer(kInterSpacing);

sizerPanel->Add(enableFakeCamera);

wxBoxSizer* horizIndent = new wxBoxSizer(wxHORIZONTAL);

horizIndent->AddSpacer(kEdgeSpacing);

horizIndent->Add(sizerPanel, wxEXPAND);

horizIndent->AddSpacer(kEdgeSpacing);

panel->SetSizer(horizIndent);

return panel;

}

C++程序

|

293行

|

9.23 KB

//

// Copyright 2005 The Android Open Source Project

//

// Preferences modal dialog.

//

// For compilers that support precompilation, include "wx/wx.h".

#include "wx/wxprec.h"

// Otherwise, include all standard headers

#ifndef WX_PRECOMP

# include "wx/wx.h"

#endif

#include "PrefsDialog.h"

#include "Preferences.h"

#include "MyApp.h"

#include "Resource.h"

BEGIN_EVENT_TABLE(PrefsDialog, wxDialog)

END_EVENT_TABLE()

/*

* Constructor.

*/

PrefsDialog::PrefsDialog(wxWindow* parent)

: wxDialog(parent, IDD_PREFS, wxT("Preferences"), wxDefaultPosition,

wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER ),

mAutoPowerOn(false),

mGammaCorrection(1.0),

mEnableSound(true),

mEnableFakeCamera(true),

mLogLevel(0)

{

LoadPreferences();

CreateControls();

}

/*

* Destructor. Not much to do.

*/

PrefsDialog::~PrefsDialog()

{

}

/*

* Create all of the pages and add them to the notebook.

*/

void PrefsDialog::CreateControls(void)

{

wxBoxSizer* mainSizer = new wxBoxSizer(wxVERTICAL);

wxBoxSizer* okCancelSizer = new wxBoxSizer(wxHORIZONTAL);

mNotebook.Create(this, wxID_ANY);

wxPanel* page;

/* pages added to notebook are owned by notebook */

page = CreateSimulatorPage(&mNotebook);

mNotebook.AddPage(page, wxT("Simulator"), true); // selected page

page = CreateRuntimePage(&mNotebook);

mNotebook.AddPage(page, wxT("Runtime"), false);

wxButton* cancel = new wxButton(this, wxID_CANCEL, wxT("&Cancel"),

wxDefaultPosition, wxDefaultSize, 0);

okCancelSizer->Add(cancel, 0, wxALL | wxALIGN_RIGHT, kInterSpacing);

wxButton* ok = new wxButton(this, wxID_OK, wxT("&OK"),

wxDefaultPosition, wxDefaultSize, 0);

okCancelSizer->Add(ok, 0, wxALL | wxALIGN_RIGHT, kInterSpacing);

mainSizer->Add(&mNotebook, 1, wxEXPAND);

mainSizer->Add(okCancelSizer, 0, wxALIGN_RIGHT);

SetSizer(mainSizer);

mainSizer->Fit(this); // shrink-to-fit

mainSizer->SetSizeHints(this); // define minimum size

}

/*

* Load preferences from config file

*/

void PrefsDialog::LoadPreferences(void)

{

Preferences* pPrefs = ((MyApp*)wxTheApp)->GetPrefs();

assert(pPrefs != NULL);

/*

* Load preferences.

*/

mConfigFile = ((MyApp*)wxTheApp)->GetConfigFileName();

pPrefs->GetDouble("gamma", &mGammaCorrection);

pPrefs->GetString("debugger", /*ref*/ mDebugger);

pPrefs->GetString("valgrinder", /*ref*/ mValgrinder);

pPrefs->GetBool("auto-power-on", &mAutoPowerOn);

pPrefs->GetBool("enable-sound", &mEnableSound);

pPrefs->GetBool("enable-fake-camera", &mEnableFakeCamera);

}

/*

* Transfer data from our members to the window controls.

*

* First we have to pull the data out of the preferences database.

* Anything that hasn't already been added with a default value will

* be given a default here, which may or may not match the default

* behavior elsewhere. The best solution to this is to define the

* default when the preferences file is created or read, so that we're

* never left guessing here.

*/

bool PrefsDialog::TransferDataToWindow(void)

{

/*

* Do standard dialog setup.

*/

wxTextCtrl* configFileName = (wxTextCtrl*) FindWindow(IDC_SPREFS_CONFIG_NAME);

wxTextCtrl* debugger = (wxTextCtrl*) FindWindow(IDC_SPREFS_DEBUGGER);

wxTextCtrl* valgrinder = (wxTextCtrl*) FindWindow(IDC_SPREFS_VALGRINDER);

wxCheckBox* autoPowerOn = (wxCheckBox*) FindWindow(IDC_SPREFS_AUTO_POWER_ON);

wxCheckBox* enableSound = (wxCheckBox*) FindWindow(IDC_RPREFS_ENABLE_SOUND);

wxCheckBox* enableFakeCamera = (wxCheckBox*) FindWindow(IDC_RPREFS_ENABLE_FAKE_CAMERA);

wxTextCtrl* gamma = (wxTextCtrl*) FindWindow(IDC_RPREFS_GAMMA);

configFileName->SetValue(mConfigFile);

debugger->SetValue(mDebugger);

valgrinder->SetValue(mValgrinder);

autoPowerOn->SetValue(mAutoPowerOn);

enableSound->SetValue(mEnableSound);

enableFakeCamera->SetValue(mEnableFakeCamera);

wxString tmpStr;

tmpStr.Printf(wxT("%.3f"), mGammaCorrection);

gamma->SetValue(tmpStr);

return true;

}

/*

* Transfer and validate data from the window controls.

*

* This doesn't get called if the user cancels out of the dialog.

*/

bool PrefsDialog::TransferDataFromControls(void)

{

/*

* Do standard dialog export.

*

* We should error-check all of these.

*/

// configName is read-only, don't need it here

wxTextCtrl* debugger = (wxTextCtrl*) FindWindow(IDC_SPREFS_DEBUGGER);

wxTextCtrl* valgrinder = (wxTextCtrl*) FindWindow(IDC_SPREFS_VALGRINDER);

wxCheckBox* autoPowerOn = (wxCheckBox*) FindWindow(IDC_SPREFS_AUTO_POWER_ON);

wxCheckBox* enableSound = (wxCheckBox*) FindWindow(IDC_RPREFS_ENABLE_SOUND);

wxCheckBox* enableFakeCamera = (wxCheckBox*) FindWindow(IDC_RPREFS_ENABLE_FAKE_CAMERA);

wxTextCtrl* gamma = (wxTextCtrl*) FindWindow(IDC_RPREFS_GAMMA);

mDebugger = debugger->GetValue();

mValgrinder = valgrinder->GetValue();

mAutoPowerOn = autoPowerOn->GetValue();

mEnableSound = enableSound->GetValue();

mEnableFakeCamera = enableFakeCamera->GetValue();

wxString tmpStr;

tmpStr = gamma->GetValue();

bool toDouble = tmpStr.ToDouble(&mGammaCorrection); // returns 0.0 on err; use strtof()?

if (!toDouble || mGammaCorrection <= 0.0 || mGammaCorrection > 2.0) {

wxMessageBox(wxT("Bad value for gamma -- must be > 0.0 and <= 2.0"),

wxT("Hoser"), wxOK, this);

return false;

}

return true;

}

/*

* Transfer preferences to config file

*/

bool PrefsDialog::TransferDataFromWindow(void)

{

Preferences* pPrefs = ((MyApp*)wxTheApp)->GetPrefs();

assert(pPrefs != NULL);

/*

* Grab the information from the controls and save in member field

*/

if (!TransferDataFromControls())

return false;

pPrefs->SetString("debugger", mDebugger.ToAscii());

pPrefs->SetString("valgrinder", mValgrinder.ToAscii());

pPrefs->SetBool("auto-power-on", mAutoPowerOn);

pPrefs->SetBool("enable-sound", mEnableSound);

pPrefs->SetBool("enable-fake-camera", mEnableFakeCamera);

pPrefs->SetDouble("gamma", mGammaCorrection);

return true;

}

/*

* Create the Simulator Preferences page.

*/

wxPanel* PrefsDialog::CreateSimulatorPage(wxBookCtrlBase* parent)

{

wxPanel* panel = new wxPanel(parent);

wxStaticText* configNameDescr = new wxStaticText(panel, wxID_STATIC,

wxT("Config file:"));

wxTextCtrl* configName = new wxTextCtrl(panel, IDC_SPREFS_CONFIG_NAME,

wxT(""), wxDefaultPosition, wxDefaultSize, wxTE_READONLY);

// make it visibly different; unfortunately this kills scroll, copy&paste

configName->Enable(false);

wxStaticText* debuggerDescr = new wxStaticText(panel, wxID_STATIC,

wxT("Debugger:"));

wxTextCtrl* debugger = new wxTextCtrl(panel, IDC_SPREFS_DEBUGGER);

wxStaticText* valgrinderDescr = new wxStaticText(panel, wxID_STATIC,

wxT("Valgrind:"));

wxTextCtrl* valgrinder = new wxTextCtrl(panel, IDC_SPREFS_VALGRINDER);

wxCheckBox* autoPowerOn = new wxCheckBox(panel, IDC_SPREFS_AUTO_POWER_ON,

wxT("Boot runtime when simulator starts"));

wxBoxSizer* sizerPanel = new wxBoxSizer(wxVERTICAL);

sizerPanel->Add(kMinWidth, kEdgeSpacing); // forces minimum width

sizerPanel->Add(configNameDescr);

sizerPanel->Add(configName, 0, wxEXPAND);

sizerPanel->AddSpacer(kInterSpacing);

sizerPanel->AddSpacer(kInterSpacing);

sizerPanel->Add(debuggerDescr);

sizerPanel->Add(debugger, 0, wxEXPAND);

sizerPanel->AddSpacer(kInterSpacing);

sizerPanel->Add(valgrinderDescr);

sizerPanel->Add(valgrinder, 0, wxEXPAND);

sizerPanel->AddSpacer(kInterSpacing);

sizerPanel->Add(autoPowerOn);

sizerPanel->AddSpacer(kInterSpacing);

wxBoxSizer* horizIndent = new wxBoxSizer(wxHORIZONTAL);

horizIndent->AddSpacer(kEdgeSpacing);

horizIndent->Add(sizerPanel, wxSHAPED);

horizIndent->AddSpacer(kEdgeSpacing);

panel->SetSizer(horizIndent);

return panel;

}

/*

* Create the Runtime Preferences page.

*/

wxPanel* PrefsDialog::CreateRuntimePage(wxBookCtrlBase* parent)

{

wxPanel* panel = new wxPanel(parent);

wxStaticText* gammaStrDescr = new wxStaticText(panel, wxID_STATIC,

wxT("Gamma correction:"));

wxTextCtrl* gammaStr = new wxTextCtrl(panel, IDC_RPREFS_GAMMA);

wxBoxSizer* gammaSizer = new wxBoxSizer(wxHORIZONTAL);

gammaSizer->Add(gammaStrDescr, 0, wxALIGN_CENTER_VERTICAL);

gammaSizer->AddSpacer(kInterSpacing);

gammaSizer->Add(gammaStr);

wxBoxSizer* sizerPanel = new wxBoxSizer(wxVERTICAL);

sizerPanel->Add(kMinWidth, kEdgeSpacing); // forces minimum width

sizerPanel->Add(gammaSizer);

sizerPanel->AddSpacer(kInterSpacing);

wxCheckBox* enableSound = new wxCheckBox(panel, IDC_RPREFS_ENABLE_SOUND,

wxT("Enable Sound"));

sizerPanel->AddSpacer(kInterSpacing);

sizerPanel->Add(enableSound);

wxCheckBox* enableFakeCamera = new wxCheckBox(panel, IDC_RPREFS_ENABLE_FAKE_CAMERA,

wxT("Enable Fake Camera"));

sizerPanel->AddSpacer(kInterSpacing);

sizerPanel->Add(enableFakeCamera);

wxBoxSizer* horizIndent = new wxBoxSizer(wxHORIZONTAL);

horizIndent->AddSpacer(kEdgeSpacing);

horizIndent->Add(sizerPanel, wxEXPAND);

horizIndent->AddSpacer(kEdgeSpacing);

panel->SetSizer(horizIndent);

return panel;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值