diff options
author | Jussi Kukkonen <jussi.kukkonen@intel.com> | 2013-03-06 15:22:05 +0200 |
---|---|---|
committer | Jussi Kukkonen <jussi.kukkonen@intel.com> | 2013-03-07 11:19:23 +0200 |
commit | 1b8d6318fddb67b1edbd2d999e84dfa3f8f8c6a1 (patch) | |
tree | e03ccaa84b4d69142d5c3a972a09f0f0c5502e46 /src | |
parent | 10192db46e9965f18a404577894f986b258d2f66 (diff) | |
download | dleyna-control-1b8d6318fddb67b1edbd2d999e84dfa3f8f8c6a1.tar.gz |
[Model] Add "static rows" in the model
This allows inserting a static row into the model. It will be
inserted before the actual search/browse results. This is useful
for BrowseModel that wants to edd e.g. ".."-row for moving up a
directory
Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/msd/msd_generic_model.py | 27 |
1 files changed, 19 insertions, 8 deletions
diff --git a/src/msd/msd_generic_model.py b/src/msd/msd_generic_model.py index e4a72b5..46db9a0 100644 --- a/src/msd/msd_generic_model.py +++ b/src/msd/msd_generic_model.py @@ -125,6 +125,13 @@ class GenericModel(gtk.GenericTreeModel): item.get('URLs', [None])[0], True] + def _set_static_row(self, item): + if(len(self.__items)) > 0: + # Not handling situations where the model is populated already + raise IndexError + self.__items[0] = item + self.__static_items = 1 + def _on_reply(self, items, max_items): # if server does not tell how many results there are, set # a sensible minimum @@ -133,10 +140,11 @@ class GenericModel(gtk.GenericTreeModel): self.min_items_default) # 'add' empty rows before actual results - index = self.__request_start + self.__result_count + index = (self.__request_start + + self.__result_count + + self.__static_items) if index > len(self.__items): self.__items.set_length(index) - # add actual fetched results for item in items: self.__items[index] = self.__create_row (item) @@ -144,11 +152,13 @@ class GenericModel(gtk.GenericTreeModel): # 'add' (or remove) empty rows after actual results if max_items != 0: - self.__items.set_length(max_items) + self.__items.set_length(max_items + self.__static_items) self.__result_count = self.__result_count + len(items) print ("%d rows fetched (%d/%d rows cached)" - % (len(items), self.__items.get_cached_item_count(), len(self.__items))) + % (len(items), + self.__items.get_cached_item_count(), + len(self.__items))) # Was a new request made while this one was executed? if (self.__restart_count > 0): @@ -208,6 +218,7 @@ class GenericModel(gtk.GenericTreeModel): on_changed = self.__on_changed, on_deleted = self.__on_deleted) self.__fetch_in_progress = False + self.__static_items = 0 def get_request_range (self): return self.__request_range @@ -216,9 +227,9 @@ class GenericModel(gtk.GenericTreeModel): self.__request_range = [start, end] # skip any rows in beginning or end that are already loaded try: - while self.__items[start][self.COL_LOADED] and start <= end: + while self.__items[start + self.__static_items][self.COL_LOADED] and start <= end: start = start + 1 - while self.__items[end][self.COL_LOADED] and start <= end: + while self.__items[end + self.__static_items][self.COL_LOADED] and start <= end: end = end - 1 except: pass @@ -233,8 +244,8 @@ class GenericModel(gtk.GenericTreeModel): self.__start_fetch (start, end - start + 1) def flush(self): - self.__items.set_length (0) - self.set_request_range (0, GenericModel.max_items_per_fetch - 1) + self.__items.set_length(0 + self.__static_items) + self.set_request_range(0, GenericModel.max_items_per_fetch - 1) def on_get_flags(self): return gtk.TREE_MODEL_LIST_ONLY |