summaryrefslogtreecommitdiff
path: root/lib/ephy-search-engine-manager.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/ephy-search-engine-manager.c')
-rw-r--r--lib/ephy-search-engine-manager.c215
1 files changed, 0 insertions, 215 deletions
diff --git a/lib/ephy-search-engine-manager.c b/lib/ephy-search-engine-manager.c
deleted file mode 100644
index 8bb451d16..000000000
--- a/lib/ephy-search-engine-manager.c
+++ /dev/null
@@ -1,215 +0,0 @@
-/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/*
- * Copyright © 2017 Cedric Le Moigne <cedlemo@gmx.com>
- *
- * This file is part of Epiphany.
- *
- * Epiphany 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 3 of the License, or
- * (at your option) any later version.
- *
- * Epiphany 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 Epiphany. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "config.h"
-#include "ephy-search-engine-manager.h"
-
-#include "ephy-file-helpers.h"
-#include "ephy-string.h"
-
-#define G_SETTINGS_ENABLE_BACKEND 1
-#include <gio/gsettingsbackend.h>
-
-struct _EphySearchEngineManager
-{
- GObject parent_instance;
- GSettingsBackend *backend;
- GSettings *settings;
- GHashTable *search_engines;
-};
-
-G_DEFINE_TYPE (EphySearchEngineManager, ephy_search_engine_manager, G_TYPE_OBJECT)
-
-static void
-ephy_search_engine_manager_init (EphySearchEngineManager *manager)
-{
- char *key_file = NULL;
- char **search_engine_urls;
- char **search_engine_names;
- uint n_engines;
-
- manager->search_engines = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);
- key_file = g_build_filename (ephy_dot_dir (), G_DIR_SEPARATOR_S "search-engines.ini", NULL);
-
- manager->backend = g_keyfile_settings_backend_new (key_file, "/", "SearchEngines");
- g_free (key_file);
-
- manager->settings = g_settings_new_with_backend_and_path ("org.gnome.Epiphany.search-engines",
- manager->backend,
- "/org/gnome/epiphany/search-engines/");
-
- search_engine_names = g_settings_get_strv (manager->settings,
- "search-engines-names");
- search_engine_urls = g_settings_get_strv (manager->settings,
- "search-engines-urls");
- n_engines = g_strv_length (search_engine_names);
-
- for (uint i = 0; i < n_engines; ++i) {
- const char *name = search_engine_names[i];
- const char *url = search_engine_urls[i];
- g_hash_table_insert (manager->search_engines,
- g_strdup (name),
- g_strdup (url));
- }
-
- g_strfreev (search_engine_names);
- g_strfreev (search_engine_urls);
-}
-
-static void
-ephy_search_engine_manager_dispose (GObject *object)
-{
- EphySearchEngineManager *manager = EPHY_SEARCH_ENGINE_MANAGER (object);
-
- g_clear_pointer (&manager->search_engines, g_hash_table_destroy);
- g_clear_object (&manager->backend);
- g_clear_object (&manager->settings);
-
- G_OBJECT_CLASS (ephy_search_engine_manager_parent_class)->dispose (object);
-}
-
-static void
-ephy_search_engine_manager_class_init (EphySearchEngineManagerClass *klass)
-{
- GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
- object_class->dispose = ephy_search_engine_manager_dispose;
-}
-
-EphySearchEngineManager *
-ephy_search_engine_manager_new (void)
-{
- return EPHY_SEARCH_ENGINE_MANAGER (g_object_new (EPHY_TYPE_SEARCH_ENGINE_MANAGER, NULL));
-}
-
-const char *
-ephy_search_engine_manager_get_url (EphySearchEngineManager *manager,
- const char *name)
-{
- if (!manager->search_engines)
- return NULL;
-
- return g_hash_table_lookup (manager->search_engines, name);
-}
-
-char *
-ephy_search_engine_manager_get_default_engine (EphySearchEngineManager *manager)
-{
- if (!manager->settings)
- return NULL;
-
- return g_settings_get_string (manager->settings, "default-search-engine");
-}
-
-char **
-ephy_search_engine_manager_get_names (EphySearchEngineManager *manager)
-{
- if (!manager->settings)
- return NULL;
-
- return g_settings_get_strv (manager->settings, "search-engines-names");
-}
-
-GSettings *
-ephy_search_engine_manager_get_settings (EphySearchEngineManager *manager)
-{
- return g_settings_new_with_backend_and_path ("org.gnome.Epiphany.search-engines",
- manager->backend,
- "/org/gnome/epiphany/search-engines/");
-}
-
-static void
-ephy_search_engine_manager_apply_settings (EphySearchEngineManager *manager)
-{
- GHashTableIter iter;
- gpointer key, value;
- int size;
- int i = 0;
- char **search_engine_names;
- char **search_engine_urls;
-
- if (!manager->search_engines)
- return;
-
- size = g_hash_table_size (manager->search_engines);
-
- search_engine_names = g_malloc(size + 1);
- search_engine_urls = g_malloc(size + 1);
-
- g_hash_table_iter_init (&iter, manager->search_engines);
- while (g_hash_table_iter_next (&iter, &key, &value))
- {
- search_engine_names[i] = key;
- search_engine_urls[i] = value;
- i++;
- }
- search_engine_names[size] = NULL;
- search_engine_urls[size] = NULL;
-
- if (!manager->settings)
- return;
-
- g_settings_set_strv (manager->settings,
- "search-engines-names",
- (const char * const*) search_engine_names);
- g_settings_set_strv (manager->settings,
- "search-engines-urls",
- (const char * const*) search_engine_urls);
-
- g_strfreev (search_engine_names);
- g_strfreev (search_engine_urls);
-}
-
-void
-ephy_search_engine_manager_add_engine (EphySearchEngineManager *manager,
- const char *name,
- const char *url)
-{
- if (!manager->search_engines)
- return;
-
- g_hash_table_insert (manager->search_engines, g_strdup (name), g_strdup (url));
- ephy_search_engine_manager_apply_settings (manager);
-}
-
-void
-ephy_search_engine_manager_delete_engine (EphySearchEngineManager *manager,
- const char *name)
-{
- if (!manager->search_engines)
- return;
-
- g_hash_table_remove (manager->search_engines, name);
- ephy_search_engine_manager_apply_settings (manager);
-}
-
-void
-ephy_search_engine_manager_modify_engine (EphySearchEngineManager *manager,
- const char *name,
- const char *url)
-{
- if (!manager->search_engines)
- return;
-
- g_hash_table_replace (manager->search_engines,
- g_strdup (name),
- g_strdup (url));
- ephy_search_engine_manager_apply_settings (manager);
-}