~ubuntu-branches/ubuntu/quantal/shotwell/quantal

« back to all changes in this revision

Viewing changes to src/alien_db/AlienDatabaseHandler.vala

  • Committer: Package Import Robot
  • Author(s): Robert Ancell
  • Date: 2012-02-21 13:52:58 UTC
  • mto: This revision was merged to the branch mainline in revision 47.
  • Revision ID: package-import@ubuntu.com-20120221135258-ao9jiib5qicomq7q
Tags: upstream-0.11.92
ImportĀ upstreamĀ versionĀ 0.11.92

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/* Copyright 2011 Yorba Foundation
2
 
 *
3
 
 * This software is licensed under the GNU Lesser General Public License
4
 
 * (version 2.1 or later).  See the COPYING file in this distribution. 
5
 
 */
6
 
 
7
 
namespace AlienDb {
8
 
 
9
 
/**
10
 
 * The core handler that is responsible for handling the different plugins
11
 
 * and dispatching requests to the relevant driver.
12
 
 */
13
 
public class AlienDatabaseHandler {
14
 
    private static AlienDatabaseHandler instance;
15
 
    private Gee.Map<AlienDatabaseDriverID?, AlienDatabaseDriver> driver_map;
16
 
    
17
 
    /**
18
 
     * Initialisation method that creates a singleton instance.
19
 
     */
20
 
    public static void init() {
21
 
        // Check for null in case init() is called more than once.
22
 
        if(instance == null)
23
 
            instance = new AlienDatabaseHandler();
24
 
    }
25
 
    
26
 
    /**
27
 
     * Termination method that clears the singleton instance.
28
 
     */
29
 
    public static void terminate() {
30
 
        instance = null;
31
 
    }
32
 
    
33
 
    public static AlienDatabaseHandler get_instance() {
34
 
        return instance;
35
 
    }
36
 
    
37
 
    private AlienDatabaseHandler() {
38
 
        driver_map = new Gee.HashMap<AlienDatabaseDriverID?, AlienDatabaseDriver>(
39
 
            AlienDatabaseDriverID.hash, AlienDatabaseDriverID.equal, AlienDatabaseDriverID.equal
40
 
        );
41
 
    }
42
 
    
43
 
    public void register_driver(AlienDatabaseDriver driver) {
44
 
        driver_map.set(driver.get_id(), driver);
45
 
    }
46
 
    
47
 
    public void unregister_driver(AlienDatabaseDriver driver) {
48
 
        driver_map.unset(driver.get_id());
49
 
    }
50
 
    
51
 
    public Gee.Collection<AlienDatabaseDriver> get_drivers() {
52
 
        return driver_map.values;
53
 
    }
54
 
    
55
 
    public AlienDatabaseDriver get_driver(AlienDatabaseDriverID driver_id) {
56
 
        AlienDatabaseDriver driver = driver_map.get(driver_id);
57
 
        if (driver == null)
58
 
            warning("Could not find driver for id: %s", driver_id.id);
59
 
        return driver;
60
 
    }
61
 
    
62
 
    public Gee.Collection<DiscoveredAlienDatabase> get_discovered_databases() {
63
 
        Gee.ArrayList<DiscoveredAlienDatabase> discovered_databases =
64
 
            new Gee.ArrayList<DiscoveredAlienDatabase>();
65
 
        foreach (AlienDatabaseDriver driver in driver_map.values) {
66
 
            discovered_databases.add_all(driver.get_discovered_databases());
67
 
        }
68
 
        return discovered_databases;
69
 
    }
70
 
    
71
 
    public void add_menu_entries(Gtk.UIManager ui, string placeholder) {
72
 
        foreach (AlienDatabaseDriver driver in get_drivers()) {
73
 
            ui.add_ui(ui.new_merge_id(), placeholder,
74
 
                driver.get_menu_name(),
75
 
                driver.get_action_entry().name,
76
 
                Gtk.UIManagerItemType.MENUITEM, false);
77
 
        }
78
 
    }
79
 
}
80
 
 
81
 
}
82