summaryrefslogtreecommitdiff
path: root/src/music_gui.cpp
diff options
context:
space:
mode:
authoryexo <yexo@openttd.org>2009-09-01 21:30:14 +0000
committeryexo <yexo@openttd.org>2009-09-01 21:30:14 +0000
commitf3d2be7581420baf219779c9bdd491ac81ab8bd7 (patch)
treea0a8a592b9ba7d81801aa67f1ba9372687308813 /src/music_gui.cpp
parent2db855e00c26034b74825a70f8e6137a06c5c031 (diff)
downloadopenttd-f3d2be7581420baf219779c9bdd491ac81ab8bd7.tar.xz
(svn r17360) -Fix (r17329): the 'track' and 'title' texts were lost in the conversion to nested widgets
Diffstat (limited to 'src/music_gui.cpp')
-rw-r--r--src/music_gui.cpp60
1 files changed, 49 insertions, 11 deletions
diff --git a/src/music_gui.cpp b/src/music_gui.cpp
index ebdfbe2c7..3c64c8842 100644
--- a/src/music_gui.cpp
+++ b/src/music_gui.cpp
@@ -407,7 +407,10 @@ enum MusicWidgets {
MW_GAUGE,
MW_EFFECT_VOL,
MW_BACKGROUND,
- MW_INFO,
+ MW_TRACK,
+ MW_TRACK_NR,
+ MW_TRACK_TITLE,
+ MW_TRACK_NAME,
MW_SHUFFLE,
MW_PROGRAMME,
MW_ALL,
@@ -442,6 +445,25 @@ struct MusicWindow : public Window {
d.height += padding.height;
*size = maxdim(*size, d);
} break;
+
+ case MW_TRACK_NR: {
+ Dimension d = GetStringBoundingBox(STR_MUSIC_TRACK_NONE);
+ d.width += WD_FRAMERECT_LEFT + WD_FRAMERECT_RIGHT;
+ d.height += WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM;
+ *size = maxdim(*size, d);
+ } break;
+
+ case MW_TRACK_NAME: {
+ Dimension d = GetStringBoundingBox(STR_MUSIC_TITLE_NONE);
+ for (int i = 0; i < NUM_SONGS_AVAILABLE; i++) {
+ SetDParam(0, SPECSTR_SONGNAME);
+ SetDParam(1, i);
+ d = maxdim(d, GetStringBoundingBox(STR_MUSIC_TITLE_NAME));
+ }
+ d.width += WD_FRAMERECT_LEFT + WD_FRAMERECT_RIGHT;
+ d.height += WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM;
+ *size = maxdim(*size, d);
+ } break;
}
}
@@ -463,28 +485,37 @@ struct MusicWindow : public Window {
}
break;
- case MW_INFO: {
- GfxFillRect(r.left + 1, r.top + 1, r.right - 1, r.bottom - 1, 0);
+ case MW_TRACK_NR: {
+ GfxFillRect(r.left + 1, r.top + 1, r.right, r.bottom, 0);
StringID str = STR_MUSIC_TRACK_NONE;
if (_song_is_active != 0 && _music_wnd_cursong != 0) {
SetDParam(0, _music_wnd_cursong);
str = (_music_wnd_cursong < 10) ? STR_MUSIC_TRACK_SINGLE_DIGIT : STR_MUSIC_TRACK_DOUBLE_DIGIT;
}
- DrawString(r.left + 3, r.right - 3, r.top + 1, str);
- str = STR_MUSIC_TITLE_NONE;
+ DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, r.top + WD_FRAMERECT_TOP, str);
+ } break;
+
+ case MW_TRACK_NAME: {
+ GfxFillRect(r.left, r.top + 1, r.right - 1, r.bottom, 0);
+ StringID str = STR_MUSIC_TITLE_NONE;
if (_song_is_active != 0 && _music_wnd_cursong != 0) {
str = STR_MUSIC_TITLE_NAME;
SetDParam(0, SPECSTR_SONGNAME);
SetDParam(1, _music_wnd_cursong);
}
- DrawString(r.left, r.right, r.top + 1, str, TC_FROMSTRING, SA_CENTER);
+ DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, r.top + WD_FRAMERECT_TOP, str, TC_FROMSTRING, SA_CENTER);
} break;
case MW_MUSIC_VOL: case MW_EFFECT_VOL: {
DrawString(r.left, r.right, r.top + 1, (widget == MW_MUSIC_VOL) ? STR_MUSIC_MUSIC_VOLUME : STR_MUSIC_EFFECTS_VOLUME, TC_FROMSTRING, SA_CENTER);
int y = (r.top + r.bottom - slider_bar_height) / 2;
DrawFrameRect(r.left, y, r.right, y + slider_bar_height, COLOUR_GREY, FR_LOWERED);
- DrawString(r.left, r.right, r.bottom - FONT_HEIGHT_SMALL, STR_MUSIC_MIN_MAX_RULER, TC_FROMSTRING, SA_CENTER);
+ DrawString(r.left, r.right, r.bottom - FONT_HEIGHT_SMALL, STR_MUSIC_MIN, TC_FROMSTRING, SA_LEFT);
+ DrawString(r.left, r.right, r.bottom - FONT_HEIGHT_SMALL, STR_MUSIC_MAX, TC_FROMSTRING, SA_RIGHT);
+ for (int i = 0; i <= 10; i++) {
+ int x = r.left + (r.right - r.left) * i / 10;
+ DrawFrameRect(x, y + slider_bar_height, x, y + slider_bar_height + 2, COLOUR_DARK_BLUE, FR_NONE);
+ }
y = (r.top + r.bottom - slider_height) / 2;
byte volume = (widget == MW_MUSIC_VOL) ? msf.music_vol : msf.effect_vol;
int x = r.left + (volume * (r.right - r.left) / 127);
@@ -504,11 +535,13 @@ struct MusicWindow : public Window {
case MW_PREV: // skip to prev
if (!_song_is_active) return;
SkipToPrevSong();
+ this->SetDirty();
break;
case MW_NEXT: // skip to next
if (!_song_is_active) return;
SkipToNextSong();
+ this->SetDirty();
break;
case MW_STOP: // stop playing
@@ -540,6 +573,7 @@ struct MusicWindow : public Window {
this->InvalidateWidget(MW_SHUFFLE);
StopMusic();
SelectSongToPlay();
+ this->SetDirty();
break;
case MW_PROGRAMME: // show track selection
@@ -555,6 +589,7 @@ struct MusicWindow : public Window {
InvalidateWindow(WC_MUSIC_TRACK_SELECTION, 0);
StopMusic();
SelectSongToPlay();
+ this->SetDirty();
break;
}
}
@@ -590,12 +625,15 @@ static const NWidgetPart _nested_music_window_widgets[] = {
NWidget(WWT_PANEL, COLOUR_GREY, MW_BACKGROUND),
NWidget(NWID_HORIZONTAL), SetPIP(6, 0, 6),
NWidget(WWT_TEXTBTN, COLOUR_GREY, MW_SHUFFLE), SetMinimalSize(50, 8), SetDataTip(STR_MUSIC_SHUFFLE, STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE),
- NWidget(NWID_VERTICAL), SetPadding(0, 3, 3, 3),
- NWidget(NWID_SPACER), SetMinimalSize(0, 9),
- NWidget(WWT_PANEL, COLOUR_GREY, MW_INFO), SetMinimalSize(182, 9), SetFill(false, false), EndContainer(),
+ NWidget(NWID_VERTICAL), SetPadding(0, 0, 3, 3),
+ NWidget(WWT_LABEL, COLOUR_GREY, MW_TRACK), SetDataTip(STR_MUSIC_TRACK, STR_NULL),
+ NWidget(WWT_PANEL, COLOUR_GREY, MW_TRACK_NR), EndContainer(),
+ EndContainer(),
+ NWidget(NWID_VERTICAL), SetPadding(0, 3, 3, 0),
+ NWidget(WWT_LABEL, COLOUR_GREY, MW_TRACK_TITLE), SetFill(true, false), SetDataTip(STR_MUSIC_XTITLE, STR_NULL),
+ NWidget(WWT_PANEL, COLOUR_GREY, MW_TRACK_NAME), EndContainer(),
EndContainer(),
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, MW_PROGRAMME), SetMinimalSize(50, 8), SetDataTip(STR_MUSIC_PROGRAM, STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION),
- NWidget(NWID_SPACER), SetFill(true, false),
EndContainer(),
EndContainer(),
NWidget(NWID_HORIZONTAL, NC_EQUALSIZE),