~ubuntu-branches/debian/sid/gmtp/sid

« back to all changes in this revision

Viewing changes to src/prefs.c

  • Committer: Bazaar Package Importer
  • Author(s): Alessio Treglia
  • Date: 2011-01-24 17:21:38 UTC
  • mfrom: (1.1.2 upstream)
  • Revision ID: james.westby@ubuntu.com-20110124172138-30ssabr3ki093ji8
Tags: 0.8-1
* New upstream release.
* Refresh patches.
* Update debian/copyright.
* Add patch to improve the Italian translation.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* 
 
2
*
 
3
*   File: prefs.c
 
4
*   
 
5
*   Copyright (C) 2009-2011 Darran Kartaschew
 
6
*
 
7
*   This file is part of the gMTP package.
 
8
*
 
9
*   gMTP is free software; you can redistribute it and/or modify
 
10
*   it under the terms of the BSD License as included within the
 
11
*   file 'COPYING' located in the root directory
 
12
*
 
13
*/
 
14
 
 
15
#include <glib.h>
 
16
#include <glib/gprintf.h>
 
17
#include <glib/gi18n.h>
 
18
#include <gtk/gtk.h>
 
19
#include <gconf/gconf.h>
 
20
#include <gconf/gconf-client.h>
 
21
#include <libmtp.h>
 
22
#include <id3tag.h>
 
23
 
 
24
#include "main.h"
 
25
#include "interface.h"
 
26
#include "callbacks.h"
 
27
#include "mtp.h"
 
28
#include "prefs.h"
 
29
 
 
30
Preferences_Struct Preferences;
 
31
GConfClient *gconfconnect = NULL;
 
32
guint gconf_callback_id;
 
33
 
 
34
void setupPreferences(){
 
35
        // We setup default Preferences.
 
36
        Preferences.ask_download_path = TRUE;
 
37
        Preferences.attemptDeviceConnectOnStart = TRUE;
 
38
        #ifdef WIN32
 
39
        Preferences.fileSystemDownloadPath = g_string_new(g_getenv("HOMEPATH"));
 
40
        Preferences.fileSystemUploadPath = g_string_new(g_getenv("HOMEPATH"));
 
41
        #else
 
42
        Preferences.fileSystemDownloadPath = g_string_new(g_getenv("HOME"));
 
43
        Preferences.fileSystemUploadPath = g_string_new(g_getenv("HOME"));
 
44
        #endif
 
45
    // Now setup our gconf callbacks;
 
46
    if(gconfconnect == NULL)
 
47
        gconfconnect = gconf_client_get_default();
 
48
    if(gconf_client_dir_exists(gconfconnect, "/apps/gMTP", NULL) == TRUE) {
 
49
        gconf_client_add_dir(gconfconnect, "/apps/gMTP", GCONF_CLIENT_PRELOAD_ONELEVEL , NULL );
 
50
        gconf_callback_id = gconf_client_notify_add(gconfconnect, "/apps/gMTP", (GConfClientNotifyFunc) gconf_callback_func, NULL, NULL, NULL) ;
 
51
    }
 
52
        // Now attempt to read the config file from the user config folder.
 
53
        loadPreferences();
 
54
        // Now print our preferences
 
55
        //g_printf("Upload Path = %s\nDownload Path = %s\nDownloadPrompt = %x\nAutoConnect = %x\n",
 
56
        //               Preferences.fileSystemUploadPath->str, Preferences.fileSystemDownloadPath->str,
 
57
        //               Preferences.ask_download_path, Preferences.attemptDeviceConnectOnStart);
 
58
}
 
