63
PlacesResultsController::AddResultToGroup (const char *groupname,
67
PlacesGroup *group = _groups[groupname];
58
PlacesResultsController::AddGroup (PlaceEntryGroup& group)
60
PlacesGroupController *controller = new PlacesGroupController (group);
62
_id_to_group[group.GetId ()] = controller;
63
_results_view->AddGroup (controller->GetGroup ());
64
_results_view->QueueRelayout ();
68
PlacesResultsController::AddResult (PlaceEntryGroup& group, PlaceEntryResult& result)
70
PlacesGroupController *controller = _id_to_group[group.GetId ()];
72
// We don't complain here because there are some shortcuts that the PlacesView takes which
73
// mean we sometimes receive requests that we can't process
77
controller->AddResult (group, result);
81
PlacesResultsController::RemoveResult (PlaceEntryGroup& group, PlaceEntryResult& result)
83
PlacesGroupController *controller = _id_to_group[group.GetId ()];
85
// We don't complain here because there are some shortcuts that the PlacesView takes which
86
// mean we sometimes receive requests that we can't process
90
controller->RemoveResult (group, result);
94
PlacesResultsController::Clear ()
96
std::map <const void *, PlacesGroupController *>::iterator it, eit = _id_to_group.end ();
71
group = CreateGroup (groupname);
74
group->GetLayout ()->AddView (tile, 1, nux::eLeft, nux::eFull);
76
_tile_group_relations[_id] = groupname;
78
// Should also catch the onclick signal here on each tile,
79
// so we can activate or do whatever it is we need to do
81
if (group->IsVisible () == false)
83
group->SetVisible (true);
91
PlacesResultsController::RemoveResultFromGroup (const char *groupname,
94
PlacesTile *tile = _tiles[_id];
95
PlacesGroup *group = _groups[groupname];
101
group->GetLayout ()->RemoveChildObject (tile);
103
if (group->GetLayout ()->GetChildren ().empty ())
105
group->SetVisible (false);
114
g_warning ("Unable to remove '%p' from group '%s': Unable to find tile",
120
g_warning ("Unable to remove '%p' from group '%s': Unable to find group",
125
_tile_group_relations.erase (_id);
129
PlacesResultsController::RemoveResult (void *_id)
131
RemoveResultFromGroup (_tile_group_relations [_id].c_str (), _id);
135
PlacesResultsController::Clear ()
137
std::map<std::string, PlacesGroup *>::iterator it;
139
for (it = _groups.begin (); it != _groups.end (); ++it)
141
PlacesGroup *group = dynamic_cast <PlacesGroup *> (it->second);
145
_results_view->RemoveGroup (group);
146
group->UnReference ();
150
_groups.erase (_groups.begin (), _groups.end ());
151
_tiles.erase (_tiles.begin (), _tiles.end ());
152
_tile_group_relations.erase (_tile_group_relations.begin (), _tile_group_relations.end ());
156
PlacesResultsController::CreateGroup (const char *groupname, const char *icon)
158
PlacesSettings *settings = PlacesSettings::GetDefault ();
160
PlacesGroup *newgroup = new PlacesGroup (NUX_TRACKER_LOCATION);
161
newgroup->SinkReference ();
162
newgroup->SetTitle (groupname);
163
newgroup->SetEmblem (icon);
164
newgroup->SetRowHeight (92);
165
newgroup->SetItemDetail (1, 100);
166
newgroup->SetExpanded (true);
168
nux::GridHLayout *layout = new nux::GridHLayout (NUX_TRACKER_LOCATION);
169
layout->ForceChildrenSize (true);
170
layout->SetChildrenSize (settings->GetDefaultTileWidth (), 100);
171
layout->EnablePartialVisibility (false);
173
layout->SetVerticalExternalMargin (4);
174
layout->SetHorizontalExternalMargin (4);
175
layout->SetVerticalInternalMargin (4);
176
layout->SetHorizontalInternalMargin (4);
177
layout->SetHeightMatchContent (true);
179
newgroup->AddLayout (layout);
180
newgroup->SetVisible (false);
182
_groups[groupname] = newgroup;
183
_results_view->AddGroup (newgroup);
98
for (it = _id_to_group.begin (); it != eit; ++it)
99
(it->second)->UnReference ();
101
_id_to_group.erase (_id_to_group.begin (), _id_to_group.end ());
103
_results_view->Clear ();
191
111
PlacesResultsController::GetName ()
193
113
return "PlacesResultsController";