/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.c

  • Committer: Gustav Hatvigsson
  • Date: 2014-04-18 19:32:15 UTC
  • mfrom: (23.1.7 GPump)
  • Revision ID: gustav.hartvigsson@gmail.com-20140418193215-h7rzruwi3fou07xe
* Rosolved a conflict that should not have happened
* Fixed a code error...

Show diffs side-by-side

added added

removed removed

Lines of Context:
21
21
#endif /* GPUMP_USE_GSETTINGS */
22
22
};
23
23
 
24
 
/* * Override the default constructer *****************************************/
 
24
/* Properties enumeration */
 
25
enum {
 
26
  PROP_0,
 
27
  
 
28
  PROP_UI_X,
 
29
  PROP_UI_Y,
 
30
  PROP_UI_H,
 
31
  PROP_UI_W,
 
32
  
 
33
  PROP_MAIN_USE_DARK,
 
34
  PROP_MAIN_FIRST_RUN,
 
35
  
 
36
  N_PROPERTIES
 
37
};
 
38
 
 
39
static GParamSpec * obj_properties[N_PROPERTIES] = { NULL, };
 
40
 
 
41
 
 
42
 
 
43
/* * Override the default constructor *****************************************/
25
44
GObject * _constructor (GType type,
26
45
                        guint n_construct_params,
27
46
                        GObjectConstructParam * construct_params);
28
47
 
29
 
 
30
 
/******************************************************************************/
 
48
/* * internal private functions ***********************************************/
 
49
void _print_errors (GError ** err_arr);
 
50
 
 
51
void gpump_settings_data_set_property (GObject * object,
 
52
                                       guint property_id,
 
53
                                       const GValue * value,
 
54
                                       GParamSpec * pspec);
 
55
 
 
56
void gpump_settings_data_get_property (GObject * object,
 
57
                                       guint property_id,
 
58
                                       GValue * value,
 
59
                                       GParamSpec * pspec);
 
60
 
 
61
/* * **************************************************************************/
31
62
GPumpSettingsData * gpump_settings_data_get_default () {
32
63
  GPumpSettingsData * self = g_object_new (GPUMP_TYPE_SETTINGS_DATA,
33
64
                                           NULL);
52
83
   * settings.
53
84
   *
54
85
   * The file names are defined static, so they do not need to be re-created,
55
 
   * each and every time te object is re-created.
 
86
   * each and every time to object is re-created.
56
87
   */
57
88
  self->priv->gpump_settings = g_key_file_new ();
58
89
  
59
90
  static gchar * gpump_settings_file_uri = NULL;
60
 
  gchar * settings_basedir = NULL;
 
91
  static gchar * settings_basedir = NULL;
61
92
  
62
93
  if (!(gpump_settings_file_uri)) {
63
94
    
90
121
                                                G_FILE_CREATE_PRIVATE,
91
122
                                                NULL,
92
123
                                                err_arr);
93
 
    if (err_arr) {
94
 
      for (int i = 0; err_arr[i] != NULL; i++) {
95
 
         g_print ("GPumpSettingsData:\n An %s error occured:\n\t%s\n\n",
96
 
                   g_quark_to_string (err_arr[i]->domain),
97
 
                   err_arr[i]->message);
98
 
      }
99
 
      abort ();
100
 
    }
 
124
    
 
125
    _print_errors (err_arr);
 
126
    
101
127
    /* Construct a set of default settings */
102
128
    
103
129
    /* UI settings */
123
149
                                       NULL,
124
150
                                       err_arr);
125
151
    
126
 
    if (err_arr) {
127
 
      for (int i = 0; err_arr[i] != NULL; i++) {
128
 
         g_print ("GPumpSettingsData:\n An %s error occured:\n\t%s\n\n",
129
 
                   g_quark_to_string (err_arr[i]->domain),
130
 
                   err_arr[i]->message);
131
 
      }
132
 
      abort ();
133
 
    }
 
152
    _print_errors (err_arr);
134
153
    
135
 
    gint written = g_output_stream_write (G_OUTPUT_STREAM (file_stream),
 
154
    g_output_stream_write (G_OUTPUT_STREAM (file_stream),
136
155
                           buff,
137
156
                           strlen (buff),
138
157
                           NULL,
139
158
                           err_arr);
140
159
    
141
 
    g_free (buff);
142
 
    
143
 
    if (err_arr) {
144
 
      for (int i = 0; err_arr[i] != NULL; i++) {
145
 
         g_print ("GPumpSettingsData:\n An %s error occured:\n\t%s\n\n",
146
 
                   g_quark_to_string (err_arr[i]->domain),
147
 
                   err_arr[i]->message);
148
 
      }
149
 
      abort ();
150
 
    }
151
 
    
 
160
    _print_errors (err_arr);
152
161
    
153
162
    g_object_unref (file_stream);
154
163
  } else {
157
166
                               gpump_settings_file_uri,
158
167
                               G_KEY_FILE_NONE,
159
168
                               err_arr);
