src/group_gui.cpp
changeset 8811 cf734ff178bf
parent 8810 64adff2796e4
child 8822 83f3613aa746
equal deleted inserted replaced
8810:64adff2796e4 8811:cf734ff178bf
    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();