evolution-data-server r9081 - trunk/camel
- From: fejj svn gnome org
- To: svn-commits-list gnome org
- Subject: evolution-data-server r9081 - trunk/camel
- Date: Thu, 3 Jul 2008 03:13:35 +0000 (UTC)
Author: fejj
Date: Thu Jul 3 03:13:35 2008
New Revision: 9081
URL: http://svn.gnome.org/viewvc/evolution-data-server?rev=9081&view=rev
Log:
2008-07-02 Jeffrey Stedfast <fejj novell com>
* camel-folder.c (camel_folder_sort_uids): New method to sort an
array of uids.
Modified:
trunk/camel/ChangeLog
trunk/camel/camel-folder.c
trunk/camel/camel-folder.h
Modified: trunk/camel/camel-folder.c
==============================================================================
--- trunk/camel/camel-folder.c (original)
+++ trunk/camel/camel-folder.c Thu Jul 3 03:13:35 2008
@@ -88,6 +88,8 @@
static GPtrArray *get_uids (CamelFolder *folder);
static void free_uids (CamelFolder *folder,
GPtrArray *array);
+static void sort_uids (CamelFolder *folder,
+ GPtrArray *uids);
static GPtrArray *get_summary (CamelFolder *folder);
static void free_summary (CamelFolder *folder,
GPtrArray *array);
@@ -143,6 +145,7 @@
camel_folder_class->get_message = get_message;
camel_folder_class->get_uids = get_uids;
camel_folder_class->free_uids = free_uids;
+ camel_folder_class->sort_uids = sort_uids;
camel_folder_class->get_summary = get_summary;
camel_folder_class->free_summary = free_summary;
camel_folder_class->search_by_expression = search_by_expression;
@@ -1170,6 +1173,46 @@
CF_CLASS (folder)->free_uids (folder, array);
}
+
+static int
+uidcmp (const void *v0, const void *v1)
+{
+ const char *str0 = *(const char **) v0;
+ const char *str1 = *(const char **) v1;
+ guint32 uid0 = strtoul (str0, NULL, 10);
+ guint32 uid1 = strtoul (str1, NULL, 10);
+
+ if (uid0 < uid1)
+ return -1;
+ else if (uid0 == uid1)
+ return 0;
+ else
+ return 1;
+}
+
+static void
+sort_uids (CamelFolder *folder, GPtrArray *uids)
+{
+ qsort (uids->pdata, uids->len, sizeof (void *), uidcmp);
+}
+
+
+/**
+ * camel_folder_sort_uids:
+ * @folder: a #CamelFolder object
+ * @uids: array of uids
+ *
+ * Sorts the array of UIDs.
+ **/
+void
+camel_folder_sort_uids (CamelFolder *folder, GPtrArray *uids)
+{
+ g_return_if_fail (CAMEL_IS_FOLDER (folder));
+
+ CF_CLASS (folder)->sort_uids (folder, uids);
+}
+
+
static GPtrArray *
get_summary(CamelFolder *folder)
{
Modified: trunk/camel/camel-folder.h
==============================================================================
--- trunk/camel/camel-folder.h (original)
+++ trunk/camel/camel-folder.h Thu Jul 3 03:13:35 2008
@@ -174,7 +174,9 @@
GPtrArray * (*get_uids) (CamelFolder *folder);
void (*free_uids) (CamelFolder *folder,
GPtrArray *array);
-
+
+ void (* sort_uids) (CamelFolder *folder, GPtrArray *uids);
+
GPtrArray * (*get_summary) (CamelFolder *folder);
void (*free_summary) (CamelFolder *folder,
GPtrArray *summary);
@@ -203,7 +205,7 @@
void (*freeze) (CamelFolder *folder);
void (*thaw) (CamelFolder *folder);
gboolean (*is_frozen) (CamelFolder *folder);
-
+
CamelFolderQuotaInfo * (*get_quota_info) (CamelFolder *folder);
} CamelFolderClass;
@@ -303,6 +305,8 @@
GPtrArray * camel_folder_get_uids (CamelFolder *folder);
void camel_folder_free_uids (CamelFolder *folder,
GPtrArray *array);
+void camel_folder_sort_uids (CamelFolder *folder,
+ GPtrArray *uids);
/* search api */
gboolean camel_folder_has_search_capability (CamelFolder *folder);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]