[pkg-fso-commits] [SCM] libframeworkd-phonegui branch, upstream, updated. 640da47bfcff755388d0fb8f443eb34e0dea3c72
Didier 'Ptitjes
ptitjes at free.fr
Sat Dec 27 20:50:05 UTC 2008
The following commit has been merged in the upstream branch:
commit 37129dcfbe7ff04e5c11b94655df0e3c8c7ff412
Author: Didier 'Ptitjes <ptitjes at free.fr>
Date: Sat Dec 6 11:49:05 2008 +0100
Added phone log on sqlite
Signed-off-by: Didier 'Ptitjes <ptitjes at free.fr>
diff --git a/ophonekitd/src/ophonekitd-main.c b/ophonekitd/src/ophonekitd-main.c
index 0b19fb1..4da120d 100644
--- a/ophonekitd/src/ophonekitd-main.c
+++ b/ophonekitd/src/ophonekitd-main.c
@@ -33,10 +33,16 @@
#include <frameworkd-glib/odeviced/frameworkd-glib-odeviced-audio.h>
#include "ophonekitd-phonegui.h"
+#include "ophonekitd-phonelog.h"
+
+typedef struct {
+ int id;
+ int unique_id;
+} call_t;
gboolean sim_auth_active = FALSE;
-int *incoming_calls = NULL;
-int *outgoing_calls = NULL;
+call_t *incoming_calls = NULL;
+call_t *outgoing_calls = NULL;
int incoming_calls_size = 0;
int outgoing_calls_size = 0;
@@ -50,6 +56,10 @@ int main(int argc, char ** argv) {
phonegui_init(argc, argv, exit_callback);
g_debug("Phonegui initiated");
+ /* Initiate phonelog database */
+ phonelog_init_database();
+ g_debug("Phonelog database initiated");
+
/* Register dbus handlers */
fwHandler.networkStatus = NULL;
fwHandler.networkSignalStrength = NULL;
@@ -74,25 +84,38 @@ int main(int argc, char ** argv) {
}
-void ophonekitd_call_add(int **calls, int *size, int id) {
+void ophonekitd_call_add(call_t **calls, int *size, int id, int unique_id) {
+ g_debug("ophonekitd_call_add(%d, %u)", id, unique_id);
(*size)++;
if(*size == 1)
- *calls = malloc(sizeof(int));
+ *calls = malloc(sizeof(call_t));
else
- *calls = realloc(calls, sizeof(int)*(*size));
- *calls[(*size)-1] = id;
+ *calls = realloc(calls, sizeof(call_t)*(*size));
+ (*calls)[(*size)-1].id = id;
+ (*calls)[(*size)-1].unique_id = unique_id;
}
-int ophonekitd_call_check(int *calls, int *size, int id) {
+int ophonekitd_call_check(call_t *calls, int *size, int id) {
int i;
+ g_debug("ophonekitd_call_check(%d)", id);
for(i = 0; i < (*size) ; i++) {
- if(calls[i] == id)
+ if(calls[i].id == id)
return i;
}
return -1;
}
-void ophonekitd_call_remove(int *calls, int *size, int id) {
+int ophonekitd_call_get_unique_id(call_t *calls, int *size, int id) {
+ g_debug("ophonekitd_call_get_number(%d)", id);
+ int place = ophonekitd_call_check(calls, size, id);
+ if(place >= 0) {
+ return calls[place].unique_id;
+ }
+ return -1;
+}
+
+void ophonekitd_call_remove(call_t *calls, int *size, int id) {
+ g_debug("ophonekitd_call_remove(%d)", id);
if(*size == 1) {
free(calls);
(*size)--;
@@ -102,10 +125,11 @@ void ophonekitd_call_remove(int *calls, int *size, int id) {
if(place >= 0) {
int i = place;
for(i = place; i + 1 < (*size); i++) {
- calls[i] = calls[i+1];
+ calls[i].id = calls[i+1].id;
+ calls[i].unique_id = calls[i+1].unique_id;
}
- (*size)--;
- calls = realloc(calls, sizeof(int)*(*size));
+ (*size)--;
+ calls = realloc(calls, sizeof(call_t)*(*size));
}
}
}
@@ -150,24 +174,34 @@ void ophonekitd_call_status_handler(const int call_id, const int status, GHashTa
case CALL_STATUS_INCOMING:
g_debug("incoming call");
if(ophonekitd_call_check(incoming_calls, &incoming_calls_size, call_id) == -1) {
- ophonekitd_call_add(&incoming_calls, &incoming_calls_size, call_id);
+ int unique_id = phonelog_add_new_call(number);
+ ophonekitd_call_add(&incoming_calls, &incoming_calls_size, call_id, unique_id);
+ phonelog_log_call_event(unique_id, status);
phonegui_incoming_call_show(call_id, status, number);
}
break;
case CALL_STATUS_OUTGOING:
g_debug("outgoing call");
if(ophonekitd_call_check(outgoing_calls, &outgoing_calls_size, call_id) == -1) {
- ophonekitd_call_add(&outgoing_calls, &outgoing_calls_size, call_id);
+ int unique_id = phonelog_add_new_call(number);
+ ophonekitd_call_add(&outgoing_calls, &outgoing_calls_size, call_id, unique_id);
+ phonelog_log_call_event(unique_id, status);
phonegui_outgoing_call_show(call_id, status, number);
}
break;
case CALL_STATUS_RELEASE:
g_debug("release call");
if(ophonekitd_call_check(incoming_calls, &incoming_calls_size, call_id) != -1) {
+ int unique_id =
+ ophonekitd_call_get_unique_id(incoming_calls, &incoming_calls_size, call_id);
+ phonelog_log_call_event(unique_id, status);
ophonekitd_call_remove(incoming_calls, &incoming_calls_size, call_id);
phonegui_incoming_call_hide(call_id);
}
if(ophonekitd_call_check(outgoing_calls, &outgoing_calls_size, call_id) != -1) {
+ int unique_id =
+ ophonekitd_call_get_unique_id(outgoing_calls, &outgoing_calls_size, call_id);
+ phonelog_log_call_event(unique_id, status);
ophonekitd_call_remove(outgoing_calls, &outgoing_calls_size, call_id);
phonegui_outgoing_call_hide(call_id);
}
@@ -177,6 +211,16 @@ void ophonekitd_call_status_handler(const int call_id, const int status, GHashTa
break;
case CALL_STATUS_ACTIVE:
g_debug("active call");
+ if(ophonekitd_call_check(incoming_calls, &incoming_calls_size, call_id) != -1) {
+ int unique_id =
+ ophonekitd_call_get_unique_id(incoming_calls, &incoming_calls_size, call_id);
+ phonelog_log_call_event(unique_id, status);
+ }
+ if(ophonekitd_call_check(outgoing_calls, &outgoing_calls_size, call_id) != -1) {
+ int unique_id =
+ ophonekitd_call_get_unique_id(outgoing_calls, &outgoing_calls_size, call_id);
+ phonelog_log_call_event(unique_id, status);
+ }
break;
default:
g_error("Unknown CallStatus");
@@ -265,7 +309,7 @@ void request_resource_callback(GError *error, gpointer userdata) {
} else if(IS_DBUS_ERROR(error, DBUS_ERROR_SERVICE_NOT_AVAILABLE) || IS_DBUS_ERROR(error, DBUS_ERROR_NO_REPLY)) {
g_debug("dbus not available, try again in 5s");
g_timeout_add(5000, list_resources, NULL);
- } else {
+ } else {
/* FIXME: Remove this when frameworkd code is ready */
g_debug("request resource error, try again in 5s");
g_error("error: %s %s %d", error->message, g_quark_to_string(error->domain), error->code);
@@ -291,7 +335,7 @@ void power_up_antenna_callback(GError *error, gpointer userdata) {
g_error("SIM card not present.");
} else if(IS_DBUS_ERROR(error, DBUS_ERROR_SERVICE_NOT_AVAILABLE) || IS_DBUS_ERROR(error, DBUS_ERROR_NO_REPLY)) {
g_debug("dbus not available, try again in 5s");
- g_timeout_add(5000, power_up_antenna, NULL);
+ g_timeout_add(5000, power_up_antenna, NULL);
} else {
g_error("Unknown error: %s %s %d", error->message, g_quark_to_string(error->domain), error->code);
}
@@ -357,6 +401,11 @@ void get_messagebook_info_callback(GError *error, GHashTable *info, gpointer use
int exit_callback(void *data, int type, void *event) {
/* called on ctrl-c, kill $pid, SIGINT, SIGTERM and SIGQIT */
g_debug("exit_callback()");
+
+ /* Close phonelog database */
+ phonelog_close_database();
+ g_debug("Phonelog database closed");
+
return 0;
}
diff --git a/ophonekitd/src/ophonekitd-phonelog.c b/ophonekitd/src/ophonekitd-phonelog.c
index 02e4fc9..531ec11 100644
--- a/ophonekitd/src/ophonekitd-phonelog.c
+++ b/ophonekitd/src/ophonekitd-phonelog.c
@@ -21,11 +21,11 @@
#include <sys/stat.h>
#include <sqlite3.h>
-#define PHONELOG_DB_LOCATION "/var/log/phonelog.db"
+#define PHONELOG_DB_LOCATION "/var/db/phonelog.db"
#define PHONELOG_CREATE_CALL_IDS_TABLE \
"CREATE TABLE call_ids (id INTEGER PRIMARY KEY, number TEXT)"
#define PHONELOG_CREATE_CALL_EVENTS_TABLE \
- "CREATE TABLE call_events (id INTEGER, status INT, eventTime DATE, FOREIGN KEY (id) REFERENCES call_ids(id))"
+ "CREATE TABLE call_events (id INTEGER, status INT, eventTime TIMESTAMP, FOREIGN KEY (id) REFERENCES call_ids(id))"
#define PHONELOG_CREATE_CALL_EVENTS_TRIGGER \
"CREATE TRIGGER insert_call_events_eventTime AFTER INSERT ON call_events\nBEGIN\nUPDATE call_events SET eventTime = DATETIME('NOW') WHERE rowid = new.rowid;\nEND"
@@ -142,13 +142,3 @@ void phonelog_log_call_event(const int unique_id, const int status) {
}
}
}
-
-/*static int callback(void *NotUsed, int argc, char **argv, char **azColName) {
- NotUsed = 0;
- int i;
- for (i = 0; i < argc; i++) {
- printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");
- }
- printf("\n");
- return 0;
- }*/
--
libframeworkd-phonegui
More information about the pkg-fso-commits
mailing list