24
25
OTHER; // Installed or so
28
public class LscCategory : Object {
31
public string summary;
35
public LscCategory (string id, string name, string summary, string icon, int records = 0) {
38
this.summary = summary;
40
this.records = records;
44
public class LscApp : Object {
45
public string id { get; private set; } // A valid id retrieved from a PkPackage
46
public string name { get; private set; }
47
public string summary { get; private set; }
48
public string icon { get; private set; }
50
public LscApp (string id, string name, string summary, string icon) {
53
this.summary = summary;
27
58
public class AppsManager : Object {
29
public signal void app_added (Package app);
30
public signal void category_added (string category, string group);
60
public signal void app_added (LscApp app);
61
public signal void category_added (LscCategory cat);
31
62
public signal void loading_started (string text);
32
63
public signal void loading_finished (LoadingType load);
33
64
public signal void details_received (Package pkg, Details details);
37
68
private Control control;
38
69
private Cancellable transaction;
72
private Database database;
41
75
public string[] icon_table;
43
77
public void get_pkgs_cb (Progress progress, ProgressType type) {
46
public void get_pkgs (string filters) {
48
filter = Filter.bitfield_from_string(filters);
49
loading_started("Loading packages");
51
client.get_packages_async.begin(filter, null, (p) => {
52
if (p.package != null) {
53
stdout.printf("Get package: %s\n", p.package.get_name());
57
loading_finished(LoadingType.PACKAGES);
80
public void get_pkgs (string category) {
82
Query get_query = database.prepare ("SELECT * FROM '%s';".printf (category));
83
QueryResult result = get_query.execute ();
85
for (int record = 1; ! result.finished; record++, result.next ()) {
86
app_added (new LscApp (
87
result.fetch_string (0),
88
result.fetch_string (1),
89
result.fetch_string (2),
90
result.fetch_string (3)));
92
} catch (GLib.Error e) {
93
GLib.error ("Error retrieving packages: %s\n", e.message);
61
98
public void search_for_packages (string filters, string name) {
63
100
filter = Filter.bitfield_from_string(filters);
64
101
loading_started("Loading packages");
65
client.search_names_async(filter, {name}, null, (pkg) => {
102
client.search_names_async(filter, name, (pkg) => {
66
103
if (pkg.package != null) {
67
app_added(pkg.package);
104
//app_added(pkg.package);
69
106
while (Gtk.events_pending())
70
107
Gtk.main_iteration();
72
109
loading_finished(LoadingType.PACKAGES);
76
113
public void get_details (string pkg_id) {
77
client.get_details_async({pkg_id},
114
client.get_details_async(pkg_id,
81
118
Results contains = client.generic_finish(res);
82
details_received(get_package_from_id(pkg_id), contains.get_details_array()[0]);
119
details_received(get_package_from_id(pkg_id), (Details) contains.get_details_array()[0]);
86
123
public Package get_package_from_id (string pkg_id) {
87
124
Results res = client.resolve(Filter.bitfield_from_string(""),
91
return res.get_package_array()[0];
94
private void fill_icon_table () {
128
return (Package) res.get_package_array()[0];
97
131
public void get_categories () {
98
/* Need a wrapper for /usr/share/app-install/desktop/applications.menu*/
100
category_added("applications-accessories", "Accessories");
101
category_added("applications-internet", "Internet");
102
category_added("applications-office", "Office");
103
category_added("applications-multimedia", "Multimedia");
104
category_added("applications-development", "Development");
105
category_added("category-show-all", "All");
133
Query cat_query = database.prepare ("SELECT * FROM 'DIRECTORIES';");
134
QueryResult result = cat_query.execute ();
136
for (int record = 1; ! result.finished; record++, result.next ()) {
137
category_added (new LscCategory (result.fetch_string (0),
138
result.fetch_string (1),
139
result.fetch_string (2),
140
result.fetch_string (3), 0));
142
} catch (GLib.Error e) {
143
GLib.error ("Error retrieving packages: %s\n", e.message);
107
146
loading_finished(LoadingType.CATEGORIES);