diff options
author | Eitan Isaacson <eitan@monotonous.org> | 2011-05-28 12:52:20 -0700 |
---|---|---|
committer | Eitan Isaacson <eitan@monotonous.org> | 2011-05-28 12:52:20 -0700 |
commit | 458fb0f30376fa795828bdbf550730057a3c1e24 (patch) | |
tree | 8ac67b1f912bf0e8f9bdebc3ce34a8f03ec88a68 /libcaribou/row-model.vala | |
parent | c0b23433f89b91bb08c5d6da65a26b32ff739baa (diff) | |
download | caribou-458fb0f30376fa795828bdbf550730057a3c1e24.tar.gz |
Add Column model. Use Gee collections (I give up).
Diffstat (limited to 'libcaribou/row-model.vala')
-rw-r--r-- | libcaribou/row-model.vala | 37 |
1 files changed, 29 insertions, 8 deletions
diff --git a/libcaribou/row-model.vala b/libcaribou/row-model.vala index de4456c..291d76c 100644 --- a/libcaribou/row-model.vala +++ b/libcaribou/row-model.vala @@ -1,22 +1,43 @@ namespace Caribou { public class RowModel : GLib.Object { - List<KeyModel> keys; + Gee.ArrayList<ColumnModel> columns; public RowModel () { - keys = new List<KeyModel> (); + columns = new Gee.ArrayList<ColumnModel> (); } - public void add_key (KeyModel key) { - keys.append (key); + internal void add_key (int colnum, KeyModel key) { + int colindex = colnum; + ColumnModel column = null; + + if (colnum < 0) + colindex = columns.size + colnum; + + if (colnum >= columns.size) { + column = new ColumnModel (); + columns.add(column); + } else { + column = columns[colindex]; + } + + column.add_key (key); } - public KeyModel get_key (uint index) { - return keys.nth (index).data; + public KeyModel[] get_keys () { + Gee.ArrayList<KeyModel> keys = new Gee.ArrayList<KeyModel> (); + foreach (ColumnModel column in columns) { + KeyModel[] col_keys = column.get_keys(); + foreach (KeyModel key in col_keys) { + keys.add(key); + } + } + return (KeyModel[]) keys.to_array (); } - public unowned List<weak KeyModel> get_keys () { - return keys; + public ColumnModel[] get_columns () { + return (ColumnModel[]) columns.to_array (); } + } } |