160
 
    if (err_arr) {
161
 
      for (int i = 0; err_arr[i] != NULL; i++) {
162
 
         g_print ("GPumpSettingsData:\n An %s error occured:\n\t%s\n\n",
163
 
                   g_quark_to_string (err_arr[i]->domain),
164
 
                   err_arr[i]->message);
165
 
      }
166
 
      abort ();
167
 
    }
 
169
    _print_errors (err_arr);
 
170
    
168
171
  }
169
 
  g_free (settings_basedir);
170
172
#endif
171
173
}
172
174
 
176
178
  
177
179
  parent->constructor = _constructor;
178
180
  
 
181
  parent->get_property = gpump_settings_data_get_property;
 
182
  parent->set_property = gpump_settings_data_set_property;
 
183
  
 
184
  obj_properties[PROP_UI_X] = g_param_spec_int ("ui-x",
 
185
                                                "UI-X",
 
186
                                              "The x coordinate of the window",
 
187
                                                -1,
 
188
                                                INT_MAX,
 
189
                                                -1,
 
190
                                                G_PARAM_READABLE |
 
191
                                                G_PARAM_WRITABLE);
 
192
  
 
193
  obj_properties[PROP_UI_Y] = g_param_spec_int ("ui-y",
 
194
                                                "UI-Y",
 
195
                                              "The Y coordinate of the window",
 
196
                                                -1,
 
197
                                                INT_MAX,
 
198
                                                -1,
 
199
                                                G_PARAM_READABLE |
 
200
                                                G_PARAM_WRITABLE);
 
201
  
 
202
  obj_properties[PROP_UI_H] = g_param_spec_int ("ui-h",
 
203
                                                "UI-h",
 
204
                                              "The x coordinate of the window",
 
205
                                                1,
 
206
                                                INT_MAX,
 
207
                                                500,
 
208
                                                G_PARAM_READABLE |
 
209
                                                G_PARAM_WRITABLE);
 
210
  
 
211
  obj_properties[PROP_UI_W] = g_param_spec_int ("ui-w",
 
212
                                                "UI-w",
 
213
                                              "The x coordinate of the window",
 
214
                                                1,
 
215
                                                INT_MAX,
 
216
                                                500,
 
217
                                                G_PARAM_READABLE |
 
218
                                                G_PARAM_WRITABLE);
 
219
  
 
220
  obj_properties[PROP_MAIN_USE_DARK] = g_param_spec_boolean ("main-use-dark",
 
221
                                                "MAIN-USE-DARK",
 
222
                                            "Weather or not to use dark theme.",
 
223
                                                FALSE,
 
224
                                                G_PARAM_READABLE |
 
225
                                                G_PARAM_WRITABLE);
 
226
  
 
227
  obj_properties[PROP_MAIN_FIRST_RUN] = g_param_spec_boolean ("main-use-dark",
 
228
                                                "MAIN-USE-DARK",
 
229
                   "Weather or not this is the first time that the app is run.",
 
230
                                                TRUE,
 
231
                                                G_PARAM_READABLE |
 
232
                                                G_PARAM_WRITABLE);
 
233
  
 
234
  g_object_class_install_properties (parent, N_PROPERTIES,
 
235
                                     obj_properties);
 
236
  
179
237
  g_type_class_add_private (klass, sizeof (GPumpSettingsDataPrivate));
180
238
}
181
239
 
182
240
 
183
241
void gpump_settings_data_set (GPumpSettingsData * self,
184
242
                              gchar * name,
185
 
                              GVariant * data) {
186
 
#if GPUMP_USE_GSETTINGS
187
 
  /* TODO */
188
 
#else
189
 
  
190
 
#endif
 
243
                              GValue * data) {
 
244
  g_object_set_property (G_OBJECT (self),
 
245
                         name,
 
246
                         data);
191
247
}
192
248
 
193
249
 
194
 
