[network-manager-netbook] Fix the sorting of same type list items (bnc #536428).
- From: Tambet Ingo <tambeti src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [network-manager-netbook] Fix the sorting of same type list items (bnc #536428).
- Date: Fri, 4 Sep 2009 13:12:43 +0000 (UTC)
commit a5c4fe9dc72b992f941d13e210cc51453bf2ad10
Author: Tambet Ingo <tambet gmail com>
Date: Thu Sep 3 13:15:54 2009 +0300
Fix the sorting of same type list items (bnc #536428).
src/nmn-item.c | 8 ++++++++
src/nmn-item.h | 2 ++
src/nmn-list.c | 28 +++++++++++++++++++++-------
src/nmn-wifi-item.c | 8 +-------
4 files changed, 32 insertions(+), 14 deletions(-)
---
diff --git a/src/nmn-item.c b/src/nmn-item.c
index 0659621..1c1e425 100644
--- a/src/nmn-item.c
+++ b/src/nmn-item.c
@@ -75,6 +75,14 @@ nmn_item_set_name (NmnItem *item,
g_free (s);
}
+const char *
+nmn_item_get_name (NmnItem *item)
+{
+ g_return_val_if_fail (NMN_IS_ITEM (item), NULL);
+
+ gtk_label_get_text (GTK_LABEL (NMN_ITEM_GET_PRIVATE (item)->name));
+}
+
void
nmn_item_set_status_visible (NmnItem *item,
gboolean visible)
diff --git a/src/nmn-item.h b/src/nmn-item.h
index 117f382..31e6931 100644
--- a/src/nmn-item.h
+++ b/src/nmn-item.h
@@ -64,6 +64,8 @@ GtkWidget *nmn_item_new (void);
void nmn_item_set_name (NmnItem *item,
const char *name);
+const char *nmn_item_get_name (NmnItem *item);
+
void nmn_item_set_status_visible (NmnItem *item,
gboolean visible);
diff --git a/src/nmn-list.c b/src/nmn-list.c
index 5d5b13d..c619112 100644
--- a/src/nmn-list.c
+++ b/src/nmn-list.c
@@ -17,6 +17,7 @@
* (C) Copyright 2009 Novell, Inc.
*/
+#include <string.h>
#include "nmn-list.h"
#define NMN_DRAG_TARGET "NMN_DRAG_TARGET"
@@ -141,17 +142,30 @@ static gint
compare_items (gconstpointer a,
gconstpointer b)
{
- guint aa;
- guint bb;
+ NmnItem *a_item = NMN_ITEM (a);
+ NmnItem *b_item = NMN_ITEM (b);
+ const char *a_label;
+ const char *b_label;
+ guint a_priority;
+ guint b_priority;
- aa = nmn_item_get_priority (NMN_ITEM (a));
- bb = nmn_item_get_priority (NMN_ITEM (b));
+ a_priority = nmn_item_get_priority (a_item);
+ b_priority = nmn_item_get_priority (b_item);
- if (aa < bb)
+ if (a_priority < b_priority)
return 1;
- if (aa == bb)
- return 0;
+ if (a_priority > b_priority)
+ return -1;
+
+ a_label = nmn_item_get_name (a_item);
+ b_label = nmn_item_get_name (b_item);
+
+ if (a_label && b_label)
+ return strcmp (a_label, b_label);
+
+ if (a_label)
+ return 1;
return -1;
}
diff --git a/src/nmn-wifi-item.c b/src/nmn-wifi-item.c
index 1d57d82..c8b4f79 100644
--- a/src/nmn-wifi-item.c
+++ b/src/nmn-wifi-item.c
@@ -497,13 +497,7 @@ disconnect (NmnItem *item)
static guint
get_priority (NmnItem *item)
{
- guint priority;
-
- priority = NMN_ITEM_CLASS (nmn_wifi_item_parent_class)->get_priority (item) + 20;
-
- /* FIXME: Add some more based on SSID? signal strength? */
-
- return priority;
+ return NMN_ITEM_CLASS (nmn_wifi_item_parent_class)->get_priority (item) + 20;
}
static const char *
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]