elexis
8f1b37b216
Remove m_SelectedDef, m_SelectedColumnOrder and m_HeadingHeight. Use GetSetting and SetSetting instead. Thus implement selecting a column / column order sprite from JS correctly. Since the actual list sorting is done in JS, only the column header sprites were inaccurate. Remove "selected_def" since that is redundant with "selected_column". Merge "selected_column" with "default_column" (and "selected_column_order" with "default_column_order") since all properties provided in XML pages are defaults and to remove the copying on init. Rename "def" to "column" and "ObjectDef" to "COListColumn". Replace 30px header height hardcoded in the C++ with an option set by the style. Remove the unneeded requirement to specify a "list_name". Thus rename "list_name" to "list_month" in the replay menu. Remove unneeded "list_" prefix and substr(5) in column checks. Use ranged loops. Fix typo "Avalible". Add an error message if the GUI style doesn't specify the selected column order. This was SVN commit r18652.
74 lines
1.7 KiB
C++
74 lines
1.7 KiB
C++
/* Copyright (C) 2016 Wildfire Games.
|
|
* This file is part of 0 A.D.
|
|
*
|
|
* 0 A.D. is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation, either version 2 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* 0 A.D. is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with 0 A.D. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
#ifndef INCLUDED_COLIST
|
|
#define INCLUDED_COLIST
|
|
|
|
#include "GUI.h"
|
|
#include "CList.h"
|
|
|
|
/**
|
|
* Represents a column.
|
|
*/
|
|
struct COListColumn
|
|
{
|
|
CColor m_TextColor;
|
|
CStr m_Id;
|
|
float m_Width;
|
|
CStrW m_Heading;
|
|
|
|
};
|
|
|
|
/**
|
|
* Multi-column list. One row can be selected by the user.
|
|
* Individual cells are clipped if the contained text is too long.
|
|
*
|
|
* The list can be sorted dynamically by JS code when a
|
|
* heading is clicked.
|
|
* A scroll-bar will appear when needed.
|
|
*/
|
|
class COList : public CList
|
|
{
|
|
GUI_OBJECT(COList)
|
|
|
|
public:
|
|
COList();
|
|
|
|
protected:
|
|
void SetupText();
|
|
void HandleMessage(SGUIMessage& Message);
|
|
|
|
/**
|
|
* Handle the \<item\> tag.
|
|
*/
|
|
virtual bool HandleAdditionalChildren(const XMBElement& child, CXeromyces* pFile);
|
|
|
|
void DrawList(const int& selected, const CStr& _sprite, const CStr& _sprite_selected, const CStr& _textcolor);
|
|
|
|
virtual CRect GetListRect() const;
|
|
|
|
/**
|
|
* Available columns.
|
|
*/
|
|
std::vector<COListColumn> m_Columns;
|
|
|
|
private:
|
|
// Width of space available for columns
|
|
float m_TotalAvailableColumnWidth;
|
|
};
|
|
|
|
#endif // INCLUDED_COLIST
|