Bug #1530 ยป 1530.patch
| client/gui-qt/shortcuts.cpp | ||
|---|---|---|
|
**************************************************************************/
|
||
|
void fc_shortcuts_dialog::init()
|
||
|
{
|
||
|
fc_shortcut *sc;
|
||
|
QPushButton *but;
|
||
|
QScrollArea *scroll;
|
||
|
QSize size;
|
||
|
QString desc;
|
||
|
QWidget *widget;
|
||
|
shortcut_id id;
|
||
|
widget = new QWidget(this);
|
||
|
scroll = new QScrollArea(this);
|
||
|
scroll->setWidgetResizable(true);
|
||
|
scroll_layout = new QVBoxLayout;
|
||
|
populate_scroll_layout();
|
||
|
main_layout = new QVBoxLayout;
|
||
|
foreach (sc, fc_shortcuts::sc()->hash) {
|
||
|
id = fc_shortcuts::sc()->get_id(sc);
|
||
|
desc = fc_shortcuts::sc()->get_desc(id);
|
||
|
add_option(sc);
|
||
|
}
|
||
|
widget->setProperty("doomed", true);
|
||
|
widget->setLayout(scroll_layout);
|
||
|
scroll->setWidget(widget);
|
||
| ... | ... | |
|
}
|
||
|
/**********************************************************************//**
|
||
|
Adds shortcut option for dialog
|
||
|
Adds all the shortcut options to the dialog's scroll_layout
|
||
|
**************************************************************************/
|
||
|
void fc_shortcuts_dialog::populate_scroll_layout()
|
||
|
{
|
||
|
fc_shortcut *sc;
|
||
|
shortcut_id id;
|
||
|
QString desc;
|
||
|
foreach (sc, fc_shortcuts::sc()->hash) {
|
||
|
id = fc_shortcuts::sc()->get_id(sc);
|
||
|
desc = fc_shortcuts::sc()->get_desc(id);
|
||
|
add_option(sc);
|
||
|
}
|
||
|
}
|
||
|
/**********************************************************************//**
|
||
|
Adds a shortcut option to the dialog's scroll_layout
|
||
|
**************************************************************************/
|
||
|
void fc_shortcuts_dialog::add_option(fc_shortcut *sc)
|
||
|
{
|
||
| ... | ... | |
|
**************************************************************************/
|
||
|
void fc_shortcuts_dialog::refresh()
|
||
|
{
|
||
|
QLayout *layout;
|
||
|
QLayoutItem *item;
|
||
|
QLayoutItem *box_layout_item;
|
||
|
QLayoutItem *row_layout_item;
|
||
|
QWidget *widget;
|
||
|
layout = main_layout;
|
||
|
while ((item = layout->takeAt(0))) {
|
||
|
if (item->layout() != nullptr) {
|
||
|
// Nothing
|
||
|
} else if ((widget = item->widget()) != nullptr) {
|
||
|
widget->hide();
|
||
|
delete widget;
|
||
|
} else {
|
||
|
delete item;
|
||
|
QLayout *box_layout; // corresponds to one of the hb's in add_option()
|
||
|
// clear out the scroll_layout
|
||
|
while ((row_layout_item = scroll_layout->takeAt(0)) != nullptr) {
|
||
|
box_layout = row_layout_item->layout();
|
||
|
while ((box_layout_item = box_layout->takeAt(0)) != nullptr) {
|
||
|
widget = box_layout_item->widget();
|
||
|
if (widget != nullptr) { // this test may not be needed
|
||
|
delete widget;
|
||
|
}
|
||
|
delete box_layout_item;
|
||
|
}
|
||
|
delete row_layout_item;
|
||
|
}
|
||
|
delete main_layout;
|
||
|
init();
|
||
|
// re-populate the scroll_layout
|
||
|
populate_scroll_layout();
|
||
|
}
|
||
|
/**********************************************************************//**
|
||
| client/gui-qt/shortcuts.h | ||
|---|---|---|
|
QMap<shortcut_id, fc_shortcut*> *hashcopy;
|
||
|
void add_option(fc_shortcut *sc);
|
||
|
void init();
|
||
|
void populate_scroll_layout();
|
||
|
void refresh();
|
||
|
public:
|
||
|
fc_shortcuts_dialog(QWidget *parent = 0);
|
||