using System; using Android.App; using System.IO; 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 { /// /// Locks the currently open database, quicklocking if available (unless false is passed for allowQuickUnlock) /// void LockDatabase(bool allowQuickUnlock = true); /// /// Loads the specified data as the currently open database, as unlocked. /// void LoadDatabase(IOConnectionInfo ioConnectionInfo, MemoryStream memoryStream, string s, string keyFile, ProgressDialogStatusLogger statusLogger); /// /// 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); } }