59
 
 
60
gboolean loadPreferences(){
 
61
 
 
62
        if(gconf_client_dir_exists(gconfconnect, "/apps/gMTP", NULL) == TRUE) {
 
63
                gconf_client_preload(gconfconnect, "/apps/gMTP", GCONF_CLIENT_PRELOAD_ONELEVEL, NULL);
 
64
                Preferences.ask_download_path = gconf_client_get_bool (gconfconnect, "/apps/gMTP/promptDownloadPath", NULL);
 
65
                Preferences.confirm_file_delete_op = gconf_client_get_bool (gconfconnect, "/apps/gMTP/confirmFileDelete", NULL);
 
66
        Preferences.prompt_overwrite_file_op = gconf_client_get_bool (gconfconnect, "/apps/gMTP/promptOverwriteFile", NULL);
 
67
                Preferences.attemptDeviceConnectOnStart = gconf_client_get_bool (gconfconnect, "/apps/gMTP/autoconnectdevice", NULL);
 
68
                Preferences.fileSystemDownloadPath = g_string_new(gconf_client_get_string(gconfconnect, "/apps/gMTP/DownloadPath", NULL));
 
69
                Preferences.fileSystemUploadPath = g_string_new(gconf_client_get_string(gconfconnect, "/apps/gMTP/UploadPath", NULL));
 
70
        Preferences.view_size = gconf_client_get_bool (gconfconnect, "/apps/gMTP/viewFileSize", NULL);
 
71
        Preferences.view_type = gconf_client_get_bool (gconfconnect, "/apps/gMTP/viewFileType", NULL);
 
72
        Preferences.view_track_number = gconf_client_get_bool (gconfconnect, "/apps/gMTP/viewTrackNumber", NULL);
 
73
        Preferences.view_title = gconf_client_get_bool (gconfconnect, "/apps/gMTP/viewTitle", NULL);
 
74
        Preferences.view_artist = gconf_client_get_bool (gconfconnect, "/apps/gMTP/viewArtist", NULL);
 
75
        Preferences.view_album = gconf_client_get_bool (gconfconnect, "/apps/gMTP/viewAlbum", NULL);
 
76
        Preferences.view_year = gconf_client_get_bool (gconfconnect, "/apps/gMTP/viewYear", NULL);
 
77
        Preferences.view_genre = gconf_client_get_bool (gconfconnect, "/apps/gMTP/viewGenre", NULL);
 
78
        Preferences.view_duration = gconf_client_get_bool (gconfconnect, "/apps/gMTP/viewDuration", NULL);
 
79
                //g_print("Settings loaded\n");
 
80
        } else {
 
81
                g_fprintf(stderr, _("WARNING: gconf schema invalid, reverting to defaults. Please ensure schema is loaded in gconf database.\n"));
 
82
        }
 
83
        gconf_client_clear_cache(gconfconnect);
 
84
    // Set some menu options and view states.
 
85
    gtk_tree_view_column_set_visible(column_Size, Preferences.view_size);
 
86
    gtk_tree_view_column_set_visible(column_Type, Preferences.view_type);
 
87
    gtk_tree_view_column_set_visible(column_Track_Number, Preferences.view_track_number);
 
88
    gtk_tree_view_column_set_visible(column_Title, Preferences.view_title);
 
89
    gtk_tree_view_column_set_visible(column_Artist, Preferences.view_artist);
 
90
    gtk_tree_view_column_set_visible(column_Album, Preferences.view_album);
 
91
    gtk_tree_view_column_set_visible(column_Year, Preferences.view_year);
 
92
    gtk_tree_view_column_set_visible(column_Genre, Preferences.view_genre);
 
93
    gtk_tree_view_column_set_visible(column_Duration, Preferences.view_duration);
 
94
 
 
95
    gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu_view_filesize), Preferences.view_size);
 
96
    gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu_view_filetype), Preferences.view_type);
 
97
    gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu_view_track_number), Preferences.view_track_number);
 
98
    gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu_view_title), Preferences.view_title);
 
99
    gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu_view_artist), Preferences.view_artist);
 
100
    gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu_view_album), Preferences.view_album);
 
101
    gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu_view_year), Preferences.view_year);
 
102
    gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu_view_genre), Preferences.view_genre);
 
103
    gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu_view_duration), Preferences.view_duration);
 
104
    
 
105
        return TRUE;
 
106
}
 
