diff options
author | Ted Gould <ted@gould.cx> | 2010-08-11 12:11:34 -0500 |
---|---|---|
committer | Ted Gould <ted@gould.cx> | 2010-08-11 12:11:34 -0500 |
commit | 68b74230e9641ddd34e2ff48f9be982f15ea58c6 (patch) | |
tree | 1992840ebd3c863d3e797fed2df9b8f37658b8a3 /src | |
parent | 5dcb1d4db537966b7cc685dcba2a6e5352476232 (diff) | |
parent | 0dd2e79a84c137ed4846bfd145ce362dcade3477 (diff) | |
download | ayatana-indicator-application-68b74230e9641ddd34e2ff48f9be982f15ea58c6.tar.gz ayatana-indicator-application-68b74230e9641ddd34e2ff48f9be982f15ea58c6.tar.bz2 ayatana-indicator-application-68b74230e9641ddd34e2ff48f9be982f15ea58c6.zip |
* Upstream Merge
* Cleaning up the ID creation and ordering to put low numbers to
the right.
Diffstat (limited to 'src')
-rw-r--r-- | src/application-service-appstore.c | 2 | ||||
-rw-r--r-- | src/generate-id.c | 53 | ||||
-rw-r--r-- | src/generate-id.h | 3 |
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__ */ |