/gpump/trunk

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/gpump/trunk

« back to all changes in this revision

Viewing changes to src/GPumpSettingsData.h

  • Committer: Gustav Hatvigsson
  • Date: 2014-04-14 07:33:32 UTC
  • Revision ID: gustav.hartvigsson@gmail.com-20140414073332-eagun3d8y56k3dtd
* Switched to GKeyFile instead of GSettings, for the time being.

** This is untested code **

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* c-basic-offset: 2; tab-width: 2; indent-tabs-mode: nil
 
2
 * vi: set shiftwidth=2 tabstop=2 expandtab:
 
3
 * :indentSize=2:tabSize=2:noTabs=true:
 
4
 */
 
5
 
 
6
#ifndef __H_GPUMP_SETTINGS_DATA__
 
7
#define __H_GPUMP_SETTINGS_DATA__
 
8
 
 
9
/**
 
10
 * If this is set, it will use GSettings, otherwise it will use GKeyFile
 
11
 * and store store the data in a .ini format conf file in the configuration
 
12
 * directory.
 
13
 */
 
14
#define GPUMP_USE_GSETTINGS 0
 
15
 
 
16
#include <gtk/gtk.h>
 
17
#include <gio/gio.h>
 
18
#include <rest/oauth2-proxy.h>
 
19
#include <rest/rest-proxy-call.h>
 
20
#include <stdlib.h>
 
21
#include <string.h>
 
22
#include <glib/gi18n.h>
 
23
 
 
24
#define GPUMP_TYPE_SETTINGS_DATA              (gpump_settings_data_get_type ())
 
25
#define GPUMP_SETTINGS_DATA(obj)              (G_TYPE_CHECK_INSTANCE_CAST((obj), GPUMP_TYPE_SETTINGS_DATA, GPumpSettingsData))
 
26
#define GPUMP_SETTINGS_DATA_CLASS(klass)      (G_TYPE_CHECK_CLASS_CAST((klass), GPUMP_TYPE_SETTINGS_DATA, GPumpSettingsDataClass))
 
27
#define GPUMP_IS_SETTINGS_DATA(obj)           (G_TYPE_CHECK_INSTANCE_TYPE((obj), GPUMP_TYPE_SETTINGS_DATA))
 
28
#define GPUMP_IS_SETTINGS_DATA_CLASS(klass)   (G_TYPE_CHECK_CLASS_TYPE ((klass), GPUMP_TYPE_SETTINGS_DATA))
 
29
#define GPUMP_SETTINGS_DATA_GET_CLASS(obj)    (G_TYPE_INSTANCE_GET_CLASS((obj), GPUMP_TYPE_SETTINGS_DATA, GPumpSettingsDataClass))
 
30
 
 
31
typedef struct GPumpSettingsData GPumpSettingsData;
 
32
typedef struct GPumpSettingsDataClass GPumpSettingsDataClass;
 
33
typedef struct GPumpSettingsDataPrivate GPumpSettingsDataPrivate;
 
34
 
 
35
/* 
 
36
 * NAMESPACE: gpump_*
 
37
 *
 
38
 * CLASS NAMESPACE: gpump_settings_data_*
 
39
 */
 
40
 
 
41
/**
 
42
 * A class that holds the settings data.
 
43
 *
 
44
 * the reason for this is to split data and wiev, simplefying the data modle
 
45
 * and what not.
 
46
 *
 
47
 * This is a singletonian class, to get the instance use the provided
 
48
 * gpump_settings_data_get_default () function.
 
49
 *
 
50
 * Pleace note that this is not thread safe, and should be used with care.
 
51
 */
 
52
struct GPumpSettingsData {
 
53
  GObject parent;
 
54
  
 
55
  /* Private data is defined in the C file. */
 
56
  GPumpSettingsDataPrivate * priv;
 
57
};
 
58
 
 
59
struct GPumpSettingsDataClass {
 
60
  GObjectClass parent;
 
61
};
 
62
 
 
63
 
 
64
/**
 
65
 * Create a GPumpSettingsData instance if it does not already exist,
 
66
 * if it exists return a pointer to the object.
 
67
 *
 
68
 * The object's reference count is increased every time this is called, so
 
69
 * you need to unref it whet you are done with it.
 
70
 */
 
71
GPumpSettingsData * gpump_settings_data_get_default ();
 
72
 
 
73
/**
 
74
 * Sets a value in the.
 
75
 *
 
76
 * valid names are:
 
77
 * - ui-x
 
78
 * - ui-y
 
79
 * - ui-h
 
80
 * - ui-w
 
81
 * - main-use-dark
 
82
 * 
 
83
 * if the app is compiled in non-gsettings mode, you will have to use
 
84
 * gpump_settings_data_commit ()  whet to commit the changes.
 
85
 *
 
86
 * @param self the object to perform the operation on.
 
87
 * @param name the name of the setting to change.
 
88
 * @param data the a GVariant that contains the data that should be set.
 
89
 *
 
90
 * If the data type in the data does not match the expected value type, the
 
91
 * value will not be set.
 
92
 */
 
93
void gpump_settings_data_set (GPumpSettingsData * self,
 
94
                              gchar * name,
 
95
                              GVariant * data);
 
96
 
 
97
 
 
98
/**
 
99
 * Gets the data given a name, see gpump_settings_data_set's documentation
 
100
 * for more information.
 
101
 *
 
102
 * @param self the object to get the data from.
 
103
 * @param name the name of the value to be returned
 
104
 *
 
105
 * @returns a GValiant containing the value of that was requested.
 
106
 */
 
107
GVariant * gpump_settings_data_get (GPumpSettingsData * self,
 
108
                                    gchar * name);
 
109
 
 
110
/**
 
111
 * Commit the the changes to file, only usefile when using compiled in
 
112
 * non-GSettings mode. In GSettings mode this will do nothing.
 
113
 *
 
114
 * @param self the object to perform the operation on
 
115
 * @param err returns on error if an error happens, should be NULL.
 
116
 *
 
117
 * @returns TRUE if no error occurred, FALSE otherwise
 
118
 *
 
119
 * @warning This operation may be relatively I/O intensive, because the file
 
120
 * is rewritten.
 
121
 */
 
122
gboolean gpump_settings_data_commit (GPumpSettingsData * self,
 
123
                                     GError * err);
 
124
 
 
125
#endif /* #ifndef __H_GPUMP_SETTINGS_DATA__*/