107
 
 
108
gboolean savePreferences(){
 
109
        //GConfClient *gconfconnect;
 
110
        //gconfconnect = gconf_client_get_default();
 
111
        if(gconf_client_dir_exists(gconfconnect, "/apps/gMTP", NULL) == TRUE) {
 
112
                gconf_client_preload(gconfconnect, "/apps/gMTP", GCONF_CLIENT_PRELOAD_ONELEVEL, NULL);
 
113
                gconf_client_set_bool (gconfconnect, "/apps/gMTP/promptDownloadPath", Preferences.ask_download_path, NULL);
 
114
                gconf_client_set_bool (gconfconnect, "/apps/gMTP/autoconnectdevice", Preferences.attemptDeviceConnectOnStart, NULL);
 
115
        gconf_client_set_bool (gconfconnect, "/apps/gMTP/promptOverwriteFile", Preferences.prompt_overwrite_file_op, NULL);
 
116
                gconf_client_set_bool (gconfconnect, "/apps/gMTP/confirmFileDelete", Preferences.confirm_file_delete_op, NULL);
 
117
                gconf_client_set_string(gconfconnect, "/apps/gMTP/DownloadPath",Preferences.fileSystemDownloadPath->str, NULL);
 
118
                gconf_client_set_string(gconfconnect, "/apps/gMTP/UploadPath", Preferences.fileSystemUploadPath->str, NULL);
 
119
        gconf_client_set_bool (gconfconnect, "/apps/gMTP/viewFileSize", Preferences.view_size, NULL);
 
120
        gconf_client_set_bool (gconfconnect, "/apps/gMTP/viewFileType", Preferences.view_type, NULL);
 
121
        gconf_client_set_bool (gconfconnect, "/apps/gMTP/viewTrackNumber", Preferences.view_track_number, NULL);
 
122
        gconf_client_set_bool (gconfconnect, "/apps/gMTP/viewTitle", Preferences.view_title, NULL);
 
123
        gconf_client_set_bool (gconfconnect, "/apps/gMTP/viewArtist", Preferences.view_artist, NULL);
 
124
        gconf_client_set_bool (gconfconnect, "/apps/gMTP/viewAlbum", Preferences.view_album, NULL);
 
125
        gconf_client_set_bool (gconfconnect, "/apps/gMTP/viewYear", Preferences.view_year, NULL);
 
126
        gconf_client_set_bool (gconfconnect, "/apps/gMTP/viewGenre", Preferences.view_genre, NULL);
 
127
        gconf_client_set_bool (gconfconnect, "/apps/gMTP/viewDuration", Preferences.view_duration, NULL);
 
128
                //g_print("Settings saved\n");
 
129
        } else {
 
130
                g_fprintf(stderr, _("WARNING: gconf schema invalid, unable to save! Please ensure schema is loaded in gconf database.\n"));
 
131
        }
 
132
        gconf_client_suggest_sync(gconfconnect, NULL);
 
133
        gconf_client_clear_cache(gconfconnect);
 
134
        return TRUE;
 
135
}
 
136
 
 
137
void gconf_callback_func(GConfClient *client, guint cnxn_id, GConfEntry *entry, gpointer user_data){
 
138
    //g_printf("Gconf callback - %s\n", entry->key);
 
139
    if(g_ascii_strcasecmp(entry->key, "/apps/gMTP/promptDownloadPath") == 0){
 
140
        //set our promptDownloadPath in Preferences
 
141
        Preferences.ask_download_path = (gboolean) gconf_value_get_bool((const GConfValue*)gconf_entry_get_value((const GConfEntry*)entry));
 
142
        //g_printf("/apps/gMTP/promptDownloadPath = %d\n", Preferences.ask_download_path );
 
143
        if(windowPrefsDialog != NULL) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbuttonDownloadPath), Preferences.ask_download_path);
 
144
        return;
 
145
    }
 
