use ActionInContextInstanceOnOperationFinished where appropriate
This commit is contained in:
@@ -54,6 +54,10 @@ namespace keepass2android
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
//Action which runs when the contextInstanceId is the active context
|
||||
// otherwise it is registered as pending action for the context instance.
|
||||
public class ActionInContextInstanceOnOperationFinished : ActionOnOperationFinished
|
||||
{
|
||||
private readonly int _contextInstanceId;
|
||||
|
||||
@@ -228,7 +228,7 @@ namespace keepass2android
|
||||
newEntry.SetUuid(new PwUuid(true), true); // Create new UUID
|
||||
string strTitle = newEntry.Strings.ReadSafe(PwDefs.TitleField);
|
||||
newEntry.Strings.Set(PwDefs.TitleField, new ProtectedString(false, strTitle + " (" + Android.OS.Build.Model + ")"));
|
||||
var addTask = new AddEntry( App.Kp2a.CurrentDb, App.Kp2a, newEntry,item.Entry.ParentGroup,new ActionOnOperationFinished(App.Kp2a, (success, message, context) => (context as ConfigureChildDatabasesActivity)?.Update()));
|
||||
var addTask = new AddEntry( App.Kp2a.CurrentDb, App.Kp2a, newEntry,item.Entry.ParentGroup,new ActionInContextInstanceOnOperationFinished(ContextInstanceId, App.Kp2a, (success, message, context) => (context as ConfigureChildDatabasesActivity)?.Update()));
|
||||
|
||||
BlockingOperationRunner pt = new BlockingOperationRunner(App.Kp2a, addTask);
|
||||
pt.Run();
|
||||
@@ -260,7 +260,7 @@ namespace keepass2android
|
||||
|
||||
private void Save(AutoExecItem item)
|
||||
{
|
||||
var addTask = new SaveDb(App.Kp2a, App.Kp2a.FindDatabaseForElement(item.Entry), new ActionOnOperationFinished(App.Kp2a, (success, message, context) => (context as ConfigureChildDatabasesActivity)?.Update()));
|
||||
var addTask = new SaveDb(App.Kp2a, App.Kp2a.FindDatabaseForElement(item.Entry), new ActionInContextInstanceOnOperationFinished(ContextInstanceId, App.Kp2a, (success, message, context) => (context as ConfigureChildDatabasesActivity)?.Update()));
|
||||
|
||||
BlockingOperationRunner pt = new BlockingOperationRunner(App.Kp2a, addTask);
|
||||
pt.Run();
|
||||
@@ -367,7 +367,7 @@ namespace keepass2android
|
||||
{KeeAutoExecExt.ThisDeviceId, true}
|
||||
})));
|
||||
|
||||
var addTask = new AddEntry( db, App.Kp2a, newEntry, autoOpenGroup, new ActionOnOperationFinished(App.Kp2a, (success, message, context) => (context as ConfigureChildDatabasesActivity)?.Update()));
|
||||
var addTask = new AddEntry( db, App.Kp2a, newEntry, autoOpenGroup, new ActionInContextInstanceOnOperationFinished(ContextInstanceId, App.Kp2a, (success, message, context) => (context as ConfigureChildDatabasesActivity)?.Update()));
|
||||
|
||||
BlockingOperationRunner pt = new BlockingOperationRunner(App.Kp2a, addTask);
|
||||
pt.Run();
|
||||
|
||||
@@ -64,7 +64,7 @@ namespace keepass2android
|
||||
{
|
||||
private readonly string _binaryToSave;
|
||||
|
||||
public ExportBinaryProcessManager(int requestCode, Activity activity, string key) : base(requestCode, activity)
|
||||
public ExportBinaryProcessManager(int requestCode, LifecycleAwareActivity activity, string key) : base(requestCode, activity)
|
||||
{
|
||||
_binaryToSave = key;
|
||||
}
|
||||
@@ -572,7 +572,7 @@ namespace keepass2android
|
||||
App.Kp2a.DirtyGroups.Add(parent);
|
||||
}
|
||||
|
||||
var saveTask = new SaveDb( App.Kp2a, App.Kp2a.FindDatabaseForElement(Entry), new ActionOnOperationFinished(App.Kp2a, (success, message, context) =>
|
||||
var saveTask = new SaveDb( App.Kp2a, App.Kp2a.FindDatabaseForElement(Entry), new ActionInContextInstanceOnOperationFinished(ContextInstanceId, App.Kp2a, (success, message, context) =>
|
||||
{
|
||||
if (context is Activity activity)
|
||||
{
|
||||
@@ -1558,7 +1558,7 @@ namespace keepass2android
|
||||
|
||||
//save the entry:
|
||||
|
||||
ActionOnOperationFinished closeOrShowError = new ActionOnOperationFinished(App.Kp2a, (success, message, context) =>
|
||||
ActionOnOperationFinished closeOrShowError = new ActionInContextInstanceOnOperationFinished(ContextInstanceId, App.Kp2a, (success, message, context) =>
|
||||
{
|
||||
OnOperationFinishedHandler.DisplayMessage(this, message, true);
|
||||
finishAction(context as EntryActivity);
|
||||
|
||||
@@ -19,14 +19,14 @@ namespace keepass2android
|
||||
{
|
||||
private readonly FileFormatProvider _ffp;
|
||||
|
||||
public ExportDbProcessManager(int requestCode, Activity activity, FileFormatProvider ffp) : base(requestCode, activity)
|
||||
public ExportDbProcessManager(int requestCode, LifecycleAwareActivity activity, FileFormatProvider ffp) : base(requestCode, activity)
|
||||
{
|
||||
_ffp = ffp;
|
||||
}
|
||||
|
||||
protected override void SaveFile(IOConnectionInfo ioc)
|
||||
{
|
||||
var exportDb = new ExportDatabaseActivity.ExportDb(App.Kp2a, new ActionOnOperationFinished(App.Kp2a, (success, message, context) =>
|
||||
var exportDb = new ExportDatabaseActivity.ExportDb(App.Kp2a, new ActionInContextInstanceOnOperationFinished(_activity.ContextInstanceId, App.Kp2a, (success, message, context) =>
|
||||
{
|
||||
if (!success)
|
||||
App.Kp2a.ShowMessage(context, message, MessageSeverity.Error);
|
||||
|
||||
@@ -12,9 +12,9 @@ namespace keepass2android
|
||||
{
|
||||
|
||||
protected readonly int _requestCode;
|
||||
protected readonly Activity _activity;
|
||||
protected readonly LifecycleAwareActivity _activity;
|
||||
|
||||
public FileSaveProcessManager(int requestCode, Activity activity)
|
||||
public FileSaveProcessManager(int requestCode, LifecycleAwareActivity activity)
|
||||
{
|
||||
_requestCode = requestCode;
|
||||
_activity = activity;
|
||||
|
||||
@@ -224,7 +224,7 @@ namespace keepass2android
|
||||
{
|
||||
//yes
|
||||
BlockingOperationRunner pt = new BlockingOperationRunner(App.Kp2a,
|
||||
new AddTemplateEntries(App.Kp2a, new ActionOnOperationFinished(App.Kp2a,
|
||||
new AddTemplateEntries(App.Kp2a, new ActionInContextInstanceOnOperationFinished(ContextInstanceId, App.Kp2a,
|
||||
(success, message, context) => (context as GroupActivity)?.StartAddEntry())));
|
||||
pt.Run();
|
||||
},
|
||||
|
||||
@@ -203,17 +203,16 @@ namespace keepass2android
|
||||
new PwUuid(MemUtil.HexStringToByteArray(data.Extras.GetString(GroupEditActivity.KeyCustomIconId)));
|
||||
String strGroupUuid = data.Extras.GetString(GroupEditActivity.KeyGroupUuid);
|
||||
GroupBaseActivity act = this;
|
||||
Handler handler = new Handler();
|
||||
OperationWithFinishHandler task;
|
||||
if (strGroupUuid == null)
|
||||
{
|
||||
task = AddGroup.GetInstance(App.Kp2a, groupName, groupIconId, groupCustomIconId, Group, new RefreshTask(handler, this), false);
|
||||
task = AddGroup.GetInstance(App.Kp2a, groupName, groupIconId, groupCustomIconId, Group, CreateRefreshAction(), false);
|
||||
}
|
||||
else
|
||||
{
|
||||
PwUuid groupUuid = new PwUuid(MemUtil.HexStringToByteArray(strGroupUuid));
|
||||
task = new EditGroup(App.Kp2a, groupName, (PwIcon)groupIconId, groupCustomIconId, App.Kp2a.FindGroup(groupUuid),
|
||||
new RefreshTask(handler, this));
|
||||
CreateRefreshAction());
|
||||
}
|
||||
BlockingOperationRunner pt = new BlockingOperationRunner(App.Kp2a, task);
|
||||
pt.Run();
|
||||
@@ -928,7 +927,7 @@ namespace keepass2android
|
||||
|
||||
|
||||
|
||||
var moveElement = new MoveElements(elementsToMove.ToList(), Group, App.Kp2a, new ActionOnOperationFinished(App.Kp2a,
|
||||
var moveElement = new MoveElements(elementsToMove.ToList(), Group, App.Kp2a, new ActionInContextInstanceOnOperationFinished(ContextInstanceId, App.Kp2a,
|
||||
(success, message, context) =>
|
||||
{
|
||||
(context as GroupBaseActivity)?.StopMovingElements();
|
||||
@@ -1304,51 +1303,7 @@ namespace keepass2android
|
||||
|
||||
}
|
||||
|
||||
public class RefreshTask : OnOperationFinishedHandler
|
||||
{
|
||||
public RefreshTask(Handler handler, GroupBaseActivity act)
|
||||
: base(App.Kp2a, handler)
|
||||
{
|
||||
}
|
||||
|
||||
public override void Run()
|
||||
{
|
||||
if (Success)
|
||||
{
|
||||
(ActiveContext as GroupBaseActivity)?.RefreshIfDirty();
|
||||
}
|
||||
else
|
||||
{
|
||||
DisplayMessage(ActiveContext);
|
||||
}
|
||||
}
|
||||
}
|
||||
public class AfterDeleteGroup : OnOperationFinishedHandler
|
||||
{
|
||||
public AfterDeleteGroup(Handler handler, GroupBaseActivity act)
|
||||
: base(App.Kp2a, handler)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
public override void Run()
|
||||
{
|
||||
if (Success)
|
||||
{
|
||||
(ActiveContext as GroupBaseActivity)?.RefreshIfDirty();
|
||||
}
|
||||
else
|
||||
{
|
||||
Handler.Post(() =>
|
||||
{
|
||||
App.Kp2a.ShowMessage(ActiveContext ?? LocaleManager.LocalizedAppContext, "Unrecoverable error: " + Message, MessageSeverity.Error);
|
||||
});
|
||||
|
||||
App.Kp2a.Lock(false);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
public bool IsBeingMoved(PwUuid uuid)
|
||||
{
|
||||
@@ -1453,6 +1408,27 @@ namespace keepass2android
|
||||
ListAdapter?.NotifyDataSetChanged();
|
||||
|
||||
}
|
||||
|
||||
public OnOperationFinishedHandler CreateRefreshAction()
|
||||
{
|
||||
return new ActionInContextInstanceOnOperationFinished(
|
||||
ContextInstanceId, App.Kp2a,
|
||||
(success, message, context) =>
|
||||
{
|
||||
if (success)
|
||||
{
|
||||
RunOnUiThread(() =>
|
||||
{
|
||||
(context as GroupBaseActivity)?.RefreshIfDirty();
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
App.Kp2a.ShowMessage(context, message, MessageSeverity.Error);
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
public class UpdateGroupBaseActivityBroadcastReceiver : BroadcastReceiver
|
||||
@@ -1533,12 +1509,12 @@ namespace keepass2android
|
||||
{
|
||||
return false;
|
||||
}
|
||||
Handler handler = new Handler();
|
||||
|
||||
switch (item.ItemId)
|
||||
{
|
||||
|
||||
case Resource.Id.menu_delete:
|
||||
DeleteMultipleItems((GroupBaseActivity)Activity, checkedItems, new GroupBaseActivity.RefreshTask(handler, ((GroupBaseActivity)Activity)), App.Kp2a);
|
||||
DeleteMultipleItems((GroupBaseActivity)Activity, checkedItems, ((GroupBaseActivity)Activity).CreateRefreshAction(), App.Kp2a);
|
||||
break;
|
||||
case Resource.Id.menu_move:
|
||||
var navMove = new NavigateToFolderAndLaunchMoveElementTask(App.Kp2a.CurrentDb, checkedItems.First().ParentGroup, checkedItems.Select(i => i.Uuid).ToList(), ((GroupBaseActivity)Activity).IsSearchResult);
|
||||
@@ -1547,7 +1523,7 @@ namespace keepass2android
|
||||
case Resource.Id.menu_copy:
|
||||
|
||||
var copyTask = new CopyEntry(App.Kp2a, (PwEntry)checkedItems.First(),
|
||||
new GroupBaseActivity.RefreshTask(handler, ((GroupBaseActivity)Activity)), App.Kp2a.CurrentDb);
|
||||
((GroupBaseActivity)Activity).CreateRefreshAction(), App.Kp2a.CurrentDb);
|
||||
|
||||
BlockingOperationRunner pt = new BlockingOperationRunner(App.Kp2a, copyTask);
|
||||
pt.Run();
|
||||
|
||||
@@ -9,9 +9,9 @@ namespace keepass2android
|
||||
{
|
||||
public class SyncUtil
|
||||
{
|
||||
private Activity _activity;
|
||||
private LifecycleAwareActivity _activity;
|
||||
|
||||
public SyncUtil(Activity activity)
|
||||
public SyncUtil(LifecycleAwareActivity activity)
|
||||
{
|
||||
_activity = activity;
|
||||
}
|
||||
@@ -54,7 +54,7 @@ namespace keepass2android
|
||||
{
|
||||
var filestorage = App.Kp2a.GetFileStorage(App.Kp2a.CurrentDb.Ioc);
|
||||
OperationWithFinishHandler task;
|
||||
OnOperationFinishedHandler onOperationFinishedHandler = new ActionOnOperationFinished(App.Kp2a, (success, message, context) =>
|
||||
OnOperationFinishedHandler onOperationFinishedHandler = new ActionInContextInstanceOnOperationFinished(_activity.ContextInstanceId, App.Kp2a, (success, message, context) =>
|
||||
{
|
||||
new Handler(Looper.MainLooper).Post(() =>
|
||||
{
|
||||
|
||||
@@ -63,14 +63,14 @@ namespace keepass2android
|
||||
|
||||
public class ExportKeyfileProcessManager : FileSaveProcessManager
|
||||
{
|
||||
public ExportKeyfileProcessManager(int requestCode, Activity activity) : base(requestCode, activity)
|
||||
public ExportKeyfileProcessManager(int requestCode, LifecycleAwareActivity activity) : base(requestCode, activity)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
protected override void SaveFile(IOConnectionInfo ioc)
|
||||
{
|
||||
var exportKeyfile = new ExportKeyfile(App.Kp2a, new ActionOnOperationFinished(App.Kp2a,
|
||||
var exportKeyfile = new ExportKeyfile(App.Kp2a, new ActionInContextInstanceOnOperationFinished(_activity.ContextInstanceId, App.Kp2a,
|
||||
(success, message, context) =>
|
||||
{
|
||||
if (!success)
|
||||
|
||||
Reference in New Issue
Block a user