summaryrefslogtreecommitdiff
path: root/src/newgrf_gui.cpp
diff options
context:
space:
mode:
authorMichael Lutz <michi@icosahedron.de>2019-04-02 21:31:33 +0200
committerMichael Lutz <michi@icosahedron.de>2019-04-09 22:45:15 +0200
commite804173595d49a537503ea08bec4663117bae047 (patch)
treeaca1af9b44daefab8ded671615d87e08a3a96059 /src/newgrf_gui.cpp
parentc7b9987d081ae4e0103309b18c93deecc395dec9 (diff)
downloadopenttd-e804173595d49a537503ea08bec4663117bae047.tar.xz
Codechange: If something is a vector of strings, use a vector of strings instead of an AutoFreeSmallVector.
Diffstat (limited to 'src/newgrf_gui.cpp')
-rw-r--r--src/newgrf_gui.cpp49
1 files changed, 22 insertions, 27 deletions
diff --git a/src/newgrf_gui.cpp b/src/newgrf_gui.cpp
index 520882667..e2a76319c 100644
--- a/src/newgrf_gui.cpp
+++ b/src/newgrf_gui.cpp
@@ -565,8 +565,6 @@ void ShowNewGRFTextfileWindow(TextfileType file_type, const GRFConfig *c)
new NewGRFTextfileWindow(file_type, c);
}
-static GRFPresetList _grf_preset_list; ///< List of known NewGRF presets. @see GetGRFPresetList
-
typedef std::map<uint32, const GRFConfig *> GrfIdMap; ///< Map of grfid to the grf config.
/**
@@ -605,6 +603,8 @@ struct NewGRFWindow : public Window, NewGRFScanCallback {
StringFilter string_filter; ///< Filter for available grf.
QueryString filter_editbox; ///< Filter editbox;
+ StringList grf_presets; ///< List of known NewGRF presets.
+
GRFConfig *actives; ///< Temporary active grf list to which changes are made.
GRFConfig *active_sel; ///< Selected active grf item.
@@ -632,7 +632,7 @@ struct NewGRFWindow : public Window, NewGRFScanCallback {
this->active_over = -1;
CopyGRFConfigList(&this->actives, *orig_list, false);
- GetGRFPresetList(&_grf_preset_list);
+ this->grf_presets = GetGRFPresetList();
this->CreateNestedTree();
this->vscroll = this->GetScrollbar(WID_NS_SCROLLBAR);
@@ -673,7 +673,6 @@ struct NewGRFWindow : public Window, NewGRFScanCallback {
/* Remove the temporary copy of grf-list used in window */
ClearGRFConfigList(&this->actives);
- _grf_preset_list.Clear();
}
/**
@@ -747,11 +746,9 @@ struct NewGRFWindow : public Window, NewGRFScanCallback {
case WID_NS_PRESET_LIST: {
Dimension d = GetStringBoundingBox(STR_NUM_CUSTOM);
- for (uint i = 0; i < _grf_preset_list.size(); i++) {
- if (_grf_preset_list[i] != NULL) {
- SetDParamStr(0, _grf_preset_list[i]);
- d = maxdim(d, GetStringBoundingBox(STR_JUST_RAW_STRING));
- }
+ for (const auto &i : this->grf_presets) {
+ SetDParamStr(0, i.c_str());
+ d = maxdim(d, GetStringBoundingBox(STR_JUST_RAW_STRING));
}
d.width += padding.width;
*size = maxdim(d, *size);
@@ -783,7 +780,7 @@ struct NewGRFWindow : public Window, NewGRFScanCallback {
SetDParam(0, STR_NUM_CUSTOM);
} else {
SetDParam(0, STR_JUST_RAW_STRING);
- SetDParamStr(1, _grf_preset_list[this->preset]);
+ SetDParamStr(1, this->grf_presets[this->preset].c_str());
}
break;
}
@@ -929,10 +926,8 @@ struct NewGRFWindow : public Window, NewGRFScanCallback {
/* Add 'None' option for clearing list */
list.emplace_back(new DropDownListStringItem(STR_NONE, -1, false));
- for (uint i = 0; i < _grf_preset_list.size(); i++) {
- if (_grf_preset_list[i] != NULL) {
- list.emplace_back(new DropDownListCharStringItem(_grf_preset_list[i], i, false));
- }
+ for (uint i = 0; i < this->grf_presets.size(); i++) {
+ list.emplace_back(new DropDownListCharStringItem(this->grf_presets[i].c_str(), i, false));
}
this->DeleteChildWindows(WC_QUERY_STRING); // Remove the parameter query window
@@ -949,14 +944,14 @@ struct NewGRFWindow : public Window, NewGRFScanCallback {
}
case WID_NS_PRESET_SAVE:
- ShowSavePresetWindow((this->preset == -1) ? NULL : _grf_preset_list[this->preset]);
+ ShowSavePresetWindow((this->preset == -1) ? NULL : this->grf_presets[this->preset].c_str());
break;
case WID_NS_PRESET_DELETE:
if (this->preset == -1) return;
- DeleteGRFPresetFromConfig(_grf_preset_list[this->preset]);
- GetGRFPresetList(&_grf_preset_list);
+ DeleteGRFPresetFromConfig(this->grf_presets[this->preset].c_str());
+ this->grf_presets = GetGRFPresetList();
this->preset = -1;
this->InvalidateData();
this->DeleteChildWindows(WC_QUERY_STRING); // Remove the parameter query window
@@ -1156,7 +1151,7 @@ struct NewGRFWindow : public Window, NewGRFScanCallback {
this->preset = index;
if (index != -1) {
- this->actives = LoadGRFPresetFromConfig(_grf_preset_list[index]);
+ this->actives = LoadGRFPresetFromConfig(this->grf_presets[index].c_str());
}
this->avails.ForceRebuild();
@@ -1172,11 +1167,11 @@ struct NewGRFWindow : public Window, NewGRFScanCallback {
if (str == NULL) return;
SaveGRFPresetToConfig(str, this->actives);
- GetGRFPresetList(&_grf_preset_list);
+ this->grf_presets = GetGRFPresetList();
/* Switch to this preset */
- for (uint i = 0; i < _grf_preset_list.size(); i++) {
- if (_grf_preset_list[i] != NULL && strcmp(_grf_preset_list[i], str) == 0) {
+ for (uint i = 0; i < this->grf_presets.size(); i++) {
+ if (this->grf_presets[i] == str) {
this->preset = i;
break;
}
@@ -2038,7 +2033,7 @@ static WindowDesc _save_preset_desc(
/** Class for the save preset window. */
struct SavePresetWindow : public Window {
QueryString presetname_editbox; ///< Edit box of the save preset.
- GRFPresetList presets; ///< Available presets.
+ StringList presets; ///< Available presets.
Scrollbar *vscroll; ///< Pointer to the scrollbar widget.
int selected; ///< Selected entry in the preset list, or \c -1 if none selected.
@@ -2048,11 +2043,11 @@ struct SavePresetWindow : public Window {
*/
SavePresetWindow(const char *initial_text) : Window(&_save_preset_desc), presetname_editbox(32)
{
- GetGRFPresetList(&this->presets);
+ this->presets = GetGRFPresetList();
this->selected = -1;
if (initial_text != NULL) {
for (uint i = 0; i < this->presets.size(); i++) {
- if (!strcmp(initial_text, this->presets[i])) {
+ if (this->presets[i] == initial_text) {
this->selected = i;
break;
}
@@ -2083,7 +2078,7 @@ struct SavePresetWindow : public Window {
resize->height = FONT_HEIGHT_NORMAL + 2U;
size->height = 0;
for (uint i = 0; i < this->presets.size(); i++) {
- Dimension d = GetStringBoundingBox(this->presets[i]);
+ Dimension d = GetStringBoundingBox(this->presets[i].c_str());
size->width = max(size->width, d.width + WD_FRAMETEXT_LEFT + WD_FRAMETEXT_RIGHT);
resize->height = max(resize->height, d.height);
}
@@ -2108,7 +2103,7 @@ struct SavePresetWindow : public Window {
for (uint i = min_index; i < max_index; i++) {
if ((int)i == this->selected) GfxFillRect(r.left + 1, y, r.right - 1, y + step_height - 2, PC_DARK_BLUE);
- const char *text = this->presets[i];
+ const char *text = this->presets[i].c_str();
DrawString(r.left + WD_FRAMERECT_LEFT, r.right, y + offset_y, text, ((int)i == this->selected) ? TC_WHITE : TC_SILVER);
y += step_height;
}
@@ -2124,7 +2119,7 @@ struct SavePresetWindow : public Window {
uint row = this->vscroll->GetScrolledRowFromWidget(pt.y, this, WID_SVP_PRESET_LIST);
if (row < this->presets.size()) {
this->selected = row;
- this->presetname_editbox.text.Assign(this->presets[row]);
+ this->presetname_editbox.text.Assign(this->presets[row].c_str());
this->SetWidgetDirty(WID_SVP_PRESET_LIST);
this->SetWidgetDirty(WID_SVP_EDITBOX);
}