~ubuntu-branches/debian/sid/stella/sid

« back to all changes in this revision

Viewing changes to src/gui/ListWidget.cxx

  • Committer: Package Import Robot
  • Author(s): Stephen Kitt
  • Date: 2013-06-28 09:53:13 UTC
  • mfrom: (1.3.6)
  • Revision ID: package-import@ubuntu.com-20130628095313-j8jkkgxpvx1t18ym
Tags: 3.9-1
New upstream version.

Show diffs side-by-side

added added

removed removed

Lines of Context:
14
14
// See the file "License.txt" for information on usage and redistribution of
15
15
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
16
16
//
17
 
// $Id: ListWidget.cxx 2579 2013-01-04 19:49:01Z stephena $
 
17
// $Id: ListWidget.cxx 2743 2013-05-29 16:27:12Z stephena $
18
18
//
19
19
//   Based on code from ScummVM - Scumm Interpreter
20
20
//   Copyright (C) 2002-2004 The ScummVM project
81
81
      abortEditMode();
82
82
 
83
83
    _selectedItem = item;
84
 
    sendCommand(kListSelectionChangedCmd, _selectedItem, _id);
 
84
    sendCommand(ListWidget::kSelectionChangedCmd, _selectedItem, _id);
85
85
 
86
86
    _currentPos = _selectedItem - _rows / 2;
87
87
    scrollToSelected();
89
89
}
90
90
 
91
91
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 
92
void ListWidget::setSelected(const string& item)
 
93
{
 
94
  int selected = -1;
 
95
  if(!_list.isEmpty())
 
96
  {
 
97
    if(item == "")
 
98
      selected = 0;
 
99
    else
 
100
    {
 
101
      uInt32 itemToSelect = 0;
 
102
      StringList::const_iterator iter;
 
103
      for(iter = _list.begin(); iter != _list.end(); ++iter, ++itemToSelect)
 
104
      {
 
105
        if(item == *iter)
 
106
        {
 
107
          selected = itemToSelect;
 
108
          break;
 
109
        }
 
110
      }
 
111
      if(itemToSelect > _list.size() || selected == -1)
 
112
        selected = 0;
 
113
    }
 
114
  }
 
115
  setSelected(selected);
 
116
}
 
117
 
 
118
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
92
119
void ListWidget::setHighlighted(int item)
93
120
{
94
121
  if(item < -1 || item >= (int)_list.size())
112
139
}
113
140
 
114
141
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 
142
const string& ListWidget::getSelectedString() const
 
143
{
 
144
  return (_selectedItem >= 0 && _selectedItem < (int)_list.size())
 
145
            ? _list[_selectedItem] : EmptyString;
 
146
}
 
147
 
 
148
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
115
149
void ListWidget::scrollTo(int item)
116
150
{
117
151
  int size = _list.size();
154
188
{
155
189
  _scrollBar->_currentPos = _currentPos;
156
190
  _scrollBar->recalc();
157
 
  sendCommand(kListScrolledCmd, _currentPos, _id);
 
191
  sendCommand(ListWidget::kScrolledCmd, _currentPos, _id);
158
192
}
159
193
 
160
194
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
166
200
  // First check whether the selection changed
167
201
  int newSelectedItem;
168
202
  newSelectedItem = findItem(x, y);
169
 
  if (newSelectedItem > (int)_list.size() - 1)
170
 
    newSelectedItem = -1;
 
203
  if (newSelectedItem >= (int)_list.size())
 
204
    return;
171
205
 
172
206
  if (_selectedItem != newSelectedItem)
173
207
  {
174
208
    if (_editMode)
175
209
      abortEditMode();
176
210
    _selectedItem = newSelectedItem;
177
 
    sendCommand(kListSelectionChangedCmd, _selectedItem, _id);
 
211
    sendCommand(ListWidget::kSelectionChangedCmd, _selectedItem, _id);
178
212
    setDirty(); draw();
179
213
  }
180
214
        
189
223
  // send the double click command
190
224
  if (clickCount == 2 && (_selectedItem == findItem(x, y)))
191
225
  {
192
 
    sendCommand(kListItemDoubleClickedCmd, _selectedItem, _id);
 
226
    sendCommand(ListWidget::kDoubleClickedCmd, _selectedItem, _id);
193
227
 
194
228
    // Start edit mode
195
229
    if(_editable && !_editMode)
279
313
    _scrollBar->draw();
280
314
    scrollToSelected();
281
315
 
282
 
    sendCommand(kListSelectionChangedCmd, _selectedItem, _id);
 
316
    sendCommand(ListWidget::kSelectionChangedCmd, _selectedItem, _id);
283
317
  }
284
318
 
285
319
  _currentKeyDown = key;
311
345
        if (_editable)
312
346
          startEditMode();
313
347
        else
314
 
          sendCommand(kListItemActivatedCmd, _selectedItem, _id);
 
348
          sendCommand(ListWidget::kActivatedCmd, _selectedItem, _id);
315
349
      }
316
350
      break;
317
351
 
346
380
      break;
347
381
 
348
382
    case Event::UIPrevDir:
349
 
      sendCommand(kListPrevDirCmd, _selectedItem, _id);
 
383
      sendCommand(ListWidget::kPrevDirCmd, _selectedItem, _id);
350
384
      break;
351
385
 
352
386
    default:
358
392
    _scrollBar->draw();
359
393
    scrollToSelected();
360
394
 
361
 
    sendCommand(kListSelectionChangedCmd, _selectedItem, _id);
 
395
    sendCommand(ListWidget::kSelectionChangedCmd, _selectedItem, _id);
362
396
  }
363
397
 
364
398
  return handled;
385
419
        setDirty(); draw();
386
420
 
387
421
        // Let boss know the list has scrolled
388
 
        sendCommand(kListScrolledCmd, _currentPos, _id);
 
422
        sendCommand(ListWidget::kScrolledCmd, _currentPos, _id);
389
423
      }
390
424
      break;
391
425
  }
418
452
  setDirty(); draw();
419
453
 
420
454
  if(oldScrollPos != _currentPos)
421
 
    sendCommand(kListScrolledCmd, _currentPos, _id);
 
455
    sendCommand(ListWidget::kScrolledCmd, _currentPos, _id);
422
456
}
423
457
 
424
458
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
427
461
  if (_editable && !_editMode && _selectedItem >= 0)
428
462
  {
429
463
    _editMode = true;
430
 
    setEditString(_list[_selectedItem]);
 
464
    setText(_list[_selectedItem]);
431
465
 
432
466
    // Widget gets raw data while editing
433
467
    EditableWidget::startEditMode();
443
477
  // Send a message that editing finished with a return/enter key press
444
478
  _editMode = false;
445
479
  _list[_selectedItem] = _editString;
446
 
  sendCommand(kListItemDataChangedCmd, _selectedItem, _id);
 
480
  sendCommand(ListWidget::kDataChangedCmd, _selectedItem, _id);
447
481
 
448
482
  // Reset to normal data entry
449
483
  EditableWidget::endEditMode();