c7d3e50e49d2947581a7a318fbed811c121c39cc
[pithos-ms-client] / trunk%2FPithos.Client.WPF%2FPreferences%2FAccountViewModel.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 using Caliburn.Micro;
43 using Pithos.Interfaces;
44
45 namespace Pithos.Client.WPF.Preferences
46 {
47     /// <summary>
48     /// ViewModel wrapper for a settings Account object with change notifications
49     /// </summary>
50     public class AccountViewModel:PropertyChangedBase
51     {
52
53         private readonly AccountSettings _account;
54         
55         public AccountSettings Account
56         {
57             get { return _account; }
58         }
59
60         public AccountViewModel(AccountSettings account)
61         {
62             _account = account;            
63         }
64
65
66         public string AccountName
67         {
68             get {
69                 return _account.AccountName;
70             }
71             set {
72                 _account.AccountName = value;
73                 NotifyOfPropertyChange(()=>AccountName);
74             }
75         }
76
77         public string RootPath
78         {
79             get { return _account.RootPath; }
80             set 
81             { 
82                 _account.RootPath = value;
83                 NotifyOfPropertyChange(()=>RootPath);
84             }
85         }
86
87         public bool IsActive
88         {
89             get { return _account.IsActive; }
90             set
91             { 
92                 _account.IsActive = value;
93                 NotifyOfPropertyChange(()=>IsActive);
94             }
95         }
96
97         public bool IsExpired
98         {
99             get { return _account.IsExpired; }
100             set 
101             { 
102                 _account.IsExpired = value;
103                 NotifyOfPropertyChange(()=>IsExpired);
104             }
105         }
106
107         public string ServerUrl
108         {
109             get { return _account.ServerUrl; }
110             set 
111             { 
112                 _account.ServerUrl = value;
113                 NotifyOfPropertyChange(()=>ServerUrl);
114             }
115         }
116
117         public string ApiKey
118         {
119             get { return _account.ApiKey; }
120             set 
121             {
122                 _account.ApiKey = value;
123                 IsExpired = false;
124                 NotifyOfPropertyChange(() => ApiKey);
125             }
126         }
127
128
129     }
130 }