Add the preview pane for the campaign dialog.

The pane still needs quite a bit tuning and the extra layout phase looks
rather bad.
This commit is contained in:
Mark de Wever 2009-03-01 16:24:42 +00:00
parent fb6ea9965e
commit 978aa913ad
3 changed files with 73 additions and 2 deletions

View file

@ -95,10 +95,46 @@
border = "all"
border_size = 5
vertical_alignment = "top"
# FIXME show the addon pane.
[spacer]
[/spacer]
[panel]
definition = "default"
[grid]
[row]
grow_factor = 0
[column]
[scroll_label]
id = "description"
definition = "default"
[/scroll_label]
[/column]
[/row]
[row]
grow_factor = 1
[column]
horizontal_alignment = "center"
vertical_alignment = "top"
[image]
id = "image"
definition = "default"
[/image]
[/column]
[/row]
[/grid]
[/panel]
[/column]

View file

@ -16,12 +16,40 @@
#include "gui/dialogs/campaign_selection.hpp"
#include "gui/dialogs/helper.hpp"
#include "gui/widgets/image.hpp"
#include "gui/widgets/listbox.hpp"
#include "gui/widgets/scroll_label.hpp"
#include "gui/widgets/settings.hpp"
#include "gui/widgets/window.hpp"
namespace gui2 {
void tcampaign_selection::campaign_selected(twindow& window)
{
tlistbox* list = dynamic_cast<tlistbox*>(
window.find_widget("campaign_list", false));
VALIDATE(list, missing_widget("campaign_list"));
// Get the selected row
config::child_list::const_iterator itor = begin_
+ list->get_selected_row();
tscroll_label* scroll_label = dynamic_cast<tscroll_label*>(
window.find_widget("description", false));
if(scroll_label) {
scroll_label->set_label((**itor)["description"]);
}
timage* image = dynamic_cast<timage*>(
window.find_widget("image", false));
if(image) {
image->set_label((**itor)["image"]);
}
window.invalidate_layout();
}
twindow* tcampaign_selection::build_window(CVideo& video)
{
return build(video, get_id(CAMPAIGN_SELECTION));
@ -33,6 +61,9 @@ void tcampaign_selection::pre_show(CVideo& /*video*/, twindow& window)
window.find_widget("campaign_list", false));
VALIDATE(list, missing_widget("campaign_list"));
list->set_callback_value_change(dialog_callback
<tcampaign_selection, &tcampaign_selection::campaign_selected>);
for(config::child_list::const_iterator itor = begin_;
itor != end_; ++itor) {
@ -42,6 +73,7 @@ void tcampaign_selection::pre_show(CVideo& /*video*/, twindow& window)
list->add_row(item);
}
campaign_selected(window);
}
void tcampaign_selection::post_show(twindow& window)

View file

@ -37,6 +37,9 @@ public:
int get_choice() const { return choice_; }
/** Called when another campaign is selected. */
void campaign_selected(twindow& window);
private:
/** Inherited from tdialog. */