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