21 #include "autoreplace_gui.h" |
21 #include "autoreplace_gui.h" |
22 #include "string_func.h" |
22 #include "string_func.h" |
23 #include "viewport_func.h" |
23 #include "viewport_func.h" |
24 #include "gfx_func.h" |
24 #include "gfx_func.h" |
25 #include "player_func.h" |
25 #include "player_func.h" |
|
26 #include "widgets/dropdown_type.h" |
26 #include "widgets/dropdown_func.h" |
27 #include "widgets/dropdown_func.h" |
27 |
28 |
28 #include "table/strings.h" |
29 #include "table/strings.h" |
29 #include "table/sprites.h" |
30 #include "table/sprites.h" |
30 |
31 |
256 |
257 |
257 default: NOT_REACHED(); |
258 default: NOT_REACHED(); |
258 } |
259 } |
259 } |
260 } |
260 |
261 |
|
262 enum GroupActionListFunction { |
|
263 GALF_REPLACE, |
|
264 GALF_SERVICE, |
|
265 GALF_DEPOT, |
|
266 GALF_ADD_SHARED, |
|
267 GALF_REMOVE_ALL, |
|
268 }; |
|
269 |
261 /** |
270 /** |
262 * Update/redraw the group action dropdown |
271 * Update/redraw the group action dropdown |
263 * @param w the window the dropdown belongs to |
272 * @param w the window the dropdown belongs to |
264 * @param gid the currently selected group in the window |
273 * @param gid the currently selected group in the window |
265 */ |
274 */ |
266 static void ShowGroupActionDropdown(Window *w, GroupID gid) |
275 static void ShowGroupActionDropdown(Window *w, GroupID gid) |
267 { |
276 { |
268 static StringID action_str[] = { |
277 DropDownList *list = new DropDownList(); |
269 STR_REPLACE_VEHICLES, |
278 |
270 STR_SEND_FOR_SERVICING, |
279 list->push_back(new DropDownListStringItem(STR_REPLACE_VEHICLES, GALF_REPLACE, false)); |
271 STR_SEND_TRAIN_TO_DEPOT, |
280 list->push_back(new DropDownListStringItem(STR_SEND_FOR_SERVICING, GALF_SERVICE, false)); |
272 STR_NULL, |
281 list->push_back(new DropDownListStringItem(STR_SEND_TRAIN_TO_DEPOT, GALF_DEPOT, false)); |
273 STR_NULL, |
282 |
274 INVALID_STRING_ID |
283 if (IsValidGroupID(gid)) { |
275 }; |
284 list->push_back(new DropDownListStringItem(STR_GROUP_ADD_SHARED_VEHICLE, GALF_ADD_SHARED, false)); |
276 |
285 list->push_back(new DropDownListStringItem(STR_GROUP_REMOVE_ALL_VEHICLES, GALF_REMOVE_ALL, false)); |
277 action_str[3] = IsValidGroupID(gid) ? STR_GROUP_ADD_SHARED_VEHICLE : INVALID_STRING_ID; |
286 } |
278 action_str[4] = IsValidGroupID(gid) ? STR_GROUP_REMOVE_ALL_VEHICLES : INVALID_STRING_ID; |
287 |
279 |
288 ShowDropDownList(w, list, 0, GRP_WIDGET_MANAGE_VEHICLES_DROPDOWN); |
280 ShowDropDownMenu(w, action_str, 0, GRP_WIDGET_MANAGE_VEHICLES_DROPDOWN, 0, 0); |
|
281 } |
289 } |
282 |
290 |
283 /** |
291 /** |
284 * bitmask for w->window_number |
292 * bitmask for w->window_number |
285 * 0-7 PlayerID (owner) |
293 * 0-7 PlayerID (owner) |
705 |
713 |
706 case GRP_WIDGET_MANAGE_VEHICLES_DROPDOWN: |
714 case GRP_WIDGET_MANAGE_VEHICLES_DROPDOWN: |
707 assert(gv->l.list_length != 0); |
715 assert(gv->l.list_length != 0); |
708 |
716 |
709 switch (e->we.dropdown.index) { |
717 switch (e->we.dropdown.index) { |
710 case 0: // Replace window |
718 case GALF_REPLACE: // Replace window |
711 ShowReplaceGroupVehicleWindow(gv->group_sel, gv->vehicle_type); |
719 ShowReplaceGroupVehicleWindow(gv->group_sel, gv->vehicle_type); |
712 break; |
720 break; |
713 case 1: // Send for servicing |
721 case GALF_SERVICE: // Send for servicing |
714 DoCommandP(0, gv->group_sel, ((IsAllGroupID(gv->group_sel) ? VLW_STANDARD : VLW_GROUP_LIST) & VLW_MASK) |
722 DoCommandP(0, gv->group_sel, ((IsAllGroupID(gv->group_sel) ? VLW_STANDARD : VLW_GROUP_LIST) & VLW_MASK) |
715 | DEPOT_MASS_SEND |
723 | DEPOT_MASS_SEND |
716 | DEPOT_SERVICE, NULL, GetCmdSendToDepot(gv->vehicle_type)); |
724 | DEPOT_SERVICE, NULL, GetCmdSendToDepot(gv->vehicle_type)); |
717 break; |
725 break; |
718 case 2: // Send to Depots |
726 case GALF_DEPOT: // Send to Depots |
719 DoCommandP(0, gv->group_sel, ((IsAllGroupID(gv->group_sel) ? VLW_STANDARD : VLW_GROUP_LIST) & VLW_MASK) |
727 DoCommandP(0, gv->group_sel, ((IsAllGroupID(gv->group_sel) ? VLW_STANDARD : VLW_GROUP_LIST) & VLW_MASK) |
720 | DEPOT_MASS_SEND, NULL, GetCmdSendToDepot(gv->vehicle_type)); |
728 | DEPOT_MASS_SEND, NULL, GetCmdSendToDepot(gv->vehicle_type)); |
721 break; |
729 break; |
722 case 3: // Add shared Vehicles |
730 case GALF_ADD_SHARED: // Add shared Vehicles |
723 assert(IsValidGroupID(gv->group_sel)); |
731 assert(IsValidGroupID(gv->group_sel)); |
724 |
732 |
725 DoCommandP(0, gv->group_sel, gv->vehicle_type, NULL, CMD_ADD_SHARED_VEHICLE_GROUP | CMD_MSG(STR_GROUP_CAN_T_ADD_SHARED_VEHICLE)); |
733 DoCommandP(0, gv->group_sel, gv->vehicle_type, NULL, CMD_ADD_SHARED_VEHICLE_GROUP | CMD_MSG(STR_GROUP_CAN_T_ADD_SHARED_VEHICLE)); |
726 break; |
734 break; |
727 case 4: // Remove all Vehicles from the selected group |
735 case GALF_REMOVE_ALL: // Remove all Vehicles from the selected group |
728 assert(IsValidGroupID(gv->group_sel)); |
736 assert(IsValidGroupID(gv->group_sel)); |
729 |
737 |
730 DoCommandP(0, gv->group_sel, gv->vehicle_type, NULL, CMD_REMOVE_ALL_VEHICLES_GROUP | CMD_MSG(STR_GROUP_CAN_T_REMOVE_ALL_VEHICLES)); |
738 DoCommandP(0, gv->group_sel, gv->vehicle_type, NULL, CMD_REMOVE_ALL_VEHICLES_GROUP | CMD_MSG(STR_GROUP_CAN_T_REMOVE_ALL_VEHICLES)); |
731 break; |
739 break; |
732 default: NOT_REACHED(); |
740 default: NOT_REACHED(); |