RCS file: /cvsroot/scummvm/scummvm/common/config-manager.cpp,v
retrieving revision 1.17
diff -u -3 -p -r1.17 config-manager.cpp
|
|
void ConfigManager::loadFile(const Strin
|
123 | 123 | if (t[0] && t[0] != '#') { |
124 | 124 | if (t[0] == '[') { |
125 | 125 | // It's a new domain which begins here. |
126 | | char *p = strchr(t, ']'); |
127 | | if (!p) { |
| 126 | char *p = t + 1; |
| 127 | while (*p && (isalnum(*p) || *p=='-' || *p=='_')) |
| 128 | p++; |
| 129 | |
| 130 | switch (*p) { |
| 131 | case '\0': |
128 | 132 | error("Config file buggy: no ] at the end of the domain name.\n"); |
129 | | } else { |
| 133 | case ']': |
130 | 134 | *p = 0; |
131 | | // TODO: Some kind of domain name verification might be nice. |
132 | | // E.g. restrict to only a-zA-Z0-9 and maybe -_ or so... |
133 | 135 | domain = t + 1; |
| 136 | break; |
| 137 | default: |
| 138 | error("Config file buggy: %c is not a valid character of a domain name.\n", *p); |
134 | 139 | } |
135 | 140 | } else { |
136 | 141 | // Skip leading whitespaces |
… |
… |
const String & ConfigManager::get(const
|
293 | 298 | |
294 | 299 | int ConfigManager::getInt(const String &key, const String &dom) const { |
295 | 300 | String value(get(key, dom)); |
296 | | // Convert the string to an integer. |
297 | | // TODO: We should perform some error checking. |
298 | | return (int)strtol(value.c_str(), 0, 10); |
| 301 | char *errpos; |
| 302 | int ivalue = (int)strtol(value.c_str(), &errpos, 10); |
| 303 | if (value.c_str()==errpos) |
| 304 | error("Config file buggy: %s is not a valid integer.\n", errpos); |
| 305 | |
| 306 | return ivalue; |
299 | 307 | } |
300 | 308 | |
301 | 309 | bool ConfigManager::getBool(const String &key, const String &dom) const { |
RCS file: /cvsroot/scummvm/scummvm/gui/ListWidget.cpp,v
retrieving revision 1.35
diff -u -3 -p -r1.35 ListWidget.cpp
|
|
ListWidget::ListWidget(GuiObject *boss,
|
51 | 51 | ListWidget::~ListWidget() { |
52 | 52 | } |
53 | 53 | |
| 54 | void ListWidget::setSelected(int item) { |
| 55 | assert( item>=-1 && item<(int)_list.size() ); |
| 56 | |
| 57 | if(isEnabled()) { |
| 58 | int oldSelectedItem = _selectedItem; |
| 59 | _selectedItem = item; |
| 60 | |
| 61 | if (oldSelectedItem != _selectedItem) { |
| 62 | if (_editMode) { |
| 63 | // undo any changes made |
| 64 | _list[oldSelectedItem] = _backupString; |
| 65 | _editMode = false; |
| 66 | drawCaret(true); |
| 67 | } |
| 68 | sendCommand(kListSelectionChangedCmd, _selectedItem); |
| 69 | } |
| 70 | scrollToCurrent(); |
| 71 | draw(); |
| 72 | } |
| 73 | } |
| 74 | |
54 | 75 | void ListWidget::setList(const StringList &list) { |
55 | 76 | if (_editMode && _caretVisible) |
56 | 77 | drawCaret(true); |
RCS file: /cvsroot/scummvm/scummvm/gui/ListWidget.h,v
retrieving revision 1.21
diff -u -3 -p -r1.21 ListWidget.h
|
|
public:
|
65 | 65 | void setList(const StringList& list); |
66 | 66 | const StringList& getList() const { return _list; } |
67 | 67 | int getSelected() const { return _selectedItem; } |
| 68 | void setSelected(int item); |
68 | 69 | const String& getSelectedString() const { return _list[_selectedItem]; } |
69 | 70 | void setNumberingMode(NumberingMode numberingMode) { _numberingMode = numberingMode; } |
70 | 71 | bool isEditable() const { return _editable; } |
RCS file: /cvsroot/scummvm/scummvm/gui/launcher.cpp,v
retrieving revision 1.88
diff -u -3 -p -r1.88 launcher.cpp
|
|
LauncherDialog::LauncherDialog(GameDetec
|
339 | 341 | // Populate the list |
340 | 342 | updateListing(); |
341 | 343 | |
342 | | // TODO - make a default selection (maybe the game user played last?) |
343 | | //_list->setSelected(0); |
344 | | |
| 344 | // Restore last selection |
| 345 | String last = ConfMan.get(String("lastselectedgame"), ConfigManager::kApplicationDomain); |
| 346 | if (!last.isEmpty()) { |
| 347 | int itemToSelect = 0; |
| 348 | StringList::const_iterator iter; |
| 349 | for (iter = _domains.begin(); iter != _domains.end(); ++iter, ++itemToSelect) { |
| 350 | if (last == *iter) { |
| 351 | _list->setSelected(itemToSelect); |
| 352 | break; |
| 353 | } |
| 354 | } |
| 355 | } |
| 356 | |
345 | 357 | // En-/Disable the buttons depending on the list selection |
346 | 358 | updateButtons(); |
347 | 359 | |
… |
… |
LauncherDialog::~LauncherDialog() {
|
353 | 365 | delete _browser; |
354 | 366 | } |
355 | 367 | |
| 368 | void LauncherDialog::close() { |
| 369 | // Save last selection |
| 370 | if (_list->getSelected() >=0) |
| 371 | ConfMan.set(String("lastselectedgame"), _domains[_list->getSelected()], ConfigManager::kApplicationDomain); |
| 372 | else |
| 373 | ConfMan.removeKey(String("lastselectedgame"), ConfigManager::kApplicationDomain); |
| 374 | |
| 375 | ConfMan.flushToDisk(); |
| 376 | Dialog::close(); |
| 377 | } |
| 378 | |
356 | 379 | void LauncherDialog::updateListing() { |
357 | 380 | Common::StringList l; |
358 | 381 | |
… |
… |
void LauncherDialog::handleCommand(Comma
|
569 | 592 | updateButtons(); |
570 | 593 | break; |
571 | 594 | case kQuitCmd: |
572 | | #ifdef __PALM_OS__ |
573 | 595 | close(); |
574 | | #endif |
575 | 596 | g_system->quit(); |
576 | 597 | break; |
577 | 598 | default: |
RCS file: /cvsroot/scummvm/scummvm/gui/launcher.h,v
retrieving revision 1.18
diff -u -3 -p -r1.18 launcher.h
|
|
protected:
|
45 | 45 | Widget *_startButton; |
46 | 46 | Widget *_editButton; |
47 | 47 | Widget *_removeButton; |
| 48 | Widget *_moveUpButton; |
| 49 | Widget *_moveDownButton; |
48 | 50 | StringList _domains; |
49 | 51 | GameDetector &_detector; |
50 | 52 | BrowserDialog *_browser; |
… |
… |
protected:
|
52 | 54 | void updateListing(); |
53 | 55 | void updateButtons(); |
54 | 56 | |
| 57 | void close(); |
55 | 58 | virtual void addGame(); |
56 | 59 | void removeGame(int item); |
57 | 60 | void editGame(int item); |