~ubuntu-branches/ubuntu/precise/gnome-control-center/precise-updates

« back to all changes in this revision

Viewing changes to panels/keyboard/keyboard-general.c

Tags: upstream-3.0.1.1
ImportĀ upstreamĀ versionĀ 3.0.1.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * Copyright (C) 2010 Intel, Inc
 
3
 *
 
4
 * This program is free software; you can redistribute it and/or modify
 
5
 * it under the terms of the GNU General Public License as published by
 
6
 * the Free Software Foundation; either version 2 of the License, or
 
7
 * (at your option) any later version.
 
8
 *
 
9
 * This program is distributed in the hope that it will be useful,
 
10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 
11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
12
 * GNU General Public License for more details.
 
13
 *
 
14
 * You should have received a copy of the GNU General Public License
 
15
 * along with this program; if not, write to the Free Software
 
16
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
17
 *
 
18
 * Authors: Thomas Wood <thomas.wood@intel.com>
 
19
 *          Rodrigo Moya <rodrigo@gnome.org>
 
20
 */
 
21
 
 
22
#include "keyboard-general.h"
 
23
 
 
24
static GSettings *keyboard_settings = NULL;
 
25
static GSettings *interface_settings = NULL;
 
26
 
 
27
static gboolean
 
28
get_rate (GValue   *value,
 
29
          GVariant *variant,
 
30
          gpointer  user_data)
 
31
{
 
32
  int rate;
 
33
  gdouble fraction;
 
34
 
 
35
  rate = g_variant_get_uint32 (variant);
 
36
  fraction = 1.0 / ((gdouble) rate / 1000.0);
 
37
  g_value_set_double (value, fraction);
 
38
  g_debug ("Getting fraction %f for msecs %d", fraction, rate);
 
39
  return TRUE;
 
40
}
 
41
 
 
42
static GVariant *
 
43
set_rate (const GValue       *value,
 
44
          const GVariantType *expected_type,
 
45
          gpointer            user_data)
 
46
{
 
47
  gdouble rate;
 
48
  int msecs;
 
49
 
 
50
  rate = g_value_get_double (value);
 
51
  msecs = (1 / rate) * 1000;
 
52
  g_debug ("Setting repeat rate to %d", msecs);
 
53
  return g_variant_new_uint32 (msecs);
 
54
}
 
55
 
 
56
void
 
57
keyboard_general_init (CcPanel *panel, GtkBuilder *builder)
 
58
{
 
59
  if (keyboard_settings == NULL)
 
60
    keyboard_settings = g_settings_new ("org.gnome.settings-daemon.peripherals.keyboard");
 
61
 
 
62
  if (interface_settings == NULL)
 
63
    interface_settings = g_settings_new ("org.gnome.desktop.interface");
 
64
 
 
65
  g_settings_bind (keyboard_settings, "repeat",
 
66
                   gtk_builder_get_object (builder, "repeat_toggle"), "active",
 
67
                   G_SETTINGS_BIND_DEFAULT);
 
68
  g_settings_bind (keyboard_settings, "repeat",
 
69
                   gtk_builder_get_object (builder, "repeat_table"), "sensitive",
 
70
                   G_SETTINGS_BIND_GET);
 
71
  
 
72
  g_settings_bind (keyboard_settings, "delay",
 
73
                   gtk_range_get_adjustment (GTK_RANGE (gtk_builder_get_object (builder, "repeat_delay_scale"))), "value",
 
74
                   G_SETTINGS_BIND_DEFAULT);
 
75
  g_settings_bind_with_mapping (keyboard_settings, "repeat-interval",
 
76
                                gtk_range_get_adjustment (GTK_RANGE (gtk_builder_get_object (builder, "repeat_speed_scale"))), "value",
 
77
                                G_SETTINGS_BIND_DEFAULT,
 
78
                                get_rate, set_rate, NULL, NULL);
 
79
 
 
80
  g_settings_bind (interface_settings, "cursor-blink",
 
81
                   gtk_builder_get_object (builder, "cursor_toggle"), "active",
 
82
                   G_SETTINGS_BIND_DEFAULT);
 
83
  g_settings_bind (interface_settings, "cursor-blink",
 
84
                   gtk_builder_get_object (builder, "cursor_table"), "sensitive",
 
85
                   G_SETTINGS_BIND_GET);
 
86
 
 
87
  g_settings_bind (interface_settings, "cursor-blink-time",
 
88
                   gtk_range_get_adjustment (GTK_RANGE (gtk_builder_get_object (builder, "cursor_blink_time_scale"))), "value",
 
89
                   G_SETTINGS_BIND_DEFAULT);
 
90
}
 
91
 
 
92
void
 
93
keyboard_general_dispose (CcPanel *panel)
 
94
{
 
95
  if (keyboard_settings != NULL)
 
96
    {
 
97
      g_object_unref (keyboard_settings);
 
98
      keyboard_settings = NULL;
 
99
    }
 
100
 
 
101
  if (interface_settings != NULL)
 
102
    {
 
103
      g_object_unref (interface_settings);
 
104
      interface_settings = NULL;
 
105
    }
 
106
}