summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBernard Teo <btzy1996@hotmail.com>2021-05-31 17:02:21 +0800
committerPatric Stout <github@truebrain.nl>2021-09-18 11:17:49 +0200
commit20717ededfe6cc370f9c35cff5b8d732105975f7 (patch)
tree15d728555207dd46afddae8c74b4a6dd625138d2
parent6a6dbbaad2007f5a3b4b57c6b0ff44a899fb0ff8 (diff)
downloadopenttd-20717ededfe6cc370f9c35cff5b8d732105975f7.tar.xz
Feature: Button to open order window from VL_SHARED_ORDERS window
-rw-r--r--src/lang/english.txt4
-rw-r--r--src/vehicle_gui.cpp28
-rw-r--r--src/widgets/vehicle_widget.h5
3 files changed, 33 insertions, 4 deletions
diff --git a/src/lang/english.txt b/src/lang/english.txt
index 6162906a9..f9f10e94f 100644
--- a/src/lang/english.txt
+++ b/src/lang/english.txt
@@ -325,6 +325,10 @@ STR_SORT_BY_AVERAGE_PROFIT_THIS_YEAR :Average profit
STR_GROUP_BY_NONE :None
STR_GROUP_BY_SHARED_ORDERS :Shared orders
+# Order button in shared orders vehicle list
+STR_GOTO_ORDER_VIEW :{BLACK}Orders
+STR_GOTO_ORDER_VIEW_TOOLTIP :{BLACK}Open the order view
+
# Tooltips for the main toolbar
###length 31
STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Pause game
diff --git a/src/vehicle_gui.cpp b/src/vehicle_gui.cpp
index c3ae09490..c43347ca8 100644
--- a/src/vehicle_gui.cpp
+++ b/src/vehicle_gui.cpp
@@ -1367,7 +1367,13 @@ void ChangeVehicleViewWindow(VehicleID from_index, VehicleID to_index)
static const NWidgetPart _nested_vehicle_list[] = {
NWidget(NWID_HORIZONTAL),
NWidget(WWT_CLOSEBOX, COLOUR_GREY),
- NWidget(WWT_CAPTION, COLOUR_GREY, WID_VL_CAPTION),
+ NWidget(NWID_SELECTION, INVALID_COLOUR, WID_VL_CAPTION_SELECTION),
+ NWidget(WWT_CAPTION, COLOUR_GREY, WID_VL_CAPTION),
+ NWidget(NWID_HORIZONTAL),
+ NWidget(WWT_CAPTION, COLOUR_GREY, WID_VL_CAPTION_SHARED_ORDERS),
+ NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_VL_ORDER_VIEW), SetMinimalSize(61, 14), SetDataTip(STR_GOTO_ORDER_VIEW, STR_GOTO_ORDER_VIEW_TOOLTIP),
+ EndContainer(),
+ EndContainer(),
NWidget(WWT_SHADEBOX, COLOUR_GREY),
NWidget(WWT_DEFSIZEBOX, COLOUR_GREY),
NWidget(WWT_STICKYBOX, COLOUR_GREY),
@@ -1642,6 +1648,12 @@ private:
BP_HIDE_BUTTONS, ///< Show the empty panel.
};
+ /** Enumeration of planes of the title row at the top. */
+ enum CaptionPlanes {
+ BP_NORMAL, ///< Show shared orders caption and buttons.
+ BP_SHARED_ORDERS, ///< Show the normal caption.
+ };
+
public:
VehicleListWindow(WindowDesc *desc, WindowNumber window_number) : BaseVehicleListWindow(desc, window_number)
{
@@ -1655,14 +1667,17 @@ public:
/* Set up the window widgets */
this->GetWidget<NWidgetCore>(WID_VL_LIST)->tool_tip = STR_VEHICLE_LIST_TRAIN_LIST_TOOLTIP + this->vli.vtype;
+ NWidgetStacked *nwi = this->GetWidget<NWidgetStacked>(WID_VL_CAPTION_SELECTION);
if (this->vli.type == VL_SHARED_ORDERS) {
- this->GetWidget<NWidgetCore>(WID_VL_CAPTION)->widget_data = STR_VEHICLE_LIST_SHARED_ORDERS_LIST_CAPTION;
+ this->GetWidget<NWidgetCore>(WID_VL_CAPTION_SHARED_ORDERS)->widget_data = STR_VEHICLE_LIST_SHARED_ORDERS_LIST_CAPTION;
/* If we are in the shared orders window, then disable the group-by dropdown menu.
* Remove this when the group-by dropdown menu has another option apart from grouping by shared orders. */
this->SetWidgetDisabledState(WID_VL_GROUP_ORDER, true);
this->SetWidgetDisabledState(WID_VL_GROUP_BY_PULLDOWN, true);
+ nwi->SetDisplayedPlane(BP_SHARED_ORDERS);
} else {
this->GetWidget<NWidgetCore>(WID_VL_CAPTION)->widget_data = STR_VEHICLE_LIST_TRAIN_CAPTION + this->vli.vtype;
+ nwi->SetDisplayedPlane(BP_NORMAL);
}
this->FinishInitNested(window_number);
@@ -1718,7 +1733,8 @@ public:
SetDParam(0, STR_VEHICLE_LIST_AVAILABLE_TRAINS + this->vli.vtype);
break;
- case WID_VL_CAPTION: {
+ case WID_VL_CAPTION:
+ case WID_VL_CAPTION_SHARED_ORDERS: {
switch (this->vli.type) {
case VL_SHARED_ORDERS: // Shared Orders
if (this->vehicles.size() == 0) {
@@ -1806,6 +1822,12 @@ public:
void OnClick(Point pt, int widget, int click_count) override
{
switch (widget) {
+ case WID_VL_ORDER_VIEW: // Open the shared orders window
+ assert(this->vli.type == VL_SHARED_ORDERS);
+ assert(!this->vehicles.empty());
+ ShowOrdersWindow(this->vehicles[0]);
+ break;
+
case WID_VL_SORT_ORDER: // Flip sorting method ascending/descending
this->vehgroups.ToggleSortOrder();
this->SetDirty();
diff --git a/src/widgets/vehicle_widget.h b/src/widgets/vehicle_widget.h
index 698a32bcf..954e72f70 100644
--- a/src/widgets/vehicle_widget.h
+++ b/src/widgets/vehicle_widget.h
@@ -61,7 +61,10 @@ enum VehicleDetailsWidgets {
/** Widgets of the #VehicleListWindow class. */
enum VehicleListWidgets {
- WID_VL_CAPTION, ///< Caption of window.
+ WID_VL_CAPTION, ///< Caption of window (for non shared orders windows).
+ WID_VL_CAPTION_SHARED_ORDERS, ///< Caption of window (for shared orders windows).
+ WID_VL_CAPTION_SELECTION, ///< Selection for caption.
+ WID_VL_ORDER_VIEW, ///< Button to open order window (for shared orders windows).
WID_VL_GROUP_ORDER, ///< Group order.
WID_VL_GROUP_BY_PULLDOWN, ///< Group by dropdown list.
WID_VL_SORT_ORDER, ///< Sort order.