[Scummvm-cvs-logs] CVS: scummvm/backends/PalmOS/Src/forms formCards.cpp,1.4,1.5
Chris Apers
chrilith at users.sourceforge.net
Sat Nov 5 02:27:38 CET 2005
- Previous message: [Scummvm-cvs-logs] CVS: scummvm/backends/PalmOS/Src/native znative_common.h,NONE,1.1 znative_gob.h,NONE,1.1 znative_queen.h,NONE,1.1 znative_saga.h,NONE,1.1 znative_scumm.h,NONE,1.1 znative_simon.h,NONE,1.1 znative_sky.h,NONE,1.1 znative_sword1.h,NONE,1.1 znative_sword2.h,NONE,1.1
- Next message: [Scummvm-cvs-logs] CVS: scummvm/backends/PalmOS/Src/forms formEditGame.cpp,1.7,1.8
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /cvsroot/scummvm/scummvm/backends/PalmOS/Src/forms
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12686
Modified Files:
formCards.cpp
Log Message:
New cards form
Index: formCards.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/backends/PalmOS/Src/forms/formCards.cpp,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- formCards.cpp 30 Jul 2005 21:10:49 -0000 1.4
+++ formCards.cpp 5 Nov 2005 10:26:46 -0000 1.5
@@ -2,7 +2,9 @@
#include <VFSMgr.h>
#include "start.h"
+#include "formTabs.h"
#include "forms.h"
+#include "globals.h"
typedef struct {
UInt16 volRefNum;
@@ -10,43 +12,45 @@
} CardInfoType;
-void CardSlotCreateDirs() {
- if (gPrefs->card.volRefNum != sysInvalidRefNum) {
- VFSDirCreate(gPrefs->card.volRefNum, "/PALM");
- VFSDirCreate(gPrefs->card.volRefNum, "/PALM/Programs");
- VFSDirCreate(gPrefs->card.volRefNum, "/PALM/Programs/ScummVM");
- VFSDirCreate(gPrefs->card.volRefNum, "/PALM/Programs/ScummVM/Games");
- VFSDirCreate(gPrefs->card.volRefNum, "/PALM/Programs/ScummVM/Saved");
- VFSDirCreate(gPrefs->card.volRefNum, "/PALM/Programs/ScummVM/Audio");
- VFSDirCreate(gPrefs->card.volRefNum, "/PALM/Programs/ScummVM/Mods");
- }
-}
+static TabType *myTabP;
+static UInt16 lastTab = 0;
-static void CardSlotFromShowHideOptions() {
- ControlType *cck1P;
- FormPtr frmP = FrmGetActiveForm();
+static void CardSlotFormExit(Boolean bSave);
- cck1P = (ControlType *)GetObjectPtr(CardSlotMoveCheckbox);
+static void CardSlotFreeList() {
+ MemHandle cards = NULL;
+ MemHandle items = NULL;
- if (CtlGetValue(cck1P)) {
- FrmShowObject(frmP, FrmGetObjectIndex (frmP, CardSlotDeleteCheckbox));
- FrmShowObject(frmP, FrmGetObjectIndex (frmP, CardSlotConfirmCheckbox));
- } else {
- FrmHideObject(frmP, FrmGetObjectIndex (frmP, CardSlotDeleteCheckbox));
- FrmHideObject(frmP, FrmGetObjectIndex (frmP, CardSlotConfirmCheckbox));
+ if (itemsText && itemsList) {
+ cards = MemPtrRecoverHandle(itemsList);
+ items = MemPtrRecoverHandle(itemsText);
+
+ itemsText = NULL;
+ itemsList = NULL;
+ }
+ itemsType = ITEM_TYPE_UNKNOWN;
+
+ if (items && cards) {
+ MemHandleUnlock(items);
+ MemHandleUnlock(cards);
+ MemHandleFree(items);
+ MemHandleFree(cards);
}
}
-static UInt16 CardSlotFormInit(Boolean display, Boolean bDraw) {
+static UInt16 CardSlotFillList(Boolean getRefNum = false) {
Err err;
+ UInt16 index;
UInt16 volRefNum;
UInt32 volIterator = vfsIteratorStart;
UInt8 counter = 0;
UInt32 other = 1;
+ MemHandle items = NULL;
MemHandle cards = NULL;
CardInfoType *cardsInfo;
+ // retreive card infos
while (volIterator != vfsIteratorStop) {
err = VFSVolumeEnumerate(&volRefNum, &volIterator);
@@ -57,13 +61,13 @@
if (err || StrLen(labelP) == 0) { // if no label try to retreive card type
VolumeInfoType volInfo;
err = VFSVolumeInfo(volRefNum, &volInfo);
-
+
if (!err) {
ExpCardInfoType info;
err = ExpCardInfo(volInfo.slotRefNum, &info);
StrCopy(labelP, info.deviceClassStr);
}
-
+
if (err) // if err default name
StrPrintF(labelP,"Other Card %ld", other++);
}
@@ -72,7 +76,7 @@
cards = MemHandleNew(sizeof(CardInfoType));
else
MemHandleResize(cards, MemHandleSize(cards) + sizeof(CardInfoType));
-
+
cardsInfo = (CardInfoType *)MemHandleLock(cards);
cardsInfo[counter].volRefNum = volRefNum;
StrCopy(cardsInfo[counter].nameP, labelP);
@@ -81,24 +85,9 @@
}
}
- if (display) {
- FormPtr frmP;
- ListPtr listP;
- ControlType *cck1P, *cck2P, *cck3P;
- UInt16 index;
- Int16 selected = -1;
-
- CardInfoType *cardsInfo;
- MemHandle items = NULL;
-
- listP = (ListType *)GetObjectPtr(CardSlotSlotList);
- cck1P = (ControlType *)GetObjectPtr(CardSlotMoveCheckbox);
- cck2P = (ControlType *)GetObjectPtr(CardSlotDeleteCheckbox);
- cck3P = (ControlType *)GetObjectPtr(CardSlotConfirmCheckbox);
-
- if (counter > 0) {
- cardsInfo = (CardInfoType *)MemHandleLock(cards);
-
+ if (counter > 0) {
+ // set the list items ...
+ if (!getRefNum) {
for (index = 0; index < counter; index++) {
if (!items)
items = MemHandleNew(sizeof(Char *));
@@ -108,161 +97,223 @@
itemsText = (Char **)MemHandleLock(items);
itemsText[index] = cardsInfo[index].nameP;
MemHandleUnlock(items);
-
- if (cardsInfo[index].volRefNum == gPrefs->card.volRefNum)
- selected = index;
}
+ // save globals
itemsText = (Char **)MemHandleLock(items);
- LstSetListChoices (listP, itemsText, counter);
- LstSetSelection(listP, selected);
- // save globals and set list
- itemsText = (Char **)MemHandleLock(items);
- itemsList = (void *)cardsInfo;
- itemsType = ITEM_TYPE_CARD;
-
- } else {
- LstSetListChoices(listP, NULL, 0);
- // save globals and set list
- itemsText = NULL;
- itemsList = NULL;
+ itemsList = (void *)MemHandleLock(cards);
itemsType = ITEM_TYPE_CARD;
- }
-
- // bDraw = true -> draw whole from
- // bDraw = false -> redraw list
- if (bDraw) {
- CtlSetValue(cck1P, gPrefs->card.moveDB);
- CtlSetValue(cck2P, gPrefs->card.deleteDB);
- CtlSetValue(cck3P, gPrefs->card.confirmMoveDB);
- CardSlotFromShowHideOptions();
- frmP = FrmGetActiveForm();
- FrmDrawForm(frmP);
+ // ... or just return a default volRefNum
} else {
- WinScreenLock(winLockCopy);
- LstDrawList(listP);
- WinScreenUnlock();
- }
- } else { // if !display, we just want to retreive an avaliable card
- if (counter > 0) {
UInt16 volRefNum;
+
cardsInfo = (CardInfoType *)MemHandleLock(cards);
volRefNum = cardsInfo[0].volRefNum; // return the first volref
MemHandleUnlock(cards);
MemHandleFree(cards);
+
return volRefNum;
}
+
+ // no card found ? free old list in any or return invalid volref
+ } else {
+ if (!getRefNum)
+ CardSlotFreeList();
+ else
+ return sysInvalidRefNum;
}
- return sysInvalidRefNum; // default
+ return counter;
}
-static void CardSlotFormExit(Boolean bSave) {
- MemHandle cards;
- MemHandle items;
- CardInfoType *cardsInfo;
- UInt16 updateCode = frmRedrawUpdateMS;
+static void ConfigTabInit(Boolean update = false) {
+ ListPtr listP;
- if (itemsText && itemsList) {
- cardsInfo = (CardInfoType *)itemsList;
- cards = MemPtrRecoverHandle(cardsInfo);
- items = MemPtrRecoverHandle(itemsText);
+ UInt16 index;
+ Int16 selected = -1;
- itemsText = NULL;
- itemsList = NULL;
+ UInt16 counter = CardSlotFillList();
+ listP = (ListType *)GetObjectPtr(TabCardConfigSlotList);
+
+ // itemsText can be NULL if counter = 0
+ LstSetListChoices (listP, itemsText, counter);
+ if (counter > 0) {
+ CardInfoType *cardsInfo = (CardInfoType *)itemsList;
+
+ for (index = 0; index < counter; index++) {
+ if (cardsInfo[index].volRefNum == gPrefs->card.volRefNum) {
+ selected = index;
+ break;
+ }
+ }
+
+ LstSetSelection(listP, selected);
+ }
+
+ if (!update) {
+ FieldType *fld1P;
+ Char *cacheP;
+ MemHandle cacheH;
+
+ fld1P = (FieldType *)GetObjectPtr(TabCardConfigCacheSizeField);
+ cacheH = MemHandleNew(FldGetMaxChars(fld1P)+1);
+ cacheP = (Char *)MemHandleLock(cacheH);
+ StrIToA(cacheP, gPrefs->card.cacheSize / 1024);
+ MemHandleUnlock(cacheH);
+
+ FldSetTextHandle(fld1P, cacheH);
+ CtlSetValue((ControlType *)GetObjectPtr(TabCardConfigCacheCheckbox), gPrefs->card.useCache);
+ CtlSetValue((ControlType *)GetObjectPtr(TabCardConfigLedCheckbox), gPrefs->card.showLED);
+ // update ? redraw the list
} else {
- cards = NULL;
- items = NULL;
+ WinScreenLock(winLockCopy);
+ LstDrawList(listP);
+ WinScreenUnlock();
}
- itemsType = ITEM_TYPE_UNKNOWN;
+}
- if (bSave) {
- ListType *listP;
- ControlType *cck1P, *cck2P, *cck3P;
- Int16 selected;
+static UInt16 ConfigTabSave() {
+ ControlType *cckP[2];
+ FieldType *fld1P;
+ ListPtr listP;
+ FormPtr frmP;
+ UInt16 updateCode = frmRedrawUpdateMS;
- listP = (ListType *)GetObjectPtr(CardSlotSlotList);
- cck1P = (ControlType *)GetObjectPtr(CardSlotMoveCheckbox);
- cck2P = (ControlType *)GetObjectPtr(CardSlotDeleteCheckbox);
- cck3P = (ControlType *)GetObjectPtr(CardSlotConfirmCheckbox);
- selected = LstGetSelection(listP);
+ cckP[0] = (ControlType *)GetObjectPtr(TabCardConfigCacheCheckbox);
+ cckP[1] = (ControlType *)GetObjectPtr(TabCardConfigLedCheckbox);
- if (selected == -1) {
- gPrefs->card.volRefNum = sysInvalidRefNum;
- } else if (gPrefs->card.volRefNum != cardsInfo[selected].volRefNum) {
- updateCode = frmRedrawUpdateMSImport;
- gPrefs->card.volRefNum = cardsInfo[selected].volRefNum;
- }
+ gPrefs->card.useCache = CtlGetValue(cckP[0]);
+ gPrefs->card.showLED = CtlGetValue(cckP[1]);
- gPrefs->card.moveDB = CtlGetValue(cck1P);
- gPrefs->card.deleteDB = CtlGetValue(cck2P);
- gPrefs->card.confirmMoveDB = CtlGetValue(cck3P);
- CardSlotCreateDirs();
+ fld1P = (FieldType *)GetObjectPtr(TabCardConfigCacheSizeField);
+ frmP = FrmGetActiveForm();
+ if (FldGetTextLength(fld1P) == 0 && CtlGetValue(cckP[0]) == 1) {
+ TabSetActive(frmP, myTabP, 0);
+ FrmSetFocus(frmP, FrmGetObjectIndex(frmP, TabCardConfigCacheSizeField));
+ FrmCustomAlert(FrmWarnAlert,"You must specified a cache size.",0,0);
+ return 0;
}
+ gPrefs->card.cacheSize = StrAToI(FldGetTextPtr(fld1P)) * 1024;
- FrmReturnToMain(updateCode);
+ Int16 selected;
+ CardInfoType *cardsInfo = (CardInfoType *)itemsList;
- if (items && cards) {
- MemHandleUnlock(items);
- MemHandleUnlock(cards);
- MemHandleFree(items);
- MemHandleFree(cards);
+ listP = (ListType *)GetObjectPtr(TabCardConfigSlotList);
+ selected = LstGetSelection(listP);
+ if (selected == -1) {
+ gPrefs->card.volRefNum = sysInvalidRefNum;
+ } else if (gPrefs->card.volRefNum != cardsInfo[selected].volRefNum) {
+ updateCode = frmRedrawUpdateMSImport;
+ gPrefs->card.volRefNum = cardsInfo[selected].volRefNum;
}
+
+ CardSlotCreateDirs();
+ CardSlotFreeList();
+
+ return updateCode;
}
-void CardSlotFormUpdate() {
- if (itemsType == ITEM_TYPE_CARD) {
- if (itemsText && itemsList) {
- MemHandle cards;
- MemHandle items;
- ListType *listP;
+static void GameListTabInit() {
+ CtlSetValue((ControlType *)GetObjectPtr(TabCardGameListMoveCheckbox), gPrefs->card.moveDB);
+ CtlSetValue((ControlType *)GetObjectPtr(TabCardGameListDeleteCheckbox), gPrefs->card.deleteDB);
+ CtlSetValue((ControlType *)GetObjectPtr(TabCardGameListConfirmCheckbox), gPrefs->card.confirmMoveDB);
+}
- listP = (ListType *)GetObjectPtr(CardSlotSlotList);
- cards = MemPtrRecoverHandle(itemsList);
- items = MemPtrRecoverHandle(itemsText);
+static void GameListTabSave() {
+ ControlType *cckP[3];
- itemsText = NULL;
- itemsList = NULL;
- itemsType = ITEM_TYPE_UNKNOWN;
+ cckP[0] = (ControlType *)GetObjectPtr(TabCardGameListMoveCheckbox);
+ cckP[1] = (ControlType *)GetObjectPtr(TabCardGameListDeleteCheckbox);
+ cckP[2] = (ControlType *)GetObjectPtr(TabCardGameListConfirmCheckbox);
- MemHandleUnlock(items);
- MemHandleUnlock(cards);
- MemHandleFree(items);
- MemHandleFree(cards);
- }
- CardSlotFormInit(true, false);
+ gPrefs->card.moveDB = CtlGetValue(cckP[0]);
+ gPrefs->card.deleteDB = CtlGetValue(cckP[1]);
+ gPrefs->card.confirmMoveDB = CtlGetValue(cckP[2]);
+}
+
+static void GameListTabDraw() {
+ ControlType *cck1P;
+ FormPtr frmP = FrmGetActiveForm();
+
+ cck1P = (ControlType *)GetObjectPtr(TabCardGameListMoveCheckbox);
+ if (CtlGetValue(cck1P)) {
+ FrmShowObject(frmP, FrmGetObjectIndex (frmP, TabCardGameListDeleteCheckbox));
+ FrmShowObject(frmP, FrmGetObjectIndex (frmP, TabCardGameListConfirmCheckbox));
+ } else {
+ FrmHideObject(frmP, FrmGetObjectIndex (frmP, TabCardGameListDeleteCheckbox));
+ FrmHideObject(frmP, FrmGetObjectIndex (frmP, TabCardGameListConfirmCheckbox));
}
}
+static void CardSlotFormInit() {
+ TabType *tabP;
+ FormType *frmP = FrmGetActiveForm();
+
+ tabP = TabNewTabs(2);
+ TabAddContent(&frmP, tabP, "Cards", TabCardConfigForm);
+ TabAddContent(&frmP, tabP, "Game List", TabCardGameListForm, GameListTabDraw);
+
+ ConfigTabInit();
+ GameListTabInit();
+
+ FrmDrawForm(frmP);
+ TabSetActive(frmP, tabP, lastTab);
+
+ myTabP = tabP;
+}
+
+static void CardSlotFormSave() {
+ UInt16 updateCode;
+ updateCode = ConfigTabSave();
+ if (!updateCode) return;
+ GameListTabSave();
+ CardSlotCreateDirs();
+
+ TabDeleteTabs(myTabP);
+ FrmReturnToMain(updateCode);
+}
+
+static void CardSlotFormCancel() {
+ CardSlotFreeList();
+ TabDeleteTabs(myTabP);
+ FrmReturnToMain();
+}
+
Boolean CardSlotFormHandleEvent(EventPtr eventP) {
+ FormPtr frmP = FrmGetActiveForm();
Boolean handled = false;
switch (eventP->eType) {
-
case frmOpenEvent:
- CardSlotFormInit(true, true);
+ CardSlotFormInit();
handled = true;
break;
case frmCloseEvent:
- CardSlotFormExit(false);
+ CardSlotFormCancel();
handled = true;
break;
case ctlSelectEvent:
switch (eventP->data.ctlSelect.controlID)
{
+ case (CardSlotForm + 1) :
+ case (CardSlotForm + 2) :
+ lastTab = (eventP->data.ctlSelect.controlID - CardSlotForm - 1);
+ TabSetActive(frmP, myTabP, lastTab);
+ break;
+
case CardSlotOkButton:
- CardSlotFormExit(true);
+ CardSlotFormSave();
break;
case CardSlotCancelButton:
- CardSlotFormExit(false);
+ CardSlotFormCancel();
break;
-
- case CardSlotMoveCheckbox:
- CardSlotFromShowHideOptions();
+
+ case TabCardGameListMoveCheckbox:
+ GameListTabDraw();
break;
}
handled = true;
@@ -271,13 +322,31 @@
default:
break;
}
-
+
return handled;
}
-UInt16 parseCards() {
- UInt16 volRefNum = CardSlotFormInit(false, false);
- CardSlotFormExit(false);
+void CardSlotCreateDirs() {
+ if (gPrefs->card.volRefNum != sysInvalidRefNum) {
+ VFSDirCreate(gPrefs->card.volRefNum, "/PALM");
+ VFSDirCreate(gPrefs->card.volRefNum, "/PALM/Programs");
+ VFSDirCreate(gPrefs->card.volRefNum, "/PALM/Programs/ScummVM");
+ VFSDirCreate(gPrefs->card.volRefNum, "/PALM/Programs/ScummVM/Games");
+ VFSDirCreate(gPrefs->card.volRefNum, "/PALM/Programs/ScummVM/Saved");
+ VFSDirCreate(gPrefs->card.volRefNum, "/PALM/Programs/ScummVM/Audio");
+ VFSDirCreate(gPrefs->card.volRefNum, "/PALM/Programs/ScummVM/Mods");
+ }
+}
+void CardSlotFormUpdate() {
+ if (itemsType == ITEM_TYPE_CARD) {
+ CardSlotFreeList();
+ ConfigTabInit(true);
+ }
+}
+
+UInt16 parseCards() {
+ UInt16 volRefNum = CardSlotFillList(true);
+ CardSlotFreeList();
return volRefNum;
}
- Previous message: [Scummvm-cvs-logs] CVS: scummvm/backends/PalmOS/Src/native znative_common.h,NONE,1.1 znative_gob.h,NONE,1.1 znative_queen.h,NONE,1.1 znative_saga.h,NONE,1.1 znative_scumm.h,NONE,1.1 znative_simon.h,NONE,1.1 znative_sky.h,NONE,1.1 znative_sword1.h,NONE,1.1 znative_sword2.h,NONE,1.1
- Next message: [Scummvm-cvs-logs] CVS: scummvm/backends/PalmOS/Src/forms formEditGame.cpp,1.7,1.8
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the Scummvm-git-logs
mailing list