GVariant * gpump_settings_data_get (GPumpSettingsData * self,
 
250
GValue * gpump_settings_data_get (GPumpSettingsData * self,
195
251
                                    gchar * name) {
196
 
#if GPUMP_USE_GSETTINGS
197
 
  /* TODO */
198
 
#else
199
 
  
200
 
#endif
 
252
  GValue * data = G_VALUE_INIT;
 
253
  g_object_set_property (G_OBJECT (self),
 
254
                         name,
 
255
                         data);
 
256
  return data;
201
257
}
202
258
 
203
259
 
209
265
  return TRUE;
210
266
#else
211
267
  
212
 
  g_print ("Commiting data to file!\n");
 
268
  g_print ("Committing data to file!\n");
213
269
  g_assert ( err_arr == NULL || *err_arr == NULL);
214
270
  
215
271
  GFileOutputStream * out_stream = g_file_replace (
224
280
    return FALSE;
225
281
  }
226
282
  
227
 
  gchar * buff = g_key_file_to_data (self->priv->gpump_settings, NULL, err_arr);
 
283
  gsize * len = NULL;
 
284
  gchar * buff = g_key_file_to_data (self->priv->gpump_settings, len, err_arr);
228
285
  
229
286
  if (err_arr) {
230
287
   g_object_unref (out_stream);
 
288
   g_free (len);
231
289
   g_free (buff);
232
290
   return FALSE;
233
291
  }
234
292
  
235
293
  g_output_stream_write (G_OUTPUT_STREAM (out_stream),
236
294
                         buff,
237
 
                         strlen (buff),
 
295
                         (gsize) len,
238
296
                         NULL,
239
297
                         err_arr);
240
298
  
241
299
  if (err_arr) {
242
300
    g_object_unref (out_stream);
 
301
    g_free (len);
243
302
    g_free (buff);
244
303
    return FALSE;
245
304
  }
246
305
  
247
306
  g_object_unref (out_stream);
 
307
  g_free (len);
248
308
  g_free (buff);
249
309
  
250
310
  return TRUE;
252
312
  g_object_unref (G_OBJECT (self));
253
313
}
254
314
 
255
 
/* * Implementation of the constructor ****************************************
 
315
/* * **************************************************************************
 
316
 * * Implementation of the constructor ****************************************
256
317
 *
257
318
 * See: blogs.gnome.org/xclaesse/2010/02/11/how-to-make-a-gobject-singleton/
258
319
 * for more information.
275
336
  return g_object_ref (self);
276
337
}
277
338
 
 
339
/* * Internal private functions ***********************************************/
 
340
void _print_errors (GError ** err_arr) {
 
341
  if (err_arr) {
 
342
    for (int i = 0; err_arr[i] != NULL; i++) {
 
343
       g_print ("GPumpSettingsData:\n An %s error occured:\n\t%s\n\n",
 
344
                 g_quark_to_string (err_arr[i]->domain),
 
345
                 err_arr[i]->message);
 
346
    }
 
347
    abort ();
 
348
  }
 
349
}
 
350
 
 
351
/* * **************************************************************************
 
352
 * * Getting and setting properties *******************************************
 
353
 * For more information see:
 
354
 * https://developer.gnome.org/gobject/stable/gobject-properties.html
 
355
 */
 
356
 
 
357
/* * declarations of setting functions */
 
358
void _set_ui_x (GPumpSettingsData * self,
 
359
                GValue * value);
 
360
void _set_ui_y (GPumpSettingsData * self,
 
361
                GValue * value);
 
362
void _set_ui_h (GPumpSettingsData * self,
 
363
                GValue * value);
 
364
void _set_ui_w (GPumpSettingsData * self,
 
365
                GValue * value);
 
366
 
 
367
void _set_main_use_dark (GPumpSettingsData * self,
 
368
                         GValue * value);
 
369
void _set_main_first_run (GPumpSettingsData * self,
 
370
                          GValue * value);
 
371
 
 
372
 
 
373
/* * declarations of getting functions */
 
374
void _get_ui_x (GPumpSettingsData * self,
 
375
                GValue * value);
 
376
void _get_ui_y (GPumpSettingsData * self,
 
377
                GValue * value);
 
378
void _get_ui_h (GPumpSettingsData * self,
 
379
                GValue * value);
 
380
void _get_ui_w (GPumpSettingsData * self,
 
381
                GValue * value);
 
382
 
 
383
void _get_main_use_dark (GPumpSettingsData * self,
 
384
                         GValue * value);
 
385
void _get_main_first_run (GPumpSettingsData * self,
 
386
                          GValue * value);
 
387
 
 
388
 
 
389
 
 
390
/* * Setting props */
 
