aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/application-service-appstore.c2
-rw-r--r--src/generate-id.c53
-rw-r--r--src/generate-id.h3
3 files changed, 34 insertions, 24 deletions
diff --git a/src/application-service-appstore.c b/src/application-service-appstore.c
index 2306230..57f8871 100644
--- a/src/application-service-appstore.c
+++ b/src/application-service-appstore.c
@@ -530,7 +530,7 @@ app_sort_func (gconstpointer a, gconstpointer b, gpointer userdata)
{
Application * appa = (Application *)a;
Application * appb = (Application *)b;
- return appa->ordering_index - appb->ordering_index;
+ return appb->ordering_index - appa->ordering_index;
}
/* Change the status of the application. If we're going passive
diff --git a/src/generate-id.c b/src/generate-id.c
index 6855b39..a504e44 100644
--- a/src/generate-id.c
+++ b/src/generate-id.c
@@ -21,40 +21,49 @@ with this program. If not, see <http://www.gnu.org/licenses/>.
#include "generate-id.h"
-struct ordering_id_struct {
- gchar category;
- gchar first;
- gchar second;
- gchar third;
-};
-
-union ordering_id_union_t {
- guint32 id;
- struct ordering_id_struct str;
-};
+#define MULTIPLIER 32
guint32
-generate_id (const gchar category, const gchar * id)
+generate_id (const AppIndicatorCategory catenum, const gchar * id)
{
- union ordering_id_union_t u;
+ gchar category = 0;
+ gchar first = 0;
+ gchar second = 0;
+ gchar third = 0;
- u.str.category = category;
+ switch (catenum) {
+ case APP_INDICATOR_CATEGORY_OTHER:
+ category = MULTIPLIER * 5;
+ break;
+ case APP_INDICATOR_CATEGORY_APPLICATION_STATUS:
+ category = MULTIPLIER * 4;
+ break;
+ case APP_INDICATOR_CATEGORY_COMMUNICATIONS:
+ category = MULTIPLIER * 3;
+ break;
+ case APP_INDICATOR_CATEGORY_SYSTEM_SERVICES:
+ category = MULTIPLIER * 2;
+ break;
+ case APP_INDICATOR_CATEGORY_HARDWARE:
+ category = MULTIPLIER * 1;
+ break;
+ default:
+ g_warning("Got an undefined category: %d", category);
+ category = 0;
+ break;
+ }
- u.str.first = 0;
- u.str.second = 0;
- u.str.third = 0;
-
if (id != NULL) {
if (id[0] != '\0') {
- u.str.first = id[0];
+ first = id[0];
if (id[1] != '\0') {
- u.str.second = id[1];
+ second = id[1];
if (id[2] != '\0') {
- u.str.third = id[2];
+ third = id[2];
}
}
}
}
- return u.id;
+ return (((((category * 256) + first) * 256) + second) * 256) + third;
}
diff --git a/src/generate-id.h b/src/generate-id.h
index 3713158..9d3167d 100644
--- a/src/generate-id.h
+++ b/src/generate-id.h
@@ -23,7 +23,8 @@ with this program. If not, see <http://www.gnu.org/licenses/>.
#define __GENERATE_ID_H__
#include <glib.h>
+#include "app-indicator.h"
-guint32 generate_id (const gchar category, const gchar * id);
+guint32 generate_id (const AppIndicatorCategory category, const gchar * id);
#endif /* __GENERATE_ID_H__ */