bug fix: prepareFileUsage didn't work when file was cached but device offline

This commit is contained in:
Philipp Crocoll
2013-11-07 21:33:35 +01:00
parent 75b64e5a87
commit 5619432177
20 changed files with 1539 additions and 1701 deletions

View File

@@ -169,7 +169,7 @@ namespace keepass2android.Io
}
}
public void PrepareFileUsage(IFileStorageSetupInitiatorActivity activity, IOConnectionInfo ioc, int requestCode)
public void PrepareFileUsage(IFileStorageSetupInitiatorActivity activity, IOConnectionInfo ioc, int requestCode, bool alwaysReturnSuccess)
{
Intent intent = new Intent();
activity.IocToIntent(intent, ioc);

View File

@@ -451,9 +451,10 @@ namespace keepass2android.Io
_cachedStorage.StartSelectFile(activity, isForSave, requestCode, protocolId);
}
public void PrepareFileUsage(IFileStorageSetupInitiatorActivity activity, IOConnectionInfo ioc, int requestCode)
public void PrepareFileUsage(IFileStorageSetupInitiatorActivity activity, IOConnectionInfo ioc, int requestCode, bool alwaysReturnSuccess)
{
_cachedStorage.PrepareFileUsage(activity, ioc, requestCode);
//we try to prepare the file usage by the underlying file storage but if the ioc is cached, set the flag to ignore errors
_cachedStorage.PrepareFileUsage(activity, ioc, requestCode, alwaysReturnSuccess || IsCached(ioc));
}
public void OnCreate(IFileStorageSetupActivity activity, Bundle savedInstanceState)

View File

@@ -9,7 +9,7 @@ namespace keepass2android.Io
public interface IFileStorageSetupInitiatorActivity
{
void StartSelectFileProcess(IOConnectionInfo ioc, bool isForSave, int requestCode);
void StartFileUsageProcess(IOConnectionInfo ioc, int requestCode);
void StartFileUsageProcess(IOConnectionInfo ioc, int requestCode, bool alwaysReturnSuccess);
void OnImmediateResult(int requestCode, int result, Intent intent);
Activity Activity { get; }

View File

@@ -21,6 +21,7 @@ namespace keepass2android.Io
public static String ProcessNameFileUsageSetup = "FILE_USAGE_SETUP";
public static String ExtraProcessName = "EXTRA_PROCESS_NAME";
public static String ExtraAlwaysReturnSuccess = "EXTRA_ALWAYS_RETURN_SUCCESS";
public static String ExtraPath = "PATH";
public static String ExtraIsForSave = "IS_FOR_SAVE";
public static String ExtraErrorMessage = "EXTRA_ERROR_MESSAGE";
@@ -136,8 +137,11 @@ namespace keepass2android.Io
/// <summary>
/// Initiates the process for choosing a file in the given file storage.
/// The file storage should either call OnImmediateResult or StartFileUsageProcess
/// If alwaysReturnSuccess is true, the activity should be finished with ResultCode Ok.
/// This can make sense if a higher-level file storage has the file cached by still wants to
/// give the cached storage the chance to initialize file access.
/// </summary>
void PrepareFileUsage(IFileStorageSetupInitiatorActivity activity, IOConnectionInfo ioc, int requestCode);
void PrepareFileUsage(IFileStorageSetupInitiatorActivity activity, IOConnectionInfo ioc, int requestCode, bool alwaysReturnSuccess);
//Setup methods: these are called from the setup activity so the file storage can handle UI events for authorization etc.
void OnCreate(IFileStorageSetupActivity activity, Bundle savedInstanceState);

View File

@@ -98,7 +98,7 @@ namespace keepass2android.Io
Kp2aLog.Log(e.Message);
var ex = new Exception(e.LocalizedMessage ??
e.Message ??
_app.GetResourceString(UiStringKey.ErrorOcurred)+e, e);
_app.GetResourceString(UiStringKey.ErrorOcurred)+e.GetType().Name, e);
return ex;
}
@@ -249,9 +249,9 @@ namespace keepass2android.Io
_jfs.StartSelectFile((IJavaFileStorageFileStorageSetupInitiatorActivity) activity, isForSave, requestCode);
}
public void PrepareFileUsage(IFileStorageSetupInitiatorActivity activity, IOConnectionInfo ioc, int requestCode)
public void PrepareFileUsage(IFileStorageSetupInitiatorActivity activity, IOConnectionInfo ioc, int requestCode, Boolean alwaysReturnSuccess)
{
_jfs.PrepareFileUsage((IJavaFileStorageFileStorageSetupInitiatorActivity)activity, IocToPath(ioc), requestCode);
_jfs.PrepareFileUsage((IJavaFileStorageFileStorageSetupInitiatorActivity)activity, IocToPath(ioc), requestCode, alwaysReturnSuccess);
}
public void OnCreate(IFileStorageSetupActivity activity, Bundle savedInstanceState)

View File

@@ -20,7 +20,7 @@
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>TRACE;DEBUG;EXCLUDE_TWOFISH;INCLUDE_KEYBOARD;EXCLUDE_KEYTRANSFORM;EXCLUDE_FILECHOOSER;EXCLUDE_JAVAFILESTORAGE</DefineConstants>
<DefineConstants>TRACE;DEBUG;EXCLUDE_TWOFISH;INCLUDE_KEYBOARD;EXCLUDE_KEYTRANSFORM;INCLUDE_FILECHOOSER;INCLUDE_JAVAFILESTORAGE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>