Modify identity selection logic / fix bugs
[moonshot-ui.git] / src / moonshot-id.vala
index 58af2d7..8f90e8d 100644 (file)
@@ -14,21 +14,57 @@ public struct Rule
 
 public class IdCard : Object
 {
+  public const string NO_IDENTITY = "No Identity";
+
   private string _nai;
   
   public string display_name { get; set; default = ""; }
   
   public string username { get; set; default = ""; }
+#if GNOME_KEYRING
+  private unowned string _password;
+  public string password {
+    get {
+      return (_password!=null) ? _password : "";
+    }
+    set {
+      if (_password != null) {
+        GnomeKeyring.memory_free((void *)_password);
+        _password = null;
+      }
+      if (value != null)
+        _password = GnomeKeyring.memory_strdup(value); 
+    }
+  }
+#else
   public string password { get; set; default = null; }
+#endif
 
   public string issuer { get; set; default = ""; }
   
   public Rule[] rules {get; set; default = {};}
   public string[] services { get; set; default = {}; }
+  public bool temporary {get; set; default = false; }
 
   public TrustAnchor trust_anchor  { get; set; default = new TrustAnchor (); }
   
-  public Gdk.Pixbuf pixbuf { get; set; default = null; }    
-
   public unowned string nai { get {  _nai = username + "@" + issuer; return _nai;}}
+
+  public bool store_password { get; set; default = false; }
+
+  public bool IsNoIdentity() 
+  {
+    return (display_name == NO_IDENTITY);
+  }
+
+  public static IdCard NewNoIdentity() 
+  { 
+    IdCard card = new IdCard();
+    card.display_name = NO_IDENTITY;
+    return card;
+  }
+
+  ~IdCard() {
+    password = null;
+  }
 }