Changeset - r9859:8c15dba58099
[Not reviewed]
master
0 3 0
peter1138 - 16 years ago 2008-08-06 07:10:40
peter1138@openttd.org
(svn r14004) -Codechange: Clean of drop down lists.
Move empty item drawing to base ListItem Draw() function.
Remove String() from base class.
Pass correct width to Draw().
3 files changed with 34 insertions and 40 deletions:
0 comments (0 inline, 0 general)
src/player_gui.cpp
Show inline comments
 
@@ -299,20 +299,25 @@ public:
 

	
 
	virtual ~DropDownListColourItem() {}
 

	
 
	virtual StringID String() const
 
	StringID String() const
 
	{
 
		return _colour_dropdown[this->result];
 
	}
 

	
 
	virtual uint Height(uint width) const
 
	uint Height(uint width) const
 
	{
 
		return 14;
 
	}
 
	
 
	bool Selectable() const
 
	{
 
		return true;
 
	}
 

	
 
	virtual void Draw(int x, int y, uint width, uint height, bool sel) const
 
	void Draw(int x, int y, uint width, uint height, bool sel, int bg_colour) const
 
	{
 
		DrawSprite(SPR_VEH_BUS_SIDE_VIEW, PALETTE_RECOLOR_START + this->result, x + 16, y + 7);
 
		DrawStringTruncated(x + 32, y + 3, this->String(), sel ? TC_WHITE : TC_BLACK, x + width - 30);
 
		DrawStringTruncated(x + 32, y + 3, this->String(), sel ? TC_WHITE : TC_BLACK, width - 30);
 
	}
 
};
 

	
src/widgets/dropdown.cpp
Show inline comments
 
@@ -17,19 +17,18 @@
 
#include "../table/sprites.h"
 
#include "table/strings.h"
 

	
 
StringID DropDownListItem::String() const
 
void DropDownListItem::Draw(int x, int y, uint width, uint height, bool sel, int bg_colour) const
 
{
 
	return STR_NULL;
 
	int c1 = _colour_gradient[bg_colour][3];
 
	int c2 = _colour_gradient[bg_colour][7];
 

	
 
	GfxFillRect(x + 1, y + 3, x + width - 2, y + 3, c1);
 
	GfxFillRect(x + 1, y + 4, x + width - 2, y + 4, c2);
 
}
 

	
 
uint DropDownListItem::Height(uint width) const
 
void DropDownListStringItem::Draw(int x, int y, uint width, uint height, bool sel, int bg_colour) const
 
{
 
	return 10;
 
}
 

	
 
StringID DropDownListStringItem::String() const
 
{
 
	return this->string;
 
	DrawStringTruncated(x + 2, y, this->String(), sel ? TC_WHITE : TC_BLACK, width);
 
}
 

	
 
StringID DropDownListParamStringItem::String() const
 
@@ -38,11 +37,6 @@ StringID DropDownListParamStringItem::St
 
	return this->string;
 
}
 

	
 
void DropDownListItem::Draw(int x, int y, uint width, uint height, bool sel) const
 
{
 
	DrawStringTruncated(x + 2, y, this->String(), sel ? TC_WHITE : TC_BLACK, x + width);
 
}
 

	
 
/**
 
 * Delete all items of a drop down list and the list itself
 
 * @param list List to delete.
 
@@ -106,7 +100,7 @@ struct DropdownWindow : Window {
 
			int item_height = item->Height(width);
 

	
 
			if (y < item_height) {
 
				if (item->masked || item->String() == STR_NULL) return false;
 
				if (item->masked || !item->Selectable()) return false;
 
				value = item->result;
 
				return true;
 
			}
 
@@ -125,7 +119,7 @@ struct DropdownWindow : Window {
 
		int y = 2;
 

	
 
		int sel    = this->selected_index;
 
		int width  = this->widget[0].right - 3;
 
		int width  = this->widget[0].right - 2;
 
		int height = this->widget[0].bottom;
 
		int pos    = this->vscroll.pos;
 

	
 
@@ -139,22 +133,14 @@ struct DropdownWindow : Window {
 
			if (--pos >= 0) continue;
 

	
 
			if (y + item_height < height) {
 
				if (item->String() != STR_NULL) {
 
					if (sel == item->result) GfxFillRect(x + 1, y, x + width, y + item_height - 1, 0);
 
				if (sel == item->result) GfxFillRect(x + 1, y, x + width - 1, y + item_height - 1, 0);
 

	
 
					item->Draw(x, y, width, 10, sel == item->result);
 
				item->Draw(x, y, width, height, sel == item->result, (TextColour)this->widget[0].color);
 

	
 
					if (item->masked) {
 
						GfxFillRect(x, y, x + width, y + item_height - 1,
 
							_colour_gradient[this->widget[0].color][5], FILLRECT_CHECKER
 
						);
 
					}
 
				} else {
 
					int c1 = _colour_gradient[this->widget[0].color][3];
 
					int c2 = _colour_gradient[this->widget[0].color][7];
 

	
 
					GfxFillRect(x + 1, y + 3, x + this->width - 5, y + 3, c1);
 
					GfxFillRect(x + 1, y + 4, x + this->width - 5, y + 4, c2);
 
				if (item->masked) {
 
					GfxFillRect(x, y, x + width - 1, y + item_height - 1,
 
						_colour_gradient[this->widget[0].color][5], FILLRECT_CHECKER
 
					);
 
				}
 
			}
 
			y += item_height;
src/widgets/dropdown_type.h
Show inline comments
 
@@ -19,9 +19,10 @@ public:
 

	
 
	DropDownListItem(int result, bool masked) : result(result), masked(masked) {}
 
	virtual ~DropDownListItem() {}
 
	virtual StringID String() const;
 
	virtual uint Height(uint width) const;
 
	virtual void Draw(int x, int y, uint width, uint height, bool sel) const;
 

	
 
	virtual bool Selectable() const { return false; }
 
	virtual uint Height(uint width) const { return 10; }
 
	virtual void Draw(int x, int y, uint width, uint height, bool sel, int bg_colour) const;
 
};
 

	
 
/**
 
@@ -34,7 +35,9 @@ public:
 
	DropDownListStringItem(StringID string, int result, bool masked) : DropDownListItem(result, masked), string(string) {}
 
	virtual ~DropDownListStringItem() {}
 

	
 
	StringID String() const;
 
	virtual bool Selectable() const { return true; }
 
	virtual void Draw(int x, int y, uint width, uint height, bool sel, int bg_colour) const;
 
	virtual StringID String() const { return this->string; }
 
};
 

	
 
/**
 
@@ -47,8 +50,8 @@ public:
 
	DropDownListParamStringItem(StringID string, int result, bool masked) : DropDownListStringItem(string, result, masked) {}
 
	virtual ~DropDownListParamStringItem() {}
 

	
 
	StringID String() const;
 
	void SetParam(uint index, uint64 value) { decode_params[index] = value; }
 
	virtual StringID String() const;
 
	virtual void SetParam(uint index, uint64 value) { decode_params[index] = value; }
 
};
 

	
 
/**
0 comments (0 inline, 0 general)