📄 frmprefs.c
字号:
/*frmPrefs.c*/
#include <PalmOS.h>
#include "PalmUtils.h"
#include "frmPrefs.h"
#include "WAPUniverse.h"
#include "../res/WAPUniverse_res.h"
#include "MenuHnd.h"
#ifdef __GNUC__
#include "callbacks.h"
#endif
//SetFieldTextFromHandle
extern FieldPtr SetFieldTextFromHandle(UInt16 fieldID, MemHandle txtH)
{
MemHandle oldTxtH;
FormPtr frm = FrmGetActiveForm();
FieldPtr fldP;
fldP = FrmGetObjectPtr(frm, FrmGetObjectIndex(frm, fieldID));
ErrNonFatalDisplayIf(!fldP, "Missing field");
oldTxtH = FldGetTextHandle(fldP);
// set the text
FldSetTextHandle(fldP, txtH);
// the following line has been commented out to prevent drawing the
// field before the form has actually been drawn. Lets see how it goes!
// FldDrawField(fldP);
if (oldTxtH)
{
MemHandleFree(oldTxtH);
}
return fldP;
}
//PrefsFormInit
static void PrefsFormInit(FormType * frmP)
{
MemHandle txtH;
ControlType *controlP;
//set text for timeout
/*txtH = MemHandleNew(StrLen(g_prefs.timeout) + 1);
if (txtH)
{
StrCopy(MemHandleLock(txtH), g_prefs.timeout);
MemHandleUnlock(txtH);
SetFieldTextFromHandle(fieldPrefTime, txtH);
}*/
//set history option
if (g_prefs.history == true)
CtlSetValue (GetObjectPtr(checkPrefHistory), 1);
else
CtlSetValue (GetObjectPtr(checkPrefHistory), 0);
//set disconnect on exit
if (g_prefs.disconnect == true)
CtlSetValue (GetObjectPtr(checkPrefDis), 1);
else
CtlSetValue (GetObjectPtr(checkPrefDis), 0);
//set Prompt at start
if (g_prefs.open == true)
CtlSetValue (GetObjectPtr(checkPrefPromptOpen), 1);
else
CtlSetValue (GetObjectPtr(checkPrefPromptOpen), 0);
//set Prompt at end
if (g_prefs.close == true)
CtlSetValue (GetObjectPtr(checkPrefPromptClose), 1);
else
CtlSetValue (GetObjectPtr(checkPrefPromptClose), 0);
//set Start with
if (g_prefs.start == 0)
LstSetSelection (GetObjectPtr(listPrefStart), 0);
else
LstSetSelection (GetObjectPtr(listPrefStart), 1);
controlP = GetObjectPtr(triggerPrefStart);
CtlSetLabel( controlP, LstGetSelectionText (GetObjectPtr(listPrefStart), g_prefs.start) );
//set Agent
//CtlSetValue (GetObjectPtr(checkPrefAltAgent), g_prefs.agent);
if (g_prefs.agent == 0)
LstSetSelection (GetObjectPtr(listPrefAltAgent), 0);
else if (g_prefs.agent == 1)
LstSetSelection (GetObjectPtr(listPrefAltAgent), 1);
else if (g_prefs.agent == 2)
LstSetSelection (GetObjectPtr(listPrefAltAgent), 2);
else if (g_prefs.agent == 3) {
LstSetSelection (GetObjectPtr(listPrefAltAgent), 3);
FrmShowObject (FrmGetActiveForm(), FrmGetObjectIndex(FrmGetActiveForm(), fieldPrefAgent));
} else
LstSetSelection (GetObjectPtr(listPrefAltAgent), 0);
controlP = GetObjectPtr(triggerPrefAgent);
CtlSetLabel( controlP, LstGetSelectionText (GetObjectPtr(listPrefAltAgent), g_prefs.agent) );
txtH = MemHandleNew(StrLen(g_prefs.CustomAgent) + 1);
if (txtH)
{
StrCopy(MemHandleLock(txtH), g_prefs.CustomAgent);
MemHandleUnlock(txtH);
SetFieldTextFromHandle(fieldPrefAgent, txtH);
}
if (g_prefs.timeout == 10)
LstSetSelection (GetObjectPtr(listPrefTimeout), 0);
else if (g_prefs.timeout == 30)
LstSetSelection (GetObjectPtr(listPrefTimeout), 1);
else if (g_prefs.timeout == 60)
LstSetSelection (GetObjectPtr(listPrefTimeout), 2);
else if (g_prefs.timeout == 120)
LstSetSelection (GetObjectPtr(listPrefTimeout), 3);
else if (g_prefs.timeout == 240)
LstSetSelection (GetObjectPtr(listPrefTimeout), 4);
else
LstSetSelection (GetObjectPtr(listPrefTimeout), 0);
controlP = GetObjectPtr(triggerPrefTimeout);
CtlSetLabel( controlP, LstGetSelectionText (GetObjectPtr(listPrefTimeout), g_prefs.timeoutlist) );
}
Boolean PrefsFormHandleEvent(EventType * eventP)
{
Boolean handled = false;
FormType * frmP;
Char* text = NULL;
Int16 selection;
ControlType *controlP;
switch (eventP->eType)
{
case frmOpenEvent:
frmP = FrmGetActiveForm();
PrefsFormInit(frmP);
FrmDrawForm(frmP);
handled = true;
break;
case frmUpdateEvent:
// To do any custom drawing here, first call
// FrmDrawForm(), then do your drawing, and
// then set handled to true.
break;
case frmCloseEvent:
SetFieldTextFromHandle(fieldPrefTime, NULL);
SetFieldTextFromHandle(fieldPrefAgent, NULL);
handled = true;
break;
case ctlSelectEvent:
switch (eventP->data.ctlSelect.controlID)
{
case buttonPrefSave:
/*text = FldGetTextPtr(GetObjectPtr(fieldPrefTime));
if(text)
{
StrCopy(g_prefs.timeout, text);
}*/
//g_prefs.history = CtlGetValue (GetObjectPtr(checkPrefHistory));
if (CtlGetValue (GetObjectPtr(checkPrefHistory)) == 1)
g_prefs.history = true;
else
g_prefs.history = false;
//g_prefs.disconnect = CtlGetValue (GetObjectPtr(checkPrefDis));
if (CtlGetValue (GetObjectPtr(checkPrefDis)) == 1)
g_prefs.disconnect = true;
else
g_prefs.disconnect = false;
//g_prefs.open = CtlGetValue (GetObjectPtr(checkPrefPromptOpen));
if (CtlGetValue (GetObjectPtr(checkPrefPromptOpen)) == 1)
g_prefs.open = true;
else
g_prefs.open = false;
//g_prefs.close = CtlGetValue (GetObjectPtr(checkPrefPromptClose));
if (CtlGetValue (GetObjectPtr(checkPrefPromptClose)) == 1)
g_prefs.close = true;
else
g_prefs.close = false;
//g_prefs.agent = LstGetSelection (GetObjectPtr(listPrefAltAgent));//CtlGetValue (GetObjectPtr(checkPrefAltAgent));
if (LstGetSelection (GetObjectPtr(listPrefAltAgent)) == 0)
g_prefs.agent = 0;
else if (LstGetSelection (GetObjectPtr(listPrefAltAgent)) == 1)
g_prefs.agent = 1;
else if (LstGetSelection (GetObjectPtr(listPrefAltAgent)) == 2)
g_prefs.agent = 2;
else if (LstGetSelection (GetObjectPtr(listPrefAltAgent)) == 3)
g_prefs.agent = 3;
else
g_prefs.agent = 0;
text = FldGetTextPtr(GetObjectPtr(fieldPrefAgent));
if(text)
{
StrCopy(g_prefs.CustomAgent, text);
}
//g_prefs.start = LstGetSelection (GetObjectPtr(listPrefStart));
if (LstGetSelection (GetObjectPtr(listPrefStart)) == 0)
g_prefs.start = 0;
else if (LstGetSelection (GetObjectPtr(listPrefStart)) == 1)
g_prefs.start = 1;
else
g_prefs.start = 0;
if (LstGetSelection (GetObjectPtr(listPrefTimeout)) == 0)
g_prefs.timeout = 10;
else if (LstGetSelection (GetObjectPtr(listPrefTimeout)) == 1)
g_prefs.timeout = 30;
else if (LstGetSelection (GetObjectPtr(listPrefTimeout)) == 2)
g_prefs.timeout = 60;
else if (LstGetSelection (GetObjectPtr(listPrefTimeout)) == 3)
g_prefs.timeout = 120;
else if (LstGetSelection (GetObjectPtr(listPrefTimeout)) == 4)
g_prefs.timeout = 240;
else
g_prefs.timeout = 10;
g_prefs.timeoutlist = LstGetSelection (GetObjectPtr(listPrefTimeout));
//SetFieldTextFromHandle(fieldPrefTime, NULL);
SetFieldTextFromHandle(fieldPrefAgent, NULL);
FrmReturnToForm(0);
handled = true;
break;
case buttonPrefCancel:
//SetFieldTextFromHandle(fieldPrefTime, NULL);
SetFieldTextFromHandle(fieldPrefAgent, NULL);
FrmReturnToForm(0);
handled = true;
break;
case triggerPrefAgent:
selection = LstPopupList(GetObjectPtr (listPrefAltAgent));
if (selection == 3) {
FrmShowObject (FrmGetActiveForm(), FrmGetObjectIndex(FrmGetActiveForm(), fieldPrefAgent));
} else {
FrmHideObject (FrmGetActiveForm(), FrmGetObjectIndex(FrmGetActiveForm(), fieldPrefAgent));
}
controlP = GetObjectPtr(triggerPrefAgent);
CtlSetLabel( controlP, LstGetSelectionText (GetObjectPtr(listPrefAltAgent), selection) );
handled = true;
break;
}
break;
default:
break;
}
return handled;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -