diff --git a/backends/apt/helpers/aptBackend.py b/backends/apt/helpers/aptBackend.py index a7a868b44..8122474ff 100644 --- a/backends/apt/helpers/aptBackend.py +++ b/backends/apt/helpers/aptBackend.py @@ -86,7 +86,7 @@ class Package(object): #if section in (): # return GROUP_ACCESSIBILITY if section in ('utils',): - return GROUP_ACCESSORIES + return "accessories" #if section in (): # return GROUP_EDUCATION if section in ('games',): @@ -161,6 +161,13 @@ class Package(object): return True return False + def match_group(self, name): + needle = name.strip().lower() + haystack = self.group + if haystack.startswith(needle): + return True + return False + ### Helpers ### def _seek_records(self, use_candidate=True): if use_candidate: @@ -234,10 +241,9 @@ class PackageKitAptBackend(PackageKitBaseBackend): Implement the {backend}-search-group functionality ''' self.allow_interrupt(True) - self.percentage(None) - - self.error(ERROR_NOT_SUPPORTED, - "This function is not implemented in this backend") + for package in self._do_search(filters, + lambda pkg: pkg.match_group(key)): + self._emit_package(package) def search_file(self, filters, key): ''' diff --git a/backends/apt/pk-backend-apt.c b/backends/apt/pk-backend-apt.c index bd2ea3f0a..513d0e44f 100644 --- a/backends/apt/pk-backend-apt.c +++ b/backends/apt/pk-backend-apt.c @@ -32,9 +32,7 @@ backend_get_groups (PkBackend *backend, PkEnumList *elist) { g_return_if_fail (backend != NULL); pk_enum_list_append_multiple (elist, - PK_GROUP_ENUM_ACCESSIBILITY, PK_GROUP_ENUM_ACCESSORIES, - PK_GROUP_ENUM_EDUCATION, PK_GROUP_ENUM_GAMES, PK_GROUP_ENUM_GRAPHICS, PK_GROUP_ENUM_INTERNET, @@ -154,6 +152,17 @@ backend_search_name (PkBackend *backend, const gchar *filter, const gchar *searc pk_backend_spawn_helper (backend, "search-name.py", filter, search, NULL); } +/** + * backend_search_group: + */ +static void +backend_search_group (PkBackend *backend, const gchar *filter, const gchar *search) +{ + g_return_if_fail (backend != NULL); + pk_backend_allow_interrupt (backend, TRUE); + pk_backend_spawn_helper (backend, "search-group.py", filter, search, NULL); +} + /** * backend_update_package: */ @@ -215,7 +224,7 @@ PK_BACKEND_OPTIONS ( NULL, /* rollback */ backend_search_details, /* search_details */ NULL, /* search_file */ - NULL, /* search_group */ + backend_search_group, /* search_group */ backend_search_name, /* search_name */ backend_update_package, /* update_package */ backend_update_system, /* update_system */