Ticket #7733: alt_list_color.patch

File alt_list_color.patch, 6.8 KB (added by lordhoto, 15 years ago)

Patch against r43206 (trunk)

  • gui/ListWidget.cpp

    diff --git a/gui/ListWidget.cpp b/gui/ListWidget.cpp
    index 7551aca..9d6a557 100644
    a b void ListWidget::setSelected(int item) {  
    141141        }
    142142}
    143143
    144 void ListWidget::setList(const StringList &list) {
     144void ListWidget::setList(const StringList &list, const ColorFlagList *colorFlags) {
    145145        if (_editMode && _caretVisible)
    146146                drawCaret(true);
    147147
    void ListWidget::setList(const StringList &list) {  
    150150        _list = list;
    151151        _filter.clear();
    152152        _listIndex.clear();
     153        _colorFlags.clear();
     154
     155        if (colorFlags) {
     156                _colorFlags = *colorFlags;
     157                assert(_colorFlags.size() == _dataList.size());
     158        }
    153159
    154160        int size = list.size();
    155161        if (_currentPos >= size)
    void ListWidget::setList(const StringList &list) {  
    162168        scrollBarRecalc();
    163169}
    164170
    165 void ListWidget::append(const String &s) {
     171void ListWidget::append(const String &s, bool altColor) {
     172        if (_dataList.size() == _colorFlags.size())
     173                _colorFlags.push_back(altColor);
     174
    166175        _dataList.push_back(s);
    167176        _list.push_back(s);
    168177
    void ListWidget::drawWidget() {  
    431440
    432441                int width;
    433442
     443                bool altColor = false;
     444
     445                if (!_colorFlags.empty()) {
     446                        if (_filter.empty() || _selectedItem == -1)
     447                                altColor = _colorFlags[pos];
     448                        else
     449                                altColor = _colorFlags[_listIndex[pos]];
     450                }
     451
    434452                if (_selectedItem == pos && _editMode) {
    435453                        buffer = _editString;
    436454                        adjustOffset();
    437455                        width = _w - r.left - _hlRightPadding - _leftPadding - scrollbarW;
    438456                        g_gui.theme()->drawText(Common::Rect(_x + r.left, y, _x + r.left + width, y + fontHeight - 2),
    439                                                                         buffer, _state, Graphics::kTextAlignLeft, inverted, pad, true);
     457                                                                        buffer, _state, Graphics::kTextAlignLeft, inverted, pad, true, ThemeEngine::kFontStyleBold,
     458                                                                        altColor ? ThemeEngine::kFontColorAlternate : ThemeEngine::kFontColorNormal);
    440459                } else {
    441460                        buffer = _list[pos];
    442461                        width = _w - r.left - scrollbarW;
    443462                        g_gui.theme()->drawText(Common::Rect(_x + r.left, y, _x + r.left + width, y + fontHeight - 2),
    444                                                                         buffer, _state, Graphics::kTextAlignLeft, inverted, pad, true);
     463                                                                        buffer, _state, Graphics::kTextAlignLeft, inverted, pad, true, ThemeEngine::kFontStyleBold,
     464                                                                        altColor ? ThemeEngine::kFontColorAlternate : ThemeEngine::kFontColorNormal);
    445465                }
    446466
    447467                _textWidth[i] = width;
  • gui/ListWidget.h

    diff --git a/gui/ListWidget.h b/gui/ListWidget.h
    index 203cd88..007525a 100644
    a b class ListWidget : public EditableWidget {  
    5151public:
    5252        typedef Common::String String;
    5353        typedef Common::StringList StringList;
     54        typedef Common::Array<bool> ColorFlagList;
    5455protected:
    5556        StringList              _list;
    5657        StringList              _dataList;
     58        ColorFlagList   _colorFlags;
    5759        Common::Array<int>              _listIndex;
    5860        bool                    _editable;
    5961        bool                    _editMode;
    public:  
    8789
    8890        virtual Widget *findWidget(int x, int y);
    8991
    90         void setList(const StringList &list);
    91         void append(const String &s);
     92        void setList(const StringList &list, const ColorFlagList *colorFlags = 0);
     93        void append(const String &s, bool altColor = false);
    9294        const StringList &getList()     const                   { return _dataList; }
    9395        int getSelected() const                                         { return (_filter.empty() || _selectedItem == -1) ? _selectedItem : _listIndex[_selectedItem]; }
    9496        void setSelected(int item);
  • gui/saveload.cpp

    diff --git a/gui/saveload.cpp b/gui/saveload.cpp
    index f859c70..6f00a84 100644
    a b void SaveLoadChooser::updateSaveList() {  
    327327        int curSlot = 0;
    328328        int saveSlot = 0;
    329329        StringList saveNames;
     330        ListWidget::ColorFlagList colorFlags;
    330331        for (SaveStateList::const_iterator x = _saveList.begin(); x != _saveList.end(); ++x) {
    331332                // Handle gaps in the list of save games
    332333                saveSlot = atoi(x->save_slot().c_str());
    void SaveLoadChooser::updateSaveList() {  
    335336                                SaveStateDescriptor dummySave(curSlot, "");
    336337                                _saveList.insert_at(curSlot, dummySave);
    337338                                saveNames.push_back(dummySave.description());
     339                                colorFlags.push_back(false);
    338340                                curSlot++;
    339341                        }
    340342
    void SaveLoadChooser::updateSaveList() {  
    349351                Common::String description = x->description();
    350352                Common::String trimmedDescription = description;
    351353                trimmedDescription.trim();
    352                 if (trimmedDescription.empty())
     354                if (trimmedDescription.empty()) {
    353355                        description = "Untitled savestate";
     356                        colorFlags.push_back(true);
     357                } else {
     358                        colorFlags.push_back(false);
     359                }
    354360
    355361                saveNames.push_back(description);
    356362                curSlot++;
    void SaveLoadChooser::updateSaveList() {  
    362368                saveNames.push_back(emptyDesc);
    363369                SaveStateDescriptor dummySave(i, "");
    364370                _saveList.push_back(dummySave);
     371                colorFlags.push_back(false);
    365372        }
    366373
    367         _list->setList(saveNames);
     374        _list->setList(saveNames, &colorFlags);
    368375}
    369376
    370377} // End of namespace GUI
  • gui/themes/default.inc

    diff --git a/gui/themes/default.inc b/gui/themes/default.inc
    index 88ef801..d9298ff 100644
    a b  
    15501550"color='lightgrey' "
    15511551"/> "
    15521552"<text_color id='color_alternative' "
    1553 "color='green' "
     1553"color='lightgrey' "
    15541554"/> "
    15551555"<text_color id='color_alternative_inverted' "
    1556 "color='black' "
     1556"color='255,255,255' "
    15571557"/> "
    15581558"<text_color id='color_alternative_hover' "
    1559 "color='green2' "
     1559"color='lightgrey' "
    15601560"/> "
    15611561"<text_color id='color_alternative_disabled' "
    15621562"color='lightgrey' "
  • gui/themes/scummclassic/classic_gfx.stx

    diff --git a/gui/themes/scummclassic.zip b/gui/themes/scummclassic.zip
    index c295002..a7188cb 100644
    Binary files a/gui/themes/scummclassic.zip and b/gui/themes/scummclassic.zip differ
    diff --git a/gui/themes/scummclassic/classic_gfx.stx b/gui/themes/scummclassic/classic_gfx.stx
    index ff2fadc..3c552ac 100644
    a b  
    7070                />
    7171
    7272                <text_color     id = 'color_alternative'
    73                                 color = 'green'
     73                                color = 'lightgrey'
    7474                />
    7575
    7676                <text_color     id = 'color_alternative_inverted'
    77                                 color = 'black'
     77                                color = '255, 255, 255'
    7878                />
    7979
    8080                <text_color     id = 'color_alternative_hover'
    81                                 color = 'green2'
     81                                color = 'lightgrey'
    8282                />
    8383
    8484                <text_color     id = 'color_alternative_disabled'
  • gui/themes/scummmodern/scummmodern_gfx.stx

    diff --git a/gui/themes/scummmodern.zip b/gui/themes/scummmodern.zip
    index beff013..f646ecf 100644
    Binary files a/gui/themes/scummmodern.zip and b/gui/themes/scummmodern.zip differ
    diff --git a/gui/themes/scummmodern/scummmodern_gfx.stx b/gui/themes/scummmodern/scummmodern_gfx.stx
    index 6a3ab0c..05a4599 100644
    a b  
    130130                />
    131131
    132132                <text_color     id = 'color_alternative'
    133                                 color = 'black'
     133                                color = 'darkgray'
    134134                />
    135135
    136136                <text_color     id = 'color_alternative_inverted'
    137                                 color = 'black'
     137                                color = 'white'
    138138                />
    139139
    140140                <text_color     id = 'color_alternative_hover'
    141                                 color = 'bgreen'
     141                                color = 'darkgray'
    142142                />
    143143
    144144                <text_color     id = 'color_alternative_disabled'
    145                                 color = '192, 192, 192'
     145                                color = 'darkgray'
    146146                />
    147147
    148148                <text_color     id = 'color_button'