- Added Modify and Delete functionalities for Firefox Password

Manager Secrets into CASAManager.
This commit is contained in:
lsreevatsa
2006-03-15 15:56:11 +00:00
parent 49d966cf50
commit b6ff2610b2
8 changed files with 275 additions and 13 deletions

View File

@@ -842,8 +842,8 @@ namespace Novell.CASA.GUI
case Common.STORE_FIREFOX:
if( 0 != objFirefox.tvSecretIDFirefox.Selection.CountSelectedRows() )
{
mmiView.Sensitive = true;
mmiDelete.Sensitive = mmiLink.Sensitive = mmiCopy.Sensitive = false;
mmiView.Sensitive = mmiDelete.Sensitive = true;
mmiLink.Sensitive = mmiCopy.Sensitive = false;
}
else
{
@@ -1250,6 +1250,7 @@ namespace Novell.CASA.GUI
break;
case Common.STORE_FIREFOX:
objFirefox.OnDeleteActivated(obj, args);
break;
case Common.STORE_MOZILLA:

View File

@@ -55,7 +55,8 @@ public class Firefox : Store
[Glade.Widget]
Gtk.Dialog dialogNewSecret,
dialogManageSecret,
dialogLogin;
dialogLogin,
dialogConfirmDelete;
[Glade.Widget]
Gtk.Menu menuRightClick;
@@ -65,7 +66,8 @@ public class Firefox : Store
entryKey,
entryValue,
entryMasterPassword3,
entryMasterPassword4;
entryMasterPassword4,
entryDeleteSecretID;
[Glade.Widget]
Gtk.CheckButton cbuttonShowPassword;
@@ -193,7 +195,7 @@ public class Firefox : Store
menuRightClick.Popup(null, null, null, IntPtr.Zero, 3, Gtk.Global.CurrentEventTime);
if( 0 != tvSecretIDFirefox.Selection.CountSelectedRows() )
cmiNewSecret.Sensitive = cmiNewKey.Sensitive = cmiDelete.Sensitive = cmiLink.Sensitive = cmiCopy.Sensitive = false;
cmiNewSecret.Sensitive = cmiNewKey.Sensitive = cmiLink.Sensitive = cmiCopy.Sensitive = false;
else
cmiNewSecret.Sensitive = cmiNewKey.Sensitive = cmiDelete.Sensitive = cmiLink.Sensitive = cmiCopy.Sensitive = cmiView.Sensitive = false;
}
@@ -235,7 +237,8 @@ public class Firefox : Store
dialogManageSecret.Title = "Firefox - Manage Secret";
cellEditable = new CellRendererText();
cellEditable.Editable = false;
cellEditable.Editable = true;
cellEditable.Edited += new EditedHandler(OnKeyValueEdited);
//cellEditable.Edited += new EditedHandler(OnKeyValueEdited);
/// KEY:0 VALUE:1 VALUE-DUP:2 DIRTY-BIT:3 LINK:4
tsKeyValue = new TreeStore(typeof(string),typeof(string), typeof(string), typeof(bool), typeof(string));
@@ -262,6 +265,77 @@ public class Firefox : Store
Logger.DbgLog("GUI:Firefox.ViewKeyValues() - END");
}
/// <summary>
/// EDIT KEY-VALUE
/// </summary>
public void OnKeyValueEdited(object obj, EditedArgs args)
{
Logger.DbgLog("GUI:Firefox.OnKeyValueEdited() - BEGIN");
TreeModel model;
TreeIter iter;
object val;
string KeyName = null,
KeyValue = null;
string[] Keys = null,
Values = null;
try
{
tvKeyValue.Selection.GetSelected (out model, out iter);
val = tsKeyValue.GetValue(iter,0);
KeyName = val.ToString();
if( true == cbuttonShowPassword.Active )
val = tsKeyValue.GetValue(iter,1);
else
val = tsKeyValue.GetValue(iter,2);
KeyValue = val.ToString();
tvSecretIDFirefox.Selection.GetSelected (out model, out iter);
if( false == entrySecretID.Editable )
{
if( ("" != args.NewText) && (KeyValue != args.NewText) )
if( Common.STATUS_SUCCESS == StoreDataInterface.UpdateStore(Common.STORE_FIREFOX, Common.OPERATION_MODIFY_KEY, KeyName, args.NewText, ref model, ref iter) )
{
Logger.DbgLog("GUI:Firefox.OnKeyValueEdited() - StoreDataInterface.UpdateStore() succeeded");
tvKeyValue.Selection.GetSelected (out model, out iter);
tsKeyValue.SetValue(iter, 1, args.NewText);
tsKeyValue.SetValue(iter, 2, "********");
tvSecretIDFirefox.Selection.GetSelected (out model, out iter);
Keys = (string[]) model.GetValue(iter, 1);
Values = (string[]) model.GetValue(iter, 2);
for( int i=0; i< Keys.Length; i++ )
{
if( Keys[i] == KeyName )
{
Values[i] = args.NewText;
tsSecretIDFirefox.SetValue(iter, 2, Values);
break;
}
}
AggregateStore();
}
else
Logger.DbgLog("GUI:Firefox.OnKeyValueEdited() - ERROR: STATUS_STORE_UPDATEFAILED");
}
else
{
tvKeyValue.Selection.GetSelected (out model, out iter);
tsKeyValue.SetValue(iter, 1, args.NewText);
tsKeyValue.SetValue(iter, 2, "********");
}
}
catch(Exception exp)
{
Logger.DbgLog("GUI:Firefox.OnKeyValueEdited() - EXCEPTION:" + exp.ToString());
}
Logger.DbgLog("GUI:Firefox.OnKeyValueEdited() - END");
}
/// <summary>
/// ADD BUTTON CLICKED
@@ -450,6 +524,62 @@ public class Firefox : Store
/// </summary>
public void OnDeleteActivated(object obj, EventArgs args)
{
Logger.DbgLog("GUI:Firefox.OnDeleteActivated() - BEGIN");
if( 0 != tvSecretIDFirefox.Selection.CountSelectedRows() )
{
Glade.XML gxmlTemp = new Glade.XML (Common.GladeFile, "dialogConfirmDelete", null);
gxmlTemp.Autoconnect (this);
dialogConfirmDelete.TransientFor = (Gtk.Window)CasaMain.gxmlMain.GetWidget("windowMain");
dialogConfirmDelete.Title = "Firefox - Delete Secret";
TreeModel model;
TreeIter iter;
string selected = null;
if( tvSecretIDFirefox.Selection.GetSelected (out model, out iter) )
{
selected = (string) model.GetValue (iter, 0);
if( (null != selected) && (selected.Length > 0) )
entryDeleteSecretID.Text = selected;
}
}
Logger.DbgLog("GUI:Firefox.OnDeleteActivated() - END");
}
public void on_buttonYes_clicked(object obj, EventArgs args)
{
Logger.DbgLog("GUI:Firefox.on_buttonYes_clicked() - BEGIN");
TreeModel model;
TreeIter iter;
try
{
if( tvSecretIDFirefox.Selection.GetSelected (out model, out iter) )
{
if( Common.STATUS_SUCCESS == StoreDataInterface.UpdateStore(Common.STORE_FIREFOX, Common.OPERATION_DELETE_SECRET, "", "", ref model, ref iter) )
{
tsSecretIDFirefox.Remove(ref iter);
tvSecretIDFirefox.ColumnsAutosize();
tsNativeInfoFirefox.Clear();
dialogConfirmDelete.Destroy();
Logger.DbgLog("GUI:Firefox.on_buttonYes_clicked() - DELETE_SECRET_SUCCEEDED");
}
else
Logger.DbgLog("GUI:Firefox.on_buttonYes_clicked() - DELETE_SECRET_FAILED");
}
}
catch(Exception exp)
{
Logger.DbgLog("GUI:Firefox.on_buttonYes_clicked() - EXCEPTION:" + exp.ToString());
}
Logger.DbgLog("GUI:Firefox.on_buttonYes_clicked() - END");
}
public void on_buttonNo_clicked(object obj, EventArgs args)
{
dialogConfirmDelete.Destroy();
}
///#######################################################################