391
void gpump_settings_data_set_property (GObject * object,
 
392
                                       guint property_id,
 
393
                                       const GValue * value,
 
394
                                       GParamSpec * pspec) {
 
395
  g_object_ref (object);
 
396
  
 
397
  GPumpSettingsData * self = GPUMP_SETTINGS_DATA (object);
 
398
  
 
399
  switch (property_id) {
 
400
    
 
401
    /* UI Props */
 
402
    case PROP_UI_X:
 
403
      _set_ui_x (self, value);
 
404
      break;
 
405
    case PROP_UI_Y:
 
406
      _set_ui_x (self, value);
 
407
      break;
 
408
    case PROP_UI_H:
 
409
      _set_ui_x (self, value);
 
410
      break;
 
411
    case PROP_UI_W:
 
412
      _set_ui_x (self, value);
 
413
      break;
 
414
    
 
415
    /* GPump generic props */
 
416
    case PROP_MAIN_USE_DARK:
 
417
      _set_main_use_dark (self, value);
 
418
      break;
 
419
    case PROP_MAIN_FIRST_RUN:
 
420
      _set_main_first_run (self, value);
 
421
      break;
 
422
    
 
423
    /* Default */
 
424
    default:
 
425
      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
 
426
      break;
 
427
    
 
428
  }
 
429
  g_object_unref (object);
 
430
}
 
431
 
 
432
/* * Getting */
 
433
void gpump_settings_data_get_property (GObject * object,
 
434
                                       guint property_id,
 
435
                                       GValue * value,
 
436
                                       GParamSpec * pspec) {
 
437
  g_object_ref (object);
 
438
  
 
439
  GPumpSettingsData * self = GPUMP_SETTINGS_DATA (object);
 
440
  
 
441
  switch (property_id) {
 
442
    
 
443
    /* UI Props */
 
444
    case PROP_UI_X:
 
445
      _get_ui_x (self, value);
 
446
      break;
 
447
    case PROP_UI_Y:
 
448
      _get_ui_x (self, value);
 
449
      break;
 
450
    case PROP_UI_H:
 
451
      _get_ui_x (self, value);
 
452
      break;
 
453
    case PROP_UI_W:
 
454
      _get_ui_x (self, value);
 
455
      break;
 
456
    
 
457
    /* GPump generic props */
 
458
    case PROP_MAIN_USE_DARK:
 
459
      _get_main_use_dark (self, value);
 
460
      break;
 
461
    case PROP_MAIN_FIRST_RUN:
 
462
      _get_main_first_run (self, value);
 
463
      break;
 
464
    
 
465
    /* Default */
 
466
    default:
 
467
      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
 
468
      break;
 
469
    
 
470
  }
 
471
  g_object_unref (object);
 
472
}
 
473
 
 
474
 
 
475
/* * implimentations of setting functions *************************************/
 
476
void _set_ui_x (GPumpSettingsData * self,
 
477
                GValue * value) {
 
478
#if GPUMP_USE_GSETTINGS
 
479
  /* TODO */
 
480
#else
 
481
  g_key_file_set_integer (self->priv->gpump_settings,
 
482
                          "ui",
 
483
                          "x",
 
484
                          g_value_get_int (value));
 
485
#endif
 
486
}
 
487
 
 
488
void _set_ui_y (GPumpSettingsData * self,
 
489
                GValue * value) {
 
490
#if GPUMP_USE_GSETTINGS
 
491
  /* TODO */
 
492
#else
 
493
  g_key_file_set_integer (self->priv->gpump_settings,
 
494
                          "ui",
 
495
                          "y",
 
496
                          g_value_get_int (value));
 
497
#endif
 
498
}
 
499
 
 
500
void _set_ui_h (GPumpSettingsData * self,
 
501
                GValue * value) {
 
502
#if GPUMP_USE_GSETTINGS
 
503
  /* TODO */
 
504
#else
 
505
  g_key_file_set_integer (self->priv->gpump_settings,
 
506
                          "ui",
 
507
                          "h",
 
508
                          g_value_get_int (value));
 
509
#endif
 
510
}
 
511
 
 
512
void _set_ui_w (GPumpSettingsData * self,
 
513
                GValue * value) {
 
514
#if GPUMP_USE_GSETTINGS
 
515
  /* TODO */
 
516
#else
 
517
  g_key_file_set_integer (self->priv->gpump_settings,
 
518
                          "ui",
 
519
                          "w",
 
520
                          g_value_get_int (value));
 
521
#endif
 
522
}
 
