summaryrefslogtreecommitdiff
path: root/src/tracker-store/tracker-locale-change.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/tracker-store/tracker-locale-change.c')
-rw-r--r--src/tracker-store/tracker-locale-change.c152
1 files changed, 0 insertions, 152 deletions
diff --git a/src/tracker-store/tracker-locale-change.c b/src/tracker-store/tracker-locale-change.c
deleted file mode 100644
index 46f1477d4..000000000
--- a/src/tracker-store/tracker-locale-change.c
+++ /dev/null
@@ -1,152 +0,0 @@
-/*
- * Copyright (C) 2010 Nokia <ivan.frade@nokia.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include "config.h"
-
-#include <stdlib.h>
-#include <string.h>
-#include <locale.h>
-
-#include <glib.h>
-#include <glib/gi18n.h>
-#include <glib/gstdio.h>
-
-#include <libtracker-common/tracker-locale.h>
-#include <libtracker-data/tracker-data-manager.h>
-
-#include "tracker-store.h"
-#include "tracker-events.h"
-#include "tracker-locale-change.h"
-
-typedef struct {
- gpointer resources;
-} TrackerLocaleChangeContext;
-
-/* Private */
-static gpointer locale_notification_id;
-static gboolean locale_change_notified;
-
-static void
-locale_change_process_cb (GObject *source,
- GAsyncResult *res,
- gpointer user_data)
-{
- TrackerStatus *notifier;
- TrackerBusyCallback busy_callback;
- gpointer busy_user_data;
- GDestroyNotify busy_destroy_notify;
- TrackerLocaleChangeContext *ctxt = user_data;
- GError *error = NULL;
-
- notifier = TRACKER_STATUS (tracker_dbus_get_object (TRACKER_TYPE_STATUS));
-
- busy_callback = tracker_status_get_callback (notifier,
- &busy_user_data,
- &busy_destroy_notify);
-
- g_message ("Processing locale change...");
- /* Reload! This will regenerate indexes with the new locale */
- tracker_data_manager_reload (busy_callback,
- busy_user_data,
- "Changing locale",
- &error);
-
- if (error) {
- g_critical ("Error reloading database for locale change: %s",
- error->message);
- g_error_free (error);
- }
-
- busy_destroy_notify (busy_user_data);
-
- if (ctxt->resources) {
- tracker_events_init ();
- tracker_resources_enable_signals (ctxt->resources);
- g_object_unref (ctxt->resources);
- }
- g_free (ctxt);
-
- tracker_store_resume ();
-
- locale_change_notified = FALSE;
-}
-
-static gboolean
-locale_change_process_idle_cb (gpointer data)
-{
- TrackerLocaleChangeContext *ctxt;
-
- ctxt = g_new0 (TrackerLocaleChangeContext, 1);
- ctxt->resources = tracker_dbus_get_object (TRACKER_TYPE_RESOURCES);
- if (ctxt->resources) {
- g_object_ref (ctxt->resources);
- tracker_resources_disable_signals (ctxt->resources);
- tracker_events_shutdown ();
- }
-
- /* Note: Right now, the passed callback may be called instantly and not
- * in an idle. */
- g_message ("Setting tracker-store as inactive...");
- tracker_store_pause (locale_change_process_cb, ctxt);
-
- return FALSE;
-}
-
-static void
-locale_notify_cb (TrackerLocaleID id,
- gpointer user_data)
-{
- if (locale_change_notified) {
- g_message ("Locale change was already notified, not doing it again");
- } else {
- locale_change_notified = TRUE;
- /* Set an idle callback to process the locale change.
- * NOTE: We cannot process it right here because we will be
- * closing and opening new connections to the DB while doing it,
- * and the DB connections are also part of the subscriber list
- * for locale changes, so we may end up waiting to acquire an
- * already locked mutex.
- */
- g_message ("Locale change notified, preparing to rebuild indexes...");
- g_idle_add (locale_change_process_idle_cb, NULL);
- }
-}
-
-void
-tracker_locale_change_initialize_subscription (void)
-{
- gchar *collation_locale;
-
- collation_locale = tracker_locale_get (TRACKER_LOCALE_COLLATE);
-
- g_debug ("Initial collation locale is '%s', subscribing for updates...",
- collation_locale);
-
- locale_notification_id = tracker_locale_notify_add (TRACKER_LOCALE_COLLATE,
- locale_notify_cb,
- NULL,
- NULL);
- g_free (collation_locale);
-}
-
-void
-tracker_locale_change_shutdown_subscription (void)
-{
- tracker_locale_notify_remove (locale_notification_id);
-}