~lubuntu-software-center-team/lubuntu-software-center/vala-port

« back to all changes in this revision

Viewing changes to db-build/dbbuild.vala

  • Committer: Stephen Smally
  • Date: 2012-07-05 10:59:44 UTC
  • Revision ID: eco.stefi@fastwebnet.it-20120705105944-354p3ovbsqpswk9y
Fixed some UI issues (updating location label), speeded up database building

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
 
2
2
using PackageKit;
3
3
using SQLHeavy;
 
4
using Gtk; // Needed for icontheme support
4
5
using Menu;
5
6
 
6
7
class AppInstallPackage {
36
37
    private KeyFile keys;
37
38
    private string desktop_dir;
38
39
    private MenuDir[] menu_dirs;
39
 
    private Gee.HashMap<string, AppInstallPackage> packages;
 
40
    public Gee.HashMap<string, AppInstallPackage> packages;
 
41
    public IconTheme theme;
40
42
    
41
43
    public void add_pkg (Package pk, Transaction trs) {
42
44
        AppInstallPackage app_pkg = packages[pk.get_name()];
44
46
        if (app_pkg.summary == "") {
45
47
                        app_pkg.summary = pk.get_summary();
46
48
                }
47
 
                if (app_pkg.icon == "") {
 
49
                if (app_pkg.icon == "" || ! theme.has_icon (app_pkg.icon)) {
48
50
                        app_pkg.icon = "applications-other";
49
51
                }
50
52
        foreach (string dir in app_pkg.directories) {
104
106
    }
105
107
    
106
108
    public DbBuilder (Database db) {
 
109
                theme = new IconTheme();
 
110
                theme.append_search_path ("/usr/share/app-install/icons/");
 
111
                
107
112
        packages = new Gee.HashMap<string, AppInstallPackage> ();
108
113
        
109
114
        desktop_dir = "/usr/share/app-install/desktop/";
150
155
string db_filename = null;
151
156
 
152
157
void pkg_received (Package pkg) {
153
 
    pkgs += pkg;
 
158
        if (pkg != null) {
 
159
            dbbuilder.add_pkg (pkg, trans);
 
160
        }
154
161
}
155
162
 
156
163
const OptionEntry[] entries = {
162
169
 
163
170
int main (string[] args) {
164
171
    pkgs = {};
 
172
    string[] ids = {};
165
173
    
166
174
    OptionContext context = new OptionContext ("Build a Lsc (Light Software Center) Database");
167
175
    context.add_main_entries (entries, null);
187
195
    
188
196
    stdout.printf ("Querying PackageKit...\n");
189
197
    
 
198
    foreach (string s in dbbuilder.packages.keys) {
 
199
                ids += s;
 
200
        }
 
201
        ids += null;
 
202
    
190
203
    try {
191
 
        Bitfield field;
192
 
        field = Filter.bitfield_from_string ("arch");
193
 
        Results result = client.get_packages(field, null, null);
 
204
        Results result = client.resolve(0, ids, null, null);
194
205
        result.get_package_array().foreach ((Func) pkg_received);
195
206
    } catch (GLib.Error e) {
196
207
        GLib.error ("Error: %s\n", e.message);
197
208
    }
198
 
    
199
 
    stdout.printf ("Building database...\n");
200
 
    
201
 
    foreach (Package pk in pkgs) {
202
 
       dbbuilder.add_pkg (pk, trans);
203
 
    }
204
 
    
 
209
 
205
210
    try {
206
211
        trans.commit();
207
212
    } catch (SQLHeavy.Error e) {