523
 
 
524
void _set_main_use_dark (GPumpSettingsData * self,
 
525
                         GValue * value) {
 
526
#if GPUMP_USE_GSETTINGS
 
527
  /* TODO */
 
528
#else
 
529
  g_key_file_set_integer (self->priv->gpump_settings,
 
530
                          "main",
 
531
                          "use dark",
 
532
                          g_value_get_boolean (value));
 
533
#endif
 
534
}
 
535
 
 
536
void _set_main_first_run (GPumpSettingsData * self,
 
537
                          GValue * value)  {
 
538
#if GPUMP_USE_GSETTINGS
 
539
  /* TODO */
 
540
#else
 
541
  g_key_file_set_integer (self->priv->gpump_settings,
 
542
                          "main",
 
543
                          "first run",
 
544
                          g_value_get_boolean (value));
 
545
#endif
 
546
}
 
547
 
 
548
 
 
549
/* * implimentations of getting functions *************************************/
 
550
void _get_ui_x (GPumpSettingsData * self,
 
551
                GValue * value) {
 
552
#if GPUMP_USE_GSETTINGS
 
553
  /* TODO */
 
554
#else
 
555
  GError ** err_arr = NULL;
 
556
  g_value_set_int (value,
 
557
                   g_key_file_get_integer (self->priv->gpump_settings,
 
558
                                           "ui",
 
559
                                           "x",
 
560
                                           err_arr));
 
561
  _print_errors (err_arr);
 
562
  g_clear_error (err_arr);
 
563
#endif
 
564
}
 
565
 
 
566
void _get_ui_y (GPumpSettingsData * self,
 
567
                GValue * value) {
 
568
#if GPUMP_USE_GSETTINGS
 
569
  /* TODO */
 
570
#else
 
571
  GError ** err_arr = NULL;
 
572
  g_value_set_int (value,
 
573
                   g_key_file_get_integer (self->priv->gpump_settings,
 
574
                                           "ui",
 
575
                                           "y",
 
576
                                           err_arr));
 
577
  _print_errors (err_arr);
 
578
  g_clear_error (err_arr);
 
579
#endif
 
580
}
 
581
 
 
582
void _get_ui_h (GPumpSettingsData * self,
 
583
                GValue * value) {
 
584
#if GPUMP_USE_GSETTINGS
 
585
  /* TODO */
 
586
#else
 
587
  GError ** err_arr = NULL;
 
588
  g_value_set_int (value,
 
589
                   g_key_file_get_integer (self->priv->gpump_settings,
 
590
                                           "ui",
 
591
                                           "h",
 
592
                                           err_arr));
 
593
  _print_errors (err_arr);
 
594
  g_clear_error (err_arr);
 
595
#endif
 
596
}
 
597
 
 
598
void _get_ui_w (GPumpSettingsData * self,
 
599
                GValue * value) {
 
600
#if GPUMP_USE_GSETTINGS
 
601
  /* TODO */
 
602
#else
 
603
  GError ** err_arr = NULL;
 
604
  g_value_set_int (value,
 
605
                   g_key_file_get_integer (self->priv->gpump_settings,
 
606
                                           "ui",
 
607
                                           "w",
 
608
                                           err_arr));
 
609
  _print_errors (err_arr);
 
610
  g_clear_error (err_arr);
 
611
#endif
 
612
}
 
613
 
 
614
void _get_main_use_dark (GPumpSettingsData * self,
 
615
                         GValue * value) {
 
616
#if GPUMP_USE_GSETTINGS
 
617
  /* TODO */
 
618
#else
 
619
  GError ** err_arr = NULL;
 
620
  g_value_set_int (value,
 
621
                   g_key_file_get_integer (self->priv->gpump_settings,
 
622
                                           "main",
 
623
                                           "use dark",
 
624
                                           err_arr));
 
625
  _print_errors (err_arr);
 
626
  g_clear_error (err_arr);
 
627
#endif
 
628
}
 
629
 
 
630
void _get_main_first_run (GPumpSettingsData * self,
 
631
                          GValue * value)  {
 
632
#if GPUMP_USE_GSETTINGS
 
633
  /* TODO */
 
634
#else
 
635
  GError ** err_arr = NULL;
 
636
  g_value_set_int (value,
 
637
                   g_key_file_get_integer (self->priv->gpump_settings,
 
638
                                           "main",
 
639
                                           "first run",
 
640
                                           err_arr));
 
641
  _print_errors (err_arr);
 
642
  g_clear_error (err_arr);
 
643
#endif
 
644
}
278
645