[Scummvm-cvs-logs] CVS: scummvm/scumm dialogs.cpp,1.11,1.12 dialogs.h,1.4,1.5
Max Horn
fingolfin at users.sourceforge.net
Fri Oct 18 18:23:03 CEST 2002
- Previous message: [Scummvm-cvs-logs] CVS: scummvm/gui ListWidget.cpp,1.8,1.9 ListWidget.h,1.7,1.8 dialog.cpp,1.20,1.21 dialog.h,1.10,1.11 newgui.cpp,1.22,1.23 newgui.h,1.14,1.15 widget.cpp,1.7,1.8 widget.h,1.7,1.8
- Next message: [Scummvm-cvs-logs] CVS: scummvm/scumm gfx.cpp,1.31,1.32 script_v2.cpp,1.34,1.35 scumm.h,1.40,1.41 scummvm.cpp,1.57,1.58
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /cvsroot/scummvm/scummvm/scumm
In directory usw-pr-cvs1:/tmp/cvs-serv24677/scumm
Modified Files:
dialogs.cpp dialogs.h
Log Message:
reworked the way the save/load dialog works. yup, still not perfect, but we're hopefully getting closer. Feedback welcome
Index: dialogs.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/dialogs.cpp,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -d -r1.11 -r1.12
--- dialogs.cpp 16 Oct 2002 17:37:29 -0000 1.11
+++ dialogs.cpp 19 Oct 2002 01:22:41 -0000 1.12
@@ -307,47 +307,63 @@
// addResText(10, 7, 240, 16, 2);
// addResText(10, 7, 240, 16, 3);
- addButton(200, 20, queryResString(4), kSaveCmd, 'S'); // Save
- addButton(200, 40, queryResString(5), kLoadCmd, 'L'); // Load
+ _saveButton = (PushButtonWidget *)addPushButton(200, 20, queryResString(4), kSaveCmd, 'S');
+ _loadButton = (PushButtonWidget *)addPushButton(200, 40, queryResString(5), kLoadCmd, 'L');
addButton(200, 60, queryResString(6), kPlayCmd, 'P'); // Play
addButton(200, 80, queryCustomString(17), kOptionsCmd, 'O'); // Options
addButton(200, 100, queryResString(8), kQuitCmd, 'Q'); // Quit
_savegameList = new ListWidget(this, 10, 20, 180, 90);
- _savegameList->setNumberingMode(kListNumberingZero);
-
- // Get savegame names
- ScummVM::StringList l;
- char name[32];
+}
- for (int i = 0; i <= 80; i++) { // 80 - got this value from the old GUI
- _scumm->getSavegameName(i, name);
- l.push_back(name);
- }
+void SaveLoadDialog::open()
+{
+ _saveMode = false;
+ _saveButton->setState(false);
+ _loadButton->setState(true);
+ fillList();
- _savegameList->setList(l);
+ ScummDialog::open();
}
void SaveLoadDialog::handleCommand(CommandSender *sender, uint32 cmd, uint32 data)
{
switch (cmd) {
- case kListItemActivatedCmd:
case kSaveCmd:
- if (_savegameList->getSelected() >= 1 && !_savegameList->getSelectedString().isEmpty()) {
- _scumm->_saveLoadSlot = _savegameList->getSelected();
- _scumm->_saveLoadCompatible = false;
- _scumm->_saveLoadFlag = 1; // 1 for save, I assume (Painelf)
- strcpy(_scumm->_saveLoadName, _savegameList->getSelectedString().c_str());
- close();
+ if (!_saveMode) {
+ _saveMode = true;
+ _saveButton->setState(true);
+ _loadButton->setState(false);
+ fillList();
+ draw();
}
break;
- case kListItemDoubleClickedCmd:
case kLoadCmd:
+ if (_saveMode) {
+ _saveMode = false;
+ _saveButton->setState(false);
+ _loadButton->setState(true);
+ fillList();
+ draw();
+ }
+ break;
+ case kListItemDoubleClickedCmd:
if (_savegameList->getSelected() >= 0 && !_savegameList->getSelectedString().isEmpty()) {
- _scumm->_saveLoadSlot = _savegameList->getSelected();
- _scumm->_saveLoadCompatible = false;
- _scumm->_saveLoadFlag = 2; // 2 for load. Magic number anyone?
- close();
+ if (_saveMode) {
+ // Start editing the selected item, for saving
+ _savegameList->startEditMode();
+ } else {
+ load();
+ }
+ }
+ break;
+ case kListItemActivatedCmd:
+ if (_savegameList->getSelected() >= 0 && !_savegameList->getSelectedString().isEmpty()) {
+ if (_saveMode) {
+ save();
+ } else {
+ load();
+ }
}
break;
case kPlayCmd:
@@ -364,8 +380,44 @@
}
}
+void SaveLoadDialog::fillList()
+{
+ // Get savegame names
+ ScummVM::StringList l;
+ char name[32];
+ int i = _saveMode ? 1 : 0;
+
+ for (; i <= 80; i++) { // 80 - got this value from the old GUI
+ _scumm->getSavegameName(i, name);
+ l.push_back(name);
+ }
+
+ _savegameList->setList(l);
+ _savegameList->setNumberingMode(_saveMode ? kListNumberingOne : kListNumberingZero);
+}
+
+void SaveLoadDialog::save()
+{
+ // Save the selected item
+ _scumm->_saveLoadSlot = _savegameList->getSelected() + 1;
+ _scumm->_saveLoadCompatible = false;
+ _scumm->_saveLoadFlag = 1; // 1 for save, I assume (Painelf)
+ strcpy(_scumm->_saveLoadName, _savegameList->getSelectedString().c_str());
+ close();
+}
+
+void SaveLoadDialog::load()
+{
+ // Load the selected item
+ _scumm->_saveLoadSlot = _savegameList->getSelected();
+ _scumm->_saveLoadCompatible = false;
+ _scumm->_saveLoadFlag = 2; // 2 for load. Magic number anyone?
+ close();
+}
+
#pragma mark -
+
enum {
kMasterVolumeChanged = 'mavc',
Index: dialogs.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/dialogs.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- dialogs.h 12 Oct 2002 00:26:24 -0000 1.4
+++ dialogs.h 19 Oct 2002 01:22:41 -0000 1.5
@@ -51,10 +51,21 @@
public:
SaveLoadDialog(NewGui *gui, Scumm *scumm);
+ virtual void open();
+
virtual void handleCommand(CommandSender *sender, uint32 cmd, uint32 data);
protected:
- ListWidget *_savegameList;
+ ListWidget *_savegameList;
+
+ PushButtonWidget *_saveButton;
+ PushButtonWidget *_loadButton;
+
+ bool _saveMode;
+
+ void fillList();
+ void save();
+ void load();
};
- Previous message: [Scummvm-cvs-logs] CVS: scummvm/gui ListWidget.cpp,1.8,1.9 ListWidget.h,1.7,1.8 dialog.cpp,1.20,1.21 dialog.h,1.10,1.11 newgui.cpp,1.22,1.23 newgui.h,1.14,1.15 widget.cpp,1.7,1.8 widget.h,1.7,1.8
- Next message: [Scummvm-cvs-logs] CVS: scummvm/scumm gfx.cpp,1.31,1.32 script_v2.cpp,1.34,1.35 scumm.h,1.40,1.41 scummvm.cpp,1.57,1.58
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the Scummvm-git-logs
mailing list