Moved the "Selective Sync Enabled" to the main preferences page
[pithos-ms-client] / trunk / Pithos.Client.WPF / Preferences / AccountViewModel.cs
1 #region
2 /* -----------------------------------------------------------------------
3  * <copyright file="AccountViewModel.cs" company="GRNet">
4  * 
5  * Copyright 2011-2012 GRNET S.A. All rights reserved.
6  *
7  * Redistribution and use in source and binary forms, with or
8  * without modification, are permitted provided that the following
9  * conditions are met:
10  *
11  *   1. Redistributions of source code must retain the above
12  *      copyright notice, this list of conditions and the following
13  *      disclaimer.
14  *
15  *   2. Redistributions in binary form must reproduce the above
16  *      copyright notice, this list of conditions and the following
17  *      disclaimer in the documentation and/or other materials
18  *      provided with the distribution.
19  *
20  *
21  * THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
22  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
23  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
24  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
25  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
26  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
27  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
28  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
29  * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
31  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
32  * POSSIBILITY OF SUCH DAMAGE.
33  *
34  * The views and conclusions contained in the software and
35  * documentation are those of the authors and should not be
36  * interpreted as representing official policies, either expressed
37  * or implied, of GRNET S.A.
38  * </copyright>
39  * -----------------------------------------------------------------------
40  */
41 #endregion
42
43 using System;
44 using Caliburn.Micro;
45 using Pithos.Interfaces;
46
47 namespace Pithos.Client.WPF.Preferences
48 {
49     /// <summary>
50     /// ViewModel wrapper for a settings Account object with change notifications
51     /// </summary>
52     public class AccountViewModel:PropertyChangedBase
53     {
54
55         private readonly AccountSettings _account;
56         
57         public AccountSettings Account
58         {
59             get { return _account; }
60         }
61
62         public AccountViewModel(AccountSettings account)
63         {
64             _account = account;            
65         }
66
67         public Uri AccountKey
68         {
69             get { return new Uri(new Uri(_account.ServerUrl) , _account.AccountName); }
70         }
71
72         public bool SelectiveSyncEnabled
73         {
74             get { return _account.SelectiveSyncEnabled; }
75             set
76             {
77                 _account.SelectiveSyncEnabled = value;
78                 NotifyOfPropertyChange(() => SelectiveSyncEnabled);
79             }
80         }
81
82         public string AccountName
83         {
84             get {
85                 return _account.AccountName;
86             }
87             set {
88                 _account.AccountName = value;
89                 NotifyOfPropertyChange(()=>AccountName);
90             }
91         }
92
93         public string RootPath
94         {
95             get { return _account.RootPath; }
96             set 
97             { 
98                 _account.RootPath = value;
99                 NotifyOfPropertyChange(()=>RootPath);
100             }
101         }
102
103         public bool IsActive
104         {
105             get { return _account.IsActive; }
106             set
107             { 
108                 _account.IsActive = value;
109                 NotifyOfPropertyChange(()=>IsActive);
110             }
111         }
112
113         public bool IsExpired
114         {
115             get { return _account.IsExpired; }
116             set 
117             { 
118                 _account.IsExpired = value;
119                 NotifyOfPropertyChange(()=>IsExpired);
120             }
121         }
122
123         public string ServerUrl
124         {
125             get { return _account.ServerUrl; }
126             set 
127             { 
128                 _account.ServerUrl = value;
129                 NotifyOfPropertyChange(()=>ServerUrl);
130             }
131         }
132
133         public string ApiKey
134         {
135             get { return _account.ApiKey; }
136             set 
137             {
138                 _account.ApiKey = value;
139                 IsExpired = false;
140                 NotifyOfPropertyChange(() => ApiKey);
141             }
142         }
143
144
145     }
146 }