diff options
| author | Seif Lotfy <seif@lotfy.com> | 2012-03-19 11:02:10 +0100 |
|---|---|---|
| committer | Seif Lotfy <seif@lotfy.com> | 2012-03-19 11:02:10 +0100 |
| commit | 95073b1c0639780be7c7cebba91eb1affbefc6c5 (patch) | |
| tree | c04d49a1bee22edd4e4710b13bb27cfec79658a9 /extensions/storage-monitor.vala | |
| parent | 3afb7f64debe9001b8f8e34b99b07c81b05e9702 (diff) | |
| download | zeitgeist-95073b1c0639780be7c7cebba91eb1affbefc6c5.tar.gz | |
Storage Monitor Extensions: fix bug lp:950983
Diffstat (limited to 'extensions/storage-monitor.vala')
| -rw-r--r-- | extensions/storage-monitor.vala | 53 |
1 files changed, 43 insertions, 10 deletions
diff --git a/extensions/storage-monitor.vala b/extensions/storage-monitor.vala index 7f6256bf..db546716 100644 --- a/extensions/storage-monitor.vala +++ b/extensions/storage-monitor.vala @@ -112,8 +112,10 @@ namespace Zeitgeist private Sqlite.Statement get_storages_stmt; private Sqlite.Statement store_storage_medium_stmt; + private Sqlite.Statement update_storage_medium_stmt; private Sqlite.Statement insert_unavailable_medium_stmt; private Sqlite.Statement update_medium_state_stmt; + private Sqlite.Statement get_storage_medium_id_stmt; private NetworkMonitor network; private uint watch_connman; @@ -236,7 +238,7 @@ namespace Zeitgeist database.assert_query_success (rc, "Storage retrieval query error"); sql = """ - INSERT OR REPLACE INTO storage ( + INSERT INTO storage ( value, state, icon, display_name ) VALUES ( ?, ?, ?, ? @@ -245,6 +247,14 @@ namespace Zeitgeist database.assert_query_success (rc, "Storage insertion query error"); sql = """ + UPDATE storage SET + state=?, icon=?, display_name=? + WHERE value=? + """; + rc = db.prepare_v2 (sql, -1, out update_storage_medium_stmt); + database.assert_query_success (rc, "Storage update query error"); + + sql = """ INSERT INTO storage ( state, value ) VALUES ( @@ -262,6 +272,13 @@ namespace Zeitgeist rc = db.prepare_v2 (sql, -1, out update_medium_state_stmt); database.assert_query_success (rc, "update_medium_state_stmt error"); + + sql = """ + SELECT id FROM storage WHERE value=? + """; + rc = db.prepare_v2 (sql, -1, out get_storage_medium_id_stmt); + database.assert_query_success (rc, + "get_storage_medium_id_stmt error"); } public override void pre_insert_events (GenericArray<Event?> events, @@ -355,15 +372,31 @@ namespace Zeitgeist string display_name) { debug ("VOLUME ADDED: %s".printf(medium_name)); - store_storage_medium_stmt.reset (); - store_storage_medium_stmt.bind_text (1, medium_name); - store_storage_medium_stmt.bind_int (2, 1); - store_storage_medium_stmt.bind_text (3, icon); - store_storage_medium_stmt.bind_text (4, display_name); - - int rc = store_storage_medium_stmt.step (); - database.assert_query_success (rc, "add_storage_medium", - Sqlite.DONE); + + get_storage_medium_id_stmt.reset (); + get_storage_medium_id_stmt.bind_text (1, medium_name); + if (get_storage_medium_id_stmt.step () == Sqlite.ROW) + { + update_storage_medium_stmt.reset (); + update_storage_medium_stmt.bind_int (1, 1); + update_storage_medium_stmt.bind_text (2, icon); + update_storage_medium_stmt.bind_text (3, display_name); + update_storage_medium_stmt.bind_text (4, medium_name); + int rc = update_storage_medium_stmt.step (); + database.assert_query_success (rc, "update_storage_medium", + Sqlite.DONE); + } + else + { + store_storage_medium_stmt.reset (); + store_storage_medium_stmt.bind_text (1, medium_name); + store_storage_medium_stmt.bind_int (2, 1); + store_storage_medium_stmt.bind_text (3, icon); + store_storage_medium_stmt.bind_text (4, display_name); + int rc = store_storage_medium_stmt.step (); + database.assert_query_success (rc, "add_storage_medium", + Sqlite.DONE); + } storage_available (medium_name, StorageMedia.to_variant ( medium_name, true, icon, display_name)); |
