summaryrefslogtreecommitdiff
path: root/extensions/storage-monitor.vala
diff options
context:
space:
mode:
authorSeif Lotfy <seif@lotfy.com>2012-03-19 11:02:10 +0100
committerSeif Lotfy <seif@lotfy.com>2012-03-19 11:02:10 +0100
commit95073b1c0639780be7c7cebba91eb1affbefc6c5 (patch)
treec04d49a1bee22edd4e4710b13bb27cfec79658a9 /extensions/storage-monitor.vala
parent3afb7f64debe9001b8f8e34b99b07c81b05e9702 (diff)
downloadzeitgeist-95073b1c0639780be7c7cebba91eb1affbefc6c5.tar.gz
Storage Monitor Extensions: fix bug lp:950983
Diffstat (limited to 'extensions/storage-monitor.vala')
-rw-r--r--extensions/storage-monitor.vala53
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));