View File

@@ -640,6 +640,23 @@ namespace Novell.CASA.GUI {
newKeyElement.AppendChild(newValue);
}
}
else if( Common.STORE_FIREFOX == storeIDentifier )
{
storeChainKey = CCFXML_ELEMENT_FIREFOX_PROFILE;
ccfRootStorePath = "//CCF/FireFox";
if( Common.OPERATION_MODIFY_KEY == operation || Common.OPERATION_DELETE_KEY == operation )
{
ccfSecretPath = "//CCF/FireFox/Profile[@ID='" + keyChainID + "']/Secret[@ID='" + SecretID + "']/Key[@ID='" + keyID + "']";
//Console.WriteLine("OPERATION_MODIFY_KEY-OR-OPERATION_DELETE_KEY:ccfSecretPath:"+ccfSecretPath);//FIXME:Remove this line
}
else if( Common.OPERATION_DELETE_SECRET == operation )
{
ccfKeyChainPath = "//CCF/FireFox/Profile[@ID='" + keyChainID + "']";
ccfSecretPath = "Secret[@ID='" + SecretID + "']";
//Console.WriteLine("OPERATION_DELETE_SECRET:ccfKeyChainPath:"+ccfKeyChainPath);//FIXME:Remove this line
//Console.WriteLine("OPERATION_DELETE_SECRET:ccfSecretPath:"+ccfSecretPath);//FIXME:Remove this line
}
}
else
return( Common.STATUS_STORE_UNSUPPORTEDOPERATION );