These new functions allow to set more query settings for grabbing data
from the OPIM daemon reducing the need of parsing the results

These options includes the "_limit" value (for setting the max
number of results to get) and the new "_limit_start" option which tells
to the framework the beginning entry to start from (this option need
the opimd-Added-_limit_start-query-option.patch patch to be applied
to the frameworkd opimd module)
---
 src/phoneui-utils-contacts.c |   15 ++++++++++++-
 src/phoneui-utils-contacts.h |    1 +
 src/phoneui-utils-messages.c |   42 ++++++++++++++++++++++++++++++-------
 src/phoneui-utils-messages.h |    1 +
 src/phoneui-utils.c          |   47 +++++++++++++++++++++++++++++++++++++----
 src/phoneui-utils.h          |    1 +
 6 files changed, 93 insertions(+), 14 deletions(-)

diff --git a/src/phoneui-utils-contacts.c b/src/phoneui-utils-contacts.c
index ca7148f..6405be4 100644
--- a/src/phoneui-utils-contacts.c
+++ b/src/phoneui-utils-contacts.c
@@ -143,7 +143,7 @@ _query_callback(GError *error, char *path, gpointer data)
 }
 
 void
-phoneui_utils_contacts_get(int *count,
+phoneui_utils_contacts_get_full(int limit_start, int limit, int *count,
                           void (*callback)(gpointer, gpointer),
                           gpointer userdata)
 {
@@ -157,9 +157,22 @@ phoneui_utils_contacts_get(int *count,
        qry = g_hash_table_new_full
                        (g_str_hash, g_str_equal, NULL, _helpers_free_gvalue);
 
+       g_hash_table_insert(qry, "_limit_start",
+                   _helpers_new_gvalue_int(limit_start));
+       g_hash_table_insert(qry, "_limit",
+                   _helpers_new_gvalue_int(limit));
+
        opimd_contacts_query(qry, _query_callback, pack);
 }
 
+void
+phoneui_utils_contacts_get(int *count,
+                          void (*callback)(gpointer, gpointer),
+                          gpointer userdata)
+{
+       phoneui_utils_contacts_get_full(0, -1, count, callback, userdata);
+}
+
 static void
 _contacts_field_type_callback(GObject *source, GAsyncResult *res, gpointer 
data)
 {
diff --git a/src/phoneui-utils-contacts.h b/src/phoneui-utils-contacts.h
index ee4275b..3def318 100644
--- a/src/phoneui-utils-contacts.h
+++ b/src/phoneui-utils-contacts.h
@@ -23,6 +23,7 @@
 
 #include <glib.h>
 
+void phoneui_utils_contacts_get_full(int limit_start, int limit, int *count, 
void (*callback)(gpointer , gpointer), gpointer data);
 void phoneui_utils_contacts_get(int *count, void (*callback)(gpointer , 
gpointer), gpointer data);
 void phoneui_utils_contacts_field_type_get(const char *name, void 
(*callback)(GError *, char *, gpointer), gpointer user_data);
 void phoneui_utils_contacts_fields_get(void (*callback)(GError *, GHashTable 
*, gpointer), gpointer data);
diff --git a/src/phoneui-utils-messages.c b/src/phoneui-utils-messages.c
index 02adfed..25f3254 100644
--- a/src/phoneui-utils-messages.c
+++ b/src/phoneui-utils-messages.c
@@ -231,8 +231,9 @@ _query_messages_callback(GObject *source, GAsyncResult 
*res, gpointer data)
 }
 
 void
-phoneui_utils_messages_get(void (*callback)(GError *, GHashTable **, int, 
gpointer),
-                          gpointer data)
+phoneui_utils_messages_get_full(const char *sortby, gboolean sortdesc, int 
limit_start,
+                          int limit, gboolean resolve_number, const char 
*direction,
+                          void (*callback)(GError *, GHashTable **, int, 
gpointer), gpointer data)
 {
        struct _message_query_list_pack *pack;
        GHashTable *query;
@@ -243,12 +244,30 @@ phoneui_utils_messages_get(void (*callback)(GError *, 
GHashTable **, int, gpoint
        query = g_hash_table_new_full(g_str_hash, g_str_equal,
                                                  NULL, _helpers_free_gvalue);
 
-       gval_tmp = _helpers_new_gvalue_string("Timestamp");
-       g_hash_table_insert(query, "_sortby", gval_tmp);
-       gval_tmp = _helpers_new_gvalue_boolean(TRUE);
-       g_hash_table_insert(query, "_sortdesc", gval_tmp);
-       gval_tmp = _helpers_new_gvalue_boolean(TRUE);
-       g_hash_table_insert(query, "_resolve_phonenumber", gval_tmp);
+       if (sortby && strlen(sortby)) {
+               gval_tmp = _helpers_new_gvalue_string(sortby);
+               g_hash_table_insert(query, "_sortby", gval_tmp);
+       }
+
+       if (sortdesc) {
+               gval_tmp = _helpers_new_gvalue_boolean(sortdesc);
+               g_hash_table_insert(query, "_sortdesc", gval_tmp);
+       }
+
+       if (resolve_number) {
+               gval_tmp = _helpers_new_gvalue_boolean(resolve_number);
+               g_hash_table_insert(query, "_resolve_phonenumber", gval_tmp);
+       }
+
+       gval_tmp = _helpers_new_gvalue_int(limit_start);
+       g_hash_table_insert(query, "_limit_start", gval_tmp);
+       gval_tmp = _helpers_new_gvalue_int(limit);
+       g_hash_table_insert(query, "_limit", gval_tmp);
+
+       if (direction && (!strcmp(direction, "in") || !strcmp(direction, 
"out"))) {
+               gval_tmp = _helpers_new_gvalue_string(direction);
+               g_hash_table_insert(query, "Direction", gval_tmp);
+       }
 
        pack = malloc(sizeof(*pack));
        pack->callback = callback;
@@ -262,3 +281,10 @@ phoneui_utils_messages_get(void (*callback)(GError *, 
GHashTable **, int, gpoint
        g_hash_table_unref(query);
        g_debug("Done");
 }
+
+void
+phoneui_utils_messages_get(void (*callback)(GError *, GHashTable **, int, 
gpointer),
+                          gpointer data)
+{
+       phoneui_utils_messages_get_full("Timestamp", TRUE, 0, -1, TRUE, NULL, 
callback, data);
+}
diff --git a/src/phoneui-utils-messages.h b/src/phoneui-utils-messages.h
index b80c6aa..1c4855e 100644
--- a/src/phoneui-utils-messages.h
+++ b/src/phoneui-utils-messages.h
@@ -26,6 +26,7 @@
 int phoneui_utils_message_delete(const char *message_path, void 
(*callback)(GError *, gpointer), gpointer data);
 int phoneui_utils_message_set_read_status(const char *path, int read, void 
(*callback) (GError *, gpointer), gpointer data);
 int phoneui_utils_message_get(const char *message_path, void 
(*callback)(GError *, GHashTable *, gpointer), gpointer data);
+void phoneui_utils_messages_get_full(const char *sortby, gboolean sortdesc, 
int limit_start, int limit, gboolean resolve_number, const char *direction, 
void (*callback)(GError *, GHashTable **, int, gpointer), gpointer data);
 void phoneui_utils_messages_get(void (*callback) (GError *, GHashTable **, 
int, void *), gpointer data);
 
 #endif
diff --git a/src/phoneui-utils.c b/src/phoneui-utils.c
index 893d537..158638c 100644
--- a/src/phoneui-utils.c
+++ b/src/phoneui-utils.c
@@ -536,7 +536,9 @@ _calls_query_callback(GObject *source, GAsyncResult *res, 
gpointer data)
 }
 
 void
-phoneui_utils_calls_get(int *count,
+phoneui_utils_calls_get_full(const char *sortby, gboolean sortdesc,
+                       int limit_start, int limit, gboolean resolve_number,
+                       const char *direction, int answered, int *count,
                        void (*callback) (GError *, GHashTable **, int, 
gpointer),
                        gpointer data)
 {
@@ -552,15 +554,50 @@ phoneui_utils_calls_get(int *count,
 
        GHashTable *qry = g_hash_table_new_full(g_str_hash, g_str_equal,
                                                NULL, _helpers_free_gvalue);
-       g_hash_table_insert(qry, "_sortby",
-                           _helpers_new_gvalue_string("Timestamp"));
-       g_hash_table_insert(qry, "_sortdesc",
-                           _helpers_new_gvalue_boolean(TRUE));
+
+       if (sortby && strlen(sortby)) {
+               g_hash_table_insert(qry, "_sortby",
+                           _helpers_new_gvalue_string(sortby));
+       }
+
+       if (sortdesc) {
+               g_hash_table_insert(qry, "_sortdesc",
+                           _helpers_new_gvalue_boolean(sortdesc));
+       }
+
+       if (resolve_number) {
+               g_hash_table_insert(qry, "_resolve_phonenumber",
+                           _helpers_new_gvalue_int(resolve_number));
+       }
+
+       g_hash_table_insert(qry, "_limit_start",
+                   _helpers_new_gvalue_int(limit_start));
+       g_hash_table_insert(qry, "_limit",
+                   _helpers_new_gvalue_int(limit));
+
+       if (direction && (!strcmp(direction, "in") || !strcmp(direction, 
"out"))) {
+               g_hash_table_insert(qry, "Direction",
+                   _helpers_new_gvalue_string(direction));
+       }
+
+       if (answered > -1) {
+               g_hash_table_insert(qry, "Answered",
+                           _helpers_new_gvalue_boolean(answered));
+       }
+
        free_smartphone_pim_calls_query(pack->calls, qry,
                                        _calls_query_callback, pack);
        g_hash_table_unref(qry);
 }
 
+void
+phoneui_utils_calls_get(int *count,
+                       void (*callback) (GError *, GHashTable **, int, 
gpointer),
+                       gpointer data)
+{
+       phoneui_utils_calls_get_full("Timestamp", TRUE, 0, -1, TRUE, NULL, -1, 
count, callback, data);
+}
+
 static void
 _call_get_callback(GObject *source, GAsyncResult *res, gpointer data)
 {
diff --git a/src/phoneui-utils.h b/src/phoneui-utils.h
index 7b7e9bc..a04b5c5 100644
--- a/src/phoneui-utils.h
+++ b/src/phoneui-utils.h
@@ -90,6 +90,7 @@ void 
phoneui_utils_idle_set_state(FreeSmartphoneDeviceIdleState state, void (*ca
 void phoneui_utils_resources_get_resource_policy(const char *name, void 
(*callback) (GError *, FreeSmartphoneUsageResourcePolicy, gpointer), gpointer 
userdata);
 void phoneui_utils_resources_set_resource_policy(const char *name, 
FreeSmartphoneUsageResourcePolicy policy, void (*callback) (GError *, 
gpointer), gpointer userdata);
 
+void phoneui_utils_calls_get_full(const char *sortby, gboolean sortdesc, int 
limit_start, int limit, gboolean resolve_number, const char *direction, int 
answered, int *count, void (*callback) (GError *, GHashTable **, int, 
gpointer), gpointer data);
 void phoneui_utils_calls_get(int *count, void (*callback) (GError *, 
GHashTable **, int, gpointer), void *_data);
 int phoneui_utils_call_get(const char *call_path, void (*callback)(GError *, 
GHashTable*, gpointer), void *data);
 
-- 
1.7.1


_______________________________________________
Shr-devel mailing list
[email protected]
http://lists.shr-project.org/mailman/listinfo/shr-devel

Reply via email to