146
    if(g_ascii_strcasecmp(entry->key, "/apps/gMTP/autoconnectdevice") == 0){
 
147
        //set our promptDownloadPath in Preferences
 
148
        Preferences.attemptDeviceConnectOnStart = (gboolean) gconf_value_get_bool((const GConfValue*)gconf_entry_get_value((const GConfEntry*)entry));
 
149
        //g_printf("/apps/gMTP/autoconnectdevice = %d\n", Preferences.attemptDeviceConnectOnStart );
 
150
        if(windowPrefsDialog != NULL) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbuttonDeviceConnect), Preferences.attemptDeviceConnectOnStart);
 
151
        return;
 
152
    }
 
153
    if(g_ascii_strcasecmp(entry->key, "/apps/gMTP/promptOverwriteFile") == 0){
 
154
        //set our promptDownloadPath in Preferences
 
155
        Preferences.prompt_overwrite_file_op = (gboolean) gconf_value_get_bool((const GConfValue*)gconf_entry_get_value((const GConfEntry*)entry));
 
156
        //g_printf("/apps/gMTP/promptOverwriteFile = %d\n", Preferences.prompt_overwrite_file_op );
 
157
        if(windowPrefsDialog != NULL) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbuttonConfirmOverWriteFileOp), Preferences.prompt_overwrite_file_op);
 
158
        return;
 
159
    }
 
160
    if(g_ascii_strcasecmp(entry->key, "/apps/gMTP/confirmFileDelete") == 0){
 
161
        //set our promptDownloadPath in Preferences
 
162
        Preferences.confirm_file_delete_op = (gboolean) gconf_value_get_bool((const GConfValue*)gconf_entry_get_value((const GConfEntry*)entry));
 
163
        //g_printf("/apps/gMTP/confirmFileDelete = %d\n", Preferences.confirm_file_delete_op );
 
164
        if(windowPrefsDialog != NULL) gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkbuttonConfirmFileOp), Preferences.confirm_file_delete_op);
 
165
        return;
 
166
    }
 
167
    if(g_ascii_strcasecmp(entry->key, "/apps/gMTP/DownloadPath") == 0){
 
168
        //set our promptDownloadPath in Preferences
 
169
        Preferences.fileSystemDownloadPath = g_string_assign(Preferences.fileSystemDownloadPath, gconf_value_to_string((const GConfValue*)gconf_entry_get_value((const GConfEntry*)entry)));
 
170
        //g_printf("/apps/gMTP/DownloadPath = %s\n", Preferences.fileSystemDownloadPath->str );
 
171
        if(windowPrefsDialog != NULL) gtk_entry_set_text(GTK_ENTRY(entryDownloadPath),  Preferences.fileSystemDownloadPath->str);
 
172
        return;
 
173
    }
 
174
    if(g_ascii_strcasecmp(entry->key, "/apps/gMTP/UploadPath") == 0){
 
175
        //set our promptDownloadPath in Preferences
 
176
        Preferences.fileSystemUploadPath = g_string_assign(Preferences.fileSystemUploadPath, gconf_value_to_string((const GConfValue*)gconf_entry_get_value((const GConfEntry*)entry)));
 
177
        //g_printf("/apps/gMTP/UploadPath = %s\n", Preferences.fileSystemUploadPath->str );
 
178
        if(windowPrefsDialog != NULL) gtk_entry_set_text(GTK_ENTRY(entryUploadPath), Preferences.fileSystemUploadPath->str);
 
179
        return;
 
180
    }
 
181
    // View menu Options.
 
182
    if(g_ascii_strcasecmp(entry->key, "/apps/gMTP/viewFileSize") == 0){
 
183
        //set our promptDownloadPath in Preferences
 
184
        Preferences.view_size = (gboolean) gconf_value_get_bool((const GConfValue*)gconf_entry_get_value((const GConfEntry*)entry));
 
185
        gtk_tree_view_column_set_visible(column_Size, Preferences.view_size);
 
186
        gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu_view_filesize), Preferences.view_size);
 
187
        return;
 
188
    }
 
189
    if(g_ascii_strcasecmp(entry->key, "/apps/gMTP/viewFileType") == 0){
 
190
        //set our promptDownloadPath in Preferences
 
191
        Preferences.view_type = (gboolean) gconf_value_get_bool((const GConfValue*)gconf_entry_get_value((const GConfEntry*)entry));
 
192
        gtk_tree_view_column_set_visible(column_Type, Preferences.view_type);
 
193
        gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu_view_filetype), Preferences.view_type);
 
