using System;
using Android.App;
using Android.Content;
using Android.OS;
using KeePassLib.Serialization;
using keepass2android.Io;
namespace keepass2android
{
///
/// Interface through which Activities and the logic layer can access some app specific functionalities and Application static data
///
/// This also contains methods which are UI specific and should be replacable for testing.
public interface IKp2aApp
{
///
/// Set the flag that the database needs to be locked.
///
void SetShutdown();
///
/// Returns the current database
///
Database GetDb();
///
/// Tell the app that the file from ioc was opened with keyfile.
///
void StoreOpenedFileAsRecent(IOConnectionInfo ioc, string keyfile);
///
/// Creates a new database and returns it
///
Database CreateNewDatabase();
///
/// Returns the user-displayable string identified by stringKey
///
string GetResourceString(UiStringKey stringKey);
///
/// Returns the value from the preferences corresponding to key
///
bool GetBooleanPreference(PreferenceKey key);
///
/// Asks the user the question "messageKey" with the options Yes/No/Cancel, calls the handler corresponding to the answer.
///
void AskYesNoCancel(UiStringKey titleKey, UiStringKey messageKey,
EventHandler yesHandler,
EventHandler noHandler,
EventHandler cancelHandler,
Context ctx);
///
/// Asks the user the question "messageKey" with the options Yes/No/Cancel, but the yes/no strings can be selected freely, calls the handler corresponding to the answer.
///
void AskYesNoCancel(UiStringKey titleKey, UiStringKey messageKey,
UiStringKey yesString, UiStringKey noString,
EventHandler yesHandler,
EventHandler noHandler,
EventHandler cancelHandler,
Context ctx);
///
/// Returns a Handler object which can run tasks on the UI thread
///
Handler UiThreadHandler { get; }
IProgressDialog CreateProgressDialog(Context ctx);
IFileStorage GetFileStorage(IOConnectionInfo iocInfo);
void TriggerReload(Context context);
}
}