diff --git a/src/keepass2android/ProgressTask.cs b/src/keepass2android/ProgressTask.cs index fb457978..e6f20b1e 100644 --- a/src/keepass2android/ProgressTask.cs +++ b/src/keepass2android/ProgressTask.cs @@ -35,7 +35,7 @@ namespace keepass2android private Handler mHandler; private RunnableOnFinish mTask; private ProgressDialog mPd; - + public ProgressTask(Context ctx, RunnableOnFinish task, int messageId) { mCtx = ctx; mTask = task; diff --git a/src/keepass2android/Resources/Resource.designer.cs b/src/keepass2android/Resources/Resource.designer.cs index 6c5f5d78..ec9a13af 100644 --- a/src/keepass2android/Resources/Resource.designer.cs +++ b/src/keepass2android/Resources/Resource.designer.cs @@ -1000,20 +1000,29 @@ namespace keepass2android // aapt resource value: 0x7f050020 public const int AboutText = 2131034144; - // aapt resource value: 0x7f0500e6 - public const int AskOverwriteBinary = 2131034342; + // aapt resource value: 0x7f0500ee + public const int AskDeletePermanentlyEntry = 2131034350; - // aapt resource value: 0x7f0500e9 - public const int AskOverwriteBinary_no = 2131034345; + // aapt resource value: 0x7f0500ef + public const int AskDeletePermanentlyGroup = 2131034351; - // aapt resource value: 0x7f0500e7 - public const int AskOverwriteBinary_title = 2131034343; + // aapt resource value: 0x7f0500f0 + public const int AskDeletePermanently_title = 2131034352; // aapt resource value: 0x7f0500e8 - public const int AskOverwriteBinary_yes = 2131034344; + public const int AskOverwriteBinary = 2131034344; + + // aapt resource value: 0x7f0500eb + public const int AskOverwriteBinary_no = 2131034347; + + // aapt resource value: 0x7f0500e9 + public const int AskOverwriteBinary_title = 2131034345; // aapt resource value: 0x7f0500ea - public const int AttachFailed = 2131034346; + public const int AskOverwriteBinary_yes = 2131034346; + + // aapt resource value: 0x7f0500ec + public const int AttachFailed = 2131034348; // aapt resource value: 0x7f050017 public const int BinaryDirectory_default = 2131034135; @@ -1021,11 +1030,11 @@ namespace keepass2android // aapt resource value: 0x7f050016 public const int BinaryDirectory_key = 2131034134; - // aapt resource value: 0x7f0500d8 - public const int BinaryDirectory_summary = 2131034328; + // aapt resource value: 0x7f0500da + public const int BinaryDirectory_summary = 2131034330; - // aapt resource value: 0x7f0500d7 - public const int BinaryDirectory_title = 2131034327; + // aapt resource value: 0x7f0500d9 + public const int BinaryDirectory_title = 2131034329; // aapt resource value: 0x7f050034 public const int ClearClipboard = 2131034164; @@ -1045,11 +1054,11 @@ namespace keepass2android // aapt resource value: 0x7f050018 public const int QuickUnlockDefaultEnabled_key = 2131034136; - // aapt resource value: 0x7f0500d3 - public const int QuickUnlockDefaultEnabled_summary = 2131034323; + // aapt resource value: 0x7f0500d5 + public const int QuickUnlockDefaultEnabled_summary = 2131034325; - // aapt resource value: 0x7f0500d2 - public const int QuickUnlockDefaultEnabled_title = 2131034322; + // aapt resource value: 0x7f0500d4 + public const int QuickUnlockDefaultEnabled_title = 2131034324; // aapt resource value: 0x7f05001a public const int QuickUnlockLength_default = 2131034138; @@ -1057,50 +1066,50 @@ namespace keepass2android // aapt resource value: 0x7f050019 public const int QuickUnlockLength_key = 2131034137; - // aapt resource value: 0x7f0500d5 - public const int QuickUnlockLength_summary = 2131034325; - - // aapt resource value: 0x7f0500d4 - public const int QuickUnlockLength_title = 2131034324; - - // aapt resource value: 0x7f0500d0 - public const int QuickUnlock_button = 2131034320; + // aapt resource value: 0x7f0500d7 + public const int QuickUnlockLength_summary = 2131034327; // aapt resource value: 0x7f0500d6 - public const int QuickUnlock_fail = 2131034326; + public const int QuickUnlockLength_title = 2131034326; - // aapt resource value: 0x7f0500cf - public const int QuickUnlock_label = 2131034319; + // aapt resource value: 0x7f0500d2 + public const int QuickUnlock_button = 2131034322; + + // aapt resource value: 0x7f0500d8 + public const int QuickUnlock_fail = 2131034328; // aapt resource value: 0x7f0500d1 - public const int QuickUnlock_lockButton = 2131034321; + public const int QuickUnlock_label = 2131034321; - // aapt resource value: 0x7f0500eb - public const int RecycleBin = 2131034347; + // aapt resource value: 0x7f0500d3 + public const int QuickUnlock_lockButton = 2131034323; - // aapt resource value: 0x7f0500da - public const int SaveAttachment_Failed = 2131034330; + // aapt resource value: 0x7f0500ed + public const int RecycleBin = 2131034349; - // aapt resource value: 0x7f0500d9 - public const int SaveAttachment_doneMessage = 2131034329; + // aapt resource value: 0x7f0500dc + public const int SaveAttachment_Failed = 2131034332; + + // aapt resource value: 0x7f0500db + public const int SaveAttachment_doneMessage = 2131034331; // aapt resource value: 0x7f050014 public const int TanExpiresOnUse_key = 2131034132; - // aapt resource value: 0x7f0500c3 - public const int TanExpiresOnUse_summary = 2131034307; + // aapt resource value: 0x7f0500c5 + public const int TanExpiresOnUse_summary = 2131034309; - // aapt resource value: 0x7f0500c2 - public const int TanExpiresOnUse_title = 2131034306; + // aapt resource value: 0x7f0500c4 + public const int TanExpiresOnUse_title = 2131034308; // aapt resource value: 0x7f05001b public const int UseFileTransactions_key = 2131034139; - // aapt resource value: 0x7f0500e5 - public const int UseFileTransactions_summary = 2131034341; + // aapt resource value: 0x7f0500e7 + public const int UseFileTransactions_summary = 2131034343; - // aapt resource value: 0x7f0500e4 - public const int UseFileTransactions_title = 2131034340; + // aapt resource value: 0x7f0500e6 + public const int UseFileTransactions_title = 2131034342; // aapt resource value: 0x7f05001e public const int about_feedback = 2131034142; @@ -1111,14 +1120,14 @@ namespace keepass2android // aapt resource value: 0x7f050022 public const int accept = 2131034146; - // aapt resource value: 0x7f0500e0 - public const int add_binary = 2131034336; + // aapt resource value: 0x7f0500e2 + public const int add_binary = 2131034338; // aapt resource value: 0x7f050023 public const int add_entry = 2131034147; - // aapt resource value: 0x7f0500e1 - public const int add_extra_string = 2131034337; + // aapt resource value: 0x7f0500e3 + public const int add_extra_string = 2131034339; // aapt resource value: 0x7f050024 public const int add_group = 2131034148; @@ -1171,8 +1180,8 @@ namespace keepass2android // aapt resource value: 0x7f050033 public const int cancel = 2131034163; - // aapt resource value: 0x7f0500c7 - public const int caseSensitive = 2131034311; + // aapt resource value: 0x7f0500c9 + public const int caseSensitive = 2131034313; // aapt resource value: 0x7f050035 public const int clipboard_timeout = 2131034165; @@ -1195,8 +1204,8 @@ namespace keepass2android // aapt resource value: 0x7f050039 public const int creating_db_key = 2131034169; - // aapt resource value: 0x7f0500e3 - public const int credentials_dialog_title = 2131034339; + // aapt resource value: 0x7f0500e5 + public const int credentials_dialog_title = 2131034341; // aapt resource value: 0x7f05003a public const int current_group = 2131034170; @@ -1207,8 +1216,8 @@ namespace keepass2android // aapt resource value: 0x7f05003c public const int database = 2131034172; - // aapt resource value: 0x7f0500e2 - public const int database_loaded_quickunlock_enabled = 2131034338; + // aapt resource value: 0x7f0500e4 + public const int database_loaded_quickunlock_enabled = 2131034340; // aapt resource value: 0x7f05000c public const int db_key = 2131034124; @@ -1225,8 +1234,8 @@ namespace keepass2android // aapt resource value: 0x7f050001 public const int default_file_path = 2131034113; - // aapt resource value: 0x7f0500af - public const int default_username = 2131034287; + // aapt resource value: 0x7f0500b1 + public const int default_username = 2131034289; // aapt resource value: 0x7f050015 public const int default_username_key = 2131034133; @@ -1243,17 +1252,17 @@ namespace keepass2android // aapt resource value: 0x7f050042 public const int ellipsis = 2131034178; - // aapt resource value: 0x7f0500ce - public const int enable_quickunlock = 2131034318; + // aapt resource value: 0x7f0500d0 + public const int enable_quickunlock = 2131034320; // aapt resource value: 0x7f050043 public const int enter_filename = 2131034179; - // aapt resource value: 0x7f0500cd - public const int enter_filename_details_create_import = 2131034317; + // aapt resource value: 0x7f0500cf + public const int enter_filename_details_create_import = 2131034319; - // aapt resource value: 0x7f0500cc - public const int enter_filename_details_url = 2131034316; + // aapt resource value: 0x7f0500ce + public const int enter_filename_details_url = 2131034318; // aapt resource value: 0x7f050044 public const int entry_accessed = 2131034180; @@ -1339,8 +1348,8 @@ namespace keepass2android // aapt resource value: 0x7f05005f public const int error_invalid_db = 2131034207; - // aapt resource value: 0x7f0500db - public const int error_invalid_expiry_date = 2131034331; + // aapt resource value: 0x7f0500dd + public const int error_invalid_expiry_date = 2131034333; // aapt resource value: 0x7f050060 public const int error_invalid_path = 2131034208; @@ -1366,8 +1375,8 @@ namespace keepass2android // aapt resource value: 0x7f050067 public const int error_rounds_too_large = 2131034215; - // aapt resource value: 0x7f0500dc - public const int error_string_key = 2131034332; + // aapt resource value: 0x7f0500de + public const int error_string_key = 2131034334; // aapt resource value: 0x7f050068 public const int error_title_required = 2131034216; @@ -1375,14 +1384,14 @@ namespace keepass2android // aapt resource value: 0x7f050069 public const int error_wrong_length = 2131034217; - // aapt resource value: 0x7f0500c5 - public const int excludeExpiredEntries = 2131034309; + // aapt resource value: 0x7f0500c7 + public const int excludeExpiredEntries = 2131034311; - // aapt resource value: 0x7f0500dd - public const int field_name = 2131034333; + // aapt resource value: 0x7f0500df + public const int field_name = 2131034335; - // aapt resource value: 0x7f0500de - public const int field_value = 2131034334; + // aapt resource value: 0x7f0500e0 + public const int field_value = 2131034336; // aapt resource value: 0x7f05006b public const int file_browser = 2131034219; @@ -1462,8 +1471,8 @@ namespace keepass2android // aapt resource value: 0x7f05000e public const int keyfile_key = 2131034126; - // aapt resource value: 0x7f0500c4 - public const int kp2a_findUrl = 2131034308; + // aapt resource value: 0x7f0500c6 + public const int kp2a_findUrl = 2131034310; // aapt resource value: 0x7f050082 public const int length = 2131034242; @@ -1555,14 +1564,17 @@ namespace keepass2android // aapt resource value: 0x7f05009c public const int never = 2131034268; - // aapt resource value: 0x7f05009d - public const int no_keys = 2131034269; - // aapt resource value: 0x7f05009e - public const int no_results = 2131034270; + public const int no = 2131034270; // aapt resource value: 0x7f05009f - public const int no_url_handler = 2131034271; + public const int no_keys = 2131034271; + + // aapt resource value: 0x7f0500a0 + public const int no_results = 2131034272; + + // aapt resource value: 0x7f0500a1 + public const int no_url_handler = 2131034273; // aapt resource value: 0x7f050006 public const int oi_filemanager_market = 2131034118; @@ -1573,77 +1585,77 @@ namespace keepass2android // aapt resource value: 0x7f050010 public const int omitbackup_key = 2131034128; - // aapt resource value: 0x7f0500a2 - public const int omitbackup_summary = 2131034274; - - // aapt resource value: 0x7f0500a1 - public const int omitbackup_title = 2131034273; - - // aapt resource value: 0x7f0500a0 - public const int open_recent = 2131034272; + // aapt resource value: 0x7f0500a4 + public const int omitbackup_summary = 2131034276; // aapt resource value: 0x7f0500a3 - public const int pass_filename = 2131034275; + public const int omitbackup_title = 2131034275; - // aapt resource value: 0x7f0500a4 - public const int password_title = 2131034276; + // aapt resource value: 0x7f0500a2 + public const int open_recent = 2131034274; // aapt resource value: 0x7f0500a5 - public const int progress_create = 2131034277; + public const int pass_filename = 2131034277; // aapt resource value: 0x7f0500a6 - public const int progress_title = 2131034278; - - // aapt resource value: 0x7f0500df - public const int protection = 2131034335; - - // aapt resource value: 0x7f0500c1 - public const int regular_expression = 2131034305; + public const int password_title = 2131034278; // aapt resource value: 0x7f0500a7 - public const int remember_keyfile_summary = 2131034279; + public const int progress_create = 2131034279; // aapt resource value: 0x7f0500a8 - public const int remember_keyfile_title = 2131034280; + public const int progress_title = 2131034280; + + // aapt resource value: 0x7f0500e1 + public const int protection = 2131034337; + + // aapt resource value: 0x7f0500c3 + public const int regular_expression = 2131034307; // aapt resource value: 0x7f0500a9 - public const int remove_from_filelist = 2131034281; + public const int remember_keyfile_summary = 2131034281; // aapt resource value: 0x7f0500aa - public const int rijndael = 2131034282; + public const int remember_keyfile_title = 2131034282; // aapt resource value: 0x7f0500ab - public const int root = 2131034283; + public const int remove_from_filelist = 2131034283; // aapt resource value: 0x7f0500ac - public const int rounds = 2131034284; + public const int rijndael = 2131034284; // aapt resource value: 0x7f0500ad - public const int rounds_explaination = 2131034285; + public const int root = 2131034285; // aapt resource value: 0x7f0500ae - public const int rounds_hint = 2131034286; + public const int rounds = 2131034286; + + // aapt resource value: 0x7f0500af + public const int rounds_explaination = 2131034287; + + // aapt resource value: 0x7f0500b0 + public const int rounds_hint = 2131034288; // aapt resource value: 0x7f05000d public const int rounds_key = 2131034125; - // aapt resource value: 0x7f0500b0 - public const int saving_database = 2131034288; - - // aapt resource value: 0x7f0500b7 - public const int search_hint = 2131034295; + // aapt resource value: 0x7f0500b2 + public const int saving_database = 2131034290; // aapt resource value: 0x7f0500b9 - public const int search_in = 2131034297; + public const int search_hint = 2131034297; - // aapt resource value: 0x7f0500b2 - public const int search_label = 2131034290; + // aapt resource value: 0x7f0500bb + public const int search_in = 2131034299; - // aapt resource value: 0x7f0500c6 - public const int search_options = 2131034310; + // aapt resource value: 0x7f0500b4 + public const int search_label = 2131034292; - // aapt resource value: 0x7f0500b8 - public const int search_results = 2131034296; + // aapt resource value: 0x7f0500c8 + public const int search_options = 2131034312; + + // aapt resource value: 0x7f0500ba + public const int search_results = 2131034298; // aapt resource value: 0x7f050029 public const int short_app_name = 2131034153; @@ -1651,59 +1663,62 @@ namespace keepass2android // aapt resource value: 0x7f05002b public const int short_app_name_nonet = 2131034155; - // aapt resource value: 0x7f0500b3 - public const int show_password = 2131034291; - // aapt resource value: 0x7f0500b5 - public const int sort_db = 2131034293; + public const int show_password = 2131034293; + + // aapt resource value: 0x7f0500b7 + public const int sort_db = 2131034295; // aapt resource value: 0x7f050012 public const int sort_key = 2131034130; - // aapt resource value: 0x7f0500b4 - public const int sort_name = 2131034292; - - // aapt resource value: 0x7f0500b1 - public const int space = 2131034289; - // aapt resource value: 0x7f0500b6 - public const int special = 2131034294; + public const int sort_name = 2131034294; - // aapt resource value: 0x7f0500c9 - public const int start_create = 2131034313; + // aapt resource value: 0x7f0500b3 + public const int space = 2131034291; + + // aapt resource value: 0x7f0500b8 + public const int special = 2131034296; // aapt resource value: 0x7f0500cb - public const int start_create_import = 2131034315; + public const int start_create = 2131034315; - // aapt resource value: 0x7f0500c8 - public const int start_open_file = 2131034312; + // aapt resource value: 0x7f0500cd + public const int start_create_import = 2131034317; // aapt resource value: 0x7f0500ca - public const int start_open_url = 2131034314; + public const int start_open_file = 2131034314; + + // aapt resource value: 0x7f0500cc + public const int start_open_url = 2131034316; // aapt resource value: 0x7f050013 public const int timeout_key = 2131034131; - // aapt resource value: 0x7f0500ba - public const int twofish = 2131034298; - - // aapt resource value: 0x7f0500bb - public const int underline = 2131034299; - // aapt resource value: 0x7f0500bc - public const int unsupported_db_version = 2131034300; + public const int twofish = 2131034300; // aapt resource value: 0x7f0500bd - public const int uppercase = 2131034301; - - // aapt resource value: 0x7f0500c0 - public const int version_label = 2131034304; + public const int underline = 2131034301; // aapt resource value: 0x7f0500be - public const int warning_read_only = 2131034302; + public const int unsupported_db_version = 2131034302; // aapt resource value: 0x7f0500bf - public const int warning_unmounted = 2131034303; + public const int uppercase = 2131034303; + + // aapt resource value: 0x7f0500c2 + public const int version_label = 2131034306; + + // aapt resource value: 0x7f0500c0 + public const int warning_read_only = 2131034304; + + // aapt resource value: 0x7f0500c1 + public const int warning_unmounted = 2131034305; + + // aapt resource value: 0x7f05009d + public const int yes = 2131034269; private String() { diff --git a/src/keepass2android/Resources/values-af/strings.xml b/src/keepass2android/Resources/values-af/strings.xml new file mode 100644 index 00000000..11bc61de --- /dev/null +++ b/src/keepass2android/Resources/values-af/strings.xml @@ -0,0 +1,20 @@ + + + + + 30 seconds + 1 minute + 5 minutes + Never + + + Small + Medium + Large + + + Do not remember username and password + Remember username only + Remember username and password + + diff --git a/src/keepass2android/Resources/values-ar/strings.xml b/src/keepass2android/Resources/values-ar/strings.xml new file mode 100644 index 00000000..11bc61de --- /dev/null +++ b/src/keepass2android/Resources/values-ar/strings.xml @@ -0,0 +1,20 @@ + + + + + 30 seconds + 1 minute + 5 minutes + Never + + + Small + Medium + Large + + + Do not remember username and password + Remember username only + Remember username and password + + diff --git a/src/keepass2android/Resources/values-el/strings.xml b/src/keepass2android/Resources/values-el/strings.xml new file mode 100644 index 00000000..11bc61de --- /dev/null +++ b/src/keepass2android/Resources/values-el/strings.xml @@ -0,0 +1,20 @@ + + + + + 30 seconds + 1 minute + 5 minutes + Never + + + Small + Medium + Large + + + Do not remember username and password + Remember username only + Remember username and password + + diff --git a/src/keepass2android/Resources/values-fi/strings.xml b/src/keepass2android/Resources/values-fi/strings.xml new file mode 100644 index 00000000..11bc61de --- /dev/null +++ b/src/keepass2android/Resources/values-fi/strings.xml @@ -0,0 +1,20 @@ + + + + + 30 seconds + 1 minute + 5 minutes + Never + + + Small + Medium + Large + + + Do not remember username and password + Remember username only + Remember username and password + + diff --git a/src/keepass2android/Resources/values-in/strings.xml b/src/keepass2android/Resources/values-in/strings.xml new file mode 100644 index 00000000..11bc61de --- /dev/null +++ b/src/keepass2android/Resources/values-in/strings.xml @@ -0,0 +1,20 @@ + + + + + 30 seconds + 1 minute + 5 minutes + Never + + + Small + Medium + Large + + + Do not remember username and password + Remember username only + Remember username and password + + diff --git a/src/keepass2android/Resources/values-iw/strings.xml b/src/keepass2android/Resources/values-iw/strings.xml new file mode 100644 index 00000000..11bc61de --- /dev/null +++ b/src/keepass2android/Resources/values-iw/strings.xml @@ -0,0 +1,20 @@ + + + + + 30 seconds + 1 minute + 5 minutes + Never + + + Small + Medium + Large + + + Do not remember username and password + Remember username only + Remember username and password + + diff --git a/src/keepass2android/Resources/values-ko/strings.xml b/src/keepass2android/Resources/values-ko/strings.xml new file mode 100644 index 00000000..11bc61de --- /dev/null +++ b/src/keepass2android/Resources/values-ko/strings.xml @@ -0,0 +1,20 @@ + + + + + 30 seconds + 1 minute + 5 minutes + Never + + + Small + Medium + Large + + + Do not remember username and password + Remember username only + Remember username and password + + diff --git a/src/keepass2android/Resources/values-no/strings.xml b/src/keepass2android/Resources/values-no/strings.xml new file mode 100644 index 00000000..a3635000 --- /dev/null +++ b/src/keepass2android/Resources/values-no/strings.xml @@ -0,0 +1,159 @@ + + + + Tilbakemelding + Heimeside + Keepass2Android er ei android-utgåve av KeePass passordstyrar. + Godta + Legg til post + Legg til gruppe + Legg til gruppe + Algoritme + Algoritme + Programtidsavbrot + Tid før databasen blir låst når programmet ikkje er i bruk. + Program + Programinnstillingar + Parentesar + Du må ha Open Intents filbehandlar for å kunna bla i filer. Klikk nedanfor for å installera han. Grunna nokre småfeil i programmet kan det vera at det ikkje fungerer heilt den første gongen du bruker det. + Byggjer søkjeindeksen … + Avbryt + Utklippstavla er tømt. + Tidsavbrot på utklippstavla + Tid før utklippstavla blir tømt etter at brukarnamnet eller passordet er kopiert. + Kopier brukarnamnet til utklippstavla + Kopier passordet til utklippstavla + Lagar databasenøkkelen … + Gjeldande gruppe + Gjeldande gruppe: Rot + Dekrypterer databasen … + Dekrypterer oppføringa + Standarddatabasen + Tal + Keepass2Android kjem med INGEN SOM HELST GARANTI. Dette er eit fritt program. Du er velkomen til å redistribuera det i samsvar med vilkåra til GPL utgåve 2 eller nyare. + Skriv filnamnet til databasen + Brukt + Skriv inn passordet og/eller nøkkelfil for å låsa opp databasen + Avbryt + Merknader + Stadfest passordet + Laga + Går ut + Nøkkelfil (valfri) + Endra + Passord + Lagra + Namn + Adresse + Brukaramn + Kan ikkje bruka ArcFour dataflytkryptering. + Keepass2Android kan ikkje bruka denne ressursen. + Klarte ikkje å laga gruppa. + Klarte ikkje å laga foreldrekatalogen. + Denne fila finst allereie. + Klarte ikkje å bestemma databaseinnstillingane. + Klarte ikkje å lasta lenkja. + Treng eit filnamn. + Klarte ikkje å laga fila + Ugyldig database. + Ugyldig stig. + Treng eit namn. + Treng eit passord eller ei nøkkelfil. + Telefonen gjekk tom for minne ved lesinga av databasen din. Databasen er kanskje for stor. + Du må velja minst éin passordlagingstype + Passorda samsvarer ikkje. + Omgangar må vera eit tal. + For mange omgangar. Bruker 2147483648. + Treng ein tittel. + Bruk eit positivt heiltal i lengdfeltet + Fann ikkje fila. + Filbehandlar + Lag passord + Gruppe + merknad + stadfest passordet + laga passord + Gruppenamn + nøkkelfil + lengd + passord + Passord + namn + adresse + brukarnamn + Installer frå marknaden + Installer frå nettet + Ugyldig passord eller nøkkelfil. + Ukjent databaseformat. + Lengd + Gruppelistestorleik + Tekststorleik i gruppelista + Lastar databasen … + Små bokstavar + Masker passord + Gøym passorda (standardval) + Om + Endra hovudnøkkelen + Kopier passordet + Kopier brukaren + Lag + Innstillingar + Databaseinnstillingar + Slett + Doner + Endra + Gøym passordet + Gå til heimesida + Lås databasen + Opna + Gje nytt namn + Søk + Gå til adressa + Aldri + Ingen oppføringar i databasen eller gruppa. + Ingen søkjeresultat + Ingen behandlar for denne adressa. + Opna nyleg brukt database (klikk for å opna) + Søk ikkje i kopipostane eller søppelbøtta + Søkjeresultatet inneheld ikkje oppføringar frå \'Backup\' eller søppelbøtta + Filnamnet til KeePass-databasen + Skriv databasepassordet + Lager ny database … + Arbeider … + Hugsar staden til nøkkelfilene + Lagra nøkkelfila + Ta vekk + Rot + Krypteringsomgangar + Fleire krypteringsomgangar gjev tilleggsvern mot rå makt-åtak, men kan òg gjera lasting og lagring mykje tregare. + omgangar + Lagrar databasen … + Mellomrom + Søk + Syn passordet + Sorter etter namn + DB-sortering + Spesial + Understreking + Kan ikkje bruka databaseutgåva. + Store bokstavar + SD-kortet ditt kan berre lesast. Det kan vera at du ikkje kan lagra endringar i databasen. + SD-kortet er ikkje montert i eininga di. Du kan verken henta eller laga databasen din. + Utgåve + + 30 sekund + 1 minutt + 5 minutt + Aldri + + + Liten + Middels + Stor + + + Do not remember username and password + Remember username only + Remember username and password + + diff --git a/src/keepass2android/Resources/values-pt-rPT/strings.xml b/src/keepass2android/Resources/values-pt-rPT/strings.xml new file mode 100644 index 00000000..11bc61de --- /dev/null +++ b/src/keepass2android/Resources/values-pt-rPT/strings.xml @@ -0,0 +1,20 @@ + + + + + 30 seconds + 1 minute + 5 minutes + Never + + + Small + Medium + Large + + + Do not remember username and password + Remember username only + Remember username and password + + diff --git a/src/keepass2android/Resources/values-ro/strings.xml b/src/keepass2android/Resources/values-ro/strings.xml new file mode 100644 index 00000000..11bc61de --- /dev/null +++ b/src/keepass2android/Resources/values-ro/strings.xml @@ -0,0 +1,20 @@ + + + + + 30 seconds + 1 minute + 5 minutes + Never + + + Small + Medium + Large + + + Do not remember username and password + Remember username only + Remember username and password + + diff --git a/src/keepass2android/Resources/values-sl/strings.xml b/src/keepass2android/Resources/values-sl/strings.xml new file mode 100644 index 00000000..11bc61de --- /dev/null +++ b/src/keepass2android/Resources/values-sl/strings.xml @@ -0,0 +1,20 @@ + + + + + 30 seconds + 1 minute + 5 minutes + Never + + + Small + Medium + Large + + + Do not remember username and password + Remember username only + Remember username and password + + diff --git a/src/keepass2android/Resources/values-sr/strings.xml b/src/keepass2android/Resources/values-sr/strings.xml new file mode 100644 index 00000000..11bc61de --- /dev/null +++ b/src/keepass2android/Resources/values-sr/strings.xml @@ -0,0 +1,20 @@ + + + + + 30 seconds + 1 minute + 5 minutes + Never + + + Small + Medium + Large + + + Do not remember username and password + Remember username only + Remember username and password + + diff --git a/src/keepass2android/Resources/values-sv/strings.xml b/src/keepass2android/Resources/values-sv/strings.xml new file mode 100644 index 00000000..11bc61de --- /dev/null +++ b/src/keepass2android/Resources/values-sv/strings.xml @@ -0,0 +1,20 @@ + + + + + 30 seconds + 1 minute + 5 minutes + Never + + + Small + Medium + Large + + + Do not remember username and password + Remember username only + Remember username and password + + diff --git a/src/keepass2android/Resources/values-tr/strings.xml b/src/keepass2android/Resources/values-tr/strings.xml new file mode 100644 index 00000000..11bc61de --- /dev/null +++ b/src/keepass2android/Resources/values-tr/strings.xml @@ -0,0 +1,20 @@ + + + + + 30 seconds + 1 minute + 5 minutes + Never + + + Small + Medium + Large + + + Do not remember username and password + Remember username only + Remember username and password + + diff --git a/src/keepass2android/Resources/values-vi/strings.xml b/src/keepass2android/Resources/values-vi/strings.xml new file mode 100644 index 00000000..11bc61de --- /dev/null +++ b/src/keepass2android/Resources/values-vi/strings.xml @@ -0,0 +1,20 @@ + + + + + 30 seconds + 1 minute + 5 minutes + Never + + + Small + Medium + Large + + + Do not remember username and password + Remember username only + Remember username and password + + diff --git a/src/keepass2android/Resources/values/strings.xml b/src/keepass2android/Resources/values/strings.xml index dc9b6bbe..4f0a1411 100644 --- a/src/keepass2android/Resources/values/strings.xml +++ b/src/keepass2android/Resources/values/strings.xml @@ -128,6 +128,8 @@ Go to URL Minus Never + Yes + No No entries in the database or group. No search results No handler for this url. @@ -207,6 +209,9 @@ Rename Failed to add file attachment. Recycle Bin + Do you want to delete this entry permanently? Press No to recycle. + Do you want to delete this group permanently? Press No to recycle. + Delete permanently? 30 seconds 1 minute diff --git a/src/keepass2android/database/edit/ActionOnFinish.cs b/src/keepass2android/database/edit/ActionOnFinish.cs index 01254eaf..a0c4c95f 100644 --- a/src/keepass2android/database/edit/ActionOnFinish.cs +++ b/src/keepass2android/database/edit/ActionOnFinish.cs @@ -40,6 +40,11 @@ namespace keepass2android this.actionToPerform = actionToPerform; } + public ActionOnFinish(ActionToPerformOnFinsh actionToPerform, OnFinish finish) : base(finish) + { + this.actionToPerform = actionToPerform; + } + public ActionOnFinish(ActionToPerformOnFinsh actionToPerform, Handler handler) : base(handler) { this.actionToPerform = actionToPerform; diff --git a/src/keepass2android/database/edit/DeleteEntry.cs b/src/keepass2android/database/edit/DeleteEntry.cs index 556936db..6a2c2adc 100644 --- a/src/keepass2android/database/edit/DeleteEntry.cs +++ b/src/keepass2android/database/edit/DeleteEntry.cs @@ -30,12 +30,10 @@ using KeePassLib; namespace keepass2android { - public class DeleteEntry : RunnableOnFinish { + public class DeleteEntry : DeleteRunnable { - private Database mDb; private PwEntry mEntry; - private Context mCtx; - + public DeleteEntry(Context ctx, Database db, PwEntry entry, OnFinish finish):base(finish) { mCtx = ctx; mDb = db; @@ -43,12 +41,27 @@ namespace keepass2android } - + public override bool CanRecycle + { + get + { + return CanRecycleGroup(mEntry.ParentGroup); + } + } + + protected override int QuestionsResourceId + { + get + { + return Resource.String.AskDeletePermanentlyEntry; + } + } + public override void run() { PwDatabase pd = mDb.pm; + PwGroup pgRecycleBin = pd.RootGroup.FindGroup(pd.RecycleBinUuid, true); - bool bShiftPressed = false; bool bUpdateGroupList = false; DateTime dtNow = DateTime.Now; @@ -58,38 +71,51 @@ namespace keepass2android { pgParent.Entries.Remove(pe); - bool bPermanent = true; - if(pd.RecycleBinEnabled == false) bPermanent = true; - else if(bShiftPressed) bPermanent = true; - else if(pgRecycleBin == null) { } // Recycle - else if(pgParent == pgRecycleBin) bPermanent = true; - else if(pgParent.IsContainedIn(pgRecycleBin)) bPermanent = true; - - if(bPermanent) - { - /* TODO KP Desktop - if(!MessageService.AskYesNo(bSingle ? KPRes.DeleteEntriesQuestionSingle : - KPRes.DeleteEntriesQuestion, bSingle ? KPRes.DeleteEntriesTitleSingle : - KPRes.DeleteEntriesTitle)) - return; -*/ - + if ((DeletePermanently) || (!CanRecycle)) + { PwDeletedObject pdo = new PwDeletedObject(pe.Uuid, dtNow); pd.DeletedObjects.Add(pdo); + + mFinish = new ActionOnFinish( (success, message) => + { + if ( success ) { + // Mark parent dirty + if ( pgParent != null ) { + mDb.dirty.Add(pgParent); + } + } else { + // Let's not bother recovering from a failure to save a deleted entry. It is too much work. + App.setShutdown(); + } + + }); } else // Recycle { - DeleteGroup.EnsureRecycleBin(ref pgRecycleBin, pd, ref bUpdateGroupList, mCtx); + EnsureRecycleBin(ref pgRecycleBin, ref bUpdateGroupList); pgRecycleBin.AddEntry(pe, true, true); pe.Touch(false); + + mFinish = new ActionOnFinish( (success, message) => + { + if ( success ) { + // Mark previous parent dirty + if ( pgParent != null ) { + mDb.dirty.Add(pgParent); + } + // Mark new parent dirty + mDb.dirty.Add(pgRecycleBin); + } else { + // Let's not bother recovering from a failure to save a deleted entry. It is too much work. + App.setShutdown(); + } + + }, this.mFinish); } } - - // Save - mFinish = new AfterDelete(mFinish, pgParent, mEntry, mDb); - + // Commit database SaveDB save = new SaveDB(mCtx, mDb, mFinish, false); save.run(); @@ -97,36 +123,6 @@ namespace keepass2android } - private class AfterDelete : OnFinish { - - private PwGroup mParent; - private PwEntry mEntry; - Database mDb; - - public AfterDelete(OnFinish finish, PwGroup parent, PwEntry entry, Database db):base(finish) { - mParent = parent; - mEntry = entry; - mDb = db; - } - - public override void run() { - if ( mSuccess ) { - // Mark parent dirty - if ( mParent != null ) { - mDb.dirty.Add(mParent); - } - } else { - // Let's not bother recovering from a failure to save a deleted entry. It is too much work. - App.setShutdown(); - - } - - base.run(); - - } - - } - } } diff --git a/src/keepass2android/database/edit/DeleteGroup.cs b/src/keepass2android/database/edit/DeleteGroup.cs index 4dec327c..b8135319 100644 --- a/src/keepass2android/database/edit/DeleteGroup.cs +++ b/src/keepass2android/database/edit/DeleteGroup.cs @@ -31,14 +31,12 @@ using KeePassLib; namespace keepass2android { - public class DeleteGroup : RunnableOnFinish { + public class DeleteGroup : DeleteRunnable { - private Database mDb; private PwGroup mGroup; private GroupBaseActivity mAct; - private bool mDontSave; - private Context mCtx; - + protected bool mDontSave; + public DeleteGroup(Context ctx, Database db, PwGroup group, GroupBaseActivity act, OnFinish finish):base(finish) { setMembers(ctx, db, group, act, false); } @@ -46,23 +44,35 @@ namespace keepass2android public DeleteGroup(Context ctx, Database db, PwGroup group, GroupBaseActivity act, OnFinish finish, bool dontSave):base(finish) { setMembers(ctx, db, group, act, dontSave); } - - + public DeleteGroup(Context ctx, Database db, PwGroup group, OnFinish finish, bool dontSave):base(finish) { setMembers(ctx, db, group, null, dontSave); } private void setMembers(Context ctx, Database db, PwGroup group, GroupBaseActivity act, bool dontSave) { - mCtx = ctx; - mDb = db; + base.setMembers(ctx, db); + mGroup = group; mAct = act; mDontSave = dontSave; - - mFinish = new AfterDelete(mFinish, mDb, mGroup); + + } + + public override bool CanRecycle + { + get + { + return CanRecycleGroup(mGroup); + } + } + + protected override int QuestionsResourceId + { + get + { + return Resource.String.AskDeletePermanentlyGroup; + } } - - public override void run() { @@ -73,43 +83,39 @@ namespace keepass2android PwDatabase pd = mDb.pm; PwGroup pgRecycleBin = pd.RootGroup.FindGroup(pd.RecycleBinUuid, true); - bool bShiftPressed = false; - - bool bPermanent = true; //indicates whether we delete permanently or not - //TODO use settings to enable Recycle Bin App-wide? - if(pd.RecycleBinEnabled == false) bPermanent = true; - else if(bShiftPressed) bPermanent = true; - else if(pgRecycleBin == null) { } - else if(pg == pgRecycleBin) bPermanent = true; - else if(pg.IsContainedIn(pgRecycleBin)) bPermanent = true; - else if(pgRecycleBin.IsContainedIn(pg)) bPermanent = true; - - if(bPermanent) - { - /* TODO KPDesktop? - string strText = KPRes.DeleteGroupInfo + MessageService.NewParagraph + - KPRes.DeleteGroupQuestion; - if(!MessageService.AskYesNo(strText, KPRes.DeleteGroupTitle)) - return; - */ - } pgParent.Groups.Remove(pg); - if(bPermanent) + if ((DeletePermanently) || (!CanRecycle)) { pg.DeleteAllObjects(pd); PwDeletedObject pdo = new PwDeletedObject(pg.Uuid, DateTime.Now); pd.DeletedObjects.Add(pdo); + mFinish = new AfterDeletePermanently(mFinish, mDb, mGroup); } else // Recycle { bool bDummy = false; - EnsureRecycleBin(ref pgRecycleBin, pd, ref bDummy, mCtx); + EnsureRecycleBin(ref pgRecycleBin, ref bDummy); pgRecycleBin.AddGroup(pg, true, true); pg.Touch(false); + mFinish = new ActionOnFinish((success, message) => + { + if ( success ) { + // Mark new parent (Recycle bin) dirty + PwGroup parent = mGroup.ParentGroup; + if ( parent != null ) { + mDb.dirty.Add(parent); + } + //Mark old parent dirty: + mDb.dirty.Add(pgParent); + } else { + // Let's not bother recovering from a failure to save a deleted group. It is too much work. + App.setShutdown(); + } + }, this.mFinish); } // Save @@ -118,39 +124,13 @@ namespace keepass2android } - public static void EnsureRecycleBin(ref PwGroup pgRecycleBin, - PwDatabase pdContext, ref bool bGroupListUpdateRequired, Context ctx) - { - if(pdContext == null) { return; } - - if(pgRecycleBin == pdContext.RootGroup) - { - pgRecycleBin = null; - } - - if(pgRecycleBin == null) - { - pgRecycleBin = new PwGroup(true, true, ctx.GetString(Resource.String.RecycleBin), - PwIcon.TrashBin); - pgRecycleBin.EnableAutoType = false; - pgRecycleBin.EnableSearching = false; - pgRecycleBin.IsExpanded = false; - pdContext.RootGroup.AddGroup(pgRecycleBin, true); - - pdContext.RecycleBinUuid = pgRecycleBin.Uuid; - - bGroupListUpdateRequired = true; - } - else { System.Diagnostics.Debug.Assert(pgRecycleBin.Uuid.EqualsValue(pdContext.RecycleBinUuid)); } - } - - private class AfterDelete : OnFinish { + private class AfterDeletePermanently : OnFinish { Database mDb; PwGroup mGroup; - public AfterDelete(OnFinish finish, Database db, PwGroup group):base(finish) { + public AfterDeletePermanently(OnFinish finish, Database db, PwGroup group):base(finish) { this.mDb = db; this.mGroup = group; } @@ -160,7 +140,7 @@ namespace keepass2android // Remove from group global mDb.groups.Remove(mGroup.Uuid); - // Remove group from the dirty global (if it is present), not a big deal if this fails + // Remove group from the dirty global (if it is present), not a big deal if this fails (doesn't throw) mDb.dirty.Remove(mGroup); // Mark parent dirty diff --git a/src/keepass2android/database/edit/DeleteRunnable.cs b/src/keepass2android/database/edit/DeleteRunnable.cs new file mode 100644 index 00000000..79f5d3b0 --- /dev/null +++ b/src/keepass2android/database/edit/DeleteRunnable.cs @@ -0,0 +1,146 @@ + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +using Android.App; +using Android.Content; +using Android.OS; +using Android.Runtime; +using Android.Views; +using Android.Widget; +using KeePassLib; + +namespace keepass2android +{ + public abstract class DeleteRunnable : RunnableOnFinish + { + public DeleteRunnable(OnFinish finish):base(finish) + { + } + + protected Database mDb; + + protected Context mCtx; + + protected void setMembers(Context ctx, Database db) + { + mCtx = ctx; + mDb = db; + } + + + private bool mDeletePermanently = true; + + public bool DeletePermanently + { + get + { + return mDeletePermanently; + } + set + { + mDeletePermanently = value; + } + } + + public abstract bool CanRecycle + { + get; + } + + protected bool CanRecycleGroup(PwGroup pgParent) + { + bool bShiftPressed = false; + PwDatabase pd = mDb.pm; + PwGroup pgRecycleBin = pd.RootGroup.FindGroup(pd.RecycleBinUuid, true); + bool bPermanent = false; + if (pgParent != null) + { + if (pd.RecycleBinEnabled == false) + bPermanent = true; + else if (bShiftPressed) + bPermanent = true; + else if (pgRecycleBin == null) + { + } // Recycle + else if (pgParent == pgRecycleBin) + bPermanent = true; + else if (pgParent.IsContainedIn(pgRecycleBin)) + bPermanent = true; + } + return !bPermanent; + } + + + protected void EnsureRecycleBin(ref PwGroup pgRecycleBin, + ref bool bGroupListUpdateRequired) + { + if ((mDb == null) || (mDb.pm == null)) { return; } + + if(pgRecycleBin == mDb.pm.RootGroup) + { + pgRecycleBin = null; + } + + if(pgRecycleBin == null) + { + pgRecycleBin = new PwGroup(true, true, mCtx.GetString(Resource.String.RecycleBin), + PwIcon.TrashBin); + pgRecycleBin.EnableAutoType = false; + pgRecycleBin.EnableSearching = false; + pgRecycleBin.IsExpanded = false; + mDb.pm.RootGroup.AddGroup(pgRecycleBin, true); + + mDb.pm.RecycleBinUuid = pgRecycleBin.Uuid; + + bGroupListUpdateRequired = true; + } + else { System.Diagnostics.Debug.Assert(pgRecycleBin.Uuid.EqualsValue(mDb.pm.RecycleBinUuid)); } + } + + protected abstract int QuestionsResourceId + { + get; + } + + public void start() + { + if (CanRecycle) + { + AlertDialog.Builder builder = new AlertDialog.Builder(mCtx); + builder.SetTitle(mCtx.GetString(Resource.String.AskDeletePermanently_title)); + + builder.SetMessage(mCtx.GetString(QuestionsResourceId)); + + builder.SetPositiveButton(Resource.String.yes, new EventHandler((dlgSender, dlgEvt) => + { + DeletePermanently = true; + ProgressTask pt = new ProgressTask(mCtx, this, Resource.String.saving_database); + pt.run(); + })); + + builder.SetNegativeButton(Resource.String.no, new EventHandler((dlgSender, dlgEvt) => { + DeletePermanently = false; + ProgressTask pt = new ProgressTask(mCtx, this, Resource.String.saving_database); + pt.run(); + })); + + builder.SetNeutralButton(mCtx.GetString(Android.Resource.String.Cancel), + new EventHandler((dlgSender, dlgEvt) => {})); + + Dialog dialog = builder.Create(); + dialog.Show(); + + + } else + { + ProgressTask pt = new ProgressTask(mCtx, this, Resource.String.saving_database); + pt.run(); + } + } + + } +} + diff --git a/src/keepass2android/keepass2android.csproj b/src/keepass2android/keepass2android.csproj index c5274a9d..4132c5df 100644 --- a/src/keepass2android/keepass2android.csproj +++ b/src/keepass2android/keepass2android.csproj @@ -157,6 +157,7 @@ + @@ -201,6 +202,63 @@ False + + False + + + False + + + False + + + False + + + False + + + False + + + False + + + False + + + False + + + False + + + False + + + False + + + False + + + False + + + False + + + False + + + False + + + False + + + False + diff --git a/src/keepass2android/views/PwEntryView.cs b/src/keepass2android/views/PwEntryView.cs index 1409603e..b9381800 100644 --- a/src/keepass2android/views/PwEntryView.cs +++ b/src/keepass2android/views/PwEntryView.cs @@ -14,7 +14,6 @@ This file is part of Keepass2Android, Copyright 2013 Philipp Crocoll. This file You should have received a copy of the GNU General Public License along with Keepass2Android. If not, see . */ - using System; using System.Collections.Generic; using System.Linq; @@ -32,34 +31,34 @@ using Android.Text.Style; namespace keepass2android.view { - - public class PwEntryView : ClickView { + public class PwEntryView : ClickView + { protected GroupBaseActivity mAct; protected PwEntry mPw; private TextView mTv; private int mPos; - protected const int MENU_OPEN = Menu.First; private const int MENU_DELETE = MENU_OPEN + 1; - public static PwEntryView getInstance(GroupBaseActivity act, PwEntry pw, int pos) + public static PwEntryView getInstance(GroupBaseActivity act, PwEntry pw, int pos) { return new PwEntryView(act, pw, pos); } - public PwEntryView (IntPtr javaReference, JniHandleOwnership transfer) + public PwEntryView(IntPtr javaReference, JniHandleOwnership transfer) : base(javaReference, transfer) { } - protected PwEntryView(GroupBaseActivity act, PwEntry pw, int pos):base(act) { + protected PwEntryView(GroupBaseActivity act, PwEntry pw, int pos):base(act) + { mAct = act; View ev = View.Inflate(mAct, Resource.Layout.entry_list_entry, null); - mTv = (TextView) ev.FindViewById(Resource.Id.entry_text); + mTv = (TextView)ev.FindViewById(Resource.Id.entry_text); mTv.TextSize = PrefsUtil.getListTextSize(act); populateView(ev, pw, pos); @@ -70,19 +69,19 @@ namespace keepass2android.view } - private void populateView (View ev, PwEntry pw, int pos) + private void populateView(View ev, PwEntry pw, int pos) { mPw = pw; mPos = pos; - ImageView iv = (ImageView)ev.FindViewById (Resource.Id.entry_icon); + ImageView iv = (ImageView)ev.FindViewById(Resource.Id.entry_icon); bool isExpired = pw.Expires && pw.ExpiryTime < DateTime.Now; - if (isExpired) { - App.getDB ().drawFactory.assignDrawableTo (iv, Resources, App.getDB ().pm, PwIcon.Expired, PwUuid.Zero); - } - else + if (isExpired) { - App.getDB ().drawFactory.assignDrawableTo (iv, Resources, App.getDB ().pm, pw.IconId, pw.CustomIconUuid); + App.getDB().drawFactory.assignDrawableTo(iv, Resources, App.getDB().pm, PwIcon.Expired, PwUuid.Zero); + } else + { + App.getDB().drawFactory.assignDrawableTo(iv, Resources, App.getDB().pm, pw.IconId, pw.CustomIconUuid); } String title = pw.Strings.ReadSafe(PwDefs.TitleField); @@ -97,40 +96,44 @@ namespace keepass2android.view } - public void convertView(PwEntry pw, int pos) { + public void convertView(PwEntry pw, int pos) + { populateView(this, pw, pos); } - - public override void OnClick() { + public override void OnClick() + { launchEntry(); } - private void launchEntry() { - mAct.LaunchActivityForEntry(mPw,mPos); + private void launchEntry() + { + mAct.LaunchActivityForEntry(mPw, mPos); } - public override void OnCreateMenu(IContextMenu menu, IContextMenuContextMenuInfo menuInfo) { + public override void OnCreateMenu(IContextMenu menu, IContextMenuContextMenuInfo menuInfo) + { menu.Add(0, MENU_OPEN, 0, Resource.String.menu_open); menu.Add(0, MENU_DELETE, 0, Resource.String.menu_delete); } - public override bool OnContextItemSelected(IMenuItem item) { - switch ( item.ItemId) { + public override bool OnContextItemSelected(IMenuItem item) + { + switch (item.ItemId) + { - case MENU_OPEN: - launchEntry(); - return true; - case MENU_DELETE: - Handler handler = new Handler(); - DeleteEntry task = new DeleteEntry(Context, App.getDB(), mPw, new GroupBaseActivity.RefreshTask(handler, mAct)); - ProgressTask pt = new ProgressTask(mAct, task, Resource.String.saving_database); - pt.run(); - return true; + case MENU_OPEN: + launchEntry(); + return true; + case MENU_DELETE: + Handler handler = new Handler(); + DeleteEntry task = new DeleteEntry(Context, App.getDB(), mPw, new GroupBaseActivity.RefreshTask(handler, mAct)); + task.start(); + return true; - default: - return false; + default: + return false; } } diff --git a/src/keepass2android/views/PwGroupView.cs b/src/keepass2android/views/PwGroupView.cs index 98715af0..776b14de 100644 --- a/src/keepass2android/views/PwGroupView.cs +++ b/src/keepass2android/views/PwGroupView.cs @@ -108,8 +108,7 @@ namespace keepass2android.view case MENU_DELETE: Handler handler = new Handler(); DeleteGroup task = new DeleteGroup(Context, App.getDB(), mPw, mAct, new GroupBaseActivity.AfterDeleteGroup(handler, mAct)); - ProgressTask pt = new ProgressTask(mAct, task, Resource.String.saving_database); - pt.run(); + task.start(); return true; default: return false;