194
        return;
 
195
    }
 
196
    if(g_ascii_strcasecmp(entry->key, "/apps/gMTP/viewTrackNumber") == 0){
 
197
        //set our promptDownloadPath in Preferences
 
198
        Preferences.view_track_number = (gboolean) gconf_value_get_bool((const GConfValue*)gconf_entry_get_value((const GConfEntry*)entry));
 
199
        gtk_tree_view_column_set_visible(column_Track_Number, Preferences.view_track_number);
 
200
        gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu_view_track_number), Preferences.view_track_number);
 
201
        return;
 
202
    }
 
203
    if(g_ascii_strcasecmp(entry->key, "/apps/gMTP/viewTitle") == 0){
 
204
        //set our promptDownloadPath in Preferences
 
205
        Preferences.view_title = (gboolean) gconf_value_get_bool((const GConfValue*)gconf_entry_get_value((const GConfEntry*)entry));
 
206
        gtk_tree_view_column_set_visible(column_Title, Preferences.view_title);
 
207
        gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu_view_title), Preferences.view_title);
 
208
        return;
 
209
    }
 
210
    if(g_ascii_strcasecmp(entry->key, "/apps/gMTP/viewArtist") == 0){
 
211
        //set our promptDownloadPath in Preferences
 
212
        Preferences.view_artist = (gboolean) gconf_value_get_bool((const GConfValue*)gconf_entry_get_value((const GConfEntry*)entry));
 
213
        gtk_tree_view_column_set_visible(column_Artist, Preferences.view_artist);
 
214
        gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu_view_artist), Preferences.view_artist);
 
215
        return;
 
216
    }
 
217
    if(g_ascii_strcasecmp(entry->key, "/apps/gMTP/viewAlbum") == 0){
 
218
        //set our promptDownloadPath in Preferences
 
219
        Preferences.view_album = (gboolean) gconf_value_get_bool((const GConfValue*)gconf_entry_get_value((const GConfEntry*)entry));
 
220
        gtk_tree_view_column_set_visible(column_Album, Preferences.view_album);
 
221
        gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu_view_album), Preferences.view_album);
 
222
        return;
 
223
    }
 
224
    if(g_ascii_strcasecmp(entry->key, "/apps/gMTP/viewYear") == 0){
 
225
        //set our promptDownloadPath in Preferences
 
226
        Preferences.view_year = (gboolean) gconf_value_get_bool((const GConfValue*)gconf_entry_get_value((const GConfEntry*)entry));
 
227
        gtk_tree_view_column_set_visible(column_Year, Preferences.view_year);
 
228
        gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu_view_year), Preferences.view_year);
 
229
        return;
 
230
    }
 
231
    if(g_ascii_strcasecmp(entry->key, "/apps/gMTP/viewGenre") == 0){
 
232
        //set our promptDownloadPath in Preferences
 
233
        Preferences.view_genre = (gboolean) gconf_value_get_bool((const GConfValue*)gconf_entry_get_value((const GConfEntry*)entry));
 
234
        gtk_tree_view_column_set_visible(column_Genre, Preferences.view_genre);
 
235
        gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu_view_genre), Preferences.view_genre);
 
236
        return;
 
237
    }
 
238
    if(g_ascii_strcasecmp(entry->key, "/apps/gMTP/viewDuration") == 0){
 
239
        //set our promptDownloadPath in Preferences
 
240
        Preferences.view_duration = (gboolean) gconf_value_get_bool((const GConfValue*)gconf_entry_get_value((const GConfEntry*)entry));
 
241
        gtk_tree_view_column_set_visible(column_Duration, Preferences.view_duration);
 
242
        gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu_view_duration), Preferences.view_duration);
 
243
        return;
 
244
    }
 
245
    g_fprintf(stderr, _("WARNING: gconf_callback_func() failed - we got a callback for a key thats not ours?\n"));
 
246
}