File diff r4718:854675088e66 → r4719:e1d2222eb9fb
station_gui.c
Show inline comments
 
@@ -247,13 +247,6 @@ static void PlayerStationsWndProc(Window
 

	
 
	switch (e->event) {
 
	case WE_PAINT: {
 
		/* Set up cargo click-states. Toggle the all-vehicle and all-cargo types button
 
		 * depending on if all types are clicked or not */
 
		SB(w->click_state, 6, 5, facilities);
 
		SB(w->click_state, 26, 1, facilities == (FACIL_TRAIN | FACIL_TRUCK_STOP | FACIL_BUS_STOP | FACIL_AIRPORT | FACIL_DOCK));
 
		SB(w->click_state, 12, NUM_CARGO + 1, cargo_filter);
 
		SB(w->click_state, 27, 1, cargo_filter == 0x1FFF);
 

	
 
		BuildStationsList(sl, owner, facilities, cargo_filter);
 
		SortStationsList(sl);
 

	
 
@@ -353,23 +346,43 @@ static void PlayerStationsWndProc(Window
 
		case 10: /* dock */
 
			if (_ctrl_pressed) {
 
				TOGGLEBIT(facilities, e->we.click.widget - 6);
 
				ToggleWidgetLoweredState(w, e->we.click.widget);
 
			} else {
 
				facilities = 0;
 
				int i;
 
				for (i = 0; facilities != 0; i++, facilities >>= 1) {
 
					if (HASBIT(facilities, 0)) RaiseWindowWidget(w, i + 6);
 
				}
 
				SETBIT(facilities, e->we.click.widget - 6);
 
				LowerWindowWidget(w, e->we.click.widget);
 
			}
 
			SetWidgetLoweredState(w, 26, facilities == (FACIL_TRAIN | FACIL_TRUCK_STOP | FACIL_BUS_STOP | FACIL_AIRPORT | FACIL_DOCK));
 
			sl->flags |= SL_REBUILD;
 
			SetWindowDirty(w);
 
		break;
 
		case 26:
 
		case 26: {
 
			int i;
 
			for (i = 0; i < 5; i++) {
 
				LowerWindowWidget(w, i + 6);
 
			}
 
			LowerWindowWidget(w, 26);
 

	
 
			facilities = FACIL_TRAIN | FACIL_TRUCK_STOP | FACIL_BUS_STOP | FACIL_AIRPORT | FACIL_DOCK;
 
			sl->flags |= SL_REBUILD;
 
			SetWindowDirty(w);
 
			break;
 
		case 27:
 
		}
 
		case 27: {
 
			int i;
 
			for (i = 0; i < NUM_CARGO; i++) {
 
				LowerWindowWidget(w, i + 12);
 
			}
 
			LowerWindowWidget(w, 27);
 

	
 
			cargo_filter = 0x1FFF; /* select everything */
 
			sl->flags |= SL_REBUILD;
 
			SetWindowDirty(w);
 
			break;
 
		}
 
		case 28: /*flip sorting method asc/desc*/
 
			TOGGLEBIT(sl->flags, 0); //DESC-flag
 
			sl->flags |= SL_RESORT;
 
@@ -382,11 +395,17 @@ static void PlayerStationsWndProc(Window
 
			if (e->we.click.widget >= 12 && e->we.click.widget <= 24) { //change cargo_filter
 
				if (_ctrl_pressed) {
 
					TOGGLEBIT(cargo_filter, e->we.click.widget - 12);
 
					ToggleWidgetLoweredState(w, e->we.click.widget);
 
				} else {
 
					cargo_filter = 0;
 
					int i;
 
					for (i = 0; cargo_filter != 0; i++, cargo_filter >>= 1) {
 
						if (HASBIT(cargo_filter, 0)) RaiseWindowWidget(w, i + 12);
 
					}
 
					SETBIT(cargo_filter, e->we.click.widget - 12);
 
					LowerWindowWidget(w, e->we.click.widget);
 
				}
 
				sl->flags |= SL_REBUILD;
 
				SetWidgetLoweredState(w, 27, cargo_filter == 0x1FFF);
 
				SetWindowDirty(w);
 
			}
 
		}
 
@@ -409,12 +428,22 @@ static void PlayerStationsWndProc(Window
 
		}
 
		break;
 

	
 
	case WE_CREATE: /* set up resort timer */
 
	case WE_CREATE: { /* set up resort timer */
 
		int i;
 
		for (i = 0; i < 5; i++) {
 
			if (HASBIT(facilities, i)) LowerWindowWidget(w, i + 6);
 
		}
 
		for (i = 0; i < NUM_CARGO; i++) {
 
			if (HASBIT(cargo_filter, i)) LowerWindowWidget(w, i + 12);
 
		}
 
		SetWidgetLoweredState(w, 26, facilities == (FACIL_TRAIN | FACIL_TRUCK_STOP | FACIL_BUS_STOP | FACIL_AIRPORT | FACIL_DOCK));
 
		SetWidgetLoweredState(w, 27, cargo_filter == 0x1FFF);
 
		sl->sort_list = NULL;
 
		sl->flags = SL_REBUILD;
 
		sl->sort_type = 0;
 
		sl->resort_timer = DAY_TICKS * PERIODIC_RESORT_DAYS;
 
		break;
 
	}
 

	
 
	case WE_RESIZE:
 
		w->vscroll.cap += e->we.sizing.diff.y / 10;