summaryrefslogtreecommitdiffstats
path: root/ComicRackWebViewer/UserSettings.cs
blob: 46c1c0e33aa1e931b80dc9f6c903dcdf05d389ca (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
/*
 * Created by SharpDevelop.
 * User: jeroen
 * Date: 3/19/2013
 * Time: 8:08 PM
 * 
 * To change this template use Tools | Options | Coding | Edit Standard Headers.
 */

using System;
using System.Data.SQLite;
using System.Diagnostics;

namespace BCR
{
    

    public class UserSettings
    {
        // These must be properties, otherwise NancyFX model binding won't work.
        public bool open_current_comic_at_launch { get; set; }
        public bool open_next_comic { get; set; }
        public int page_fit_mode  { get; set; } // 1: Fit width, 2: Full page
        public int zoom_on_tap  { get; set; } // 0: off, 1: singletap, 2: doubletap
        public int toggle_paging_bar  { get; set; } // 0: off, 1: singletap, 2: doubletap
        public bool use_page_turn_drag  { get; set; }
        public int page_turn_drag_threshold { get; set; }
        public bool use_page_change_area { get; set; }
        public int page_change_area_width { get; set; }
        public bool use_comicrack_progress { get; set; } // if true, use reading progress from CR comicbook info. if false, use per user progress from userdatabase.
        public Guid home_list_id { get; set; }
        public string full_name { get; set; }


        public UserSettings()
        {
          open_current_comic_at_launch = true; 
          open_next_comic = true;
          page_fit_mode = 1;
          zoom_on_tap = 1;
          toggle_paging_bar = 2;
          use_page_turn_drag = true;
          page_turn_drag_threshold = 75;
          use_page_change_area = true;
          page_change_area_width = 50;
          use_comicrack_progress = false;
          full_name = "";
        }
        
        public bool Validate()
        {
          return true;
        }
        
        public void Save(BCRUser user)
        {
          string s = String.Format("UPDATE user_settings SET open_current_comic_at_launch={0}, open_next_comic={1}, page_fit_mode={2}," +
                "zoom_on_tap={3}, toggle_paging_bar={4}, use_page_turn_drag={5}, page_turn_drag_threshold={6}, use_page_change_area={7}," +
                "page_change_area_width={8}, use_comicrack_progress={9} WHERE user_id={10};", open_current_comic_at_launch?1:0, open_next_comic?1:0, page_fit_mode,
                zoom_on_tap, toggle_paging_bar, use_page_turn_drag?1:0, page_turn_drag_threshold, use_page_change_area?1:0, page_change_area_width, use_comicrack_progress?1:0, user.UserId);
          
          Database.Instance.ExecuteNonQuery(s);
        }
        
        public void Load(BCRUser user)
        {
          using (SQLiteDataReader reader = Database.Instance.ExecuteReader(@"SELECT open_current_comic_at_launch, open_next_comic, page_fit_mode,
                zoom_on_tap, toggle_paging_bar, use_page_turn_drag, page_turn_drag_threshold, use_page_change_area, page_change_area_width, use_comicrack_progress
                FROM user_settings WHERE user_id = " + user.UserId + " LIMIT 1;"))
          {
            if (reader.Read())
            {
              try
              {
                open_current_comic_at_launch = reader.GetBoolean(0);
                open_next_comic = reader.GetBoolean(1);
                page_fit_mode = reader.GetInt32(2);
                zoom_on_tap = reader.GetInt32(3);
                toggle_paging_bar = reader.GetInt32(4);
                use_page_turn_drag = reader.GetBoolean(5);
                page_turn_drag_threshold = reader.GetInt32(6);
                use_page_change_area = reader.GetBoolean(7);
                page_change_area_width = reader.GetInt32(8);
                use_comicrack_progress = reader.GetBoolean(9);
                full_name = user.FullName;
              }
              catch (Exception ex)
              {
                Trace.WriteLine(ex);
              }
            }
          }
        }
    }
}