Compare commits
306 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| a42996892d | |||
| 3e926becba | |||
| a1eeb25dff | |||
| a1f4b64c4a | |||
| 5673b25e52 | |||
| f755add1d2 | |||
| 60dd8098c4 | |||
| 5823d04a20 | |||
| 3cdfa949e9 | |||
| b69eaddddf | |||
| 137b32303f | |||
| da87705fb8 | |||
| d808adeb39 | |||
| 2ca07c6ee9 | |||
| 9a05cd4646 | |||
| 85e16df79a | |||
| 2fd0bdf68b | |||
| 23a2d11944 | |||
| 02e515e531 | |||
| 6651d26a47 | |||
| 84df07dcd1 | |||
| d865b08aa1 | |||
| 220c855222 | |||
| de2fa484ef | |||
| f5c3b79a1d | |||
| 254f489d27 | |||
| 716d42c21a | |||
| 3f3bfa562f | |||
| a11ca07f4e | |||
| 575c275d39 | |||
| acf0d801ce | |||
| 14d810c319 | |||
| 5d7bca4538 | |||
| db48d7be5e | |||
| 234dd6d13e | |||
| 948f89f957 | |||
| b9c64626d1 | |||
| 469169b2f1 | |||
| 113a270407 | |||
| 2469324f65 | |||
| f1b5facc6a | |||
| b0260c352d | |||
| a5168ed1a5 | |||
| 4c9e7cc516 | |||
| 733b123c09 | |||
| dd2b484cdb | |||
| 1b4811e334 | |||
| d23ce67862 | |||
| b26f127fb0 | |||
| 359cebec8e | |||
| ce3bb860b8 | |||
| a1d8cffc85 | |||
| 0b4b11e7f3 | |||
| 50f3ab528d | |||
| a85dcead6b | |||
| 5b1b2a916c | |||
| 53b6adb0a5 | |||
| 0cd5a372d5 | |||
| 69fa2cb4ee | |||
| 52208d8653 | |||
| 3630606f52 | |||
| ac9aa2e6dd | |||
| f72ec65b79 | |||
| b3920d9bf3 | |||
| a828650a44 | |||
| a2c3163df8 | |||
| 15245fa85c | |||
| 28f3288d2a | |||
| 7b69a50623 | |||
| 790e45795c | |||
| 185d7ca4d3 | |||
| 383042d778 | |||
| d39a6f16aa | |||
| 7c9e879454 | |||
| bb283230f4 | |||
| 363d816a17 | |||
| 38e70d8640 | |||
| 652f2d0665 | |||
| 75b430b323 | |||
| 0491f93192 | |||
| 9a33ddbbc4 | |||
| e3e4b509e8 | |||
| 0e6bac1b2f | |||
| ebeb2c9443 | |||
| f00c0a16f1 | |||
| 1733529486 | |||
| a0cd2d0a7c | |||
| 8decc0176f | |||
| 2015a620d6 | |||
| 3e042ff2a2 | |||
| 0768ccb2fd | |||
| ff19d4dae3 | |||
| adc8652cad | |||
| 903e2e9084 | |||
| 2fcc37dddb | |||
| 42c588b51d | |||
| 0d4afae561 | |||
| 76e3422acd | |||
| 4ac2c61556 | |||
| ec0a7dc65c | |||
| fb5543f31c | |||
| a7d8c6af0b | |||
| 0a65209406 | |||
| a5d6150119 | |||
| d49e7ad60e | |||
| 989c3985ca | |||
| fb0f4bfc2b | |||
| e43e30b61a | |||
| 270a695da1 | |||
| d80fba84cf | |||
| e34cd917ea | |||
| 942770372c | |||
| b36477c160 | |||
| c39b16a8d9 | |||
| 0583a0582e | |||
| 4a5e563bda | |||
| f314809a06 | |||
| d561dcb6e6 | |||
| 6f88e49cac | |||
| 751fd56b4e | |||
| b37e7fc9bb | |||
| 5e61857384 | |||
| aee29ad821 | |||
| aad3db6f6a | |||
| 236d54557d | |||
| 27cb4328b2 | |||
| d91c81e0d4 | |||
| 6100589818 | |||
| 09b848f832 | |||
| 14825e97cc | |||
| 669d573345 | |||
| 4231b0282f | |||
| 43448e286b | |||
| ba6d2a3099 | |||
| 8f91e14049 | |||
| 0bf0d0c316 | |||
| b60fd2405a | |||
| a0d4bcc2ac | |||
| aaec546629 | |||
| 88d45ca86c | |||
| 8796e77cc0 | |||
| 07f05000b9 | |||
| 6beb57a2e7 | |||
| 75dc23c907 | |||
| a0d0f23548 | |||
| 136ab5ec01 | |||
| 8578ac67c6 | |||
| 53907bb44e | |||
| e71e67ec6a | |||
| a91e2dd591 | |||
| 1980c70bad | |||
| 97380cd16a | |||
| 01844469a0 | |||
| aace88ebfa | |||
| cb323ee444 | |||
| 4c35109b9b | |||
| efec8c45d9 | |||
| f450b14fa9 | |||
| 91b1155bd4 | |||
| 0917c9cd1d | |||
| 64510a419c | |||
| c01eab9b00 | |||
| 76a1fc4803 | |||
| 01e46c72cd | |||
| 957153e79e | |||
| c3d1b6814c | |||
| d0672865ce | |||
| 74ffbf48be | |||
| 06cb0ff325 | |||
| 5af70bc27c | |||
| 3240a25aef | |||
| 88688e6a81 | |||
| 081e2b23b1 | |||
| cc8e178e85 | |||
| 1411e7be15 | |||
| d5c2a8b9fa | |||
| 60b9085237 | |||
| 828f96a73d | |||
| 2b8cb0c495 | |||
| c0457803c7 | |||
| 3a8b40bfa0 | |||
| 8e8ade004c | |||
| bb7452918d | |||
| 3731884843 | |||
| 28f9eca5e4 | |||
| deda874741 | |||
| ed4ba18767 | |||
| edfbab06db | |||
| bdee370b7e | |||
| 27a4b7637d | |||
| de524cc9f5 | |||
| 274d9b0b8f | |||
| 7af947189b | |||
| ffce932eb9 | |||
| 3ecb5a4330 | |||
| 90cd8838f3 | |||
| ed5c7e549e | |||
| a036d892c5 | |||
| de1d3ef2bf | |||
| 57f58c5619 | |||
| fcf2b8c20a | |||
| ca1a16671a | |||
| 1c52ead6bc | |||
| a9e0f6c8c4 | |||
| 7d7d2acf76 | |||
| ed6e16581d | |||
| 083ecdde1a | |||
| 4e862134ee | |||
| 806574ff8d | |||
| d0571160c4 | |||
| 5a54cd4b8a | |||
| d1f163050c | |||
| 81041c8e89 | |||
| f3508787b8 | |||
| 6fec2424db | |||
| e991a209ea | |||
| 8a85c02aba | |||
| b9edf88093 | |||
| f01fa02082 | |||
| 5e495c4757 | |||
| dd21632e35 | |||
| 5c4898fff7 | |||
| c13a5e9b68 | |||
| 3a21f4a6c4 | |||
| c02aa85cab | |||
| 0e731a954c | |||
| 271ff3cbb8 | |||
| 5ebebc9c43 | |||
| 091a31d975 | |||
| a505f24aa0 | |||
| c58f2017f6 | |||
| dc6b32d389 | |||
| ca23b6e2c5 | |||
| c8a0d268f9 | |||
| 9110ed7c6c | |||
| ecf3330e4c | |||
| 6b3ce880c0 | |||
| 0bbc7677f6 | |||
| ee185d0f87 | |||
| 877ca293a0 | |||
| 809185769a | |||
| fac34140e9 | |||
| ec0fd48a1e | |||
| 0d6d08b911 | |||
| fd8fb3bd55 | |||
| 1faaab1f9c | |||
| 52b6346f08 | |||
| 036cc8a9fa | |||
| 5db22aa4ad | |||
| 2e1e804e8c | |||
| 78a865166c | |||
| 35c9a96c18 | |||
| 3b39ff6649 | |||
| 90722b5ac4 | |||
| 12e0ecf347 | |||
| da664bc881 | |||
| ce37da0084 | |||
| fb874d5359 | |||
| bdc86b0285 | |||
| a6d8386b08 | |||
| b69ca46485 | |||
| cb30257b83 | |||
| 9123210f69 | |||
| 630a259a5a | |||
| f0183064ed | |||
| 11bca87a47 | |||
| 3863b74fbd | |||
| 8216ce7d20 | |||
| a7a06ce26b | |||
| e9e4c01e54 | |||
| 47e2fa4a22 | |||
| 90fad460a6 | |||
| 929962c228 | |||
| a55edf0ba0 | |||
| e255926e10 | |||
| 21ed3e06e6 | |||
| 2ceffb283f | |||
| 2e52bacfba | |||
| 6c624e93b3 | |||
| ee5b2371e0 | |||
| 18297213f2 | |||
| 1373e46d04 | |||
| d7c6bac301 | |||
| b9e3a5454e | |||
| 3decd485ea | |||
| 285fcf3df3 | |||
| 0312960e93 | |||
| cfee7400c9 | |||
| e113fb0902 | |||
| deedd1acac | |||
| e1d912158d | |||
| 373e15b08a | |||
| e2bdb0bf13 | |||
| 19de16887c | |||
| 8609892116 | |||
| 76717b908d | |||
| c57ae9861f | |||
| 63a2899fdc | |||
| 2d86c5b10b | |||
| bd5ba8ebaf | |||
| 0e90ea1308 | |||
| ec05602bb1 | |||
| 2c55c93367 | |||
| b37a91cdd9 | |||
| 223c39d26a | |||
| 0a46073552 |
@@ -6,7 +6,7 @@ In short, the Android part is about the User Interface. The Interface is transla
|
||||
|
||||
Delta Chat Core is used in the Android and in the [iOS](https://github.com/deltachat/deltachat-ios) version.
|
||||
|
||||
Please try to create your issue to the respective Issue tracker: Here, or in [Core](https://github.com/deltachat/deltachat-core/issues). Don't worry, if you are not sure. We will move the issue if necessary.
|
||||
Please try to create your issue to the respective Issue tracker: Here, or in [Core](https://github.com/deltachat/deltachat-core/issues). Don't worry, if you are not sure. The issue will be handled anyway.
|
||||
|
||||
If you intend to create a **feature request** for Delta Chat, please check the exiting requests for
|
||||
* [Android](https://github.com/deltachat/deltachat-android/issues?q=is%3Aissue+label%3A%22feature+request%22+sort%3Aupdated-desc) and
|
||||
@@ -21,3 +21,5 @@ If you intend to send a **bug report** for Delta Chat, search for bugs (includin
|
||||
A **bug** is a reproducable misbehaviour, when something happens but something else should happen instead.
|
||||
|
||||
Did you know there is a [Help](https://delta.chat/en/help) page for Delta Chat?
|
||||
|
||||
To ask questions, you are invited to join our IRC channel **#deltachat** on [Freenode](https://webchat.freenode.net/?uio=MTE9MjA16a&channels=%23deltachat).
|
||||
|
||||
@@ -11,5 +11,4 @@ libs/
|
||||
*.prv*
|
||||
|
||||
# transifex temporary files
|
||||
tools/.tx/
|
||||
tools/translations/
|
||||
|
||||
@@ -1,5 +1,105 @@
|
||||
# Delta Chat Changelog
|
||||
|
||||
## v0.17.2
|
||||
2018-05-15
|
||||
|
||||
* Fix problem with adding formerly uncontacted members to groups
|
||||
* Unblock manually blocked members when they are created manually as contact again
|
||||
|
||||
## v0.17.1
|
||||
2018-05-11
|
||||
|
||||
* Improve QR code scanning screens
|
||||
* Add a labs-option to disabled the new QR logo overlay
|
||||
* Update Russian translations
|
||||
|
||||
## v0.17.0
|
||||
2018-05-07
|
||||
|
||||
* Show shared chats in user profiles
|
||||
* If a contact has changed his encryption setups, this is shown as a system messages in the middle of the chat view
|
||||
* Show added group members, changed group titles etc. as system messages
|
||||
* Show direct buttons to create a new group or contact in the "New Chat" dialog
|
||||
* Improve "Add contact" dialog
|
||||
* Move subject and most chat metadata to the encrypted part following the "Memoryhole" proposal
|
||||
* Show read-timestamps in message info
|
||||
* Do not add contacts from Bcc to group-memberlist to avoid privacy leaks and to get a unique memberlist for all group-members
|
||||
* In a mail contains plaintext and encrypted parts, the whole mail is treated as not being encrypted correctly
|
||||
* Restructure settings and advanced settings
|
||||
* Fix problems with Office 365 and similar services
|
||||
* Fix a problem where incoming messages are shown as being sent by oneself
|
||||
* Experimental QR code scanning options can be enabled in the advanced settings
|
||||
* Update Albanian, Catalan, Dutch, French, German, Italian, Norwegian, Polish, Russian, Spanish, Turkish and Ukrainian translations
|
||||
* Add Basque translation
|
||||
* Add Chinese translation
|
||||
* Add Japanese translation
|
||||
|
||||
## v0.16.0
|
||||
2018-03-19
|
||||
|
||||
* Messages from normal clients to more than one recipient create an implicit "ad-hoc group"
|
||||
* Allow group creation though contact requests
|
||||
* Always display the _sending_ time in the chat list; the list itself is sorted by _receiving_ time and "Message info" shows both times now
|
||||
* If parts but the footnote are cut from mails, this is indicated "..."; use "Message info" to get the full text
|
||||
* Highlight the subject in the "Message info"
|
||||
* Autoconfigure prefers 'https' over 'http'
|
||||
* Bug fixes, eg. avoid freezes if the connection is lost
|
||||
* Update Russian, Tamil and Turkish translations
|
||||
|
||||
This version requires access to the camera for upcoming QR code scanning options which can be tested already in this version, see commit
|
||||
[74ffbf4](https://github.com/deltachat/deltachat-android/commit/74ffbf48befbb0416337673d73d9f2482728cac6).
|
||||
|
||||
## v0.15.0
|
||||
2018-02-27
|
||||
|
||||
* Render the waveform for voice messages
|
||||
* Fix problems with voice messages on various devices
|
||||
* Improve deletion of message that were moved around by another e-mail client
|
||||
* Really delete messages on the server, do not only mark them for deletion
|
||||
* Ignore subsequent keys or blocks in OpenPGP files
|
||||
* Leave incoming Autocrypt Setup Messages in the inbox so that any number of other e-mail-clients can process them
|
||||
* Avoid messages sent to the "Me" chat appearing twice in other e-mail clients
|
||||
* Update Albanian translation
|
||||
|
||||
## v0.14.0
|
||||
2018-02-20
|
||||
|
||||
* Evaluate gossiped keys
|
||||
* Option to transfer the Autocrypt Setup to another device or e-mail client
|
||||
* Accept Autocrypt Setup transferred from other devices or e-mail client
|
||||
* Send any data from device to device using the chat "Me - Messages I sent to myself"
|
||||
* Do not send messages when there is an access error
|
||||
* Request for contact permissions only once
|
||||
* Bug fixes
|
||||
* Update French and Turkish translations
|
||||
|
||||
## v0.13.0
|
||||
2018-01-18
|
||||
|
||||
* Reply encrypted if the sender has enabled encryption manually (esp. useful when chatting with clients as K-9 or Enigmail)
|
||||
* Update welcome screen graphics
|
||||
* Update Norwegian, Russian and Turkish translations
|
||||
|
||||
## v0.12.0
|
||||
2018-01-07
|
||||
|
||||
* Gossip keys of other group members in the encrypted payload (will also be evaluated in one of the next versions)
|
||||
* Use SHA-256 instead of SHA-1 in signatures
|
||||
* Make the permanent notification clickable
|
||||
* Update permanent notification after import
|
||||
* Fix rendering of system messages
|
||||
* Various bug fixes
|
||||
* Update Albanian, French, Italian, Norwegian, Polish, Russian and Turkish translations
|
||||
|
||||
## v0.11.4
|
||||
2017-12-17
|
||||
|
||||
* Add option to initiate Autocrypt Key Transfer
|
||||
* Connect after importing a backup
|
||||
* Reading memory hole headers
|
||||
* Add Albanian translation
|
||||
* Update German, Italian, Polish, Portuguese, Russian, Turkish and Ukrainian translations
|
||||
|
||||
## v0.10.0
|
||||
2017-11-29
|
||||
|
||||
|
||||
@@ -27,12 +27,14 @@ dependencies {
|
||||
compile 'com.android.support:appcompat-v7:25.3.1'
|
||||
compile 'com.googlecode.mp4parser:isoparser:1.0.6'
|
||||
compile 'com.amulyakhare:com.amulyakhare.textdrawable:1.0.1'
|
||||
compile 'com.google.zxing:core:3.3.0'
|
||||
compile 'com.journeyapps:zxing-android-embedded:3.4.0'
|
||||
compile fileTree(dir: "$buildDir/native-libs", include: 'native-libs.jar')
|
||||
}
|
||||
|
||||
android {
|
||||
compileSdkVersion 25
|
||||
buildToolsVersion '25.0.2'
|
||||
compileSdkVersion 25 // should be ...
|
||||
buildToolsVersion '25.0.2' // ... in sync unless you know exactly what you're doing
|
||||
|
||||
useLibrary 'org.apache.http.legacy'
|
||||
defaultConfig.applicationId = "com.b44t.messenger"
|
||||
@@ -79,13 +81,12 @@ android {
|
||||
}
|
||||
}
|
||||
|
||||
defaultConfig.versionCode = 50
|
||||
|
||||
sourceSets.main {
|
||||
jniLibs.srcDir 'libs'
|
||||
jni.srcDirs = [] //disable automatic ndk-build call
|
||||
}
|
||||
|
||||
flavorDimensions "none"
|
||||
productFlavors {
|
||||
/*
|
||||
x86 {
|
||||
@@ -108,19 +109,22 @@ android {
|
||||
}
|
||||
*/
|
||||
fat {
|
||||
versionCode = 3
|
||||
dimension "none"
|
||||
//versionCode = 3
|
||||
}
|
||||
}
|
||||
|
||||
applicationVariants.all { variant ->
|
||||
/*applicationVariants.all { variant ->
|
||||
def abiVersion = variant.productFlavors.get(0).versionCode
|
||||
variant.mergedFlavor.versionCode = defaultConfig.versionCode * 10 + abiVersion;
|
||||
}
|
||||
}*/
|
||||
|
||||
defaultConfig {
|
||||
minSdkVersion 14 // 14: Android 4.0 Ice Cream Sandwich 2011 (Telegram default), 21: Android 5.0 Lollipop 2014 (recommended for InstantRun)
|
||||
targetSdkVersion 25 // 25: Nougat. CAVE: Do NOT target "Andoid O" without checking the background tasks carefully, see https://developer.android.com/preview/behavior-changes.html#back-all . As long as we target "Nougat", everything works as expected even for "Andoid O" or later
|
||||
// in general, we should not change the target without reason; eg. after the switch to Nougat, the camera stops working (see https://inthecheesefactory.com/blog/how-to-share-access-to-file-with-fileprovider-on-android-nougat/en )
|
||||
versionName "0.10.0" // do NOT forget to increase defaultConfig.versionCode!
|
||||
|
||||
versionName "0.17.2" // do NOT forget to increase defaultConfig.versionCode!
|
||||
versionCode 519
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1638,6 +1638,7 @@ LOCAL_SRC_FILES += \
|
||||
./messenger-backend/src/mrchatlist.c \
|
||||
./messenger-backend/src/mrcontact.c \
|
||||
./messenger-backend/src/mrdehtml.c \
|
||||
./messenger-backend/src/mrhash.c \
|
||||
./messenger-backend/src/mrimap.c \
|
||||
./messenger-backend/src/mrjob.c \
|
||||
./messenger-backend/src/mrkey.c \
|
||||
@@ -1646,10 +1647,14 @@ LOCAL_SRC_FILES += \
|
||||
./messenger-backend/src/mrlot.c \
|
||||
./messenger-backend/src/mrmailbox.c \
|
||||
./messenger-backend/src/mrmailbox_configure.c \
|
||||
./messenger-backend/src/mrmailbox_connect.c \
|
||||
./messenger-backend/src/mrmailbox_e2ee.c \
|
||||
./messenger-backend/src/mrmailbox_imex.c \
|
||||
./messenger-backend/src/mrmailbox_keyhistory.c \
|
||||
./messenger-backend/src/mrmailbox_log.c \
|
||||
./messenger-backend/src/mrmailbox_tools.c \
|
||||
./messenger-backend/src/mrmailbox_qr.c \
|
||||
./messenger-backend/src/mrmailbox_receive_imf.c \
|
||||
./messenger-backend/src/mrmailbox_securejoin.c \
|
||||
./messenger-backend/src/mrmimefactory.c \
|
||||
./messenger-backend/src/mrmimeparser.c \
|
||||
./messenger-backend/src/mrmsg.c \
|
||||
@@ -1660,7 +1665,9 @@ LOCAL_SRC_FILES += \
|
||||
./messenger-backend/src/mrsmtp.c \
|
||||
./messenger-backend/src/mrsqlite3.c \
|
||||
./messenger-backend/src/mrstock.c \
|
||||
./messenger-backend/src/mrtoken.c \
|
||||
./messenger-backend/src/mrtools.c \
|
||||
./messenger-backend/src/mruudecode.c \
|
||||
./messenger-backend/cmdline/cmdline.c \
|
||||
./mrwrapper.c
|
||||
|
||||
|
||||
@@ -403,7 +403,7 @@
|
||||
/* #undef STATIC_LDAPDB */
|
||||
|
||||
/* Link LOGIN Staticly */
|
||||
/* #undef STATIC_LOGIN */
|
||||
#define STATIC_LOGIN
|
||||
|
||||
/* Link NTLM Staticly */
|
||||
/* #undef STATIC_NTLM */
|
||||
|
||||
@@ -117,14 +117,16 @@ void mrosnative_unsetup_thread(mrmailbox_t* mailbox)
|
||||
|
||||
/* tools */
|
||||
|
||||
static jintArray mrarray2jintArray_n_mrarray_unref(JNIEnv *env, const mrarray_t* ca)
|
||||
static jintArray mrarray2jintArray_n_mrarray_unref(JNIEnv *env, mrarray_t* ca)
|
||||
{
|
||||
/* takes a C-array of type mrarray_t and converts it it a Java-Array.
|
||||
then the C-array is freed and the Java-Array is returned. */
|
||||
int i, icnt = ca? mrarray_get_cnt(ca) : 0;
|
||||
jintArray ret = (*env)->NewIntArray(env, icnt); if (ret == NULL) { return NULL; }
|
||||
|
||||
if( ca ) {
|
||||
if( icnt ) {
|
||||
uintptr_t* ca_data = ca->m_array;
|
||||
uintptr_t* ca_data = mrarray_get_raw(ca);
|
||||
if( sizeof(uintptr_t)==sizeof(jint) ) {
|
||||
(*env)->SetIntArrayRegion(env, ret, 0, icnt, (jint*)ca_data);
|
||||
}
|
||||
@@ -146,7 +148,10 @@ static jintArray mrarray2jintArray_n_mrarray_unref(JNIEnv *env, const mrarray_t*
|
||||
|
||||
static uint32_t* jintArray2uint32Pointer(JNIEnv* env, jintArray ja, int* ret_icnt)
|
||||
{
|
||||
/* takes a Java-Array and converts it to a C-Array. */
|
||||
uint32_t* ret = NULL;
|
||||
if( ret_icnt ) { *ret_icnt = 0; }
|
||||
|
||||
if( env && ja && ret_icnt )
|
||||
{
|
||||
int i, icnt = (*env)->GetArrayLength(env, ja);
|
||||
@@ -167,6 +172,7 @@ static uint32_t* jintArray2uint32Pointer(JNIEnv* env, jintArray ja, int* ret_icn
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -247,8 +253,10 @@ JNIEXPORT void Java_com_b44t_messenger_MrMailbox_close(JNIEnv *env, jclass cls)
|
||||
|
||||
JNIEXPORT jstring Java_com_b44t_messenger_MrMailbox_getBlobdir(JNIEnv *env, jclass cls)
|
||||
{
|
||||
mrmailbox_t* ths = get_mrmailbox_t(env, cls); if( ths == NULL ) { return JSTRING_NEW(NULL); }
|
||||
return JSTRING_NEW(ths->m_blobdir);
|
||||
char* temp = mrmailbox_get_blobdir(get_mrmailbox_t(env, cls));
|
||||
jstring ret = JSTRING_NEW(temp);
|
||||
free(temp);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
@@ -258,9 +266,9 @@ JNIEXPORT jint Java_com_b44t_messenger_MrMailbox_configureAndConnect(JNIEnv *env
|
||||
}
|
||||
|
||||
|
||||
JNIEXPORT void Java_com_b44t_messenger_MrMailbox_configureCancel(JNIEnv *env, jclass cls)
|
||||
JNIEXPORT void Java_com_b44t_messenger_MrMailbox_stopOngoingProcess(JNIEnv *env, jclass cls)
|
||||
{
|
||||
mrmailbox_configure_cancel(get_mrmailbox_t(env, cls));
|
||||
mrmailbox_stop_ongoing_process(get_mrmailbox_t(env, cls));
|
||||
}
|
||||
|
||||
|
||||
@@ -284,10 +292,10 @@ JNIEXPORT void Java_com_b44t_messenger_MrMailbox_disconnect(JNIEnv *env, jclass
|
||||
|
||||
/* MrMailbox - handle contacts */
|
||||
|
||||
JNIEXPORT jintArray Java_com_b44t_messenger_MrMailbox_getKnownContacts(JNIEnv *env, jclass cls, jstring query)
|
||||
JNIEXPORT jintArray Java_com_b44t_messenger_MrMailbox_getContacts(JNIEnv *env, jclass cls, jint flags, jstring query)
|
||||
{
|
||||
CHAR_REF(query);
|
||||
mrarray_t* ca = mrmailbox_get_known_contacts(get_mrmailbox_t(env, cls), queryPtr);
|
||||
mrarray_t* ca = mrmailbox_get_contacts(get_mrmailbox_t(env, cls), flags, queryPtr);
|
||||
CHAR_UNREF(query);
|
||||
return mrarray2jintArray_n_mrarray_unref(env, ca);
|
||||
}
|
||||
@@ -337,16 +345,16 @@ JNIEXPORT jint Java_com_b44t_messenger_MrMailbox_MrMailboxDeleteContact(JNIEnv *
|
||||
|
||||
/* MrMailbox - handle chats */
|
||||
|
||||
JNIEXPORT jlong Java_com_b44t_messenger_MrMailbox_MrMailboxGetChatlist(JNIEnv *env, jclass c, jlong hMailbox, jint listflags, jstring query)
|
||||
JNIEXPORT jlong Java_com_b44t_messenger_MrMailbox_MrMailboxGetChatlist(JNIEnv *env, jclass c, jlong hMailbox, jint listflags, jstring query, jint queryId)
|
||||
{
|
||||
jlong ret;
|
||||
if( query ) {
|
||||
CHAR_REF(query);
|
||||
ret = (jlong)mrmailbox_get_chatlist((mrmailbox_t*)hMailbox, listflags, queryPtr);
|
||||
ret = (jlong)mrmailbox_get_chatlist((mrmailbox_t*)hMailbox, listflags, queryPtr, queryId);
|
||||
CHAR_UNREF(query);
|
||||
}
|
||||
else {
|
||||
ret = (jlong)mrmailbox_get_chatlist((mrmailbox_t*)hMailbox, listflags, NULL);
|
||||
ret = (jlong)mrmailbox_get_chatlist((mrmailbox_t*)hMailbox, listflags, NULL, queryId);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
@@ -366,7 +374,7 @@ JNIEXPORT jint Java_com_b44t_messenger_MrMailbox_getChatIdByContactId(JNIEnv *en
|
||||
|
||||
JNIEXPORT void Java_com_b44t_messenger_MrMailbox_markseenMsgs(JNIEnv *env, jclass cls, jintArray msg_ids)
|
||||
{
|
||||
int msg_ids_cnt;
|
||||
int msg_ids_cnt = 0;
|
||||
const uint32_t* msg_ids_ptr = jintArray2uint32Pointer(env, msg_ids, &msg_ids_cnt);
|
||||
mrmailbox_markseen_msgs(get_mrmailbox_t(env, cls), msg_ids_ptr, msg_ids_cnt);
|
||||
free(msg_ids_ptr);
|
||||
@@ -397,10 +405,16 @@ JNIEXPORT jint Java_com_b44t_messenger_MrMailbox_createChatByContactId(JNIEnv *e
|
||||
}
|
||||
|
||||
|
||||
JNIEXPORT jint Java_com_b44t_messenger_MrMailbox_createGroupChat(JNIEnv *env, jclass cls, jstring name)
|
||||
JNIEXPORT jint Java_com_b44t_messenger_MrMailbox_createChatByMsgId(JNIEnv *env, jclass cls, jint msg_id)
|
||||
{
|
||||
return (jint)mrmailbox_create_chat_by_msg_id(get_mrmailbox_t(env, cls), msg_id);
|
||||
}
|
||||
|
||||
|
||||
JNIEXPORT jint Java_com_b44t_messenger_MrMailbox_createGroupChat(JNIEnv *env, jclass cls, jboolean verified, jstring name)
|
||||
{
|
||||
CHAR_REF(name);
|
||||
jint ret = (jint)mrmailbox_create_group_chat(get_mrmailbox_t(env, cls), namePtr);
|
||||
jint ret = (jint)mrmailbox_create_group_chat(get_mrmailbox_t(env, cls), verified, namePtr);
|
||||
CHAR_UNREF(name);
|
||||
return ret;
|
||||
}
|
||||
@@ -474,7 +488,7 @@ JNIEXPORT jstring Java_com_b44t_messenger_MrMailbox_MrMailboxGetMsgInfo(JNIEnv *
|
||||
|
||||
JNIEXPORT void Java_com_b44t_messenger_MrMailbox_deleteMsgs(JNIEnv *env, jclass cls, jintArray msg_ids)
|
||||
{
|
||||
int msg_ids_cnt;
|
||||
int msg_ids_cnt = 0;
|
||||
const uint32_t* msg_ids_ptr = jintArray2uint32Pointer(env, msg_ids, &msg_ids_cnt);
|
||||
mrmailbox_delete_msgs(get_mrmailbox_t(env, cls), msg_ids_ptr, msg_ids_cnt);
|
||||
free(msg_ids_ptr);
|
||||
@@ -483,7 +497,7 @@ JNIEXPORT void Java_com_b44t_messenger_MrMailbox_deleteMsgs(JNIEnv *env, jclass
|
||||
|
||||
JNIEXPORT void Java_com_b44t_messenger_MrMailbox_forwardMsgs(JNIEnv *env, jclass cls, jintArray msg_ids, jint chat_id)
|
||||
{
|
||||
int msg_ids_cnt;
|
||||
int msg_ids_cnt = 0;
|
||||
const uint32_t* msg_ids_ptr = jintArray2uint32Pointer(env, msg_ids, &msg_ids_cnt);
|
||||
mrmailbox_forward_msgs(get_mrmailbox_t(env, cls), msg_ids_ptr, msg_ids_cnt, chat_id);
|
||||
free(msg_ids_ptr);
|
||||
@@ -572,6 +586,33 @@ JNIEXPORT jint Java_com_b44t_messenger_MrMailbox_getConfigInt(JNIEnv *env, jclas
|
||||
}
|
||||
|
||||
|
||||
/* MrMailbox - out-of-band verification */
|
||||
|
||||
JNIEXPORT jlong Java_com_b44t_messenger_MrMailbox_checkQrCPtr(JNIEnv *env, jclass cls, jstring qr)
|
||||
{
|
||||
CHAR_REF(qr);
|
||||
jlong ret = (jlong)mrmailbox_check_qr(get_mrmailbox_t(env, cls), qrPtr);
|
||||
CHAR_UNREF(qr);
|
||||
return ret;
|
||||
}
|
||||
|
||||
JNIEXPORT jstring Java_com_b44t_messenger_MrMailbox_getSecurejoinQr(JNIEnv *env, jclass cls, jint chat_id)
|
||||
{
|
||||
char* temp = mrmailbox_get_securejoin_qr(get_mrmailbox_t(env, cls), chat_id);
|
||||
jstring ret = JSTRING_NEW(temp);
|
||||
free(temp);
|
||||
return ret;
|
||||
}
|
||||
|
||||
JNIEXPORT jint Java_com_b44t_messenger_MrMailbox_joinSecurejoin(JNIEnv *env, jclass cls, jstring qr)
|
||||
{
|
||||
CHAR_REF(qr);
|
||||
jint ret = mrmailbox_join_securejoin(get_mrmailbox_t(env, cls), qrPtr);
|
||||
CHAR_UNREF(qr);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
/* MrMailbox - misc. */
|
||||
|
||||
JNIEXPORT jstring Java_com_b44t_messenger_MrMailbox_getInfo(JNIEnv *env, jclass cls)
|
||||
@@ -603,11 +644,33 @@ JNIEXPORT jstring Java_com_b44t_messenger_MrMailbox_cmdline(JNIEnv *env, jclass
|
||||
}
|
||||
|
||||
|
||||
JNIEXPORT void Java_com_b44t_messenger_MrMailbox_imex(JNIEnv *env, jclass cls, jint what, jstring dir)
|
||||
JNIEXPORT jstring Java_com_b44t_messenger_MrMailbox_initiateKeyTransfer(JNIEnv *env, jclass cls)
|
||||
{
|
||||
jstring setup_code = NULL;
|
||||
char* temp = mrmailbox_initiate_key_transfer(get_mrmailbox_t(env, cls));
|
||||
if( temp ) {
|
||||
setup_code = JSTRING_NEW(temp);
|
||||
free(temp);
|
||||
}
|
||||
return setup_code;
|
||||
}
|
||||
|
||||
|
||||
JNIEXPORT jboolean Java_com_b44t_messenger_MrMailbox_continueKeyTransfer(JNIEnv *env, jclass cls, jint msg_id, jstring setupCode)
|
||||
{
|
||||
CHAR_REF(setupCode);
|
||||
jboolean ret = mrmailbox_continue_key_transfer(get_mrmailbox_t(env, cls), msg_id, setupCodePtr);
|
||||
CHAR_UNREF(setupCode);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
JNIEXPORT int Java_com_b44t_messenger_MrMailbox_imex(JNIEnv *env, jclass cls, jint what, jstring dir)
|
||||
{
|
||||
CHAR_REF(dir);
|
||||
mrmailbox_imex(get_mrmailbox_t(env, cls), what, dirPtr, "");
|
||||
jint ret = mrmailbox_imex(get_mrmailbox_t(env, cls), what, dirPtr, "");
|
||||
CHAR_UNREF(dir);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
@@ -670,14 +733,14 @@ JNIEXPORT jint Java_com_b44t_messenger_MrChatlist_MrChatlistGetCnt(JNIEnv *env,
|
||||
JNIEXPORT jlong Java_com_b44t_messenger_MrChatlist_MrChatlistGetChatByIndex(JNIEnv *env, jclass c, jlong hChatlist, jint index)
|
||||
{
|
||||
mrchatlist_t* chatlist = (mrchatlist_t*)hChatlist;
|
||||
return (jlong)mrmailbox_get_chat(chatlist->m_mailbox, mrchatlist_get_chat_id(chatlist, index));
|
||||
return (jlong)mrmailbox_get_chat(mrchatlist_get_mailbox(chatlist), mrchatlist_get_chat_id(chatlist, index));
|
||||
}
|
||||
|
||||
|
||||
JNIEXPORT jlong Java_com_b44t_messenger_MrChatlist_MrChatlistGetMsgByIndex(JNIEnv *env, jclass c, jlong hChatlist, jint index)
|
||||
{
|
||||
mrchatlist_t* chatlist = (mrchatlist_t*)hChatlist;
|
||||
return (jlong)mrmailbox_get_msg(chatlist->m_mailbox, mrchatlist_get_msg_id(chatlist, index));
|
||||
return (jlong)mrmailbox_get_msg(mrchatlist_get_mailbox(chatlist), mrchatlist_get_msg_id(chatlist, index));
|
||||
}
|
||||
|
||||
|
||||
@@ -714,29 +777,29 @@ JNIEXPORT void Java_com_b44t_messenger_MrChat_MrChatUnref(JNIEnv *env, jclass c,
|
||||
|
||||
JNIEXPORT jint Java_com_b44t_messenger_MrChat_getId(JNIEnv *env, jobject obj)
|
||||
{
|
||||
mrchat_t* ths = get_mrchat_t(env, obj); if( ths == NULL ) { return 0; }
|
||||
return ths->m_id;
|
||||
return mrchat_get_id(get_mrchat_t(env, obj));
|
||||
}
|
||||
|
||||
|
||||
JNIEXPORT jint Java_com_b44t_messenger_MrChat_getType(JNIEnv *env, jobject obj)
|
||||
JNIEXPORT jboolean Java_com_b44t_messenger_MrChat_isGroup(JNIEnv *env, jobject obj)
|
||||
{
|
||||
mrchat_t* ths = get_mrchat_t(env, obj); if( ths == NULL ) { return 0; }
|
||||
return ths->m_type;
|
||||
int chat_type = mrchat_get_type(get_mrchat_t(env, obj));
|
||||
return (chat_type==MR_CHAT_TYPE_GROUP || chat_type==MR_CHAT_TYPE_VERIFIED_GROUP);
|
||||
}
|
||||
|
||||
|
||||
JNIEXPORT jint Java_com_b44t_messenger_MrChat_getArchived(JNIEnv *env, jobject obj)
|
||||
{
|
||||
mrchat_t* ths = get_mrchat_t(env, obj); if( ths == NULL ) { return 0; }
|
||||
return ths->m_archived;
|
||||
return mrchat_get_archived(get_mrchat_t(env, obj));
|
||||
}
|
||||
|
||||
|
||||
JNIEXPORT jstring Java_com_b44t_messenger_MrChat_getName(JNIEnv *env, jobject obj)
|
||||
{
|
||||
mrchat_t* ths = get_mrchat_t(env, obj); if( ths == NULL ) { return JSTRING_NEW(NULL); }
|
||||
return JSTRING_NEW(ths->m_name);
|
||||
const char* temp = mrchat_get_name(get_mrchat_t(env, obj));
|
||||
jstring ret = JSTRING_NEW(temp);
|
||||
free(temp);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
@@ -764,34 +827,37 @@ JNIEXPORT jboolean Java_com_b44t_messenger_MrChat_isUnpromoted(JNIEnv *env, jobj
|
||||
}
|
||||
|
||||
|
||||
JNIEXPORT jstring Java_com_b44t_messenger_MrChat_MrChatGetDraft(JNIEnv *env, jclass c, jlong hChat) /* returns NULL for "no draft" */
|
||||
JNIEXPORT jboolean Java_com_b44t_messenger_MrChat_isSelfTalk(JNIEnv *env, jobject obj)
|
||||
{
|
||||
mrchat_t* ths = (mrchat_t*)hChat;
|
||||
if( ths && ths->m_draft_text ) {
|
||||
return JSTRING_NEW(ths->m_draft_text);
|
||||
}
|
||||
return NULL; /* no draft */
|
||||
return mrchat_is_self_talk(get_mrchat_t(env, obj)) != 0;
|
||||
}
|
||||
|
||||
|
||||
JNIEXPORT jlong Java_com_b44t_messenger_MrChat_MrChatGetDraftTimestamp(JNIEnv *env, jclass c, jlong hChat)
|
||||
JNIEXPORT jboolean Java_com_b44t_messenger_MrChat_isVerified(JNIEnv *env, jobject obj)
|
||||
{
|
||||
mrchat_t* ths = (mrchat_t*)hChat; if( ths == NULL ) { return 0; }
|
||||
return ths->m_draft_timestamp;
|
||||
return mrchat_is_verified(get_mrchat_t(env, obj)) != 0;
|
||||
}
|
||||
|
||||
|
||||
JNIEXPORT jint Java_com_b44t_messenger_MrChat_MrChatGetDraftReplyToMsgId(JNIEnv *env, jclass c, jlong hChat)
|
||||
JNIEXPORT jstring Java_com_b44t_messenger_MrChat_getDraft(JNIEnv *env, jobject obj) /* returns NULL for "no draft" */
|
||||
{
|
||||
mrchat_t* ths = (mrchat_t*)hChat; if( ths == NULL ) { return 0; }
|
||||
return 0;
|
||||
const char* temp = mrchat_get_draft(get_mrchat_t(env, obj));
|
||||
jstring ret = temp? JSTRING_NEW(temp) : NULL;
|
||||
free(temp);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
JNIEXPORT jint Java_com_b44t_messenger_MrChat_MrChatSetDraft(JNIEnv *env, jclass c, jlong hChat, jstring draft /* NULL=delete */, jint replyToMsgId)
|
||||
JNIEXPORT jlong Java_com_b44t_messenger_MrChat_getDraftTimestamp(JNIEnv *env, jobject obj)
|
||||
{
|
||||
return (jlong)mrchat_get_draft_timestamp(get_mrchat_t(env, obj));
|
||||
}
|
||||
|
||||
|
||||
JNIEXPORT jint Java_com_b44t_messenger_MrChat_setDraft(JNIEnv *env, jobject obj, jstring draft /* NULL=delete */, jint replyToMsgId)
|
||||
{
|
||||
CHAR_REF(draft);
|
||||
jint ret = (jint)mrchat_set_draft((mrchat_t*)hChat, draftPtr /* NULL=delete */);
|
||||
jint ret = (jint)mrchat_set_draft(get_mrchat_t(env, obj), draftPtr /* NULL=delete */);
|
||||
CHAR_UNREF(draft);
|
||||
return ret;
|
||||
}
|
||||
@@ -865,59 +931,48 @@ JNIEXPORT void Java_com_b44t_messenger_MrMsg_MrMsgUnref(JNIEnv *env, jclass c, j
|
||||
}
|
||||
|
||||
|
||||
JNIEXPORT jint Java_com_b44t_messenger_MrMsg_MrMsgGetId(JNIEnv *env, jclass c, jlong hMsg)
|
||||
JNIEXPORT jint Java_com_b44t_messenger_MrMsg_getId(JNIEnv *env, jobject obj)
|
||||
{
|
||||
mrmsg_t* ths = (mrmsg_t*)hMsg; if( ths == NULL ) { return 0; }
|
||||
return ths->m_id;
|
||||
return mrmsg_get_id(get_mrmsg_t(env, obj));
|
||||
}
|
||||
|
||||
|
||||
JNIEXPORT jstring Java_com_b44t_messenger_MrMsg_MrMsgGetText(JNIEnv *env, jclass c, jlong hMsg)
|
||||
JNIEXPORT jstring Java_com_b44t_messenger_MrMsg_getText(JNIEnv *env, jobject obj)
|
||||
{
|
||||
mrmsg_t* ths = (mrmsg_t*)hMsg; if( ths == NULL ) { return JSTRING_NEW(NULL); }
|
||||
return JSTRING_NEW(ths->m_text);
|
||||
char* temp = mrmsg_get_text(get_mrmsg_t(env, obj));
|
||||
jstring ret = JSTRING_NEW(temp);
|
||||
free(temp);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
JNIEXPORT jlong Java_com_b44t_messenger_MrMsg_MrMsgGetTimestamp(JNIEnv *env, jclass c, jlong hMsg)
|
||||
JNIEXPORT jlong Java_com_b44t_messenger_MrMsg_getTimestamp(JNIEnv *env, jobject obj)
|
||||
{
|
||||
mrmsg_t* ths = (mrmsg_t*)hMsg; if( ths == NULL ) { return 0; }
|
||||
return ths->m_timestamp;
|
||||
return (jlong)mrmsg_get_timestamp(get_mrmsg_t(env, obj));
|
||||
}
|
||||
|
||||
|
||||
JNIEXPORT jint Java_com_b44t_messenger_MrMsg_MrMsgGetType(JNIEnv *env, jclass c, jlong hMsg)
|
||||
JNIEXPORT jint Java_com_b44t_messenger_MrMsg_getType(JNIEnv *env, jobject obj)
|
||||
{
|
||||
mrmsg_t* ths = (mrmsg_t*)hMsg; if( ths == NULL ) { return 0; }
|
||||
return ths->m_type;
|
||||
return mrmsg_get_type(get_mrmsg_t(env, obj));
|
||||
}
|
||||
|
||||
|
||||
JNIEXPORT jint Java_com_b44t_messenger_MrMsg_MrMsgGetState(JNIEnv *env, jclass c, jlong hMsg)
|
||||
JNIEXPORT jint Java_com_b44t_messenger_MrMsg_getState(JNIEnv *env, jobject obj)
|
||||
{
|
||||
mrmsg_t* ths = (mrmsg_t*)hMsg; if( ths == NULL ) { return 0; }
|
||||
return ths->m_state;
|
||||
return mrmsg_get_state(get_mrmsg_t(env, obj));
|
||||
}
|
||||
|
||||
|
||||
JNIEXPORT jint Java_com_b44t_messenger_MrMsg_MrMsgGetChatId(JNIEnv *env, jclass c, jlong hMsg)
|
||||
JNIEXPORT jint Java_com_b44t_messenger_MrMsg_getChatId(JNIEnv *env, jobject obj)
|
||||
{
|
||||
mrmsg_t* ths = (mrmsg_t*)hMsg; if( ths == NULL ) { return 0; }
|
||||
return ths->m_chat_id;
|
||||
return mrmsg_get_chat_id(get_mrmsg_t(env, obj));
|
||||
}
|
||||
|
||||
|
||||
JNIEXPORT jint Java_com_b44t_messenger_MrMsg_MrMsgGetFromId(JNIEnv *env, jclass c, jlong hMsg)
|
||||
JNIEXPORT jint Java_com_b44t_messenger_MrMsg_getFromId(JNIEnv *env, jobject obj)
|
||||
{
|
||||
mrmsg_t* ths = (mrmsg_t*)hMsg; if( ths == NULL ) { return 0; }
|
||||
return ths->m_from_id;
|
||||
}
|
||||
|
||||
|
||||
JNIEXPORT jint Java_com_b44t_messenger_MrMsg_MrMsgGetToId(JNIEnv *env, jclass c, jlong hMsg)
|
||||
{
|
||||
mrmsg_t* ths = (mrmsg_t*)hMsg; if( ths == NULL ) { return 0; }
|
||||
return ths->m_to_id;
|
||||
return mrmsg_get_from_id(get_mrmsg_t(env, obj));
|
||||
}
|
||||
|
||||
|
||||
@@ -1019,12 +1074,28 @@ JNIEXPORT jboolean Java_com_b44t_messenger_MrMsg_isIncreation(JNIEnv *env, jobje
|
||||
}
|
||||
|
||||
|
||||
JNIEXPORT jboolean Java_com_b44t_messenger_MrMsg_isSystemcmd(JNIEnv *env, jobject obj)
|
||||
JNIEXPORT jboolean Java_com_b44t_messenger_MrMsg_isInfo(JNIEnv *env, jobject obj)
|
||||
{
|
||||
return mrmsg_is_systemcmd(get_mrmsg_t(env, obj)) != 0;
|
||||
return mrmsg_is_info(get_mrmsg_t(env, obj)) != 0;
|
||||
}
|
||||
|
||||
|
||||
JNIEXPORT jboolean Java_com_b44t_messenger_MrMsg_isSetupMessage(JNIEnv *env, jobject obj)
|
||||
{
|
||||
return mrmsg_is_setupmessage(get_mrmsg_t(env, obj));
|
||||
}
|
||||
|
||||
|
||||
JNIEXPORT jstring Java_com_b44t_messenger_MrMsg_getSetupCodeBegin(JNIEnv *env, jobject obj)
|
||||
{
|
||||
char* temp = mrmsg_get_setupcodebegin(get_mrmsg_t(env, obj));
|
||||
jstring ret = JSTRING_NEW(temp);
|
||||
free(temp);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
* MrContact
|
||||
******************************************************************************/
|
||||
@@ -1068,6 +1139,15 @@ JNIEXPORT jstring Java_com_b44t_messenger_MrContact_getDisplayName(JNIEnv *env,
|
||||
}
|
||||
|
||||
|
||||
JNIEXPORT jstring Java_com_b44t_messenger_MrContact_getFirstName(JNIEnv *env, jobject obj)
|
||||
{
|
||||
const char* temp = mrcontact_get_first_name(get_mrcontact_t(env, obj));
|
||||
jstring ret = JSTRING_NEW(temp);
|
||||
free(temp);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
JNIEXPORT jstring Java_com_b44t_messenger_MrContact_getAddr(JNIEnv *env, jobject obj)
|
||||
{
|
||||
const char* temp = mrcontact_get_addr(get_mrcontact_t(env, obj));
|
||||
@@ -1088,8 +1168,13 @@ JNIEXPORT jstring Java_com_b44t_messenger_MrContact_getNameNAddr(JNIEnv *env, jo
|
||||
|
||||
JNIEXPORT jboolean Java_com_b44t_messenger_MrContact_isBlocked(JNIEnv *env, jobject obj)
|
||||
{
|
||||
mrcontact_t* ths = get_mrcontact_t(env, obj); if( ths == NULL ) { return 0; }
|
||||
return (jboolean)(ths->m_blocked != 0);
|
||||
return (jboolean)( mrcontact_is_blocked(get_mrcontact_t(env, obj)) != 0 );
|
||||
}
|
||||
|
||||
|
||||
JNIEXPORT jboolean Java_com_b44t_messenger_MrContact_isVerified(JNIEnv *env, jobject obj)
|
||||
{
|
||||
return mrcontact_is_verified(get_mrcontact_t(env, obj)) == 2;
|
||||
}
|
||||
|
||||
|
||||
@@ -1120,36 +1205,49 @@ JNIEXPORT void Java_com_b44t_messenger_MrLot_unref(JNIEnv *env, jclass cls, jlon
|
||||
|
||||
JNIEXPORT jstring Java_com_b44t_messenger_MrLot_getText1(JNIEnv *env, jobject obj)
|
||||
{
|
||||
mrlot_t* ths = get_mrlot_t(env, obj); if( ths == NULL ) { return JSTRING_NEW(NULL); }
|
||||
return JSTRING_NEW(ths->m_text1);
|
||||
char* temp = mrlot_get_text1(get_mrlot_t(env, obj));
|
||||
jstring ret = JSTRING_NEW(temp);
|
||||
free(temp);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
JNIEXPORT jint Java_com_b44t_messenger_MrLot_getText1Meaning(JNIEnv *env, jobject obj)
|
||||
{
|
||||
mrlot_t* ths = get_mrlot_t(env, obj); if( ths == NULL ) { return 0; }
|
||||
return ths->m_text1_meaning;
|
||||
return mrlot_get_text1_meaning(get_mrlot_t(env, obj));
|
||||
}
|
||||
|
||||
|
||||
JNIEXPORT jstring Java_com_b44t_messenger_MrLot_getText2(JNIEnv *env, jobject obj)
|
||||
{
|
||||
mrlot_t* ths = get_mrlot_t(env, obj); if( ths == NULL ) { return JSTRING_NEW(NULL); }
|
||||
return JSTRING_NEW(ths->m_text2);
|
||||
char* temp = mrlot_get_text2(get_mrlot_t(env, obj));
|
||||
jstring ret = JSTRING_NEW(temp);
|
||||
free(temp);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
JNIEXPORT jlong Java_com_b44t_messenger_MrLot_getTimestamp(JNIEnv *env, jobject obj)
|
||||
{
|
||||
mrlot_t* ths = get_mrlot_t(env, obj); if( ths == NULL ) { return 0; }
|
||||
return ths->m_timestamp;
|
||||
return mrlot_get_timestamp(get_mrlot_t(env, obj));
|
||||
}
|
||||
|
||||
|
||||
JNIEXPORT jint Java_com_b44t_messenger_MrLot_getState(JNIEnv *env, jobject obj)
|
||||
{
|
||||
mrlot_t* ths = get_mrlot_t(env, obj); if( ths == NULL ) { return 0; }
|
||||
return ths->m_state;
|
||||
return mrlot_get_state(get_mrlot_t(env, obj));
|
||||
}
|
||||
|
||||
|
||||
JNIEXPORT jint Java_com_b44t_messenger_MrLot_getId(JNIEnv *env, jobject obj)
|
||||
{
|
||||
return mrlot_get_id(get_mrlot_t(env, obj));
|
||||
}
|
||||
|
||||
|
||||
JNIEXPORT void Java_com_b44t_messenger_MrLot_MrLotUnref(JNIEnv *env, jclass c, jlong hLot)
|
||||
{
|
||||
mrlot_unref((mrlot_t*)hLot);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
<uses-permission android:name="android.permission.INSTALL_SHORTCUT" />
|
||||
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
|
||||
<!-- <uses-permission android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT" /> - required for AndroidUtilities.uninstallShortcut() -->
|
||||
<!-- <uses-permission android:name="android.permission.CAMERA" /> - also disabled in T'gram; we're using the camera via an intent only -->
|
||||
<uses-permission android:name="android.permission.CAMERA" /> <!-- needed for qr code scanning, not needed for taking photos (we're using an intent for this) -->
|
||||
|
||||
<application
|
||||
android:name=".ApplicationLoader"
|
||||
@@ -112,7 +112,14 @@
|
||||
</activity>
|
||||
|
||||
<activity
|
||||
android:name=".SettingsAdvActivity"
|
||||
android:name=".QRshowActivity"
|
||||
android:theme="@style/Theme.MessengerProj.AppCompat"
|
||||
android:configChanges="keyboard|keyboardHidden|orientation|screenSize">
|
||||
</activity>
|
||||
|
||||
<activity
|
||||
android:name=".QRscanActivity"
|
||||
android:theme="@style/Theme.MessengerProj.AppCompat"
|
||||
android:configChanges="keyboard|keyboardHidden|orientation|screenSize">
|
||||
</activity>
|
||||
|
||||
|
||||
@@ -71,7 +71,6 @@ public class ActionBar extends FrameLayout {
|
||||
private boolean interceptTouches = true;
|
||||
private AnimatorSet actionModeAnimation;
|
||||
|
||||
private boolean allowOverlayTitle;
|
||||
private CharSequence lastTitle;
|
||||
private boolean castShadows = true;
|
||||
|
||||
@@ -541,10 +540,6 @@ public class ActionBar extends FrameLayout {
|
||||
}
|
||||
}
|
||||
|
||||
public void setAllowOverlayTitle(boolean value) {
|
||||
allowOverlayTitle = value;
|
||||
}
|
||||
|
||||
public boolean isSearchFieldVisible() {
|
||||
return isSearchFieldVisible;
|
||||
}
|
||||
|
||||
@@ -104,6 +104,7 @@ public class ActionBarMenu extends LinearLayout {
|
||||
case R.drawable.photo_tools: hint = ApplicationLoader.applicationContext.getString(R.string.EditImage); break;
|
||||
case R.drawable.ic_ab_search: hint = ApplicationLoader.applicationContext.getString(R.string.Search); break;
|
||||
case R.drawable.ic_ab_lock_screen: hint = ApplicationLoader.applicationContext.getString(R.string.Passcode); break;
|
||||
case R.drawable.ic_ab_qr: hint = ApplicationLoader.applicationContext.getString(R.string.QrScan); break;
|
||||
}
|
||||
if( hint != null ) {
|
||||
if( s_menuItemHint != null ) {
|
||||
|
||||
@@ -212,7 +212,7 @@ public class ActionBarMenuItem extends FrameLayout {
|
||||
subMenuOpenSide = side;
|
||||
}
|
||||
|
||||
public TextView addSubItem(int id, String text, int icon) {
|
||||
public TextView addSubItem(int id, String text) {
|
||||
if (popupLayout == null) {
|
||||
rect = new Rect();
|
||||
location = new int[2];
|
||||
@@ -249,15 +249,6 @@ public class ActionBarMenuItem extends FrameLayout {
|
||||
textView.setMinWidth(AndroidUtilities.dp(196));
|
||||
textView.setTag(id);
|
||||
textView.setText(text);
|
||||
if (icon != 0) {
|
||||
textView.setCompoundDrawablePadding(AndroidUtilities.dp(12));
|
||||
if (!LocaleController.isRTL) {
|
||||
textView.setCompoundDrawablesWithIntrinsicBounds(getResources().getDrawable(icon), null, null, null);
|
||||
} else {
|
||||
textView.setCompoundDrawablesWithIntrinsicBounds(null, null, getResources().getDrawable(icon), null);
|
||||
}
|
||||
}
|
||||
//popupLayout.setShowedFromBotton(showFromBottom);
|
||||
popupLayout.addView(textView);
|
||||
LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) textView.getLayoutParams();
|
||||
layoutParams.gravity = Gravity.START;
|
||||
|
||||
@@ -307,7 +307,7 @@ public class BaseFragment {
|
||||
}
|
||||
try {
|
||||
visibleDialog = dialog;
|
||||
visibleDialog.setCanceledOnTouchOutside(true);
|
||||
//visibleDialog.setCanceledOnTouchOutside(true); -- we do overwrite this from time to time manually, eg. for showing the setup code. so, not all dialogs should be cancelled when touching outside!
|
||||
visibleDialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
|
||||
@Override
|
||||
public void onDismiss(DialogInterface dialog) {
|
||||
|
||||
@@ -91,6 +91,8 @@ public class Theme {
|
||||
public static final int MSG_AUDIO_SEEKBAR_DARK_COLOR = 0xFFf68751; // same color as in audio-icon, also used for the record-button
|
||||
public static final int MSG_AUDIO_SEEKBAR_LITE_COLOR = 0xFFfbc8af;
|
||||
|
||||
public static final int MSG_SYSTEM_CMD_COLOR = MSG_AUDIO_NAME_COLOR; // just the same color, there is no other dependency between system commands and audio messages
|
||||
|
||||
public static Drawable backgroundDrawableIn;
|
||||
public static Drawable backgroundDrawableInSelected;
|
||||
public static Drawable backgroundDrawableOut;
|
||||
|
||||
@@ -85,7 +85,6 @@ public class AudioSelectActivity extends BaseFragment implements NotificationCen
|
||||
@Override
|
||||
public View createView(Context context) {
|
||||
actionBar.setBackButtonImage(R.drawable.ic_ab_back);
|
||||
actionBar.setAllowOverlayTitle(true);
|
||||
actionBar.setTitle(context.getString(R.string.AttachMusic));
|
||||
actionBar.setActionBarMenuOnItemClick(new ActionBar.ActionBarMenuOnItemClick() {
|
||||
@Override
|
||||
@@ -214,8 +213,7 @@ public class AudioSelectActivity extends BaseFragment implements NotificationCen
|
||||
TLRPC.TL_message message = new TLRPC.TL_message();
|
||||
message.out = true;
|
||||
message.id = id;
|
||||
message.to_id = new TLRPC.TL_peerUser();
|
||||
message.to_id.user_id = message.from_id = MrContact.MR_CONTACT_ID_SELF;
|
||||
message.from_id = MrContact.MR_CONTACT_ID_SELF;
|
||||
message.date = (int) (System.currentTimeMillis() / 1000);
|
||||
message.message = "-1";
|
||||
message.attachPath = audioEntry.path;
|
||||
|
||||
@@ -73,7 +73,6 @@ public class BlockedUsersActivity extends BaseFragment implements NotificationCe
|
||||
@Override
|
||||
public View createView(final Context context) {
|
||||
actionBar.setBackButtonImage(R.drawable.ic_ab_back);
|
||||
actionBar.setAllowOverlayTitle(true);
|
||||
actionBar.setTitle(ApplicationLoader.applicationContext.getString(R.string.BlockedContacts));
|
||||
actionBar.setActionBarMenuOnItemClick(new ActionBar.ActionBarMenuOnItemClick() {
|
||||
@Override
|
||||
@@ -237,11 +236,11 @@ public class BlockedUsersActivity extends BaseFragment implements NotificationCe
|
||||
@Override
|
||||
public View getView(int i, View view, ViewGroup viewGroup) {
|
||||
if (view == null) {
|
||||
view = new UserCell(mContext, 1, 0);
|
||||
view = new UserCell(mContext,0);
|
||||
}
|
||||
if (i>=0 && i<blockedUserIds.length) {
|
||||
MrContact mrContact = MrMailbox.getContact(blockedUserIds[i]);
|
||||
((UserCell) view).setData(mrContact, 0);
|
||||
((UserCell) view).setData(mrContact);
|
||||
}
|
||||
return view;
|
||||
}
|
||||
|
||||
@@ -75,6 +75,7 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate
|
||||
|
||||
public interface ChatMessageCellDelegate {
|
||||
void didPressedUserAvatar(ChatMessageCell cell, TLRPC.User user);
|
||||
void didPressedSetupMessage(ChatMessageCell cell);
|
||||
void didLongPressed(ChatMessageCell cell);
|
||||
void didPressedUrl(MessageObject messageObject, ClickableSpan url, boolean longPress);
|
||||
void didPressedImage(ChatMessageCell cell);
|
||||
@@ -207,6 +208,8 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate
|
||||
private AvatarDrawable avatarDrawable;
|
||||
private boolean avatarPressed;
|
||||
|
||||
private boolean setupmessagePressed;
|
||||
|
||||
private boolean drawNewchatButton;
|
||||
private boolean newchatPressed;
|
||||
private int newchatStartX;
|
||||
@@ -658,7 +661,11 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate
|
||||
newchatPressed = true;
|
||||
result = true;
|
||||
invalidate();
|
||||
} else if( currentMessageObject.messageOwner.is_setup_message && currentBackgroundDrawable.getBounds().contains((int)x, (int)y) ) {
|
||||
setupmessagePressed = true;
|
||||
result = true;
|
||||
}
|
||||
|
||||
if (result) {
|
||||
startCheckLongPress();
|
||||
}
|
||||
@@ -683,6 +690,18 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate
|
||||
avatarPressed = false;
|
||||
}
|
||||
}
|
||||
} else if(setupmessagePressed) {
|
||||
if (event.getAction() == MotionEvent.ACTION_UP) {
|
||||
setupmessagePressed = false;
|
||||
delegate.didPressedSetupMessage(this);
|
||||
}
|
||||
else if(event.getAction() == MotionEvent.ACTION_CANCEL) {
|
||||
setupmessagePressed = false;
|
||||
} else if (event.getAction() == MotionEvent.ACTION_MOVE) {
|
||||
if( !currentBackgroundDrawable.getBounds().contains((int)x, (int)y) ) {
|
||||
setupmessagePressed = false;
|
||||
}
|
||||
}
|
||||
} else if (newchatPressed) {
|
||||
if (event.getAction() == MotionEvent.ACTION_UP) {
|
||||
newchatPressed = false;
|
||||
@@ -1170,7 +1189,7 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate
|
||||
}
|
||||
}
|
||||
|
||||
public void setMessageObject(MessageObject messageObject) {
|
||||
public void setMessageObject(MessageObject messageObject, boolean drawNewchatButton_) {
|
||||
boolean messageChanged = currentMessageObject != messageObject || messageObject.forceUpdate;
|
||||
boolean dataChanged = currentMessageObject == messageObject && isUserDataChanged();
|
||||
if (messageChanged || dataChanged || isPhotoDataChanged(messageObject)) {
|
||||
@@ -1181,7 +1200,7 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate
|
||||
isCheckPressed = true;
|
||||
isAvatarVisible = false;
|
||||
wasLayout = false;
|
||||
drawNewchatButton = checkNeedDrawNewchatButton(messageObject);
|
||||
drawNewchatButton = drawNewchatButton_;
|
||||
currentUser = null;
|
||||
drawNameLayout = false;
|
||||
|
||||
@@ -1296,7 +1315,7 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate
|
||||
photoImage.setForcePreview(false);
|
||||
if (messageObject.type == MessageObject.MO_TYPE9_FILE) {
|
||||
backgroundWidth = Math.min(displaySize.x - dp(isGroupChat && messageObject.isFromUser() && !messageObject.isOutOwner() ? 102 : 50), dp(270));
|
||||
if (checkNeedDrawNewchatButton(messageObject)) {
|
||||
if (drawNewchatButton) {
|
||||
backgroundWidth -= dp(20);
|
||||
}
|
||||
int maxWidth = backgroundWidth - dp(86 + 52);
|
||||
@@ -1368,7 +1387,7 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate
|
||||
int maxPhotoWidth;
|
||||
maxPhotoWidth = photoWidth = (int) (Math.min(displaySize.x, displaySize.y) * 0.7f);
|
||||
photoHeight = photoWidth + dp(100);
|
||||
if (checkNeedDrawNewchatButton(messageObject)) {
|
||||
if (drawNewchatButton) {
|
||||
maxPhotoWidth -= dp(20);
|
||||
photoWidth -= dp(20);
|
||||
}
|
||||
@@ -2021,13 +2040,6 @@ public class ChatMessageCell extends BaseCell implements SeekBar.SeekBarDelegate
|
||||
return isPressed() && isCheckPressed || !isCheckPressed && isPressed || isHighlighted;
|
||||
}
|
||||
|
||||
private boolean checkNeedDrawNewchatButton(MessageObject messageObject) {
|
||||
if( messageObject.getDialogId()== MrChat.MR_CHAT_ID_DEADDROP) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private void setMessageObjectInternal(MessageObject messageObject) {
|
||||
|
||||
if (currentMessageObject.isFromUser()) {
|
||||
|
||||
@@ -67,6 +67,7 @@ public class ChatlistCell extends BaseCell {
|
||||
private static Drawable countDrawable;
|
||||
private static Drawable groupDrawable;
|
||||
private static Drawable muteDrawable;
|
||||
private static Drawable verifiedDrawable;
|
||||
private static Drawable closeDrawable;
|
||||
|
||||
private static Paint linePaint;
|
||||
@@ -74,6 +75,7 @@ public class ChatlistCell extends BaseCell {
|
||||
private long currentChatId;
|
||||
private int unreadCount;
|
||||
private boolean chatMuted;
|
||||
private boolean chatVerified;
|
||||
|
||||
private ImageReceiver avatarImage;
|
||||
|
||||
@@ -82,9 +84,10 @@ public class ChatlistCell extends BaseCell {
|
||||
private int nameLeft;
|
||||
private StaticLayout nameLayout;
|
||||
private boolean drawGroupIcon;
|
||||
private int nameMuteLeft;
|
||||
private int nameVerifiedLeft;
|
||||
private int nameLockLeft;
|
||||
private int nameLockTop;
|
||||
private int muteLeft;
|
||||
|
||||
private int timeLeft;
|
||||
private int timeTop = AndroidUtilities.dp(17);
|
||||
@@ -156,6 +159,7 @@ public class ChatlistCell extends BaseCell {
|
||||
countDrawable = getResources().getDrawable(R.drawable.dialogs_badge);
|
||||
groupDrawable = getResources().getDrawable(R.drawable.list_group);
|
||||
muteDrawable = getResources().getDrawable(R.drawable.mute_grey);
|
||||
verifiedDrawable = getResources().getDrawable(R.drawable.verified);
|
||||
closeDrawable = getResources().getDrawable(R.drawable.ic_dismiss_deaddrop);
|
||||
}
|
||||
|
||||
@@ -236,7 +240,7 @@ public class ChatlistCell extends BaseCell {
|
||||
|
||||
drawGroupIcon = false;
|
||||
|
||||
if (m_mrChat.getType()==MrChat.MR_CHAT_GROUP && currentChatId!=MrChat.MR_CHAT_ID_DEADDROP) {
|
||||
if (m_mrChat.isGroup() && currentChatId!=MrChat.MR_CHAT_ID_DEADDROP) {
|
||||
drawGroupIcon = true;
|
||||
nameLockTop = AndroidUtilities.dp(17.5f);
|
||||
|
||||
@@ -353,8 +357,8 @@ public class ChatlistCell extends BaseCell {
|
||||
}
|
||||
}
|
||||
|
||||
if (chatMuted) {
|
||||
int w = AndroidUtilities.dp(6) + muteDrawable.getIntrinsicWidth();
|
||||
if (chatVerified) {
|
||||
int w = AndroidUtilities.dp(6) + verifiedDrawable.getIntrinsicWidth();
|
||||
nameWidth -= w;
|
||||
if (LocaleController.isRTL) {
|
||||
nameLeft += w;
|
||||
@@ -434,6 +438,15 @@ public class ChatlistCell extends BaseCell {
|
||||
drawCount = true;
|
||||
}
|
||||
|
||||
if (chatMuted) {
|
||||
muteLeft = messageLeft;
|
||||
int w = AndroidUtilities.dp(6) + muteDrawable.getIntrinsicWidth();
|
||||
messageWidth -= w;
|
||||
if (!LocaleController.isRTL) {
|
||||
messageLeft += w;
|
||||
}
|
||||
}
|
||||
|
||||
messageWidth = Math.max(AndroidUtilities.dp(12), messageWidth);
|
||||
CharSequence messageStringFinal = TextUtils.ellipsize(messageString, currentMessagePaint, messageWidth - AndroidUtilities.dp(12), TextUtils.TruncateAt.END);
|
||||
try {
|
||||
@@ -448,8 +461,8 @@ public class ChatlistCell extends BaseCell {
|
||||
if (nameLayout != null && nameLayout.getLineCount() > 0) {
|
||||
left = nameLayout.getLineLeft(0);
|
||||
widthpx = Math.ceil(nameLayout.getLineWidth(0));
|
||||
if (chatMuted) {
|
||||
nameMuteLeft = (int) (nameLeft + (nameWidth - widthpx) - AndroidUtilities.dp(6) - muteDrawable.getIntrinsicWidth());
|
||||
if (chatVerified) {
|
||||
nameVerifiedLeft = (int) (nameLeft + (nameWidth - widthpx) - AndroidUtilities.dp(6) - muteDrawable.getIntrinsicWidth());
|
||||
}
|
||||
if (left == 0) {
|
||||
if (widthpx < nameWidth) {
|
||||
@@ -475,8 +488,8 @@ public class ChatlistCell extends BaseCell {
|
||||
nameLeft -= (nameWidth - widthpx);
|
||||
}
|
||||
}
|
||||
if (chatMuted) {
|
||||
nameMuteLeft = (int) (nameLeft + left + AndroidUtilities.dp(6));
|
||||
if (chatVerified) {
|
||||
nameVerifiedLeft = (int) (nameLeft + left + AndroidUtilities.dp(6));
|
||||
}
|
||||
}
|
||||
if (messageLayout != null && messageLayout.getLineCount() > 0) {
|
||||
@@ -520,10 +533,18 @@ public class ChatlistCell extends BaseCell {
|
||||
|
||||
if( currentChatId == MrChat.MR_CHAT_ID_DEADDROP ) {
|
||||
chatMuted = false; // never draw mute icon, the deaddrop is always muted
|
||||
chatVerified = false;
|
||||
}
|
||||
else {
|
||||
chatMuted = MrMailbox.isDialogMuted(currentChatId);
|
||||
ContactsController.setupAvatar(this, avatarImage, new AvatarDrawable(), null, m_mrChat);
|
||||
chatVerified = m_mrChat.isVerified();
|
||||
|
||||
// can be deleted if this gets out-of-labs
|
||||
if( chatVerified && MrMailbox.getConfigInt("qr_enabled", 0)==0 ) {
|
||||
chatVerified = false;
|
||||
}
|
||||
// /can be deleted if this gets out-of-labs
|
||||
}
|
||||
|
||||
if (getMeasuredWidth() != 0 || getMeasuredHeight() != 0) {
|
||||
@@ -593,8 +614,13 @@ public class ChatlistCell extends BaseCell {
|
||||
}
|
||||
}
|
||||
|
||||
if (chatVerified) {
|
||||
setDrawableBounds(verifiedDrawable, nameVerifiedLeft, AndroidUtilities.dp(16.5f));
|
||||
verifiedDrawable.draw(canvas);
|
||||
}
|
||||
|
||||
if (chatMuted) {
|
||||
setDrawableBounds(muteDrawable, nameMuteLeft, AndroidUtilities.dp(16.5f));
|
||||
setDrawableBounds(muteDrawable, muteLeft, AndroidUtilities.dp(44));
|
||||
muteDrawable.draw(canvas);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,51 +0,0 @@
|
||||
/*******************************************************************************
|
||||
*
|
||||
* Delta Chat Android
|
||||
* (C) 2013-2016 Nikolai Kudashov
|
||||
* (C) 2017 Björn Petersen
|
||||
* Contact: r10s@b44t.com, http://b44t.com
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it under
|
||||
* the terms of the GNU General Public License as published by the Free Software
|
||||
* Foundation, either version 3 of the License, or (at your option) any later
|
||||
* version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program. If not, see http://www.gnu.org/licenses/ .
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
|
||||
package com.b44t.messenger.Cells;
|
||||
|
||||
import android.content.Context;
|
||||
import android.widget.FrameLayout;
|
||||
|
||||
public class EmptyCell extends FrameLayout {
|
||||
|
||||
int cellHeight;
|
||||
|
||||
public EmptyCell(Context context) {
|
||||
this(context, 8);
|
||||
}
|
||||
|
||||
public EmptyCell(Context context, int height) {
|
||||
super(context);
|
||||
cellHeight = height;
|
||||
}
|
||||
|
||||
public void setHeight(int height) {
|
||||
cellHeight = height;
|
||||
requestLayout();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
|
||||
super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(cellHeight, MeasureSpec.EXACTLY));
|
||||
}
|
||||
}
|
||||
@@ -1,141 +0,0 @@
|
||||
/*******************************************************************************
|
||||
*
|
||||
* Delta Chat Android
|
||||
* (C) 2013-2016 Nikolai Kudashov
|
||||
* (C) 2017 Björn Petersen
|
||||
* Contact: r10s@b44t.com, http://b44t.com
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it under
|
||||
* the terms of the GNU General Public License as published by the Free Software
|
||||
* Foundation, either version 3 of the License, or (at your option) any later
|
||||
* version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program. If not, see http://www.gnu.org/licenses/ .
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
|
||||
package com.b44t.messenger.Cells;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.view.Gravity;
|
||||
import android.widget.FrameLayout;
|
||||
import android.widget.ImageView;
|
||||
|
||||
import com.b44t.messenger.AndroidUtilities;
|
||||
import com.b44t.messenger.LocaleController;
|
||||
import com.b44t.messenger.ActionBar.SimpleTextView;
|
||||
|
||||
public class TextCell extends FrameLayout {
|
||||
|
||||
private SimpleTextView textView;
|
||||
private SimpleTextView valueTextView;
|
||||
private ImageView imageView;
|
||||
private ImageView valueImageView;
|
||||
|
||||
public TextCell(Context context) {
|
||||
super(context);
|
||||
|
||||
textView = new SimpleTextView(context);
|
||||
textView.setTextColor(0xff212121);
|
||||
textView.setTextSize(16);
|
||||
textView.setGravity(Gravity.START);
|
||||
addView(textView);
|
||||
|
||||
valueTextView = new SimpleTextView(context);
|
||||
valueTextView.setTextColor(0xff2f8cc9);
|
||||
valueTextView.setTextSize(16);
|
||||
valueTextView.setGravity(Gravity.END);
|
||||
addView(valueTextView);
|
||||
|
||||
imageView = new ImageView(context);
|
||||
imageView.setScaleType(ImageView.ScaleType.CENTER);
|
||||
addView(imageView);
|
||||
|
||||
valueImageView = new ImageView(context);
|
||||
valueImageView.setScaleType(ImageView.ScaleType.CENTER);
|
||||
addView(valueImageView);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
|
||||
int width = MeasureSpec.getSize(widthMeasureSpec);
|
||||
int height = AndroidUtilities.dp(48);
|
||||
|
||||
valueTextView.measure(MeasureSpec.makeMeasureSpec(width - AndroidUtilities.dp(24), MeasureSpec.AT_MOST), MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(20), MeasureSpec.EXACTLY));
|
||||
textView.measure(MeasureSpec.makeMeasureSpec(width - AndroidUtilities.dp(71 + 24), MeasureSpec.AT_MOST), MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(20), MeasureSpec.EXACTLY));
|
||||
imageView.measure(MeasureSpec.makeMeasureSpec(width, MeasureSpec.AT_MOST), MeasureSpec.makeMeasureSpec(height, MeasureSpec.AT_MOST));
|
||||
valueImageView.measure(MeasureSpec.makeMeasureSpec(width, MeasureSpec.AT_MOST), MeasureSpec.makeMeasureSpec(height, MeasureSpec.AT_MOST));
|
||||
|
||||
setMeasuredDimension(width, AndroidUtilities.dp(48));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
|
||||
int height = bottom - top;
|
||||
int width = right - left;
|
||||
|
||||
int viewTop = (height - valueTextView.getTextHeight()) / 2;
|
||||
int viewLeft = LocaleController.isRTL ? AndroidUtilities.dp(24) : 0;
|
||||
valueTextView.layout(viewLeft, viewTop, viewLeft + valueTextView.getMeasuredWidth(), viewTop + valueTextView.getMeasuredHeight());
|
||||
|
||||
viewTop = (height - textView.getTextHeight()) / 2;
|
||||
viewLeft = !LocaleController.isRTL ? AndroidUtilities.dp(71) : AndroidUtilities.dp(24);
|
||||
textView.layout(viewLeft, viewTop, viewLeft + textView.getMeasuredWidth(), viewTop + textView.getMeasuredHeight());
|
||||
|
||||
viewTop = AndroidUtilities.dp(5);
|
||||
viewLeft = !LocaleController.isRTL ? AndroidUtilities.dp(16) : width - imageView.getMeasuredWidth() - AndroidUtilities.dp(16);
|
||||
imageView.layout(viewLeft, viewTop, viewLeft + imageView.getMeasuredWidth(), viewTop + imageView.getMeasuredHeight());
|
||||
|
||||
viewTop = (height - valueImageView.getMeasuredHeight()) / 2;
|
||||
viewLeft = LocaleController.isRTL ? AndroidUtilities.dp(24) : width - valueImageView.getMeasuredWidth() - AndroidUtilities.dp(24);
|
||||
valueImageView.layout(viewLeft, viewTop, viewLeft + valueImageView.getMeasuredWidth(), viewTop + valueImageView.getMeasuredHeight());
|
||||
}
|
||||
|
||||
public void setTextColor(int color) {
|
||||
textView.setTextColor(color);
|
||||
}
|
||||
|
||||
public void setText(String text) {
|
||||
textView.setText(text);
|
||||
valueTextView.setText(null);
|
||||
imageView.setVisibility(INVISIBLE);
|
||||
valueTextView.setVisibility(INVISIBLE);
|
||||
valueImageView.setVisibility(INVISIBLE);
|
||||
}
|
||||
|
||||
public void setTextAndIcon(String text, int resId) {
|
||||
textView.setText(text);
|
||||
valueTextView.setText(null);
|
||||
imageView.setImageResource(resId);
|
||||
imageView.setVisibility(VISIBLE);
|
||||
valueTextView.setVisibility(INVISIBLE);
|
||||
valueImageView.setVisibility(INVISIBLE);
|
||||
imageView.setPadding(0, AndroidUtilities.dp(7), 0, 0);
|
||||
}
|
||||
|
||||
public void setTextAndValue(String text, String value) {
|
||||
textView.setText(text);
|
||||
valueTextView.setText(value);
|
||||
valueTextView.setVisibility(VISIBLE);
|
||||
imageView.setVisibility(INVISIBLE);
|
||||
valueImageView.setVisibility(INVISIBLE);
|
||||
}
|
||||
|
||||
public void setTextAndValueDrawable(String text, Drawable drawable) {
|
||||
textView.setText(text);
|
||||
valueTextView.setText(null);
|
||||
valueImageView.setVisibility(VISIBLE);
|
||||
valueImageView.setImageDrawable(drawable);
|
||||
valueTextView.setVisibility(INVISIBLE);
|
||||
imageView.setVisibility(INVISIBLE);
|
||||
imageView.setPadding(0, AndroidUtilities.dp(7), 0, 0);
|
||||
}
|
||||
}
|
||||
@@ -39,13 +39,18 @@ public class TextInfoCell extends FrameLayout {
|
||||
|
||||
private final int iconDp = 34;
|
||||
|
||||
static public TextView createTextView(Context context) {
|
||||
TextView ret = new TextView(context);
|
||||
ret.setTextColor(0xff808080);
|
||||
ret.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14);
|
||||
ret.setGravity(Gravity.START);
|
||||
return ret;
|
||||
}
|
||||
|
||||
public TextInfoCell(Context context) {
|
||||
super(context);
|
||||
|
||||
textView = new TextView(context);
|
||||
textView.setTextColor(0xff808080);
|
||||
textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 14);
|
||||
textView.setGravity(Gravity.START);
|
||||
textView = createTextView(context);
|
||||
addView(textView);
|
||||
|
||||
iconView = new TextView(context);
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
package com.b44t.messenger.Cells;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.view.Gravity;
|
||||
import android.widget.FrameLayout;
|
||||
import android.widget.ImageView;
|
||||
@@ -32,6 +33,7 @@ import com.b44t.messenger.AndroidUtilities;
|
||||
import com.b44t.messenger.ContactsController;
|
||||
import com.b44t.messenger.LocaleController;
|
||||
import com.b44t.messenger.MrContact;
|
||||
import com.b44t.messenger.MrMailbox;
|
||||
import com.b44t.messenger.R;
|
||||
import com.b44t.messenger.Components.AvatarDrawable;
|
||||
import com.b44t.messenger.Components.BackupImageView;
|
||||
@@ -44,21 +46,16 @@ public class UserCell extends FrameLayout {
|
||||
private BackupImageView avatarImageView;
|
||||
private SimpleTextView nameTextView;
|
||||
private SimpleTextView statusTextView;
|
||||
private ImageView imageView;
|
||||
private CheckBoxView checkBox;
|
||||
|
||||
private AvatarDrawable avatarDrawable;
|
||||
private MrContact m_mrContact;
|
||||
|
||||
private CharSequence currentName;
|
||||
private CharSequence currentStatus;
|
||||
private int currentResId;
|
||||
|
||||
private int statusColor = 0xffa8a8a8;
|
||||
|
||||
public UserCell(Context context, int padding, int useCheckboxes) {
|
||||
public UserCell(Context context, int useCheckboxes) {
|
||||
super(context);
|
||||
|
||||
int padding = 1;
|
||||
|
||||
avatarDrawable = new AvatarDrawable();
|
||||
|
||||
avatarImageView = new BackupImageView(context);
|
||||
@@ -67,20 +64,16 @@ public class UserCell extends FrameLayout {
|
||||
|
||||
nameTextView = new SimpleTextView(context);
|
||||
nameTextView.setTextColor(0xff212121);
|
||||
nameTextView.setTextSize(16); /*same size as in TextCell */
|
||||
nameTextView.setTextSize(16);
|
||||
nameTextView.setGravity(Gravity.START | Gravity.TOP);
|
||||
addView(nameTextView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 20, Gravity.START | Gravity.TOP, LocaleController.isRTL ? 28 + (useCheckboxes == 2 ? 18 : 0) : (68 + padding), 11.5f, LocaleController.isRTL ? (68 + padding) : 28 + (useCheckboxes == 2 ? 18 : 0), 0));
|
||||
|
||||
statusTextView = new SimpleTextView(context);
|
||||
statusTextView.setTextSize(14);
|
||||
statusTextView.setTextColor(0xffa8a8a8);
|
||||
statusTextView.setGravity(Gravity.START | Gravity.TOP);
|
||||
addView(statusTextView, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 20, Gravity.START | Gravity.TOP, LocaleController.isRTL ? 28 : (68 + padding), 34.5f, LocaleController.isRTL ? (68 + padding) : 28, 0));
|
||||
|
||||
imageView = new ImageView(context);
|
||||
imageView.setScaleType(ImageView.ScaleType.CENTER);
|
||||
imageView.setVisibility(GONE);
|
||||
addView(imageView, LayoutHelper.createFrame(LayoutParams.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.START | Gravity.CENTER_VERTICAL, LocaleController.isRTL ? 0 : 16, 0, LocaleController.isRTL ? 16 : 0, 0));
|
||||
|
||||
if( useCheckboxes == 1 ) {
|
||||
checkBox = new CheckBoxView(context, R.drawable.round_check2);
|
||||
checkBox.setVisibility(INVISIBLE);
|
||||
@@ -88,13 +81,8 @@ public class UserCell extends FrameLayout {
|
||||
}
|
||||
}
|
||||
|
||||
public void setData(MrContact mrContact, int resId) {
|
||||
public void setData(MrContact mrContact) {
|
||||
m_mrContact = mrContact;
|
||||
if( m_mrContact != null ) {
|
||||
currentName = m_mrContact.getDisplayName();
|
||||
currentStatus = m_mrContact.getAddr();
|
||||
}
|
||||
currentResId = resId;
|
||||
update();
|
||||
}
|
||||
|
||||
@@ -112,27 +100,22 @@ public class UserCell extends FrameLayout {
|
||||
super.onMeasure(MeasureSpec.makeMeasureSpec(MeasureSpec.getSize(widthMeasureSpec), MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(AndroidUtilities.dp(64), MeasureSpec.EXACTLY));
|
||||
}
|
||||
|
||||
public void setStatusColors(int color) {
|
||||
statusColor = color;
|
||||
}
|
||||
|
||||
public void update() {
|
||||
if (m_mrContact==null) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (currentName != null) {
|
||||
nameTextView.setText(currentName);
|
||||
}
|
||||
nameTextView.setText(m_mrContact.getDisplayName());
|
||||
|
||||
if (currentStatus != null) {
|
||||
statusTextView.setTextColor(statusColor);
|
||||
statusTextView.setText(currentStatus);
|
||||
}
|
||||
statusTextView.setText(m_mrContact.getAddr());
|
||||
|
||||
if (imageView.getVisibility() == VISIBLE && currentResId == 0 || imageView.getVisibility() == GONE && currentResId != 0) {
|
||||
imageView.setVisibility(currentResId == 0 ? GONE : VISIBLE);
|
||||
imageView.setImageResource(currentResId);
|
||||
if( m_mrContact.isVerified() ) {
|
||||
if( MrMailbox.getConfigInt("qr_enabled", 0) != 0 ) {
|
||||
nameTextView.setRightDrawable(R.drawable.verified);
|
||||
}
|
||||
}
|
||||
else {
|
||||
nameTextView.setRightDrawable(0);
|
||||
}
|
||||
|
||||
ContactsController.setupAvatar(avatarImageView, avatarImageView.imageReceiver, avatarDrawable, m_mrContact, null);
|
||||
|
||||
@@ -43,7 +43,9 @@ import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.provider.MediaStore;
|
||||
import android.support.v4.content.FileProvider;
|
||||
import android.text.Editable;
|
||||
import android.text.TextUtils;
|
||||
import android.text.TextWatcher;
|
||||
import android.text.style.ClickableSpan;
|
||||
import android.text.style.URLSpan;
|
||||
import android.util.SparseIntArray;
|
||||
@@ -172,6 +174,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
|
||||
private final static int ID_SHARE = 22;
|
||||
private final static int ID_OPEN = 23;
|
||||
private final static int ID_SEARCH = 40;
|
||||
private final static int ID_SHOW_QR = 50;
|
||||
private final static int ID_CHAT_COMPOSE_PANEL = 1000;
|
||||
private TextView m_replyMenuItem, m_infoMenuItem, m_saveToXXMenuItem, m_openMenuItem, m_shareMenuItem;
|
||||
|
||||
@@ -339,11 +342,6 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
|
||||
NotificationCenter.getInstance().removeObserver(this, NotificationCenter.notificationsSettingsUpdated);
|
||||
NotificationCenter.getInstance().removeObserver(this, NotificationCenter.audioPlayStateChanged);
|
||||
|
||||
/*
|
||||
if (currentUser != null) {
|
||||
MessagesController.getInstance().cancelLoadFullUser(currentUser.id);
|
||||
}
|
||||
*/
|
||||
AndroidUtilities.removeAdjustResize(getParentActivity(), classGuid);
|
||||
|
||||
if (chatAttachAlert != null) {
|
||||
@@ -423,7 +421,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
|
||||
else if( id == ID_SHOW_PROFILE )
|
||||
{
|
||||
Bundle args = new Bundle();
|
||||
if( m_mrChat.getType()== MrChat.MR_CHAT_GROUP ) {
|
||||
if( m_mrChat.isGroup() ) {
|
||||
args.putInt("chat_id", m_mrChat.getId());
|
||||
}
|
||||
else {
|
||||
@@ -496,7 +494,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
|
||||
} else if (id == ID_INFO) {
|
||||
String info_str = MrMailbox.getMsgInfo(getFirstSelectedId());
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
|
||||
builder.setMessage(info_str);
|
||||
builder.setMessage(AndroidUtilities.replaceTags(info_str));
|
||||
builder.setPositiveButton(R.string.OK, null);
|
||||
showDialog(builder.create());
|
||||
actionBar.hideActionMode();
|
||||
@@ -536,6 +534,13 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
|
||||
} else if (id == ID_SEARCH) {
|
||||
openSearchWithText("");
|
||||
}
|
||||
else if( id == ID_SHOW_QR ) {
|
||||
Intent intent2 = new Intent(getParentActivity(), QRshowActivity.class);
|
||||
Bundle b = new Bundle();
|
||||
b.putInt("chat_id", (int)dialog_id);
|
||||
intent2.putExtras(b);
|
||||
getParentActivity().startActivity(intent2);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@@ -598,7 +603,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
|
||||
|
||||
|
||||
headerItem = menu.addItem(0, R.drawable.ic_ab_other);
|
||||
headerItem.addSubItem(ID_SEARCH, context.getString(R.string.Search), 0);
|
||||
headerItem.addSubItem(ID_SEARCH, context.getString(R.string.Search));
|
||||
|
||||
m_canMute = true;
|
||||
if( m_isChatWithDeaddrop /*&& !m_isDeaddropInChatlist*/ ) {
|
||||
@@ -606,7 +611,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
|
||||
}
|
||||
|
||||
if( m_canMute ) {
|
||||
muteMenuEntry = headerItem.addSubItem(ID_MUTE, null, 0);
|
||||
muteMenuEntry = headerItem.addSubItem(ID_MUTE, null);
|
||||
}
|
||||
|
||||
//if( !m_isChatWithDeaddrop ) {
|
||||
@@ -614,12 +619,15 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
|
||||
//}
|
||||
|
||||
if( !m_isChatWithDeaddrop ) {
|
||||
headerItem.addSubItem(ID_SHOW_PROFILE, context.getString(R.string.ViewProfile), 0);
|
||||
if( m_mrChat.getType()== MrChat.MR_CHAT_GROUP ) {
|
||||
headerItem.addSubItem(ID_LEAVE_GROUP, context.getString(R.string.LeaveGroup), 0);
|
||||
headerItem.addSubItem(ID_SHOW_PROFILE, context.getString(R.string.ViewProfile));
|
||||
if( m_mrChat.isGroup() ) {
|
||||
if ( m_mrChat.isVerified() ) {
|
||||
headerItem.addSubItem(ID_SHOW_QR, context.getString(R.string.QrShowInviteCode));
|
||||
}
|
||||
headerItem.addSubItem(ID_LEAVE_GROUP, context.getString(R.string.LeaveGroup));
|
||||
}
|
||||
headerItem.addSubItem(ID_ARCHIVE_CHAT, context.getString(m_mrChat.getArchived()==0? R.string.ArchiveChat : R.string.UnarchiveChat), 0);
|
||||
headerItem.addSubItem(ID_DELETE_CHAT, context.getString(R.string.DeleteChat), 0);
|
||||
headerItem.addSubItem(ID_ARCHIVE_CHAT, context.getString(m_mrChat.getArchived()==0? R.string.ArchiveChat : R.string.UnarchiveChat));
|
||||
headerItem.addSubItem(ID_DELETE_CHAT, context.getString(R.string.DeleteChat));
|
||||
}
|
||||
|
||||
updateTitle();
|
||||
@@ -705,13 +713,13 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
|
||||
actionModeViews.add(actionMode.addItem(ID_FORWARD, R.drawable.ic_ab_fwd_forward, Theme.ACTION_BAR_MODE_SELECTOR_COLOR, null, AndroidUtilities.dp(54)));
|
||||
ActionBarMenuItem submenu = actionMode.addItem(0, R.drawable.ic_ab_other_grey);
|
||||
if( m_isChatWithDeaddrop ) {
|
||||
m_replyMenuItem = submenu.addSubItem(ID_REPLY, context.getString(R.string.Reply), 0);
|
||||
m_replyMenuItem = submenu.addSubItem(ID_REPLY, context.getString(R.string.Reply));
|
||||
}
|
||||
submenu.addSubItem(ID_COPY, context.getString(R.string.CopyToClipboard), 0);
|
||||
m_saveToXXMenuItem = submenu.addSubItem(ID_SAVE_TO_XX, "", 0);
|
||||
m_openMenuItem = submenu.addSubItem(ID_OPEN, context.getString(R.string.Open), 0);
|
||||
m_shareMenuItem = submenu.addSubItem(ID_SHARE, context.getString(R.string.Share), 0);
|
||||
m_infoMenuItem = submenu.addSubItem(ID_INFO, context.getString(R.string.Info), 0);
|
||||
submenu.addSubItem(ID_COPY, context.getString(R.string.CopyToClipboard));
|
||||
m_saveToXXMenuItem = submenu.addSubItem(ID_SAVE_TO_XX, "");
|
||||
m_openMenuItem = submenu.addSubItem(ID_OPEN, context.getString(R.string.Open));
|
||||
m_shareMenuItem = submenu.addSubItem(ID_SHARE, context.getString(R.string.Share));
|
||||
m_infoMenuItem = submenu.addSubItem(ID_INFO, context.getString(R.string.Info));
|
||||
actionModeViews.add(submenu);
|
||||
checkActionBarMenu();
|
||||
|
||||
@@ -852,7 +860,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
|
||||
emptyView.setText(context.getString(R.string.MsgNewGroupDraftHint));
|
||||
emptyView.setGravity(Gravity.START);
|
||||
}
|
||||
else if( m_mrChat.getType()==MrChat.MR_CHAT_NORMAL ){
|
||||
else if( !m_mrChat.isGroup() && !m_mrChat.isSelfTalk() ){
|
||||
String name = m_mrChat.getName();
|
||||
emptyView.setText(AndroidUtilities.replaceTags(String.format(context.getString(R.string.NoMessagesHint), name, name)));
|
||||
emptyView.setGravity(Gravity.START);
|
||||
@@ -1451,7 +1459,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
|
||||
}
|
||||
}
|
||||
|
||||
private void createChatByDeaddropMsgId(int messageId)
|
||||
private void createChatByDeaddropMsgId(final int messageId)
|
||||
{
|
||||
final Context context = getParentActivity();
|
||||
if (context == null) {
|
||||
@@ -1473,7 +1481,7 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
|
||||
builder.setPositiveButton(R.string.OK, new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialogInterface, int i) {
|
||||
int chatId = MrMailbox.createChatByContactId(fromId);
|
||||
int chatId = MrMailbox.createChatByMsgId(messageId);
|
||||
if( chatId != 0 ) {
|
||||
Bundle args = new Bundle();
|
||||
args.putInt("chat_id", chatId);
|
||||
@@ -1622,6 +1630,9 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
|
||||
if (view instanceof ChatMessageCell) {
|
||||
message = ((ChatMessageCell) view).getMessageObject();
|
||||
}
|
||||
else if( view instanceof ChatActionCell) {
|
||||
message = ((ChatActionCell) view).getMessageObject();
|
||||
}
|
||||
|
||||
if (message==null || !message.isSelectable()) {
|
||||
return;
|
||||
@@ -1648,17 +1659,21 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
|
||||
}
|
||||
|
||||
private void updateTitleIcons() {
|
||||
int rightIcon = 0;
|
||||
int leftIcon = 0, rightIcon = 0;
|
||||
if( m_canMute && MrMailbox.isDialogMuted(dialog_id) ) {
|
||||
rightIcon = R.drawable.mute_fixed;
|
||||
leftIcon = R.drawable.mute_blue;
|
||||
}
|
||||
|
||||
if( m_mrChat!=null && m_mrChat.isVerified() ) {
|
||||
rightIcon = R.drawable.verified;
|
||||
}
|
||||
|
||||
if (avatarContainer != null) {
|
||||
avatarContainer.setTitleIcons(0, rightIcon);
|
||||
avatarContainer.setTitleIcons(leftIcon, rightIcon);
|
||||
}
|
||||
|
||||
if( muteMenuEntry != null ) {
|
||||
if (rightIcon != 0) {
|
||||
if (leftIcon != 0) {
|
||||
muteMenuEntry.setText(ApplicationLoader.applicationContext.getString(R.string.UnmuteNotifications));
|
||||
} else {
|
||||
muteMenuEntry.setText(ApplicationLoader.applicationContext.getString(R.string.MuteNotifications));
|
||||
@@ -2502,6 +2517,18 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
|
||||
messageCell.setHighlightedText(null);
|
||||
}
|
||||
}
|
||||
else if( view_ instanceof ChatActionCell ) {
|
||||
ChatActionCell actionCell = (ChatActionCell)view_;
|
||||
if (actionBar.isActionModeShowed()) {
|
||||
if ( selectedMessagesIds.containsKey(actionCell.getMessageObject().getId()) ) {
|
||||
actionCell.setBackgroundColor(Theme.MSG_SELECTED_BACKGROUND_COLOR);
|
||||
} else {
|
||||
actionCell.setBackgroundColor(0);
|
||||
}
|
||||
} else {
|
||||
actionCell.setBackgroundColor(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
chatListView.invalidate();
|
||||
@@ -2667,6 +2694,11 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void didPressedSetupMessage(ChatMessageCell cell) {
|
||||
querySetupCode(cell.getMessageObject().getId(), null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canPerformActions() {
|
||||
return actionBar != null && !actionBar.isActionModeShowed();
|
||||
@@ -2815,8 +2847,8 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
|
||||
MessageObject msgDrawObj = new MessageObject(msg, true);
|
||||
|
||||
ChatMessageCell messageCell = (ChatMessageCell) view;
|
||||
messageCell.isGroupChat = m_mrChat.getType()==MrChat.MR_CHAT_GROUP;
|
||||
messageCell.setMessageObject(msgDrawObj);
|
||||
messageCell.isGroupChat = m_mrChat.isGroup();
|
||||
messageCell.setMessageObject(msgDrawObj, m_isChatWithDeaddrop);
|
||||
messageCell.setCheckPressed(!disableSelection, disableSelection && selected);
|
||||
messageCell.setHighlighted(highlightMessageId != 0 && msgDrawObj.getId() == highlightMessageId);
|
||||
|
||||
@@ -2841,8 +2873,8 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
|
||||
}
|
||||
else if( view instanceof ChatActionCell )
|
||||
{
|
||||
// show a date headline (the date comes from the _next_ message)
|
||||
if( msg_id == MrMsg.MR_MSG_ID_DAYMARKER && i+1 < m_msglist.length ) {
|
||||
// show a date headline (the date comes from the _next_ message)
|
||||
MrMsg mrMsg = MrMailbox.getMsg(m_msglist[i+1]);
|
||||
|
||||
TLRPC.Message dateMsg = new TLRPC.Message();
|
||||
@@ -2853,6 +2885,28 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
|
||||
msgDrawObj.type = MessageObject.MO_TYPE10_DATE_HEADLINE;
|
||||
msgDrawObj.contentType = ROWTYPE_DATE_HEADLINE;
|
||||
|
||||
ChatActionCell actionCell = (ChatActionCell) view;
|
||||
actionCell.setMessageObject(msgDrawObj);
|
||||
}
|
||||
else {
|
||||
MrMsg mrMsg = MrMailbox.getMsg(msg_id);
|
||||
|
||||
MessageObject msgDrawObj = new MessageObject(mrMsg.get_TLRPC_Message(), false);
|
||||
|
||||
// Add the suffix " (by ...)" to the action, see strings.xml for details.
|
||||
int fromId = mrMsg.getFromId();
|
||||
if( fromId != MrContact.MR_CONTACT_ID_DEVICE ) {
|
||||
String actionStr = msgDrawObj.messageText.toString();
|
||||
if(actionStr.endsWith(".")) { actionStr = actionStr.substring(0, actionStr.length() - 1); }
|
||||
if( fromId == MrContact.MR_CONTACT_ID_SELF ) {
|
||||
msgDrawObj.messageText = String.format(ApplicationLoader.applicationContext.getString(R.string.ActionBySelf), actionStr);
|
||||
}
|
||||
else {
|
||||
String fromStr = MrMailbox.getContact(mrMsg.getFromId()).getFirstName();
|
||||
msgDrawObj.messageText = String.format(ApplicationLoader.applicationContext.getString(R.string.ActionByUser), actionStr, fromStr);
|
||||
}
|
||||
}
|
||||
|
||||
ChatActionCell actionCell = (ChatActionCell) view;
|
||||
actionCell.setMessageObject(msgDrawObj);
|
||||
}
|
||||
@@ -2874,6 +2928,11 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
|
||||
else if( m_msglist[i]==MrMsg.MR_MSG_ID_MARKER1 ) {
|
||||
return ROWTYPE_UNREAD_HEADLINE;
|
||||
}
|
||||
|
||||
if( MrMailbox.getMsg(m_msglist[i]).isInfo() ) {
|
||||
return ROWTYPE_DATE_HEADLINE;
|
||||
}
|
||||
|
||||
}
|
||||
return ROWTYPE_MESSAGE_CELL;
|
||||
}
|
||||
@@ -2905,4 +2964,85 @@ public class ChatActivity extends BaseFragment implements NotificationCenter.Not
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void querySetupCode(final int msg_id, String[] preload)
|
||||
{
|
||||
if( !MrMailbox.getMsg(msg_id).isSetupMessage()) {
|
||||
return;
|
||||
}
|
||||
|
||||
View gl = View.inflate(getParentActivity(), R.layout.setup_code_grid, null);
|
||||
final EditText[] editTexts = {
|
||||
(EditText) gl.findViewById(R.id.setupCode0), (EditText) gl.findViewById(R.id.setupCode1), (EditText) gl.findViewById(R.id.setupCode2),
|
||||
(EditText) gl.findViewById(R.id.setupCode3), (EditText) gl.findViewById(R.id.setupCode4), (EditText) gl.findViewById(R.id.setupCode5),
|
||||
(EditText) gl.findViewById(R.id.setupCode6), (EditText) gl.findViewById(R.id.setupCode7), (EditText) gl.findViewById(R.id.setupCode8)
|
||||
};
|
||||
AlertDialog.Builder builder1 = new AlertDialog.Builder(getParentActivity());
|
||||
builder1.setView(gl);
|
||||
editTexts[0].setText(MrMailbox.getMsg(msg_id).getSetupCodeBegin());
|
||||
editTexts[0].setSelection(editTexts[0].getText().length());
|
||||
|
||||
for( int i = 0; i < 9; i++ ) {
|
||||
if( preload != null && i < preload.length ) {
|
||||
editTexts[i].setText(preload[i]);
|
||||
editTexts[i].setSelection(editTexts[i].getText().length());
|
||||
}
|
||||
editTexts[i].addTextChangedListener(new TextWatcher() {
|
||||
@Override
|
||||
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
||||
if( s.length()==4 ) {
|
||||
for ( int i = 0; i < 8; i++ ) {
|
||||
if( editTexts[i].hasFocus() && editTexts[i+1].getText().length()<4 ) {
|
||||
editTexts[i+1].requestFocus();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterTextChanged(Editable s) {
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
builder1.setTitle(ApplicationLoader.applicationContext.getString(R.string.AutocryptKeyTransfer));
|
||||
builder1.setMessage(AndroidUtilities.replaceTags(ApplicationLoader.applicationContext.getString(R.string.AutocryptKeyTransferPleaseEnterCode)));
|
||||
builder1.setNegativeButton(R.string.Cancel, null);
|
||||
builder1.setCancelable(false); // prevent the dialog from being dismissed accidentally (when the dialog is closed, the setup code is gone forever and the user has to create a new setup message)
|
||||
builder1.setPositiveButton(R.string.OK, new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
String setup_code = "";
|
||||
final String[] preload = new String[9];
|
||||
for ( int i = 0; i < 9; i++ ) {
|
||||
preload[i] = editTexts[i].getText().toString();
|
||||
setup_code += preload[i];
|
||||
}
|
||||
boolean success = MrMailbox.continueKeyTransfer(msg_id, setup_code);
|
||||
|
||||
AlertDialog.Builder builder2 = new AlertDialog.Builder(getParentActivity());
|
||||
builder2.setTitle(ApplicationLoader.applicationContext.getString(R.string.AutocryptKeyTransfer));
|
||||
builder2.setMessage(AndroidUtilities.replaceTags(ApplicationLoader.applicationContext.getString(success? R.string.AutocryptKeyTransferSucceeded : R.string.AutocryptKeyTransferBadCode)));
|
||||
if( success ) {
|
||||
builder2.setPositiveButton(R.string.OK, null);
|
||||
}
|
||||
else {
|
||||
builder2.setNegativeButton(R.string.Cancel, null);
|
||||
builder2.setPositiveButton(R.string.Retry, new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
querySetupCode(msg_id, preload);
|
||||
}
|
||||
});
|
||||
}
|
||||
showDialog(builder2.create());
|
||||
}
|
||||
});
|
||||
showDialog(builder1.create());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,6 +30,7 @@ import android.annotation.SuppressLint;
|
||||
import android.annotation.TargetApi;
|
||||
import android.app.Activity;
|
||||
import android.app.AlertDialog;
|
||||
import android.app.ProgressDialog;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
@@ -38,6 +39,7 @@ import android.content.res.Configuration;
|
||||
import android.graphics.Outline;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.StringRes;
|
||||
import android.util.TypedValue;
|
||||
import android.view.Gravity;
|
||||
import android.view.MotionEvent;
|
||||
@@ -52,6 +54,10 @@ import android.widget.ImageView;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.b44t.messenger.Components.Browser;
|
||||
import com.google.zxing.integration.android.IntentIntegrator;
|
||||
import com.google.zxing.integration.android.IntentResult;
|
||||
|
||||
import com.b44t.messenger.Cells.GreySectionCell;
|
||||
import com.b44t.messenger.aosp.LinearLayoutManager;
|
||||
import com.b44t.messenger.aosp.RecyclerView;
|
||||
@@ -79,6 +85,7 @@ public class ChatlistActivity extends BaseFragment implements NotificationCenter
|
||||
private EmptyTextProgressView searchEmptyView;
|
||||
private LinearLayout emptyView;
|
||||
private ActionBarMenuItem passcodeItem;
|
||||
private ActionBarMenuItem qrScanItem;
|
||||
private ImageView floatingButton;
|
||||
|
||||
// Floating hiding action as in T'gram - I think this is not useful:
|
||||
@@ -113,8 +120,11 @@ public class ChatlistActivity extends BaseFragment implements NotificationCenter
|
||||
private static final int ID_LOCK_APP = 1;
|
||||
private static final int ID_NEW_CHAT = 2;
|
||||
private static final int ID_NEW_GROUP= 3;
|
||||
private static final int ID_NEW_VERIFIED_GROUP = 4;
|
||||
private static final int ID_SETTINGS = 5;
|
||||
private static final int ID_DEADDROP = 7;
|
||||
private static final int ID_SCAN_QR = 8;
|
||||
private static final int ID_SHOW_QR = 9;
|
||||
|
||||
public interface ChatlistActivityDelegate {
|
||||
void didSelectChat(ChatlistActivity fragment, long dialog_id, boolean param);
|
||||
@@ -146,6 +156,7 @@ public class ChatlistActivity extends BaseFragment implements NotificationCenter
|
||||
NotificationCenter.getInstance().addObserver(this, NotificationCenter.notificationsSettingsUpdated);
|
||||
NotificationCenter.getInstance().addObserver(this, NotificationCenter.messageSendError);
|
||||
NotificationCenter.getInstance().addObserver(this, NotificationCenter.didSetPasscode);
|
||||
NotificationCenter.getInstance().addObserver(this, NotificationCenter.secureJoinJoinerProgress);
|
||||
|
||||
if (!dialogsLoaded) {
|
||||
NotificationCenter.getInstance().postNotificationName(NotificationCenter.dialogsNeedReload); // this is the rest of the first call to the removed MessagesController.loadDialogs(); not sure, if this is really needed
|
||||
@@ -164,6 +175,7 @@ public class ChatlistActivity extends BaseFragment implements NotificationCenter
|
||||
NotificationCenter.getInstance().removeObserver(this, NotificationCenter.notificationsSettingsUpdated);
|
||||
NotificationCenter.getInstance().removeObserver(this, NotificationCenter.messageSendError);
|
||||
NotificationCenter.getInstance().removeObserver(this, NotificationCenter.didSetPasscode);
|
||||
NotificationCenter.getInstance().removeObserver(this, NotificationCenter.secureJoinJoinerProgress);
|
||||
|
||||
delegate = null;
|
||||
}
|
||||
@@ -180,12 +192,10 @@ public class ChatlistActivity extends BaseFragment implements NotificationCenter
|
||||
}
|
||||
});
|
||||
|
||||
boolean qr_enabled = MrMailbox.getConfigInt("qr_enabled", 0) != 0;
|
||||
|
||||
if( !showArchivedOnly ) {
|
||||
ActionBarMenu menu = actionBar.createMenu();
|
||||
if (!onlySelect) {
|
||||
passcodeItem = menu.addItem(ID_LOCK_APP, R.drawable.ic_ab_lock_screen);
|
||||
updatePasscodeButton();
|
||||
}
|
||||
final ActionBarMenuItem item = menu.addItem(0, R.drawable.ic_ab_search).setIsSearchField(true, true).setActionBarMenuItemSearchListener(new ActionBarMenuItem.ActionBarMenuItemSearchListener() {
|
||||
@Override
|
||||
public void onSearchExpand() {
|
||||
@@ -199,7 +209,7 @@ public class ChatlistActivity extends BaseFragment implements NotificationCenter
|
||||
floatingButton.setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
updatePasscodeButton();
|
||||
updateButtons();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -230,7 +240,7 @@ public class ChatlistActivity extends BaseFragment implements NotificationCenter
|
||||
chatlistAdapter.notifyDataSetChanged();
|
||||
}
|
||||
}
|
||||
updatePasscodeButton();
|
||||
updateButtons();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -260,13 +270,24 @@ public class ChatlistActivity extends BaseFragment implements NotificationCenter
|
||||
}
|
||||
});
|
||||
item.getSearchField().setHint(ApplicationLoader.applicationContext.getString(R.string.Search));
|
||||
if (!onlySelect) {
|
||||
passcodeItem = menu.addItem(ID_LOCK_APP, R.drawable.ic_ab_lock_screen);
|
||||
if( qr_enabled ) {
|
||||
qrScanItem = menu.addItem(ID_SCAN_QR, R.drawable.ic_ab_qr);
|
||||
}
|
||||
updateButtons();
|
||||
}
|
||||
|
||||
headerItem = menu.addItem(0, R.drawable.ic_ab_other);
|
||||
headerItem.addSubItem(ID_NEW_CHAT, ApplicationLoader.applicationContext.getString(R.string.NewChat), 0);
|
||||
headerItem.addSubItem(ID_NEW_GROUP, ApplicationLoader.applicationContext.getString(R.string.NewGroup), 0);
|
||||
headerItem.addSubItem(ID_NEW_CHAT, ApplicationLoader.applicationContext.getString(R.string.NewChat));
|
||||
//headerItem.addSubItem(ID_NEW_GROUP, ApplicationLoader.applicationContext.getString(R.string.NewGroup));
|
||||
if(!onlySelect) {
|
||||
headerItem.addSubItem(ID_DEADDROP, ApplicationLoader.applicationContext.getString(R.string.Deaddrop), 0);
|
||||
headerItem.addSubItem(ID_SETTINGS, ApplicationLoader.applicationContext.getString(R.string.Settings), 0);
|
||||
if( qr_enabled ) {
|
||||
//headerItem.addSubItem(ID_NEW_VERIFIED_GROUP, ApplicationLoader.applicationContext.getString(R.string.NewVerifiedGroup));
|
||||
headerItem.addSubItem(ID_SHOW_QR, ApplicationLoader.applicationContext.getString(R.string.QrShowVerifyCode));
|
||||
}
|
||||
headerItem.addSubItem(ID_DEADDROP, ApplicationLoader.applicationContext.getString(R.string.Deaddrop));
|
||||
headerItem.addSubItem(ID_SETTINGS, ApplicationLoader.applicationContext.getString(R.string.Settings));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -280,7 +301,6 @@ public class ChatlistActivity extends BaseFragment implements NotificationCenter
|
||||
} else {
|
||||
actionBar.setTitle(ApplicationLoader.applicationContext.getString(R.string.AppName));
|
||||
}
|
||||
actionBar.setAllowOverlayTitle(true);
|
||||
|
||||
actionBar.setActionBarMenuOnItemClick(new ActionBar.ActionBarMenuOnItemClick() {
|
||||
@Override
|
||||
@@ -297,7 +317,7 @@ public class ChatlistActivity extends BaseFragment implements NotificationCenter
|
||||
if( UserConfig.appLocked )
|
||||
{
|
||||
// hide list as it is visible in the "last app switcher" otherwise, save state
|
||||
updatePasscodeButton();
|
||||
updateButtons();
|
||||
|
||||
// finish the activity after a little delay; 200 ms shoud be enough to
|
||||
// let the system update its screenshots for the "last app switcher".
|
||||
@@ -325,6 +345,10 @@ public class ChatlistActivity extends BaseFragment implements NotificationCenter
|
||||
Bundle args = new Bundle();
|
||||
args.putInt("do_what", ContactsActivity.SELECT_CONTACTS_FOR_NEW_GROUP);
|
||||
presentFragment(new ContactsActivity(args));
|
||||
} else if (id == ID_NEW_VERIFIED_GROUP) {
|
||||
Bundle args = new Bundle();
|
||||
args.putInt("do_what", ContactsActivity.SELECT_CONTACTS_FOR_NEW_VERIFIED_GROUP);
|
||||
presentFragment(new ContactsActivity(args));
|
||||
} else if (id == ID_DEADDROP) {
|
||||
Bundle args = new Bundle();
|
||||
args.putInt("chat_id", MrChat.MR_CHAT_ID_DEADDROP);
|
||||
@@ -332,6 +356,15 @@ public class ChatlistActivity extends BaseFragment implements NotificationCenter
|
||||
} else if (id == ID_SETTINGS) {
|
||||
presentFragment(new SettingsFragment());
|
||||
}
|
||||
else if(id == ID_SCAN_QR) {
|
||||
new IntentIntegrator(getParentActivity()).setCaptureActivity(QRscanActivity.class).initiateScan();
|
||||
// the resulting QR code is processed in ChatlistActivity.onActivityResultFragment()
|
||||
}
|
||||
else if(id == ID_SHOW_QR) {
|
||||
Intent intent2 = new Intent(getParentActivity(), QRshowActivity.class);
|
||||
getParentActivity().startActivity(intent2);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -404,7 +437,7 @@ public class ChatlistActivity extends BaseFragment implements NotificationCenter
|
||||
builder.setPositiveButton(R.string.OK, new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialogInterface, int i) {
|
||||
int belonging_chat_id = MrMailbox.createChatByContactId(msg.getFromId());
|
||||
int belonging_chat_id = MrMailbox.createChatByMsgId(msg.getId());
|
||||
if( belonging_chat_id != 0 ) {
|
||||
Bundle args = new Bundle();
|
||||
args.putInt("chat_id", belonging_chat_id);
|
||||
@@ -521,22 +554,24 @@ public class ChatlistActivity extends BaseFragment implements NotificationCenter
|
||||
}
|
||||
});
|
||||
|
||||
TextView textView = new TextView(context);
|
||||
textView.setText(context.getString(R.string.NoChats));
|
||||
textView.setTextColor(0xff959595);
|
||||
textView.setGravity(Gravity.CENTER);
|
||||
textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 20);
|
||||
emptyView.addView(textView, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT));
|
||||
if( !showArchivedOnly ) {
|
||||
TextView textView = new TextView(context);
|
||||
textView.setText(context.getString(R.string.NoChats));
|
||||
textView.setTextColor(0xff959595);
|
||||
textView.setGravity(Gravity.CENTER);
|
||||
textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 20);
|
||||
emptyView.addView(textView, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT));
|
||||
|
||||
textView = new TextView(context);
|
||||
String help = context.getString(R.string.NoChatsHelp);
|
||||
textView.setText(help);
|
||||
textView.setTextColor(0xff959595);
|
||||
textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 15);
|
||||
textView.setGravity(Gravity.CENTER);
|
||||
textView.setPadding(AndroidUtilities.dp(8), AndroidUtilities.dp(8), AndroidUtilities.dp(8), AndroidUtilities.dp(64) /*move the whole stuff a little bit up*/);
|
||||
textView.setLineSpacing(AndroidUtilities.dp(2), 1);
|
||||
emptyView.addView(textView, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT));
|
||||
textView = new TextView(context);
|
||||
String help = context.getString(R.string.NoChatsHelp);
|
||||
textView.setText(help);
|
||||
textView.setTextColor(0xff959595);
|
||||
textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 15);
|
||||
textView.setGravity(Gravity.CENTER);
|
||||
textView.setPadding(AndroidUtilities.dp(8), AndroidUtilities.dp(8), AndroidUtilities.dp(8), AndroidUtilities.dp(64) /*move the whole stuff a little bit up*/);
|
||||
textView.setLineSpacing(AndroidUtilities.dp(2), 1);
|
||||
emptyView.addView(textView, LayoutHelper.createLinear(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT));
|
||||
}
|
||||
|
||||
if(!onlySelect && !showArchivedOnly) {
|
||||
floatingButton = new ImageView(context);
|
||||
@@ -688,8 +723,180 @@ public class ChatlistActivity extends BaseFragment implements NotificationCenter
|
||||
}
|
||||
}
|
||||
|
||||
private ProgressDialog progressDialog = null;
|
||||
@Override
|
||||
public void onActivityResultFragment(int requestCode, int resultCode, Intent data) {
|
||||
|
||||
if (requestCode == IntentIntegrator.REQUEST_CODE) {
|
||||
IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
|
||||
|
||||
if (scanResult == null || scanResult.getFormatName() == null) {
|
||||
return; // Should not happen!
|
||||
}
|
||||
|
||||
if( progressDialog!=null ) {
|
||||
progressDialog.dismiss();
|
||||
progressDialog = null;
|
||||
}
|
||||
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
|
||||
final String qrRawString = scanResult.getContents();
|
||||
final MrLot qrParsed = MrMailbox.checkQr(qrRawString);
|
||||
String nameNAddr = MrMailbox.getContact(qrParsed.getId()).getNameNAddr();
|
||||
switch( qrParsed.getState() ) {
|
||||
|
||||
case MrMailbox.MR_QR_ASK_VERIFYCONTACT:
|
||||
case MrMailbox.MR_QR_ASK_VERIFYGROUP: {
|
||||
String msg;
|
||||
switch( qrParsed.getState() ) {
|
||||
case MrMailbox.MR_QR_ASK_VERIFYGROUP: msg = String.format(ApplicationLoader.applicationContext.getString(R.string.OobAskJoinVerifiedGroup), qrParsed.getText1()); break;
|
||||
default: msg = String.format(ApplicationLoader.applicationContext.getString(R.string.OobFingerprintAskOob), nameNAddr); break;
|
||||
}
|
||||
builder.setMessage(AndroidUtilities.replaceTags(msg));
|
||||
builder.setPositiveButton(R.string.OK, new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialogInterface, int i) {
|
||||
progressDialog = new ProgressDialog(getParentActivity());
|
||||
progressDialog.setMessage(ApplicationLoader.applicationContext.getString(R.string.OneMoment));
|
||||
progressDialog.setCanceledOnTouchOutside(false);
|
||||
progressDialog.setCancelable(false);
|
||||
progressDialog.setButton(DialogInterface.BUTTON_NEGATIVE, ApplicationLoader.applicationContext.getString(R.string.Cancel), new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
MrMailbox.stopOngoingProcess();
|
||||
}
|
||||
});
|
||||
progressDialog.show();
|
||||
Utilities.searchQueue.postRunnable(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
synchronized (MrMailbox.m_lastErrorLock) {
|
||||
MrMailbox.m_showNextErrorAsToast = false;
|
||||
MrMailbox.m_lastErrorString = "";
|
||||
}
|
||||
|
||||
final int oobDone = MrMailbox.joinSecurejoin(qrRawString); // oobJoin() runs until all needed messages are sent+received!
|
||||
AndroidUtilities.runOnUIThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
String errorString;
|
||||
synchronized (MrMailbox.m_lastErrorLock) {
|
||||
MrMailbox.m_showNextErrorAsToast = true;
|
||||
errorString = MrMailbox.m_lastErrorString;
|
||||
}
|
||||
|
||||
if (progressDialog != null) {
|
||||
progressDialog.dismiss();
|
||||
progressDialog = null;
|
||||
}
|
||||
if (oobDone!=0) {
|
||||
Bundle args = new Bundle();
|
||||
args.putInt("chat_id", oobDone);
|
||||
presentFragment(new ChatActivity(args), false /*removeLast*/);
|
||||
} else if (!errorString.isEmpty()) {
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
|
||||
builder.setMessage(errorString);
|
||||
builder.setPositiveButton(R.string.OK, null);
|
||||
showDialog(builder.create());
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
builder.setNegativeButton(R.string.Cancel, null);
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case MrMailbox.MR_QR_FPR_WITHOUT_ADDR:
|
||||
builder.setMessage(AndroidUtilities.replaceTags(ApplicationLoader.applicationContext.getString(R.string.OobFingerprintWithoutAddr)+"\n\n<c#808080>"+ApplicationLoader.applicationContext.getString(R.string.OobFingerprint)+":\n"+qrParsed.getText1()+"</c>"));
|
||||
builder.setPositiveButton(R.string.OK, null);
|
||||
builder.setNeutralButton(R.string.CopyToClipboard, new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
AndroidUtilities.addToClipboard(qrParsed.getText1());
|
||||
AndroidUtilities.showDoneHint(getParentActivity());
|
||||
}
|
||||
});
|
||||
break;
|
||||
|
||||
case MrMailbox.MR_QR_FPR_MISMATCH:
|
||||
builder.setMessage(AndroidUtilities.replaceTags(String.format(ApplicationLoader.applicationContext.getString(R.string.OobFingerprintMismatch), nameNAddr)));
|
||||
builder.setPositiveButton(R.string.OK, null);
|
||||
break;
|
||||
|
||||
case MrMailbox.MR_QR_FPR_OK:
|
||||
case MrMailbox.MR_QR_ADDR:
|
||||
@StringRes int resId = qrParsed.getState()==MrMailbox.MR_QR_ADDR? R.string.AskStartChatWith : R.string.OobFingerprintOk;
|
||||
builder.setMessage(AndroidUtilities.replaceTags(String.format(ApplicationLoader.applicationContext.getString(resId, nameNAddr))));
|
||||
builder.setPositiveButton(R.string.OK, new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialogInterface, int i) {
|
||||
Bundle args = new Bundle();
|
||||
args.putInt("chat_id", MrMailbox.createChatByContactId(qrParsed.getId()));
|
||||
presentFragment(new ChatActivity(args), false /*removeLast*/);
|
||||
}
|
||||
});
|
||||
builder.setNegativeButton(R.string.Cancel, null);
|
||||
break;
|
||||
|
||||
case MrMailbox.MR_QR_URL: {
|
||||
final String url = qrParsed.getText1();
|
||||
String msg = String.format(ApplicationLoader.applicationContext.getString(R.string.QrScanContainsUrl), url);
|
||||
builder.setMessage(msg);
|
||||
builder.setPositiveButton(R.string.Open, new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
Browser.openUrl(getParentActivity(), url);
|
||||
}
|
||||
});
|
||||
builder.setNegativeButton(R.string.Cancel, null);
|
||||
builder.setNeutralButton(R.string.CopyToClipboard, new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
AndroidUtilities.addToClipboard(url);
|
||||
AndroidUtilities.showDoneHint(getParentActivity());
|
||||
}
|
||||
});
|
||||
}
|
||||
break;
|
||||
|
||||
default: {
|
||||
String msg;
|
||||
final String scannedText;
|
||||
switch (qrParsed.getState()) {
|
||||
case MrMailbox.MR_QR_ERROR:
|
||||
scannedText = qrRawString;
|
||||
msg = qrParsed.getText1() + "\n\n<c#808080>" + String.format(ApplicationLoader.applicationContext.getString(R.string.QrScanContainsText), scannedText) + "</c>";
|
||||
break;
|
||||
case MrMailbox.MR_QR_TEXT:
|
||||
scannedText = qrParsed.getText1();
|
||||
msg = String.format(ApplicationLoader.applicationContext.getString(R.string.QrScanContainsText), scannedText);
|
||||
break;
|
||||
default:
|
||||
scannedText = qrRawString;
|
||||
msg = String.format(ApplicationLoader.applicationContext.getString(R.string.QrScanContainsText), scannedText);
|
||||
break;
|
||||
}
|
||||
builder.setMessage(AndroidUtilities.replaceTags(msg));
|
||||
builder.setPositiveButton(R.string.OK, null);
|
||||
builder.setNeutralButton(R.string.CopyToClipboard, new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
AndroidUtilities.addToClipboard(scannedText);
|
||||
AndroidUtilities.showDoneHint(getParentActivity());
|
||||
}
|
||||
});
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
showDialog(builder.create());
|
||||
}
|
||||
|
||||
/* -- see comment above
|
||||
if (requestCode == BaseFragment.RC600_BATTERY_REQUEST_DONE) {
|
||||
boolean requestIgnoreActivityMaybeRestarted = false;
|
||||
@@ -829,11 +1036,23 @@ public class ChatlistActivity extends BaseFragment implements NotificationCenter
|
||||
} else if ( id == NotificationCenter.messageSendError) {
|
||||
updateVisibleRows(MrMailbox.UPDATE_MASK_SEND_STATE);
|
||||
} else if (id == NotificationCenter.didSetPasscode) {
|
||||
updatePasscodeButton();
|
||||
updateButtons();
|
||||
}
|
||||
else if( id == NotificationCenter.secureJoinJoinerProgress ) {
|
||||
int contact_id = (Integer)args[0];
|
||||
int step = (Integer)args[1];
|
||||
String msg = null;
|
||||
if( step == 4) {
|
||||
msg = String.format(ApplicationLoader.applicationContext.getString(R.string.OobAddrVerifiedIntroduceMyself), MrMailbox.getContact(contact_id).getNameNAddr());
|
||||
}
|
||||
|
||||
if( progressDialog != null && msg != null ) {
|
||||
progressDialog.setMessage(msg);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void updatePasscodeButton() {
|
||||
private void updateButtons() {
|
||||
if (passcodeItem == null) {
|
||||
return;
|
||||
}
|
||||
@@ -842,6 +1061,10 @@ public class ChatlistActivity extends BaseFragment implements NotificationCenter
|
||||
} else {
|
||||
passcodeItem.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
if( qrScanItem != null ) {
|
||||
qrScanItem.setVisibility(!searching ? View.VISIBLE : View.GONE);
|
||||
}
|
||||
}
|
||||
|
||||
private void hideFloatingButton(boolean hide) {
|
||||
@@ -929,7 +1152,7 @@ public class ChatlistActivity extends BaseFragment implements NotificationCenter
|
||||
}
|
||||
|
||||
public void reloadChatlist() {
|
||||
m_chatlist = MrMailbox.getChatlist(m_listflags, null);
|
||||
m_chatlist = MrMailbox.getChatlist(m_listflags, null, 0);
|
||||
}
|
||||
public ChatlistAdapter(Context context, int listflags) {
|
||||
mContext = context;
|
||||
@@ -1020,7 +1243,7 @@ public class ChatlistActivity extends BaseFragment implements NotificationCenter
|
||||
|
||||
rowCount = 0;
|
||||
|
||||
m_chatlist = MrMailbox.getChatlist(0, query);
|
||||
m_chatlist = MrMailbox.getChatlist(0, query, 0);
|
||||
m_chatlistCnt = m_chatlist.getCnt();
|
||||
if( m_chatlistCnt>0 ) {
|
||||
rowChatsHeadline = rowCount++;
|
||||
|
||||
@@ -32,6 +32,8 @@ import android.util.AttributeSet;
|
||||
import android.view.View;
|
||||
|
||||
import com.b44t.messenger.ImageReceiver;
|
||||
import com.b44t.messenger.MrMailbox;
|
||||
import com.b44t.messenger.R;
|
||||
import com.b44t.messenger.TLObject;
|
||||
import com.b44t.messenger.TLRPC;
|
||||
|
||||
@@ -142,11 +144,19 @@ public class BackupImageView extends View {
|
||||
|
||||
@Override
|
||||
protected void onDraw(Canvas canvas) {
|
||||
int x, y, w, h;
|
||||
if (width != -1 && height != -1) {
|
||||
imageReceiver.setImageCoords((getWidth() - width) / 2, (getHeight() - height) / 2, width, height);
|
||||
x = (getWidth() - width) / 2;
|
||||
y = (getHeight() - height) / 2;
|
||||
w = width;
|
||||
h = height;
|
||||
} else {
|
||||
imageReceiver.setImageCoords(0, 0, getWidth(), getHeight());
|
||||
x = 0;
|
||||
y = 0;
|
||||
w = getWidth();
|
||||
h = getHeight();
|
||||
}
|
||||
imageReceiver.setImageCoords(x, y, w, h);
|
||||
imageReceiver.draw(canvas);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1568,8 +1568,7 @@ public class ChatActivityEnterView extends FrameLayout implements NotificationCe
|
||||
TLRPC.TL_message message = new TLRPC.TL_message();
|
||||
message.out = true;
|
||||
message.id = 0;
|
||||
message.to_id = new TLRPC.TL_peerUser();
|
||||
message.to_id.user_id = message.from_id = MrContact.MR_CONTACT_ID_SELF;
|
||||
message.from_id = MrContact.MR_CONTACT_ID_SELF;
|
||||
message.date = (int) (System.currentTimeMillis() / 1000);
|
||||
message.message = "-1";
|
||||
message.attachPath = audioToSendPath;
|
||||
|
||||
@@ -60,7 +60,6 @@ public class ChatAvatarContainer extends FrameLayout {
|
||||
titleTextView.setTextColor(Theme.ACTION_BAR_TITLE_COLOR);
|
||||
titleTextView.setTextSize(18);
|
||||
titleTextView.setGravity(Gravity.START);
|
||||
titleTextView.setLeftDrawableTopPadding(-AndroidUtilities.dp(1.3f));
|
||||
titleTextView.setRightDrawableTopPadding(-AndroidUtilities.dp(1.3f));
|
||||
addView(titleTextView);
|
||||
|
||||
@@ -74,7 +73,7 @@ public class ChatAvatarContainer extends FrameLayout {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
Bundle args = new Bundle();
|
||||
if( parentFragment.m_mrChat.getType()== MrChat.MR_CHAT_GROUP ) {
|
||||
if( parentFragment.m_mrChat.isGroup() ) {
|
||||
args.putInt("chat_id", parentFragment.m_mrChat.getId());
|
||||
}
|
||||
else {
|
||||
@@ -111,7 +110,7 @@ public class ChatAvatarContainer extends FrameLayout {
|
||||
}
|
||||
|
||||
public void setTitleIcons(int leftIcon, int rightIcon) {
|
||||
titleTextView.setLeftDrawable(leftIcon);
|
||||
subtitleTextView.setLeftDrawable(leftIcon);
|
||||
titleTextView.setRightDrawable(rightIcon);
|
||||
}
|
||||
|
||||
|
||||
@@ -40,6 +40,7 @@ import com.b44t.messenger.ActionBar.ActionBar;
|
||||
import com.b44t.messenger.ActionBar.ActionBarMenu;
|
||||
import com.b44t.messenger.ActionBar.BaseFragment;
|
||||
import com.b44t.messenger.Cells.HeaderCell;
|
||||
import com.b44t.messenger.Cells.TextInfoCell;
|
||||
import com.b44t.messenger.Components.LayoutHelper;
|
||||
|
||||
|
||||
@@ -51,7 +52,7 @@ public class ContactAddActivity extends BaseFragment implements NotificationCent
|
||||
|
||||
private EditText nameTextView;
|
||||
private EditText emailTextView;
|
||||
private String nameToSet = null;
|
||||
private String prefill;
|
||||
private int chat_id; // only used for EDIT_NAME in chats
|
||||
private int user_id;
|
||||
private boolean create_chat_when_done;
|
||||
@@ -70,6 +71,7 @@ public class ContactAddActivity extends BaseFragment implements NotificationCent
|
||||
user_id = getArguments().getInt("user_id", 0);
|
||||
chat_id = getArguments().getInt("chat_id", 0);
|
||||
create_chat_when_done = getArguments().getBoolean("create_chat_when_done", false);
|
||||
prefill = getArguments().getString("prefill", "");
|
||||
return super.onFragmentCreate();
|
||||
}
|
||||
|
||||
@@ -87,10 +89,22 @@ public class ContactAddActivity extends BaseFragment implements NotificationCent
|
||||
@Override
|
||||
public View createView(final Context context) {
|
||||
|
||||
String nameToSet = null;
|
||||
String emailToSet = null;
|
||||
|
||||
actionBar.setBackButtonImage(R.drawable.ic_close_white);
|
||||
actionBar.setAllowOverlayTitle(true);
|
||||
if (do_what==CREATE_CONTACT) {
|
||||
actionBar.setTitle(context.getString(R.string.NewContactTitle));
|
||||
|
||||
if( prefill!=null && !prefill.isEmpty()) {
|
||||
if( prefill.contains("@") ) {
|
||||
emailToSet = prefill;
|
||||
}
|
||||
else {
|
||||
nameToSet = prefill;
|
||||
}
|
||||
}
|
||||
|
||||
} else {
|
||||
actionBar.setTitle(context.getString(R.string.EditName));
|
||||
if( user_id!=0 ) {
|
||||
@@ -163,9 +177,7 @@ public class ContactAddActivity extends BaseFragment implements NotificationCent
|
||||
TextView label = HeaderCell.createTextView(context, context.getString(R.string.Name));
|
||||
linearLayout.addView(label, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.CENTER_VERTICAL, 18, 18, 18, 0));
|
||||
}
|
||||
else {
|
||||
nameTextView.setHint(context.getString(R.string.Name));
|
||||
}
|
||||
nameTextView.setHint(context.getString(R.string.Name));
|
||||
|
||||
if (nameToSet != null) {
|
||||
nameTextView.setText(nameToSet);
|
||||
@@ -173,7 +185,7 @@ public class ContactAddActivity extends BaseFragment implements NotificationCent
|
||||
nameTextView.setMaxLines(4);
|
||||
nameTextView.setGravity(Gravity.CENTER_VERTICAL | Gravity.START);
|
||||
nameTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 18);
|
||||
nameTextView.setHintTextColor(0xff979797);
|
||||
nameTextView.setHintTextColor(0xffBBBBBB);
|
||||
nameTextView.setImeOptions(EditorInfo.IME_FLAG_NO_EXTRACT_UI);
|
||||
nameTextView.setInputType(InputType.TYPE_TEXT_FLAG_CAP_WORDS);
|
||||
nameTextView.setPadding(0, 0, 0, AndroidUtilities.dp(8));
|
||||
@@ -188,8 +200,12 @@ public class ContactAddActivity extends BaseFragment implements NotificationCent
|
||||
linearLayout.addView(label, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.CENTER_VERTICAL, 18, 18, 18, 0));
|
||||
|
||||
emailTextView = new EditText(context);
|
||||
if (emailToSet != null) {
|
||||
emailTextView.setText(emailToSet);
|
||||
}
|
||||
emailTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 18);
|
||||
emailTextView.setHintTextColor(0xff979797);
|
||||
emailTextView.setHint(R.string.ExampleEmailAddr);
|
||||
emailTextView.setHintTextColor(0xffBBBBBB);
|
||||
emailTextView.setTextColor(0xff212121);
|
||||
emailTextView.setMaxLines(4);
|
||||
emailTextView.setGravity(Gravity.START);
|
||||
@@ -199,7 +215,19 @@ public class ContactAddActivity extends BaseFragment implements NotificationCent
|
||||
linearLayout.addView(emailTextView, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.CENTER_VERTICAL, 18, 1, 18, 0));
|
||||
}
|
||||
|
||||
nameToSet = null;
|
||||
if( do_what == EDIT_NAME && chat_id != 0 ) {
|
||||
TextView textView = TextInfoCell.createTextView(context);
|
||||
textView.setText(R.string.EditedNameWillBeShared);
|
||||
linearLayout.addView(textView, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.CENTER_VERTICAL, 18, 18, 18, 0));
|
||||
}
|
||||
|
||||
if( nameToSet != null ) {
|
||||
nameTextView.setSelection(nameToSet.length());
|
||||
}
|
||||
if( emailToSet != null ) {
|
||||
emailTextView.setSelection(emailToSet.length());
|
||||
}
|
||||
|
||||
return fragmentView;
|
||||
}
|
||||
|
||||
@@ -207,28 +235,6 @@ public class ContactAddActivity extends BaseFragment implements NotificationCent
|
||||
public void onActivityResultFragment(int requestCode, int resultCode, Intent data) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void saveSelfArgs(Bundle args) {
|
||||
if (nameTextView != null) {
|
||||
String text = nameTextView.getText().toString();
|
||||
if (text != null && text.length() != 0) {
|
||||
args.putString("nameTextView", text);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void restoreSelfArgs(Bundle args) {
|
||||
String text = args.getString("nameTextView");
|
||||
if (text != null) {
|
||||
if (nameTextView != null) {
|
||||
nameTextView.setText(text);
|
||||
} else {
|
||||
nameToSet = text;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTransitionAnimationEnd(boolean isOpen, boolean backward) {
|
||||
if (isOpen && nameTextView!=null) {
|
||||
|
||||
@@ -29,6 +29,7 @@ import android.app.Activity;
|
||||
import android.app.AlertDialog;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.drawable.BitmapDrawable;
|
||||
@@ -55,6 +56,7 @@ import android.widget.LinearLayout;
|
||||
import android.widget.ListView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.b44t.messenger.Cells.TextSettingsCell;
|
||||
import com.b44t.messenger.Components.BaseFragmentAdapter;
|
||||
import com.b44t.messenger.Cells.UserCell;
|
||||
import com.b44t.messenger.ActionBar.ActionBar;
|
||||
@@ -83,21 +85,30 @@ public class ContactsActivity extends BaseFragment implements NotificationCenter
|
||||
private HashMap<Integer, ChipSpan> selectedContacts = new HashMap<>();
|
||||
private ArrayList<ChipSpan> allSpans = new ArrayList<>();
|
||||
|
||||
private int do_what = 0;
|
||||
public final static int SELECT_CONTACT_FOR_NEW_CHAT = 1;
|
||||
public final static int SELECT_CONTACTS_FOR_NEW_GROUP = 2;
|
||||
public final static int ADD_CONTACTS_TO_GROUP = 3;
|
||||
public final static int SELECT_CONTACT_TO_BLOCK = 4;
|
||||
public final static int SELECT_CONTACT_TO_ATTACH = 5;
|
||||
private int rowNewGroup = -1;
|
||||
private int rowNewVerifiedGroup = -1;
|
||||
private int rowAddContact = -1;
|
||||
private int rowInviteViaQr = -1;
|
||||
private int rowContactFirst = -1;
|
||||
private int rowContactLast = -1;
|
||||
private int rowCount = 0;
|
||||
|
||||
private int do_what = 0;
|
||||
public final static int SELECT_CONTACT_FOR_NEW_CHAT = 1;
|
||||
public final static int SELECT_CONTACTS_FOR_NEW_GROUP = 2;
|
||||
public final static int SELECT_CONTACTS_FOR_NEW_VERIFIED_GROUP = 3;
|
||||
public final static int ADD_CONTACTS_TO_GROUP = 4;
|
||||
public final static int ADD_CONTACTS_TO_VERIFIED_GROUP = 5;
|
||||
public final static int SELECT_CONTACT_TO_BLOCK = 6;
|
||||
public final static int SELECT_CONTACT_TO_ATTACH = 7;
|
||||
private final static int id_add_contact = 20; // do_what is also used as internal IDs
|
||||
private final static int id_done_button = 30;
|
||||
|
||||
private ContactsActivityDelegate delegate;
|
||||
|
||||
private String title;
|
||||
private String subtitle;
|
||||
|
||||
private final static int id_add_contact = 2;
|
||||
private final static int id_done_button = 3;
|
||||
private final static int id_toggle = 4;
|
||||
|
||||
public interface ContactsActivityDelegate {
|
||||
void didSelectContact(int user_id);
|
||||
@@ -128,7 +139,12 @@ public class ContactsActivity extends BaseFragment implements NotificationCenter
|
||||
title = ApplicationLoader.applicationContext.getString(R.string.NewGroup);
|
||||
subtitle = ApplicationLoader.applicationContext.getResources().getQuantityString(R.plurals.MeAndMembers, 0, 0);
|
||||
}
|
||||
else if( do_what == ADD_CONTACTS_TO_GROUP )
|
||||
else if( do_what == SELECT_CONTACTS_FOR_NEW_VERIFIED_GROUP )
|
||||
{
|
||||
title = ApplicationLoader.applicationContext.getString(R.string.NewVerifiedGroup);
|
||||
subtitle = ApplicationLoader.applicationContext.getResources().getQuantityString(R.plurals.MeAndMembers, 0, 0);
|
||||
}
|
||||
else if( do_what == ADD_CONTACTS_TO_GROUP || do_what == ADD_CONTACTS_TO_VERIFIED_GROUP )
|
||||
{
|
||||
title = ApplicationLoader.applicationContext.getString(R.string.AddMember);
|
||||
}
|
||||
@@ -169,8 +185,7 @@ public class ContactsActivity extends BaseFragment implements NotificationCenter
|
||||
}
|
||||
|
||||
// initialize action
|
||||
actionBar.setBackButtonImage(do_what == SELECT_CONTACTS_FOR_NEW_GROUP? R.drawable.ic_close_white : R.drawable.ic_ab_back);
|
||||
actionBar.setAllowOverlayTitle(true);
|
||||
actionBar.setBackButtonImage((do_what == SELECT_CONTACTS_FOR_NEW_GROUP||do_what == SELECT_CONTACTS_FOR_NEW_VERIFIED_GROUP)? R.drawable.ic_close_white : R.drawable.ic_ab_back);
|
||||
if( title != null ) {
|
||||
actionBar.setTitle(title);
|
||||
if( subtitle != null ) {
|
||||
@@ -190,7 +205,7 @@ public class ContactsActivity extends BaseFragment implements NotificationCenter
|
||||
AndroidUtilities.runOnUIThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
NotificationCenter.getInstance().postNotificationName(NotificationCenter.contactsDidLoaded);
|
||||
NotificationCenter.getInstance().postNotificationName(NotificationCenter.contactsDidLoaded, 0);
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -217,11 +232,11 @@ public class ContactsActivity extends BaseFragment implements NotificationCenter
|
||||
{
|
||||
finishFragment();
|
||||
}
|
||||
else if( id == id_toggle )
|
||||
else if( id == SELECT_CONTACT_FOR_NEW_CHAT || id == SELECT_CONTACTS_FOR_NEW_GROUP || id == SELECT_CONTACTS_FOR_NEW_VERIFIED_GROUP )
|
||||
{
|
||||
Bundle args = new Bundle();
|
||||
args.putInt("do_what", do_what==SELECT_CONTACTS_FOR_NEW_GROUP? SELECT_CONTACT_FOR_NEW_CHAT : SELECT_CONTACTS_FOR_NEW_GROUP);
|
||||
presentFragment(new ContactsActivity(args), true /*removeLast*/, true /*forceWithoutAnimation*/);
|
||||
args.putInt("do_what", id);
|
||||
presentFragment(new ContactsActivity(args), true , true );
|
||||
}
|
||||
else if( id == id_add_contact )
|
||||
{
|
||||
@@ -237,6 +252,7 @@ public class ContactsActivity extends BaseFragment implements NotificationCenter
|
||||
result.addAll(selectedContacts.keySet());
|
||||
Bundle args = new Bundle();
|
||||
args.putIntegerArrayList("result", result);
|
||||
args.putInt("do_what", do_what);
|
||||
presentFragment(new GroupCreateFinalActivity(args));
|
||||
}
|
||||
}
|
||||
@@ -244,20 +260,40 @@ public class ContactsActivity extends BaseFragment implements NotificationCenter
|
||||
|
||||
ActionBarMenu menu = actionBar.createMenu();
|
||||
|
||||
if( do_what == SELECT_CONTACTS_FOR_NEW_GROUP ) {
|
||||
if( do_what == SELECT_CONTACTS_FOR_NEW_GROUP || do_what == SELECT_CONTACTS_FOR_NEW_VERIFIED_GROUP ) {
|
||||
menu.addItem(id_done_button, R.drawable.ic_done); // should the "done" button be right or left of other buttons? Esp. for the "more" button, it looks better if it is right left of it - beside the title describing the action and nearer to "cancel"; the other buttons has not so much to do with the group but switches to other types. In other situations, the icon-oder-decision may be different.
|
||||
}
|
||||
|
||||
/* -- instead of a menu we're testing buttons in the list
|
||||
|
||||
ActionBarMenuItem item = menu.addItem(10, R.drawable.ic_ab_other);
|
||||
if (do_what == SELECT_CONTACT_FOR_NEW_CHAT || do_what == SELECT_CONTACTS_FOR_NEW_GROUP) {
|
||||
item.addSubItem(id_toggle, do_what == SELECT_CONTACT_FOR_NEW_CHAT ? context.getString(R.string.NewGroup) : context.getString(R.string.NewChat), 0);
|
||||
if (do_what == SELECT_CONTACT_FOR_NEW_CHAT || do_what == SELECT_CONTACTS_FOR_NEW_GROUP || do_what == SELECT_CONTACTS_FOR_NEW_VERIFIED_GROUP) {
|
||||
if( do_what!=SELECT_CONTACT_FOR_NEW_CHAT ) { item.addSubItem(SELECT_CONTACT_FOR_NEW_CHAT, context.getString(R.string.NewChat)); }
|
||||
if( do_what!=SELECT_CONTACTS_FOR_NEW_GROUP ) { item.addSubItem(SELECT_CONTACTS_FOR_NEW_GROUP, context.getString(R.string.NewGroup)); }
|
||||
|
||||
if( MrMailbox.getConfigInt("qr_enabled", 0) != 0 ) {
|
||||
if (do_what != SELECT_CONTACTS_FOR_NEW_VERIFIED_GROUP) {
|
||||
item.addSubItem(SELECT_CONTACTS_FOR_NEW_VERIFIED_GROUP, context.getString(R.string.NewVerifiedGroup));
|
||||
}
|
||||
}
|
||||
}
|
||||
item.addSubItem(id_add_contact, context.getString(R.string.NewContactTitle), 0);
|
||||
item.addSubItem(id_add_contact, context.getString(R.string.NewContactTitle));
|
||||
*/
|
||||
|
||||
int listflags = 0;
|
||||
if( do_what==SELECT_CONTACTS_FOR_NEW_VERIFIED_GROUP||do_what==ADD_CONTACTS_TO_VERIFIED_GROUP) {
|
||||
listflags |= MrMailbox.MR_GCL_VERIFIED_ONLY;
|
||||
}
|
||||
|
||||
listViewAdapter = new ContactsAdapter(context);
|
||||
listViewAdapter.setCheckedMap(selectedContacts);
|
||||
if( do_what==SELECT_CONTACT_FOR_NEW_CHAT || do_what==SELECT_CONTACT_TO_ATTACH ) {
|
||||
listflags |= MrMailbox.MR_GCL_ADD_SELF;
|
||||
}
|
||||
|
||||
listViewAdapter = new ContactsAdapter(context, listflags, do_what==SELECT_CONTACT_FOR_NEW_CHAT);
|
||||
|
||||
if( do_what == SELECT_CONTACTS_FOR_NEW_GROUP || do_what == SELECT_CONTACTS_FOR_NEW_VERIFIED_GROUP ) {
|
||||
listViewAdapter.setCheckedMap(selectedContacts);
|
||||
}
|
||||
|
||||
fragmentView = new LinearLayout(context);
|
||||
|
||||
@@ -270,7 +306,7 @@ public class ContactsActivity extends BaseFragment implements NotificationCenter
|
||||
// START SEARCH FIELD
|
||||
userSelectEditText = new EditText(context);
|
||||
userSelectEditText.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16);
|
||||
userSelectEditText.setHintTextColor(0xff979797);
|
||||
userSelectEditText.setHintTextColor(0xffBBBBBB);
|
||||
userSelectEditText.setTextColor(0xff212121);
|
||||
userSelectEditText.setInputType(InputType.TYPE_TEXT_VARIATION_FILTER | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS | InputType.TYPE_TEXT_FLAG_MULTI_LINE);
|
||||
userSelectEditText.setMinimumHeight(AndroidUtilities.dp(54));
|
||||
@@ -282,7 +318,7 @@ public class ContactsActivity extends BaseFragment implements NotificationCenter
|
||||
userSelectEditText.setPadding(0, 0, 0, 0);
|
||||
userSelectEditText.setImeOptions(EditorInfo.IME_ACTION_DONE | EditorInfo.IME_FLAG_NO_EXTRACT_UI);
|
||||
userSelectEditText.setGravity(Gravity.START | Gravity.CENTER_VERTICAL);
|
||||
frameLayout.addView(userSelectEditText, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.TOP | Gravity.START, 10, 0, 10, 0));
|
||||
frameLayout.addView(userSelectEditText, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.TOP | Gravity.START, 18, 0, 18, 0));
|
||||
|
||||
userSelectEditText.setHint(ApplicationLoader.applicationContext.getString(R.string.Search));
|
||||
userSelectEditText.setTextIsSelectable(false);
|
||||
@@ -336,11 +372,6 @@ public class ContactsActivity extends BaseFragment implements NotificationCenter
|
||||
if (text.length() != 0) {
|
||||
searching = true;
|
||||
searchWas = true;
|
||||
if (listView != null) {
|
||||
listView.setFastScrollAlwaysVisible(false);
|
||||
listView.setFastScrollEnabled(false);
|
||||
listView.setVerticalScrollBarEnabled(true);
|
||||
}
|
||||
if (emptyTextView != null) {
|
||||
emptyTextView.setText(context.getString(R.string.NoResult));
|
||||
}
|
||||
@@ -351,9 +382,6 @@ public class ContactsActivity extends BaseFragment implements NotificationCenter
|
||||
searching = false;
|
||||
searchWas = false;
|
||||
listViewAdapter.notifyDataSetChanged();
|
||||
listView.setFastScrollAlwaysVisible(true);
|
||||
listView.setFastScrollEnabled(true);
|
||||
listView.setVerticalScrollBarEnabled(false);
|
||||
emptyTextView.setText(context.getString(R.string.NoContacts));
|
||||
}
|
||||
}
|
||||
@@ -393,100 +421,123 @@ public class ContactsActivity extends BaseFragment implements NotificationCenter
|
||||
listView.setFastScrollEnabled(true);
|
||||
listView.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY);
|
||||
listView.setAdapter(listViewAdapter);
|
||||
listView.setFastScrollAlwaysVisible(true);
|
||||
listView.setFastScrollAlwaysVisible(false);
|
||||
linearLayout.addView(listView);
|
||||
|
||||
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
|
||||
@Override
|
||||
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
|
||||
// a single click on an contact item
|
||||
Object item = listViewAdapter.getItem(i);
|
||||
if (item instanceof TLRPC.User) {
|
||||
final TLRPC.User user = (TLRPC.User) item;
|
||||
if( do_what == SELECT_CONTACT_FOR_NEW_CHAT ) {
|
||||
int belonging_chat_id = MrMailbox.getChatIdByContactId(user.id);
|
||||
if( belonging_chat_id!=0 ) {
|
||||
Bundle args = new Bundle();
|
||||
args.putInt("chat_id", belonging_chat_id);
|
||||
presentFragment(new ChatActivity(args), true);
|
||||
return;
|
||||
}
|
||||
if( i == rowNewGroup || i == rowNewVerifiedGroup ) {
|
||||
Bundle args = new Bundle();
|
||||
args.putInt("do_what", i==rowNewGroup? SELECT_CONTACTS_FOR_NEW_GROUP : SELECT_CONTACTS_FOR_NEW_VERIFIED_GROUP);
|
||||
presentFragment(new ContactsActivity(args), false /*removeLast*/, false /*forceWithoutAnimation*/);
|
||||
}
|
||||
else if( i == rowAddContact) {
|
||||
Bundle args = new Bundle();
|
||||
args.putInt("do_what", ContactAddActivity.CREATE_CONTACT);
|
||||
args.putBoolean("create_chat_when_done", do_what==SELECT_CONTACT_FOR_NEW_CHAT);
|
||||
|
||||
String name = "";
|
||||
{
|
||||
MrContact mrContact = MrMailbox.getContact(user.id);
|
||||
name = mrContact.getNameNAddr();
|
||||
}
|
||||
String lastSearch = listViewAdapter.getSearch();
|
||||
if( lastSearch != null ) {
|
||||
args.putString("prefill", lastSearch);
|
||||
}
|
||||
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
|
||||
builder.setPositiveButton(R.string.OK, new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialogInterface, int i) {
|
||||
int belonging_chat_id = MrMailbox.createChatByContactId(user.id);
|
||||
if( belonging_chat_id != 0 ) {
|
||||
Bundle args = new Bundle();
|
||||
args.putInt("chat_id", belonging_chat_id);
|
||||
presentFragment(new ChatActivity(args), true);
|
||||
presentFragment(new ContactAddActivity(args));
|
||||
}
|
||||
else if( i == rowInviteViaQr ) {
|
||||
Intent intent2 = new Intent(getParentActivity(), QRshowActivity.class);
|
||||
Bundle b = new Bundle();
|
||||
b.putInt("chat_id", 0);
|
||||
intent2.putExtras(b);
|
||||
getParentActivity().startActivity(intent2);
|
||||
}
|
||||
else {
|
||||
Object item = listViewAdapter.getItem(i);
|
||||
if (item instanceof TLRPC.User) {
|
||||
final TLRPC.User user = (TLRPC.User) item;
|
||||
if (do_what == SELECT_CONTACT_FOR_NEW_CHAT) {
|
||||
int belonging_chat_id = MrMailbox.getChatIdByContactId(user.id);
|
||||
if (belonging_chat_id != 0) {
|
||||
Bundle args = new Bundle();
|
||||
args.putInt("chat_id", belonging_chat_id);
|
||||
presentFragment(new ChatActivity(args), true);
|
||||
return;
|
||||
}
|
||||
|
||||
String name = "";
|
||||
{
|
||||
MrContact mrContact = MrMailbox.getContact(user.id);
|
||||
name = mrContact.getNameNAddr();
|
||||
}
|
||||
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
|
||||
builder.setPositiveButton(R.string.OK, new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialogInterface, int i) {
|
||||
int belonging_chat_id = MrMailbox.createChatByContactId(user.id);
|
||||
if (belonging_chat_id != 0) {
|
||||
Bundle args = new Bundle();
|
||||
args.putInt("chat_id", belonging_chat_id);
|
||||
presentFragment(new ChatActivity(args), true);
|
||||
}
|
||||
}
|
||||
});
|
||||
builder.setNegativeButton(R.string.Cancel, null);
|
||||
builder.setMessage(AndroidUtilities.replaceTags(String.format(context.getString(R.string.AskStartChatWith), name)));
|
||||
showDialog(builder.create());
|
||||
} else if (do_what == SELECT_CONTACTS_FOR_NEW_GROUP || do_what == SELECT_CONTACTS_FOR_NEW_VERIFIED_GROUP) {
|
||||
boolean check = true;
|
||||
if (selectedContacts.containsKey(user.id)) {
|
||||
check = false;
|
||||
try {
|
||||
ChipSpan span = selectedContacts.get(user.id);
|
||||
selectedContacts.remove(user.id);
|
||||
SpannableStringBuilder text = new SpannableStringBuilder(userSelectEditText.getText());
|
||||
text.delete(text.getSpanStart(span), text.getSpanEnd(span));
|
||||
allSpans.remove(span);
|
||||
ignoreChange = true;
|
||||
userSelectEditText.setText(text);
|
||||
userSelectEditText.setSelection(text.length());
|
||||
ignoreChange = false;
|
||||
} catch (Exception e) {
|
||||
|
||||
}
|
||||
} else {
|
||||
ignoreChange = true;
|
||||
ChipSpan span = createAndPutChipForUser(user.id);
|
||||
span.uid = user.id;
|
||||
ignoreChange = false;
|
||||
}
|
||||
|
||||
updateSubtitle();
|
||||
|
||||
if (searching || searchWas) {
|
||||
ignoreChange = true;
|
||||
SpannableStringBuilder ssb = new SpannableStringBuilder("");
|
||||
for (ImageSpan sp : allSpans) {
|
||||
ssb.append("<<");
|
||||
ssb.setSpan(sp, ssb.length() - 2, ssb.length(), SpannableStringBuilder.SPAN_EXCLUSIVE_EXCLUSIVE);
|
||||
}
|
||||
userSelectEditText.setText(ssb);
|
||||
userSelectEditText.setSelection(ssb.length());
|
||||
ignoreChange = false;
|
||||
|
||||
listViewAdapter.search(null);
|
||||
searching = false;
|
||||
searchWas = false;
|
||||
listViewAdapter.notifyDataSetChanged();
|
||||
emptyTextView.setText(context.getString(R.string.NoContacts));
|
||||
} else {
|
||||
if (view instanceof UserCell) {
|
||||
((UserCell) view).setChecked(check, true);
|
||||
}
|
||||
}
|
||||
});
|
||||
builder.setNegativeButton(R.string.Cancel, null);
|
||||
builder.setMessage(AndroidUtilities.replaceTags(String.format(context.getString(R.string.AskStartChatWith), name)));
|
||||
showDialog(builder.create());
|
||||
}
|
||||
else if( do_what == SELECT_CONTACTS_FOR_NEW_GROUP ) {
|
||||
boolean check = true;
|
||||
if (selectedContacts.containsKey(user.id)) {
|
||||
check = false;
|
||||
try {
|
||||
ChipSpan span = selectedContacts.get(user.id);
|
||||
selectedContacts.remove(user.id);
|
||||
SpannableStringBuilder text = new SpannableStringBuilder(userSelectEditText.getText());
|
||||
text.delete(text.getSpanStart(span), text.getSpanEnd(span));
|
||||
allSpans.remove(span);
|
||||
ignoreChange = true;
|
||||
userSelectEditText.setText(text);
|
||||
userSelectEditText.setSelection(text.length());
|
||||
ignoreChange = false;
|
||||
} catch (Exception e) {
|
||||
|
||||
}
|
||||
} else {
|
||||
ignoreChange = true;
|
||||
ChipSpan span = createAndPutChipForUser(user);
|
||||
span.uid = user.id;
|
||||
ignoreChange = false;
|
||||
} else if (delegate != null) {
|
||||
delegate.didSelectContact(user.id);
|
||||
delegate = null;
|
||||
finishFragment();
|
||||
}
|
||||
actionBar.setSubtitle(context.getResources().getQuantityString(R.plurals.MeAndMembers, selectedContacts.size(), selectedContacts.size()));
|
||||
if (searching || searchWas) {
|
||||
ignoreChange = true;
|
||||
SpannableStringBuilder ssb = new SpannableStringBuilder("");
|
||||
for (ImageSpan sp : allSpans) {
|
||||
ssb.append("<<");
|
||||
ssb.setSpan(sp, ssb.length() - 2, ssb.length(), SpannableStringBuilder.SPAN_EXCLUSIVE_EXCLUSIVE);
|
||||
}
|
||||
userSelectEditText.setText(ssb);
|
||||
userSelectEditText.setSelection(ssb.length());
|
||||
ignoreChange = false;
|
||||
|
||||
listViewAdapter.search(null);
|
||||
searching = false;
|
||||
searchWas = false;
|
||||
listViewAdapter.notifyDataSetChanged();
|
||||
listView.setFastScrollAlwaysVisible(true);
|
||||
listView.setFastScrollEnabled(true);
|
||||
listView.setVerticalScrollBarEnabled(false);
|
||||
emptyTextView.setText(context.getString(R.string.NoContacts));
|
||||
} else {
|
||||
if (view instanceof UserCell) {
|
||||
((UserCell) view).setChecked(check, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (delegate != null) {
|
||||
delegate.didSelectContact(user.id);
|
||||
delegate = null;
|
||||
finishFragment();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -499,14 +550,34 @@ public class ContactsActivity extends BaseFragment implements NotificationCenter
|
||||
if (item instanceof TLRPC.User) {
|
||||
final TLRPC.User user = (TLRPC.User) item;
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
|
||||
CharSequence[] items = new CharSequence[]{context.getString(R.string.ViewProfile)};
|
||||
CharSequence[] items = new CharSequence[]{context.getString(R.string.ViewProfile),context.getString(R.string.DeleteContact)};
|
||||
builder.setItems(items, new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialogInterface, int i) {
|
||||
Bundle args = new Bundle();
|
||||
args.putInt("user_id", user.id);
|
||||
ProfileActivity fragment = new ProfileActivity(args);
|
||||
presentFragment(fragment);
|
||||
if( i == 0 ) {
|
||||
Bundle args = new Bundle();
|
||||
args.putInt("user_id", user.id);
|
||||
ProfileActivity fragment = new ProfileActivity(args);
|
||||
presentFragment(fragment);
|
||||
}
|
||||
else if( i == 1 ) {
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
|
||||
builder.setMessage(context.getString(R.string.AreYouSureDeleteContact));
|
||||
builder.setPositiveButton(R.string.OK, new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialogInterface, int i) {
|
||||
if( MrMailbox.deleteContact(user.id)==0 ) {
|
||||
AndroidUtilities.showHint(getParentActivity(), context.getString(R.string.CannotDeleteContact));
|
||||
}
|
||||
else {
|
||||
AndroidUtilities.showDoneHint(getParentActivity());
|
||||
listViewAdapter.searchAgain();
|
||||
listViewAdapter.notifyDataSetChanged(); }
|
||||
}
|
||||
});
|
||||
builder.setNegativeButton(R.string.Cancel, null);
|
||||
showDialog(builder.create());
|
||||
}
|
||||
}
|
||||
});
|
||||
showDialog(builder.create());
|
||||
@@ -537,6 +608,16 @@ public class ContactsActivity extends BaseFragment implements NotificationCenter
|
||||
return fragmentView;
|
||||
}
|
||||
|
||||
public void updateSubtitle()
|
||||
{
|
||||
int selectedContactsButMe = selectedContacts.size();
|
||||
if (selectedContacts.containsKey(MrContact.MR_CONTACT_ID_SELF)) {
|
||||
selectedContactsButMe--;
|
||||
}
|
||||
actionBar.setSubtitle(ApplicationLoader.applicationContext.getResources().getQuantityString(R.plurals.MeAndMembers, selectedContactsButMe, selectedContactsButMe));
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
@@ -560,6 +641,11 @@ public class ContactsActivity extends BaseFragment implements NotificationCenter
|
||||
if (listViewAdapter != null) {
|
||||
listViewAdapter.searchAgain();
|
||||
listViewAdapter.notifyDataSetChanged();
|
||||
int sel_contact_id = (int) args[0];
|
||||
if( sel_contact_id != 0 ) {
|
||||
createAndPutChipForUser(sel_contact_id);
|
||||
updateSubtitle();
|
||||
}
|
||||
}
|
||||
} else if (id == NotificationCenter.updateInterfaces) {
|
||||
int mask = (Integer)args[0];
|
||||
@@ -589,14 +675,14 @@ public class ContactsActivity extends BaseFragment implements NotificationCenter
|
||||
this.delegate = delegate;
|
||||
}
|
||||
|
||||
private ChipSpan createAndPutChipForUser(TLRPC.User user) {
|
||||
private ChipSpan createAndPutChipForUser(int contact_id) {
|
||||
LayoutInflater lf = (LayoutInflater) ApplicationLoader.applicationContext.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
|
||||
View textView = lf.inflate(R.layout.group_create_bubble, null);
|
||||
TextView text = (TextView)textView.findViewById(R.id.bubble_text_view);
|
||||
|
||||
String name ="";
|
||||
{
|
||||
MrContact mrContact = MrMailbox.getContact(user.id);
|
||||
MrContact mrContact = MrMailbox.getContact(contact_id);
|
||||
name = mrContact.getDisplayName();
|
||||
}
|
||||
|
||||
@@ -621,7 +707,7 @@ public class ContactsActivity extends BaseFragment implements NotificationCenter
|
||||
SpannableStringBuilder ssb = new SpannableStringBuilder("");
|
||||
ChipSpan span = new ChipSpan(bmpDrawable, ImageSpan.ALIGN_BASELINE);
|
||||
allSpans.add(span);
|
||||
selectedContacts.put(user.id, span);
|
||||
selectedContacts.put(contact_id, span);
|
||||
for (ImageSpan sp : allSpans) {
|
||||
ssb.append("<<");
|
||||
ssb.setSpan(sp, ssb.length() - 2, ssb.length(), SpannableStringBuilder.SPAN_EXCLUSIVE_EXCLUSIVE);
|
||||
@@ -640,9 +726,52 @@ public class ContactsActivity extends BaseFragment implements NotificationCenter
|
||||
|
||||
private int[] contactIds;
|
||||
|
||||
public ContactsAdapter(Context context) {
|
||||
private int mListflags = 0;
|
||||
private boolean mAddNewGroupRows;
|
||||
|
||||
private final int ROWTYPE_TEXT_SETTINGS = 0;
|
||||
private final int ROWTYPE_CONTACT = 1;
|
||||
private final int ROWTYPE_COUNT = 2;
|
||||
|
||||
public ContactsAdapter(Context context, int listflags, boolean addNewGroupRows) {
|
||||
mContext = context;
|
||||
contactIds = MrMailbox.getKnownContacts(null);
|
||||
mListflags = listflags;
|
||||
mAddNewGroupRows = addNewGroupRows;
|
||||
contactIds = MrMailbox.getContacts(mListflags, null);
|
||||
updateRowIds();
|
||||
}
|
||||
|
||||
public void updateRowIds()
|
||||
{
|
||||
rowCount = 0;
|
||||
rowNewGroup = -1;
|
||||
rowNewVerifiedGroup = -1;
|
||||
rowAddContact = -1;
|
||||
rowInviteViaQr = -1;
|
||||
rowContactFirst = -1;
|
||||
rowContactLast = -1;
|
||||
|
||||
if( lastQuery == null || lastQuery.isEmpty() ) {
|
||||
if (mAddNewGroupRows) {
|
||||
rowNewGroup = rowCount++;
|
||||
if( MrMailbox.getConfigInt("qr_enabled", 0) != 0 ) {
|
||||
rowNewVerifiedGroup = rowCount++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if( (mListflags & MrMailbox.MR_GCL_VERIFIED_ONLY)!=0 ) {
|
||||
rowInviteViaQr = rowCount++;
|
||||
}
|
||||
else {
|
||||
rowAddContact = rowCount++;
|
||||
}
|
||||
|
||||
if( contactIds.length > 0 ) {
|
||||
rowContactFirst = rowCount;
|
||||
rowCount += contactIds.length;
|
||||
rowContactLast = rowCount - 1;
|
||||
}
|
||||
}
|
||||
|
||||
public void setCheckedMap(HashMap<Integer, ?> map) {
|
||||
@@ -654,16 +783,23 @@ public class ContactsActivity extends BaseFragment implements NotificationCenter
|
||||
}
|
||||
|
||||
public void search(String query) {
|
||||
contactIds = MrMailbox.getKnownContacts(query);
|
||||
contactIds = MrMailbox.getContacts(mListflags, query);
|
||||
lastQuery = query;
|
||||
updateRowIds();
|
||||
}
|
||||
|
||||
public void searchAgain() {
|
||||
contactIds = MrMailbox.getKnownContacts(lastQuery);
|
||||
contactIds = MrMailbox.getContacts(mListflags, lastQuery);
|
||||
updateRowIds();
|
||||
}
|
||||
|
||||
public String getSearch(){
|
||||
return lastQuery;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getItem(int curr_user_index) {
|
||||
public Object getItem(int i) {
|
||||
int curr_user_index = i - rowContactFirst;
|
||||
if(curr_user_index>=0 && curr_user_index<contactIds.length) {
|
||||
TLRPC.User u = new TLRPC.User();
|
||||
u.id = contactIds[curr_user_index];
|
||||
@@ -673,42 +809,69 @@ public class ContactsActivity extends BaseFragment implements NotificationCenter
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEnabled(int row) {
|
||||
return true;
|
||||
public boolean isEnabled(int i) {
|
||||
int type = getItemViewType(i);
|
||||
return (type == ROWTYPE_CONTACT || type == ROWTYPE_TEXT_SETTINGS);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCount() {
|
||||
return contactIds.length;
|
||||
return rowCount;
|
||||
}
|
||||
|
||||
@Override
|
||||
public View getView(int curr_user_index, View convertView, ViewGroup parent) {
|
||||
if (convertView == null) {
|
||||
convertView = new UserCell(mContext, 1, 1);
|
||||
((UserCell) convertView).setStatusColors(0xffa8a8a8);
|
||||
public View getView(int i, View view, ViewGroup parent) {
|
||||
int type = getItemViewType(i);
|
||||
if( type == ROWTYPE_TEXT_SETTINGS ) {
|
||||
if (view == null) {
|
||||
view = new TextSettingsCell(mContext);
|
||||
view.setBackgroundColor(0xffffffff);
|
||||
}
|
||||
TextSettingsCell textCell = (TextSettingsCell) view;
|
||||
if( i == rowNewGroup ) {
|
||||
textCell.setText(mContext.getString(R.string.NewGroup), true);
|
||||
}
|
||||
else if( i == rowNewVerifiedGroup ) {
|
||||
textCell.setText(mContext.getString(R.string.NewVerifiedGroup), true);
|
||||
}
|
||||
else if( i == rowAddContact) {
|
||||
textCell.setText(mContext.getString(R.string.NewContactTitle), false);
|
||||
}
|
||||
else if( i == rowInviteViaQr) {
|
||||
textCell.setText(mContext.getString(R.string.QrShowVerifyCode), false);
|
||||
}
|
||||
}
|
||||
else if( type == ROWTYPE_CONTACT ) {
|
||||
if (view == null) {
|
||||
view = new UserCell(mContext, 1);
|
||||
}
|
||||
|
||||
if(curr_user_index>=0 && curr_user_index<contactIds.length) {
|
||||
int curr_user_id = contactIds[curr_user_index];
|
||||
MrContact mrContact = MrMailbox.getContact(curr_user_id);
|
||||
((UserCell) convertView).setData(mrContact, 0);
|
||||
if (checkedMap != null) {
|
||||
((UserCell) convertView).setChecked(checkedMap.containsKey(curr_user_id), !scrolling);
|
||||
int curr_user_index = i - rowContactFirst;
|
||||
if (curr_user_index >= 0 && curr_user_index < contactIds.length) {
|
||||
int curr_user_id = contactIds[curr_user_index];
|
||||
MrContact mrContact = MrMailbox.getContact(curr_user_id);
|
||||
((UserCell) view).setData(mrContact);
|
||||
if (checkedMap != null) {
|
||||
boolean checked = curr_user_id == MrContact.MR_CONTACT_ID_SELF || checkedMap.containsKey(curr_user_id);
|
||||
((UserCell) view).setChecked(checked, !scrolling);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return convertView;
|
||||
return view;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemViewType(int position) {
|
||||
return 0;
|
||||
public int getItemViewType(int i) {
|
||||
if(i>=rowContactFirst && i<=rowContactLast ) {
|
||||
return ROWTYPE_CONTACT;
|
||||
}
|
||||
return ROWTYPE_TEXT_SETTINGS;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getViewTypeCount() {
|
||||
return 1;
|
||||
return ROWTYPE_COUNT;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -172,8 +172,7 @@ public class ContactsController {
|
||||
tempName = mrContact.getDisplayName();
|
||||
} else if (mrChat != null) {
|
||||
tempName = mrChat.getName();
|
||||
int chatType = mrChat.getType();
|
||||
if (chatType == MrChat.MR_CHAT_NORMAL) {
|
||||
if (!mrChat.isGroup()) {
|
||||
int[] contact_ids = MrMailbox.getChatContacts(mrChat.getId());
|
||||
if (contact_ids.length == 1) {
|
||||
MrContact mrc = MrMailbox.getContact(contact_ids[0]);
|
||||
@@ -181,7 +180,7 @@ public class ContactsController {
|
||||
tempName = mrc.getDisplayName();
|
||||
}
|
||||
}
|
||||
else if( chatType == MrChat.MR_CHAT_GROUP ) {
|
||||
else {
|
||||
tempPath = mrChat.getProfileImage();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -156,7 +156,6 @@ public class DocumentSelectActivity extends BaseFragment {
|
||||
}
|
||||
|
||||
actionBar.setBackButtonDrawable(new BackDrawable(false));
|
||||
actionBar.setAllowOverlayTitle(true);
|
||||
actionBar.setTitle(context.getString(R.string.SelectFile));
|
||||
actionBar.setActionBarMenuOnItemClick(new ActionBar.ActionBarMenuOnItemClick() {
|
||||
@Override
|
||||
@@ -299,7 +298,7 @@ public class DocumentSelectActivity extends BaseFragment {
|
||||
} else {
|
||||
if (!file.canRead()) {
|
||||
showErrorBox(ApplicationLoader.applicationContext.getString(R.string.AccessError));
|
||||
file = new File("/mnt/sdcard");
|
||||
return;
|
||||
}
|
||||
if (file.length() == 0) {
|
||||
return;
|
||||
|
||||
@@ -37,8 +37,10 @@ import android.widget.EditText;
|
||||
import android.widget.FrameLayout;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.ListView;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.b44t.messenger.Cells.HeaderCell;
|
||||
import com.b44t.messenger.Components.BaseFragmentAdapter;
|
||||
import com.b44t.messenger.Cells.GreySectionCell;
|
||||
import com.b44t.messenger.Cells.UserCell;
|
||||
@@ -59,17 +61,26 @@ public class GroupCreateFinalActivity extends BaseFragment implements Notificati
|
||||
|
||||
private final static int done_button = 1;
|
||||
|
||||
int do_what; // values from ContactsActivity
|
||||
|
||||
public GroupCreateFinalActivity(Bundle args) {
|
||||
|
||||
super(args);
|
||||
if( args != null ) {
|
||||
do_what = args.getInt("do_what", 0);
|
||||
selectedContacts = args.getIntegerArrayList("result"); /* may be empty - in this case a group only with SELF is created */
|
||||
}
|
||||
if( selectedContacts == null ) { selectedContacts = new ArrayList<>(); }
|
||||
if( !selectedContacts.contains(MrContact.MR_CONTACT_ID_SELF) ) {
|
||||
selectedContacts.add(MrContact.MR_CONTACT_ID_SELF);
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
public boolean onFragmentCreate() {
|
||||
NotificationCenter.getInstance().addObserver(this, NotificationCenter.updateInterfaces);
|
||||
selectedContacts = getArguments().getIntegerArrayList("result"); /* may be empty - in this case a group only with SELF is created */
|
||||
if( selectedContacts == null ) { selectedContacts = new ArrayList<>(); }
|
||||
selectedContacts.add(MrContact.MR_CONTACT_ID_SELF);
|
||||
|
||||
return super.onFragmentCreate();
|
||||
}
|
||||
|
||||
@@ -90,8 +101,7 @@ public class GroupCreateFinalActivity extends BaseFragment implements Notificati
|
||||
@Override
|
||||
public View createView(final Context context) {
|
||||
actionBar.setBackButtonImage(R.drawable.ic_close_white);
|
||||
actionBar.setAllowOverlayTitle(true);
|
||||
actionBar.setTitle(context.getString(R.string.NewGroup));
|
||||
actionBar.setTitle(do_what==ContactsActivity.SELECT_CONTACTS_FOR_NEW_VERIFIED_GROUP? context.getString(R.string.NewVerifiedGroup) : context.getString(R.string.NewGroup));
|
||||
actionBar.setActionBarMenuOnItemClick(new ActionBar.ActionBarMenuOnItemClick() {
|
||||
@Override
|
||||
public void onItemClick(int id) {
|
||||
@@ -103,7 +113,7 @@ public class GroupCreateFinalActivity extends BaseFragment implements Notificati
|
||||
Toast.makeText(getParentActivity(), context.getString(R.string.ErrGroupNameEmpty), Toast.LENGTH_LONG).show();
|
||||
return;
|
||||
}
|
||||
int chat_id=MrMailbox.createGroupChat(groupName);
|
||||
int chat_id=MrMailbox.createGroupChat(do_what==ContactsActivity.SELECT_CONTACTS_FOR_NEW_VERIFIED_GROUP, groupName);
|
||||
if( chat_id<=0 ) {
|
||||
/* this should never happen, the group is created locally, there is no reason to fail here */
|
||||
Toast.makeText(getParentActivity(), "ErrCreateGroup", Toast.LENGTH_LONG).show();
|
||||
@@ -135,13 +145,8 @@ public class GroupCreateFinalActivity extends BaseFragment implements Notificati
|
||||
LinearLayout linearLayout = (LinearLayout) fragmentView;
|
||||
linearLayout.setOrientation(LinearLayout.VERTICAL);
|
||||
|
||||
FrameLayout frameLayout = new FrameLayout(context);
|
||||
linearLayout.addView(frameLayout);
|
||||
LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) frameLayout.getLayoutParams();
|
||||
layoutParams.width = LayoutHelper.MATCH_PARENT;
|
||||
layoutParams.height = LayoutHelper.WRAP_CONTENT;
|
||||
layoutParams.gravity = Gravity.TOP | Gravity.START;
|
||||
frameLayout.setLayoutParams(layoutParams);
|
||||
TextView label = HeaderCell.createTextView(context, context.getString(R.string.Name));
|
||||
linearLayout.addView(label, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.CENTER_VERTICAL, 18, 18, 18, 0));
|
||||
|
||||
nameTextView = new EditText(context);
|
||||
nameTextView.setHint(context.getString(R.string.EnterGroupNamePlaceholder));
|
||||
@@ -152,7 +157,7 @@ public class GroupCreateFinalActivity extends BaseFragment implements Notificati
|
||||
nameTextView.setMaxLines(4);
|
||||
nameTextView.setGravity(Gravity.CENTER_VERTICAL | Gravity.START);
|
||||
nameTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 18);
|
||||
nameTextView.setHintTextColor(0xff979797);
|
||||
nameTextView.setHintTextColor(0xffBBBBBB);
|
||||
nameTextView.setImeOptions(EditorInfo.IME_FLAG_NO_EXTRACT_UI);
|
||||
nameTextView.setInputType(InputType.TYPE_TEXT_FLAG_CAP_WORDS);
|
||||
nameTextView.setPadding(0, 0, 0, AndroidUtilities.dp(8));
|
||||
@@ -160,27 +165,17 @@ public class GroupCreateFinalActivity extends BaseFragment implements Notificati
|
||||
inputFilters[0] = new InputFilter.LengthFilter(100);
|
||||
nameTextView.setFilters(inputFilters);
|
||||
nameTextView.setTextColor(0xff212121);
|
||||
frameLayout.addView(nameTextView);
|
||||
FrameLayout.LayoutParams layoutParams1 = (FrameLayout.LayoutParams) nameTextView.getLayoutParams();
|
||||
layoutParams1.width = LayoutHelper.MATCH_PARENT;
|
||||
layoutParams1.height = LayoutHelper.WRAP_CONTENT;
|
||||
layoutParams1.topMargin = AndroidUtilities.dp(18);
|
||||
layoutParams1.bottomMargin = AndroidUtilities.dp(18);
|
||||
layoutParams1.leftMargin = AndroidUtilities.dp(18);
|
||||
layoutParams1.rightMargin = AndroidUtilities.dp(18);
|
||||
layoutParams1.gravity = Gravity.CENTER_VERTICAL;
|
||||
nameTextView.setLayoutParams(layoutParams1);
|
||||
linearLayout.addView(nameTextView, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.CENTER_VERTICAL, 18, 1, 18, 18));
|
||||
|
||||
GreySectionCell sectionCell = new GreySectionCell(context);
|
||||
sectionCell.setText(context.getResources().getQuantityString(R.plurals.Members, selectedContacts.size(), selectedContacts.size()));
|
||||
linearLayout.addView(sectionCell);
|
||||
label = HeaderCell.createTextView(context, context.getResources().getQuantityString(R.plurals.Members, selectedContacts.size(), selectedContacts.size()));
|
||||
linearLayout.addView(label, LayoutHelper.createLinear(LayoutHelper.MATCH_PARENT, LayoutHelper.WRAP_CONTENT, Gravity.CENTER_VERTICAL, 18, 9, 18, 4));
|
||||
|
||||
listView = new ListView(context);
|
||||
listView.setDivider(null);
|
||||
listView.setDividerHeight(0);
|
||||
listView.setAdapter(listAdapter = new ListAdapter(context));
|
||||
linearLayout.addView(listView);
|
||||
layoutParams = (LinearLayout.LayoutParams) listView.getLayoutParams();
|
||||
LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) listView.getLayoutParams();
|
||||
layoutParams.width = LayoutHelper.MATCH_PARENT;
|
||||
layoutParams.height = LayoutHelper.MATCH_PARENT;
|
||||
listView.setLayoutParams(layoutParams);
|
||||
@@ -266,14 +261,14 @@ public class GroupCreateFinalActivity extends BaseFragment implements Notificati
|
||||
@Override
|
||||
public View getView(int i, View view, ViewGroup viewGroup) {
|
||||
if (view == null) {
|
||||
view = new UserCell(mContext, 1, 0);
|
||||
view = new UserCell(mContext,0);
|
||||
}
|
||||
|
||||
int curr_user_id = selectedContacts.get(i);
|
||||
|
||||
MrContact mrContact = MrMailbox.getContact(curr_user_id);
|
||||
|
||||
((UserCell) view).setData(mrContact, 0);
|
||||
((UserCell) view).setData(mrContact);
|
||||
|
||||
return view;
|
||||
}
|
||||
|
||||
@@ -24,6 +24,7 @@ package com.b44t.messenger;
|
||||
|
||||
import android.app.Notification;
|
||||
import android.app.NotificationManager;
|
||||
import android.app.PendingIntent;
|
||||
import android.app.Service;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
@@ -85,6 +86,8 @@ public class KeepAliveService extends Service {
|
||||
public static final int FG_NOTIFICATION_ID = 4142;
|
||||
private Notification createNotification()
|
||||
{
|
||||
Intent intent = new Intent(this, LaunchActivity.class);
|
||||
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
|
||||
// a notification _must_ contain a small icon, a title and a text, see https://developer.android.com/guide/topics/ui/notifiers/notifications.html#Required
|
||||
NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
|
||||
|
||||
@@ -101,6 +104,7 @@ public class KeepAliveService extends Service {
|
||||
builder.setPriority(NotificationCompat.PRIORITY_MIN);
|
||||
}
|
||||
builder.setWhen(0);
|
||||
builder.setContentIntent(contentIntent);
|
||||
builder.setSmallIcon(R.drawable.notification_permanent);
|
||||
return builder.build();
|
||||
}
|
||||
|
||||
@@ -27,8 +27,10 @@ import android.Manifest;
|
||||
import android.app.Activity;
|
||||
import android.app.AlertDialog;
|
||||
import android.content.ContentResolver;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.net.MailTo;
|
||||
import android.net.Uri;
|
||||
@@ -753,7 +755,16 @@ public class LaunchActivity extends Activity implements ActionBarLayout.ActionBa
|
||||
else {
|
||||
switch (permissions[i]) {
|
||||
case Manifest.permission.READ_CONTACTS:
|
||||
msg += "- " + ApplicationLoader.applicationContext.getString(R.string.PermissionContacts) + "\n\n";
|
||||
SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("mainconfig", Context.MODE_PRIVATE);
|
||||
if (preferences.getBoolean("PermissionContactsDialogShown", false)) {
|
||||
// The dialog was already shown once
|
||||
grantedCount++;
|
||||
} else {
|
||||
msg += "- " + ApplicationLoader.applicationContext.getString(R.string.PermissionContacts) + "\n\n";
|
||||
SharedPreferences.Editor editor = preferences.edit();
|
||||
editor.putBoolean("PermissionContactsDialogShown", true);
|
||||
editor.apply();
|
||||
}
|
||||
break;
|
||||
case Manifest.permission.WRITE_EXTERNAL_STORAGE:
|
||||
msg += "- " + ApplicationLoader.applicationContext.getString(R.string.PermissionStorage) + "\n\n";
|
||||
|
||||
@@ -69,7 +69,6 @@ import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.InputStream;
|
||||
import java.lang.ref.WeakReference;
|
||||
import java.nio.ByteBuffer;
|
||||
import java.nio.ByteOrder;
|
||||
import java.util.ArrayList;
|
||||
@@ -96,14 +95,6 @@ public class MediaController implements AudioManager.OnAudioFocusChangeListener,
|
||||
|
||||
public static int[] readArgs = new int[3];
|
||||
|
||||
public interface FileDownloadProgressListener {
|
||||
void onFailedDownload(String fileName);
|
||||
void onSuccessDownload(String fileName);
|
||||
void onProgressDownload(String fileName, float progress);
|
||||
void onProgressUpload(String fileName, float progress, boolean isEncrypted);
|
||||
int getObserverTag();
|
||||
}
|
||||
|
||||
private class AudioBuffer {
|
||||
public AudioBuffer(int capacity) {
|
||||
buffer = ByteBuffer.allocateDirect(capacity);
|
||||
@@ -271,14 +262,6 @@ public class MediaController implements AudioManager.OnAudioFocusChangeListener,
|
||||
private Runnable refreshGalleryRunnable;
|
||||
public static AlbumEntry allPhotosAlbumEntry;
|
||||
|
||||
private HashMap<String, ArrayList<WeakReference<FileDownloadProgressListener>>> loadingFileObservers = new HashMap<>();
|
||||
private HashMap<String, ArrayList<MessageObject>> loadingFileMessagesObservers = new HashMap<>();
|
||||
private HashMap<Integer, String> observersByTag = new HashMap<>();
|
||||
private boolean listenerInProgress = false;
|
||||
private HashMap<String, FileDownloadProgressListener> addLaterArray = new HashMap<>();
|
||||
private ArrayList<FileDownloadProgressListener> deleteLaterArray = new ArrayList<>();
|
||||
private int lastTag = 0;
|
||||
|
||||
private boolean isPaused = false;
|
||||
private MediaPlayer audioPlayer = null;
|
||||
private AudioTrack audioTrackPlayer = null;
|
||||
@@ -719,74 +702,6 @@ public class MediaController implements AudioManager.OnAudioFocusChangeListener,
|
||||
cancelVideoConvert(null);
|
||||
}
|
||||
|
||||
public int generateObserverTag() {
|
||||
return lastTag++;
|
||||
}
|
||||
|
||||
public void addLoadingFileObserver(String fileName, FileDownloadProgressListener observer) {
|
||||
addLoadingFileObserver(fileName, null, observer);
|
||||
}
|
||||
|
||||
public void addLoadingFileObserver(String fileName, MessageObject messageObject, FileDownloadProgressListener observer) {
|
||||
if (listenerInProgress) {
|
||||
addLaterArray.put(fileName, observer);
|
||||
return;
|
||||
}
|
||||
removeLoadingFileObserver(observer);
|
||||
|
||||
ArrayList<WeakReference<FileDownloadProgressListener>> arrayList = loadingFileObservers.get(fileName);
|
||||
if (arrayList == null) {
|
||||
arrayList = new ArrayList<>();
|
||||
loadingFileObservers.put(fileName, arrayList);
|
||||
}
|
||||
arrayList.add(new WeakReference<>(observer));
|
||||
if (messageObject != null) {
|
||||
ArrayList<MessageObject> messageObjects = loadingFileMessagesObservers.get(fileName);
|
||||
if (messageObjects == null) {
|
||||
messageObjects = new ArrayList<>();
|
||||
loadingFileMessagesObservers.put(fileName, messageObjects);
|
||||
}
|
||||
messageObjects.add(messageObject);
|
||||
}
|
||||
|
||||
observersByTag.put(observer.getObserverTag(), fileName);
|
||||
}
|
||||
|
||||
public void removeLoadingFileObserver(FileDownloadProgressListener observer) {
|
||||
if (listenerInProgress) {
|
||||
deleteLaterArray.add(observer);
|
||||
return;
|
||||
}
|
||||
String fileName = observersByTag.get(observer.getObserverTag());
|
||||
if (fileName != null) {
|
||||
ArrayList<WeakReference<FileDownloadProgressListener>> arrayList = loadingFileObservers.get(fileName);
|
||||
if (arrayList != null) {
|
||||
for (int a = 0; a < arrayList.size(); a++) {
|
||||
WeakReference<FileDownloadProgressListener> reference = arrayList.get(a);
|
||||
if (reference.get() == null || reference.get() == observer) {
|
||||
arrayList.remove(a);
|
||||
a--;
|
||||
}
|
||||
}
|
||||
if (arrayList.isEmpty()) {
|
||||
loadingFileObservers.remove(fileName);
|
||||
}
|
||||
}
|
||||
observersByTag.remove(observer.getObserverTag());
|
||||
}
|
||||
}
|
||||
|
||||
private void processLaterArrays() {
|
||||
for (HashMap.Entry<String, FileDownloadProgressListener> listener : addLaterArray.entrySet()) {
|
||||
addLoadingFileObserver(listener.getKey(), listener.getValue()); //TODO
|
||||
}
|
||||
addLaterArray.clear();
|
||||
for (FileDownloadProgressListener listener : deleteLaterArray) {
|
||||
removeLoadingFileObserver(listener);
|
||||
}
|
||||
deleteLaterArray.clear();
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
public void didReceivedNotification(int id, Object... args) {
|
||||
|
||||
@@ -57,6 +57,7 @@ public class MessageObject {
|
||||
public final static int MO_TYPE10_DATE_HEADLINE = 10;
|
||||
public final static int MO_TYPE13_STICKER = 13;
|
||||
public final static int MO_TYPE14_MUSIC = 14;
|
||||
public final static int MO_TYPE100_SYSTEM_MSG = 100;
|
||||
public final static int MO_TYPE1000_INIT_VAL = 1000; // unsused types: 4=LOCATION, 12=CONTACT
|
||||
public int type = MO_TYPE1000_INIT_VAL;
|
||||
|
||||
@@ -93,14 +94,17 @@ public class MessageObject {
|
||||
textPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG);
|
||||
textPaint.setColor(Theme.MSG_TEXT_COLOR);
|
||||
textPaint.linkColor = Theme.MSG_LINK_TEXT_COLOR;
|
||||
}
|
||||
|
||||
if( systemCmdPaint == null ) {
|
||||
systemCmdPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG);
|
||||
systemCmdPaint.setColor(Theme.MSG_AUDIO_NAME_COLOR);
|
||||
systemCmdPaint.setColor(Theme.MSG_SYSTEM_CMD_COLOR);
|
||||
systemCmdPaint.linkColor = Theme.MSG_SYSTEM_CMD_COLOR;
|
||||
}
|
||||
|
||||
messageOwner = message;
|
||||
|
||||
if( !messageOwner.is_system_cmd ) {
|
||||
if( !messageOwner.colored_text ) {
|
||||
textPaint.setTextSize(AndroidUtilities.dp(ApplicationLoader.fontSize));
|
||||
}
|
||||
else {
|
||||
@@ -323,7 +327,7 @@ public class MessageObject {
|
||||
}
|
||||
|
||||
private void generateLayout() {
|
||||
if (type != MO_TYPE0_TEXT || messageOwner.to_id == null || messageText == null || messageText.length() == 0) {
|
||||
if (type != MO_TYPE0_TEXT || messageText == null || messageText.length() == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -332,7 +336,7 @@ public class MessageObject {
|
||||
addLinks(messageText);
|
||||
|
||||
int maxWidth;
|
||||
boolean substractAvatar = !isOut() && MrMailbox.getChat((int)messageOwner.dialog_id).getType()==MrChat.MR_CHAT_GROUP;
|
||||
boolean substractAvatar = !isOut() && MrMailbox.getChat((int)messageOwner.dialog_id).isGroup();
|
||||
if (substractAvatar) {
|
||||
maxWidth = Math.min(AndroidUtilities.displaySize.x, AndroidUtilities.displaySize.y) - AndroidUtilities.dp(122);
|
||||
} else {
|
||||
@@ -342,7 +346,7 @@ public class MessageObject {
|
||||
StaticLayout textLayout;
|
||||
|
||||
try {
|
||||
textLayout = new StaticLayout(messageText, messageOwner.is_system_cmd? systemCmdPaint : textPaint, maxWidth, Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false);
|
||||
textLayout = new StaticLayout(messageText, messageOwner.colored_text? systemCmdPaint : textPaint, maxWidth, Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false);
|
||||
} catch (Exception e) {
|
||||
|
||||
return;
|
||||
@@ -373,7 +377,7 @@ public class MessageObject {
|
||||
block.charactersOffset = startCharacter;
|
||||
try {
|
||||
CharSequence str = messageText.subSequence(startCharacter, endCharacter);
|
||||
block.textLayout = new StaticLayout(str, messageOwner.is_system_cmd? systemCmdPaint : textPaint, maxWidth, Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false);
|
||||
block.textLayout = new StaticLayout(str, messageOwner.colored_text? systemCmdPaint : textPaint, maxWidth, Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false);
|
||||
block.textYOffset = textLayout.getLineTop(linesOffset);
|
||||
if (a != 0) {
|
||||
block.height = (int) (block.textYOffset - prevOffset);
|
||||
@@ -590,7 +594,7 @@ public class MessageObject {
|
||||
return AndroidUtilities.dp(100);
|
||||
} else if (type == MO_TYPE14_MUSIC) {
|
||||
return AndroidUtilities.dp(82);
|
||||
} else if (type == MO_TYPE10_DATE_HEADLINE) {
|
||||
} else if (type == MO_TYPE10_DATE_HEADLINE||type == MO_TYPE100_SYSTEM_MSG) {
|
||||
return AndroidUtilities.dp(30);
|
||||
} else if (type == MO_TYPE13_STICKER) {
|
||||
float maxHeight = AndroidUtilities.displaySize.y * 0.4f;
|
||||
|
||||
@@ -30,10 +30,6 @@ import android.text.TextUtils;
|
||||
|
||||
public class MrChat {
|
||||
|
||||
public final static int MR_CHAT_UNDEFINED = 0;
|
||||
public final static int MR_CHAT_NORMAL = 100;
|
||||
public final static int MR_CHAT_GROUP = 120;
|
||||
|
||||
public final static int MR_CHAT_ID_DEADDROP = 1;
|
||||
public final static int MR_CHAT_ID_STARRED = 5;
|
||||
public final static int MR_CHAT_ID_ARCHIVED_LINK = 6;
|
||||
@@ -46,39 +42,28 @@ public class MrChat {
|
||||
@Override protected void finalize() throws Throwable {
|
||||
super.finalize();
|
||||
MrChatUnref(m_hChat);
|
||||
m_hChat = 0;
|
||||
}
|
||||
|
||||
public native int getId();
|
||||
public native int getType();
|
||||
public native boolean isGroup();
|
||||
public native int getArchived();
|
||||
public native String getName();
|
||||
public native String getSubtitle();
|
||||
|
||||
public native String getProfileImage();
|
||||
public native boolean isUnpromoted();
|
||||
|
||||
public String getDraft() {
|
||||
return MrChatGetDraft(m_hChat);
|
||||
}
|
||||
|
||||
public long getDraftTimestamp() {
|
||||
return MrChatGetDraftTimestamp(m_hChat);
|
||||
}
|
||||
|
||||
public native boolean isSelfTalk();
|
||||
public native boolean isVerified();
|
||||
public native String getDraft();
|
||||
public native long getDraftTimestamp();
|
||||
public int getDraftReplyToMsgId() {
|
||||
return MrChatGetDraftReplyToMsgId(m_hChat);
|
||||
}
|
||||
|
||||
public int setDraft(String draft/*NULL=delete*/, long replyToMsgId) {
|
||||
return MrChatSetDraft(m_hChat, draft, replyToMsgId);
|
||||
return 0;
|
||||
}
|
||||
public native int setDraft(String draft/*NULL=delete*/, long replyToMsgId);
|
||||
|
||||
private long m_hChat; // must not be renamed as referenced by JNI under the name "m_hChat"
|
||||
private native static void MrChatUnref (long hChat);
|
||||
private native static String MrChatGetDraft (long hChat); // returns null for "no draft"
|
||||
private native static long MrChatGetDraftTimestamp (long hChat); // returns 0 for "no draft"
|
||||
private native static int MrChatGetDraftReplyToMsgId (long hChat); // returns 0 for "no draft"
|
||||
private native static int MrChatSetDraft (long hChat, String draft/*NULL=delete*/, long replyToMsgId);
|
||||
|
||||
|
||||
/* additional functions that are not 1:1 available in the backend
|
||||
@@ -127,7 +112,7 @@ public class MrChat {
|
||||
{
|
||||
// returns name of group chats or name+email-address for normal chats
|
||||
String name = "ErrGrpNameNAddr";
|
||||
if( getType()==MR_CHAT_GROUP ) {
|
||||
if( isGroup() ) {
|
||||
name = getName();
|
||||
}
|
||||
else {
|
||||
|
||||
@@ -36,6 +36,7 @@ public class MrChatlist {
|
||||
@Override protected void finalize() throws Throwable {
|
||||
super.finalize();
|
||||
MrChatlistUnref(m_hChatlist);
|
||||
m_hChatlist = 0;
|
||||
}
|
||||
|
||||
public int getCnt() {
|
||||
|
||||
@@ -31,6 +31,7 @@ package com.b44t.messenger;
|
||||
public class MrContact {
|
||||
|
||||
public final static int MR_CONTACT_ID_SELF = 1;
|
||||
public final static int MR_CONTACT_ID_DEVICE = 2;
|
||||
public final static int MR_CONTACT_ID_LAST_SPECIAL = 9;
|
||||
|
||||
public MrContact(long hContact) {
|
||||
@@ -40,13 +41,16 @@ public class MrContact {
|
||||
@Override protected void finalize() throws Throwable {
|
||||
super.finalize();
|
||||
MrContactUnref(m_hContact);
|
||||
m_hContact = 0;
|
||||
}
|
||||
|
||||
public native String getName();
|
||||
public native String getDisplayName();
|
||||
public native String getFirstName();
|
||||
public native String getAddr();
|
||||
public native String getNameNAddr();
|
||||
public native boolean isBlocked();
|
||||
public native boolean isVerified();
|
||||
|
||||
private long m_hContact;
|
||||
private native static void MrContactUnref (long hContact);
|
||||
|
||||
@@ -41,6 +41,7 @@ public class MrLot {
|
||||
@Override protected void finalize() throws Throwable {
|
||||
super.finalize();
|
||||
MrLotUnref(m_hLot);
|
||||
m_hLot = 0;
|
||||
}
|
||||
|
||||
public native String getText1();
|
||||
@@ -48,6 +49,7 @@ public class MrLot {
|
||||
public native String getText2();
|
||||
public native long getTimestamp();
|
||||
public native int getState();
|
||||
public native int getId();
|
||||
|
||||
private long m_hLot;
|
||||
private native static void MrLotUnref(long hLot);
|
||||
|
||||
@@ -52,7 +52,7 @@ public class MrMailbox {
|
||||
public native static String getBlobdir();
|
||||
|
||||
public native static int configureAndConnect();
|
||||
public native static void configureCancel();
|
||||
public native static void stopOngoingProcess();
|
||||
|
||||
public native static int isConfigured();
|
||||
|
||||
@@ -67,11 +67,13 @@ public class MrMailbox {
|
||||
public native static String getInfo();
|
||||
public native static String cmdline(String cmd);
|
||||
|
||||
public native static String initiateKeyTransfer();
|
||||
public native static boolean continueKeyTransfer(int msg_id, String setup_code);
|
||||
public final static int MR_IMEX_EXPORT_SELF_KEYS = 1;
|
||||
public final static int MR_IMEX_IMPORT_SELF_KEYS = 2;
|
||||
public final static int MR_IMEX_EXPORT_BACKUP = 11;
|
||||
public final static int MR_IMEX_IMPORT_BACKUP = 12;
|
||||
public native static void imex(int what, String dir);
|
||||
public native static int imex(int what, String dir);
|
||||
public native static String imexHasBackup(String dir);
|
||||
public native static int checkPassword(String pw);
|
||||
|
||||
@@ -81,7 +83,9 @@ public class MrMailbox {
|
||||
private native static long MrMailboxNew(); // returns hMailbox which must be unref'd after usage (Names as mrmailbox_new don't work due to the additional underscore)
|
||||
|
||||
// contacts
|
||||
public native static int[] getKnownContacts(String query);
|
||||
public final static int MR_GCL_VERIFIED_ONLY = 1;
|
||||
public final static int MR_GCL_ADD_SELF = 2;
|
||||
public native static int[] getContacts(int flags, String query);
|
||||
public native static int getBlockedCount();
|
||||
public native static int[] getBlockedContacts();
|
||||
|
||||
@@ -117,8 +121,8 @@ public class MrMailbox {
|
||||
// chats
|
||||
public final static int MR_GCL_ARCHIVED_ONLY = 0x01;
|
||||
public final static int MR_GCL_NO_SPECIALS = 0x02;
|
||||
public static MrChatlist getChatlist(int listflags, String query) {
|
||||
return new MrChatlist(MrMailboxGetChatlist(m_hMailbox, listflags, query));
|
||||
public static MrChatlist getChatlist(int listflags, String query, int queryId) {
|
||||
return new MrChatlist(MrMailboxGetChatlist(m_hMailbox, listflags, query, queryId));
|
||||
}
|
||||
|
||||
public static MrChat getChat(int chat_id) {
|
||||
@@ -131,9 +135,10 @@ public class MrMailbox {
|
||||
public native static void archiveChat (int chat_id, int archive);
|
||||
|
||||
public native static int getChatIdByContactId (int contact_id);
|
||||
public native static int createChatByContactId(int contact_id); // returns chat_id
|
||||
public native static int createChatByContactId(int contact_id);
|
||||
public native static int createChatByMsgId (int msg_id);
|
||||
|
||||
public native static int createGroupChat (String name);
|
||||
public native static int createGroupChat (boolean verified, String name);
|
||||
public native static int isContactInChat (int chat_id, int contact_id);
|
||||
public native static int addContactToChat (int chat_id, int contact_id);
|
||||
public native static int removeContactFromChat (int chat_id, int contact_id);
|
||||
@@ -152,7 +157,7 @@ public class MrMailbox {
|
||||
public native static int[] getChatContacts(int chat_id);
|
||||
public native static void deleteChat(int chat_id);
|
||||
|
||||
private native static long MrMailboxGetChatlist (long hMailbox, int listflags, String query); // returns hChatlist which must be unref'd after usage
|
||||
private native static long MrMailboxGetChatlist (long hMailbox, int listflags, String query, int queryId); // returns hChatlist which must be unref'd after usage
|
||||
private native static long MrMailboxGetChat (long hMailbox, int chat_id); // return hChat which must be unref'd after usage
|
||||
|
||||
|
||||
@@ -177,6 +182,22 @@ public class MrMailbox {
|
||||
private native static long MrMailboxGetMsg (long hMailbox, int id); // return hMsg which must be unref'd after usage
|
||||
private native static String MrMailboxGetMsgInfo (long hMailbox, int id);
|
||||
|
||||
// out-of-band verification
|
||||
public final static int MR_QR_ASK_VERIFYCONTACT = 200;
|
||||
public final static int MR_QR_ASK_VERIFYGROUP = 202;
|
||||
public final static int MR_QR_FPR_OK = 210;
|
||||
public final static int MR_QR_FPR_MISMATCH = 220;
|
||||
public final static int MR_QR_FPR_WITHOUT_ADDR = 230;
|
||||
public final static int MR_QR_ADDR = 320;
|
||||
public final static int MR_QR_TEXT = 330;
|
||||
public final static int MR_QR_URL = 332;
|
||||
public final static int MR_QR_ERROR = 400;
|
||||
public native static int checkQrCPtr(String qr);
|
||||
public static MrLot checkQr(String qr) { return new MrLot(checkQrCPtr(qr)); }
|
||||
|
||||
public native static String getSecurejoinQr(int chat_id);
|
||||
public native static int joinSecurejoin(String qr);
|
||||
|
||||
// static
|
||||
public native static String MrGetVersionStr ();
|
||||
public native static String CPtr2String (long hString); // get strings eg. from data1 from the callback
|
||||
@@ -200,10 +221,12 @@ public class MrMailbox {
|
||||
|
||||
public final static int MR_EVENT_CONFIGURE_PROGRESS = 2041;
|
||||
|
||||
public final static int MR_EVENT_IMEX_ENDED = 2050;
|
||||
public final static int MR_EVENT_IMEX_PROGRESS = 2051;
|
||||
public final static int MR_EVENT_IMEX_FILE_WRITTEN = 2052;
|
||||
|
||||
public final static int MR_EVENT_SECUREJOIN_INVITER_PROGRESS = 2060;
|
||||
public final static int MR_EVENT_SECUREJOIN_JOINER_PROGRESS = 2061;
|
||||
|
||||
public final static int MR_EVENT_IS_OFFLINE = 2081;
|
||||
public final static int MR_EVENT_GET_STRING = 2091;
|
||||
public final static int MR_EVENT_GET_QUANTITIY_STRING = 2092;
|
||||
@@ -228,15 +251,6 @@ public class MrMailbox {
|
||||
});
|
||||
return 0;
|
||||
|
||||
case MR_EVENT_IMEX_ENDED:
|
||||
AndroidUtilities.runOnUIThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
NotificationCenter.getInstance().postNotificationName(NotificationCenter.imexEnded, (int)data1);
|
||||
}
|
||||
});
|
||||
return 0;
|
||||
|
||||
case MR_EVENT_IMEX_PROGRESS:
|
||||
AndroidUtilities.runOnUIThread(new Runnable() {
|
||||
@Override
|
||||
@@ -257,6 +271,24 @@ public class MrMailbox {
|
||||
}
|
||||
return 0;
|
||||
|
||||
case MR_EVENT_SECUREJOIN_INVITER_PROGRESS:
|
||||
AndroidUtilities.runOnUIThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
NotificationCenter.getInstance().postNotificationName(NotificationCenter.secureJoinInviterProgress, (int)data1, (int)data2);
|
||||
}
|
||||
});
|
||||
return 0;
|
||||
|
||||
case MR_EVENT_SECUREJOIN_JOINER_PROGRESS:
|
||||
AndroidUtilities.runOnUIThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
NotificationCenter.getInstance().postNotificationName(NotificationCenter.secureJoinJoinerProgress, (int)data1, (int)data2);
|
||||
}
|
||||
});
|
||||
return 0;
|
||||
|
||||
case MR_EVENT_MSGS_CHANGED:
|
||||
case MR_EVENT_INCOMING_MSG:
|
||||
AndroidUtilities.runOnUIThread(new Runnable() {
|
||||
@@ -285,7 +317,7 @@ public class MrMailbox {
|
||||
AndroidUtilities.runOnUIThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
NotificationCenter.getInstance().postNotificationName(NotificationCenter.contactsDidLoaded);
|
||||
NotificationCenter.getInstance().postNotificationName(NotificationCenter.contactsDidLoaded, (int)data1);
|
||||
NotificationCenter.getInstance().postNotificationName(NotificationCenter.blockedUsersDidLoaded);
|
||||
NotificationCenter.getInstance().postNotificationName(NotificationCenter.dialogsNeedReload);
|
||||
}
|
||||
@@ -334,7 +366,7 @@ public class MrMailbox {
|
||||
return 0;
|
||||
|
||||
case MR_EVENT_GET_STRING:
|
||||
String s = "ErrStrBadId";
|
||||
String s;
|
||||
switch( (int)data1 ) {
|
||||
// the string-IDs are defined in the backend; as this is the only place where they're used, there is no benefit in creating an enum or sth. like that.
|
||||
case 1: s = ApplicationLoader.applicationContext.getString(R.string.NoMessages); break;
|
||||
@@ -358,18 +390,20 @@ public class MrMailbox {
|
||||
case 22: s = ApplicationLoader.applicationContext.getString(R.string.NoNetwork); break;
|
||||
case 23: s = ApplicationLoader.applicationContext.getString(R.string.AttachGif); break;
|
||||
case 24: s = ApplicationLoader.applicationContext.getString(R.string.EncryptedMessage); break;
|
||||
case 25: s = ApplicationLoader.applicationContext.getString(R.string.EncrinfoE2E); break;
|
||||
case 25: s = ApplicationLoader.applicationContext.getString(R.string.EncrinfoE2EAvailable); break;
|
||||
case 27: s = ApplicationLoader.applicationContext.getString(R.string.EncrinfoTransport); break;
|
||||
case 28: s = ApplicationLoader.applicationContext.getString(R.string.EncrinfoNone); break;
|
||||
case 29: s = ApplicationLoader.applicationContext.getString(R.string.CannotDecryptBody); break;
|
||||
case 30: s = ApplicationLoader.applicationContext.getString(R.string.EncrinfoFingerprints); break;
|
||||
case 31: s = ApplicationLoader.applicationContext.getString(R.string.ReadReceipt); break;
|
||||
case 32: s = ApplicationLoader.applicationContext.getString(R.string.ReadReceiptMailBody); break;
|
||||
case 33: s = ApplicationLoader.applicationContext.getString(R.string.MsgGroupImageDeleted); break;
|
||||
case 34: s = "<c#808080>"+ApplicationLoader.applicationContext.getString(R.string.EncrinfoE2EExplain)+"</c>"; break;
|
||||
case 35: s = "<c#808080>"+ApplicationLoader.applicationContext.getString(R.string.EncrinfoNoE2EExplain)+"</c>"; break;
|
||||
case 36: s = "<c#808080>"+ApplicationLoader.applicationContext.getString(R.string.E2eeOffBecauseOfUser)+"</c>"; break;
|
||||
case 37: s = "<c#808080>"+ApplicationLoader.applicationContext.getString(R.string.E2eeOffBecauseOfRecipient)+"</c>"; break;
|
||||
case 34: s = ApplicationLoader.applicationContext.getString(R.string.E2EEncryptionPreferred); break;
|
||||
case 40: s = ApplicationLoader.applicationContext.getString(R.string.ArchivedChats); break;
|
||||
case 42: s = ApplicationLoader.applicationContext.getString(R.string.AutocryptSetupMessageSubject); break;
|
||||
case 43: s = ApplicationLoader.applicationContext.getString(R.string.AutocryptSetupMessageGeneralBody); break;
|
||||
case 50: s = ApplicationLoader.applicationContext.getString(R.string.SelfTalkSubtitle); break;
|
||||
default: s = null; break;
|
||||
}
|
||||
return String2CPtr(s);
|
||||
|
||||
|
||||
@@ -64,36 +64,16 @@ public class MrMsg {
|
||||
@Override protected void finalize() throws Throwable {
|
||||
super.finalize();
|
||||
MrMsgUnref(m_hMsg);
|
||||
m_hMsg = 0;
|
||||
}
|
||||
|
||||
public int getId() {
|
||||
return MrMsgGetId(m_hMsg);
|
||||
}
|
||||
|
||||
public String getText() {
|
||||
return MrMsgGetText(m_hMsg);
|
||||
}
|
||||
|
||||
public long getTimestamp() {
|
||||
return MrMsgGetTimestamp(m_hMsg);
|
||||
}
|
||||
|
||||
public int getType() {
|
||||
return MrMsgGetType(m_hMsg);
|
||||
}
|
||||
|
||||
public int getState() {
|
||||
return MrMsgGetState(m_hMsg);
|
||||
}
|
||||
public int getChatId() {
|
||||
return MrMsgGetChatId(m_hMsg);
|
||||
}
|
||||
public int getFromId() {
|
||||
return MrMsgGetFromId(m_hMsg);
|
||||
}
|
||||
public int getToId() {
|
||||
return MrMsgGetToId(m_hMsg);
|
||||
}
|
||||
public native int getId();
|
||||
public native String getText();
|
||||
public native long getTimestamp();
|
||||
public native int getType();
|
||||
public native int getState();
|
||||
public native int getChatId();
|
||||
public native int getFromId();
|
||||
|
||||
public native int getWidth(int def);
|
||||
public native int getHeight(int def);
|
||||
@@ -111,19 +91,13 @@ public class MrMsg {
|
||||
public native String getFilemime();
|
||||
public native String getFilename();
|
||||
public native boolean isForwarded();
|
||||
public native boolean isSystemcmd();
|
||||
public native boolean isInfo();
|
||||
public native boolean isSetupMessage();
|
||||
public native String getSetupCodeBegin();
|
||||
public native boolean isIncreation();
|
||||
|
||||
private long m_hMsg; // must not be renamed as referenced by JNI under the name "m_hMsg"
|
||||
private native static void MrMsgUnref (long hMsg);
|
||||
private native static int MrMsgGetId (long hMsg);
|
||||
private native static String MrMsgGetText (long hMsg);
|
||||
private native static long MrMsgGetTimestamp (long hMsg);
|
||||
private native static int MrMsgGetType (long hMsg);
|
||||
private native static int MrMsgGetState (long hMsg);
|
||||
private native static int MrMsgGetChatId (long hMsg);
|
||||
private native static int MrMsgGetFromId (long hMsg);
|
||||
private native static int MrMsgGetToId (long hMsg);
|
||||
|
||||
|
||||
/* additional functions that are not 1:1 available in the backend
|
||||
@@ -146,8 +120,6 @@ public class MrMsg {
|
||||
|
||||
ret.id = getId();
|
||||
ret.from_id = getFromId();
|
||||
ret.to_id = new TLRPC.TL_peerUser();
|
||||
ret.to_id.user_id = getToId();
|
||||
ret.date = (int)getTimestamp();
|
||||
ret.dialog_id = getChatId();
|
||||
ret.unread = state!=MR_OUT_MDN_RCVD; // the state of outgoing messages
|
||||
@@ -156,11 +128,16 @@ public class MrMsg {
|
||||
ret.out = ret.from_id==MrContact.MR_CONTACT_ID_SELF; // true=outgoing message, read eg. in MessageObject.isOutOwner()
|
||||
ret.created_by_mr = true;
|
||||
ret.show_padlock = showPadlock()!=0;
|
||||
ret.is_system_cmd = isSystemcmd();
|
||||
ret.is_setup_message = isSetupMessage();
|
||||
ret.colored_text = ret.is_setup_message;
|
||||
|
||||
if( type == MR_MSG_TEXT ) {
|
||||
ret.message = getText();
|
||||
}
|
||||
else if( type == MR_MSG_FILE && isSetupMessage() )
|
||||
{
|
||||
ret.message = ApplicationLoader.applicationContext.getString(R.string.AutocryptSetupMessageTapBody);
|
||||
}
|
||||
else if( type == MR_MSG_IMAGE ) {
|
||||
String path = getFile();
|
||||
TLRPC.TL_photo photo = null;
|
||||
|
||||
@@ -36,6 +36,8 @@ public class NotificationCenter {
|
||||
public static final int imexEnded = totalEvents++;
|
||||
public static final int imexProgress = totalEvents++;
|
||||
public static final int imexFileWritten = totalEvents++;
|
||||
public static final int secureJoinInviterProgress = totalEvents++;
|
||||
public static final int secureJoinJoinerProgress = totalEvents++;
|
||||
public static final int didReceivedNewMessages = totalEvents++;
|
||||
public static final int updateInterfaces = totalEvents++;
|
||||
public static final int dialogsNeedReload = totalEvents++;
|
||||
|
||||
@@ -401,7 +401,7 @@ public class NotificationsController {
|
||||
if (mrChat.getId() == 0) {
|
||||
return;
|
||||
}
|
||||
boolean isGroupChat = mrChat.getType() == MrChat.MR_CHAT_GROUP;
|
||||
boolean isGroupChat = mrChat.isGroup();
|
||||
boolean value = !((!preferences.getBoolean("EnableAll", true) || isGroupChat && !preferences.getBoolean("EnableGroup", true)) && notifyOverride == 0);
|
||||
|
||||
if (value) {
|
||||
@@ -753,7 +753,7 @@ public class NotificationsController {
|
||||
cv.put("count", count);
|
||||
ApplicationLoader.applicationContext.getContentResolver().insert(Uri.parse("content://com.teslacoilsw.notifier/unread_count"), cv);
|
||||
} catch (Throwable e) {
|
||||
e.printStackTrace();
|
||||
//e.printStackTrace(); -- do not flood the log with errors about missing teslacoilsw-URIs
|
||||
}
|
||||
|
||||
try {
|
||||
@@ -793,7 +793,7 @@ public class NotificationsController {
|
||||
MrChat mrChat = MrMailbox.getChat((int)dialog_id);
|
||||
MrContact mrContact = MrMailbox.getContact(from_id);
|
||||
String name = mrContact.getDisplayName();
|
||||
boolean is_group = mrChat.getType()==MrChat.MR_CHAT_GROUP;
|
||||
boolean is_group = mrChat.isGroup();
|
||||
|
||||
MrMsg mrMsg = MrMailbox.getMsg(messageObject.getId());
|
||||
String msg = mrMsg.getSummarytext(160);
|
||||
@@ -988,7 +988,7 @@ public class NotificationsController {
|
||||
//TLRPC.User user = MessagesController.getInstance().getUser(user_id);
|
||||
|
||||
MrChat mrChat = MrMailbox.getChat((int)dialog_id);
|
||||
boolean isGroupChat = mrChat.getType() == MrChat.MR_CHAT_GROUP;
|
||||
boolean isGroupChat = mrChat.isGroup();
|
||||
|
||||
|
||||
//TLRPC.FileLocation photoPath = null;
|
||||
|
||||
@@ -122,7 +122,6 @@ public class PasscodeActivity extends BaseFragment implements NotificationCenter
|
||||
@Override
|
||||
public View createView(final Context context) {
|
||||
actionBar.setBackButtonImage(screen == SCREEN0_SETTINGS? R.drawable.ic_ab_back : R.drawable.ic_close_white);
|
||||
actionBar.setAllowOverlayTitle(false);
|
||||
actionBar.setActionBarMenuOnItemClick(new ActionBar.ActionBarMenuOnItemClick() {
|
||||
@Override
|
||||
public void onItemClick(int id) {
|
||||
@@ -257,8 +256,8 @@ public class PasscodeActivity extends BaseFragment implements NotificationCenter
|
||||
if (screen == SCREEN1_ENTER_CODE1) {
|
||||
dropDownContainer = new ActionBarMenuItem(context, menu, 0);
|
||||
dropDownContainer.setSubMenuOpenSide(1);
|
||||
dropDownContainer.addSubItem(pin_item, context.getString(R.string.PasscodePIN), 0);
|
||||
dropDownContainer.addSubItem(password_item, context.getString(R.string.PasscodePassword), 0);
|
||||
dropDownContainer.addSubItem(pin_item, context.getString(R.string.PasscodePIN));
|
||||
dropDownContainer.addSubItem(password_item, context.getString(R.string.PasscodePassword));
|
||||
actionBar.addView(dropDownContainer);
|
||||
layoutParams = (FrameLayout.LayoutParams) dropDownContainer.getLayoutParams();
|
||||
layoutParams.height = LayoutHelper.MATCH_PARENT;
|
||||
|
||||
@@ -158,8 +158,8 @@ public class PhotoAlbumPickerActivity extends BaseFragment implements Notificati
|
||||
|
||||
dropDownContainer = new ActionBarMenuItem(context, menu, 0);
|
||||
dropDownContainer.setSubMenuOpenSide(1);
|
||||
dropDownContainer.addSubItem(ID_ITEM_PHOTOS, context.getString(R.string.PickerPhotos), 0);
|
||||
dropDownContainer.addSubItem(ID_ITEM_VIDEO, context.getString(R.string.PickerVideo), 0);
|
||||
dropDownContainer.addSubItem(ID_ITEM_PHOTOS, context.getString(R.string.PickerPhotos));
|
||||
dropDownContainer.addSubItem(ID_ITEM_VIDEO, context.getString(R.string.PickerVideo));
|
||||
actionBar.addView(dropDownContainer);
|
||||
FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) dropDownContainer.getLayoutParams();
|
||||
layoutParams.height = LayoutHelper.MATCH_PARENT;
|
||||
|
||||
@@ -428,7 +428,6 @@ public class PhotoCropActivity extends BaseFragment {
|
||||
actionBar.setBackgroundColor(Theme.ACTION_BAR_MEDIA_PICKER_COLOR);
|
||||
actionBar.setItemsBackgroundColor(Theme.ACTION_BAR_PICKER_SELECTOR_COLOR);
|
||||
actionBar.setBackButtonImage(R.drawable.ic_ab_back);
|
||||
actionBar.setAllowOverlayTitle(true);
|
||||
actionBar.setTitle(context.getString(R.string.CropImage));
|
||||
actionBar.setActionBarMenuOnItemClick(new ActionBar.ActionBarMenuOnItemClick() {
|
||||
@Override
|
||||
|
||||
@@ -936,10 +936,10 @@ public class PhotoViewer implements NotificationCenter.NotificationCenterDelegat
|
||||
ActionBarMenu menu = actionBar.createMenu();
|
||||
|
||||
menuItem = menu.addItem(0, R.drawable.ic_ab_other);
|
||||
menuItem.addSubItem(gallery_menu_save, ApplicationLoader.applicationContext.getString(R.string.SaveToGallery), 0);
|
||||
menuItem.addSubItem(gallery_menu_share, ApplicationLoader.applicationContext.getString(R.string.Share), 0);
|
||||
//menuItem.addSubItem(gallery_menu_forward, LocaleController.getString("Forward", R.string.Forward), 0);
|
||||
//menuItem.addSubItem(gallery_menu_delete, LocaleController.getString("Delete", R.string.Delete), 0);
|
||||
menuItem.addSubItem(gallery_menu_save, ApplicationLoader.applicationContext.getString(R.string.SaveToGallery));
|
||||
menuItem.addSubItem(gallery_menu_share, ApplicationLoader.applicationContext.getString(R.string.Share));
|
||||
//menuItem.addSubItem(gallery_menu_forward, LocaleController.getString("Forward", R.string.Forward));
|
||||
//menuItem.addSubItem(gallery_menu_delete, LocaleController.getString("Delete", R.string.Delete));
|
||||
|
||||
//captionDoneItem = menu.addItemWithWidth(gallery_menu_caption_done, R.drawable.ic_done, AndroidUtilities.dp(56));
|
||||
//captionItem = menu.addItemWithWidth(gallery_menu_caption, R.drawable.photo_text, AndroidUtilities.dp(56));
|
||||
|
||||
@@ -43,18 +43,18 @@ import android.view.ViewTreeObserver;
|
||||
import android.widget.FrameLayout;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.b44t.messenger.Cells.ChatlistCell;
|
||||
import com.b44t.messenger.Cells.HeaderCell;
|
||||
import com.b44t.messenger.Cells.TextInfoCell;
|
||||
import com.b44t.messenger.Cells.TextSettingsCell;
|
||||
import com.b44t.messenger.aosp.LinearLayoutManager;
|
||||
import com.b44t.messenger.aosp.RecyclerView;
|
||||
|
||||
import com.b44t.messenger.ActionBar.BackDrawable;
|
||||
import com.b44t.messenger.ActionBar.SimpleTextView;
|
||||
import com.b44t.messenger.Cells.EmptyCell;
|
||||
import com.b44t.messenger.Cells.ShadowSectionCell;
|
||||
import com.b44t.messenger.Cells.TextCell;
|
||||
import com.b44t.messenger.Cells.UserCell;
|
||||
import com.b44t.messenger.ActionBar.ActionBar;
|
||||
import com.b44t.messenger.ActionBar.ActionBarMenu;
|
||||
import com.b44t.messenger.ActionBar.ActionBarMenuItem;
|
||||
import com.b44t.messenger.Components.AvatarDrawable;
|
||||
import com.b44t.messenger.Components.AvatarUpdater;
|
||||
import com.b44t.messenger.Components.BackupImageView;
|
||||
@@ -71,10 +71,12 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter.
|
||||
private int user_id; // show the profile of a single user
|
||||
private int chat_id; // show the profile of a group
|
||||
|
||||
private final int typeEmpty = 0;
|
||||
private final int typeTextCell = 3;
|
||||
private final int typeContactCell = 4;
|
||||
private final int typeSection = 5;
|
||||
private final int ROWTYPE_TEXT_SETTINGS = 2;
|
||||
private final int ROWTYPE_CONTACT = 3;
|
||||
private final int ROWTYPE_CHAT = 4;
|
||||
private final int ROWTYPE_SHADOW = 5;
|
||||
private final int ROWTYPE_INFO = 6;
|
||||
private final int ROWTYPE_HEADER = 7;
|
||||
|
||||
private RecyclerListView listView;
|
||||
private ListAdapter listAdapter;
|
||||
@@ -87,28 +89,34 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter.
|
||||
private int extraHeight;
|
||||
|
||||
private AvatarUpdater avatarUpdater;
|
||||
private int[] sortedUserIds;
|
||||
|
||||
private final static int ID_BLOCK_CONTACT = 3;
|
||||
private final static int ID_DELETE_CONTACT = 5;
|
||||
private final static int ID_ADD_SHORTCUT = 14;
|
||||
private final static int ID_COPY_EMAIL_TO_CLIPBOARD = 15;
|
||||
|
||||
private int emptyRow = -1;
|
||||
private int settingsNotificationsRow = -1;
|
||||
private int changeNameRow = -1;
|
||||
private int startChatRow = -1;
|
||||
private int compareKeysRow = -1;
|
||||
private int settingsRow = -1;
|
||||
private int settingsShadowRow = -1;
|
||||
|
||||
private int emailHeaderRow = -1;
|
||||
private int emailRow = -1;
|
||||
private int infoRow = -1;
|
||||
private int listShadowRow = -1;
|
||||
|
||||
private int[] memberlistUserIds;
|
||||
private int memberlistHeaderRow = -1;
|
||||
private int memberlistFirstRow = -1;
|
||||
private int memberlistLastRow = -1;
|
||||
private int addMemberRow = -1;
|
||||
private int showQrRow = -1;
|
||||
|
||||
private int emptyRowChat = -1;
|
||||
private int membersSectionRow = -1;
|
||||
private int emptyRowChat2 = -1;
|
||||
|
||||
private int firstMemberRow = -1;
|
||||
private int lastMemberRow = -1;
|
||||
|
||||
private MrChatlist chatlist = new MrChatlist(0);
|
||||
private int chatlistHeaderRow = -1;
|
||||
private int chatlistFirstRow = -1;
|
||||
private int chatlistLastRow = -1;
|
||||
private int startChatRow = -1;
|
||||
|
||||
private int otherShadowRow = -1;
|
||||
private int otherHeaderRow = -1;
|
||||
private int addShortcutRow = -1;
|
||||
private int blockContactRow = -1; // only block, no deletion here: contacts shown here are typically in use; we cannot easily delete them and mrmailbox_delete_contact() will typically fail.
|
||||
// a delete function is available in the contact list, however, where the chance a contact can be deleted is larger
|
||||
private int rowCount = 0;
|
||||
|
||||
private class TopView extends View {
|
||||
@@ -149,22 +157,25 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter.
|
||||
user_id = arguments.getInt("user_id", 0);
|
||||
chat_id = getArguments().getInt("chat_id", 0);
|
||||
if (user_id != 0) {
|
||||
chatlist = MrMailbox.getChatlist(0, null, user_id);
|
||||
|
||||
TLRPC.User user = MrMailbox.getUser(user_id);
|
||||
if (user == null) {
|
||||
return false;
|
||||
}
|
||||
NotificationCenter.getInstance().addObserver(this, NotificationCenter.updateInterfaces);
|
||||
NotificationCenter.getInstance().addObserver(this, NotificationCenter.contactsDidLoaded);
|
||||
|
||||
NotificationCenter.getInstance().addObserver(this, NotificationCenter.dialogsNeedReload);
|
||||
NotificationCenter.getInstance().addObserver(this, NotificationCenter.notificationsSettingsUpdated);
|
||||
NotificationCenter.getInstance().addObserver(this, NotificationCenter.messageSendError);
|
||||
} else if (chat_id != 0) {
|
||||
sortedUserIds = MrMailbox.getChatContacts(chat_id);
|
||||
memberlistUserIds = MrMailbox.getChatContacts(chat_id);
|
||||
|
||||
avatarUpdater = new AvatarUpdater();
|
||||
avatarUpdater.returnOnly = true;
|
||||
avatarUpdater.delegate = new AvatarUpdater.AvatarUpdaterDelegate() {
|
||||
@Override
|
||||
public void didUploadedPhoto(TLRPC.InputFile file, TLRPC.PhotoSize small, TLRPC.PhotoSize big) {
|
||||
if (user_id==0 && chat_id > MrChat.MR_CHAT_ID_LAST_SPECIAL) {
|
||||
if (user_id==0 && chat_id != 0 ) {
|
||||
String nameonly = big.location.volume_id + "_" + big.location.local_id + ".jpg";
|
||||
File fileobj = new File(FileLoader.getInstance().getDirectory(FileLoader.MEDIA_DIR_CACHE), nameonly);
|
||||
String fullpath = fileobj.getAbsolutePath();
|
||||
@@ -191,9 +202,10 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter.
|
||||
NotificationCenter.getInstance().removeObserver(this, NotificationCenter.closeChats);
|
||||
if (user_id != 0) {
|
||||
NotificationCenter.getInstance().removeObserver(this, NotificationCenter.contactsDidLoaded);
|
||||
//MessagesController.getInstance().cancelLoadFullUser(user_id);
|
||||
NotificationCenter.getInstance().removeObserver(this, NotificationCenter.dialogsNeedReload);
|
||||
NotificationCenter.getInstance().removeObserver(this, NotificationCenter.notificationsSettingsUpdated);
|
||||
NotificationCenter.getInstance().removeObserver(this, NotificationCenter.messageSendError);
|
||||
} else if (chat_id != 0) {
|
||||
//NotificationCenter.getInstance().removeObserver(this, NotificationCenter.chatInfoDidLoaded);
|
||||
avatarUpdater.clear();
|
||||
}
|
||||
}
|
||||
@@ -228,73 +240,9 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter.
|
||||
if (id == -1) {
|
||||
finishFragment();
|
||||
}
|
||||
else if( id==ID_COPY_EMAIL_TO_CLIPBOARD )
|
||||
{
|
||||
AndroidUtilities.addToClipboard(MrMailbox.getContact(user_id).getAddr());
|
||||
}
|
||||
else if (id == ID_BLOCK_CONTACT)
|
||||
{
|
||||
if( userBlocked() ) {
|
||||
MrMailbox.blockContact(user_id, 0);
|
||||
finishFragment(); /* got to the parent, this is important eg. when editing blocking in the BlockedUserActivitiy. Moreover, this saves us updating all the states in the profile */
|
||||
}
|
||||
else {
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
|
||||
builder.setMessage(context.getString(R.string.AreYouSureBlockContact));
|
||||
builder.setPositiveButton(R.string.OK, new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialogInterface, int i) {
|
||||
MrMailbox.blockContact(user_id, 1);
|
||||
finishFragment(); /* got to the parent, this is important eg. when editing blocking in the BlockedUserActivitiy. Moreover, this saves us updating all the states in the profile */
|
||||
}
|
||||
});
|
||||
builder.setNegativeButton(R.string.Cancel, null);
|
||||
showDialog(builder.create());
|
||||
}
|
||||
}
|
||||
else if (id == ID_DELETE_CONTACT)
|
||||
{
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
|
||||
builder.setMessage(context.getString(R.string.AreYouSureDeleteContact));
|
||||
builder.setPositiveButton(R.string.OK, new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialogInterface, int i) {
|
||||
if( MrMailbox.deleteContact(user_id)==0 ) {
|
||||
AndroidUtilities.showHint(getParentActivity(), context.getString(R.string.CannotDeleteContact));
|
||||
}
|
||||
else {
|
||||
AndroidUtilities.showDoneHint(getParentActivity());
|
||||
finishFragment();
|
||||
}
|
||||
}
|
||||
});
|
||||
builder.setNegativeButton(R.string.Cancel, null);
|
||||
showDialog(builder.create());
|
||||
}
|
||||
else if (id == ID_ADD_SHORTCUT)
|
||||
{
|
||||
try {
|
||||
// draw avatar into a bitmap
|
||||
int wh = avatarImage.imageReceiver.getImageWidth();
|
||||
Bitmap bitmap = Bitmap.createBitmap(wh, wh, Bitmap.Config.ARGB_8888);
|
||||
bitmap.eraseColor(Color.TRANSPARENT);
|
||||
Canvas canvas = new Canvas(bitmap);
|
||||
avatarImage.imageReceiver.draw(canvas);
|
||||
|
||||
// add shortcut
|
||||
int install_chat_id = chat_id!=0? chat_id : MrMailbox.getChatIdByContactId(user_id);
|
||||
AndroidUtilities.installShortcut(install_chat_id, bitmap);
|
||||
Toast.makeText(getParentActivity(), context.getString(R.string.ShortcutAdded), Toast.LENGTH_LONG).show();
|
||||
|
||||
} catch (Exception e) {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
createActionBarMenu();
|
||||
|
||||
listAdapter = new ListAdapter(context);
|
||||
avatarDrawable = new AvatarDrawable();
|
||||
|
||||
@@ -343,7 +291,8 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter.
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (position == settingsNotificationsRow)
|
||||
|
||||
if (position == settingsRow)
|
||||
{
|
||||
Bundle args = new Bundle();
|
||||
if (chat_id != 0) {
|
||||
@@ -364,8 +313,23 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter.
|
||||
}
|
||||
presentFragment(new ContactAddActivity(args));
|
||||
}
|
||||
else if(position==compareKeysRow)
|
||||
else if( position == emailRow )
|
||||
{
|
||||
final String addr = MrMailbox.getContact(user_id).getAddr();
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity()); // was: BottomSheet.Builder
|
||||
builder.setTitle(addr);
|
||||
CharSequence[] items = new CharSequence[]{ApplicationLoader.applicationContext.getString(R.string.CopyToClipboard)};
|
||||
builder.setItems(items, new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialogInterface, int i) {
|
||||
AndroidUtilities.addToClipboard(addr);
|
||||
AndroidUtilities.showDoneHint(ApplicationLoader.applicationContext);
|
||||
}
|
||||
}
|
||||
);
|
||||
showDialog(builder.create());
|
||||
}
|
||||
else if( position == infoRow ) {
|
||||
String info_str = MrMailbox.getContactEncrInfo(user_id);
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
|
||||
builder.setTitle(R.string.Encryption);
|
||||
@@ -408,7 +372,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter.
|
||||
else if (position == addMemberRow)
|
||||
{
|
||||
Bundle args = new Bundle();
|
||||
args.putInt("do_what", ContactsActivity.ADD_CONTACTS_TO_GROUP);
|
||||
args.putInt("do_what", MrMailbox.getChat(chat_id).isVerified()? ContactsActivity.ADD_CONTACTS_TO_VERIFIED_GROUP : ContactsActivity.ADD_CONTACTS_TO_GROUP);
|
||||
ContactsActivity fragment = new ContactsActivity(args);
|
||||
fragment.setDelegate(new ContactsActivity.ContactsActivityDelegate() {
|
||||
@Override
|
||||
@@ -435,30 +399,86 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter.
|
||||
});
|
||||
presentFragment(fragment);
|
||||
}
|
||||
else if (position >= firstMemberRow && position <= lastMemberRow)
|
||||
else if( position == showQrRow )
|
||||
{
|
||||
int curr_user_index = position - firstMemberRow;
|
||||
if(curr_user_index>=0 && curr_user_index<sortedUserIds.length) {
|
||||
int curr_user_id = sortedUserIds[curr_user_index];
|
||||
if( curr_user_id > MrContact.MR_CONTACT_ID_LAST_SPECIAL ) {
|
||||
Intent intent2 = new Intent(getParentActivity(), QRshowActivity.class);
|
||||
Bundle b = new Bundle();
|
||||
b.putInt("chat_id", chat_id);
|
||||
intent2.putExtras(b);
|
||||
getParentActivity().startActivity(intent2);
|
||||
}
|
||||
else if (position == blockContactRow)
|
||||
{
|
||||
if( userBlocked() ) {
|
||||
MrMailbox.blockContact(user_id, 0);
|
||||
finishFragment(); /* got to the parent, this is important eg. when editing blocking in the BlockedUserActivitiy. Moreover, this saves us updating all the states in the profile */
|
||||
}
|
||||
else {
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
|
||||
builder.setMessage(context.getString(R.string.AreYouSureBlockContact));
|
||||
builder.setPositiveButton(R.string.OK, new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialogInterface, int i) {
|
||||
MrMailbox.blockContact(user_id, 1);
|
||||
finishFragment(); /* got to the parent, this is important eg. when editing blocking in the BlockedUserActivitiy. Moreover, this saves us updating all the states in the profile */
|
||||
}
|
||||
});
|
||||
builder.setNegativeButton(R.string.Cancel, null);
|
||||
showDialog(builder.create());
|
||||
}
|
||||
}
|
||||
else if (position == addShortcutRow)
|
||||
{
|
||||
try {
|
||||
// draw avatar into a bitmap
|
||||
int wh = avatarImage.imageReceiver.getImageWidth();
|
||||
Bitmap bitmap = Bitmap.createBitmap(wh, wh, Bitmap.Config.ARGB_8888);
|
||||
bitmap.eraseColor(Color.TRANSPARENT);
|
||||
Canvas canvas = new Canvas(bitmap);
|
||||
avatarImage.imageReceiver.draw(canvas);
|
||||
|
||||
// add shortcut
|
||||
int install_chat_id = chat_id!=0? chat_id : MrMailbox.getChatIdByContactId(user_id);
|
||||
AndroidUtilities.installShortcut(install_chat_id, bitmap);
|
||||
Toast.makeText(getParentActivity(), context.getString(R.string.ShortcutAdded), Toast.LENGTH_LONG).show();
|
||||
|
||||
} catch (Exception e) {
|
||||
|
||||
}
|
||||
}
|
||||
else if (position >= memberlistFirstRow && position <= memberlistLastRow)
|
||||
{
|
||||
int curr_user_index = position - memberlistFirstRow;
|
||||
if(curr_user_index>=0 && curr_user_index< memberlistUserIds.length) {
|
||||
int curr_user_id = memberlistUserIds[curr_user_index];
|
||||
if( curr_user_id == MrContact.MR_CONTACT_ID_SELF
|
||||
|| curr_user_id > MrContact.MR_CONTACT_ID_LAST_SPECIAL ) {
|
||||
Bundle args = new Bundle();
|
||||
args.putInt("user_id", curr_user_id);
|
||||
presentFragment(new ProfileActivity(args));
|
||||
}
|
||||
}
|
||||
}
|
||||
else if( position >= chatlistFirstRow && position<=chatlistLastRow) {
|
||||
int curr_chatlist_index = position - chatlistFirstRow;
|
||||
if(curr_chatlist_index>=0 && curr_chatlist_index< chatlist.getCnt()) {
|
||||
Bundle args = new Bundle();
|
||||
args.putInt("chat_id", chatlist.getChatByIndex(curr_chatlist_index).getId());
|
||||
presentFragment(new ChatActivity(args));
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
listView.setOnItemLongClickListener(new RecyclerListView.OnItemLongClickListener() {
|
||||
@Override
|
||||
public boolean onItemClick(View view, int position) {
|
||||
if (position >= firstMemberRow && position <= lastMemberRow)
|
||||
if (position >= memberlistFirstRow && position <= memberlistLastRow)
|
||||
{
|
||||
int curr_user_index = position - firstMemberRow;
|
||||
if(curr_user_index>=0 && curr_user_index<sortedUserIds.length)
|
||||
int curr_user_index = position - memberlistFirstRow;
|
||||
if(curr_user_index>=0 && curr_user_index< memberlistUserIds.length)
|
||||
{
|
||||
final int curr_user_id = sortedUserIds[curr_user_index];
|
||||
final int curr_user_id = memberlistUserIds[curr_user_index];
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
|
||||
CharSequence[] items = new CharSequence[]{context.getString(curr_user_id==MrContact.MR_CONTACT_ID_SELF? R.string.LeaveGroup : R.string.RemoveMember)};
|
||||
builder.setItems(items, new DialogInterface.OnClickListener() {
|
||||
@@ -511,7 +531,7 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter.
|
||||
avatarImage.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
if (user_id==0 && chat_id > MrChat.MR_CHAT_ID_LAST_SPECIAL) {
|
||||
if (user_id==0 && chat_id != 0 ) {
|
||||
// show menu to change the group image
|
||||
AlertDialog.Builder builder = new AlertDialog.Builder(getParentActivity());
|
||||
CharSequence[] items;
|
||||
@@ -557,8 +577,8 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter.
|
||||
nameTextView.setTextColor(Theme.ACTION_BAR_TITLE_COLOR);
|
||||
nameTextView.setTextSize(18);
|
||||
nameTextView.setGravity(Gravity.START);
|
||||
nameTextView.setLeftDrawableTopPadding(-AndroidUtilities.dp(1.3f));
|
||||
nameTextView.setRightDrawableTopPadding(-AndroidUtilities.dp(1.3f));
|
||||
nameTextView.setLeftDrawableTopPadding(-AndroidUtilities.dp(1.0f));
|
||||
nameTextView.setRightDrawableTopPadding(-AndroidUtilities.dp(1.0f));
|
||||
nameTextView.setPivotX(0);
|
||||
nameTextView.setPivotY(0);
|
||||
frameLayout.addView(nameTextView, LayoutHelper.createFrame(LayoutHelper.WRAP_CONTENT, LayoutHelper.WRAP_CONTENT, Gravity.START | Gravity.TOP, 118-ANIM_OFF, 0, 0, 0));
|
||||
@@ -699,35 +719,51 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter.
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
public void didReceivedNotification(int id, final Object... args) {
|
||||
boolean reloadChatlist = false, updateList = false;
|
||||
|
||||
if (id == NotificationCenter.updateInterfaces) {
|
||||
reloadChatlist = true;
|
||||
int mask = (Integer) args[0];
|
||||
if (user_id != 0) {
|
||||
if ((mask & MrMailbox.UPDATE_MASK_AVATAR) != 0 || (mask & MrMailbox.UPDATE_MASK_NAME) != 0 || (mask & MrMailbox.UPDATE_MASK_STATUS) != 0) {
|
||||
updateProfileData();
|
||||
}
|
||||
} else if (chat_id != 0) {
|
||||
sortedUserIds = MrMailbox.getChatContacts(chat_id);
|
||||
memberlistUserIds = MrMailbox.getChatContacts(chat_id);
|
||||
updateRowsIds();
|
||||
updateProfileData();
|
||||
listAdapter.notifyDataSetChanged();
|
||||
|
||||
if ((mask & MrMailbox.UPDATE_MASK_AVATAR) != 0 || (mask & MrMailbox.UPDATE_MASK_NAME) != 0 || (mask & MrMailbox.UPDATE_MASK_STATUS) != 0) {
|
||||
if (listView != null) {
|
||||
int count = listView.getChildCount();
|
||||
for (int a = 0; a < count; a++) {
|
||||
View child = listView.getChildAt(a);
|
||||
if (child instanceof UserCell) {
|
||||
((UserCell) child).update();
|
||||
}
|
||||
}
|
||||
}
|
||||
updateList = true;
|
||||
}
|
||||
}
|
||||
} else if (id == NotificationCenter.contactsDidLoaded) {
|
||||
createActionBarMenu();
|
||||
}
|
||||
else if( id == NotificationCenter.dialogsNeedReload||id==NotificationCenter.notificationsSettingsUpdated||id==NotificationCenter.messageSendError ) {
|
||||
reloadChatlist = true;
|
||||
}
|
||||
else if (id == NotificationCenter.contactsDidLoaded) {
|
||||
|
||||
} else if (id == NotificationCenter.closeChats) {
|
||||
removeSelfFromStack();
|
||||
}
|
||||
|
||||
if( reloadChatlist && user_id != 0 ) {
|
||||
chatlist = MrMailbox.getChatlist(0, null, user_id);
|
||||
updateRowsIds();
|
||||
listAdapter.notifyDataSetChanged();
|
||||
updateList = true;
|
||||
}
|
||||
|
||||
if( updateList && listView != null ) {
|
||||
int count = listView.getChildCount();
|
||||
for (int a = 0; a < count; a++) {
|
||||
View child = listView.getChildAt(a);
|
||||
if (child instanceof UserCell) {
|
||||
((UserCell) child).update();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -834,34 +870,90 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter.
|
||||
|
||||
rowCount = 0;
|
||||
|
||||
emptyRow = rowCount++;
|
||||
changeNameRow = -1;
|
||||
settingsRow = -1;
|
||||
settingsShadowRow = -1;
|
||||
|
||||
if( (chat_id!=0 /*&& (chat_id!=MrChat.MR_CHAT_ID_DEADDROP || MrMailbox.getConfigInt("show_deaddrop", 0)!=0)*/)
|
||||
|| MrMailbox.getChatIdByContactId(user_id)!=0 ) {
|
||||
settingsNotificationsRow = rowCount++;
|
||||
emailHeaderRow = -1;
|
||||
emailRow = -1;
|
||||
infoRow = -1;
|
||||
listShadowRow = -1;
|
||||
|
||||
memberlistHeaderRow = -1;
|
||||
memberlistFirstRow = -1;
|
||||
memberlistLastRow = -1;
|
||||
addMemberRow = -1;
|
||||
showQrRow = -1;
|
||||
|
||||
chatlistHeaderRow = -1;
|
||||
chatlistFirstRow = -1;
|
||||
chatlistLastRow = -1;
|
||||
startChatRow = -1;
|
||||
|
||||
otherShadowRow = -1;
|
||||
otherHeaderRow = -1;
|
||||
addShortcutRow = -1;
|
||||
blockContactRow = -1;
|
||||
|
||||
if (user_id != 0) {
|
||||
if( rowCount >= 1 ) { settingsShadowRow = rowCount++; }
|
||||
emailHeaderRow = rowCount++;
|
||||
emailRow = rowCount++;
|
||||
infoRow = rowCount++;
|
||||
}
|
||||
|
||||
if( user_id!=0 || chat_id!=MrChat.MR_CHAT_ID_DEADDROP) {
|
||||
if( chat_id != 0 )
|
||||
{
|
||||
// chat profile
|
||||
if( rowCount >= 1 ) { listShadowRow = rowCount++; }
|
||||
memberlistHeaderRow = rowCount++;
|
||||
|
||||
if( chat_id!=MrChat.MR_CHAT_ID_DEADDROP ) {
|
||||
addMemberRow = rowCount++;
|
||||
}
|
||||
|
||||
if( MrMailbox.getChat(chat_id).isVerified() ) {
|
||||
showQrRow = rowCount++;
|
||||
}
|
||||
|
||||
memberlistFirstRow = rowCount;
|
||||
rowCount += memberlistUserIds.length;
|
||||
memberlistLastRow = rowCount-1;
|
||||
}
|
||||
else if( user_id != 0 )
|
||||
{
|
||||
// user profile
|
||||
if( rowCount >= 1 ) { listShadowRow = rowCount++; }
|
||||
chatlistHeaderRow = rowCount++;
|
||||
|
||||
startChatRow = rowCount++;
|
||||
|
||||
chatlistFirstRow = rowCount;
|
||||
rowCount += chatlist.getCnt();
|
||||
chatlistLastRow = rowCount-1;
|
||||
}
|
||||
|
||||
boolean addHeader = true;
|
||||
|
||||
if( (user_id!=0 && user_id!=MrContact.MR_CONTACT_ID_SELF) || (chat_id!=0 && chat_id!=MrChat.MR_CHAT_ID_DEADDROP)) {
|
||||
if(addHeader) {otherShadowRow = rowCount++; otherHeaderRow = rowCount++; addHeader=false; }
|
||||
changeNameRow = rowCount++;
|
||||
}
|
||||
|
||||
if (user_id != 0) {
|
||||
compareKeysRow = rowCount++;
|
||||
startChatRow = rowCount++;
|
||||
} else if (chat_id != 0 && chat_id!=MrChat.MR_CHAT_ID_DEADDROP ) {
|
||||
addMemberRow = rowCount++;
|
||||
if( (chat_id!=0)
|
||||
|| MrMailbox.getChatIdByContactId(user_id)!=0 ) { // no settings if there is no chat yet
|
||||
if(addHeader) {otherShadowRow = rowCount++; otherHeaderRow = rowCount++; addHeader=false; }
|
||||
settingsRow = rowCount++;
|
||||
}
|
||||
|
||||
if( chat_id != 0 ) {
|
||||
if( rowCount > 1/*first empty row is always added*/ ) {
|
||||
emptyRowChat = rowCount++;
|
||||
membersSectionRow = rowCount++;
|
||||
emptyRowChat2 = rowCount++;
|
||||
}
|
||||
if( chat_id!=0 || MrMailbox.getChatIdByContactId(user_id)!=0 ) {
|
||||
if(addHeader) {otherShadowRow = rowCount++; otherHeaderRow = rowCount++; addHeader=false; }
|
||||
addShortcutRow = rowCount++;
|
||||
}
|
||||
|
||||
firstMemberRow = rowCount;
|
||||
rowCount += sortedUserIds.length;
|
||||
lastMemberRow = rowCount-1;
|
||||
if( user_id != 0 && user_id != MrContact.MR_CONTACT_ID_SELF ) {
|
||||
if(addHeader) {otherShadowRow = rowCount++; otherHeaderRow = rowCount++; addHeader=false; }
|
||||
blockContactRow = rowCount++;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -888,17 +980,32 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter.
|
||||
if( user_id!=0 ) {
|
||||
mrContact = MrMailbox.getContact(user_id);
|
||||
newString = mrContact.getDisplayName();
|
||||
newString2 = mrContact.getAddr();
|
||||
if( mrContact.isVerified() ) {
|
||||
newString2 = ApplicationLoader.applicationContext.getString(R.string.VerifiedContact);
|
||||
}
|
||||
else {
|
||||
newString2 = ApplicationLoader.applicationContext.getString(R.string.Contact);
|
||||
}
|
||||
}
|
||||
else {
|
||||
mrChat = MrMailbox.getChat(chat_id);
|
||||
newString = mrChat.getName();
|
||||
newString2 = mrChat.getSubtitle();
|
||||
if( mrChat.isVerified() ) {
|
||||
newString2 = ApplicationLoader.applicationContext.getString(R.string.VerifiedGroup);
|
||||
}
|
||||
else {
|
||||
newString2 = ApplicationLoader.applicationContext.getString(R.string.Group);
|
||||
}
|
||||
}
|
||||
|
||||
if (!nameTextView.getText().equals(newString)) {
|
||||
nameTextView.setText(newString);
|
||||
}
|
||||
|
||||
if( (mrChat!=null? mrChat.isVerified() : mrContact.isVerified()) ) {
|
||||
nameTextView.setRightDrawable(R.drawable.verified);
|
||||
}
|
||||
|
||||
if (!subtitleTextView.getText().equals(newString2)) {
|
||||
subtitleTextView.setText(newString2);
|
||||
}
|
||||
@@ -906,25 +1013,6 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter.
|
||||
ContactsController.setupAvatar(avatarImage, avatarImage.imageReceiver, avatarDrawable, mrContact, mrChat);
|
||||
}
|
||||
|
||||
private void createActionBarMenu() {
|
||||
ActionBarMenu menu = actionBar.createMenu();
|
||||
menu.clearItems();
|
||||
|
||||
ActionBarMenuItem item = menu.addItem(10, R.drawable.ic_ab_other);
|
||||
|
||||
if( chat_id!=0 || MrMailbox.getChatIdByContactId(user_id)!=0 ) {
|
||||
item.addSubItem(ID_ADD_SHORTCUT, ApplicationLoader.applicationContext.getString(R.string.AddShortcut), 0);
|
||||
}
|
||||
|
||||
if (user_id != 0) {
|
||||
item.addSubItem(ID_COPY_EMAIL_TO_CLIPBOARD, ApplicationLoader.applicationContext.getString(R.string.CopyToClipboard), 0);
|
||||
item.addSubItem(ID_BLOCK_CONTACT, userBlocked()? ApplicationLoader.applicationContext.getString(R.string.UnblockContact) : ApplicationLoader.applicationContext.getString(R.string.BlockContact), 0);
|
||||
item.addSubItem(ID_DELETE_CONTACT, ApplicationLoader.applicationContext.getString(R.string.DeleteContact), 0);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDialogDismiss(Dialog dialog) {
|
||||
if (listView != null) {
|
||||
@@ -950,38 +1038,30 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter.
|
||||
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
|
||||
View view = null;
|
||||
switch (viewType) {
|
||||
case typeEmpty:
|
||||
view = new EmptyCell(mContext);
|
||||
case ROWTYPE_TEXT_SETTINGS:
|
||||
view = new TextSettingsCell(mContext);
|
||||
break;
|
||||
case typeTextCell:
|
||||
view = new TextCell(mContext) {
|
||||
@Override
|
||||
public boolean onTouchEvent(MotionEvent event) {
|
||||
if (Build.VERSION.SDK_INT >= 21 && getBackground() != null) {
|
||||
if (event.getAction() == MotionEvent.ACTION_DOWN || event.getAction() == MotionEvent.ACTION_MOVE) {
|
||||
getBackground().setHotspot(event.getX(), event.getY());
|
||||
}
|
||||
}
|
||||
return super.onTouchEvent(event);
|
||||
}
|
||||
};
|
||||
|
||||
case ROWTYPE_CONTACT:
|
||||
view = new UserCell(mContext, 0);
|
||||
break;
|
||||
case typeContactCell:
|
||||
view = new UserCell(mContext, 61, 0) {
|
||||
@Override
|
||||
public boolean onTouchEvent(MotionEvent event) {
|
||||
if (Build.VERSION.SDK_INT >= 21 && getBackground() != null) {
|
||||
if (event.getAction() == MotionEvent.ACTION_DOWN || event.getAction() == MotionEvent.ACTION_MOVE) {
|
||||
getBackground().setHotspot(event.getX(), event.getY());
|
||||
}
|
||||
}
|
||||
return super.onTouchEvent(event);
|
||||
}
|
||||
};
|
||||
|
||||
case ROWTYPE_CHAT:
|
||||
view = new ChatlistCell(mContext);
|
||||
break;
|
||||
case typeSection:
|
||||
|
||||
case ROWTYPE_SHADOW:
|
||||
view = new ShadowSectionCell(mContext);
|
||||
break;
|
||||
|
||||
case ROWTYPE_INFO:
|
||||
view = new TextInfoCell(mContext);
|
||||
break;
|
||||
|
||||
case ROWTYPE_HEADER:
|
||||
view = new HeaderCell(mContext);
|
||||
view.setBackgroundColor(0xffffffff);
|
||||
break;
|
||||
}
|
||||
view.setLayoutParams(new RecyclerView.LayoutParams(RecyclerView.LayoutParams.MATCH_PARENT, RecyclerView.LayoutParams.WRAP_CONTENT));
|
||||
return new Holder(view);
|
||||
@@ -991,55 +1071,98 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter.
|
||||
public void onBindViewHolder(RecyclerView.ViewHolder holder, int i) {
|
||||
boolean checkBackground = true;
|
||||
switch (holder.getItemViewType()) {
|
||||
case typeEmpty:
|
||||
if (i == emptyRowChat || i == emptyRowChat2) {
|
||||
((EmptyCell) holder.itemView).setHeight(AndroidUtilities.dp(8));
|
||||
} else {
|
||||
((EmptyCell) holder.itemView).setHeight(AndroidUtilities.dp(14));
|
||||
}
|
||||
break;
|
||||
case typeTextCell:
|
||||
TextCell textCell = (TextCell) holder.itemView;
|
||||
case ROWTYPE_TEXT_SETTINGS:
|
||||
TextSettingsCell textCell = (TextSettingsCell) holder.itemView;
|
||||
textCell.setTextColor(0xff212121);
|
||||
if (i == changeNameRow) {
|
||||
textCell.setText(mContext.getString(R.string.EditName));
|
||||
} else if (i == compareKeysRow) {
|
||||
textCell.setText(mContext.getString(R.string.Encryption));
|
||||
textCell.setText(mContext.getString(R.string.EditName), true);
|
||||
} else if (i == startChatRow) {
|
||||
textCell.setText(mContext.getString(R.string.NewChat));
|
||||
} else if (i == settingsNotificationsRow) {
|
||||
textCell.setTextAndIcon(mContext.getString(R.string.Settings), R.drawable.menu_settings);
|
||||
textCell.setText(mContext.getString(R.string.NewChat), false);
|
||||
} else if (i == settingsRow) {
|
||||
textCell.setText(mContext.getString(R.string.NotificationsAndSounds), true);
|
||||
} else if (i == addMemberRow) {
|
||||
textCell.setText(mContext.getString(R.string.AddMember));
|
||||
textCell.setText(mContext.getString(R.string.AddMember), showQrRow!=-1);
|
||||
}
|
||||
else if( i == showQrRow ) {
|
||||
textCell.setText(mContext.getString(R.string.QrShowInviteCode), false);
|
||||
}
|
||||
else if( i==emailRow ) {
|
||||
textCell.setText(MrMailbox.getContact(user_id).getAddr(), true);
|
||||
}
|
||||
else if( i==infoRow ) {
|
||||
textCell.setText(mContext.getString(R.string.Encryption), false);
|
||||
}
|
||||
else if( i == addShortcutRow ) {
|
||||
textCell.setText(mContext.getString(R.string.AddShortcut), true);
|
||||
}
|
||||
else if( i == blockContactRow ) {
|
||||
textCell.setText(userBlocked()? mContext.getString(R.string.UnblockContact) : mContext.getString(R.string.BlockContact), true);
|
||||
}
|
||||
break;
|
||||
case typeContactCell:
|
||||
|
||||
case ROWTYPE_CONTACT:
|
||||
UserCell userCell = ((UserCell) holder.itemView);
|
||||
int curr_user_index = i - firstMemberRow;
|
||||
if(curr_user_index>=0 && curr_user_index<sortedUserIds.length) {
|
||||
int curr_user_id = sortedUserIds[curr_user_index];
|
||||
int curr_user_index = i - memberlistFirstRow;
|
||||
if(curr_user_index>=0 && curr_user_index< memberlistUserIds.length) {
|
||||
int curr_user_id = memberlistUserIds[curr_user_index];
|
||||
MrContact mrContact = MrMailbox.getContact(curr_user_id);
|
||||
userCell.setData(mrContact, curr_user_index==0? R.drawable.menu_newgroup : 0);
|
||||
userCell.setData(mrContact);
|
||||
}
|
||||
break;
|
||||
|
||||
case ROWTYPE_CHAT:
|
||||
ChatlistCell chatlistCell = ((ChatlistCell) holder.itemView);
|
||||
int curr_chatlist_index = i - chatlistFirstRow;
|
||||
if(curr_chatlist_index>=0 && curr_chatlist_index< chatlist.getCnt()) {
|
||||
chatlistCell.useSeparator = (curr_chatlist_index != chatlist.getCnt() - 1);
|
||||
MrChat mrChat = chatlist.getChatByIndex(curr_chatlist_index);
|
||||
MrLot mrSummary = chatlist.getSummaryByIndex(curr_chatlist_index, mrChat);
|
||||
|
||||
chatlistCell.setChat(mrChat, mrSummary, -1,
|
||||
true /*always show unread count*/);
|
||||
}
|
||||
break;
|
||||
|
||||
case ROWTYPE_INFO:
|
||||
TextInfoCell infoCell = ((TextInfoCell) holder.itemView);
|
||||
infoCell.setText("foo");
|
||||
infoCell.setBackgroundResource(R.drawable.greydivider);
|
||||
checkBackground = false;
|
||||
break;
|
||||
|
||||
case ROWTYPE_HEADER:
|
||||
HeaderCell headerCell = ((HeaderCell) holder.itemView);
|
||||
if( i ==emailHeaderRow ) {
|
||||
headerCell.setText(mContext.getString(R.string.EmailAddress));
|
||||
}
|
||||
else if( i ==chatlistHeaderRow ) {
|
||||
headerCell.setText(mContext.getString(R.string.SharedChats));
|
||||
}
|
||||
else if( i==memberlistHeaderRow) {
|
||||
headerCell.setText(MrMailbox.getChat(chat_id).getSubtitle());
|
||||
}
|
||||
else if( i ==otherHeaderRow ) {
|
||||
headerCell.setText(mContext.getString(R.string.Settings));
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
checkBackground = false;
|
||||
break;
|
||||
}
|
||||
|
||||
if (checkBackground) {
|
||||
boolean enabled = false;
|
||||
if (user_id != 0) {
|
||||
enabled = i == settingsNotificationsRow
|
||||
|| i == changeNameRow
|
||||
|| i == compareKeysRow
|
||||
|| i == startChatRow;
|
||||
} else if (chat_id != 0) {
|
||||
enabled = i == settingsNotificationsRow
|
||||
|| i == changeNameRow
|
||||
|| i== compareKeysRow
|
||||
|| i == addMemberRow
|
||||
|| (i >= firstMemberRow && i <= lastMemberRow);
|
||||
}
|
||||
boolean enabled =
|
||||
i == settingsRow
|
||||
|| i == changeNameRow
|
||||
|| i == emailRow
|
||||
|| i == infoRow
|
||||
|| i == startChatRow
|
||||
|| i == addMemberRow
|
||||
|| i == showQrRow
|
||||
|| (i >= chatlistFirstRow && i <= chatlistLastRow)
|
||||
|| (i >= memberlistFirstRow && i <= memberlistLastRow);
|
||||
|
||||
if (enabled) {
|
||||
if (holder.itemView.getBackground() == null) {
|
||||
holder.itemView.setBackgroundResource(R.drawable.list_selector);
|
||||
@@ -1059,14 +1182,18 @@ public class ProfileActivity extends BaseFragment implements NotificationCenter.
|
||||
|
||||
@Override
|
||||
public int getItemViewType(int i) {
|
||||
if (i == emptyRow || i == emptyRowChat || i == emptyRowChat2) {
|
||||
return typeEmpty;
|
||||
} else if ( i == changeNameRow || i==compareKeysRow || i==startChatRow || i == settingsNotificationsRow || i == addMemberRow) {
|
||||
return typeTextCell;
|
||||
} else if (i >= firstMemberRow && i <= lastMemberRow) {
|
||||
return typeContactCell;
|
||||
} else if(i==membersSectionRow) {
|
||||
return typeSection;
|
||||
if ( i == changeNameRow || i==startChatRow || i == settingsRow || i == addMemberRow || i == showQrRow || i==emailRow || i==infoRow
|
||||
|| i==addShortcutRow || i==blockContactRow ) {
|
||||
return ROWTYPE_TEXT_SETTINGS;
|
||||
} else if (i >= memberlistFirstRow && i <= memberlistLastRow) {
|
||||
return ROWTYPE_CONTACT;
|
||||
} else if (i >= chatlistFirstRow && i <= chatlistLastRow) {
|
||||
return ROWTYPE_CHAT;
|
||||
} else if(i== listShadowRow || i==settingsShadowRow || i==otherShadowRow ) {
|
||||
return ROWTYPE_SHADOW;
|
||||
}
|
||||
else if(i==chatlistHeaderRow || i==memberlistHeaderRow || i==emailHeaderRow|| i==otherHeaderRow ) {
|
||||
return ROWTYPE_HEADER;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -81,7 +81,7 @@ public class ProfileNotificationsActivity extends BaseFragment implements Notifi
|
||||
super(args);
|
||||
dialog_id = args.getInt("chat_id");
|
||||
m_mrChat = MrMailbox.getChat(dialog_id);
|
||||
m_isGroupChat = m_mrChat.getType()== MrChat.MR_CHAT_GROUP;
|
||||
m_isGroupChat = m_mrChat.isGroup();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -113,8 +113,7 @@ public class ProfileNotificationsActivity extends BaseFragment implements Notifi
|
||||
@Override
|
||||
public View createView(final Context context) {
|
||||
actionBar.setBackButtonImage(R.drawable.ic_ab_back);
|
||||
actionBar.setAllowOverlayTitle(true);
|
||||
actionBar.setTitle(String.format(context.getString(R.string.SettingsFor), m_mrChat.getName()));
|
||||
actionBar.setTitle(context.getString(R.string.NotificationsAndSounds));
|
||||
actionBar.setActionBarMenuOnItemClick(new ActionBar.ActionBarMenuOnItemClick() {
|
||||
@Override
|
||||
public void onItemClick(int id) {
|
||||
@@ -543,7 +542,7 @@ public class ProfileNotificationsActivity extends BaseFragment implements Notifi
|
||||
if (view == null) {
|
||||
view = new HeaderCell(mContext);
|
||||
}
|
||||
((HeaderCell) view).setText(mContext.getString(R.string.NotificationsAndSounds));
|
||||
((HeaderCell) view).setText(String.format(mContext.getString(R.string.SettingsFor), m_mrChat.getName()));
|
||||
}
|
||||
else if (type == TYPE_TEXTSETTINGS) {
|
||||
if (view == null) {
|
||||
|
||||
@@ -0,0 +1,150 @@
|
||||
package com.b44t.messenger;
|
||||
|
||||
import android.Manifest;
|
||||
import android.app.ActionBar;
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.v4.app.ActivityCompat;
|
||||
import android.support.v4.content.ContextCompat;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.MenuItem;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.google.zxing.integration.android.IntentIntegrator;
|
||||
import com.google.zxing.integration.android.IntentResult;
|
||||
import com.journeyapps.barcodescanner.CaptureManager;
|
||||
import com.journeyapps.barcodescanner.CompoundBarcodeView;
|
||||
|
||||
public class QRscanActivity extends AppCompatActivity {
|
||||
private CaptureManager capture;
|
||||
private CompoundBarcodeView barcodeScannerView;
|
||||
|
||||
public static final int MY_PERMISSIONS_REQUEST_CAMERA = 42;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
setContentView(R.layout.activity_qrscan);
|
||||
|
||||
assert getSupportActionBar() != null;
|
||||
getSupportActionBar().setTitle(R.string.QrScan);
|
||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
|
||||
barcodeScannerView = (CompoundBarcodeView)findViewById(R.id.zxing_barcode_scanner);
|
||||
barcodeScannerView.setStatusText(getString(R.string.QrScanHint)+"\n ");
|
||||
|
||||
if (savedInstanceState != null) {
|
||||
init(barcodeScannerView, getIntent(), savedInstanceState);
|
||||
}
|
||||
|
||||
// check Android 6 permission
|
||||
if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA)
|
||||
== PackageManager.PERMISSION_GRANTED) {
|
||||
init(barcodeScannerView, getIntent(), null);
|
||||
} else {
|
||||
ActivityCompat.requestPermissions(this,
|
||||
new String[]{Manifest.permission.CAMERA},
|
||||
MY_PERMISSIONS_REQUEST_CAMERA);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(MenuItem item) {
|
||||
super.onOptionsItemSelected(item);
|
||||
|
||||
switch (item.getItemId()) {
|
||||
case android.R.id.home: finish(); return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRequestPermissionsResult(int requestCode, @NonNull String permissions[],
|
||||
@NonNull int[] grantResults) {
|
||||
switch (requestCode) {
|
||||
case MY_PERMISSIONS_REQUEST_CAMERA: {
|
||||
if (grantResults.length > 0
|
||||
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
|
||||
// permission was granted
|
||||
init(barcodeScannerView, getIntent(), null);
|
||||
} else {
|
||||
setResult(Activity.RESULT_CANCELED);
|
||||
finish();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void init(CompoundBarcodeView barcodeScannerView, Intent intent, Bundle savedInstanceState) {
|
||||
capture = new CaptureManager(this, barcodeScannerView);
|
||||
capture.initializeFromIntent(intent, savedInstanceState);
|
||||
capture.decode();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onResume() {
|
||||
super.onResume();
|
||||
if (capture != null) {
|
||||
capture.onResume();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPause() {
|
||||
super.onPause();
|
||||
if (capture != null) {
|
||||
capture.onPause();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDestroy() {
|
||||
super.onDestroy();
|
||||
if (capture != null) {
|
||||
capture.onDestroy();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onSaveInstanceState(Bundle outState) {
|
||||
super.onSaveInstanceState(outState);
|
||||
if (capture != null) {
|
||||
capture.onSaveInstanceState(outState);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onKeyDown(int keyCode, KeyEvent event) {
|
||||
return barcodeScannerView.onKeyDown(keyCode, event) || super.onKeyDown(keyCode, event);
|
||||
}
|
||||
|
||||
/**
|
||||
* Copied from older Barcode Scanner Integration library
|
||||
*
|
||||
* IntentIntegrator for the V4 Android compatibility package.
|
||||
*
|
||||
* @author Lachezar Dobrev
|
||||
*/
|
||||
/*public final class IntentIntegratorSupportV4 extends IntentIntegrator {
|
||||
|
||||
private final Fragment mFragment;
|
||||
|
||||
public IntentIntegratorSupportV4(Fragment fragment) {
|
||||
super(fragment.getActivity());
|
||||
this.mFragment = fragment;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void startActivityForResult(Intent intent, int code) {
|
||||
mFragment.startActivityForResult(intent, code);
|
||||
}
|
||||
|
||||
}
|
||||
*/
|
||||
}
|
||||
@@ -0,0 +1,171 @@
|
||||
package com.b44t.messenger;
|
||||
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.BitmapFactory;
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.Paint;
|
||||
import android.graphics.Rect;
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.view.MenuItem;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.google.zxing.BarcodeFormat;
|
||||
import com.google.zxing.EncodeHintType;
|
||||
import com.google.zxing.MultiFormatWriter;
|
||||
import com.google.zxing.WriterException;
|
||||
import com.google.zxing.common.BitMatrix;
|
||||
|
||||
import java.util.Hashtable;
|
||||
|
||||
public class QRshowActivity extends AppCompatActivity implements NotificationCenter.NotificationCenterDelegate {
|
||||
|
||||
public final static int WHITE = 0xFFFFFFFF;
|
||||
public final static int BLACK = 0xFF000000;
|
||||
public final static int WIDTH = 400;
|
||||
public final static int HEIGHT = 400;
|
||||
|
||||
public int num_joiners;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_qrshow);
|
||||
|
||||
Bundle b = getIntent().getExtras();
|
||||
int chat_id = 0;
|
||||
if(b != null) {
|
||||
chat_id = b.getInt("chat_id");
|
||||
}
|
||||
|
||||
assert getSupportActionBar() != null;
|
||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
|
||||
String hint = "";
|
||||
if( chat_id != 0 ) {
|
||||
// verified-group
|
||||
String groupName = MrMailbox.getChat(chat_id).getName();
|
||||
hint = String.format(ApplicationLoader.applicationContext.getString(R.string.QrJoinVerifiedGroupHint), groupName);
|
||||
getSupportActionBar().setTitle(groupName);
|
||||
getSupportActionBar().setSubtitle(R.string.QrJoinVerifiedGroupTitle);
|
||||
}
|
||||
else {
|
||||
// verify-contact
|
||||
String selfName = MrMailbox.getConfig("displayname", ""); // we cannot use MrContact.getDisplayName() as this would result in "Me" instead of
|
||||
String nameNaddr = "";
|
||||
if( selfName.isEmpty() ) {
|
||||
selfName = MrMailbox.getConfig("addr", "unknown");
|
||||
nameNaddr = selfName;
|
||||
}
|
||||
else {
|
||||
nameNaddr = String.format("%s (%s)", selfName, MrMailbox.getConfig("addr", ""));
|
||||
}
|
||||
hint = String.format(ApplicationLoader.applicationContext.getString(R.string.QrVerifyContactHint), nameNaddr);
|
||||
getSupportActionBar().setTitle(selfName);
|
||||
getSupportActionBar().setSubtitle(R.string.QrVerifyContactTitle);
|
||||
}
|
||||
TextView hintBelowQr = (TextView) findViewById(R.id.qrShowHint);
|
||||
hintBelowQr.setText(AndroidUtilities.replaceTags(hint));
|
||||
|
||||
|
||||
num_joiners = 0;
|
||||
|
||||
ImageView imageView = (ImageView) findViewById(R.id.qrImage);
|
||||
try {
|
||||
Bitmap bitmap = encodeAsBitmap(MrMailbox.getSecurejoinQr(chat_id));
|
||||
imageView.setImageBitmap(bitmap);
|
||||
} catch (WriterException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
NotificationCenter.getInstance().addObserver(this, NotificationCenter.secureJoinInviterProgress);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDestroy() {
|
||||
super.onDestroy();
|
||||
NotificationCenter.getInstance().removeObserver(this, NotificationCenter.secureJoinInviterProgress);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(MenuItem item) {
|
||||
super.onOptionsItemSelected(item);
|
||||
|
||||
switch (item.getItemId()) {
|
||||
case android.R.id.home: finish(); return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
Bitmap encodeAsBitmap(String str) throws WriterException {
|
||||
BitMatrix result;
|
||||
try {
|
||||
Hashtable<EncodeHintType, String> hints = new Hashtable<EncodeHintType, String>();
|
||||
hints.put(EncodeHintType.ERROR_CORRECTION, "8");
|
||||
result = new MultiFormatWriter().encode(str,
|
||||
BarcodeFormat.QR_CODE, WIDTH, HEIGHT, null);
|
||||
} catch (IllegalArgumentException iae) {
|
||||
// Unsupported format
|
||||
return null;
|
||||
}
|
||||
|
||||
int w = result.getWidth();
|
||||
int h = result.getHeight();
|
||||
int[] pixels = new int[w * h];
|
||||
for (int y = 0; y < h; y++) {
|
||||
int offset = y * w;
|
||||
for (int x = 0; x < w; x++) {
|
||||
pixels[offset + x] = result.get(x, y) ? BLACK : WHITE;
|
||||
}
|
||||
}
|
||||
|
||||
Bitmap bitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
|
||||
bitmap.setPixels(pixels, 0, w, 0, 0, w, h);
|
||||
|
||||
if( MrMailbox.getConfigInt("qr_overlay_logo", 1)!=0 ) {
|
||||
Bitmap overlay = BitmapFactory.decodeResource(ApplicationLoader.applicationContext.getResources(), R.drawable.qr_overlay);
|
||||
putOverlay(bitmap, overlay);
|
||||
}
|
||||
|
||||
return bitmap;
|
||||
}
|
||||
|
||||
public void putOverlay(Bitmap bitmap, Bitmap overlay) {
|
||||
int bw = bitmap.getWidth();
|
||||
int bh = bitmap.getHeight();
|
||||
int ow = bw/6;
|
||||
int oh = bh/6;
|
||||
|
||||
Canvas canvas = new Canvas(bitmap);
|
||||
Paint paint = new Paint(Paint.FILTER_BITMAP_FLAG);
|
||||
canvas.drawBitmap(overlay, null, new Rect(bw/2-ow/2, bh/2-oh/2, bw/2+ow/2, bh/2+oh/2), paint);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void didReceivedNotification(int id, Object... args) {
|
||||
if( id==NotificationCenter.secureJoinInviterProgress) {
|
||||
int contact_id = (Integer)args[0];
|
||||
int step = (Integer)args[1];
|
||||
String msg = null;
|
||||
if( step == 3) {
|
||||
msg = String.format(ApplicationLoader.applicationContext.getString(R.string.OobSecureJoinRequested), MrMailbox.getContact(contact_id).getNameNAddr());
|
||||
num_joiners++;
|
||||
}
|
||||
else if( step == 6 ){
|
||||
msg = String.format(ApplicationLoader.applicationContext.getString(R.string.OobAddrVerified), MrMailbox.getContact(contact_id).getNameNAddr());
|
||||
num_joiners--;
|
||||
}
|
||||
|
||||
if( msg != null ) {
|
||||
AndroidUtilities.showHint(ApplicationLoader.applicationContext, msg);
|
||||
}
|
||||
|
||||
if( step == 6 && num_joiners <= 0 ) {
|
||||
finish();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -201,7 +201,6 @@ public class SettingsAccountFragment extends BaseFragment implements Notificatio
|
||||
actionBar.setBackButtonImage(R.drawable.ic_close_white);
|
||||
}
|
||||
|
||||
actionBar.setAllowOverlayTitle(true);
|
||||
actionBar.setTitle(context.getString(R.string.AccountSettings));
|
||||
actionBar.setActionBarMenuOnItemClick(new ActionBar.ActionBarMenuOnItemClick() {
|
||||
@Override
|
||||
@@ -345,7 +344,7 @@ public class SettingsAccountFragment extends BaseFragment implements Notificatio
|
||||
progressDialog.setButton(DialogInterface.BUTTON_NEGATIVE, ApplicationLoader.applicationContext.getString(R.string.Cancel), new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
MrMailbox.configureCancel();
|
||||
MrMailbox.stopOngoingProcess();
|
||||
}
|
||||
});
|
||||
progressDialog.show();
|
||||
|
||||
@@ -44,6 +44,9 @@ import android.widget.FrameLayout;
|
||||
import android.widget.ListView;
|
||||
import android.widget.NumberPicker;
|
||||
|
||||
import com.b44t.messenger.ActionBar.ActionBarMenu;
|
||||
import com.b44t.messenger.ActionBar.ActionBarMenuItem;
|
||||
import com.b44t.messenger.Cells.TextInfoCell;
|
||||
import com.b44t.messenger.Components.BaseFragmentAdapter;
|
||||
import com.b44t.messenger.Cells.HeaderCell;
|
||||
import com.b44t.messenger.Cells.ShadowSectionCell;
|
||||
@@ -68,11 +71,18 @@ public class SettingsAdvFragment extends BaseFragment implements NotificationCen
|
||||
private int sendByEnterRow;
|
||||
private int raiseToSpeakRow;
|
||||
private int blockedRow;
|
||||
private int e2eEncryptionRow;
|
||||
private int settingsShadowRow;
|
||||
|
||||
private int imexHeaderRow;
|
||||
private int e2eHeaderRow;
|
||||
private int e2eEncryptionRow;
|
||||
private int initiateKeyTransferRow;
|
||||
private int e2eInfoRow;
|
||||
|
||||
private int otherHeaderRow;
|
||||
private int passcodeRow;
|
||||
private int manageKeysRow;
|
||||
private int labsEnableQrRow;
|
||||
private int labsQrOverlayLogoRow;
|
||||
private int backupRow;
|
||||
private int backupShadowRow;
|
||||
private int rowCount;
|
||||
@@ -81,7 +91,8 @@ public class SettingsAdvFragment extends BaseFragment implements NotificationCen
|
||||
private static final int ROWTYPE_TEXT_SETTINGS = 1;
|
||||
private static final int ROWTYPE_CHECK = 2;
|
||||
private static final int ROWTYPE_HEADER = 3;
|
||||
private static final int ROWTYPE_COUNT = 4;
|
||||
private static final int ROWTYPE_INFO = 4;
|
||||
private static final int ROWTYPE_COUNT = 5;
|
||||
|
||||
private ListView listView;
|
||||
|
||||
@@ -101,26 +112,45 @@ public class SettingsAdvFragment extends BaseFragment implements NotificationCen
|
||||
NotificationCenter.getInstance().addObserver(this, NotificationCenter.imexProgress);
|
||||
NotificationCenter.getInstance().addObserver(this, NotificationCenter.imexFileWritten);
|
||||
|
||||
// important advances options that are typically used
|
||||
rowCount = 0;
|
||||
accountSettingsRow = rowCount++;
|
||||
accountSettingsRow = rowCount++;
|
||||
blockedRow = rowCount++;
|
||||
settingsShadowRow = rowCount++;
|
||||
|
||||
// autocrypt options
|
||||
e2eHeaderRow = rowCount++;
|
||||
initiateKeyTransferRow = rowCount++;
|
||||
e2eEncryptionRow = rowCount++;
|
||||
e2eInfoRow = rowCount++;
|
||||
|
||||
// all misc., labs and other infrequently used options should go to the "other" area;
|
||||
// this area may get as long as needed, all garbage options go here.
|
||||
// for simplicity, we do not hide discouraged/supported options anywhere else.
|
||||
otherHeaderRow = rowCount++;
|
||||
passcodeRow = rowCount++;
|
||||
autoplayGifsRow = rowCount++;
|
||||
textSizeRow = rowCount++; // for now, we have the font size in the advanced settings; this is because the numberical selection is a little bit weird and does only affect the message text. It would be better to use the font size defined by the system with "sp" (Scale-independent Pixels which included the user's font size preference)
|
||||
sendByEnterRow = rowCount++;
|
||||
raiseToSpeakRow = rowCount++; // outgoing message
|
||||
showUnknownSendersRow = -1;// rowCount++;
|
||||
if (Build.VERSION.SDK_INT >= 23) {
|
||||
directShareRow = -1; // for now, seems not really to work, however, in T'gram it does
|
||||
}
|
||||
else {
|
||||
directShareRow = -1;
|
||||
}
|
||||
autoplayGifsRow = rowCount++;
|
||||
textSizeRow = rowCount++; // for now, we have the font size in the advanced settings; this is because the numberical selection is a little bit weird and does only affect the message text. It would be better to use the font size defined by the system with "sp" (Scale-independent Pixels which included the user's font size preference)
|
||||
showUnknownSendersRow = -1;// rowCount++;
|
||||
sendByEnterRow = rowCount++;
|
||||
raiseToSpeakRow = rowCount++; // outgoing message
|
||||
cacheRow = -1;// for now, the - non-functional - page is reachable by the "storage settings" in the "android App Settings" only
|
||||
blockedRow = rowCount++;
|
||||
e2eEncryptionRow = rowCount++;
|
||||
settingsShadowRow = rowCount++;
|
||||
|
||||
imexHeaderRow = rowCount++;
|
||||
manageKeysRow = rowCount++;
|
||||
labsEnableQrRow = rowCount++;
|
||||
|
||||
if( MrMailbox.getConfigInt("qr_enabled", 0) != 0 ) {
|
||||
labsQrOverlayLogoRow = rowCount++;
|
||||
}
|
||||
else {
|
||||
labsQrOverlayLogoRow = -1;
|
||||
}
|
||||
|
||||
backupRow = rowCount++;
|
||||
backupShadowRow = rowCount++;
|
||||
|
||||
@@ -140,7 +170,6 @@ public class SettingsAdvFragment extends BaseFragment implements NotificationCen
|
||||
{
|
||||
// create action bar
|
||||
actionBar.setBackButtonImage(R.drawable.ic_ab_back);
|
||||
actionBar.setAllowOverlayTitle(true);
|
||||
actionBar.setTitle(ApplicationLoader.applicationContext.getString(R.string.AdvancedSettings));
|
||||
actionBar.setActionBarMenuOnItemClick(new ActionBar.ActionBarMenuOnItemClick() {
|
||||
@Override
|
||||
@@ -192,6 +221,34 @@ public class SettingsAdvFragment extends BaseFragment implements NotificationCen
|
||||
if (view instanceof TextCheckCell) {
|
||||
((TextCheckCell) view).setChecked(MediaController.getInstance().canDirectShare());
|
||||
}
|
||||
} else if(i == labsEnableQrRow) {
|
||||
if( MrMailbox.getConfigInt("qr_enabled", 0)!=0 ) {
|
||||
MrMailbox.setConfigInt("qr_enabled", 0);
|
||||
// restart activity, this includes the chatlist
|
||||
Intent intent = getParentActivity().getIntent();
|
||||
getParentActivity().finish();
|
||||
getParentActivity().startActivity(intent);
|
||||
}
|
||||
else {
|
||||
AlertDialog.Builder builder1 = new AlertDialog.Builder(getParentActivity());
|
||||
builder1.setTitle("Labs: QR code options");
|
||||
builder1.setMessage("With the QR code options you can easily connect to other Delta Chat users by just scanning a QR code. Moverover, this securely transfers the encryption keys in both directions and allows the creation of verified groups.\n\nStay tuned for more information about this on the mailing ist :)\n\nDo you want to enable this experimental feature that may still contain issues?");
|
||||
builder1.setNegativeButton(R.string.Cancel, null);
|
||||
builder1.setPositiveButton(R.string.OK, new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
MrMailbox.setConfigInt("qr_enabled", 1);
|
||||
// restart activity, this includes the chatlist
|
||||
Intent intent = getParentActivity().getIntent();
|
||||
getParentActivity().finish();
|
||||
getParentActivity().startActivity(intent);
|
||||
}
|
||||
});
|
||||
showDialog(builder1.create());
|
||||
}
|
||||
}
|
||||
else if( i == labsQrOverlayLogoRow ) {
|
||||
MrMailbox.setConfigInt("qr_overlay_logo", MrMailbox.getConfigInt("qr_overlay_logo", 1)!=0? 0 : 1);
|
||||
}
|
||||
else if (i == blockedRow) {
|
||||
presentFragment(new BlockedUsersActivity());
|
||||
@@ -232,7 +289,64 @@ public class SettingsAdvFragment extends BaseFragment implements NotificationCen
|
||||
{
|
||||
presentFragment(new SettingsAccountFragment(null));
|
||||
}
|
||||
else if(i==manageKeysRow )
|
||||
else if(i==initiateKeyTransferRow )
|
||||
{
|
||||
AlertDialog.Builder builder1 = new AlertDialog.Builder(getParentActivity());
|
||||
builder1.setTitle(ApplicationLoader.applicationContext.getString(R.string.AutocryptKeyTransfer));
|
||||
builder1.setMessage(AndroidUtilities.replaceTags(ApplicationLoader.applicationContext.getString(R.string.AutocryptKeyTransferMsgBeforeSend)));
|
||||
builder1.setNegativeButton(R.string.Cancel, null);
|
||||
builder1.setPositiveButton(R.string.AutocryptKeyTransferInitiate, new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
progressDialog = new ProgressDialog(getParentActivity());
|
||||
progressDialog.setMessage(ApplicationLoader.applicationContext.getString(R.string.OneMoment));
|
||||
progressDialog.setCanceledOnTouchOutside(false);
|
||||
progressDialog.setCancelable(false);
|
||||
progressDialog.setButton(DialogInterface.BUTTON_NEGATIVE, ApplicationLoader.applicationContext.getString(R.string.Cancel), new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
MrMailbox.stopOngoingProcess();
|
||||
}
|
||||
});
|
||||
progressDialog.show();
|
||||
Utilities.searchQueue.postRunnable(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
final String sc = MrMailbox.initiateKeyTransfer();
|
||||
AndroidUtilities.runOnUIThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if( progressDialog != null ) {
|
||||
progressDialog.dismiss();
|
||||
progressDialog = null;
|
||||
}
|
||||
|
||||
if( sc != null ) {
|
||||
String scFormatted = "";
|
||||
try {
|
||||
scFormatted = sc.substring(0, 4) + " - " + sc.substring(5, 9) + " - " + sc.substring(10, 14) + " -\n\n" +
|
||||
sc.substring(15, 19) + " - " + sc.substring(20, 24) + " - " + sc.substring(25, 29) + " -\n\n" +
|
||||
sc.substring(30, 34) + " - " + sc.substring(35, 39) + " - " + sc.substring(40, 44);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
AlertDialog.Builder builder2 = new AlertDialog.Builder(getParentActivity());
|
||||
builder2.setTitle(ApplicationLoader.applicationContext.getString(R.string.AutocryptKeyTransfer));
|
||||
builder2.setMessage(AndroidUtilities.replaceTags(String.format(ApplicationLoader.applicationContext.getString(R.string.AutocryptKeyTransferMsgAfterSend), scFormatted)));
|
||||
builder2.setPositiveButton(R.string.OK, null);
|
||||
builder2.setCancelable(false); // prevent the dialog from being dismissed accidentally (when the dialog is closed, the setup code is gone forever and the user has to create a new setup message)
|
||||
showDialog(builder2.create());
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
showDialog(builder1.create());
|
||||
|
||||
}
|
||||
else if( i == manageKeysRow )
|
||||
{
|
||||
imexShowMenu(ApplicationLoader.applicationContext.getString(R.string.E2EManagePrivateKeys),
|
||||
MrMailbox.MR_IMEX_EXPORT_SELF_KEYS, ApplicationLoader.applicationContext.getString(R.string.ExportPrivateKeys),
|
||||
@@ -284,6 +398,14 @@ public class SettingsAdvFragment extends BaseFragment implements NotificationCen
|
||||
});
|
||||
showDialog(builder.create());
|
||||
}
|
||||
else if (i == passcodeRow) {
|
||||
if (UserConfig.passcodeHash.length() > 0) {
|
||||
presentFragment(new PasscodeActivity(PasscodeActivity.SCREEN2_ENTER_CODE2));
|
||||
} else {
|
||||
presentFragment(new PasscodeActivity(PasscodeActivity.SCREEN0_SETTINGS));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
@@ -410,7 +532,7 @@ public class SettingsAdvFragment extends BaseFragment implements NotificationCen
|
||||
progressDialog.setButton(DialogInterface.BUTTON_NEGATIVE, ApplicationLoader.applicationContext.getString(R.string.Cancel), new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
MrMailbox.imex(0, null);
|
||||
MrMailbox.stopOngoingProcess();
|
||||
}
|
||||
});
|
||||
progressDialog.show();
|
||||
@@ -420,7 +542,18 @@ public class SettingsAdvFragment extends BaseFragment implements NotificationCen
|
||||
MrMailbox.m_lastErrorString = "";
|
||||
}
|
||||
|
||||
MrMailbox.imex(what, imexDir.getAbsolutePath());
|
||||
Utilities.searchQueue.postRunnable(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
final int res = MrMailbox.imex(progressWhat, imexDir.getAbsolutePath());
|
||||
AndroidUtilities.runOnUIThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
NotificationCenter.getInstance().postNotificationName(NotificationCenter.imexEnded, (int)res);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -491,7 +624,7 @@ public class SettingsAdvFragment extends BaseFragment implements NotificationCen
|
||||
@Override
|
||||
public boolean isEnabled(int i) {
|
||||
int type = getItemViewType(i);
|
||||
return (type!=ROWTYPE_SHADOW && type!=ROWTYPE_HEADER);
|
||||
return (type!=ROWTYPE_SHADOW && type!=ROWTYPE_HEADER && type!=ROWTYPE_INFO);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -522,6 +655,12 @@ public class SettingsAdvFragment extends BaseFragment implements NotificationCen
|
||||
view = new ShadowSectionCell(mContext);
|
||||
}
|
||||
view.setBackgroundResource(i==backupShadowRow? R.drawable.greydivider_bottom : R.drawable.greydivider);
|
||||
} else if (type == ROWTYPE_INFO) {
|
||||
if (view == null) {
|
||||
view = new TextInfoCell(mContext);
|
||||
}
|
||||
((TextInfoCell) view).setText(AndroidUtilities.replaceTags(mContext.getString(R.string.AutocryptExplain)));
|
||||
view.setBackgroundResource(R.drawable.greydivider);
|
||||
} else if (type == ROWTYPE_TEXT_SETTINGS) {
|
||||
if (view == null) {
|
||||
view = new TextSettingsCell(mContext);
|
||||
@@ -533,7 +672,10 @@ public class SettingsAdvFragment extends BaseFragment implements NotificationCen
|
||||
}
|
||||
else if (i == blockedRow) {
|
||||
String cntStr = String.format("%d", MrMailbox.getBlockedCount());
|
||||
textCell.setTextAndValue(ApplicationLoader.applicationContext.getString(R.string.BlockedContacts), cntStr, true);
|
||||
textCell.setTextAndValue(ApplicationLoader.applicationContext.getString(R.string.BlockedContacts), cntStr, false);
|
||||
}
|
||||
else if( i==initiateKeyTransferRow ) {
|
||||
textCell.setText(mContext.getString(R.string.AutocryptKeyTransferInitiate), true);
|
||||
}
|
||||
else if( i==manageKeysRow ) {
|
||||
textCell.setText(mContext.getString(R.string.E2EManagePrivateKeys), true);
|
||||
@@ -549,6 +691,10 @@ public class SettingsAdvFragment extends BaseFragment implements NotificationCen
|
||||
int size = preferences.getInt("msg_font_size", SettingsAdvFragment.defMsgFontSize());
|
||||
textCell.setTextAndValue(mContext.getString(R.string.TextSize), String.format("%d", size), true);
|
||||
}
|
||||
else if (i == passcodeRow) {
|
||||
String val = UserConfig.passcodeHash.length() > 0? mContext.getString(R.string.Enabled) : mContext.getString(R.string.Disabled);
|
||||
textCell.setTextAndValue(mContext.getString(R.string.Passcode), val, true);
|
||||
}
|
||||
} else if (type == ROWTYPE_CHECK) {
|
||||
if (view == null) {
|
||||
view = new TextCheckCell(mContext);
|
||||
@@ -573,6 +719,12 @@ public class SettingsAdvFragment extends BaseFragment implements NotificationCen
|
||||
else if( i == e2eEncryptionRow ) {
|
||||
textCell.setTextAndCheck(mContext.getString(R.string.PreferE2EEncryption),
|
||||
MrMailbox.getConfigInt("e2ee_enabled", MR_E2EE_DEFAULT_ENABLED)!=0, false);
|
||||
} else if (i == labsEnableQrRow) {
|
||||
boolean qr_enabled = MrMailbox.getConfigInt("qr_enabled", 0)!=0;
|
||||
textCell.setTextAndCheck("Labs: QR code options", qr_enabled, true);
|
||||
} else if (i == labsQrOverlayLogoRow) {
|
||||
boolean qr_overlay_logo = MrMailbox.getConfigInt("qr_overlay_logo", 1)!=0;
|
||||
textCell.setTextAndCheck("Labs: QR logo overlay", qr_overlay_logo, true);
|
||||
}
|
||||
}
|
||||
else if (type == ROWTYPE_HEADER) {
|
||||
@@ -580,8 +732,12 @@ public class SettingsAdvFragment extends BaseFragment implements NotificationCen
|
||||
view = new HeaderCell(mContext);
|
||||
view.setBackgroundColor(0xffffffff);
|
||||
}
|
||||
if (i == imexHeaderRow) {
|
||||
((HeaderCell) view).setText(mContext.getString(R.string.ExportImportHeader));
|
||||
|
||||
if (i == e2eHeaderRow) {
|
||||
((HeaderCell) view).setText(mContext.getString(R.string.Autocrypt));
|
||||
}
|
||||
else if (i == otherHeaderRow) {
|
||||
((HeaderCell) view).setText(mContext.getString(R.string.NotificationsOther));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -592,9 +748,13 @@ public class SettingsAdvFragment extends BaseFragment implements NotificationCen
|
||||
public int getItemViewType(int i) {
|
||||
if (i== settingsShadowRow || i==backupShadowRow ) {
|
||||
return ROWTYPE_SHADOW;
|
||||
} else if( i==imexHeaderRow ) {
|
||||
} else if( i==e2eInfoRow ) {
|
||||
return ROWTYPE_INFO;
|
||||
} else if( i==otherHeaderRow || i==e2eHeaderRow ) {
|
||||
return ROWTYPE_HEADER;
|
||||
} else if ( i == sendByEnterRow || i == raiseToSpeakRow || i == autoplayGifsRow || i==showUnknownSendersRow || i == directShareRow || i==e2eEncryptionRow) {
|
||||
} else if ( i == sendByEnterRow || i == raiseToSpeakRow || i == autoplayGifsRow
|
||||
|| i==showUnknownSendersRow || i == directShareRow || i==e2eEncryptionRow
|
||||
|| i==labsEnableQrRow || i==labsQrOverlayLogoRow ) {
|
||||
return ROWTYPE_CHECK;
|
||||
} else {
|
||||
return ROWTYPE_TEXT_SETTINGS;
|
||||
|
||||
@@ -52,7 +52,7 @@ public class SettingsFragment extends BaseFragment {
|
||||
// the list
|
||||
private int profileRow, nameAndStatusRow;
|
||||
private int notificationRow, backgroundRow, advRow, settingsShadowRow;
|
||||
private int readReceiptsRow, passcodeRow;
|
||||
private int readReceiptsRow;
|
||||
private int aboutHeaderRow, aboutRow, inviteRow, helpRow, aboutShadowRow;
|
||||
private int rowCount;
|
||||
|
||||
@@ -79,7 +79,6 @@ public class SettingsFragment extends BaseFragment {
|
||||
nameAndStatusRow = rowCount++;
|
||||
notificationRow = rowCount++;
|
||||
backgroundRow = rowCount++;
|
||||
passcodeRow = rowCount++;
|
||||
readReceiptsRow = rowCount++;
|
||||
advRow = rowCount++;
|
||||
settingsShadowRow = rowCount++;
|
||||
@@ -100,7 +99,6 @@ public class SettingsFragment extends BaseFragment {
|
||||
// (we have also used an action bar menu for less frequently stuff (advanced, backup, account settings) but this needs to be explained -
|
||||
// so, if possible, we will avoid this - form follows function)
|
||||
actionBar.setBackButtonImage(R.drawable.ic_ab_back);
|
||||
actionBar.setAllowOverlayTitle(true);
|
||||
actionBar.setTitle(context.getString(R.string.Settings));
|
||||
actionBar.setActionBarMenuOnItemClick(new ActionBar.ActionBarMenuOnItemClick() {
|
||||
@Override
|
||||
@@ -131,13 +129,6 @@ public class SettingsFragment extends BaseFragment {
|
||||
if (i == nameAndStatusRow) {
|
||||
presentFragment(new SettingsNameFragment());
|
||||
}
|
||||
else if (i == passcodeRow) {
|
||||
if (UserConfig.passcodeHash.length() > 0) {
|
||||
presentFragment(new PasscodeActivity(PasscodeActivity.SCREEN2_ENTER_CODE2));
|
||||
} else {
|
||||
presentFragment(new PasscodeActivity(PasscodeActivity.SCREEN0_SETTINGS));
|
||||
}
|
||||
}
|
||||
else if(i==readReceiptsRow )
|
||||
{
|
||||
int oldval = MrMailbox.getConfigInt("mdns_enabled", MR_MDNS_DEFAULT_ENABLED);
|
||||
@@ -201,7 +192,7 @@ public class SettingsFragment extends BaseFragment {
|
||||
@Override
|
||||
public boolean isEnabled(int i) {
|
||||
return i == nameAndStatusRow ||
|
||||
i==passcodeRow || i==readReceiptsRow || i == notificationRow || i == backgroundRow || i == advRow ||
|
||||
i==readReceiptsRow || i == notificationRow || i == backgroundRow || i == advRow ||
|
||||
i == aboutRow || i == inviteRow || i == helpRow;
|
||||
}
|
||||
|
||||
@@ -246,11 +237,7 @@ public class SettingsFragment extends BaseFragment {
|
||||
view.setBackgroundColor(0xffffffff);
|
||||
}
|
||||
TextSettingsCell textCell = (TextSettingsCell) view;
|
||||
if (i == passcodeRow) {
|
||||
String val = UserConfig.passcodeHash.length() > 0? mContext.getString(R.string.Enabled) : mContext.getString(R.string.Disabled);
|
||||
textCell.setTextAndValue(mContext.getString(R.string.Passcode), val, true);
|
||||
}
|
||||
else if (i == notificationRow) {
|
||||
if (i == notificationRow) {
|
||||
// a preview of the settings here would be rather complicated (all options may be overwritten in the
|
||||
// chats) and either ambiguous or too long.
|
||||
// We tried to display "On", "On/Off" (only groups disabled) and "..." (normal and groups disabled),
|
||||
|
||||
@@ -91,7 +91,6 @@ public class SettingsNameFragment extends BaseFragment {
|
||||
|
||||
// create action bar
|
||||
actionBar.setBackButtonImage(R.drawable.ic_close_white);
|
||||
actionBar.setAllowOverlayTitle(true);
|
||||
actionBar.setTitle(context.getString(R.string.NameAndStatus));
|
||||
actionBar.setActionBarMenuOnItemClick(new ActionBar.ActionBarMenuOnItemClick() {
|
||||
@Override
|
||||
|
||||
@@ -136,7 +136,6 @@ public class SettingsNotificationsFragment extends BaseFragment implements Notif
|
||||
@Override
|
||||
public View createView(final Context context) {
|
||||
actionBar.setBackButtonImage(R.drawable.ic_ab_back);
|
||||
actionBar.setAllowOverlayTitle(true);
|
||||
actionBar.setTitle(context.getString(R.string.NotificationsAndSounds));
|
||||
actionBar.setActionBarMenuOnItemClick(new ActionBar.ActionBarMenuOnItemClick() {
|
||||
@Override
|
||||
|
||||
@@ -71,14 +71,6 @@ public class TLRPC {
|
||||
public static class TL_documentAttributeFilename extends DocumentAttribute {
|
||||
}
|
||||
|
||||
public static class Peer extends TLObject {
|
||||
public int user_id;
|
||||
public final int chat_id = 0;
|
||||
}
|
||||
|
||||
public static class TL_peerUser extends Peer {
|
||||
}
|
||||
|
||||
public static class TL_messageMediaEmpty extends MessageMedia {
|
||||
}
|
||||
|
||||
@@ -238,7 +230,6 @@ public class TLRPC {
|
||||
public static class Message extends TLObject {
|
||||
public int id;
|
||||
public int from_id;
|
||||
public Peer to_id;
|
||||
public int date;
|
||||
public final int reply_to_msg_id = 0;
|
||||
public String message;
|
||||
@@ -257,7 +248,8 @@ public class TLRPC {
|
||||
public final int layer = 0; //custom
|
||||
public boolean created_by_mr;
|
||||
public boolean show_padlock;
|
||||
public boolean is_system_cmd;
|
||||
public boolean colored_text;
|
||||
public boolean is_setup_message;
|
||||
}
|
||||
|
||||
public static class TL_message extends Message {
|
||||
|
||||
@@ -45,7 +45,15 @@ public class TimerReceiver extends BroadcastReceiver {
|
||||
// (if the whole App was killed, the IMAP thread is already started by MrMailbox.connect() if we're here)
|
||||
// (the thread itself will reconnect to the IMAP server as needed)
|
||||
// however, it seems as if the threads sleep longer than ususal, check this by calling heartbeat() manually
|
||||
MrMailbox.heartbeat();
|
||||
//
|
||||
// CAVE: MrMailbox.heartbeat() must not be called from the mainthread - otherwise eg. when the network hangs,
|
||||
// this function returns only after the network timeout and the ui thread may hang for minutes ...
|
||||
Utilities.searchQueue.postRunnable(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
MrMailbox.heartbeat();
|
||||
}
|
||||
});
|
||||
|
||||
// create the next alarm in about a minute
|
||||
scheduleNextAlarm();
|
||||
|
||||
@@ -124,7 +124,6 @@ public class WallpapersActivity extends BaseFragment implements NotificationCent
|
||||
@Override
|
||||
public View createView(final Context context) {
|
||||
actionBar.setBackButtonImage(R.drawable.ic_close_white);
|
||||
actionBar.setAllowOverlayTitle(true);
|
||||
actionBar.setTitle(context.getString(R.string.ChatBackground));
|
||||
actionBar.setActionBarMenuOnItemClick(new ActionBar.ActionBarMenuOnItemClick() {
|
||||
@Override
|
||||
|
||||
@@ -100,7 +100,7 @@ public class WelcomeActivity extends Activity implements NotificationCenter.Noti
|
||||
secondaryButton.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
final String msgtext = "© 2017 Delta Chat contributors" + "\n\n" + MrMailbox.getInfo() + "\n\n" + getAndroidInfo();
|
||||
final String msgtext = "© 2017, 2018 Delta Chat contributors" + "\n\n" + MrMailbox.getInfo() + "\n\n" + getAndroidInfo();
|
||||
new AlertDialog.Builder(WelcomeActivity.this)
|
||||
.setTitle(ApplicationLoader.applicationContext.getString(R.string.AppName) + " v" + getVersion())
|
||||
.setMessage(msgtext)
|
||||
@@ -323,7 +323,7 @@ public class WelcomeActivity extends Activity implements NotificationCenter.Noti
|
||||
}
|
||||
|
||||
private ProgressDialog progressDialog = null;
|
||||
private void startImport(String backupFile)
|
||||
private void startImport(final String backupFile)
|
||||
{
|
||||
if( progressDialog!=null ) {
|
||||
progressDialog.dismiss();
|
||||
@@ -337,7 +337,7 @@ public class WelcomeActivity extends Activity implements NotificationCenter.Noti
|
||||
progressDialog.setButton(DialogInterface.BUTTON_NEGATIVE, ApplicationLoader.applicationContext.getString(R.string.Cancel), new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
MrMailbox.imex(0, null);
|
||||
MrMailbox.stopOngoingProcess();
|
||||
}
|
||||
});
|
||||
progressDialog.show();
|
||||
@@ -347,7 +347,18 @@ public class WelcomeActivity extends Activity implements NotificationCenter.Noti
|
||||
MrMailbox.m_lastErrorString = "";
|
||||
}
|
||||
|
||||
MrMailbox.imex(MrMailbox.MR_IMEX_IMPORT_BACKUP, backupFile);
|
||||
Utilities.searchQueue.postRunnable(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
final int res = MrMailbox.imex(MrMailbox.MR_IMEX_IMPORT_BACKUP, backupFile);
|
||||
AndroidUtilities.runOnUIThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
NotificationCenter.getInstance().postNotificationName(NotificationCenter.imexEnded, (int)res);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -371,6 +382,11 @@ public class WelcomeActivity extends Activity implements NotificationCenter.Noti
|
||||
}
|
||||
|
||||
if( (int)args[0]==1 ) {
|
||||
MrMailbox.connect(); // import does not automatically connect
|
||||
KeepAliveService kas = KeepAliveService.getInstance();
|
||||
if( kas != null ) {
|
||||
kas.updateForegroundNotification();
|
||||
}
|
||||
startActivity(new Intent(WelcomeActivity.this, LaunchActivity.class));
|
||||
finish();
|
||||
}
|
||||
|
||||
|
Before Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 314 B |
|
Before Width: | Height: | Size: 6.5 KiB After Width: | Height: | Size: 23 KiB |
|
Before Width: | Height: | Size: 7.4 KiB After Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 7.0 KiB After Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 6.5 KiB After Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 6.2 KiB After Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 6.7 KiB After Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 4.9 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 2.2 KiB |
@@ -1,9 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<layer-list
|
||||
xmlns:android="http://schemas.android.com/apk/res/android" >
|
||||
<item
|
||||
android:drawable="@drawable/mute_blue"
|
||||
android:top="2dp"
|
||||
android:left="2dp" />
|
||||
</layer-list>
|
||||
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
<com.journeyapps.barcodescanner.CompoundBarcodeView
|
||||
android:id="@+id/zxing_barcode_scanner"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_alignParentBottom="true" />
|
||||
|
||||
</RelativeLayout>
|
||||
@@ -0,0 +1,25 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:orientation="vertical"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" >
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/qrImage"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/qrShowHint"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="16sp"
|
||||
android:layout_marginEnd="8sp"
|
||||
android:layout_marginStart="8sp"
|
||||
android:text=""
|
||||
android:textAlignment="center"
|
||||
android:textAppearance="@style/TextAppearance.AppCompat"
|
||||
android:textSize="16sp"/>
|
||||
|
||||
</LinearLayout>
|
||||
@@ -0,0 +1,144 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<FrameLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<!-- the FrameLayout is needed as View.inflate() without a root discards all layout_-attributes -->
|
||||
|
||||
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginTop="16dp"
|
||||
android:layout_marginLeft="24dp"
|
||||
android:layout_marginStart="24dp"
|
||||
android:layout_marginRight="24dp"
|
||||
android:layout_marginEnd="24dp"
|
||||
android:columnCount="6"
|
||||
android:rowCount="1">
|
||||
|
||||
<!-- 1st row -->
|
||||
|
||||
<EditText
|
||||
android:id="@+id/setupCode0"
|
||||
android:layout_marginBottom="8dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:inputType="numberDecimal"
|
||||
android:maxLength="4"
|
||||
android:minEms="3"/>
|
||||
|
||||
<TextView
|
||||
android:layout_marginBottom="8dp"
|
||||
android:text=" - "
|
||||
android:textAppearance="@style/TextAppearance.AppCompat"/>
|
||||
|
||||
<EditText
|
||||
android:id="@+id/setupCode1"
|
||||
android:layout_marginBottom="8dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:inputType="numberDecimal"
|
||||
android:maxLength="4"
|
||||
android:minEms="3"/>
|
||||
|
||||
<TextView
|
||||
android:text=" - "
|
||||
android:textAppearance="@style/TextAppearance.AppCompat"/>
|
||||
|
||||
<EditText
|
||||
android:id="@+id/setupCode2"
|
||||
android:layout_marginBottom="8dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:inputType="numberDecimal"
|
||||
android:maxLength="4"
|
||||
android:minEms="3"/>
|
||||
|
||||
<TextView
|
||||
android:layout_marginBottom="8dp"
|
||||
android:text=" - "
|
||||
android:textAppearance="@style/TextAppearance.AppCompat"/>
|
||||
|
||||
<!-- 2nd row -->
|
||||
|
||||
<EditText
|
||||
android:id="@+id/setupCode3"
|
||||
android:layout_marginBottom="8dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:inputType="numberDecimal"
|
||||
android:maxLength="4"
|
||||
android:minEms="3"/>
|
||||
|
||||
<TextView
|
||||
android:layout_marginBottom="8dp"
|
||||
android:text=" - "
|
||||
android:textAppearance="@style/TextAppearance.AppCompat"/>
|
||||
|
||||
<EditText
|
||||
android:id="@+id/setupCode4"
|
||||
android:layout_marginBottom="8dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:inputType="numberDecimal"
|
||||
android:maxLength="4"
|
||||
android:minEms="3"/>
|
||||
|
||||
<TextView
|
||||
android:layout_marginBottom="8dp"
|
||||
android:text=" - "
|
||||
android:textAppearance="@style/TextAppearance.AppCompat"/>
|
||||
|
||||
<EditText
|
||||
android:id="@+id/setupCode5"
|
||||
android:layout_marginBottom="8dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:inputType="numberDecimal"
|
||||
android:maxLength="4"
|
||||
android:minEms="3"/>
|
||||
|
||||
<TextView
|
||||
android:text=" - "
|
||||
android:textAppearance="@style/TextAppearance.AppCompat"/>
|
||||
|
||||
<!-- 3rd row -->
|
||||
|
||||
<EditText
|
||||
android:id="@+id/setupCode6"
|
||||
android:layout_marginBottom="8dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:inputType="numberDecimal"
|
||||
android:maxLength="4"
|
||||
android:minEms="3"/>
|
||||
|
||||
<TextView
|
||||
android:text=" - "
|
||||
android:layout_marginBottom="8dp"
|
||||
android:textAppearance="@style/TextAppearance.AppCompat"/>
|
||||
|
||||
<EditText
|
||||
android:id="@+id/setupCode7"
|
||||
android:layout_marginBottom="8dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:inputType="numberDecimal"
|
||||
android:maxLength="4"
|
||||
android:minEms="3"/>
|
||||
|
||||
<TextView
|
||||
android:text=" - "
|
||||
android:layout_marginBottom="8dp"
|
||||
android:textAppearance="@style/TextAppearance.AppCompat"/>
|
||||
|
||||
<EditText
|
||||
android:id="@+id/setupCode8"
|
||||
android:layout_marginBottom="8dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:inputType="numberDecimal"
|
||||
android:maxLength="4"
|
||||
android:minEms="3"/>
|
||||
|
||||
<TextView
|
||||
android:text=" "
|
||||
android:layout_marginBottom="8dp"
|
||||
android:textAppearance="@style/TextAppearance.AppCompat"/>
|
||||
|
||||
</GridLayout>
|
||||
|
||||
</FrameLayout>
|
||||
@@ -47,6 +47,8 @@
|
||||
<string name="Share">Comparteix</string>
|
||||
<string name="SendItems">Envia %1$s</string>
|
||||
<string name="ClearRecentEmoji">Vols esborrae les emoticones recents?</string>
|
||||
<string name="AddShortcut">Afegeix el complement a la pantalla d\'inici</string>
|
||||
<string name="ShortcutAdded">El complement ha sigut afegit a la pantalla d\'inici</string>
|
||||
<!--notification-->
|
||||
<string name="Reply">Respon</string>
|
||||
<string name="ReplyToGroup">Respon a %1$s</string>
|
||||
@@ -81,6 +83,7 @@
|
||||
<string name="Default">Per defecte</string>
|
||||
<string name="OnlyIfSilent">Només en mode silenciós</string>
|
||||
<string name="ChatBackground">Fons del xat</string>
|
||||
<string name="SendByEnter">Envia amb la tecla Intro</string>
|
||||
<string name="Help">Ajuda</string>
|
||||
<string name="Enabled">Activat</string>
|
||||
<string name="Disabled">Desactivat</string>
|
||||
@@ -97,6 +100,7 @@
|
||||
<string name="NotificationsOther">Altres</string>
|
||||
<string name="InChatSound">So dins el xats</string>
|
||||
<string name="SmartNotifications">Limita les notificacions</string>
|
||||
<string name="SmartNotificationsSoundAtMost">Màx.</string>
|
||||
<string name="SmartNotificationsTimes">vegades</string>
|
||||
<string name="SmartNotificationsWithin">en</string>
|
||||
<string name="SmartNotificationsMinutes">minuts</string>
|
||||
@@ -104,11 +108,25 @@
|
||||
<string name="DirectShareInfo">Mostra els darrers xats al menú compartit</string>
|
||||
<!--cache view-->
|
||||
<string name="CacheSettings">Magatzem</string>
|
||||
<string name="KeepMedia">Conservar Media</string>
|
||||
<string name="KeepMediaInfo">Les fotos, vídeos i altres fitxers de xats al núvol als que no hagis <![CDATA[<b>accedit</b>]]> durant aquest període seran esborrats d\'aquest dispositiu per estalviar espai de disc.</string>
|
||||
<string name="KeepMediaForever">Per sempre</string>
|
||||
<!--passcode view-->
|
||||
<string name="Passcode">Bloqueig per codi</string>
|
||||
<string name="ChangePasscode">Canvia el codi d\'accés</string>
|
||||
<string name="ChangePasscodeInfo">Quan afegeixis un codi d\'accés addicional, a la pàgina de xats apareixerà una icona de bloqueig. Toca-la per bloquejar l\'app.\n\nNota: si oblides el codi d\'accés, hauràs de esborrar i reinstal·lar l\'app.</string>
|
||||
<string name="PasscodePIN">PIN</string>
|
||||
<string name="PasscodePassword">Contrasenya</string>
|
||||
<string name="EnterCurrentPasscode">Introdueix la teva contrasenya actual</string>
|
||||
<string name="EnterNewFirstPasscode">Introdueix el codi d\'accés</string>
|
||||
<string name="EnterNewPasscode">Introdueix un nou codi d\'accés</string>
|
||||
<string name="EnterYourPasscode">Introdueix el teu codi d\'accés</string>
|
||||
<string name="ReEnterYourPasscode">Torna a posar el teu nou codi d\'accés</string>
|
||||
<string name="PasscodeDoNotMatch">Els codis d\'accés no coincideixen</string>
|
||||
<string name="AutoLock">Bloqueig automàtic</string>
|
||||
<string name="UnlockFingerprint">Desbloqueja amb l\'empremta dactilar</string>
|
||||
<string name="FingerprintInfo">Confirma l\'empremta dactilar per continuar</string>
|
||||
<string name="FingerprintNotRecognized">Petjada dactilar no reconeguda. Torna-ho a provar</string>
|
||||
<!--photo gallery view-->
|
||||
<string name="SaveToGallery">Guarda a la galeria</string>
|
||||
<string name="Of">%1$d de %2$d</string>
|
||||
@@ -119,16 +137,26 @@
|
||||
<string name="NoVideo">Encara no hi ha cap vídeo</string>
|
||||
<string name="CropImage">Talla la imatge</string>
|
||||
<string name="EditImage">Modifica la imatge</string>
|
||||
<string name="Enhance">Enhance</string>
|
||||
<string name="Highlights">Destacats</string>
|
||||
<string name="Contrast">Contrast</string>
|
||||
<string name="Exposure">Exposició</string>
|
||||
<string name="Warmth">Warmth</string>
|
||||
<string name="Saturation">Saturació</string>
|
||||
<string name="Vignette">Vignette</string>
|
||||
<string name="Shadows">Shadows</string>
|
||||
<string name="Grain">Grain</string>
|
||||
<string name="Sharpen">Sharpen</string>
|
||||
<string name="Fade">Fade</string>
|
||||
<string name="Tint">Tint</string>
|
||||
<string name="TintShadows">Shadows</string>
|
||||
<string name="TintHighlights">DESTACATS</string>
|
||||
<string name="Curves">Corbes</string>
|
||||
<string name="CurvesAll">TOTS</string>
|
||||
<string name="CurvesRed">VERMELL</string>
|
||||
<string name="CurvesGreen">VERD</string>
|
||||
<string name="CurvesBlue">BLAU</string>
|
||||
<string name="Blur">Blur</string>
|
||||
<string name="BlurOff">Desactivat</string>
|
||||
<string name="BlurLinear">Lineal</string>
|
||||
<string name="BlurRadial">Radial</string>
|
||||
@@ -149,6 +177,7 @@
|
||||
<string name="Send">Envia</string>
|
||||
<string name="CopyToClipboard">Copia al porta-retalls</string>
|
||||
<string name="Delete">Esborra</string>
|
||||
<string name="Forward">Reenvia</string>
|
||||
<string name="FromCamera">Des de la càmera</string>
|
||||
<string name="FromGalley">Des de la galeria</string>
|
||||
<string name="OK">OK</string>
|
||||
@@ -161,7 +190,10 @@
|
||||
<string name="AttachDocument">Fitxer</string>
|
||||
<string name="AttachVoiceMessage">Missatge de veu</string>
|
||||
<string name="FromSelf">Jo</string>
|
||||
<!--Alert messages-->
|
||||
<string name="NoHandleAppInstalled">No hi ha cap app instal·lada que pugui obrir el tipus de fitxer \'%1$s\', si us plau, instal·la\'n una per continuar.</string>
|
||||
<string name="ContactAlreadyInGroup">Aquesta contacte ja pertany a aquest grup</string>
|
||||
<string name="ForwardMessagesTo">Vols reenviar els missatges seleccionats a <![CDATA[<b>]]>%1$s<![CDATA[</b>]]>?</string>
|
||||
<string name="SendMessagesTo">Envia els missatges a <![CDATA[<b>]]>%1$s<![CDATA[</b>]]>?</string>
|
||||
<string name="AreYouSureDeleteThisChat">Esborres aquest xat? El xat ja no es mostrarà al llistat de xats, però els missatges romandran al servidor.</string>
|
||||
<string name="AreYouSureBlockContact">Estàs segur que vols bloquejar aquest contacte?</string>
|
||||
@@ -169,16 +201,27 @@
|
||||
<!--permissions-->
|
||||
<string name="PermissionContacts">Delta Chat necessita accedir als teus contactes perquè puguis connectar amb els teus amics de de qualsevol dels teus dispositius.</string>
|
||||
<string name="PermissionStorage">Delta Chat necessita accedir al teu emmagatzematge per poder enviar i guardar fotos, vídeos, música i altres continguts audiovisuals.</string>
|
||||
<string name="PermissionNoAudio">Per enviar missatges de veu cal accés al micròfon.</string>
|
||||
<string name="PermissionOpenSettings">Preferències</string>
|
||||
<!--Intro view-->
|
||||
<string name="Intro1Headline">Delta Chat</string>
|
||||
<string name="Intro1Message">L\'app de missatgeria <![CDATA[<b> de més abast</b>]]> al món. <![CDATA[<b>lliure</b>]]> i <![CDATA[<b>independent</b>]]>.</string>
|
||||
|
||||
<string name="Intro2Headline">Independent</string>
|
||||
<string name="Intro2Message"><![CDATA[<b>No hi ha un servidor Delta Chat.</b>]]> L\'app només fa servir el teu servidor de correu electrònic.</string>
|
||||
|
||||
<string name="Intro3Headline">Ràpid</string>
|
||||
<string name="Intro3Message"><![CDATA[<b>Envia missatges</b>]]> en segons.<![CDATA[<br/>]]>Interfície ràpida.</string>
|
||||
|
||||
<string name="Intro4Headline">Potent</string>
|
||||
<string name="Intro4Message"><![CDATA[<b>Il·limitats</b>]]> xats, imatges, vídeos, àudios missatges i més. Capacitat multi-client.</string>
|
||||
|
||||
<string name="Intro5Headline">De franc</string>
|
||||
<string name="Intro5Message"><![CDATA[<b>Delta Chat</b>]]> serà de franc sempre.<![CDATA[<br/>]]>Codi obert. Sense publicitat. Sense subscripció. Sense exclusivitat de proveïdor.</string>
|
||||
|
||||
<string name="Intro6Headline">Segur</string>
|
||||
<string name="Intro6Message"><![CDATA[<b>Encriptat</b>]]> amb tots els algoritmes habituals. Els missatges romanen als teus servidors.</string>
|
||||
|
||||
<string name="IntroStartMessaging">Comença a xatejar</string>
|
||||
<!--plural-->
|
||||
<plurals name="Members">
|
||||
@@ -201,9 +244,79 @@
|
||||
<item quantity="one">%d missatge</item>
|
||||
<item quantity="other">%d missatges</item>
|
||||
</plurals>
|
||||
<plurals name="AreYouSureDeleteMessages">
|
||||
<item quantity="one">Vols esborrar %d missatge? També serà esborrat al servidor.</item>
|
||||
<item quantity="other">Vols esborrar %d missatges? També seran esborrats al servidor.</item>
|
||||
</plurals>
|
||||
<!-- Translators: The first string placeholder gets replaced with the
|
||||
text "%d new messages", so the complete sentence would be e.g.
|
||||
"4 new messages in 2 chats". -->
|
||||
<plurals name="NewMessagesInChats">
|
||||
<item quantity="one">%1$s a %2$d xat</item>
|
||||
<item quantity="other">%1$s a %2$d xats</item>
|
||||
</plurals>
|
||||
<plurals name="Chats">
|
||||
<item quantity="one">%d xat</item>
|
||||
<item quantity="other">%d xats</item>
|
||||
</plurals>
|
||||
<plurals name="Minutes">
|
||||
<item quantity="one">%d minut</item>
|
||||
<item quantity="other">%d minuts</item>
|
||||
</plurals>
|
||||
<plurals name="Hours">
|
||||
<item quantity="one">%d hora</item>
|
||||
<item quantity="other">%d hores</item>
|
||||
</plurals>
|
||||
<plurals name="Days">
|
||||
<item quantity="one">%d dia</item>
|
||||
<item quantity="other">%d dies</item>
|
||||
</plurals>
|
||||
<plurals name="Weeks">
|
||||
<item quantity="one">%d setmana</item>
|
||||
<item quantity="other">%d setmanes</item>
|
||||
</plurals>
|
||||
<plurals name="Months">
|
||||
<item quantity="one">%d mes</item>
|
||||
<item quantity="other">%d mesos</item>
|
||||
</plurals>
|
||||
<!-- Translators: The second string placeholder gets replaced with the
|
||||
text "%d minutes", so the complete sentence would be e.g.
|
||||
"At most 8 notifications within 3 minutes". -->
|
||||
<plurals name="MaxNotifications">
|
||||
<item quantity="one">Com a molt %1$d notificació en %2$s</item>
|
||||
<item quantity="other">Com a molt %1$d notificacions en %2$s</item>
|
||||
</plurals>
|
||||
<!--date formatters-->
|
||||
<string name="formatterMonthYear">MMMM yyyy</string>
|
||||
<string name="formatterMonth">MMM dd</string>
|
||||
<string name="formatterYear">dd.MM.yyyy</string>
|
||||
<string name="chatDate">EEE, MMMM d</string>
|
||||
<string name="chatFullDate">EEE, MMMM d, yyyy</string>
|
||||
<string name="formatterWeek">EEE</string>
|
||||
<string name="formatterDay24H">HH:mm</string>
|
||||
<string name="formatterDay12H">h:mm a</string>
|
||||
<string name="formatDateAtTime">%1$s a %2$s</string>
|
||||
<string name="AccountSettings">Preferències del compte</string>
|
||||
<string name="MyAccount">El meu compte</string>
|
||||
<string name="MyName">El meu nom</string>
|
||||
<string name="MyNameExplain">El teu nom, com serà mostrat als destinataris. Si el deixes en blanc, només es mostrarà la teva adreça de correu electrònic.</string>
|
||||
<string name="Password">Contrasenya</string>
|
||||
<string name="SmtpPassword">Contrasenya SMTP</string>
|
||||
<string name="FromAbove">La de dalt</string>
|
||||
<string name="SmtpLoginname">Login-nom SMTP</string>
|
||||
<string name="SmtpPort">Port SMTP</string>
|
||||
<string name="Automatic">Automàtic</string>
|
||||
<string name="ImapServer">Servidor IMAP</string>
|
||||
<string name="AboutThisProgram">Sobre Delta Chat</string>
|
||||
<string name="NotSet">No definit</string>
|
||||
<string name="NewChat">Nou xat</string>
|
||||
<string name="MuteAlways">Sempre silenciat</string>
|
||||
<string name="Name" >Nom</string>
|
||||
<string name="EmailAddress">Adreça de correu electrònic</string>
|
||||
<string name="ContactCreated">Contacte creat.</string>
|
||||
<string name="ViewProfile">Mira el perfil</string>
|
||||
<!-- Translators: please use a very short string here, it should not much longer than
|
||||
the string needed for video time+size (0:00, 12,3 Mib) -->
|
||||
<string name="OneMoment">Un moment ...</string>
|
||||
<string name="Contact">Contacte</string>
|
||||
</resources>
|
||||
|
||||
@@ -41,9 +41,9 @@
|
||||
<string name="From">Von</string>
|
||||
<string name="NoRecent">Keine aktuellen</string>
|
||||
<string name="TypeMessage">Nachricht</string>
|
||||
<string name="SlideToCancel">WISCHEN UM ABZUBRECHEN</string>
|
||||
<string name="SaveToDownloads">In Downloads speichern</string>
|
||||
<string name="SaveToMusic">In Musik speichern</string>
|
||||
<string name="SlideToCancel">Wischen um abzubrechen</string>
|
||||
<string name="SaveToDownloads">In „Downloads“ speichern</string>
|
||||
<string name="SaveToMusic">In „Musik“ speichern</string>
|
||||
<string name="Share">Teilen</string>
|
||||
<string name="SendItems">%1$s senden</string>
|
||||
<string name="ClearRecentEmoji">Zuletzt benutzte Emoji leeren?</string>
|
||||
@@ -63,7 +63,7 @@
|
||||
<string name="Notifications">Mitteilungen</string>
|
||||
<string name="RemoveMember">Mitglied entfernen</string>
|
||||
<!--contact info view-->
|
||||
<string name="NewContactTitle">Neuer Kontakt</string>
|
||||
<string name="NewContactTitle">Kontakt hinzufügen</string>
|
||||
<string name="BlockContact">Kontakt blockieren</string>
|
||||
<string name="DeleteContact">Kontakt löschen</string>
|
||||
<string name="Info">Info</string>
|
||||
@@ -83,7 +83,7 @@
|
||||
<string name="Default">Standard</string>
|
||||
<string name="OnlyIfSilent">Wenn lautlos</string>
|
||||
<string name="ChatBackground">Chat-Hintergrundbild</string>
|
||||
<string name="SendByEnter">Mit Taste „Enter“ senden</string>
|
||||
<string name="SendByEnter">Mit Eingabetaste senden</string>
|
||||
<string name="Help">Hilfe</string>
|
||||
<string name="Enabled">An</string>
|
||||
<string name="Disabled">Aus</string>
|
||||
@@ -151,13 +151,13 @@
|
||||
<string name="Sharpen">Schärfe</string>
|
||||
<string name="Fade">Verblassen</string>
|
||||
<string name="Tint">Tönung</string>
|
||||
<string name="TintShadows">TIEFEN</string>
|
||||
<string name="TintHighlights">LICHTER</string>
|
||||
<string name="TintShadows">Tiefen</string>
|
||||
<string name="TintHighlights">Lichter</string>
|
||||
<string name="Curves">Kurven</string>
|
||||
<string name="CurvesAll">ALLE</string>
|
||||
<string name="CurvesRed">ROT</string>
|
||||
<string name="CurvesGreen">GRÜN</string>
|
||||
<string name="CurvesBlue">BLAU</string>
|
||||
<string name="CurvesAll">Alle</string>
|
||||
<string name="CurvesRed">Rot</string>
|
||||
<string name="CurvesGreen">Grün</string>
|
||||
<string name="CurvesBlue">Blau</string>
|
||||
<string name="Blur">Unschärfe</string>
|
||||
<string name="BlurOff">Aus</string>
|
||||
<string name="BlurLinear">Linear</string>
|
||||
@@ -184,7 +184,7 @@
|
||||
<string name="FromGalley">Aus der Galerie</string>
|
||||
<string name="Set">Wählen</string>
|
||||
<string name="OK">OK</string>
|
||||
<string name="Crop">SCHNEIDEN</string>
|
||||
<string name="Crop">Schneiden</string>
|
||||
<!--messages-->
|
||||
<string name="AttachPhoto">Bild</string>
|
||||
<string name="AttachVideo">Video</string>
|
||||
@@ -208,10 +208,10 @@
|
||||
<string name="PermissionOpenSettings">Einstellungen anpassen</string>
|
||||
<!--Intro view-->
|
||||
<string name="Intro1Headline">Delta Chat</string>
|
||||
<string name="Intro1Message">Der Messenger mit der <![CDATA[<b>größten Reichweite</b>]]> der Welt.<![CDATA[<br/><b>Frei</b>]]> und <![CDATA[<b>sicher</b>]]>.</string>
|
||||
<string name="Intro1Message">Der Messenger mit der <![CDATA[<b>größten Reichweite</b>]]> der Welt. <![CDATA[<b>Frei</b>]]> und <![CDATA[<b>unabhängig</b>]]>.</string>
|
||||
|
||||
<string name="Intro2Headline">Unabhängig</string>
|
||||
<string name="Intro2Message"><![CDATA[<b>Keine Abhängigkeiten</b>]]> von fremden Diensten und Servern. Die App verwendet nur Ihren E-Mail-Server.</string>
|
||||
<string name="Intro2Message"><![CDATA[<b>Es gibt keinen Delta-Chat-Server.</b>]]> Die App verwendet nur Ihren E-Mail-Server.</string>
|
||||
|
||||
<string name="Intro3Headline">Schnell</string>
|
||||
<string name="Intro3Message"><![CDATA[<b>Push-Nachrichten</b>]]> in Sekunden.<![CDATA[<br/>]]>Rasantes Interface.</string>
|
||||
@@ -222,7 +222,7 @@
|
||||
<string name="Intro5Headline">Frei</string>
|
||||
<string name="Intro5Message">Open Source. Keine Werbung. Kein Abo.<![CDATA[<br/>]]>Keine Bindung an die Mobilfunknummer.</string>
|
||||
|
||||
<string name="Intro6Headline">Sicher</string>
|
||||
<string name="Intro6Headline">Verschlüsselt</string>
|
||||
<string name="Intro6Message"><![CDATA[<b>Verschlüsselung</b>]]> mit allen gängigen Verfahren. Die Nachrichten bleiben auf Ihren Servern.</string>
|
||||
|
||||
<string name="Intro7Headline">Vertraulich</string>
|
||||
@@ -239,7 +239,7 @@
|
||||
</plurals>
|
||||
<plurals name="MeAndMembers">
|
||||
<item quantity="one">Ich und %d Mitglied</item>
|
||||
<item quantity="other">Ich und %d Mitglieder</item>
|
||||
<item quantity="other">%d Mitglieder und ich</item>
|
||||
</plurals>
|
||||
<plurals name="NewMessages">
|
||||
<item quantity="one">%d neue Nachricht</item>
|
||||
@@ -253,6 +253,9 @@
|
||||
<item quantity="one">%d Nachricht löschen? Die Nachricht wird auch auf dem Server gelöscht.</item>
|
||||
<item quantity="other">%d Nachrichten löschen? Die Nachrichten werden auch auf dem Server gelöscht.</item>
|
||||
</plurals>
|
||||
<!-- Translators: The first string placeholder gets replaced with the
|
||||
text "%d new messages", so the complete sentence would be e.g.
|
||||
"4 new messages in 2 chats". -->
|
||||
<plurals name="NewMessagesInChats">
|
||||
<item quantity="one">%1$s in %2$d Chat</item>
|
||||
<item quantity="other">%1$s in %2$d Chats</item>
|
||||
@@ -281,6 +284,9 @@
|
||||
<item quantity="one">%d Monat</item>
|
||||
<item quantity="other">%d Monate</item>
|
||||
</plurals>
|
||||
<!-- Translators: The second string placeholder gets replaced with the
|
||||
text "%d minutes", so the complete sentence would be e.g.
|
||||
"At most 8 notifications within 3 minutes". -->
|
||||
<plurals name="MaxNotifications">
|
||||
<item quantity="one">Höchstens %1$d Benachrichtigung in %2$s</item>
|
||||
<item quantity="other">Höchstens %1$d Benachrichtigungen in %2$s</item>
|
||||
@@ -323,7 +329,7 @@
|
||||
<string name="AskStartChatWith">Chat mit <![CDATA[<b>]]>%1$s<![CDATA[</b>]]> starten?</string>
|
||||
<string name="DeaddropHint">Ein Klick auf die Antwort-Pfeile startet einen Chat.</string>
|
||||
<string name="NotYetImplemented">Diese Funktion ist nicht oder nur unvollständig eingebaut.</string>
|
||||
<string name="DefaultStatusText">Mit meinem Delta Chat Messenger gesendet: https://delta.chat</string>
|
||||
<string name="DefaultStatusText">Mit meinem Delta Chat Messenger gesendet: https://delta.chat/de/</string>
|
||||
<string name="Name" >Name</string>
|
||||
<string name="EmailAddress">E-Mail-Adresse</string>
|
||||
<string name="CannotDeleteContact">Der Kontakt kann nicht gelöscht werden, da er verwendet wird; er kann aber blockiert werden.</string>
|
||||
@@ -334,10 +340,10 @@
|
||||
the string needed for video time+size (0:00, 12,3 Mib) -->
|
||||
<string name="OneMoment">Einen Moment …</string>
|
||||
<string name="NoChatsHelp">Unten auf das Plussymbol für die erste Chatnachricht tippen; der Menüknopf öffnet die weiteren Optionen.</string>
|
||||
<string name="Intro7Message"><![CDATA[<b>Delta Chat</b>]]> ist für die sichere geschäftliche Kommunikation geeignet.</string>
|
||||
<string name="Intro7Message"><![CDATA[<b>Delta Chat</b>]]> ist für die vertrauliche geschäftliche Kommunikation geeignet.</string>
|
||||
<string name="InviteMenuEntry">Einladungen versenden</string>
|
||||
<string name="InviteText">Ich verwende nun auch den Delta Chat Messenger - %1$s - und bin dort unter %2$s erreichbar.</string>
|
||||
<string name="AdvancedSettings">Fortgeschrittene Einstellungen</string>
|
||||
<string name="AdvancedSettings">Weitere Einstellungen</string>
|
||||
<string name="AskResetNotifications">Alle Benachrichtigungseinstellungen und Töne dieser Seite und auch der einzelnen Chats zurücksetzen?</string>
|
||||
<string name="AttachFiles">Dateien anhängen</string>
|
||||
<string name="ErrGroupNameEmpty">Bitte einen Namen für die Gruppe eingeben.</string>
|
||||
@@ -371,16 +377,14 @@
|
||||
<string name="HelpUrl">https://delta.chat/de/help</string>
|
||||
<string name="EncryptedMessage">Verschlüsselte Nachricht</string>
|
||||
<string name="Encryption">Verschlüsselung</string>
|
||||
<string name="EncrinfoE2E">Ende-zu-Ende-Verschlüsselung ist aktiv.</string>
|
||||
<string name="EncrinfoE2EExplain">Wenn die angezeigten Fingerabdrücke auf dem anderen Gerät genauso angezeigt werden, ist die Verbindung sicher.</string>
|
||||
<string name="EncrinfoE2EAvailable">Ende-zu-Ende-Verschlüsselung verfügbar.</string>
|
||||
<string name="EncrinfoTransport">Transportverschlüsselung mindestens bis zu meinem Server.</string>
|
||||
<string name="EncrinfoNone">Keine Verschlüsselung bis zu meinem Server.</string>
|
||||
<string name="EncrinfoNoE2EExplain">Die Ende-zu-Ende-Verschlüsselung wird automatisch aktiviert, sobald der Kontakt Delta Chat oder eine andere Autocrypt-kompatible App verwendet.</string>
|
||||
<string name="EncrinfoFingerprints">Fingerabdrücke</string>
|
||||
<string name="Backup">Backup</string>
|
||||
<string name="ImportBackupExplain2">Um ein Backup zu importieren, kopieren Sie es nach <![CDATA[<i>]]>%1$s<![CDATA[</i>]]> und installieren Sie die App neu.</string>
|
||||
<string name="ReadReceiptMailBody">Dies ist eine Empfangsbestätigung für die Nachricht \"%1$s\".\n\nDiese Empfangsbestätigung sagt nur aus, dass die Nachricht am Gerät des Empfängers angezeigt wurde. Es gibt keine Garantie, dass der Empfänger die Nachricht gelesen hat.</string>
|
||||
<string name="ReadReceipt">Empfangsbestätigung</string>
|
||||
<string name="ReadReceiptMailBody">Dies ist eine Lesebestätigung für die Nachricht \"%1$s\".\n\nDiese Bestätigung sagt nur aus, dass die Nachricht am Gerät des Empfängers angezeigt wurde. Es gibt keine Garantie, dass der Empfänger die Nachricht gelesen hat.</string>
|
||||
<string name="ReadReceipt">Lesebestätigung</string>
|
||||
<string name="NameAndStatus">Name und Status</string>
|
||||
<string name="MyStatus">Mein Status</string>
|
||||
<string name="MyStatusExplain">Der Status wird z.B. in der E-Mail-Fußzeile angezeigt</string>
|
||||
@@ -399,8 +403,6 @@
|
||||
<string name="ImportPrivateKeys">Private Schlüssel importieren</string>
|
||||
<string name="ImportPrivateKeysAsk2">Private Schlüssel aus <![CDATA[<i>]]>%1$s<![CDATA[</i>]]> importieren?\n\n• Bereits vorhandene private Schlüssel bleiben erhalten\n\n• Der zuletzt importierte private Schlüssel wird der Standardschlüssel\n\nFortfahren?</string>
|
||||
<string name="NoRecentEmoji">Hier werden die zuletzt verwendeten Emoji angezeigt.</string>
|
||||
<string name="E2eeOffBecauseOfUser">Um die Ende-zu-Ende-Verschlüsselung zu aktivieren, aktivieren Sie die entsprechende Option in den Einstellungen. </string>
|
||||
<string name="E2eeOffBecauseOfRecipient">Die Ende-zu-Ende-Verschlüsselung wird aktiviert, sobald der Kontakt die entsprechende Einstellung aktiviert.</string>
|
||||
<string name="NotNow">Nicht jetzt</string>
|
||||
<string name="ArchiveChat">Chat archivieren</string>
|
||||
<string name="UnarchiveChat">Archivieren rückgängig</string>
|
||||
@@ -409,4 +411,50 @@
|
||||
<string name="LeaveGroup">Gruppe verlassen</string>
|
||||
<string name="AskLeaveGroup">Diese Gruppe verlassen?</string>
|
||||
<string name="Never">Niemals</string>
|
||||
<string name="AutocryptKeyTransferInitiate">Autocrypt-Setup-Nachricht versenden</string>
|
||||
<string name="AutocryptKeyTransfer">Autocrypt-Setup-Nachricht</string>
|
||||
<string name="AutocryptKeyTransferMsgBeforeSend">Eine <![CDATA[<i>]]>Autocrypt-Setup-Nachricht<![CDATA[</i>]]> überträgt Ihr Ende-zu-Ende-Setup sicher auf ein anderes Autocrypt-kompatibes Gerät.\n\nIhr Setup wird mit einem <![CDATA[<i>]]>Setup-Code<![CDATA[</i>]]> geschützt; dieser wird hier angezeigt und muss auf dem anderen Gerät eingetippt werden.</string>
|
||||
<string name="AutocryptKeyTransferMsgAfterSend">Ihr Setup wurde an Sie selbst verschickt. Wechseln sie nun zum anderen Gerät und öffnen die Setup-Nachricht. Sie werden dann aufgefordert einen Setup-Code einzugeben. Tippen Sie dort die folgenden Zahlen ein:\n\n%1$s\n\nWenn Sie fertig sind, ist Autocrypt auf dem anderen Gerät eingerichtet.</string>
|
||||
<string name="AutocryptSetupMessageSubject">Autocrypt-Setup-Nachricht</string>
|
||||
<string name="AutocryptSetupMessageGeneralBody">Dies ist die Autocrypt-Setup-Nachricht, um Ihr Ende-zu-Ende-Setup von einem Gerät auf das andere zu übertragen.\n\nUm Ihr Setup zu verwenden, öffnen Sie diese Nachricht in einer Autocrypt-kompatiblen App und geben Sie den Setup-Code ein, der Ihnen auf dem andern Gerät angezeigt wurde.</string>
|
||||
<string name="AutocryptSetupMessageTapBody">Dies ist die Autocrypt-Setup-Nachricht, um Ihr Ende-zu-Ende-Setup von einem Gerät auf das andere zu übertragen.\n\nTippen Sie auf diese Nachricht, um Ihr Setup zu verwenden.</string>
|
||||
<string name="AutocryptKeyTransferPleaseEnterCode">Bitte geben Sie den Setup-Code ein, der auf dem anderen Gerät angezeigt wird.</string>
|
||||
<string name="AutocryptKeyTransferBadCode">Ungültiger Setup-Code. Bitte versuchen Sie es erneut.\n\nWenn Sie den Setup-Code nicht mehr haben, können Sie auf dem anderen Gerät jederzeit eine neue Autocrypt-Setup-Nachricht mit einem neuen Setup-Code erzeugen.</string>
|
||||
<string name="AutocryptKeyTransferSucceeded">Ihr Schlüssel wurde erfolgreich übertragen. Dieses Gerät wird nun Autocrypt mit demselben Ende-zu-Ende-Setup wie das andere Gerät verwenden.</string>
|
||||
<string name="Retry">Wiederholen</string>
|
||||
<string name="SelfTalkSubtitle">Nachrichten von mir an mich</string>
|
||||
<string name="QrScan">QR-Code scannen</string>
|
||||
<string name="QrShow">QR-Code anzeigen</string>
|
||||
<string name="QrScanContainsText">Der gescannte QR-Code enthält folgenden Text:\n\n%1$s</string>
|
||||
<string name="QrScanContainsUrl">Der gescannte QR-Code enthält folgende URL:\n\n%1$s</string>
|
||||
<string name="OobFingerprint">Fingerabdruck</string>
|
||||
<string name="OobFingerprintAskOob">Kontakt überprüfen und den Chat mit <![CDATA[<b>]]>%1$s<![CDATA[</b>]]> starten?</string>
|
||||
<string name="OobFingerprintOk">Kontakt <![CDATA[<i>]]>%1$s<![CDATA[</i>]]> wurde überprüft. Chat starten?</string>
|
||||
<string name="OobFingerprintMismatch">Der gescannte Fingerabdruck stimmt <![CDATA[<b>]]>nicht<![CDATA[</b>]]> mit dem für <![CDATA[<i>]]>%1$s<![CDATA[</i>]]> gespeicherten Fingerabdruck überein.</string>
|
||||
<string name="OobFingerprintWithoutAddr">Dieser QR-Code enthält einen Fingerabdruck aber keine E-Mail-Adresse.\n\nUm diesen Fingerabdruck zu verifizieren, stellen Sie zunächst eine Verbindung zu dem Kontakt auf normalen Wege her.</string>
|
||||
<string name="OobSecureJoinRequested">%1$s tritt bei.</string>
|
||||
<string name="CannotDecryptBody">Diese Nachricht kann nicht entschlüsselt werden.\n\n• Das Problem kann möglicherweie einfach gelöst werden, indem Sie dem Absender eine Nachricht schicken und ihn bitten seine Nachricht erneut zu senden.\n\n• Wenn Sie Delta Chat oder ein anderes E-Mail-Programm auf diesem oder einem anderen Gerät neu eingerichtet haben, wollen Sie vll. das Ende-zu-Ende-Setup mit einer Autocrypt-Setup-Nachricht von dort übertragen.</string>
|
||||
<string name="Autocrypt">Autocrypt</string>
|
||||
<string name="AutocryptExplain"><![CDATA[<i>]]>Autocrypt<![CDATA[</i>]]> ist eine neue und offene Spezifikation zur Ende-zu-Ende-Verschlüsselung von E-Mails.\n\nIhr Ende-zu-Ende-Setup wird dabei automatisch eingerichtet uns Sie können es mit <![CDATA[<i>]]>Autocrypt-Setup-Nachrichten<![CDATA[</i>]]> zwischen Geräten übertragen.</string>
|
||||
<string name="NewVerifiedGroup">Neue verifizierte Gruppe</string>
|
||||
<string name="SharedChats">Gemeinsame Chats</string>
|
||||
<string name="VerifiedContact">Verifizierter Kontakt</string>
|
||||
<string name="Contact">Kontakt</string>
|
||||
<string name="VerifiedGroup">Verifizierte Gruppe</string>
|
||||
<string name="Group">Gruppe</string>
|
||||
<string name="EditedNameWillBeShared">Der neue Name wird an alle Gruppenteilnehmern gesendet.</string>
|
||||
<string name="QrShowInviteCode">QR-Einladungscode zeigen</string>
|
||||
<string name="E2EEncryptionPreferred">Ende-zu-Ende-Verschlüsselung bevorzugt.</string>
|
||||
<string name="OobAddrVerified">%1$s verifiziert.</string>
|
||||
<string name="OobAddrVerifiedIntroduceMyself">%1$s verifiziert, warte auf Bestätigung …</string>
|
||||
<string name="OobAskJoinVerifiedGroup">Der verifizierten Gruppe <![CDATA[<b>]]>%1$s<![CDATA[</b>]]> beitreten?</string>
|
||||
<!-- Translators: %1$s is replaced by an action, eg. MsgMemberAddedToGroup, MsgMemberRemovedFromToGroup, MsgGroupNameChanged or MsgGroupImageChanged. If the action ends with a full stop, this is removed.
|
||||
%2$s is replaced by a the name of the user that made this action.
|
||||
Resulting strings might be "Member Alice added by Bob." or 'Group name changed from "Foo" to "Bar" by Claire.
|
||||
If you do not find a correct grammar for your language you can just use "%1$s (by %2$s)" or "%2$s: %1$s" -->
|
||||
<string name="ActionByUser">%1$s von %2$s.</string>
|
||||
<!-- Translators: %1$s is replaced by an action, eg. MsgMemberAddedToGroup, MsgMemberRemovedFromToGroup, MsgGroupNameChanged or MsgGroupImageChanged. If the action ends with a full stop, this is removed.
|
||||
Resulting strings might be "Member Alice added by me." or 'Group name changed from "Foo" to "Bar" by me.
|
||||
If you do not find a correct grammar for your language you can just use "%1$s (by me)" or "Me: %1$s" -->
|
||||
<string name="ActionBySelf">%1$s von mir.</string>
|
||||
</resources>
|
||||
|
||||
@@ -253,6 +253,9 @@
|
||||
<item quantity="one">¿Borrar mensaje %d? El mensaje se borrará también del servidor.</item>
|
||||
<item quantity="other">%</item>
|
||||
</plurals>
|
||||
<!-- Translators: The first string placeholder gets replaced with the
|
||||
text "%d new messages", so the complete sentence would be e.g.
|
||||
"4 new messages in 2 chats". -->
|
||||
<plurals name="NewMessagesInChats">
|
||||
<item quantity="one">%1$s en%2$s conversación</item>
|
||||
<item quantity="other">%1$s en%2$s conversaciones</item>
|
||||
@@ -281,6 +284,9 @@
|
||||
<item quantity="one">%d mes</item>
|
||||
<item quantity="other">%d meses</item>
|
||||
</plurals>
|
||||
<!-- Translators: The second string placeholder gets replaced with the
|
||||
text "%d minutes", so the complete sentence would be e.g.
|
||||
"At most 8 notifications within 3 minutes". -->
|
||||
<plurals name="MaxNotifications">
|
||||
<item quantity="one">Máximo %1$d notificación con %2$d</item>
|
||||
<item quantity="other">Máximo %1$d notificaciones con %2$d</item>
|
||||
@@ -298,6 +304,7 @@
|
||||
<string name="AccountSettings">Ajustes de cuenta</string>
|
||||
<string name="MyAccount">Mi cuenta</string>
|
||||
<string name="MyName">Mi nombre</string>
|
||||
<string name="MyNameExplain">Su nombre se muestra a los receptores. Si no introduce un nombre aquí, solo sera enviada su dirección de Email.</string>
|
||||
<string name="Password">Contraseña</string>
|
||||
<string name="SmtpPassword">Contraseña SMTP</string>
|
||||
<string name="FromAbove">De arriba</string>
|
||||
@@ -322,6 +329,7 @@
|
||||
<string name="AskStartChatWith">¿Iniciar una conversación con <b>%1$s</b>?</string>
|
||||
<string name="DeaddropHint">Haga clic en la flecha de réplica para comenzar una conversación.</string>
|
||||
<string name="NotYetImplemented">Esta función no está disponible o está incompleta.</string>
|
||||
<string name="DefaultStatusText">Enviado desde mi aplicación de mensajería Delta Chat: https://delta.chat/es</string>
|
||||
<string name="Name" >Nombre</string>
|
||||
<string name="EmailAddress">Dirección de correo</string>
|
||||
<string name="CannotDeleteContact">No puede borrar contactos en uso. En su lugar, bloquee el contacto.</string>
|
||||
@@ -350,6 +358,8 @@
|
||||
<string name="ErrSelfNotInGroup">Debe ser miembro del grupo para realizar esta acción.</string>
|
||||
<string name="MsgGroupLeft">Grupo abandonado.</string>
|
||||
<string name="NoMessagesHint">Enviar mensaje a <b>%1$s</b>:\n\n• No importa si <b>%2$s</b> no usa Delta Chat.\n\n• El primer mensaje puede tardar un momento.</string>
|
||||
<string name="SendNRcvReadReceipts">Recibir y enviar recibos de devolución</string>
|
||||
<string name="PreferE2EEncryption">Preferir cifrado punto a punto</string>
|
||||
<string name="E2EManagePrivateKeys">Gestionar claves privadas</string>
|
||||
<string name="E2ECompareKeys">Comparar claves</string>
|
||||
<string name="ForwardToTitle">Elige el chat …</string>
|
||||
@@ -360,9 +370,57 @@
|
||||
<string name="NoNetwork">Red no disponible.</string>
|
||||
<string name="Audio">Sonido</string>
|
||||
<string name="PleaseCutVideoToMaxSize">Reduzca el tamaño del vídeo hasta un máximo de %1$s, por favor.</string>
|
||||
<string name="PermNotificationTitle">Conectado a %1$s</string>
|
||||
<string name="PermNotificationText">Esperando mensajes...</string>
|
||||
<string name="SettingsFor">Ajustes para %1$s</string>
|
||||
<string name="AutoplayGifs">Autorreproducción de GIF</string>
|
||||
<string name="HelpUrl">https://delta.chat/es/help</string>
|
||||
<string name="EncryptedMessage">Mensaje cifrado</string>
|
||||
<string name="Encryption">Encriptación</string>
|
||||
<string name="EncrinfoTransport">Capa te transporte cifrada al menos hasta mi servidor.</string>
|
||||
<string name="EncrinfoNone">No hay cifrado hasta mi servidor.</string>
|
||||
<string name="EncrinfoFingerprints">Huellas criptográficas</string>
|
||||
<string name="Backup">Cópia de seguridad</string>
|
||||
<string name="ImportBackupExplain2">Para importar un respaldo, copie el respaldo a <![CDATA[<i>]]>%1$s<![CDATA[</i>]]> y reinstale la aplicación.</string>
|
||||
<string name="ReadReceiptMailBody">Este es un acuse de recibo para el mensaje \"%1$s\".\n\nEste recibo solo acredita que el mensaje fue mostrado en el dispositivo del receptor. No hay garantías de que el receptor haya leído su contenido.</string>
|
||||
<string name="ReadReceipt">Recibos de devolución</string>
|
||||
<string name="NameAndStatus">Nombre y estado</string>
|
||||
<string name="MyStatus">Mi estado</string>
|
||||
<string name="MyStatusExplain">El estado es mostrado al pie del correo, entre otros lugares.</string>
|
||||
<string name="MsgGroupImageDeleted">Imagen de grupo eliminada.</string>
|
||||
<string name="AskDeleteGroupImage">¿Estás seguro de eliminar la imagen de grupo?\n\nEsto afectara todos los dispositivos de todos los participantes del grupo.</string>
|
||||
<string name="ExportImportHeader">Exportar e importar</string>
|
||||
<string name="ImportExportExplain">¡Los archivos exportados tendrán llaves secretas! Guardalas en un lugar seguro o eliminalas lo antes posible.</string>
|
||||
<string name="EnterPasswordToContinue">Ingresa la contraseña de %1$s para continuar:</string>
|
||||
<string name="IncorrectPassword">Contraseña incorrecta.</string>
|
||||
<string name="ImportBackupAsk">Se encontró un respaldo en <![CDATA[<i>]]>%1$s<![CDATA[</i>]]>.\n\n¿Querés importarlo y usar todos los datos y configuraciones que contiene?</string>
|
||||
<string name="ImportBackup">Importar respaldo</string>
|
||||
<string name="NoBackupFound">No se encontraron respaldos.\n\nCopiar el respaldo a <![CDATA[<i>]]>%1$s<![CDATA[</i>]]> e intenta nuevamente. Si no, presiona \"Empieza a conversar\" para ir al proceso normal configuración.</string>
|
||||
<string name="FilesSuccessfullyExported">Los archivos fueron exportados a <![CDATA[<i>]]>%1$s<![CDATA[</i>]]>.</string>
|
||||
<string name="ExportBackup">Exportar respaldo</string>
|
||||
<string name="ExportPrivateKeys">Exportar llaves secretas</string>
|
||||
<string name="ImportPrivateKeys">Importar llaves secretas</string>
|
||||
<string name="ImportPrivateKeysAsk2">¿Deseas importar las llaves secretas desde <![CDATA[<i>]]>%1$s<![CDATA[</i>]]>?\n\n• Las llaves secretas que ya existen no seran eliminadas?\n\n• Las ultimas llaves que se importen serán usadas como las llaves por defecto</string>
|
||||
<string name="NoRecentEmoji">Los emojis que se hayan usado últimamente serán mostrados aquí.</string>
|
||||
<string name="NotNow">No ahora.</string>
|
||||
<string name="ArchiveChat">Archivar conversación </string>
|
||||
<string name="UnarchiveChat">Desarchivar conversacion</string>
|
||||
<string name="ArchivedChats">Conversaciones archivadas</string>
|
||||
<string name="Archived">Archivado</string>
|
||||
<string name="LeaveGroup">Dejar el grupo</string>
|
||||
<string name="AskLeaveGroup">¿Estas seguro que querés dejar el grupo?</string>
|
||||
<string name="Never">Nunca</string>
|
||||
<string name="AutocryptKeyTransferInitiate">Iniciar la transferencia de llaves de Autocrypt</string>
|
||||
<string name="AutocryptKeyTransfer">Transferencia de llaves de Autocrypt</string>
|
||||
<string name="AutocryptKeyTransferMsgBeforeSend">La <![CDATA[<i>]]> Transferencia de Llaves de Autocrypt <![CDATA[</i>]]> requiere que el cliente de correos del otro dispositivo sea compatible con Autocrypt.\n\nPodés enviarte la llave secreta a vos mismo. La llave se cifrara con una contraseña que se mostrara aquí y debe ser ingresada en el otro dispositivo.</string>
|
||||
<string name="AutocryptKeyTransferMsgAfterSend">Se te ha enviado tu llave. Cambiá al otro dispositivo y abrí el mensaje de configuración. Se te pedirá una contraseña. Escribí los siguientes dígitos en la casilla:\n\n%1$s\n\nCuando termines, tu otro dispositivo estará listo para usar Autocrypt.</string>
|
||||
<string name="AutocryptSetupMessageSubject"> Mensaje de configuración de Autocrypt</string>
|
||||
<string name="AutocryptSetupMessageGeneralBody">Este es un Mensaje de configuración de Autocrypt, se usa para transferir tu llave entre los clientes.\n\nPara descifrar y usar tu llave, abrí el mensaje en un cliente compatible con Autocrypt e ingresa la contraseña que mostrada en el dispositivo generador.</string>
|
||||
<string name="AutocryptSetupMessageTapBody">Este es un Mensaje de configuración de Autocrypt usado para transferir tu llave entre los clientes.\n\nPara descifrar y usar tu llave, toca sobre este mensaje.</string>
|
||||
<string name="AutocryptKeyTransferPleaseEnterCode">Por favor entre la contraseña mostrada en el otro dispositivo.</string>
|
||||
<string name="AutocryptKeyTransferBadCode">Contraseña incorrecta. Por favor intenta de nuevo.\n\nSi no la recordás, volvé a iniciar la transferencia de llave en el otro dispositivo.</string>
|
||||
<string name="AutocryptKeyTransferSucceeded">Transferencia de llave exitosa. Este dispositivo esta listo para usar Autocrypt con la misma llave que el otro.</string>
|
||||
<string name="Retry">Volver a intentar</string>
|
||||
<string name="SelfTalkSubtitle">Mensaje enviado a mi mismo</string>
|
||||
<string name="Contact">Contacto</string>
|
||||
</resources>
|
||||
|
||||
@@ -0,0 +1,380 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
|
||||
|
||||
<resources xmlns:tools="http://schemas.android.com/tools">
|
||||
<string name="AppName">Delta Chat</string>
|
||||
<!--chats view-->
|
||||
<string name="Settings">Ezarpenak</string>
|
||||
<string name="NewGroup">Talde berria</string>
|
||||
<string name="NoResult">Emaitzarik ez.</string>
|
||||
<string name="NoChats">Txatik ez oraindik.</string>
|
||||
<string name="DeleteChat">Ezabatu txata</string>
|
||||
<string name="SelectChat">Hautatu txata ...</string>
|
||||
<string name="Search">Bilatu</string>
|
||||
<string name="MuteNotifications">Mututu jakinarazpenak</string>
|
||||
<string name="MuteFor">Mututu %1$s</string>
|
||||
<string name="UnmuteNotifications">Desmututu</string>
|
||||
<string name="Draft">Zirriborroa</string>
|
||||
<!--audio view-->
|
||||
<string name="NoAudio">Zure gailuko musika galeriara gehitutako fitxategiak hemen agertuko dira.</string>
|
||||
<string name="AttachMusic">Musika</string>
|
||||
<!--documents view-->
|
||||
<string name="SelectFile">Hautatu fitxategia</string>
|
||||
<string name="FreeOfTotal">%1$s / %2$s libre</string>
|
||||
<string name="ErrorHint">Errore ezezaguna</string>
|
||||
<string name="AccessError">Sarbide errorea</string>
|
||||
<string name="NoFiles">Fitxategirik ez oraindik ...</string>
|
||||
<string name="NotMounted">Biltegiratze muntatu gabea</string>
|
||||
<string name="UsbActive">USB transferentzia abian</string>
|
||||
<string name="InternalStorage">Barne biltegiratzea</string>
|
||||
<string name="ExternalStorage">Kanpo biltegiratzea</string>
|
||||
<string name="SystemRoot">Sistemako erroa</string>
|
||||
<string name="SdCard">SD txartela</string>
|
||||
<string name="Folder">Karpeta</string>
|
||||
<string name="GalleryInfo">Konprimitu gabeko irudiak bidaltzeko</string>
|
||||
<!--chat view-->
|
||||
<string name="ChatGallery">Galeria</string>
|
||||
<string name="ChatCamera">Kamera</string>
|
||||
<string name="NoMessages">Mezurik ez.</string>
|
||||
<string name="ForwardedMessage">Birbidalitako mezua</string>
|
||||
<string name="From">Nork</string>
|
||||
<string name="NoRecent">Azkenik ez</string>
|
||||
<string name="TypeMessage">Mezua</string>
|
||||
<string name="SlideToCancel">Alboratu uzteko</string>
|
||||
<string name="SaveToDownloads">Gorde \"Deskargak\" karpetan</string>
|
||||
<string name="SaveToMusic">Gorde \"Musika\" karpetan</string>
|
||||
<string name="Share">Partekatu</string>
|
||||
<string name="SendItems">Bidali %1$s</string>
|
||||
<string name="ClearRecentEmoji">Garbitu azken emojiak?</string>
|
||||
<string name="AddShortcut">Gehitu trepeta hasiera pantailan</string>
|
||||
<string name="ShortcutAdded">Trepeta gehitu da hasiera pantailan</string>
|
||||
<!--notification-->
|
||||
<string name="Reply">Erantzun</string>
|
||||
<string name="ReplyToGroup">Erantzun %1$s taldeari</string>
|
||||
<string name="ReplyToContact">Erantzun %1$s erabiltzaileari</string>
|
||||
<!--contacts view-->
|
||||
<string name="NoContacts">Kontakturik ez oraindik.</string>
|
||||
<!--group create view-->
|
||||
<string name="SendMessageTo">Bidali mezuak hona ...</string>
|
||||
<string name="EnterGroupNamePlaceholder">Sartu taldearen izena</string>
|
||||
<!--group info view-->
|
||||
<string name="AddMember">Gehitu kidea</string>
|
||||
<string name="Notifications">Jakinarazpenak</string>
|
||||
<string name="RemoveMember">Kendu kidea</string>
|
||||
<!--contact info view-->
|
||||
<string name="NewContactTitle">Kontaktu berria</string>
|
||||
<string name="BlockContact">Blokeatu kontaktua</string>
|
||||
<string name="DeleteContact">Ezabatu kontaktua</string>
|
||||
<string name="Info">Informazioa</string>
|
||||
<!--settings view-->
|
||||
<string name="TextSize">Mezuen letra-tamaina</string>
|
||||
<string name="UnblockContact">Desblokeatu kontaktua</string>
|
||||
<string name="NoBlocked">Blokeatutako kontakturik ez</string>
|
||||
<string name="DefaultForNormalMessages">Mezu arruntak</string>
|
||||
<string name="MessagePreview">Aurreikusi mezua</string>
|
||||
<string name="DefaultForGroupMessages">Talde mezuak</string>
|
||||
<string name="Sound">Soinua</string>
|
||||
<string name="InAppNotifications">Aplikazio barneko jakinarazpenak</string>
|
||||
<string name="Vibrate">Bibratu</string>
|
||||
<string name="ResetAllNotifications">Leheneratu jakinarazpen guztiak</string>
|
||||
<string name="NotificationsAndSounds">Jakinarazpenak eta soinuak</string>
|
||||
<string name="BlockedContacts">Blokeatutako kontaktuak</string>
|
||||
<string name="Default">Lehenetsia</string>
|
||||
<string name="OnlyIfSilent">Modu isilean besterik ez</string>
|
||||
<string name="ChatBackground">Txataren atzealdea</string>
|
||||
<string name="SendByEnter">Bidali \'sartu\' teklarekin</string>
|
||||
<string name="Help">Laguntza</string>
|
||||
<string name="Enabled">Bai</string>
|
||||
<string name="Disabled">Ez</string>
|
||||
<string name="LedColor">LED-aren kolorea</string>
|
||||
<string name="BadgeNumber">Erabili ikonoa kopurua adierazteko ahal bada</string>
|
||||
<string name="Short">Laburra</string>
|
||||
<string name="Long">Luzea</string>
|
||||
<string name="RaiseToSpeak">Goratu hitz egiteko</string>
|
||||
<string name="EditName">Editatu izena</string>
|
||||
<string name="NotificationsPriority">Ikusi</string>
|
||||
<string name="NotificationsPriorityDefault">Lehentasun arrunta</string>
|
||||
<string name="NotificationsPriorityHigh">Goi lehentasuna</string>
|
||||
<string name="NotificationsPriorityMax">Lehentasun gorena</string>
|
||||
<string name="RepeatNotifications">Errepikatu jakinarazpenak</string>
|
||||
<string name="NotificationsOther">Bestelakoak</string>
|
||||
<string name="InChatSound">Txat bitarteko soinuak</string>
|
||||
<string name="SmartNotifications">Mugatu jakinarazpenak</string>
|
||||
<string name="SmartNotificationsSoundAtMost">Max.</string>
|
||||
<string name="SmartNotificationsTimes">aldiz</string>
|
||||
<string name="SmartNotificationsWithin">tartean</string>
|
||||
<string name="SmartNotificationsMinutes">minutu</string>
|
||||
<string name="DirectShare">Partekatze zuzena</string>
|
||||
<string name="DirectShareInfo">Erakutsi azken txatak partekatu menuan</string>
|
||||
<!--cache view-->
|
||||
<string name="CacheSettings">Biltegiratzea</string>
|
||||
<string name="KeepMedia">Gorde multimedia</string>
|
||||
<string name="KeepMediaInfo">Denbora honetan <![CDATA[atzitu ez]]> dituzun argazki, bideo eta hodeiko txatetako bestelako fitxategiak gailu honetatik kenduko dira espazioa aurrezteko.</string>
|
||||
<string name="KeepMediaForever">Betirako</string>
|
||||
<!--passcode view-->
|
||||
<string name="Passcode">Pasakode blokeoa</string>
|
||||
<string name="ChangePasscode">Aldatu pasakodea</string>
|
||||
<string name="ChangePasscodeInfo">Pasakode gehigarria ezartzen duzunean giltzarrapoaren ikonoa agertuko da txaten orrian. Sakatu aplikazioa blokeatzeko.\n\nOharra: Pasakodea ahazten baduzu, aplikazioa desinstalatu eta berriro instalatu beharko duzu.</string>
|
||||
<string name="PasscodePIN">PIN</string>
|
||||
<string name="PasscodePassword">Pasahitza</string>
|
||||
<string name="EnterCurrentPasscode">Sartu zure oraingo pasakodea</string>
|
||||
<string name="EnterNewFirstPasscode">Sartu pasakodea</string>
|
||||
<string name="EnterNewPasscode">Sartu zure pasakode berria</string>
|
||||
<string name="EnterYourPasscode">Sartu zure pasakodea</string>
|
||||
<string name="ReEnterYourPasscode">Sartu berriro zure pasakode berria</string>
|
||||
<string name="PasscodeDoNotMatch">Pasakodeak ez datoz bat</string>
|
||||
<string name="AutoLock">Blokeo automatikoa</string>
|
||||
<string name="AutoLockInfo">Eskatu pasakodea aplikazioa denbora batez erabili ez bada.</string>
|
||||
<string name="UnlockFingerprint">Desblokeatu hatz-markarekin</string>
|
||||
<string name="FingerprintInfo">Berretsi hatz-marka jarraitzeko</string>
|
||||
<string name="FingerprintNotRecognized">Eza da hatz-marka ezagutu. Saiatu berriro</string>
|
||||
<!--photo gallery view-->
|
||||
<string name="SaveToGallery">Gorde \"Galeria\"-n</string>
|
||||
<string name="Of">%1$d / %2$d</string>
|
||||
<string name="Gallery">Galeria</string>
|
||||
<string name="AllPhotos">Argazki guztiak</string>
|
||||
<string name="AllVideo">Bideo guztiak</string>
|
||||
<string name="NoPhotos">Argazkirik ez oraindik</string>
|
||||
<string name="NoVideo">Bideorik ez oraindik</string>
|
||||
<string name="EditImage">Editatu irudia</string>
|
||||
<string name="Enhance">Hobetu</string>
|
||||
<string name="Highlights">Distirak</string>
|
||||
<string name="Contrast">Kontrastea</string>
|
||||
<string name="Exposure">Esposizioa</string>
|
||||
<string name="Warmth">Berotasuna</string>
|
||||
<string name="Saturation">Saturazioa</string>
|
||||
<string name="Shadows">Gerizak</string>
|
||||
<string name="Grain">Garaua</string>
|
||||
<string name="Sharpen">Fokatu</string>
|
||||
<string name="Fade">Desagertu</string>
|
||||
<string name="Tint">Tindatu</string>
|
||||
<string name="TintShadows">Gerizak</string>
|
||||
<string name="TintHighlights">Distirak</string>
|
||||
<string name="Curves">Kurbak</string>
|
||||
<string name="CurvesAll">Dena</string>
|
||||
<string name="CurvesRed">Gorria</string>
|
||||
<string name="CurvesGreen">Berdea</string>
|
||||
<string name="CurvesBlue">Urdina</string>
|
||||
<string name="Blur">Lausotu</string>
|
||||
<string name="BlurOff">Ez</string>
|
||||
<string name="BlurLinear">Lineala</string>
|
||||
<string name="BlurRadial">Erradiala</string>
|
||||
<string name="DiscardChanges">Baztertu aldaketak?</string>
|
||||
<string name="ClearButton">Garbitu</string>
|
||||
<string name="PickerPhotos">Argazkiak</string>
|
||||
<string name="PickerVideo">Bideoa</string>
|
||||
<!--privacy settings-->
|
||||
<string name="PrivacySettings">Pribatutasuna eta segurtasuna</string>
|
||||
<string name="SecurityTitle">Segurtasuna</string>
|
||||
<!--edit video view-->
|
||||
<string name="SendVideo">Bidali bideoa</string>
|
||||
<!--button titles-->
|
||||
<string name="Done">Egina</string>
|
||||
<string name="Open">Ireki</string>
|
||||
<string name="Cancel">Utzi</string>
|
||||
<string name="Edit">Editatu</string>
|
||||
<string name="Send">Bidali</string>
|
||||
<string name="CopyToClipboard">Kopiatu arbelera</string>
|
||||
<string name="Delete">Ezabatu</string>
|
||||
<string name="Forward">Birbidali</string>
|
||||
<string name="FromCamera">Kameratik</string>
|
||||
<string name="FromGalley">Galeriatik</string>
|
||||
<string name="Set">Ezarrita</string>
|
||||
<string name="OK">Ados</string>
|
||||
<!--messages-->
|
||||
<string name="AttachPhoto">Argazkia</string>
|
||||
<string name="AttachVideo">Bideoa</string>
|
||||
<string name="AttachGif">GIF</string>
|
||||
<string name="AttachContact">Kontaktua</string>
|
||||
<string name="AttachDocument">Fitxategia</string>
|
||||
<string name="AttachVoiceMessage">Ahots mezua</string>
|
||||
<string name="FromSelf">Nik</string>
|
||||
<!--Alert messages-->
|
||||
<string name="NoHandleAppInstalled">Ez dago \'%1$s\' ireki dezakeen aplikaziorik instalatuta, instalatu bat aurrera jarraitzeko.</string>
|
||||
<string name="ContactAlreadyInGroup">Kontaktua badago talde honetan.</string>
|
||||
<string name="ForwardMessagesTo">Birbidali hautatutako mezuak hona: <![CDATA[]]>%1$s<![CDATA[]]>?</string>
|
||||
<string name="SendMessagesTo">Bidali mezuak hona: <![CDATA[]]>%1$s<![CDATA[]]>?</string>
|
||||
<string name="AreYouSureDeleteThisChat">Ezabatu txat hau? Ez da txaten zerrendan berriro erakutsiko, mezuak zerbitzarian mantenduko dira.</string>
|
||||
<string name="AreYouSureBlockContact">Ziur kontaktu hau blokeatu nahi duzula?</string>
|
||||
<string name="AreYouSureDeleteContact">Ziur kontaktu hau ezabatu nahi duzula?</string>
|
||||
<string name="PermissionNoAudio">Mikrofonoa atzitzeko baimena behar da ahots mezuak bidali ahal izateko.</string>
|
||||
<string name="PermissionOpenSettings">Ezarpenak</string>
|
||||
<!--Intro view-->
|
||||
<string name="Intro1Headline">Delta Chat</string>
|
||||
<string name="Intro2Headline">Independientea</string>
|
||||
<string name="Intro3Headline">Azkarra</string>
|
||||
<string name="Intro4Headline">Ahaltsua</string>
|
||||
<string name="Intro5Headline">Librea</string>
|
||||
<string name="Intro6Headline">Zifratua</string>
|
||||
<string name="Intro7Headline">Fidagarria</string>
|
||||
|
||||
<string name="IntroStartMessaging">Hasi txateatzen</string>
|
||||
<!--plural-->
|
||||
<plurals name="Members">
|
||||
<item quantity="one">kide %d</item>
|
||||
<item quantity="other">%d kide</item>
|
||||
</plurals>
|
||||
<plurals name="Contacts">
|
||||
<item quantity="one">kontaktu %d</item>
|
||||
<item quantity="other">%d kontaktu</item>
|
||||
</plurals>
|
||||
<plurals name="MeAndMembers">
|
||||
<item quantity="one">kide %d eta ni</item>
|
||||
<item quantity="other">%d kide eta ni</item>
|
||||
</plurals>
|
||||
<plurals name="NewMessages">
|
||||
<item quantity="one">Mezu berri %d</item>
|
||||
<item quantity="other">%d mezu berri</item>
|
||||
</plurals>
|
||||
<plurals name="messages">
|
||||
<item quantity="one">Mezu %d</item>
|
||||
<item quantity="other">%d mezu</item>
|
||||
</plurals>
|
||||
<!-- Translators: The first string placeholder gets replaced with the
|
||||
text "%d new messages", so the complete sentence would be e.g.
|
||||
"4 new messages in 2 chats". -->
|
||||
<plurals name="NewMessagesInChats">
|
||||
<item quantity="one">%1$s txat %2$dean</item>
|
||||
<item quantity="other">%1$s %2$d txatetan</item>
|
||||
</plurals>
|
||||
<plurals name="Chats">
|
||||
<item quantity="one">Txat %d</item>
|
||||
<item quantity="other">%d txat</item>
|
||||
</plurals>
|
||||
<plurals name="Minutes">
|
||||
<item quantity="one">minutu %d</item>
|
||||
<item quantity="other">%d minutu</item>
|
||||
</plurals>
|
||||
<plurals name="Hours">
|
||||
<item quantity="one">ordu %d</item>
|
||||
<item quantity="other">%d ordu</item>
|
||||
</plurals>
|
||||
<plurals name="Days">
|
||||
<item quantity="one">egun %d</item>
|
||||
<item quantity="other">%d egun</item>
|
||||
</plurals>
|
||||
<plurals name="Weeks">
|
||||
<item quantity="one">aste %d</item>
|
||||
<item quantity="other">%d aste</item>
|
||||
</plurals>
|
||||
<plurals name="Months">
|
||||
<item quantity="one">hilabete %d</item>
|
||||
<item quantity="other">%d hilabete</item>
|
||||
</plurals>
|
||||
<!-- Translators: The second string placeholder gets replaced with the
|
||||
text "%d minutes", so the complete sentence would be e.g.
|
||||
"At most 8 notifications within 3 minutes". -->
|
||||
<plurals name="MaxNotifications">
|
||||
<item quantity="one">Gehienez jakinarazpen %1$d %2$sko tartean</item>
|
||||
<item quantity="other">Gehienez %1$d jakinarazpen %2$sko tartean</item>
|
||||
</plurals>
|
||||
<string name="formatDateAtTime">%1$s - %2$s</string>
|
||||
<string name="AccountSettings">Kontuaren ezarpenak</string>
|
||||
<string name="MyAccount">Nire kontua</string>
|
||||
<string name="MyName">Nire izena</string>
|
||||
<string name="MyNameExplain">Zure izena, hartzaileen ikusiko dutena. Hutsik lagaz gero, zure e-mail helbidea bidaliko da bakarrik.</string>
|
||||
<string name="Password">Pasahitza</string>
|
||||
<string name="SmtpPassword">SMTP pasahitza</string>
|
||||
<string name="FromAbove">Goitik</string>
|
||||
<string name="SmtpLoginname">SMTP erabiltzaile-izena</string>
|
||||
<string name="SmtpPort">SMTP ataka</string>
|
||||
<string name="Automatic">Automatikoa</string>
|
||||
<string name="ImapServer">IMAP zerbitzaria</string>
|
||||
<string name="ImapLoginname">IMAP erabiltzaile-izena</string>
|
||||
<string name="SmtpServer">SMTP zerbitzaria</string>
|
||||
<string name="ImapPort">IMAP ataka</string>
|
||||
<string name="InboxHeadline">Sarrera ontzia</string>
|
||||
<string name="OutboxHeadline">Irteera ontzia</string>
|
||||
<string name="MyAccountExplain">E-mail hornitzaile ezagunentzat, ezarpen gehigarriak automatikoki zehaztuko dira.</string>
|
||||
<string name="AccountNotConfigured">Kontua konfiguratu gabe</string>
|
||||
<string name="AboutThisProgram">Delta Chat-i buruz</string>
|
||||
<string name="NotSet">Ezarri gabe</string>
|
||||
<string name="NewChat">Txat berria</string>
|
||||
<string name="Deaddrop">Kontaktu eskaera</string>
|
||||
<string name="DeaddropInChatlist">Erakutsi kontaktu eskaerak txat zerrendan</string>
|
||||
<string name="MuteAlways">Beti mutututa</string>
|
||||
<string name="DeaddropHint">Sakatu erantzun geziak txateatzen hasteko.</string>
|
||||
<string name="NotYetImplemented">Funtzio hau ez dago eskuragarri edo osorik.</string>
|
||||
<string name="DefaultStatusText">Delta Chat mezulariarekin bidalita: https://delta.chat</string>
|
||||
<string name="Name" >Izena</string>
|
||||
<string name="EmailAddress">E-mail helbidea</string>
|
||||
<string name="CannotDeleteContact">Ezin dira erabiltzen dituzun kontaktuak ezabatu, baina blokeatu dezakezu.</string>
|
||||
<string name="BadEmailAddress">E-mail helbide okerra.</string>
|
||||
<string name="ContactCreated">Kontaktua sortuta.</string>
|
||||
<string name="ViewProfile">Ikusi profila</string>
|
||||
<!-- Translators: please use a very short string here, it should not much longer than
|
||||
the string needed for video time+size (0:00, 12,3 Mib) -->
|
||||
<string name="OneMoment">Une bat mesedez ...</string>
|
||||
<string name="NoChatsHelp">Hasi txateatzen \"Txat berria\" botoia sakatuz behean eskuinean, edo sakatu \"Menua\" botoia aukera gehiagorako.</string>
|
||||
<string name="Intro7Message"><![CDATA[<b>Delta Chat</b>]]> lantokirako segurua da, bateragarria eta estandarretan oinarritua.</string>
|
||||
<string name="InviteMenuEntry">Bidali gonbidapenak</string>
|
||||
<string name="InviteText">Delta Chat mezularia erabiltzen du orain - %1$s - hona idatzi nazakezu%2$s</string>
|
||||
<string name="AdvancedSettings">Ezarpen aurreratuak</string>
|
||||
<string name="AskResetNotifications">Leheneratu jakinarazpen eta soinuen ezarpen guztiak uneko orria, kontaktuak eta taldeetan?</string>
|
||||
<string name="AttachFiles">Erantsi fitxategiak</string>
|
||||
<string name="ErrGroupNameEmpty">Sartu izen bat taldearentzat.</string>
|
||||
<string name="MsgNewGroupDraft">Kaixo, \"%1$s\" taldea sortu dut guretzat.</string>
|
||||
<string name="MsgGroupNameChanged">Taldearen izena aldatuta \"%1$s\"-tik \"%2$s\"-ra</string>
|
||||
<string name="MsgGroupImageChanged">Taldeko irudia aldatu da.</string>
|
||||
<string name="MsgMemberAddedToGroup">%1$s kidea gehituta.</string>
|
||||
<string name="MsgMemberRemovedFromToGroup">%1$s kidea kenduta.</string>
|
||||
<string name="AskAddMemberToGroup">Gehitu <![CDATA[<b>]]>%1$s<![CDATA[</b>]]> taldera?</string>
|
||||
<string name="AskRemoveMemberFromGroup">Kendu <![CDATA[<b>]]>%1$s<![CDATA[</b>]]> taldetik?</string>
|
||||
<string name="ErrSelfNotInGroup">Taldeko kidea izan behar zara ekintza hau burutzeko.</string>
|
||||
<string name="MsgGroupLeft">Taldetik aterata.</string>
|
||||
<string name="SendNRcvReadReceipts">Jaso eta bidali irakurragiriak</string>
|
||||
<string name="PreferE2EEncryption">Hobetsi muturretik muturrerako zifratzea</string>
|
||||
<string name="E2EManagePrivateKeys">Kudeatu gako sekretuak</string>
|
||||
<string name="E2ECompareKeys">Konparatu gakoak</string>
|
||||
<string name="ForwardToTitle">Birbidali hona ...</string>
|
||||
<string name="SelectContact">Hautatu kontaktua</string>
|
||||
<string name="DoneHint">Egina.</string>
|
||||
<string name="FileNotFound">Ezin izan da %1$s aurkitu</string>
|
||||
<string name="Error">Errorea: %1$s</string>
|
||||
<string name="NoNetwork">Sarea ez dago eskuragarri.</string>
|
||||
<string name="Audio">Audioa</string>
|
||||
<string name="PleaseCutVideoToMaxSize">Moztu bideoa %1$s edo txikiagoa den tamaina batera.</string>
|
||||
<string name="PermNotificationTitle">%1$s zerbitzarira konektatuta</string>
|
||||
<string name="PermNotificationText">Mezuen zain ...</string>
|
||||
<string name="SettingsFor">%1$s zerbitzariko ezarpenak</string>
|
||||
<string name="AutoplayGifs">Abiatu GIF-ak automatikoki</string>
|
||||
<string name="EncryptedMessage">Zifratutako mezua</string>
|
||||
<string name="Encryption">Zifratzea</string>
|
||||
<string name="EncrinfoTransport">Garraio-zifratzea nire zerbitzarira arte gutxienez.</string>
|
||||
<string name="EncrinfoNone">Zifratzerik ez nire zerbitzarira.</string>
|
||||
<string name="EncrinfoFingerprints">Hatz-markak</string>
|
||||
<string name="Backup">Babeskopia</string>
|
||||
<string name="ImportBackupExplain2">Babeskopia bat inportatzeko, kopiatu babeskopia hemen <![CDATA[<i>]]>%1$s<![CDATA[</i>]]> eta berriro instalatu aplikazioa.</string>
|
||||
<string name="ReadReceipt">Itzuli irakurragiria</string>
|
||||
<string name="NameAndStatus">Izena eta leloa</string>
|
||||
<string name="MyStatus">Nire leloa</string>
|
||||
<string name="MyStatusExplain">Leloa e-mailen oinean eta beste toki batzuetan ikusten da.</string>
|
||||
<string name="MsgGroupImageDeleted">Taldearen irudia ezabatuta.</string>
|
||||
<string name="ExportImportHeader">Esportatu eta inportatu</string>
|
||||
<string name="IncorrectPassword">Pasahitz okerra.</string>
|
||||
<string name="ImportBackup">Inportatu babeskopia</string>
|
||||
<string name="ExportBackup">Esportatu babeskopia</string>
|
||||
<string name="ExportPrivateKeys">Esportatu gako pribatuak</string>
|
||||
<string name="ImportPrivateKeys">Inportatu gako pribatuak</string>
|
||||
<string name="NoRecentEmoji">Erabilitako azken emojiak hemen agertuko dira.</string>
|
||||
<string name="NotNow">Orain ez</string>
|
||||
<string name="ArchiveChat">Artxibatu txata</string>
|
||||
<string name="UnarchiveChat">Desartxibatu txata</string>
|
||||
<string name="ArchivedChats">Artxibatutako txatak</string>
|
||||
<string name="Archived">Artxibatuta</string>
|
||||
<string name="LeaveGroup">Atera taldetik</string>
|
||||
<string name="AskLeaveGroup">Ziur talde honetatik atera nahi duzula?</string>
|
||||
<string name="Never">Inoiz ez</string>
|
||||
<string name="AutocryptKeyTransferInitiate">Hasi Autocrypt gakoen transferentzia</string>
|
||||
<string name="AutocryptKeyTransfer">Autocrypt gakoen transferentzia</string>
|
||||
<string name="AutocryptSetupMessageSubject">Autocrypt ezarpen mezua</string>
|
||||
<string name="AutocryptSetupMessageGeneralBody">Hau zure gakoa bezeroen artean transferitzeko erabilitako Autocrypt ezarpen mezua da.\n\nDeszifratu eta zure gakoa erabiltzeko, ireki mezua Autocrypt onartzen duen bezero batean eta sartu gailu sortzailean erakutsitako ezarpen kodea.</string>
|
||||
<string name="AutocryptSetupMessageTapBody">Hau zure gakoa bezeroen artean transferitzeko erabilitako Autocrypt ezarpen mezua da.\n\nDeszifratu eta zure gakoa erabiltzeko, sakatu mezu hau.</string>
|
||||
<string name="AutocryptKeyTransferPleaseEnterCode">Sartu beste gailuan agertzen den ezarpen kodea.</string>
|
||||
<string name="AutocryptKeyTransferBadCode">Ezarpen kode okerrra. Saiatu berriro.\n\nEzarpen kodea ahaztu baduzu, abiatu berriro gakoen transferentzia beste gailuan.</string>
|
||||
<string name="AutocryptKeyTransferSucceeded">Gakoa ongi transferitu da. Gailu hau orain Autocrypt erabili dezake beste gailuko gako berarekin.</string>
|
||||
<string name="Retry">Saiatu berriro</string>
|
||||
<string name="SelfTalkSubtitle">Nire buruari bidalitako mezuak</string>
|
||||
<string name="Contact">Kontaktua</string>
|
||||
</resources>
|
||||
@@ -41,9 +41,9 @@
|
||||
<string name="From">De</string>
|
||||
<string name="NoRecent">Pas de récents</string>
|
||||
<string name="TypeMessage">Message</string>
|
||||
<string name="SlideToCancel">GLISSER POUR ANNULER</string>
|
||||
<string name="SaveToDownloads">Enregistrer dans Téléchargements</string>
|
||||
<string name="SaveToMusic">Enregistrer dans Musique</string>
|
||||
<string name="SlideToCancel">Glisser pour annuler</string>
|
||||
<string name="SaveToDownloads">Enregistrer dans \"Téléchargements\"</string>
|
||||
<string name="SaveToMusic">Enregistrer dans \"Musique\"</string>
|
||||
<string name="Share">Partager</string>
|
||||
<string name="SendItems">Envoyer %1$s</string>
|
||||
<string name="ClearRecentEmoji">Vider les émojis récents ?</string>
|
||||
@@ -83,7 +83,7 @@
|
||||
<string name="Default">Défaut</string>
|
||||
<string name="OnlyIfSilent">Seulement si silencieux</string>
|
||||
<string name="ChatBackground">Arrière-plan des conversations</string>
|
||||
<string name="SendByEnter">Envoyer avec "Entrée"</string>
|
||||
<string name="SendByEnter">Envoyer avec</string>
|
||||
<string name="Help">Aide</string>
|
||||
<string name="Enabled">Activé</string>
|
||||
<string name="Disabled">Désactivé</string>
|
||||
@@ -101,7 +101,7 @@
|
||||
<string name="NotificationsOther">Autres</string>
|
||||
<string name="InChatSound">Sons dans la conversation</string>
|
||||
<string name="SmartNotifications">Limiter les notifications</string>
|
||||
<string name="SmartNotificationsSoundAtMost">Son au maximum</string>
|
||||
<string name="SmartNotificationsSoundAtMost">max.</string>
|
||||
<string name="SmartNotificationsTimes">fois</string>
|
||||
<string name="SmartNotificationsWithin">toutes les</string>
|
||||
<string name="SmartNotificationsMinutes">minutes</string>
|
||||
@@ -151,13 +151,13 @@
|
||||
<string name="Sharpen">Netteté</string>
|
||||
<string name="Fade">Fondu</string>
|
||||
<string name="Tint">Teinte</string>
|
||||
<string name="TintShadows">OMBRES</string>
|
||||
<string name="TintHighlights">HAUTES-LUMIERES</string>
|
||||
<string name="TintShadows">Ombres</string>
|
||||
<string name="TintHighlights">Hautes-lumières</string>
|
||||
<string name="Curves">Courbes</string>
|
||||
<string name="CurvesAll">TOUT</string>
|
||||
<string name="CurvesRed">ROUGE</string>
|
||||
<string name="CurvesGreen">VERT</string>
|
||||
<string name="CurvesBlue">BLEU</string>
|
||||
<string name="CurvesAll">Tout</string>
|
||||
<string name="CurvesRed">Rouge</string>
|
||||
<string name="CurvesGreen">Vert</string>
|
||||
<string name="CurvesBlue">Bleu</string>
|
||||
<string name="Blur">Flou</string>
|
||||
<string name="BlurOff">Désactiver</string>
|
||||
<string name="BlurLinear">Linéaire</string>
|
||||
@@ -184,7 +184,7 @@
|
||||
<string name="FromGalley">Depuis la galerie</string>
|
||||
<string name="Set">Définir</string>
|
||||
<string name="OK">OK</string>
|
||||
<string name="Crop">ROGNER</string>
|
||||
<string name="Crop">Rogner</string>
|
||||
<!--messages-->
|
||||
<string name="AttachPhoto">Photo</string>
|
||||
<string name="AttachVideo">Vidéo</string>
|
||||
@@ -194,11 +194,11 @@
|
||||
<string name="AttachVoiceMessage">Message vocal</string>
|
||||
<string name="FromSelf">Moi</string>
|
||||
<!--Alert messages-->
|
||||
<string name="NoHandleAppInstalled">Vous n\'avez pas d\'application qui peut gérer des fichiers de type \'%1$s\', veuillez en installer une pour continuer</string>
|
||||
<string name="NoHandleAppInstalled">Vous n\'avez pas d\'application qui peut ouvrir des fichiers de type \'%1$s\', veuillez en installer une pour continuer</string>
|
||||
<string name="ContactAlreadyInGroup">Ce contact est déjà dans ce groupe</string>
|
||||
<string name="ForwardMessagesTo">Renvoyer les messages sélectionnés à <![CDATA[<b>]]>%1$s<![CDATA[</b>]]> ?</string>
|
||||
<string name="SendMessagesTo">Envoyer les messages à <![CDATA[<b>]]>%1$s<![CDATA[</b>]]> ?</string>
|
||||
<string name="AreYouSureDeleteThisChat">Êtes-vous sûr de vouloir supprimer cette conversation ? La conversation n\'apparaîtra plus dans la liste des conversations, mais les messages resteront sur le serveur.</string>
|
||||
<string name="AreYouSureDeleteThisChat">Supprimer cette conversation? La conversation n\'apparaîtra plus dans la liste des conversations, mais les messages resteront sur le serveur.</string>
|
||||
<string name="AreYouSureBlockContact">Êtes-vous sûr de vouloir bloquer ce contact?</string>
|
||||
<string name="AreYouSureDeleteContact">Êtes-vous sûr de vouloir supprimer ce contact?</string>
|
||||
<!--permissions-->
|
||||
@@ -208,13 +208,13 @@
|
||||
<string name="PermissionOpenSettings">Paramètres</string>
|
||||
<!--Intro view-->
|
||||
<string name="Intro1Headline">Delta Chat</string>
|
||||
<string name="Intro1Message">La messagerie <![CDATA[<b>la plus étendue</b>]]> dans le monde.<![CDATA[<br/><b>Libre</b>]]> et <![CDATA[<b>sécurisée</b>]]>.</string>
|
||||
<string name="Intro1Message">La messagerie <![CDATA[<b>la plus étendue</b>]]> dans le monde.<![CDATA[<br/><b>Libre</b>]]> et <![CDATA[<b>indépendante</b>]]>.</string>
|
||||
|
||||
<string name="Intro2Headline">Indépendant</string>
|
||||
<string name="Intro2Message"><![CDATA[<b>Aucune dépendance</b>]]> à des serveurs ou services tiers. L\'application utilise juste votre serveur d\'e-mail.</string>
|
||||
<string name="Intro2Message"><![CDATA[<b>Il n\'y a pas de serveur Delta Chat.</b>]]> L\'application utilise juste votre serveur d\'e-mail.</string>
|
||||
|
||||
<string name="Intro3Headline">Rapide</string>
|
||||
<string name="Intro3Message">Envoyez des messages <![CDATA[<b>en quelques secondes</b>]]>.<![CDATA[<br/>]]> grâce à son interface rapide.</string>
|
||||
<string name="Intro3Message"><![CDATA[<b>Envoyez des messages</b>]]> en quelques secondes.<![CDATA[<br/>]]> Interface rapide.</string>
|
||||
|
||||
<string name="Intro4Headline">Puissant</string>
|
||||
<string name="Intro4Message">Envoyer et recevez des messages, des photos, des vidéos, des messages audios et plus <![CDATA[<b>sans limite</b>]]>. Compatible multi-plateforme.</string>
|
||||
@@ -222,7 +222,7 @@
|
||||
<string name="Intro5Headline">Libre</string>
|
||||
<string name="Intro5Message"><![CDATA[<b>Delta Chat</b>]]> sera toujours libre.<![CDATA[<br/>]]>OpenSource. Pas de pub. Pas d\'inscription. Pas lié a un fournisseur.</string>
|
||||
|
||||
<string name="Intro6Headline">Sûr</string>
|
||||
<string name="Intro6Headline">Chiffré</string>
|
||||
<string name="Intro6Message"><![CDATA[<b>Chiffré</b>]]> avec des algorithmes reconnus. Les messages restent sur vos serveurs.</string>
|
||||
|
||||
<string name="Intro7Headline">Fiable</string>
|
||||
@@ -239,7 +239,7 @@
|
||||
</plurals>
|
||||
<plurals name="MeAndMembers">
|
||||
<item quantity="one">Moi et %d membre</item>
|
||||
<item quantity="other">Moi et %d membres</item>
|
||||
<item quantity="other">%d membres et moi</item>
|
||||
</plurals>
|
||||
<plurals name="NewMessages">
|
||||
<item quantity="one">%d nouveau message</item>
|
||||
@@ -253,6 +253,9 @@
|
||||
<item quantity="one">Effacer %d message? Ce message sera aussi effacé du serveur.</item>
|
||||
<item quantity="other">Effacer %d messages? Ces messages seront aussi effacés du serveur.</item>
|
||||
</plurals>
|
||||
<!-- Translators: The first string placeholder gets replaced with the
|
||||
text "%d new messages", so the complete sentence would be e.g.
|
||||
"4 new messages in 2 chats". -->
|
||||
<plurals name="NewMessagesInChats">
|
||||
<item quantity="one">1%1$s dans 2%2$d conversation</item>
|
||||
<item quantity="other">%1$s dans %2$d conversations</item>
|
||||
@@ -281,6 +284,9 @@
|
||||
<item quantity="one">%d mois</item>
|
||||
<item quantity="other">%d mois</item>
|
||||
</plurals>
|
||||
<!-- Translators: The second string placeholder gets replaced with the
|
||||
text "%d minutes", so the complete sentence would be e.g.
|
||||
"At most 8 notifications within 3 minutes". -->
|
||||
<plurals name="MaxNotifications">
|
||||
<item quantity="one">Maximum %1$d notification dans 2%2$s</item>
|
||||
<item quantity="other">Maximum %1$d notifications dans %2$s</item>
|
||||
@@ -312,7 +318,7 @@
|
||||
<string name="InboxHeadline">Boîte de réception</string>
|
||||
<string name="OutboxHeadline">Boîte d\'envoi</string>
|
||||
<string name="MyAccountExplain">Pour les fournisseurs e-mails connus, les paramètres suivants seront déterminés automatiquement.</string>
|
||||
<string name="MyAccountExplain2" >Parfois, les protocoles IMAP/SMTP doivent être activés depuis l\'interface web.\n\nSi vous rencontrez des problème, demandez à votre fournisseur ou à vos amis.</string>
|
||||
<string name="MyAccountExplain2" >Parfois, <![CDATA[<b>]]>IMAP doit être activé<![CDATA[</b>]]> depuis l\'interface web.\n\nSi vous rencontrez des problème, demandez à votre fournisseur ou à vos amis.</string>
|
||||
<string name="AccountNotConfigured">Compte non configuré</string>
|
||||
<string name="AboutThisProgram">À propos Delta Chat</string>
|
||||
<string name="NotSet">Non défini</string>
|
||||
@@ -321,9 +327,9 @@
|
||||
<string name="DeaddropInChatlist">Monter les demandes de contact dans la liste des conversations</string>
|
||||
<string name="MuteAlways">Toujours muet</string>
|
||||
<string name="AskStartChatWith">Lancer une conversation avec <![CDATA[<b>]]>%1$s<![CDATA[</b>]]>?</string>
|
||||
<string name="DeaddropHint">Pour lancer une conversation, cliquez sur le bouton de réponse en forme de flèche.</string>
|
||||
<string name="DeaddropHint">Pour commencer une conversation, cliquez sur le bouton de réponse en forme de flèche.</string>
|
||||
<string name="NotYetImplemented">Cette fonction n\'est pas disponible ou non supportée complètement.</string>
|
||||
<string name="DefaultStatusText">Envoyé avec Delta Chat: https://delta.chat</string>
|
||||
<string name="DefaultStatusText">Envoyé avec Delta Chat: https://delta.chat/fr/</string>
|
||||
<string name="Name" >Nom</string>
|
||||
<string name="EmailAddress">Adresse e-mail</string>
|
||||
<string name="CannotDeleteContact">Impossible de supprimer les contacts en cours d\'utilisation, bloquez-les à la place.</string>
|
||||
@@ -333,12 +339,12 @@
|
||||
<!-- Translators: please use a very short string here, it should not much longer than
|
||||
the string needed for video time+size (0:00, 12,3 Mib) -->
|
||||
<string name="OneMoment">Veuillez patienter…</string>
|
||||
<string name="NoChatsHelp">Lancez une conversation en appuyant sur le bouton dans le coin inférieur droit ou appuyez sur le bouton menu pour plus d\'options.</string>
|
||||
<string name="NoChatsHelp">Lancez une conversation en appuyant sur le bouton \"Nouvelle conversation\" dans le coin inférieur droit ou appuyez sur le bouton \"Menu\" pour plus d\'options.</string>
|
||||
<string name="Intro7Message"><![CDATA[<b>Delta Chat</b>]]> est sûr pour une utilisation professionnelle, compatible et basé sur des standards.</string>
|
||||
<string name="InviteMenuEntry">Envoyer des invitations</string>
|
||||
<string name="InviteText">J\'utilise la messagerie Delta Chat maintenant - %1$s - vous pouvez me contacter à %2$s</string>
|
||||
<string name="AdvancedSettings">Paramètres avancés</string>
|
||||
<string name="AskResetNotifications">Réinitialiser toutes les paramètres de notification et les sons de cette page ainsi que de vos contacts et groupes?</string>
|
||||
<string name="AskResetNotifications">Réinitialiser toutes les paramètres de notification et de son de cette page, contacts et groupes?</string>
|
||||
<string name="AttachFiles">Joindre des fichiers</string>
|
||||
<string name="ErrGroupNameEmpty">Merci de saisir un nom pour le groupe.</string>
|
||||
<string name="MsgNewGroupDraftHint">Écrivez un premier message pour permettre aux autres de répondre dans ce groupe.\n\n• Ça ne devrait pas poser de problème si tous les membres du groupe n\'utilisent pas Delta Chat.\n\n• L\'envoi du premier message peut prendre un moment.</string>
|
||||
@@ -352,8 +358,8 @@
|
||||
<string name="ErrSelfNotInGroup">Vous devez être membre du groupe pour effectuer cette action.</string>
|
||||
<string name="MsgGroupLeft">Groupe quitté.</string>
|
||||
<string name="NoMessagesHint">Envoyez un message à <![CDATA[<b>]]>%1$s<![CDATA[</b>]]> :\n\n• Ça ne devrait pas poser de problème si <![CDATA[<b>]]>%2$s<![CDATA[</b>]]> n\'utilise pas Delta Chat\n\n• L\'envoi du premier message peut prendre un moment.</string>
|
||||
<string name="SendNRcvReadReceipts">Recevoir et renvoyer des accusés de réception.</string>
|
||||
<string name="PreferE2EEncryption">Préféré le chiffrement de bout-en-bout.</string>
|
||||
<string name="SendNRcvReadReceipts">Recevoir et envoyer des accusés de lecture.</string>
|
||||
<string name="PreferE2EEncryption">Préférer le chiffrement de bout-en-bout.</string>
|
||||
<string name="E2EManagePrivateKeys">Gérer les clés privées</string>
|
||||
<string name="E2ECompareKeys">Comparer les clés</string>
|
||||
<string name="ForwardToTitle">Renvoyer à…</string>
|
||||
@@ -368,19 +374,16 @@
|
||||
<string name="PermNotificationText">En attente de messages…</string>
|
||||
<string name="SettingsFor">Paramètres pour %1$s</string>
|
||||
<string name="AutoplayGifs">Lecture automatique des GIFs</string>
|
||||
<string name="HelpUrl">https://delta.chat/en/help</string>
|
||||
<string name="HelpUrl">https://delta.chat/fr/help</string>
|
||||
<string name="EncryptedMessage">Message chiffré</string>
|
||||
<string name="Encryption">Chiffrement</string>
|
||||
<string name="EncrinfoE2E">Chiffrement de bout-en-bout activé.</string>
|
||||
<string name="EncrinfoE2EExplain">Si toutes les clés de chiffrement correspondent sur l\'autre appareil, la connexion est sûre.</string>
|
||||
<string name="EncrinfoTransport">Le chiffrement est active au moins jusqu\'à mon serveur</string>
|
||||
<string name="EncrinfoNone">Aucun chiffrement sur mon serveur.</string>
|
||||
<string name="EncrinfoNoE2EExplain">Le chiffrement de bout-à-bout sera activé automatiquement dès que le contact utilisera Delta Chat ou n\'importe quelle autre application de chiffrement automatique.</string>
|
||||
<string name="EncrinfoFingerprints">Clés de chiffrement</string>
|
||||
<string name="Backup">Sauvegarde</string>
|
||||
<string name="ImportBackupExplain2">Pour importer une sauvegarde, copier la sauvegarde dans <![CDATA[<i>]]>%1$s<![CDATA[</i>]]> et réinstaller l\'application.</string>
|
||||
<string name="ReadReceiptMailBody">Ceci est un accusé de réception pour le message \"1%1$s\".\n\nCet accusé indique seulement la bonne réception du message sur l\'appareil du destinataire. Il n\'y a pas de garantie que le destinataire a lu le contenu du message.</string>
|
||||
<string name="ReadReceipt">Accusé de réception</string>
|
||||
<string name="ReadReceiptMailBody">Ceci est un accusé de lecture pour le message \"1%1$s\".\n\nCet accusé indique seulement que le message a été affiché sur l\'appareil du destinataire, et pas forcément que le contenu du message a été lu.</string>
|
||||
<string name="ReadReceipt">Accusé de lecture</string>
|
||||
<string name="NameAndStatus">Nom et statut</string>
|
||||
<string name="MyStatus">Mon statut</string>
|
||||
<string name="MyStatusExplain">Le status est indiqué par ex. dans les pieds de page des emails.</string>
|
||||
@@ -390,9 +393,9 @@
|
||||
<string name="ImportExportExplain">Les fichiers exportés contiendront des clés privées! Gardez-les dans un endroit sûr ou supprimez-les dès que possible.</string>
|
||||
<string name="EnterPasswordToContinue">Entrer le mot de passe pour %1$s pour continuer:</string>
|
||||
<string name="IncorrectPassword">Mot de passe incorrect.</string>
|
||||
<string name="ImportBackupAsk">Delta Chat a trouvé une sauvegarde dans <![CDATA[<i>]]>%1$s<![CDATA[</i>]]>.\n\n Voulez-vous importer et utiliser toutes les données et paramètres de cette sauvegarde?</string>
|
||||
<string name="ImportBackupAsk">Une sauvegarde a été trouvée dans <![CDATA[<i>]]>%1$s<![CDATA[</i>]]>.\n\n Voulez-vous importer et utiliser toutes les données et paramètres de cette sauvegarde?</string>
|
||||
<string name="ImportBackup">Importer une sauvegarde</string>
|
||||
<string name="NoBackupFound">Aucune sauvegarde à importer trouvée.\n\nCopier la sauvegarde dans <![CDATA[<i>]]>%1$s<![CDATA[</i>]]> et réessayez. Sinon, appuyez sur \"Démarrer la messagerie\" pour un processus d\'installation normal.</string>
|
||||
<string name="NoBackupFound">Aucune sauvegarde trouvée.\n\nCopier la sauvegarde dans <![CDATA[<i>]]>%1$s<![CDATA[</i>]]> et réessayez. Sinon, appuyez sur \"Démarrer la messagerie\" pour un processus d\'installation normal.</string>
|
||||
<string name="FilesSuccessfullyExported">Fichiers exportés avec succès dans <![CDATA[<i>]]>%1$s<![CDATA[</i>]]>.</string>
|
||||
<string name="ExportBackup">Exporter une sauvegarde</string>
|
||||
<string name="ExportPrivateKeys">Exporter les clés privées</string>
|
||||
@@ -400,8 +403,6 @@
|
||||
<string name="ImportPrivateKeysAsk2">Importer des clés privées depuis <![CDATA[<i>]]>%1$s<![CDATA[</i>]]>?\n\n• Les clés privées existantes ne sont pas supprimées\n\n•
|
||||
La dernière clé importée sera utilisée comme nouvelle clé par défaut</string>
|
||||
<string name="NoRecentEmoji">Les emoji récemment utilisés seront affichés ici.</string>
|
||||
<string name="E2eeOffBecauseOfUser">Pour activer le chiffrement bout-à-bout, vérifiez l\'option correspondante dans vos paramètres.</string>
|
||||
<string name="E2eeOffBecauseOfRecipient">Le chiffrement sera bout-à-bout si le contact active l\'option correspondante.</string>
|
||||
<string name="NotNow">Pas maintenant</string>
|
||||
<string name="ArchiveChat">Archive des conversations</string>
|
||||
<string name="UnarchiveChat">Conversation non archivée</string>
|
||||
@@ -410,4 +411,35 @@ La dernière clé importée sera utilisée comme nouvelle clé par défaut</stri
|
||||
<string name="LeaveGroup">Quitter le groupe</string>
|
||||
<string name="AskLeaveGroup">Êtes-vous sûr de vouloir quitter ce groupe?</string>
|
||||
<string name="Never">Jamais</string>
|
||||
</resources>
|
||||
<string name="AutocryptKeyTransferInitiate">Lancer le transfert de clé Autocrypt</string>
|
||||
<string name="AutocryptKeyTransfer">Transfert de clé Autocrypt</string>
|
||||
<string name="AutocryptKeyTransferMsgBeforeSend">Le <![CDATA[<i>]]>transfert de clé Autocrypt<![CDATA[</i>]]> nécessite que le client de messagerie sur l\'autre périphérique soit compatible avec Autocrypt.\n\nVous pouvez alors vous envoyer votre clé secrète. La clé sera cryptée par un code d\'installation qui est affiché ici et doit être tapé sur l\'autre appareil.</string>
|
||||
<string name="AutocryptKeyTransferMsgAfterSend">Votre clé vous a été envoyée. Passez à l\'autre appareil et ouvrez le message d\'installation. Vous devriez être invité à entrer un code d\'installation. Tapez les chiffres suivants dans l\'invite:\n\n%1$s\n\nUne fois que vous avez terminé, votre autre périphérique sera prêt à utiliser Autocrypt.</string>
|
||||
<string name="AutocryptSetupMessageSubject">Message d\'installation d\'Autocrypt</string>
|
||||
<string name="AutocryptSetupMessageGeneralBody">Ceci est le message d\'installation d\'Autocrypt utilisé pour transférer votre clé entre les clients.\n\nPour déchiffrer et utiliser votre clé, ouvrez le message dans un client compatible avec Autocrypt et entrez le code d\'installation présenté sur le périphérique d\'envoi.</string>
|
||||
<string name="AutocryptSetupMessageTapBody">Ceci est le message d\'installation d\'Autocrypt utilisé pour transférer votre clé entre les clients.\n\nPour déchiffrer et utiliser votre clé, appuyez sur ce message.</string>
|
||||
<string name="AutocryptKeyTransferPleaseEnterCode">Veuillez entrer le code d\'installation affiché sur l\'autre appareil.</string>
|
||||
<string name="AutocryptKeyTransferBadCode">Mauvais code d\'installation. Veuillez réessayer.\n\nSi vous ne vous souvenez pas du code d\'installation, lancez à nouveau le transfert de clé depuis l\'autre appareil.</string>
|
||||
<string name="AutocryptKeyTransferSucceeded">Clé transférée avec succès. Cet appareil est maintenant prêt à utiliser Autocrypt avec la même clé que l\'autre appareil.</string>
|
||||
<string name="Retry">Recommencez</string>
|
||||
<string name="SelfTalkSubtitle">Messages que je me suis envoyé</string>
|
||||
<string name="QrScan">Scanner un code 2D</string>
|
||||
<string name="QrShow">Montrer le code 2D</string>
|
||||
<string name="QrScanContainsText">Le code 2D scanné contient le texte suivant:\n\n%1$s</string>
|
||||
<string name="OobFingerprint">Empreinte digitale</string>
|
||||
<string name="OobFingerprintAskOob">Vérifier le contact et commencer à dialoguer avec <![CDATA[<b>]]>%1$s<![CDATA[</b>]]>?</string>
|
||||
<string name="OobFingerprintOk">Contact <![CDATA[<i>]]>%1$s<![CDATA[</i>]]> vérifié. Commencer le dialogue?</string>
|
||||
<string name="OobFingerprintMismatch">L\'empreinte digitale scannée <![CDATA[<b>]]>ne correspond pas<![CDATA[</b>]]> à l\'empreinte vue auparavant pour <![CDATA[<i>]]>%1$s<![CDATA[</i>]]>.</string>
|
||||
<string name="OobFingerprintWithoutAddr">Le code 2D contient une empreinte mais pas d\'adresse courriel.\n\nPour une vérification hors-bande, établissez d\'abord une connexion chiffrée avec le contact.</string>
|
||||
<string name="OobSecureJoinRequested">%1$s entre.</string>
|
||||
<string name="CannotDecryptBody">Ce message ne peut pas être déchiffré.\n\n• Il peut suffire de répondre à ce message et de demander à l\'envoyeur de renvoyer son message.\n\n• Si jamais vous avez réinstaller Delta Chat ou un autre programme courriel sur cet appareil ou sur un autre, vous devriez envoyer un message d\'échange de clé Autocrypt à partir de là.</string>
|
||||
<string name="Autocrypt">Autocrypt</string>
|
||||
<string name="AutocryptExplain"><![CDATA[<i>]]>Autocrypt<![CDATA[</i>]]> est une nouvelle spécification libre pour le chiffrage des courriels de bout en bout.\n\nLes paramètres bout en bout sont créés automatiquement dès que besoin et vous pouvez les transférer entre appareils avec un <![CDATA[<i>]]>message d\'échange de clé Autocrypt.<![CDATA[</i>]]></string>
|
||||
<string name="NewVerifiedGroup">Nouveau groupe vérifié</string>
|
||||
<string name="SharedChats">Conversations partagés</string>
|
||||
<string name="VerifiedContact">Contact vérifié</string>
|
||||
<string name="Contact">Contact</string>
|
||||
<string name="VerifiedGroup">Groupe vérifié</string>
|
||||
<string name="Group">Groupe</string>
|
||||
<string name="EditedNameWillBeShared">Le nom modifié sera partagé avec tous les membres du groupe.</string>
|
||||
</resources>
|
||||
|
||||
@@ -252,6 +252,9 @@
|
||||
<item quantity="one">%d üzenet törlése? Az üzenet a szerverről is törlődik.</item>
|
||||
<item quantity="other">%d üzenet törlése? Az üzenetek a szerverről is törlődnek.</item>
|
||||
</plurals>
|
||||
<!-- Translators: The first string placeholder gets replaced with the
|
||||
text "%d new messages", so the complete sentence would be e.g.
|
||||
"4 new messages in 2 chats". -->
|
||||
<plurals name="NewMessagesInChats">
|
||||
<item quantity="one">%1$s %2$d beszélgetésben</item>
|
||||
<item quantity="other">%1$s %2$d beszélgetésben</item>
|
||||
@@ -280,6 +283,9 @@
|
||||
<item quantity="one">%d hónap</item>
|
||||
<item quantity="other">%d hónap</item>
|
||||
</plurals>
|
||||
<!-- Translators: The second string placeholder gets replaced with the
|
||||
text "%d minutes", so the complete sentence would be e.g.
|
||||
"At most 8 notifications within 3 minutes". -->
|
||||
<plurals name="MaxNotifications">
|
||||
<item quantity="one">Legfeljebb %1$d értesítés %2$s alatt</item>
|
||||
<item quantity="other">Legfeljebb %1$d értesítés %2$s alatt</item>
|
||||
@@ -360,6 +366,7 @@
|
||||
<string name="FileNotFound">%1$s fájl nem található.</string>
|
||||
<string name="Error">Hiba: %1$s</string>
|
||||
<string name="NoNetwork">Nincs hálózat.</string>
|
||||
<string name="Audio">Hang</string>
|
||||
<string name="PermNotificationTitle">%1$s csatlakozva</string>
|
||||
<string name="AutoplayGifs">GIF-ek automatikus lejátszása</string>
|
||||
<string name="EncryptedMessage">Titkosított üzenet</string>
|
||||
@@ -380,7 +387,19 @@
|
||||
<string name="ExportBackup">Biztonsági mentés exportálása</string>
|
||||
<string name="ExportPrivateKeys">Privát kulcsok exportálása</string>
|
||||
<string name="ImportPrivateKeys">Privát kulcsok importálása</string>
|
||||
<string name="NoRecentEmoji">A legutóbb használt emoji látszik itt.</string>
|
||||
<string name="NotNow">Most nem</string>
|
||||
<string name="ArchiveChat">Beszélgetés archiválása</string>
|
||||
<string name="UnarchiveChat">Archiválás visszavonása</string>
|
||||
<string name="ArchivedChats">Archivált beszélgetések</string>
|
||||
<string name="Archived">Archivált</string>
|
||||
<string name="LeaveGroup">Csoport elhagyása</string>
|
||||
<string name="AskLeaveGroup">Biztosan el szeretnéd hagyni a csoportot?</string>
|
||||
<string name="Never">Soha</string>
|
||||
<string name="Retry">Újra</string>
|
||||
<string name="SelfTalkSubtitle">Magamnak küldött üzenetek</string>
|
||||
<string name="QrScan">QR-kód olvasása</string>
|
||||
<string name="QrShow">QR-kód megjelenítése</string>
|
||||
<string name="OobFingerprint">Ujjlenyomat</string>
|
||||
<string name="Contact">Névjegy</string>
|
||||
</resources>
|
||||
|
||||
@@ -9,8 +9,8 @@
|
||||
<string name="NewGroup">Nuovo gruppo</string>
|
||||
<string name="NoResult">Nessun risultato</string>
|
||||
<string name="NoChats">Ancora nessuna conversazione.</string>
|
||||
<string name="DeleteChat">Elimina chat</string>
|
||||
<string name="SelectChat">Seleziona chat …</string>
|
||||
<string name="DeleteChat">Elimina conversazione</string>
|
||||
<string name="SelectChat">Seleziona conversazione …</string>
|
||||
<string name="Search">Cerca</string>
|
||||
<string name="MuteNotifications">Silenzia notifiche</string>
|
||||
<string name="MuteFor">Silenzia per %1$s</string>
|
||||
@@ -82,7 +82,7 @@
|
||||
<string name="BlockedContacts">Contatti bloccati</string>
|
||||
<string name="Default">Predefinite</string>
|
||||
<string name="OnlyIfSilent">Solo se silenzioso</string>
|
||||
<string name="ChatBackground">Sfondo chat</string>
|
||||
<string name="ChatBackground">Sfondo conversazione</string>
|
||||
<string name="SendByEnter">Invia con tasto \"Invio\"</string>
|
||||
<string name="Help">Domande frequenti</string>
|
||||
<string name="Enabled">Abilitate</string>
|
||||
@@ -106,16 +106,16 @@
|
||||
<string name="SmartNotificationsWithin">in</string>
|
||||
<string name="SmartNotificationsMinutes">minuti</string>
|
||||
<string name="DirectShare">Condivisione diretta</string>
|
||||
<string name="DirectShareInfo">Mostra le chat recenti nel menù di condivisione</string>
|
||||
<string name="DirectShareInfo">Mostra le conversazioni recenti nel menù di condivisione</string>
|
||||
<!--cache view-->
|
||||
<string name="CacheSettings">Archivio</string>
|
||||
<string name="KeepMedia">Mantieni file</string>
|
||||
<string name="KeepMediaInfo">Foto, video e altri file dalle chat nel cloud che <![CDATA[<b>non sono stati visualizzati</b>]]> in questo periodo verranno eliminati dal dispositivo per preservare lo spazio sul disco.</string>
|
||||
<string name="KeepMediaInfo">Foto, video e altri file dalle conversazioni nel cloud che <![CDATA[<b>non sono stati visualizzati</b>]]> in questo periodo verranno eliminati dal dispositivo per preservare lo spazio sul disco.</string>
|
||||
<string name="KeepMediaForever">Per sempre</string>
|
||||
<!--passcode view-->
|
||||
<string name="Passcode">Blocco con codice</string>
|
||||
<string name="ChangePasscode">Cambia il codice</string>
|
||||
<string name="ChangePasscodeInfo">Quando viene impostato un codice, un\'icona con un lucchetto apparirà nella pagina delle chat. Premere su di essa per bloccare e sbloccare l\'applicazione.\n\nNota: se il codice viene dimenticato, si dovrà disinstallare e installare nuovamente l\'app.</string>
|
||||
<string name="ChangePasscodeInfo">Quando viene impostato un codice, un\'icona con un lucchetto apparirà nella pagina delle conversazioni. Premere su di essa per bloccare e sbloccare l\'applicazione.\n\nNota: se il codice viene dimenticato, si dovrà disinstallare e installare nuovamente l\'applicazione.</string>
|
||||
<string name="PasscodePIN">PIN</string>
|
||||
<string name="PasscodePassword">Password</string>
|
||||
<string name="EnterCurrentPasscode">Inserire il codice corrente</string>
|
||||
@@ -198,7 +198,7 @@
|
||||
<string name="ContactAlreadyInGroup">Questo utente è già membro del gruppo.</string>
|
||||
<string name="ForwardMessagesTo">Inoltrare i messaggi selezionati a <![CDATA[<b>]]>%1$s<![CDATA[</b>]]>?</string>
|
||||
<string name="SendMessagesTo">Inviare i messaggi a <![CDATA[<b>]]>%1$s<![CDATA[</b>]]>?</string>
|
||||
<string name="AreYouSureDeleteThisChat">Eliminare veramente questa conversazione? In questo modo non verrà più mostrata nell\'elenco delle chat, i messaggi rimarranno sul server.</string>
|
||||
<string name="AreYouSureDeleteThisChat">Eliminare veramente questa conversazione? In questo modo non verrà più mostrata nell\'elenco, i messaggi rimarranno comunque sul server.</string>
|
||||
<string name="AreYouSureBlockContact">Bloccare veramente questo contatto?</string>
|
||||
<string name="AreYouSureDeleteContact">Eliminare veramente questo contatto?</string>
|
||||
<!--permissions-->
|
||||
@@ -217,10 +217,10 @@
|
||||
<string name="Intro3Message"><![CDATA[<b>Messaggi push</b>]]> in pochi secondi.<![CDATA[<br/>]]>Interfaccia semplice.</string>
|
||||
|
||||
<string name="Intro4Headline">Potente</string>
|
||||
<string name="Intro4Message"><![CDATA[<b>Invio illimitato</b>]]> di chat, immagini, video, messaggi audio a altro. Anche multi-client.</string>
|
||||
<string name="Intro4Message"><![CDATA[<b>Conversazioni illimitate</b>]]> immagini, video, messaggi audio e altro ancora. Possibilità di utilizzo con più client.</string>
|
||||
|
||||
<string name="Intro5Headline">Libera</string>
|
||||
<string name="Intro5Message"><![CDATA[<b>Delta Chat</b>]]> è libero per sempre.<![CDATA[<br/>]]>Open-source. No ads. No iscrizioni. No restrizioni del fornitore.</string>
|
||||
<string name="Intro5Message"><![CDATA[<b>Delta Chat</b>]]> sarà libera per sempre.<![CDATA[<br/>]]>Open source. Senza annunci. Nessuna registrazione. Senza alcun blocco dai fornitori.</string>
|
||||
|
||||
<string name="Intro6Headline">Sicura</string>
|
||||
<string name="Intro6Message"><![CDATA[<b>Crittografato</b>]]> con tutti gli algoritmi più diffusi. I messaggi rimangono sul tuo server.</string>
|
||||
@@ -253,6 +253,9 @@
|
||||
<item quantity="one">Eliminare %d messaggio? Il messaggio verrà eliminato anche dal server.</item>
|
||||
<item quantity="other">Eliminare %d messaggi? I messaggi verranno eliminati anche dal server.</item>
|
||||
</plurals>
|
||||
<!-- Translators: The first string placeholder gets replaced with the
|
||||
text "%d new messages", so the complete sentence would be e.g.
|
||||
"4 new messages in 2 chats". -->
|
||||
<plurals name="NewMessagesInChats">
|
||||
<item quantity="one">%1$s in %2$d conversazione</item>
|
||||
<item quantity="other">%1$s in %2$d conversazioni</item>
|
||||
@@ -281,6 +284,9 @@
|
||||
<item quantity="one">%d mese</item>
|
||||
<item quantity="other">%d mesi</item>
|
||||
</plurals>
|
||||
<!-- Translators: The second string placeholder gets replaced with the
|
||||
text "%d minutes", so the complete sentence would be e.g.
|
||||
"At most 8 notifications within 3 minutes". -->
|
||||
<plurals name="MaxNotifications">
|
||||
<item quantity="one">Al massimo %1$d notifica in %2$s</item>
|
||||
<item quantity="other">Al massimo %1$d notifiche in %2$s</item>
|
||||
@@ -316,14 +322,14 @@
|
||||
<string name="AccountNotConfigured">Account non configurato</string>
|
||||
<string name="AboutThisProgram">Informazioni su Delta Chat</string>
|
||||
<string name="NotSet">Non impostato</string>
|
||||
<string name="NewChat">Nuova chat</string>
|
||||
<string name="NewChat">Nuova conversazione</string>
|
||||
<string name="Deaddrop">Richieste di contatto</string>
|
||||
<string name="DeaddropInChatlist">Mostra le richieste di contatto nell\'elenco delle chat</string>
|
||||
<string name="DeaddropInChatlist">Mostra le richieste di contatto nell\'elenco delle conversazioni</string>
|
||||
<string name="MuteAlways">Sempre silenziato</string>
|
||||
<string name="AskStartChatWith">Iniziare una conversazione con <![CDATA[<b>]]>%1$s<![CDATA[</b>]]>?</string>
|
||||
<string name="DeaddropHint">Per iniziare una conversazione toccare le frecce di risposta.</string>
|
||||
<string name="NotYetImplemented">Funzione non disponibile o incompleta.</string>
|
||||
<string name="DefaultStatusText">Inviato con l\'app di messaggistica Delta Chat: https://delta.chat</string>
|
||||
<string name="DefaultStatusText">Inviato con l\'applicazione di messaggistica Delta Chat: https://delta.chat/it</string>
|
||||
<string name="Name" >Nome</string>
|
||||
<string name="EmailAddress">Indirizzo email</string>
|
||||
<string name="CannotDeleteContact">Impossibile cancellare i contatti in uso, provare a bloccarli.</string>
|
||||
@@ -333,8 +339,8 @@
|
||||
<!-- Translators: please use a very short string here, it should not much longer than
|
||||
the string needed for video time+size (0:00, 12,3 Mib) -->
|
||||
<string name="OneMoment">Un momento...</string>
|
||||
<string name="NoChatsHelp">Inizia a conversare toccando il tasto \"Nuova Chat \"nell\'angolo in basso a destra o premere il pulsante menù per altre opzioni.</string>
|
||||
<string name="Intro7Message"><![CDATA[<b>Delta Chat</b>]]> è sicura per l\'uso professionale, compatibile e basata sugli standard.</string>
|
||||
<string name="NoChatsHelp">Inizia a conversare toccando il tasto \"Nuova conversazione\" nell\'angolo in basso a destra o premere il pulsante menù per altre opzioni.</string>
|
||||
<string name="Intro7Message"><![CDATA[<b>Delta Chat</b>]]> è sicura anche per uso in ambito professionale, compatibile e basata sugli standard.</string>
|
||||
<string name="InviteMenuEntry">Invita amici</string>
|
||||
<string name="InviteText">Ora sto usando l\'applicazione di messaggistica Delta Chat - %1$s - puoi scrivermi all\'indirizzo %2$s</string>
|
||||
<string name="AdvancedSettings">Impostazioni avanzate</string>
|
||||
@@ -351,12 +357,12 @@
|
||||
<string name="AskRemoveMemberFromGroup">Rimuovere <![CDATA[<b>]]>%1$s<![CDATA[</b>]]> dal gruppo?</string>
|
||||
<string name="ErrSelfNotInGroup">È necessario essere un membro del gruppo per eseguire questa azione.</string>
|
||||
<string name="MsgGroupLeft">Gruppo abbandonato.</string>
|
||||
<string name="NoMessagesHint">Invia un messaggio a <![CDATA[<b>]]>%1$s<![CDATA[</b>]]>:\n\n• Va bene anche se <![CDATA[<b>]]>%2$s<![CDATA[</b>]]> non usa Delta Chat.\n\n• L\'invio del primo messaggio può richiedere del tempo.</string>
|
||||
<string name="NoMessagesHint">Invia un messaggio a <![CDATA[<b>]]>%1$s<![CDATA[</b>]]>:\n\n• Va bene anche se <![CDATA[<b>]]>%2$s<![CDATA[</b>]]> non usa Delta Chat.\n\n• L\'invio del primo messaggio può richiedere qualche secondo.</string>
|
||||
<string name="SendNRcvReadReceipts">Ricevi e invia ricevute di ritorno</string>
|
||||
<string name="PreferE2EEncryption">Preferisci crittografia end-to-end</string>
|
||||
<string name="E2EManagePrivateKeys">Gestione chiavi private</string>
|
||||
<string name="E2ECompareKeys">Compara chiavi</string>
|
||||
<string name="ForwardToTitle">Seleziona chat …</string>
|
||||
<string name="ForwardToTitle">Inoltra a …</string>
|
||||
<string name="SelectContact">Scegli un contatto</string>
|
||||
<string name="DoneHint">Fatto.</string>
|
||||
<string name="FileNotFound">File %1$s non trovato.</string>
|
||||
@@ -368,14 +374,12 @@
|
||||
<string name="PermNotificationText">In attesa di messaggi...</string>
|
||||
<string name="SettingsFor">Impostazioni per %1$s</string>
|
||||
<string name="AutoplayGifs">Riproduzione automatica GIF</string>
|
||||
<string name="HelpUrl">https://delta.chat/en/help</string>
|
||||
<string name="HelpUrl">https://delta.chat/it/help</string>
|
||||
<string name="EncryptedMessage">Messaggio cifrato</string>
|
||||
<string name="Encryption">Crittografia</string>
|
||||
<string name="EncrinfoE2E">Crittografia end-to-end abilitata.</string>
|
||||
<string name="EncrinfoE2EExplain">Se tutte le impronte corrispondono sull\'altro dispositivo, la connessione è sicura.</string>
|
||||
<string name="EncrinfoE2EAvailable">Cifratura end-to-end disponibile.</string>
|
||||
<string name="EncrinfoTransport">Crittografa il trasferimento almeno al mio server.</string>
|
||||
<string name="EncrinfoNone">Non crittografare sul mio server.</string>
|
||||
<string name="EncrinfoNoE2EExplain">La crittografia end-to-end verrà attivata automaticamente quando il contatto usa Delta Chat o un altra applicazione che utilizza Autocrypt.</string>
|
||||
<string name="EncrinfoFingerprints">Impronte digitali</string>
|
||||
<string name="Backup">Backup</string>
|
||||
<string name="ImportBackupExplain2">Per importare un backup, copiarlo in <![CDATA[<i>]]>%1$s<![CDATA[</i>]]> quindi installare nuovamente l\'app.</string>
|
||||
@@ -390,23 +394,66 @@
|
||||
<string name="ImportExportExplain">I file esportati conterranno le chiavi private! Costodirli in un posto sicuro o eliminarli il prima possibile.</string>
|
||||
<string name="EnterPasswordToContinue">Inserire la password per %1$s per continuare:</string>
|
||||
<string name="IncorrectPassword">Password errata.</string>
|
||||
<string name="ImportBackupAsk">Delta Chat ha trovato un backup in <![CDATA[<i>]]>%1$s<![CDATA[</i>]]>.\n\nImportare e utilizzare da questo backup tutti i dati e le impostazioni?</string>
|
||||
<string name="ImportBackupAsk">Delta Chat ha trovato un backup in <![CDATA[<i>]]>%1$s<![CDATA[</i>]]>.\n\nImportare e utilizzare tutti i dati e le impostazioni da questo backup?</string>
|
||||
<string name="ImportBackup">Importa backup</string>
|
||||
<string name="NoBackupFound">Non è stato trovato alcun backup da importare.\n\nCopiare il in <![CDATA[<i>]]>%1$s<![CDATA[</i>]]> e riprovare. In alternativa, premere \"Inizia a comunicare\" per la normale procedura di configurazione.</string>
|
||||
<string name="FilesSuccessfullyExported">File esportati con successo in <![CDATA[<i>]]>%1$s<![CDATA[</i>]]>.</string>
|
||||
<string name="ExportBackup">Esporta backup</string>
|
||||
<string name="ExportPrivateKeys">Esporta chiavi private</string>
|
||||
<string name="ImportPrivateKeys">Importa chiavi private</string>
|
||||
<string name="ImportPrivateKeysAsk2">Importare le chiavi private da <![CDATA[<i>]]>%1$s<![CDATA[</i>]]>?\n\n• Le chiavi private esistenti non verranno eliminate.\n\n• L\'ultima chiave importata verrà utilizzata come la nuova chiave predefinita</string>
|
||||
<string name="ImportPrivateKeysAsk2">Importare le chiavi private da <![CDATA[<i>]]>%1$s<![CDATA[</i>]]>?\n\n• Le chiavi private esistenti non verranno eliminate.\n\n• L\'ultima chiave importata verrà utilizzata come nuova chiave predefinita</string>
|
||||
<string name="NoRecentEmoji">Le emoji utilizzate di recente verranno mostrate qui.</string>
|
||||
<string name="E2eeOffBecauseOfUser">Per abilitare la crittografia end-to-end, selelzionare l\'opzione corrispondente nelle impostazioni.</string>
|
||||
<string name="E2eeOffBecauseOfRecipient">La crittigrafia end-to-end sarà attiva solo se anche chi riceve il messaggio abilita l\'opzione corridpondente.</string>
|
||||
<string name="NotNow">Non ora</string>
|
||||
<string name="ArchiveChat">Archivia chat</string>
|
||||
<string name="UnarchiveChat">Ripristina chat</string>
|
||||
<string name="ArchivedChats">Chat archiviate</string>
|
||||
<string name="ArchiveChat">Archivia conversazione</string>
|
||||
<string name="UnarchiveChat">Ripristina conversazione</string>
|
||||
<string name="ArchivedChats">Conversazioni archiviate</string>
|
||||
<string name="Archived">Archiviata</string>
|
||||
<string name="LeaveGroup">Abbandona gruppo</string>
|
||||
<string name="AskLeaveGroup">Sei sicuro di voler abbandonare il gruppo?</string>
|
||||
<string name="Never">Mai</string>
|
||||
<string name="AutocryptKeyTransferInitiate">Invia messaggio di configurazione Autocrypt</string>
|
||||
<string name="AutocryptKeyTransfer">Messaggio di configurazione Autocrypt</string>
|
||||
<string name="AutocryptKeyTransferMsgBeforeSend">Il <![CDATA[<i>]]>messaggio di configurazione Autocrypt<![CDATA[</i>]]> condivide in modo sicuro la propria configurazione con altri dispositivi compatibili con Autocrypt.\n\nLa configurazione verrà cifrata con un codice che verrà mostrato qui e dovrà essere digitato sull\'altro dispositivo.</string>
|
||||
<string name="AutocryptKeyTransferMsgAfterSend">La confugurazione è stata inviata. Passare all\'altro dispositivo e aprire il messaggio. Verrà richiesto un codice. Digitare il codice seguente:\n\n%1$s\n\nUna volta terminato, l\'altro dispositivo sarà pronto per usare Autocrypt.</string>
|
||||
<string name="AutocryptSetupMessageSubject">Messaggio di configurazione Autocrypt</string>
|
||||
<string name="AutocryptSetupMessageGeneralBody">Questo è il messaggio usato per trasferire la propria configurazione di Autocrypt tra più client.\n\nPer decifrare e usare la configurazione, aprire il messaggio in un client compatibile con Autocrypt e digitare il codice di configurazione visibile sul dispositivo dal quale si è generata la chiave.</string>
|
||||
<string name="AutocryptSetupMessageTapBody">Questo è il messaggio usato per trasferire la propria configurazione di Autocrypt tra più client.\n\nPer decifrare e usare la configurazione, toccare questo messaggio.</string>
|
||||
<string name="AutocryptKeyTransferPleaseEnterCode">Inserire il codice di configurazione mostrato sull\'altro dispositivo.</string>
|
||||
<string name="AutocryptKeyTransferBadCode">Codice di configurazione errato, riprovare.\n\nSe non si ricorda il codice di configurazione, inviare un altro messaggio di configurazione Autocrypt dall\'altro dispositivo.</string>
|
||||
<string name="AutocryptKeyTransferSucceeded">Configurazione trasferita con successo. Questo dispositivo è pronto per usare Autocrypt con la stessa chiave dell\'altro dispositivo.</string>
|
||||
<string name="Retry">Riprovare</string>
|
||||
<string name="SelfTalkSubtitle">Messaggi inviati a se stessi</string>
|
||||
<string name="QrScan">Leggi codice QR</string>
|
||||
<string name="QrShow">Mostra codice QR</string>
|
||||
<string name="QrScanContainsText">Il codice QR acquisito contiene il seguente testo:\n\n%1$s</string>
|
||||
<string name="QrScanContainsUrl">Il codice QR acquisito, contiene il seguente URL:\n\n%1$s</string>
|
||||
<string name="OobFingerprint">Impronta digitale</string>
|
||||
<string name="OobFingerprintAskOob">Verificare il contatto e iniziare una conversazione con <![CDATA[<b>]]>%1$s<![CDATA[</b>]]>?</string>
|
||||
<string name="OobFingerprintOk">Contatto <![CDATA[<i>]]>%1$s<![CDATA[</i>]]> verificato. Iniziare una conversazione?</string>
|
||||
<string name="OobFingerprintMismatch">L\'impronta digitale acquisita <![CDATA[<b>]]>non corrisponde<![CDATA[</b>]]> a quella vista l\'ultima volta per <![CDATA[<i>]]>%1$s<![CDATA[</i>]]>.</string>
|
||||
<string name="OobFingerprintWithoutAddr">Questo codice QR contiene una impronta digitale ma non un indirizzo email.\n\nPer una verifica \"out-of-band\", stabilire prima una connessione cifrata con il contatto.</string>
|
||||
<string name="OobSecureJoinRequested">%1$s entra.</string>
|
||||
<string name="CannotDecryptBody">Questo messaggio non può essere decifrato.\n\n• Potrebbe essere utile rispondere semplicemente a questo messaggio e chiedere al contatto di inviarlo nuovamente.\n\n• Nel caso Delta Chat o un\'altra applicazione per le email sia stata reinstallata su questo o su un altro dispositivo, si divrebbe inviare da lì un messaggio di configurazione Autocrypt.</string>
|
||||
<string name="Autocrypt">Autocrypt</string>
|
||||
<string name="AutocryptExplain"><![CDATA[<i>]]>Autocrypt<![CDATA[</i>]]> è una nuova specifica aperta per la cifratura end-to-end delle email.\n\nLa configurazione della cifratura viene creata automaticamente in base alle esigenze e può essere trasferita tra diversi dispositivi con i <![CDATA[<i>]]>Messaggi di configurazione Autocrypt.<![CDATA[</i>]]></string>
|
||||
<string name="NewVerifiedGroup">Nuovo gruppo verificato</string>
|
||||
<string name="SharedChats">Conversazioni condivise</string>
|
||||
<string name="VerifiedContact">Contatto verificato</string>
|
||||
<string name="Contact">Contatto</string>
|
||||
<string name="VerifiedGroup">Gruppo verificato</string>
|
||||
<string name="Group">Gruppo</string>
|
||||
<string name="EditedNameWillBeShared">Il nome modificato verrà condiviso con tutti i membri del gruppo.</string>
|
||||
<string name="QrShowInviteCode">Mostra codice QR di invito</string>
|
||||
<string name="E2EEncryptionPreferred">Cifratura end-to-end preferita.</string>
|
||||
<string name="OobAddrVerified">%1$s verificato.</string>
|
||||
<string name="OobAskJoinVerifiedGroup">Entrare nel gruppo verificato <![CDATA[<b>]]>%1$s<![CDATA[</b>]]>?</string>
|
||||
<!-- Translators: %1$s is replaced by an action, eg. MsgMemberAddedToGroup, MsgMemberRemovedFromToGroup, MsgGroupNameChanged or MsgGroupImageChanged. If the action ends with a full stop, this is removed.
|
||||
%2$s is replaced by a the name of the user that made this action.
|
||||
Resulting strings might be "Member Alice added by Bob." or 'Group name changed from "Foo" to "Bar" by Claire.
|
||||
If you do not find a correct grammar for your language you can just use "%1$s (by %2$s)" or "%2$s: %1$s" -->
|
||||
<string name="ActionByUser">%1$s da %2$s.</string>
|
||||
<!-- Translators: %1$s is replaced by an action, eg. MsgMemberAddedToGroup, MsgMemberRemovedFromToGroup, MsgGroupNameChanged or MsgGroupImageChanged. If the action ends with a full stop, this is removed.
|
||||
Resulting strings might be "Member Alice added by me." or 'Group name changed from "Foo" to "Bar" by me.
|
||||
If you do not find a correct grammar for your language you can just use "%1$s (by me)" or "Me: %1$s" -->
|
||||
<string name="ActionBySelf">%1$s da te.</string>
|
||||
</resources>
|
||||
|
||||
@@ -0,0 +1,96 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
|
||||
|
||||
<resources xmlns:tools="http://schemas.android.com/tools">
|
||||
<string name="AppName">Delta Chat</string>
|
||||
<!--chats view-->
|
||||
<string name="Settings">設定</string>
|
||||
<string name="NewGroup">新規グループ</string>
|
||||
<string name="NoResult">該当無し</string>
|
||||
<string name="NoChats">履歴が有りません</string>
|
||||
<string name="DeleteChat">Delete chat</string>
|
||||
<string name="Search">検索</string>
|
||||
<string name="AttachMusic">音楽</string>
|
||||
<string name="NoFiles">未だファイルが有りません</string>
|
||||
<string name="InternalStorage">内部記録領域</string>
|
||||
<string name="ExternalStorage">外部記録領域</string>
|
||||
<string name="Folder">フォルダー</string>
|
||||
<string name="ChatCamera">カメラ</string>
|
||||
<string name="TypeMessage">メッセージ</string>
|
||||
<string name="SaveToDownloads">Downloadsフォルダーへ保存</string>
|
||||
<string name="SaveToMusic">Musicフォルダーへ保存</string>
|
||||
<string name="Share">共有</string>
|
||||
<string name="Sound">音声</string>
|
||||
<string name="SendByEnter">確定キーで送信</string>
|
||||
<string name="LedColor">LED色</string>
|
||||
<string name="PasscodePassword">パスワード</string>
|
||||
<string name="CurvesRed">赤</string>
|
||||
<string name="CurvesGreen">緑</string>
|
||||
<string name="CurvesBlue">青</string>
|
||||
<string name="PickerPhotos">写真</string>
|
||||
<string name="PickerVideo">動画</string>
|
||||
<!--button titles-->
|
||||
<string name="Done">完了</string>
|
||||
<string name="Open">開く</string>
|
||||
<string name="Cancel">取消</string>
|
||||
<string name="Send">送信</string>
|
||||
<string name="Delete">削除</string>
|
||||
<!--messages-->
|
||||
<string name="AttachPhoto">写真</string>
|
||||
<string name="AttachVideo">動画</string>
|
||||
<string name="AttachGif">GIF</string>
|
||||
<string name="AttachDocument">ファイル</string>
|
||||
<string name="AttachVoiceMessage">音声メッセージ</string>
|
||||
<string name="PermissionNoAudio">録音機能は音声メッセージの送信に必要です</string>
|
||||
<string name="PermissionOpenSettings">設定</string>
|
||||
<!--Intro view-->
|
||||
<string name="Intro1Headline">Delta Chat</string>
|
||||
<string name="Intro2Headline">独立</string>
|
||||
<string name="Intro2Message"><![CDATA[<b>Delta Chatにはサーバーが有りません。</b>]]> ご自分のメールサーバーをのみ用います。</string>
|
||||
|
||||
<string name="Intro3Headline">軽快</string>
|
||||
<string name="Intro3Message"><![CDATA[<b>メッセージ送信</b>]]>は瞬時に。<![CDATA[<br/>]]>動作も快適です。</string>
|
||||
|
||||
<string name="Intro4Headline">多機能</string>
|
||||
<string name="Intro5Headline">無料</string>
|
||||
<string name="Intro5Message"><![CDATA[<b>Delta Chat</b>]]>は永遠に無料です。<![CDATA[<br/>]]>オープンソースで広告や縛り、課金も不要です。</string>
|
||||
|
||||
<string name="Intro6Headline">秘匿</string>
|
||||
<string name="Intro6Message">共通規格によって<![CDATA[<b>暗号化</b>]]>されています。メッセージはあなたのサーバー内に留まります。</string>
|
||||
|
||||
<string name="IntroStartMessaging">開始する</string>
|
||||
<plurals name="Minutes">
|
||||
<item quantity="other">%d分</item>
|
||||
</plurals>
|
||||
<plurals name="Hours">
|
||||
<item quantity="other">%d時間</item>
|
||||
</plurals>
|
||||
<plurals name="Days">
|
||||
<item quantity="other">%d日</item>
|
||||
</plurals>
|
||||
<plurals name="Weeks">
|
||||
<item quantity="other">%d週</item>
|
||||
</plurals>
|
||||
<plurals name="Months">
|
||||
<item quantity="other">%d月</item>
|
||||
</plurals>
|
||||
<string name="AccountSettings">アカウント設定</string>
|
||||
<string name="Password">パスワード</string>
|
||||
<string name="SmtpPassword">SMTPパスワード</string>
|
||||
<string name="FromAbove">同上</string>
|
||||
<string name="SmtpLoginname">SMTPログイン名</string>
|
||||
<string name="SmtpPort">SMTPポート番号</string>
|
||||
<string name="Automatic">自動</string>
|
||||
<string name="ImapServer">IMAPサーバー</string>
|
||||
<string name="ImapLoginname">IMAPログイン名</string>
|
||||
<string name="SmtpServer">SMTPサーバー</string>
|
||||
<string name="ImapPort">IMAPポート番号</string>
|
||||
<string name="InboxHeadline">受信</string>
|
||||
<string name="OutboxHeadline">送信</string>
|
||||
<string name="AboutThisProgram">Delta Chatについて</string>
|
||||
<string name="DefaultStatusText">Delta Chatメッセンジャーより送信: https://delta.chat</string>
|
||||
<string name="EmailAddress">メールアドレス</string>
|
||||
<string name="AdvancedSettings">追加設定</string>
|
||||
<string name="Retry">やり直す</string>
|
||||
</resources>
|
||||
@@ -273,4 +273,5 @@
|
||||
<string name="DoneHint">성공!</string>
|
||||
<string name="Audio">음악</string>
|
||||
<string name="AutoplayGifs">GIF 자동재생</string>
|
||||
<string name="Contact">연락처</string>
|
||||
</resources>
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
<string name="From">Fra</string>
|
||||
<string name="NoRecent">Ingen nylige</string>
|
||||
<string name="TypeMessage">Melding</string>
|
||||
<string name="SlideToCancel">DRA FOR Å AVBRYTE</string>
|
||||
<string name="SlideToCancel">Dra for å avbryte</string>
|
||||
<string name="SaveToDownloads">Lagre i \"Nedlastinger\"</string>
|
||||
<string name="SaveToMusic">Lagre i \"Musikk\"</string>
|
||||
<string name="Share">Del</string>
|
||||
@@ -82,6 +82,7 @@
|
||||
<string name="BlockedContacts">Blokkerte kontakter</string>
|
||||
<string name="Default">Forvalg</string>
|
||||
<string name="OnlyIfSilent">Bare hvis lydløs</string>
|
||||
<string name="ChatBackground">Sludrebakgrunn</string>
|
||||
<string name="SendByEnter">Send med "Enter"</string>
|
||||
<string name="Help">Hjelp</string>
|
||||
<string name="Enabled">På</string>
|
||||
@@ -90,12 +91,16 @@
|
||||
<string name="BadgeNumber">Vis antall i ikon hvis mulig</string>
|
||||
<string name="Short">Kort</string>
|
||||
<string name="Long">Lang</string>
|
||||
<string name="RaiseToSpeak">Hev for å snakke</string>
|
||||
<string name="EditName">Rediger navn</string>
|
||||
<string name="NotificationsPriority">Vis</string>
|
||||
<string name="NotificationsPriorityDefault">Normal prioritet</string>
|
||||
<string name="NotificationsPriorityHigh">Høy prioritet</string>
|
||||
<string name="NotificationsPriorityMax">Høyeste prioritet</string>
|
||||
<string name="RepeatNotifications">Gjenta merknader</string>
|
||||
<string name="NotificationsOther">Annet</string>
|
||||
<string name="InChatSound">Lyder i sludring</string>
|
||||
<string name="SmartNotifications">Begrens merknader</string>
|
||||
<string name="SmartNotificationsSoundAtMost">Maks.</string>
|
||||
<string name="SmartNotificationsTimes">tider</string>
|
||||
<string name="SmartNotificationsWithin">innen</string>
|
||||
@@ -109,14 +114,23 @@
|
||||
<string name="KeepMediaForever">For alltid</string>
|
||||
<!--passcode view-->
|
||||
<string name="Passcode">Programlås</string>
|
||||
<string name="ChangePasscode">Endre passord</string>
|
||||
<string name="ChangePasscodeInfo">Hvis du setter opp et passord til, vil et låseikon vises på sludresiden. Trykk på det for å låse programmet.\n\nMerk: Hvis du glemmer passordet, må du slette og reinstallere programmet.</string>
|
||||
<string name="PasscodePIN">PIN</string>
|
||||
<string name="PasscodePassword">Passord</string>
|
||||
<string name="EnterCurrentPasscode">Skriv inn ditt nåværende passord</string>
|
||||
<string name="EnterNewFirstPasscode">Skriv inn et passord</string>
|
||||
<string name="EnterNewPasscode">Skriv inn ditt nye passord</string>
|
||||
<string name="EnterYourPasscode">Skriv inn passordet ditt</string>
|
||||
<string name="ReEnterYourPasscode">Skriv inn passordet ditt igjen</string>
|
||||
<string name="PasscodeDoNotMatch">Passordene stemmer ikke overens</string>
|
||||
<string name="AutoLock">Autolås</string>
|
||||
<string name="AutoLockInfo">Krev passord etter inaktivitet.</string>
|
||||
<string name="UnlockFingerprint">Lås opp med fingeravtrykk</string>
|
||||
<string name="FingerprintInfo">Bekreft fingeravtrykk for å fortsette</string>
|
||||
<string name="FingerprintNotRecognized">Fingeravtrykket ble ikke gjenkjent. Prøv igjen</string>
|
||||
<!--photo gallery view-->
|
||||
<string name="SaveToGallery">Lagre i \"Galleri"\</string>
|
||||
<string name="SaveToGallery">Lagre i \"Galleri\"</string>
|
||||
<string name="Of">%1$d av %2$d</string>
|
||||
<string name="Gallery">Galleri</string>
|
||||
<string name="AllPhotos">Alle bilder</string>
|
||||
@@ -126,14 +140,28 @@
|
||||
<string name="CropImage">Beskjær bilde</string>
|
||||
<string name="EditImage">Rediger bilde</string>
|
||||
<string name="Enhance">Forbedre</string>
|
||||
<string name="Highlights">Framhevinger</string>
|
||||
<string name="Contrast">Kontrast</string>
|
||||
<string name="Exposure">Eksponering</string>
|
||||
<string name="Warmth">Varme</string>
|
||||
<string name="Saturation">Metning</string>
|
||||
<string name="Vignette">Vignettering</string>
|
||||
<string name="Shadows">Skygger</string>
|
||||
<string name="Grain">Kornethet</string>
|
||||
<string name="Sharpen">Øk skarphet</string>
|
||||
<string name="Fade">Toning</string>
|
||||
<string name="Tint">Missfarging</string>
|
||||
<string name="TintShadows">Skygger</string>
|
||||
<string name="CurvesAll">ALLE</string>
|
||||
<string name="CurvesRed">RØD</string>
|
||||
<string name="CurvesGreen">GRØNN</string>
|
||||
<string name="CurvesBlue">BLÅ</string>
|
||||
<string name="TintHighlights">Framhevinger</string>
|
||||
<string name="Curves">Kurver</string>
|
||||
<string name="CurvesAll">Alle</string>
|
||||
<string name="CurvesRed">Rød</string>
|
||||
<string name="CurvesGreen">Grønn</string>
|
||||
<string name="CurvesBlue">Blå</string>
|
||||
<string name="Blur">Tilsmussing</string>
|
||||
<string name="BlurOff">Av</string>
|
||||
<string name="BlurLinear">Lineæritet</string>
|
||||
<string name="BlurRadial">Gon</string>
|
||||
<string name="DiscardChanges">Forkast endringer?</string>
|
||||
<string name="ClearButton">Tøm</string>
|
||||
<string name="PickerPhotos">Bilder</string>
|
||||
@@ -154,8 +182,9 @@
|
||||
<string name="Forward">Videresend</string>
|
||||
<string name="FromCamera">Fra kamera</string>
|
||||
<string name="FromGalley">Fra galleri</string>
|
||||
<string name="Set">Sett</string>
|
||||
<string name="OK">OK</string>
|
||||
<string name="Crop">BESKJÆR</string>
|
||||
<string name="Crop">Beskjær</string>
|
||||
<!--messages-->
|
||||
<string name="AttachPhoto">Bilde</string>
|
||||
<string name="AttachVideo">Video</string>
|
||||
@@ -175,7 +204,7 @@
|
||||
<!--permissions-->
|
||||
<string name="PermissionContacts">Delta Chat trenger tilgang til kontaktene dine slik at du kan koble til dine venner på tvers av alle enhetene dine.</string>
|
||||
<string name="PermissionStorage">Delta chat trenger tilgang til lagring, slik at du kan sende og lagre bilder, videoer, musikk og annen media.</string>
|
||||
<string name="PermissionNoAudio">Delta Chat trenger mikrofontilgang slik at du kan sende stemmemeldinger.</string>
|
||||
<string name="PermissionNoAudio">Delta Chat trenger mikrofontilgang slik at du kan sende lydmeldinger.</string>
|
||||
<string name="PermissionOpenSettings">Tilpass innstillinger</string>
|
||||
<!--Intro view-->
|
||||
<string name="Intro1Headline">Delta Chat</string>
|
||||
@@ -185,10 +214,14 @@
|
||||
<string name="Intro2Message"><![CDATA[<b>Ingen avhengigheter</b>]]> på datamaskiner annensteds hen, eller tjenester. Programmet bruker kun e-posttjeneren din.</string>
|
||||
|
||||
<string name="Intro3Headline">Rask</string>
|
||||
<string name="Intro3Message"><![CDATA[<b>Push-meldinger</b>]]> på kun sekunder.<![CDATA[<br/>]]>Hurtig grensesnitt.</string>
|
||||
|
||||
<string name="Intro4Headline">Kraftig</string>
|
||||
<string name="Intro4Message"><![CDATA[<b>Ubegrensede</b>]]> sludringer, bilder, videoer, lydmeldinger med mer. Multiklient-støtte.</string>
|
||||
|
||||
<string name="Intro5Headline">Ledig</string>
|
||||
<string name="Intro5Message"><![CDATA[<b>Delta Chat</b>]]> er gratis for alltid.<![CDATA[<br/>]]>Friprog. Ingen reklame. Inget abonnement. Inget tvunget tilbyderforhold.</string>
|
||||
|
||||
<string name="Intro6Headline">Trygt</string>
|
||||
<string name="Intro6Message"><![CDATA[<b>Kryptert</b>]]> med alle vanlige alle vanlige algoritmer. Meldingene forblir på tjenerne.</string>
|
||||
|
||||
@@ -220,6 +253,9 @@
|
||||
<item quantity="one">Slett %d melding? Den vil også bli slettet fra tjeneren?</item>
|
||||
<item quantity="other">Slett %d meldinger? De vil også bli slettet fra tjeneren.</item>
|
||||
</plurals>
|
||||
<!-- Translators: The first string placeholder gets replaced with the
|
||||
text "%d new messages", so the complete sentence would be e.g.
|
||||
"4 new messages in 2 chats". -->
|
||||
<plurals name="NewMessagesInChats">
|
||||
<item quantity="one">%1$s i %2$d sludring</item>
|
||||
<item quantity="other">%1$s i %2$d sludringer</item>
|
||||
@@ -248,6 +284,9 @@
|
||||
<item quantity="one">%d måned</item>
|
||||
<item quantity="other">%d måneder</item>
|
||||
</plurals>
|
||||
<!-- Translators: The second string placeholder gets replaced with the
|
||||
text "%d minutes", so the complete sentence would be e.g.
|
||||
"At most 8 notifications within 3 minutes". -->
|
||||
<plurals name="MaxNotifications">
|
||||
<item quantity="one">Maksimalt %1$d merknad i løpet av %2$s</item>
|
||||
<item quantity="other">Maksimalt %1$d merknader i løpet av %2$s</item>
|
||||
@@ -256,6 +295,12 @@
|
||||
<string name="formatterMonthYear">MMMM yyyy</string>
|
||||
<string name="formatterMonth">dd MMM</string>
|
||||
<string name="formatterYear">dd.MM.yyyy</string>
|
||||
<string name="chatDate">EEE, d, MMMM</string>
|
||||
<string name="chatFullDate">EEE, d. MMMM, yyyy</string>
|
||||
<string name="formatterWeek">EEE</string>
|
||||
<string name="formatterDay24H">HH:mm</string>
|
||||
<string name="formatterDay12H">h:mm a</string>
|
||||
<string name="formatDateAtTime">%1$s klokka %2$s</string>
|
||||
<string name="AccountSettings">Kontoinnstillinger</string>
|
||||
<string name="MyAccount">Min konto</string>
|
||||
<string name="MyName">Mitt navn</string>
|
||||
@@ -273,7 +318,7 @@
|
||||
<string name="InboxHeadline">Innboks</string>
|
||||
<string name="OutboxHeadline">Utboks</string>
|
||||
<string name="MyAccountExplain">For kjente e-posttilbydere blir ytterligere innstillinger bestemt automatisk.</string>
|
||||
<string name="MyAccountExplain2" >Noen ganger <![CDATA[<b>]]>må IMAP skrus på<![CDATA[</b>]]> i vev-e-postgrenseflaten.\n\nVed problemer, spør din e-posttilbyder eller dine venner.</string>
|
||||
<string name="MyAccountExplain2" >Noen ganger må <![CDATA[<b>]]>IMAP<![CDATA[</b>]]> skrus på i vev-e-postgrenseflaten.\n\nVed problemer, spør din e-posttilbyder eller dine venner.</string>
|
||||
<string name="AccountNotConfigured">Konto ikke satt opp</string>
|
||||
<string name="AboutThisProgram">Om</string>
|
||||
<string name="NotSet">Ikke satt</string>
|
||||
@@ -284,7 +329,7 @@
|
||||
<string name="AskStartChatWith">Begynn å sludre med <![CDATA[<b>]]>%1$s<![CDATA[</b>]]>?</string>
|
||||
<string name="DeaddropHint">For å begynne sludring, klikk på svar-pilene.</string>
|
||||
<string name="NotYetImplemented">Denne funksjonen er ikke tilgjengelig eller ufullstendig.</string>
|
||||
<string name="DefaultStatusText">Sendt med Delta Chat: https://delta.chat</string>
|
||||
<string name="DefaultStatusText">Sendt med Delta Chat: https://delta.chat/nb</string>
|
||||
<string name="Name" >Navn</string>
|
||||
<string name="EmailAddress">E-postadresse</string>
|
||||
<string name="CannotDeleteContact">Kan ikke slette kontakter i bruk, blokker kontakt istedenfor.</string>
|
||||
@@ -299,9 +344,12 @@
|
||||
<string name="InviteMenuEntry">Send invitasjoner</string>
|
||||
<string name="InviteText">Jeg bruker Delta Chat-meldingstjenesten nå - %1$s - du kan tekste meg på %2$s</string>
|
||||
<string name="AdvancedSettings">Avanserte innstillinger</string>
|
||||
<string name="AskResetNotifications">Tilbakestill alle merknadsinnstillinger og lyder for gjeldende side, kontakter og grupper?</string>
|
||||
<string name="AttachFiles">Legg ved filer</string>
|
||||
<string name="ErrGroupNameEmpty">Skriv inn et navn for gruppen.</string>
|
||||
<string name="MsgNewGroupDraftHint">Forfatt den første meldingen, noe som lar andre svare i gruppen.\n\n• Det er greit at ikke alle medlemmer bruker Delta Chat.\n\n• Levering av den første meldingen kan ta sin tid.</string>
|
||||
<string name="MsgNewGroupDraft">Hei, jeg har akkurat opprettet gruppen \"%1$s\" for oss.</string>
|
||||
<string name="MsgGroupNameChanged">Gruppenavn endret fra \"%1$s\" til \"%2$s\".</string>
|
||||
<string name="MsgGroupImageChanged">Gruppebilde endret.</string>
|
||||
<string name="MsgMemberAddedToGroup">Medlem %1$s lagt til.</string>
|
||||
<string name="MsgMemberRemovedFromToGroup">Medlem %1$s fjernet.</string>
|
||||
@@ -309,6 +357,7 @@
|
||||
<string name="AskRemoveMemberFromGroup">Fjern <![CDATA[<b>]]>%1$s<![CDATA[</b>]]> fra gruppen?</string>
|
||||
<string name="ErrSelfNotInGroup">Du må være medlem av gruppen for å utføre denne handlingen.</string>
|
||||
<string name="MsgGroupLeft">Gruppe oppløst.</string>
|
||||
<string name="NoMessagesHint">Send melding til <![CDATA[<b>]]>%1$s<![CDATA[</b>]]>:\n\n• Det er greit hvis <![CDATA[<b>]]>%2$s<![CDATA[</b>]]> ikke bruker Delta Chat.\n\n• Levering av den første meldingen kan ta sin tid.</string>
|
||||
<string name="SendNRcvReadReceipts">Motta og send meldingskvitteringer</string>
|
||||
<string name="PreferE2EEncryption">Foretrekk ende-til-ende -kryptering</string>
|
||||
<string name="E2EManagePrivateKeys">Behandle private nøkler</string>
|
||||
@@ -325,31 +374,35 @@
|
||||
<string name="PermNotificationText">Venter på meldinger…</string>
|
||||
<string name="SettingsFor">Innstillinger for %1$s</string>
|
||||
<string name="AutoplayGifs">Spill av GIF-filer automatisk</string>
|
||||
<string name="HelpUrl">https://delta.chat/nb/help</string>
|
||||
<string name="EncryptedMessage">Kryptert melding</string>
|
||||
<string name="Encryption">Kryptering</string>
|
||||
<string name="EncrinfoE2E">Ende-til-ende -kryptering påskrudd.</string>
|
||||
<string name="EncrinfoE2EExplain">Hvis alle fingeravtrykkene stemmer overens på den andre enheten, er tilkoblingen trygg.</string>
|
||||
<string name="EncrinfoE2EAvailable">Ende-til-ende -kryptering tilgjengelig.</string>
|
||||
<string name="EncrinfoTransport">Transport-kryptering ihvertfall opptil min tjener.</string>
|
||||
<string name="EncrinfoNone">Ingen kryptering på min tjener.</string>
|
||||
<string name="EncrinfoFingerprints">Fingeravtrykk</string>
|
||||
<string name="Backup">Sikkerhetskopi</string>
|
||||
<string name="ImportBackupExplain2">For å importere en sikkerhetskopi, importer den til <![CDATA[<i>]]>%1$s<![CDATA[</i>]]> og reinstaller programmet.</string>
|
||||
<string name="ReadReceiptMailBody">Dette er en meldingskvittering for meldingen \"%1$s\".\n\nDenne meldingskvitteringen bekrefter bare at meldingen ble vist på mottakerens enhet. Det finnes ingen garanti for at mottakeren har lest meldingsinnholdet.</string>
|
||||
<string name="ReadReceipt">Meldingskvittering</string>
|
||||
<string name="NameAndStatus">Navn og status</string>
|
||||
<string name="MyStatus">Min status</string>
|
||||
<string name="MyStatusExplain">Denne statusen viser i bunntekster for e-post, samt andre steder.</string>
|
||||
<string name="MsgGroupImageDeleted">Gruppebilde slettet.</string>
|
||||
<string name="AskDeleteGroupImage">Er du sikker på at du vil slette dette gruppebildet?\n\nDette vil ha innvirkning på alle enhetene tilhørende gruppemedlemmene.</string>
|
||||
<string name="ExportImportHeader">Eksport og import</string>
|
||||
<string name="ImportExportExplain">Eksporterte filer vil inneholde hemmelige nøkler! Ta vare på dem på en trygg plass, eller slett dem så snart som mulig.</string>
|
||||
<string name="EnterPasswordToContinue">Skriv inn passordet for %1$s for å fortsette:</string>
|
||||
<string name="IncorrectPassword">Uriktig passord.</string>
|
||||
<string name="ImportBackupAsk">Sikkerhetskopi funnet i <![CDATA[<i>]]>%1$s<![CDATA[</i>]]>.\n\nØnsker du å importere og bruke alle data og innstillinger fra den?</string>
|
||||
<string name="ImportBackup">Importer sikkerhetskopi</string>
|
||||
<string name="NoBackupFound">Fant ingen sikkerhetskopier.\n\nKopier sikkerhetskopien til <![CDATA[<i>]]>%1$s<![CDATA[</i>]]> og prøv igjen. Alternativt, trykk \"Start meldingsforsendelse\" for normal oppsettsprosess.</string>
|
||||
<string name="FilesSuccessfullyExported">Filer eksporter til <![CDATA[<i>]]>%1$s<![CDATA[</i>]]>.</string>
|
||||
<string name="ExportBackup">Eksporter sikkerhetskopi</string>
|
||||
<string name="ExportPrivateKeys">Eksporter private nøkler</string>
|
||||
<string name="ImportPrivateKeys">Importer private nøkler</string>
|
||||
<string name="ImportPrivateKeysAsk2">Importer private nøkler fra <![CDATA[<i>]]>%1$s<![CDATA[</i>]]>?\n\n• Eksisterende private nøkler blir ikke slettet\n\n• Den sist importerte nøkkelen vil bli brukt som ny forvalgt nøkkel</string>
|
||||
<string name="NoRecentEmoji">Nylig brukte emoji-er vil bli vist her.</string>
|
||||
<string name="E2eeOffBecauseOfUser">For å skru på ende-til-ende -kryptering, huk det ut i innstillingene.</string>
|
||||
<string name="E2eeOffBecauseOfRecipient">Ende-til-ende -kryptering vil bli brukt hvis mottakeren også skrur det på.</string>
|
||||
<string name="NotNow">Ikke nå</string>
|
||||
<string name="ArchiveChat">Arkiver sludring</string>
|
||||
<string name="UnarchiveChat">Fjern sludring fra arkiv</string>
|
||||
@@ -358,4 +411,50 @@
|
||||
<string name="LeaveGroup">Forlat gruppe</string>
|
||||
<string name="AskLeaveGroup">Er du sikker på at du vil forlate denne gruppen?</string>
|
||||
<string name="Never">Aldri</string>
|
||||
<string name="AutocryptKeyTransferInitiate">Igangsett Autocrypt-nøkkeloverføring</string>
|
||||
<string name="AutocryptKeyTransfer">Autocrypt-nøkkeloverføring</string>
|
||||
<string name="AutocryptKeyTransferMsgBeforeSend">The <![CDATA[<i>]]>Autocrypt-nøkkeloverføring<![CDATA[</i>]]> krever at e-postklienten på den andre enheten er Autocrypt-kompatibel.\n\nDu kan så sende din hemmelige nøkkel til deg selv. Nøkkelen vil bli kryptert av en oppsettskode som vises her og må skrives inn på den andre enheten.</string>
|
||||
<string name="AutocryptKeyTransferMsgAfterSend">Nøkkelen din har blitt sendt til deg selv. Bytt til den andre enheten og åpne oppsettsmeldingen. Du bør bli forespurt om å oppgi en oppsettskode. Skriv in følgende siffer:\n\n%1$s\n\nNår du er ferdig, vil din andre enhet også kunne bruke Autocrypt.</string>
|
||||
<string name="AutocryptSetupMessageSubject">Autocrypt-oppsettsmelding</string>
|
||||
<string name="AutocryptSetupMessageGeneralBody">Dette er Autocrypt-oppsettsmeldingen brukt til å overføre nøkkelen din mellom klienter.\n\nFor å dekryptere å bruke din nøkkel, åpne meldingen i en Autocrypt-kompatibel klient og skriv inn oppsettskoden som vises på enheten som genererer den.</string>
|
||||
<string name="AutocryptSetupMessageTapBody">Dette er Autocrypt-oppsettsmeldingen brukt til å overføre nøkkelen din mellom klienter.\n\nFor å dekryptere å bruke din nøkkel, trykk på denne meldingen.</string>
|
||||
<string name="AutocryptKeyTransferPleaseEnterCode">Skriv inn oppsettskoden som vises på den andre enheten.</string>
|
||||
<string name="AutocryptKeyTransferBadCode">Feil oppsettskode. Prøv igjen.\n\nHvis du ikke husker den, sett igang nøkkeloverføringen på en andre enheten igjen.</string>
|
||||
<string name="AutocryptKeyTransferSucceeded">Nøkkel overført. Denne enheten er nå klar til å bruke Autocrypt med samme nøkkel som den andre enheten.</string>
|
||||
<string name="Retry">Prøv igjen</string>
|
||||
<string name="SelfTalkSubtitle">Meldinger jeg har sendt til meg selv</string>
|
||||
<string name="QrScan">Skann QR-kode</string>
|
||||
<string name="QrShow">Vis QR-kode</string>
|
||||
<string name="QrScanContainsText">Den skannede QR-koden inneholder følgende tekst:\n\n%1$s</string>
|
||||
<string name="QrScanContainsUrl">Den skannede QR-koden inneholder følgende lenke:\n\n%1$s</string>
|
||||
<string name="OobFingerprint">Fingeravtrykk</string>
|
||||
<string name="OobFingerprintAskOob">Bekreft kontakt og start sludring med <![CDATA[<b>]]>%1$s<![CDATA[</b>]]>?</string>
|
||||
<string name="OobFingerprintOk">Kontakt <![CDATA[<i>]]>%1$s<![CDATA[</i>]]> bekreftet. Start sludring?</string>
|
||||
<string name="OobFingerprintMismatch">Det skannede fingeravtrykket <![CDATA[<b>]]>stemmer ikke overens<![CDATA[</b>]]> med sist sette fingeravtrukk for <![CDATA[<i>]]>%1$s<![CDATA[</i>]]>.</string>
|
||||
<string name="OobFingerprintWithoutAddr">QR-koden inneholder et fingeravtrykk, men ingen e-postadresse.\n\nFor bekreftelse utenfor programmet, etabler en kryptert tilkobling til mottakeren først.</string>
|
||||
<string name="OobSecureJoinRequested">%1$s tar del.</string>
|
||||
<string name="CannotDecryptBody">Denne meldingen kan ikke dekrypteres.\n\n• Det kan hjelpe å svare på denne meldingen og spørre avsenderen om å sende den igjen.\n\n• I fall du har reinstallert Delta Chat eller et annet e-postprogram på denne eller en annen enhet, kan du sende en Autocrypt-oppsettsmelding derfra.</string>
|
||||
<string name="Autocrypt">Autocrypt</string>
|
||||
<string name="AutocryptExplain"><![CDATA[<i>]]>Autocrypt<![CDATA[</i>]]> er en ny og åpen spesifikasjon for ende-til-ende-kryptert e-post.\n\nDitt ende-til-ende -oppsett blir opprettet automatisk ved bruk, og du kan overføre det mellom enheter med <![CDATA[<i>]]>Autocrypt-oppsettsmeldinger.<![CDATA[</i>]]></string>
|
||||
<string name="NewVerifiedGroup">Ny bekreftet gruppe</string>
|
||||
<string name="SharedChats">Delte sludringer</string>
|
||||
<string name="VerifiedContact">Bekreftet kontakt</string>
|
||||
<string name="Contact">Kontakt</string>
|
||||
<string name="VerifiedGroup">Bekreftet gruppe</string>
|
||||
<string name="Group">Gruppe</string>
|
||||
<string name="EditedNameWillBeShared">Det redigerte gruppenavnet vil bli delt med alle dens medlemmer.</string>
|
||||
<string name="QrShowInviteCode">Vis QR-invitasjonskode</string>
|
||||
<string name="E2EEncryptionPreferred">Ende-til-ende -kryptering foretrukket.</string>
|
||||
<string name="OobAddrVerified">%1$s bekreftet.</string>
|
||||
<string name="OobAddrVerifiedIntroduceMyself">%1$s bekreftet, sender introduksjonstekst …</string>
|
||||
<string name="OobAskJoinVerifiedGroup">Ønsker du å ta del i den bekreftede gruppen <![CDATA[<b>]]>%1$s<![CDATA[</b>]]>?</string>
|
||||
<!-- Translators: %1$s is replaced by an action, eg. MsgMemberAddedToGroup, MsgMemberRemovedFromToGroup, MsgGroupNameChanged or MsgGroupImageChanged. If the action ends with a full stop, this is removed.
|
||||
%2$s is replaced by a the name of the user that made this action.
|
||||
Resulting strings might be "Member Alice added by Bob." or 'Group name changed from "Foo" to "Bar" by Claire.
|
||||
If you do not find a correct grammar for your language you can just use "%1$s (by %2$s)" or "%2$s: %1$s" -->
|
||||
<string name="ActionByUser">%1$s av %2$s.</string>
|
||||
<!-- Translators: %1$s is replaced by an action, eg. MsgMemberAddedToGroup, MsgMemberRemovedFromToGroup, MsgGroupNameChanged or MsgGroupImageChanged. If the action ends with a full stop, this is removed.
|
||||
Resulting strings might be "Member Alice added by me." or 'Group name changed from "Foo" to "Bar" by me.
|
||||
If you do not find a correct grammar for your language you can just use "%1$s (by me)" or "Me: %1$s" -->
|
||||
<string name="ActionBySelf">%1$s av meg.</string>
|
||||
</resources>
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
<string name="Search">Zoeken</string>
|
||||
<string name="MuteNotifications">Meldingen dempen</string>
|
||||
<string name="MuteFor">Dempen voor %1$s</string>
|
||||
<string name="UnmuteNotifications">Demping uitschakelen</string>
|
||||
<string name="UnmuteNotifications">Dempen uitschakelen</string>
|
||||
<string name="Draft">Concept</string>
|
||||
<!--audio view-->
|
||||
<string name="NoAudio">Voeg bestanden toe aan de muziekbibliotheek op je apparaat om ze hier te zien.</string>
|
||||
@@ -24,7 +24,7 @@
|
||||
<string name="FreeOfTotal">Vrij: %1$s van %2$s</string>
|
||||
<string name="ErrorHint">Onbekende fout</string>
|
||||
<string name="AccessError">Toegangsfout</string>
|
||||
<string name="NoFiles">Nog geen bestanden</string>
|
||||
<string name="NoFiles">Nog geen bestanden...</string>
|
||||
<string name="NotMounted">Geen opslagmedium gevonden</string>
|
||||
<string name="UsbActive">USB-overdracht actief</string>
|
||||
<string name="InternalStorage">Interne opslag</string>
|
||||
@@ -32,91 +32,91 @@
|
||||
<string name="SystemRoot">Systeemmap</string>
|
||||
<string name="SdCard">SD-kaart</string>
|
||||
<string name="Folder">Map</string>
|
||||
<string name="GalleryInfo">Om bestanden ongecomprimeerd te versturen</string>
|
||||
<string name="GalleryInfo">Om afbeeldingen ongecomprimeerd te versturen</string>
|
||||
<!--chat view-->
|
||||
<string name="ChatGallery">Galerij</string>
|
||||
<string name="ChatCamera">Camera</string>
|
||||
<string name="NoMessages">Nog geen berichten.</string>
|
||||
<string name="NoMessages">Geen berichten.</string>
|
||||
<string name="ForwardedMessage">Doorgestuurd bericht</string>
|
||||
<string name="From">Van</string>
|
||||
<string name="NoRecent">Niets recents</string>
|
||||
<string name="TypeMessage">Bericht</string>
|
||||
<string name="SlideToCancel">SLEEP OM TE ANNULEREN</string>
|
||||
<string name="SaveToDownloads">Opslaan in Downloads</string>
|
||||
<string name="SaveToMusic">Opslaan in muziek</string>
|
||||
<string name="SlideToCancel">Veeg opzij om te annuleren</string>
|
||||
<string name="SaveToDownloads">Opslaan in \"Downloads\"</string>
|
||||
<string name="SaveToMusic">Opslaan in \"Muziek\"</string>
|
||||
<string name="Share">Delen</string>
|
||||
<string name="SendItems">%1$s versturen</string>
|
||||
<string name="ClearRecentEmoji">Recente emoji\'s wissen?</string>
|
||||
<string name="AddShortcut">Snelkoppeling toevoegen</string>
|
||||
<string name="ShortcutAdded">Snelkoppeling aan startscherm toegevoegd</string>
|
||||
<string name="AddShortcut">Widget toevoegen aan beginscherm</string>
|
||||
<string name="ShortcutAdded">Widget is toegevoegd aan beginscherm</string>
|
||||
<!--notification-->
|
||||
<string name="Reply">Antwoord</string>
|
||||
<string name="ReplyToGroup">Antwoord op %1$s</string>
|
||||
<string name="ReplyToContact">Antwoord op %1$s</string>
|
||||
<!--contacts view-->
|
||||
<string name="NoContacts">Nog geen contacten</string>
|
||||
<string name="NoContacts">Nog geen contacten.</string>
|
||||
<!--group create view-->
|
||||
<string name="SendMessageTo">Bericht versturen naar</string>
|
||||
<string name="EnterGroupNamePlaceholder">Groepsnaam</string>
|
||||
<string name="SendMessageTo">Bericht versturen naar ...</string>
|
||||
<string name="EnterGroupNamePlaceholder">Voer een groepsnaam in</string>
|
||||
<!--group info view-->
|
||||
<string name="AddMember">Lid toevoegen</string>
|
||||
<string name="Notifications">Meldingen</string>
|
||||
<string name="RemoveMember">Verwijderen uit groep</string>
|
||||
<string name="RemoveMember">Lid verwijderen</string>
|
||||
<!--contact info view-->
|
||||
<string name="NewContactTitle">Contact toevoegen</string>
|
||||
<string name="BlockContact">Blokkeer</string>
|
||||
<string name="DeleteContact">Verwijder</string>
|
||||
<string name="Info">Info</string>
|
||||
<string name="BlockContact">Contact blokkeren</string>
|
||||
<string name="DeleteContact">Contact verwijderen</string>
|
||||
<string name="Info">Informatie</string>
|
||||
<!--settings view-->
|
||||
<string name="TextSize">Tekstgrootte berichten</string>
|
||||
<string name="UnblockContact">Deblokkeer</string>
|
||||
<string name="NoBlocked">Geen geblokkeerde gebruikers</string>
|
||||
<string name="DefaultForNormalMessages">Berichtmeldingen</string>
|
||||
<string name="TextSize">Tekstgrootte van berichten</string>
|
||||
<string name="UnblockContact">Contact deblokkeren</string>
|
||||
<string name="NoBlocked">Er zijn nog geen geblokkeerde contacten</string>
|
||||
<string name="DefaultForNormalMessages">Normale berichten</string>
|
||||
<string name="MessagePreview">Voorvertoning</string>
|
||||
<string name="DefaultForGroupMessages">Groepsmeldingen</string>
|
||||
<string name="DefaultForGroupMessages">Groepsberichten</string>
|
||||
<string name="Sound">Geluid</string>
|
||||
<string name="InAppNotifications">In-app meldingen</string>
|
||||
<string name="InAppNotifications">In-app-meldingen</string>
|
||||
<string name="Vibrate">Trillen</string>
|
||||
<string name="ResetAllNotifications">Meldingen resetten</string>
|
||||
<string name="ResetAllNotifications">Standaardwaarden</string>
|
||||
<string name="NotificationsAndSounds">Meldingen en geluiden</string>
|
||||
<string name="BlockedContacts">Geblokkeerd</string>
|
||||
<string name="BlockedContacts">Geblokkeerde contacten</string>
|
||||
<string name="Default">Standaard</string>
|
||||
<string name="OnlyIfSilent">Alleen indien stil</string>
|
||||
<string name="ChatBackground">Achtergrond kiezen</string>
|
||||
<string name="SendByEnter">Versturen met "Enter"</string>
|
||||
<string name="Help">Veelgestelde vragen</string>
|
||||
<string name="ChatBackground">Chatachtergrond</string>
|
||||
<string name="SendByEnter">Versturen met \"Enter\"</string>
|
||||
<string name="Help">Hulp</string>
|
||||
<string name="Enabled">Inschakelen</string>
|
||||
<string name="Disabled">Uitgeschakeld</string>
|
||||
<string name="LedColor">LED-kleur</string>
|
||||
<string name="BadgeNumber">Badgenummer</string>
|
||||
<string name="BadgeNumber">Badgenummer gebruiken (indien mogelijk)</string>
|
||||
<string name="Short">Kort</string>
|
||||
<string name="Long">Lang</string>
|
||||
<string name="RaiseToSpeak">Houd bij oor</string>
|
||||
<string name="EditName">Naam wijzigen</string>
|
||||
<string name="NotificationsPriority">Prioriteit</string>
|
||||
<string name="NotificationsPriority">Weergeven</string>
|
||||
<string name="NotificationsPriorityDefault">Standaard</string>
|
||||
<string name="NotificationsPriorityHigh">Hoog</string>
|
||||
<string name="NotificationsPriorityMax">Max</string>
|
||||
<string name="NotificationsPriorityMax">Hoogste</string>
|
||||
<string name="RepeatNotifications">Meldingen herhalen</string>
|
||||
<string name="NotificationsOther">Overig</string>
|
||||
<string name="InChatSound">Chatgeluiden</string>
|
||||
<string name="SmartNotifications">Slimme meldingen</string>
|
||||
<string name="SmartNotificationsSoundAtMost">Geluid maximaal</string>
|
||||
<string name="SmartNotifications">Aantal meldingen beperken</string>
|
||||
<string name="SmartNotificationsSoundAtMost">Max.</string>
|
||||
<string name="SmartNotificationsTimes">keer</string>
|
||||
<string name="SmartNotificationsWithin">binnen</string>
|
||||
<string name="SmartNotificationsMinutes">minuten</string>
|
||||
<string name="DirectShare">Snel delen</string>
|
||||
<string name="DirectShareInfo">Recente chats in snel delen weergeven</string>
|
||||
<string name="DirectShareInfo">Recente chats weergeven in snel delen-menu</string>
|
||||
<!--cache view-->
|
||||
<string name="CacheSettings">Cache-instellingen</string>
|
||||
<string name="CacheSettings">Opslag</string>
|
||||
<string name="KeepMedia">Media bewaren</string>
|
||||
<string name="KeepMediaInfo">Foto\'s, video\'s en andere bestanden uit cloudchats die je gedurende deze periode niet hebt <![CDATA[<b>geopend</b>]]> zullen worden verwijderd van dit apparaat om ruimte te besparen.</string>
|
||||
<string name="KeepMediaForever">Voor altijd</string>
|
||||
<!--passcode view-->
|
||||
<string name="Passcode">Toegangscode-vergrendeling</string>
|
||||
<string name="ChangePasscode">Toegangscode wijzigen</string>
|
||||
<string name="ChangePasscodeInfo">Als je een toegangscode instelt verschijnt er een slotje op de chatspagina. Tik erop om Delta Chat te vergrendelen of te ontgrendelen.\n\nLet op: vergeet je de toegangscode dan zul je de app moeten verwijderen en herinstalleren.</string>
|
||||
<string name="PasscodePIN">PIN</string>
|
||||
<string name="ChangePasscodeInfo">Als je een toegangscode instelt, verschijnt er een slotje op de chatspagina. Raak het slotje aan om Delta Chat te vergrendelen of te ontgrendelen.\n\nLet op: als je de toegangscode vergeet, dan zul je de app moeten verwijderen en herinstalleren.</string>
|
||||
<string name="PasscodePIN">Pincode</string>
|
||||
<string name="PasscodePassword">Wachtwoord</string>
|
||||
<string name="EnterCurrentPasscode">Huidige toegangscode invoeren</string>
|
||||
<string name="EnterNewFirstPasscode">Toegangscode invoeren</string>
|
||||
@@ -126,9 +126,9 @@
|
||||
<string name="PasscodeDoNotMatch">Toegangscodes komen niet overeen</string>
|
||||
<string name="AutoLock">Automatisch vergrendelen</string>
|
||||
<string name="AutoLockInfo">Vraag om toegangscode indien afwezig</string>
|
||||
<string name="UnlockFingerprint">Ontgrendel met vingerafdruk</string>
|
||||
<string name="UnlockFingerprint">Ontgrendelen met vingerafdruk</string>
|
||||
<string name="FingerprintInfo">Vingerafdruk bevestigen</string>
|
||||
<string name="FingerprintNotRecognized">Vingerafdruk niet herkend, probeer opnieuw</string>
|
||||
<string name="FingerprintNotRecognized">Vingerafdruk niet herkend; probeer het opnieuw.</string>
|
||||
<!--photo gallery view-->
|
||||
<string name="SaveToGallery">Opslaan in galerij</string>
|
||||
<string name="Of">%1$d van %2$d</string>
|
||||
@@ -140,7 +140,7 @@
|
||||
<string name="CropImage">Foto bijsnijden</string>
|
||||
<string name="EditImage">Foto bewerken</string>
|
||||
<string name="Enhance">Verbeteren</string>
|
||||
<string name="Highlights">Accent</string>
|
||||
<string name="Highlights">Accenten</string>
|
||||
<string name="Contrast">Contrast</string>
|
||||
<string name="Exposure">Belichting</string>
|
||||
<string name="Warmth">Warmte</string>
|
||||
@@ -148,43 +148,43 @@
|
||||
<string name="Vignette">Vignet</string>
|
||||
<string name="Shadows">Schaduwen</string>
|
||||
<string name="Grain">Korrel</string>
|
||||
<string name="Sharpen">Scherper</string>
|
||||
<string name="Sharpen">Verscherpen</string>
|
||||
<string name="Fade">Vervagen</string>
|
||||
<string name="Tint">Tint</string>
|
||||
<string name="TintShadows">SCHADUWEN</string>
|
||||
<string name="TintHighlights">ACCENTUEREN</string>
|
||||
<string name="TintShadows">Schaduwen</string>
|
||||
<string name="TintHighlights">Accenten</string>
|
||||
<string name="Curves">Curven</string>
|
||||
<string name="CurvesAll">ALLE</string>
|
||||
<string name="CurvesRed">ROOD</string>
|
||||
<string name="CurvesGreen">GROEN</string>
|
||||
<string name="CurvesBlue">BLAUW</string>
|
||||
<string name="CurvesAll">Alle</string>
|
||||
<string name="CurvesRed">Rood</string>
|
||||
<string name="CurvesGreen">Groen</string>
|
||||
<string name="CurvesBlue">Blauw</string>
|
||||
<string name="Blur">Vager</string>
|
||||
<string name="BlurOff">Uit</string>
|
||||
<string name="BlurLinear">Lineair</string>
|
||||
<string name="BlurRadial">Radiaal</string>
|
||||
<string name="DiscardChanges">Wijzigingen negeren?</string>
|
||||
<string name="DiscardChanges">Wijzigingen verwerpen?</string>
|
||||
<string name="ClearButton">Wissen</string>
|
||||
<string name="PickerPhotos">Foto\'s</string>
|
||||
<string name="PickerVideo">Video</string>
|
||||
<!--privacy settings-->
|
||||
<string name="PrivacySettings">Privacy en veiligheid</string>
|
||||
<string name="SecurityTitle">Veiligheid</string>
|
||||
<string name="PrivacySettings">Privacy en beveiliging</string>
|
||||
<string name="SecurityTitle">Beveiliging</string>
|
||||
<!--edit video view-->
|
||||
<string name="SendVideo">Video versturen</string>
|
||||
<!--button titles-->
|
||||
<string name="Done">Gereed</string>
|
||||
<string name="Open">Openen</string>
|
||||
<string name="Cancel">Annuleren</string>
|
||||
<string name="Edit">Wijzig</string>
|
||||
<string name="Send">Stuur</string>
|
||||
<string name="CopyToClipboard">Kopieer</string>
|
||||
<string name="Delete">Verwijder</string>
|
||||
<string name="Edit">Wijzigen</string>
|
||||
<string name="Send">Versturen</string>
|
||||
<string name="CopyToClipboard">Kopiëren naar klembord</string>
|
||||
<string name="Delete">Verwijderen</string>
|
||||
<string name="Forward">Doorsturen</string>
|
||||
<string name="FromCamera">Van camera</string>
|
||||
<string name="FromGalley">Uit galerij</string>
|
||||
<string name="Set">Stel in</string>
|
||||
<string name="OK">OK</string>
|
||||
<string name="Crop">BIJSNIJDEN</string>
|
||||
<string name="Set">Instellen</string>
|
||||
<string name="OK">Oké</string>
|
||||
<string name="Crop">Bijsnijden</string>
|
||||
<!--messages-->
|
||||
<string name="AttachPhoto">Foto</string>
|
||||
<string name="AttachVideo">Video</string>
|
||||
@@ -192,38 +192,38 @@
|
||||
<string name="AttachContact">Contact</string>
|
||||
<string name="AttachDocument">Bestand</string>
|
||||
<string name="AttachVoiceMessage">Spraakbericht</string>
|
||||
<string name="FromSelf">Jij</string>
|
||||
<string name="FromSelf">Ik</string>
|
||||
<!--Alert messages-->
|
||||
<string name="NoHandleAppInstalled">Je hebt geen apps die bestandstype \'%1$s\' kunnen verwerken, installeer alsjeblieft één om verder te gaan</string>
|
||||
<string name="ContactAlreadyInGroup">Gebruiker is al een groepslid</string>
|
||||
<string name="NoHandleAppInstalled">Je hebt geen apps die bestandstype \'%1$s\' kunnen verwerken. Installeer er één om door te gaan.</string>
|
||||
<string name="ContactAlreadyInGroup">De gebruiker is al lid van deze groep.</string>
|
||||
<string name="ForwardMessagesTo">Berichten doorsturen naar <![CDATA[<b>]]>%1$s<![CDATA[</b>]]>?</string>
|
||||
<string name="SendMessagesTo">Berichten naar <![CDATA[<b>]]>%1$s<![CDATA[</b>]]> versturen?</string>
|
||||
<string name="AreYouSureDeleteThisChat">Chat echt verwijderen?</string>
|
||||
<string name="AreYouSureDeleteThisChat">Wil je deze chat verwijderen? De chat verdwijnen uit de chatlijst, maar de berichten zullen bewaard blijven op de server.</string>
|
||||
<string name="AreYouSureBlockContact">Weet je zeker dat je deze persoon wilt blokkeren?</string>
|
||||
<string name="AreYouSureDeleteContact">Contact echt verwijderen?</string>
|
||||
<string name="AreYouSureDeleteContact">Weet je zeker dat je deze persoon wilt verwijderen?</string>
|
||||
<!--permissions-->
|
||||
<string name="PermissionContacts">Delta Chat heeft toegang tot je contacten nodig zodat je kan chatten met je vrienden vanaf al je apparaten.</string>
|
||||
<string name="PermissionStorage">Delta Chat heeft toegang tot je opslaggeheugen nodig zodat je foto\'s, video\'s, muziek en andere media kunt opslaan en versturen.</string>
|
||||
<string name="PermissionNoAudio">Delta Chat heeft toegang tot je microfoon nodig om spraakberichten te kunnen verzenden.</string>
|
||||
<string name="PermissionNoAudio">Delta Chat heeft toegang tot je microfoon nodig om spraakberichten op te kunnen nemen.</string>
|
||||
<string name="PermissionOpenSettings">Instellingen</string>
|
||||
<!--Intro view-->
|
||||
<string name="Intro1Headline">Delta Chat</string>
|
||||
<string name="Intro1Message">De berichtenapp met het <![CDATA[<b>grootste bereik</b>]]> in de hele wereld. <![CDATA[<br/><b>gratis</b>]]> en <![CDATA[<b>veilig</b>]]>.</string>
|
||||
<string name="Intro1Message">De berichtenapp met het <![CDATA[<b>grootste bereik</b>]]> van de hele wereld. <![CDATA[<br/><b>Gratis</b>]]> en <![CDATA[<b>onafhankelijk</b>]]>.</string>
|
||||
|
||||
<string name="Intro2Headline">Onafhankelijk</string>
|
||||
<string name="Intro2Message"><![CDATA[<b>Geen vereisten</b>]]> van andere computers of diensten. De app gebruikt alleen je mailserver.</string>
|
||||
<string name="Intro2Message"><![CDATA[<b>Er is geen globale Delta Chat-server.</b>]]> De app gebruikt alleen je eigen mailserver.</string>
|
||||
|
||||
<string name="Intro3Headline">Snel</string>
|
||||
<string name="Intro3Message"><![CDATA[<b>Push-berichten</b>]]> in seconden.<![CDATA[<br/>]]>Snelle interface.</string>
|
||||
<string name="Intro3Message"><![CDATA[<b>Push-berichten</b>]]> in seconden.<![CDATA[<br/>]]>Snelle gebruikersomgeving.</string>
|
||||
|
||||
<string name="Intro4Headline">Krachtig</string>
|
||||
<string name="Intro4Message"><![CDATA[<b>Onbeperkte</b>]]> chats, afbeeldigen, filmpjes, audio berichten en meer. Werkt samen met andere clients.</string>
|
||||
<string name="Intro4Message"><![CDATA[<b>Onbeperkte</b>]]> chats, afbeeldingen, filmpjes, audioberichten en meer. Werkt samen met andere clients.</string>
|
||||
|
||||
<string name="Intro5Headline">Gratis</string>
|
||||
<string name="Intro5Message"><![CDATA[<b>Delta Chat</b>]]> is voor altijd gratis..<![CDATA[<br/>]]>Open source, geen reclame, geen abonnement, geen vendor lock-in.</string>
|
||||
<string name="Intro5Message"><![CDATA[<b>Delta Chat</b>]]> is en blijft gratis.<![CDATA[<br/>]]>Open bron-software, geen reclame, geen abonnement en onafhankelijk van leveranciers.</string>
|
||||
|
||||
<string name="Intro6Headline">Veilig</string>
|
||||
<string name="Intro6Message"><![CDATA[<b>Beveiligd</b>]]> met beproefde algoritmes. Berichten blijven op je server.</string>
|
||||
<string name="Intro6Headline">Versleuteld</string>
|
||||
<string name="Intro6Message"><![CDATA[<b>Versleuteld</b>]]> met alle beproefde algoritmes. Berichten blijven op je eigen server.</string>
|
||||
|
||||
<string name="Intro7Headline">Betrouwbaar</string>
|
||||
|
||||
@@ -238,8 +238,8 @@
|
||||
<item quantity="other">%d contacten</item>
|
||||
</plurals>
|
||||
<plurals name="MeAndMembers">
|
||||
<item quantity="one">Ik en %d lid</item>
|
||||
<item quantity="other">Ik en %d leden</item>
|
||||
<item quantity="one">%d lid en ik</item>
|
||||
<item quantity="other">%d leden en ik</item>
|
||||
</plurals>
|
||||
<plurals name="NewMessages">
|
||||
<item quantity="one">%d nieuw bericht</item>
|
||||
@@ -251,8 +251,11 @@
|
||||
</plurals>
|
||||
<plurals name="AreYouSureDeleteMessages">
|
||||
<item quantity="one">Verwijder %d bericht? Het bericht zal ook van de server worden verwijderd.</item>
|
||||
<item quantity="other">Verwijder %d berichten? De berichten zullen ook van de server worden verwijderd.</item>
|
||||
<item quantity="other">%d berichten verwijderen? De berichten zullen ook van de server worden verwijderd.</item>
|
||||
</plurals>
|
||||
<!-- Translators: The first string placeholder gets replaced with the
|
||||
text "%d new messages", so the complete sentence would be e.g.
|
||||
"4 new messages in 2 chats". -->
|
||||
<plurals name="NewMessagesInChats">
|
||||
<item quantity="one">%1$s in %2$d chat</item>
|
||||
<item quantity="other">%1$s in %2$d chats</item>
|
||||
@@ -281,6 +284,9 @@
|
||||
<item quantity="one">%d maand</item>
|
||||
<item quantity="other">%d maanden</item>
|
||||
</plurals>
|
||||
<!-- Translators: The second string placeholder gets replaced with the
|
||||
text "%d minutes", so the complete sentence would be e.g.
|
||||
"At most 8 notifications within 3 minutes". -->
|
||||
<plurals name="MaxNotifications">
|
||||
<item quantity="one">Hooguit %1$d melding binnen %2$s</item>
|
||||
<item quantity="other">Hooguit %1$d meldingen binnen %2$s</item>
|
||||
@@ -290,7 +296,7 @@
|
||||
<string name="formatterMonth">dd MMM</string>
|
||||
<string name="formatterYear">dd-MM-yyyy</string>
|
||||
<string name="chatDate">EEE, d MMMM</string>
|
||||
<string name="chatFullDate">EEE, d MMMM yyyy</string>
|
||||
<string name="chatFullDate">EEE, d MMMM, yyyy</string>
|
||||
<string name="formatterWeek">EEE</string>
|
||||
<string name="formatterDay24H">HH:mm</string>
|
||||
<string name="formatterDay12H">h:mm a</string>
|
||||
@@ -298,74 +304,157 @@
|
||||
<string name="AccountSettings">Accountinstellingen</string>
|
||||
<string name="MyAccount">Mijn account</string>
|
||||
<string name="MyName">Mijn naam</string>
|
||||
<string name="MyNameExplain">Je naam, zoals de ontvangers dit zien. Als je hier geen naam invult zullen de ontvangers alleen je emailadres zien.</string>
|
||||
<string name="MyNameExplain">Je naam, zoals de ontvangers dit zien. Als je hier geen naam invult, dan zullen de ontvangers alleen je e-mailadres zien.</string>
|
||||
<string name="Password">Wachtwoord</string>
|
||||
<string name="SmtpPassword">SMTP-wachtwoord</string>
|
||||
<string name="FromAbove">Van hierboven</string>
|
||||
<string name="SmtpLoginname">SMTP-loginnaam</string>
|
||||
<string name="SmtpLoginname">SMTP-inlognaam</string>
|
||||
<string name="SmtpPort">SMTP-poort</string>
|
||||
<string name="Automatic">Automatisch</string>
|
||||
<string name="ImapServer">IMAP-server</string>
|
||||
<string name="ImapLoginname">IMAP-loginnaam</string>
|
||||
<string name="ImapLoginname">IMAP-inlognaam</string>
|
||||
<string name="SmtpServer">SMTP-server</string>
|
||||
<string name="ImapPort">IMAP-poort</string>
|
||||
<string name="InboxHeadline">Inbox</string>
|
||||
<string name="OutboxHeadline">Outbox</string>
|
||||
<string name="MyAccountExplain">Voor bekende email-providers worden instellingen automatisch bepaald.</string>
|
||||
<string name="MyAccountExplain2" >Soms moet <![CDATA[<b>]]>IMAP ingeschakeld worden<![CDATA[</b>]]> in de emailwebsite.\n\nBij problemen, vraag je email-provider of je vrienden om hulp.</string>
|
||||
<string name="AccountNotConfigured">Account niet geconfigureerd</string>
|
||||
<string name="InboxHeadline">Postvak IN</string>
|
||||
<string name="OutboxHeadline">Postvak UIT</string>
|
||||
<string name="MyAccountExplain">Bij bekende e-maildiensten worden de instellingen automatisch bepaald.</string>
|
||||
<string name="MyAccountExplain2" >Soms moet <![CDATA[<b>]]>IMAP ingeschakeld worden<![CDATA[</b>]]> op de e-mailwebsite.\n\nAls je problemen hebt, vraag dan je e-maildienst of vrienden om hulp.</string>
|
||||
<string name="AccountNotConfigured">Account niet ingesteld</string>
|
||||
<string name="AboutThisProgram">Over Delta Chat</string>
|
||||
<string name="NotSet">Niet ingesteld</string>
|
||||
<string name="NewChat">Nieuwe chat</string>
|
||||
<string name="Deaddrop">Contactverzoeken</string>
|
||||
<string name="DeaddropInChatlist">Geef contactverzoeken in chatlijst weer</string>
|
||||
<string name="DeaddropInChatlist">Contactverzoeken weergeven in de chatlijst</string>
|
||||
<string name="MuteAlways">Altijd gedempt</string>
|
||||
<string name="AskStartChatWith">Begin een chat met <![CDATA[<b>]]>%1$s<![CDATA[</b>]]>?</string>
|
||||
<string name="AskStartChatWith">Chat beginnen met <![CDATA[<b>]]>%1$s<![CDATA[</b>]]>?</string>
|
||||
<string name="DeaddropHint">Klik op het reactiepijltje om een chat te beginnen.</string>
|
||||
<string name="NotYetImplemented">Deze functie is niet beschikbaar of incompleet.</string>
|
||||
<string name="DefaultStatusText">Gestuurd met mijn Delta Chat Messenger: https://delta.chat</string>
|
||||
<string name="DefaultStatusText">Verstuurd met mijn Delta Chat Messenger: https://delta.chat</string>
|
||||
<string name="Name" >Naam</string>
|
||||
<string name="EmailAddress">Email-adres</string>
|
||||
<string name="CannotDeleteContact">Kan een contact in gebruik niet verwijderen, blokkeer in plaats van dit het contact.</string>
|
||||
<string name="BadEmailAddress">Ongeldig email-adres.</string>
|
||||
<string name="ContactCreated">Contact gemaakt.</string>
|
||||
<string name="EmailAddress">E-mailadres</string>
|
||||
<string name="CannotDeleteContact">In gebruik zijnde contacten kunnen niet worden verwijderd; blokkeer het contact.</string>
|
||||
<string name="BadEmailAddress">Ongeldig e-mailadres.</string>
|
||||
<string name="ContactCreated">Contact gecreëerd.</string>
|
||||
<string name="ViewProfile">Profiel weergeven</string>
|
||||
<!-- Translators: please use a very short string here, it should not much longer than
|
||||
the string needed for video time+size (0:00, 12,3 Mib) -->
|
||||
<string name="OneMoment">Een moment ...</string>
|
||||
<string name="NoChatsHelp">Stuur berichtjes door op de nieuwe chat knop te drukken rechtsonder op het scherm of druk op de menuknop voor meer opties.</string>
|
||||
<string name="OneMoment">Even geduld ...</string>
|
||||
<string name="NoChatsHelp">Stuur berichten door op de knop \"Nieuwe chat\" (rechtsonder) te drukken of druk op de menuknop voor meer opties.</string>
|
||||
<string name="Intro7Message"><![CDATA[<b>Delta Chat</b>]]> is veilig voor het bedrijfsleven, compatibel en gebaseerd op standaarden.</string>
|
||||
<string name="InviteMenuEntry">Vrienden uitnodigen</string>
|
||||
<string name="InviteText">Ik gebruik Delta Chat, %1$s, je kan me berichtjes sturen op %2$s</string>
|
||||
<string name="AdvancedSettings">Geavanceerde instellingen</string>
|
||||
<string name="AskResetNotifications">Herstel alle notificatieinstellingen en geluiden van deze pagina en je contacten en groepen?</string>
|
||||
<string name="AttachFiles">Voeg bestanden toe</string>
|
||||
<string name="ErrGroupNameEmpty">Typ een naam in voor de groep.</string>
|
||||
<string name="MsgNewGroupDraftHint">Schrijf een eerste bericht om anderen te kunnen laten reageren in deze groep.\n\n• Het is oké als niet iedereen Delta Chat gebruikt.\n\n• Het leveren van het eerste bericht kan even duren.</string>
|
||||
<string name="MsgNewGroupDraft">Hallo, ik heb net de groep \"%1$s\" voor ons gemaakt.</string>
|
||||
<string name="InviteMenuEntry">Uitnodigingen versturen</string>
|
||||
<string name="InviteText">Ik gebruik Delta Chat, %1$s. Je kunt me berichten sturen op %2$s</string>
|
||||
<string name="AdvancedSettings">Geavanceerd</string>
|
||||
<string name="AskResetNotifications">Alle meldingsinstellingen en geluiden van deze pagina, contacten en groepen terugzetten op standaardwaarden?</string>
|
||||
<string name="AttachFiles">Bestanden toevoegen</string>
|
||||
<string name="ErrGroupNameEmpty">Voer een groepsnaam in.</string>
|
||||
<string name="MsgNewGroupDraftHint">Schrijf een eerste bericht om anderen te kunnen laten reageren in deze groep.\n\n• Het is niet erg als niet iedereen Delta Chat gebruikt.\n\n• Het bezorgen van het eerste bericht kan even duren.</string>
|
||||
<string name="MsgNewGroupDraft">Hallo, ik heb zojuist de groep \"%1$s\" voor ons gemaakt.</string>
|
||||
<string name="MsgGroupNameChanged">Groepsnaam veranderd van \"%1$s\" naar \"%2$s\".</string>
|
||||
<string name="MsgGroupImageChanged">Groepsafbeelding aangepast.</string>
|
||||
<string name="MsgGroupImageChanged">Groepsafbeelding gewijzigd.</string>
|
||||
<string name="MsgMemberAddedToGroup">Lid %1$s toegevoegd.</string>
|
||||
<string name="MsgMemberRemovedFromToGroup">Lid %1$s verwijderd.</string>
|
||||
<string name="AskAddMemberToGroup"><![CDATA[<b>]]>%1$s<![CDATA[</b>]]> toevoegen aan de groep?</string>
|
||||
<string name="AskRemoveMemberFromGroup"><![CDATA[<b>]]>%1$s<![CDATA[</b>]]> verwijderen uit de groep?</string>
|
||||
<string name="ErrSelfNotInGroup">Je moet een lid van de groep zijn om deze actie uit te voeren.</string>
|
||||
<string name="ErrSelfNotInGroup">Je moet lid van de groep zijn om deze actie uit te kunnen voeren.</string>
|
||||
<string name="MsgGroupLeft">Groep verlaten.</string>
|
||||
<string name="NoMessagesHint">Stuur een bericht naar <![CDATA[<b>]]>%1$s<![CDATA[</b>]]>:\n\n• Het is oké als <![CDATA[<b>]]>%2$s<![CDATA[</b>]]> niet Delta Chat gebruikt.\n\n• Het leveren van het eerste bericht kan even duren.</string>
|
||||
<string name="SendNRcvReadReceipts">Ontvang en stuur retourbevestigingen.</string>
|
||||
<string name="PreferE2EEncryption">Prefereer end-to-end encryptie</string>
|
||||
<string name="E2EManagePrivateKeys">Beheer privésleutels</string>
|
||||
<string name="E2ECompareKeys">Vergelijk sleutels</string>
|
||||
<string name="NoMessagesHint">Stuur een bericht naar <![CDATA[<b>]]>%1$s<![CDATA[</b>]]>:\n\n• Het is niet erg als <![CDATA[<b>]]>%2$s<![CDATA[</b>]]> geen Delta Chat gebruikt.\n\n• Het bezorgen van het eerste bericht kan even duren.</string>
|
||||
<string name="SendNRcvReadReceipts">Leesbevestigingen ontvangen en versturen</string>
|
||||
<string name="PreferE2EEncryption">End-to-end-versleuteling prefereren</string>
|
||||
<string name="E2EManagePrivateKeys">Privésleutels beheren</string>
|
||||
<string name="E2ECompareKeys">Sleutels vergelijken</string>
|
||||
<string name="ForwardToTitle">Kies een chat …</string>
|
||||
<string name="SelectContact">Kies een contact</string>
|
||||
<string name="DoneHint">Gereed.</string>
|
||||
<string name="FileNotFound">Bestand %1$s niet gevonden.</string>
|
||||
<string name="DoneHint">Afgerond.</string>
|
||||
<string name="FileNotFound">%1$s kan niet worden gevonden.</string>
|
||||
<string name="Error">Fout: %1$s</string>
|
||||
<string name="NoNetwork">Netwerk niet beschikbaar.</string>
|
||||
<string name="Audio">Geluid</string>
|
||||
<string name="PleaseCutVideoToMaxSize">Knip de video af tot een grootte van maximaal %1$s.</string>
|
||||
<string name="Audio">Audio</string>
|
||||
<string name="PleaseCutVideoToMaxSize">Verklein de video tot een grootte van maximaal %1$s.</string>
|
||||
<string name="PermNotificationTitle">Verbonden met %1$s</string>
|
||||
<string name="PermNotificationText">Wachten op berichten ...</string>
|
||||
<string name="SettingsFor">Instellingen voor %1$s</string>
|
||||
<string name="AutoplayGifs">GIFs automatisch afspelen</string>
|
||||
</resources>
|
||||
<string name="AutoplayGifs">GIF-bestanden automatisch afspelen</string>
|
||||
<string name="HelpUrl">https://delta.chat/nl/help</string>
|
||||
<string name="EncryptedMessage">Versleuteld bericht</string>
|
||||
<string name="Encryption">Versleuteling</string>
|
||||
<string name="EncrinfoE2EAvailable">End-to-end-versleuteling beschikbaar.</string>
|
||||
<string name="EncrinfoTransport">Transportversleuteling op zijn minst tot aan mijn server.</string>
|
||||
<string name="EncrinfoNone">Geen versleuteling naar mijn server.</string>
|
||||
<string name="EncrinfoFingerprints">Vingerafdrukken</string>
|
||||
<string name="Backup">Archief</string>
|
||||
<string name="ImportBackupExplain2">Om een archief te importeren, kopieer een archief naar <![CDATA[<i>]]>%1$s<![CDATA[</i>]]> en herinstalleer de app.</string>
|
||||
<string name="ReadReceiptMailBody">Dit is een leesbevestiging voor het bericht \"%1$s\".\n\nHet betekent dat het bericht op het apparaat van de ontvanger is weergegeven, maar dat hoeft niet te betekenen dat de inhoud ook gelezen is.</string>
|
||||
<string name="ReadReceipt">Leesbevestiging</string>
|
||||
<string name="NameAndStatus">Naam en status</string>
|
||||
<string name="MyStatus">Mijn status</string>
|
||||
<string name="MyStatusExplain">De status wordt onder in e-mailvoetteksten weergegeven.</string>
|
||||
<string name="MsgGroupImageDeleted">Groepsafbeelding verwijderd.</string>
|
||||
<string name="AskDeleteGroupImage">Weet je zeker dat je de groepsafbeelding wilt verwijderen? \ N \ nDit beïnvloed alle groepsleden.</string>
|
||||
<string name="ExportImportHeader">Exporteren en importeren</string>
|
||||
<string name="ImportExportExplain">Geëxporteerde bestanden bevatten je privésleutels! Bewaar ze op een veilige plaats of verwijder ze zo snel mogelijk.</string>
|
||||
<string name="EnterPasswordToContinue">Voer het wachtwoord in voor %1$s door te gaan:</string>
|
||||
<string name="IncorrectPassword">Onjuist wachtwoord.</string>
|
||||
<string name="ImportBackupAsk">Archief gevonden in <![CDATA[<i>]]>%1$s<![CDATA[</i>]]>.\n\nWil je alle gegevens en instellingen ervan importeren en gebruiken?</string>
|
||||
<string name="ImportBackup">Archief importeren</string>
|
||||
<string name="NoBackupFound">Geen archief gevonden.\n\nKopieer het archief naar <![CDATA[<i>]]>%1$s<![CDATA[</i>]]> en probeer het opnieuw. Je kunt ook drukken op \"Beginnen met chatten\" om met het normale instelproces te doorlopen.</string>
|
||||
<string name="FilesSuccessfullyExported">Bestanden geëxporteerd naar <![CDATA[<i>]]>%1$s<![CDATA[</i>]]>.</string>
|
||||
<string name="ExportBackup">Archief exporteren</string>
|
||||
<string name="ExportPrivateKeys">Privésleutels exporteren</string>
|
||||
<string name="ImportPrivateKeys">Privésleutels importeren</string>
|
||||
<string name="ImportPrivateKeysAsk2">Sleutels importeren uit <![CDATA[<i>]]>%1$s<![CDATA[</i>]]>?\n\n• Bestaande sleutels worden niet verwijderd\n\n• De laatst geïmporteerde sleutel wordt gebruikt als de nieuwe standaardsleutel.</string>
|
||||
<string name="NoRecentEmoji">Recent gebruikte emoji\'s worden hier weergegeven.</string>
|
||||
<string name="NotNow">Niet nu</string>
|
||||
<string name="ArchiveChat">Chat archiveren</string>
|
||||
<string name="UnarchiveChat">Chat uit archief halen</string>
|
||||
<string name="ArchivedChats">Chats gearchiveerd</string>
|
||||
<string name="Archived">Gearchiveerd</string>
|
||||
<string name="LeaveGroup">Groep verlaten</string>
|
||||
<string name="AskLeaveGroup">Weet je zeker dat je deze groep wilt verlaten?</string>
|
||||
<string name="Never">Nooit</string>
|
||||
<string name="AutocryptKeyTransferInitiate">Autocrypt-instelbericht versturen</string>
|
||||
<string name="AutocryptKeyTransfer">Autocrypt-instelbericht</string>
|
||||
<string name="AutocryptKeyTransferMsgBeforeSend">Het <![CDATA[<i>]]>Autocrypt-instelbericht<![CDATA[</i>]]> vereist dat Autocrypt beschikbaar is in de e-mailclient op het andere apparaat. \n\n De sleutel is versleuteld met een weergegeven code en dient te worden ingevoerd op het andere apparaat.</string>
|
||||
<string name="AutocryptKeyTransferMsgAfterSend">Je sleutel is naar jezelf gestuurd. Schakel over naar het andere apparaat en open het instelbericht. Er zou nu moeten worden gevraagd naar een instelcode. Typ de volgende cijfers in het invoervak:\n\n%1$s\n\nAls je klaar bent, dan is je andere apparaat ingesteld om Autocrypt te gebruiken.</string>
|
||||
<string name="AutocryptSetupMessageSubject">Autocrypt Opstart Bericht</string>
|
||||
<string name="AutocryptSetupMessageGeneralBody">Dit is het Autocrypt-instelbericht dat gebruikt wordt om je sleutel tussen clients over te brengen.\n\nOm je sleutel te ontsleutelen en te gebruiken, open het bericht in een client met Autocrypt-functionaliteit en voer de code in die op het apparaat wordt weergegeven.</string>
|
||||
<string name="AutocryptSetupMessageTapBody">Dit is het Autocrypt-instelbericht dat gebruikt wordt om je sleutel tussen clients over te brengen.\n\nDruk op dit bericht om je sleutel te ontsleutelen en te gebruiken.</string>
|
||||
<string name="AutocryptKeyTransferPleaseEnterCode">Voer de opstartcode in die wordt weergegeven op het andere apparaat.</string>
|
||||
<string name="AutocryptKeyTransferBadCode">Ongeldige instelcode. Probeer het opnieuw. \n\nAls je de instelcode niet meer weet, begin je sleuteloverdracht op het andere apparaat dan opnieuw.</string>
|
||||
<string name="AutocryptKeyTransferSucceeded">Sleutel is overgedragen. Dit apparaat is nu klaar om Autocrypt te gebruiken met dezelfde sleutel als het andere apparaat.</string>
|
||||
<string name="Retry">Opnieuw</string>
|
||||
<string name="SelfTalkSubtitle">Aan mijzelf gestuurde berichten</string>
|
||||
<string name="QrScan">QR-code scannen</string>
|
||||
<string name="QrShow">QR-code weergeven</string>
|
||||
<string name="QrScanContainsText">De gescande QR-code bevat de volgende tekst:\n\n%1$s</string>
|
||||
<string name="QrScanContainsUrl">De gescande QR-code bevat de volgende URL:\n\n%1$s</string>
|
||||
<string name="OobFingerprint">Vingerafdruk</string>
|
||||
<string name="OobFingerprintAskOob">Contact verifiëren en beginnen met chatten met <![CDATA[<b>]]>%1$s<![CDATA[</b>]]>?</string>
|
||||
<string name="OobFingerprintOk">Contact <![CDATA[<i>]]>%1$s<![CDATA[</i>]]> is geverifieerd. Beginnen met chatten?</string>
|
||||
<string name="OobFingerprintMismatch">De gescande vingerafdruk <![CDATA[<b>]]>komt niet overeen<![CDATA[</b>]]> met de laatst gebruikte vingerafdruk voor <![CDATA[<i>]]>%1$s<![CDATA[</i>]]>.</string>
|
||||
<string name="OobFingerprintWithoutAddr">Deze QR-code bevat een vingerafdruk, maar geen e-mailadres.\n\nZorg eerst voor een versleutelde verbinding met de ontvanger voor een out-of-band-verificatie.</string>
|
||||
<string name="OobSecureJoinRequested">%1$sis lid geworden.</string>
|
||||
<string name="CannotDecryptBody">Dit bericht kan niet worden ontsleuteld.\n\n• Het kan helpen om dit bericht te beantwoorden en de afzender te vragen het bericht opnieuw te versturen.\n\n• Als je Delta Chat of een e-mailapplicatie opnieuw hebt geïnstalleerd op dit of een ander apparaat, dan kun je beter een Autocrypt-instelbericht versturen.</string>
|
||||
<string name="Autocrypt">Autocrypt</string>
|
||||
<string name="AutocryptExplain"><![CDATA[<i>]]>Autocrypt<![CDATA[</i>]]> is een nieuwe, open specificatie voor end-to-end-versleuteling van e-mails.\n\nJe privésleutel wordt, indien nodig, automatisch gecreëerd en je kunt deze delen met andere apparaten d.m.v. <![CDATA[<i>]]>Autocrypt-instelberichten.<![CDATA[</i>]]></string>
|
||||
<string name="NewVerifiedGroup">Nieuwe geverifieerde groep</string>
|
||||
<string name="SharedChats">Gedeelde chats</string>
|
||||
<string name="VerifiedContact">Geverifieerd contact</string>
|
||||
<string name="Contact">Contact</string>
|
||||
<string name="VerifiedGroup">Geverifieerde groep</string>
|
||||
<string name="Group">Groep</string>
|
||||
<string name="EditedNameWillBeShared">De nieuwe naam zal worden gedeeld met alle groepsleden.</string>
|
||||
<string name="QrShowInviteCode">QR-code voor uitnodigingen weergeven</string>
|
||||
<string name="E2EEncryptionPreferred">Voorkeur voor end-to-end-versleuteling.</string>
|
||||
<string name="OobAddrVerified">%1$s is geverifieerd.</string>
|
||||
<string name="OobAddrVerifiedIntroduceMyself">%1$sis geverifieerd; introduceer me...</string>
|
||||
<string name="OobAskJoinVerifiedGroup">Wil je lid worden van de geverifieerde groep <![CDATA[]]>%1$s<![CDATA[]]>?</string>
|
||||
<!-- Translators: %1$s is replaced by an action, eg. MsgMemberAddedToGroup, MsgMemberRemovedFromToGroup, MsgGroupNameChanged or MsgGroupImageChanged. If the action ends with a full stop, this is removed.
|
||||
%2$s is replaced by a the name of the user that made this action.
|
||||
Resulting strings might be "Member Alice added by Bob." or 'Group name changed from "Foo" to "Bar" by Claire.
|
||||
If you do not find a correct grammar for your language you can just use "%1$s (by %2$s)" or "%2$s: %1$s" -->
|
||||
<string name="ActionByUser">%1$s door %2$s.</string>
|
||||
<!-- Translators: %1$s is replaced by an action, eg. MsgMemberAddedToGroup, MsgMemberRemovedFromToGroup, MsgGroupNameChanged or MsgGroupImageChanged. If the action ends with a full stop, this is removed.
|
||||
Resulting strings might be "Member Alice added by me." or 'Group name changed from "Foo" to "Bar" by me.
|
||||
If you do not find a correct grammar for your language you can just use "%1$s (by me)" or "Me: %1$s" -->
|
||||
<string name="ActionBySelf">%1$s door mij.</string>
|
||||
</resources>
|
||||
|
||||
@@ -211,13 +211,13 @@
|
||||
<string name="Intro1Message">Komunikator o <![CDATA[<b>największym zasięgu</b>]]> na świecie.<![CDATA[<br/><b>Darmowy</b>]]> i <![CDATA[<b>bezpieczny</b>]]>.</string>
|
||||
|
||||
<string name="Intro2Headline">Niezależny</string>
|
||||
<string name="Intro2Message"><![CDATA[<b>Niezależny</b>]]> od obcych komputerów i usług. Aplikacja wykorzystuje tylko twój serwer e-mail.</string>
|
||||
<string name="Intro2Message"><![CDATA[<b>Nie ma serwera Delta Chat</b>]]>. Aplikacja wykorzystuje tylko twój serwer e-mail.</string>
|
||||
|
||||
<string name="Intro3Headline">Szybki</string>
|
||||
<string name="Intro3Message"><![CDATA[<b>Wiadomości push</b>]]> w kilka sekund.<![CDATA[<br/>]]>Szybki interfejs.</string>
|
||||
|
||||
<string name="Intro4Headline">Potężny</string>
|
||||
<string name="Intro4Message"><![CDATA[<b>Nieograniczone</b>]]> czaty, obrazy, filmy, wiadomości audio i wiele innych. Sprawny multi-klient.</string>
|
||||
<string name="Intro4Message"><![CDATA[<b>Nieograniczone</b>]]> czaty, obrazy, filmy, wiadomości audio i wiele innych. Obsługujący wielu klientów.</string>
|
||||
|
||||
<string name="Intro5Headline">Darmowy</string>
|
||||
<string name="Intro5Message"><![CDATA[<b>Delta Chat</b>]]> jest zawsze darmowy.<![CDATA[<br/>]]>O otwartym kodzie źródłowym. Bez reklam. Bez abonamentu. Bez ograniczeń dystrybucji.</string>
|
||||
@@ -265,6 +265,9 @@
|
||||
<item quantity="many">Usunąć %d wiadomości? Wiadomości zostaną usunięte również z serwera.</item>
|
||||
<item quantity="other">Usunąć %d wiadomości? Wiadomości zostaną usunięte również z serwera.</item>
|
||||
</plurals>
|
||||
<!-- Translators: The first string placeholder gets replaced with the
|
||||
text "%d new messages", so the complete sentence would be e.g.
|
||||
"4 new messages in 2 chats". -->
|
||||
<plurals name="NewMessagesInChats">
|
||||
<item quantity="one">%1$s w %2$d czacie</item>
|
||||
<item quantity="few">%1$s w %2$d czatach</item>
|
||||
@@ -307,6 +310,9 @@
|
||||
<item quantity="many">%d mies.</item>
|
||||
<item quantity="other">%d mies.</item>
|
||||
</plurals>
|
||||
<!-- Translators: The second string placeholder gets replaced with the
|
||||
text "%d minutes", so the complete sentence would be e.g.
|
||||
"At most 8 notifications within 3 minutes". -->
|
||||
<plurals name="MaxNotifications">
|
||||
<item quantity="one">Najwyżej %1$d powiadomienie w ciągu %2$s</item>
|
||||
<item quantity="few">Najwyżej %1$d powiadomienia w ciągu %2$s</item>
|
||||
@@ -351,7 +357,7 @@
|
||||
<string name="AskStartChatWith">Rozpocząć czat z <![CDATA[<b>]]>%1$s<![CDATA[</b>]]>?</string>
|
||||
<string name="DeaddropHint">Aby rozpocząć czat, naciśnij strzałkę odpowiedzi.</string>
|
||||
<string name="NotYetImplemented">Ta funkcja jest niedostępna lub niekompletna.</string>
|
||||
<string name="DefaultStatusText">Wysłane z komunikatora Delta Chat: https://delta.chat</string>
|
||||
<string name="DefaultStatusText">Wysłane z komunikatora Delta Chat: https://delta.chat/pl</string>
|
||||
<string name="Name" >Nazwa</string>
|
||||
<string name="EmailAddress">Adres e-mail</string>
|
||||
<string name="CannotDeleteContact">Nie możesz usunąć kontaktu w użyciu, zamiast tego zablokuj kontakt.</string>
|
||||
@@ -399,11 +405,8 @@
|
||||
<string name="HelpUrl">https://jaworski-pawel.github.io/Delta/#help</string>
|
||||
<string name="EncryptedMessage">Szyfrowana wiadomość</string>
|
||||
<string name="Encryption">Szyfrowanie</string>
|
||||
<string name="EncrinfoE2E">Połączenie jest w pełni szyfrowane.</string>
|
||||
<string name="EncrinfoE2EExplain">Jeśli wszystkie odciski palców są zgodne z drugim urządzeniem, połączenie jest bezpieczne.</string>
|
||||
<string name="EncrinfoTransport">Szyfrowanie transportu przynajmniej na moim serwerze.</string>
|
||||
<string name="EncrinfoNone">Brak szyfrowania na moim serwerze.</string>
|
||||
<string name="EncrinfoNoE2EExplain">Szyfrowanie przełączy się automatycznie na PEŁNE, gdy tylko kontakt użyje programu Delta Chat lub innej aplikacji obsługującej funkcję Autocrypt.</string>
|
||||
<string name="EncrinfoFingerprints">Odciski palców</string>
|
||||
<string name="Backup">Kopia zapasowa</string>
|
||||
<string name="ImportBackupExplain2">Aby zaimportować kopię zapasową, skopiuj ją do folderu <![CDATA[<i>]]>%1$s<![CDATA[</i>]]> i ponownie zainstaluj aplikację.</string>
|
||||
@@ -427,8 +430,6 @@
|
||||
<string name="ImportPrivateKeys">Importuj prywatne klucze</string>
|
||||
<string name="ImportPrivateKeysAsk2">Zaimportować prywatne klucze z <![CDATA[<i>]]>%1$s<![CDATA[]]>?\n\n• Istniejące prywatne klucze nie są usuwane\n\n• Ostatni zaimportowany klucz zostanie użyty jako nowy klucz domyślny</string>
|
||||
<string name="NoRecentEmoji">Tutaj będą pokazane ostatnio używane emoji.</string>
|
||||
<string name="E2eeOffBecauseOfUser">Aby włączyć szyfrowanie typu end-to-end, zaznacz odpowiednią opcję w ustawieniach.</string>
|
||||
<string name="E2eeOffBecauseOfRecipient">Szyfrowanie zostanie przełączone na end-to-end, jeśli kontakt włączy odpowiednią opcję.</string>
|
||||
<string name="NotNow">Nie teraz</string>
|
||||
<string name="ArchiveChat">Archiwizuj czat</string>
|
||||
<string name="UnarchiveChat">Przywróć czat z archiwum</string>
|
||||
@@ -437,4 +438,17 @@
|
||||
<string name="LeaveGroup">Opuść grupę</string>
|
||||
<string name="AskLeaveGroup">Czy na pewno chcesz opuścić tą grupę?</string>
|
||||
<string name="Never">Nigdy</string>
|
||||
</resources>
|
||||
<string name="AutocryptKeyTransferInitiate">Rozpocznij tranfer klucza automatycznego szyfrowania</string>
|
||||
<string name="AutocryptKeyTransfer">Tranfer klucza automatycznego szyfrowania</string>
|
||||
<string name="AutocryptKeyTransferMsgBeforeSend"><![CDATA[<i>]]>Tranfer klucza automatycznego szyfrowania<![CDATA[</i>]]> wymaga, aby klient poczty na drugim urządzeniu był zgodny z automatycznym szyfrowaniem.\n\nMożesz wysłać klucz do siebie. Klucz zostanie zaszyfrowany za pomocą wyświetlonego tutaj kodu konfiguracyjnego, który należy wpisać na drugim urządzeniu.</string>
|
||||
<string name="AutocryptKeyTransferMsgAfterSend">Klucz został wysłany do ciebie. Przejdź do innego urządzenia i otwórz wiadomość konfiguracyjną. Zostanie wyświetlona prośba o podanie kodu konfiguracyjnego. Wpisz następujące cyfry w podpowiedzi:\n\n%1$s\n\nGdy skończysz, drugie urządzenie będzie gotowe do użycia funkcji automatycznego szyfrowania.</string>
|
||||
<string name="AutocryptSetupMessageSubject">Wiadomość konfiguracyjna automatycznego szyfrowania</string>
|
||||
<string name="AutocryptSetupMessageGeneralBody">Jest to wiadomość konfiguracyjna automatycznego szyfrowania służąca do przesyłania klucza między klientami.\n\nAby odszyfrować i użyć klucza, otwórz wiadomość w kliencie zgodnym z automatycznym szyfrowaniem i wprowadź kod konfiguracyjny przedstawiony na urządzeniu generującym.</string>
|
||||
<string name="AutocryptSetupMessageTapBody">Jest to wiadomość konfiguracyjna automatycznego szyfrowania służąca do przesyłania klucza między klientami.\n\nAby odszyfrować i użyć klucza, dotknij tą wiadomość.</string>
|
||||
<string name="AutocryptKeyTransferPleaseEnterCode">Wprowadź kod konfiguracyjny wyświetlany na drugim urządzeniu.</string>
|
||||
<string name="AutocryptKeyTransferBadCode">Zły kod konfiguracyjny. Spróbuj ponownie.\n\nJeśli nie pamiętasz kodu konfiguracji, po prostu uruchom ponownie transfer klucza na drugim urządzeniu.</string>
|
||||
<string name="AutocryptKeyTransferSucceeded">Udany transfer klucza. To urządzenie jest teraz gotowe do użycia automatycznego szyfrowania za pomocą tego samego klucza, co na drugim urządzeniu.</string>
|
||||
<string name="Retry">Powtórz</string>
|
||||
<string name="SelfTalkSubtitle">Wiadomości wysłane do siebie</string>
|
||||
<string name="Contact">Kontakt</string>
|
||||
</resources>
|
||||
|
||||
@@ -151,13 +151,13 @@
|
||||
<string name="Sharpen">Nitidez</string>
|
||||
<string name="Fade">Desbotar</string>
|
||||
<string name="Tint">Matiz</string>
|
||||
<string name="TintShadows">SOMBRAS</string>
|
||||
<string name="TintHighlights">LUZES</string>
|
||||
<string name="TintShadows">Sombras</string>
|
||||
<string name="TintHighlights">Luzes</string>
|
||||
<string name="Curves">Curvas</string>
|
||||
<string name="CurvesAll">TUDO</string>
|
||||
<string name="CurvesRed">VERMELHO</string>
|
||||
<string name="CurvesGreen">VERDE</string>
|
||||
<string name="CurvesBlue">AZUL</string>
|
||||
<string name="CurvesAll">Tudo</string>
|
||||
<string name="CurvesRed">Vermelho</string>
|
||||
<string name="CurvesGreen">Verde</string>
|
||||
<string name="CurvesBlue">Azul</string>
|
||||
<string name="Blur">Desfoque</string>
|
||||
<string name="BlurOff">Desativado</string>
|
||||
<string name="BlurLinear">Linear</string>
|
||||
@@ -184,7 +184,7 @@
|
||||
<string name="FromGalley">Da galeria</string>
|
||||
<string name="Set">Aplicar</string>
|
||||
<string name="OK">OK</string>
|
||||
<string name="Crop">CORTAR</string>
|
||||
<string name="Crop">Cortar</string>
|
||||
<!--messages-->
|
||||
<string name="AttachPhoto">Foto</string>
|
||||
<string name="AttachVideo">Vídeo</string>
|
||||
@@ -253,6 +253,9 @@
|
||||
<item quantity="one">Deletar a mensagem %d ? Ela também será removida no servidor.</item>
|
||||
<item quantity="other">Apagar as mensagens %d ? Elas também serão apagadas no servidor.</item>
|
||||
</plurals>
|
||||
<!-- Translators: The first string placeholder gets replaced with the
|
||||
text "%d new messages", so the complete sentence would be e.g.
|
||||
"4 new messages in 2 chats". -->
|
||||
<plurals name="NewMessagesInChats">
|
||||
<item quantity="one">%1$s na conversa %2$d</item>
|
||||
<item quantity="other">%1$s nas conversas %2$d</item>
|
||||
@@ -281,6 +284,9 @@
|
||||
<item quantity="one">%d mês</item>
|
||||
<item quantity="other">%d meses</item>
|
||||
</plurals>
|
||||
<!-- Translators: The second string placeholder gets replaced with the
|
||||
text "%d minutes", so the complete sentence would be e.g.
|
||||
"At most 8 notifications within 3 minutes". -->
|
||||
<plurals name="MaxNotifications">
|
||||
<item quantity="one">No máximo %1$d notificação a cada %2$s</item>
|
||||
<item quantity="other">No máximo %1$d notificações dentro de %2$s</item>
|
||||
@@ -323,7 +329,7 @@
|
||||
<string name="AskStartChatWith">Começar uma conversa com <![CDATA[<b>]]>%1$s<![CDATA[</b>]]>?</string>
|
||||
<string name="DeaddropHint">Para conversar toque na seta.</string>
|
||||
<string name="NotYetImplemented">Esta função ainda não está disponível ou ainda não está completamente desenvolvida.</string>
|
||||
<string name="DefaultStatusText">Enviado pelo meu Delta Chat Messenger: https://delta.chat</string>
|
||||
<string name="DefaultStatusText">Enviado pelo meu Delta Chat Messenger: https://delta.chat/pt</string>
|
||||
<string name="Name" >Nome</string>
|
||||
<string name="EmailAddress">Endereço de e-mail</string>
|
||||
<string name="CannotDeleteContact">Impossível deletar um contato em uso! Bloqueie-o.</string>
|
||||
@@ -371,11 +377,8 @@
|
||||
<string name="HelpUrl">https://delta.chat/pt/help</string>
|
||||
<string name="EncryptedMessage">Mensagem criptografada</string>
|
||||
<string name="Encryption">Criptografia</string>
|
||||
<string name="EncrinfoE2E">Criptografia ponta-a-ponta habilitada.</string>
|
||||
<string name="EncrinfoE2EExplain">Se ambas impressões combinam no outro dispositivo, a conexão é segura.</string>
|
||||
<string name="EncrinfoTransport">Tráfego criptografado ao menos até o meu servidor.</string>
|
||||
<string name="EncrinfoNone">Sem encriptação para meu servidor.</string>
|
||||
<string name="EncrinfoNoE2EExplain">A criptografia ponta-a-ponta será ativada automaticamente tão logo o seu contato utilize algum aplicativo que tenha suporte ao Autocrypt, como o Delta Chat.</string>
|
||||
<string name="EncrinfoFingerprints">Impressões</string>
|
||||
<string name="Backup">Becape</string>
|
||||
<string name="ImportBackupExplain2">Para importar um becape, copie-o na pasta <![CDATA[<i>]]>%1$s<![CDATA[</i>]]> e reinstale o aplicativo.</string>
|
||||
@@ -399,8 +402,6 @@
|
||||
<string name="ImportPrivateKeys">Importar chaves privadas</string>
|
||||
<string name="ImportPrivateKeysAsk2">Importar chaves privadas de <![CDATA[<i>]]>%1$s<![CDATA[</i>]]>?\n\n• As chaves existentes não serão apagadas\n\n• A última chave importada será usada como padrão</string>
|
||||
<string name="NoRecentEmoji">Emojis recentemente usados.</string>
|
||||
<string name="E2eeOffBecauseOfUser">Para habilitar a criptografia ponta a ponta revise as configurações do aplicativo.</string>
|
||||
<string name="E2eeOffBecauseOfRecipient">> A criptografia ponta a ponta será empregada se o destinatário habilitá-la também.</string>
|
||||
<string name="NotNow">Agora não</string>
|
||||
<string name="ArchiveChat">Arquivar conversa</string>
|
||||
<string name="UnarchiveChat">Desarquivar conversa</string>
|
||||
@@ -409,4 +410,16 @@
|
||||
<string name="LeaveGroup">Sair do grupo</string>
|
||||
<string name="AskLeaveGroup">Tem certeza que deseja sair do grupo?</string>
|
||||
<string name="Never">Jamais</string>
|
||||
</resources>
|
||||
<string name="AutocryptKeyTransferInitiate">Começar transferência de chaves</string>
|
||||
<string name="AutocryptKeyTransfer">Transferência de chaves</string>
|
||||
<string name="AutocryptKeyTransferMsgBeforeSend">Para funcionar, a <![CDATA[<i>]]>transferência de chaves <![CDATA[</i>]]> é necessário que o cliente de e-mail do outro dispositivo seja compatível com o Autocrypt.\n\nEnvie sua chave secreta para você mesmo. A chave será cifrada com o código exibido aqui, o qual precisará ser digitado no outro dispositivo.</string>
|
||||
<string name="AutocryptKeyTransferMsgAfterSend">Sua chave foi enviada para você mesmo. Abra a mensagem de configuração no seu outro dispositivo. Lá será exibido uma solicitação de código. Digite-o lá:\n\n%1$s\n\nDepois disso, seu dispositivo estará pronto para usar o Autocrypt.</string>
|
||||
<string name="AutocryptSetupMessageSubject">Mensagem de configuração do Autocrypt</string>
|
||||
<string name="AutocryptSetupMessageGeneralBody">Esta é uma mensagem de configuração do Autocrypt que serve para transferir suas chaves entre dispositivos diferentes.\n\nPara descriptografar sua chave abra esta mensagem num cliente de e-mail compatível e digite o código exibido no dispositivo de origem.</string>
|
||||
<string name="AutocryptSetupMessageTapBody">Esta é uma mensagem de configuração do Autocrypt que serve para a transferência de chaves.\n\nPara completá-la toque nesta mensagem.</string>
|
||||
<string name="AutocryptKeyTransferPleaseEnterCode">Por favor, digite o código exibido no outro dispositivo.</string>
|
||||
<string name="AutocryptKeyTransferBadCode">Código errado. Tente novamente.\n\nSe você não se lembra do código recomece a transferência de chaves no dispositivo original.</string>
|
||||
<string name="AutocryptKeyTransferSucceeded">Chaves transferidas. Agora você está pronto para usar o Autocrypt neste dispositivo com as mesmas chaves do outro.</string>
|
||||
<string name="Retry">Repetir</string>
|
||||
<string name="Contact">Contato</string>
|
||||
</resources>
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
<string name="AttachMusic">Музыка</string>
|
||||
<!--documents view-->
|
||||
<string name="SelectFile">Выбрать файл</string>
|
||||
<string name="FreeOfTotal">Свободно %1$s от %2$s</string>
|
||||
<string name="FreeOfTotal">%1$s из %2$sсвободно</string>
|
||||
<string name="ErrorHint">Неизвестная ошибка</string>
|
||||
<string name="AccessError">Ошибка доступа</string>
|
||||
<string name="NoFiles">Нет файлов …</string>
|
||||
@@ -39,14 +39,14 @@
|
||||
<string name="NoMessages">Сообщений нет.</string>
|
||||
<string name="ForwardedMessage">Пересланное сообщение</string>
|
||||
<string name="From">От</string>
|
||||
<string name="NoRecent">Нет последних</string>
|
||||
<string name="NoRecent">Нет недавних</string>
|
||||
<string name="TypeMessage">Сообщение</string>
|
||||
<string name="SlideToCancel">СДВИНЬТЕ ДЛЯ ОТМЕНЫ</string>
|
||||
<string name="SaveToDownloads">Сохранить в папку Загрузки</string>
|
||||
<string name="SaveToMusic">Сохранить в музыку</string>
|
||||
<string name="SlideToCancel">Сдвинуть для отмены</string>
|
||||
<string name="SaveToDownloads">Сохранить в «Загрузки»</string>
|
||||
<string name="SaveToMusic">Сохранить в «Музыка»</string>
|
||||
<string name="Share">Поделиться</string>
|
||||
<string name="SendItems">Отправить %1$s</string>
|
||||
<string name="ClearRecentEmoji">Очистить недавние смайлики?</string>
|
||||
<string name="ClearRecentEmoji">Очистить недавние эмодзи?</string>
|
||||
<string name="AddShortcut">Добавить виджет на домашний экран</string>
|
||||
<string name="ShortcutAdded">Виджет добавлен на домашний экран</string>
|
||||
<!--notification-->
|
||||
@@ -63,7 +63,7 @@
|
||||
<string name="Notifications">Уведомления</string>
|
||||
<string name="RemoveMember">Удалить участника</string>
|
||||
<!--contact info view-->
|
||||
<string name="NewContactTitle">Новый контакт</string>
|
||||
<string name="NewContactTitle">Добавить контакт</string>
|
||||
<string name="BlockContact">Заблокировать контакт</string>
|
||||
<string name="DeleteContact">Удалить контакт</string>
|
||||
<string name="Info">Инфо</string>
|
||||
@@ -77,40 +77,40 @@
|
||||
<string name="Sound">Звук</string>
|
||||
<string name="InAppNotifications">Уведомления программы</string>
|
||||
<string name="Vibrate">Вибрация</string>
|
||||
<string name="ResetAllNotifications">Сбросить все уведомления</string>
|
||||
<string name="ResetAllNotifications">Сбросить настройки уведомлений</string>
|
||||
<string name="NotificationsAndSounds">Уведомления и звуки</string>
|
||||
<string name="BlockedContacts">Заблокированные контакты</string>
|
||||
<string name="Default">По умолчанию</string>
|
||||
<string name="OnlyIfSilent">Только если тишина</string>
|
||||
<string name="OnlyIfSilent">Только при выключенном звуке</string>
|
||||
<string name="ChatBackground">Фон чата</string>
|
||||
<string name="SendByEnter">Отправить нажав "Ввод"</string>
|
||||
<string name="SendByEnter">Отправлять нажав «Ввод»</string>
|
||||
<string name="Help">Помощь</string>
|
||||
<string name="Enabled">Вкл</string>
|
||||
<string name="Disabled">Выкл</string>
|
||||
<string name="LedColor">Цвет LED</string>
|
||||
<string name="BadgeNumber">Показывать кол-во на иконке, по возможности</string>
|
||||
<string name="Short">Коротко</string>
|
||||
<string name="Long">Длинно</string>
|
||||
<string name="BadgeNumber">Задействовать иконку для ведения счёта, по возможности</string>
|
||||
<string name="Short">Короткая</string>
|
||||
<string name="Long">Длинная</string>
|
||||
<string name="RaiseToSpeak">Открыть для разговора</string>
|
||||
<string name="EditName">Правка имени</string>
|
||||
<string name="NotificationsPriority">Просмотр</string>
|
||||
<string name="NotificationsPriorityDefault">Нормальный приоритет</string>
|
||||
<string name="NotificationsPriorityHigh">Высокий приоритет</string>
|
||||
<string name="NotificationsPriorityMax">Наивысший приоритет</string>
|
||||
<string name="RepeatNotifications">Повторить уведомления</string>
|
||||
<string name="RepeatNotifications">Повторять уведомления</string>
|
||||
<string name="NotificationsOther">Другие</string>
|
||||
<string name="InChatSound">Звуки в чате</string>
|
||||
<string name="SmartNotifications">Ограничение уведомлений</string>
|
||||
<string name="SmartNotificationsSoundAtMost">Звук не более</string>
|
||||
<string name="SmartNotificationsSoundAtMost">Макс.</string>
|
||||
<string name="SmartNotificationsTimes">раз</string>
|
||||
<string name="SmartNotificationsWithin">в пределах</string>
|
||||
<string name="SmartNotificationsMinutes">минут</string>
|
||||
<string name="DirectShare">Поделиться напрямую</string>
|
||||
<string name="DirectShareInfo">Показывать последние чаты в меню «Поделиться»</string>
|
||||
<string name="DirectShareInfo">Показывать недавние чаты в меню</string>
|
||||
<!--cache view-->
|
||||
<string name="CacheSettings">Место хранения</string>
|
||||
<string name="KeepMedia">Сохранить медиафайлы</string>
|
||||
<string name="KeepMediaInfo">Фотографии, видео и другие файлы из облачных чатов, имеющиеся у вас <![CDATA[<b>not accessed</b>]]> в течение этого периода, будут удалены с этого устройства, чтобы сэкономить место на диске.</string>
|
||||
<string name="KeepMedia">Срок хранения Медиа</string>
|
||||
<string name="KeepMediaInfo">Фотографии, видео и другие файлы из облачных чатов, имеющиеся у вас <![CDATA[<b>не смотрели</b>]]> в течение этого периода, будут удалены с этого устройства, чтобы сэкономить место на диске.</string>
|
||||
<string name="KeepMediaForever">Навсегда</string>
|
||||
<!--passcode view-->
|
||||
<string name="Passcode">Код доступа</string>
|
||||
@@ -130,7 +130,7 @@
|
||||
<string name="FingerprintInfo">Подтвердите отпечаток пальца для продолжения</string>
|
||||
<string name="FingerprintNotRecognized">Отпечаток пальца не опознан. Повторите снова</string>
|
||||
<!--photo gallery view-->
|
||||
<string name="SaveToGallery">Сохранить в Галерее</string>
|
||||
<string name="SaveToGallery">Сохранить в «Галерее»</string>
|
||||
<string name="Of">%1$d до %2$d</string>
|
||||
<string name="Gallery">Галерея</string>
|
||||
<string name="AllPhotos">Все Фото</string>
|
||||
@@ -151,13 +151,13 @@
|
||||
<string name="Sharpen">Резкость</string>
|
||||
<string name="Fade">Обесцвечивание</string>
|
||||
<string name="Tint">Оттенок</string>
|
||||
<string name="TintShadows">ТЕНИ</string>
|
||||
<string name="TintHighlights">СВЕТОВЫЕ ЭФФЕКТЫ</string>
|
||||
<string name="TintShadows">Тени</string>
|
||||
<string name="TintHighlights">Световые эффекты</string>
|
||||
<string name="Curves">Линии</string>
|
||||
<string name="CurvesAll">ВСЕ</string>
|
||||
<string name="CurvesRed">КРАСНЫЙ</string>
|
||||
<string name="CurvesGreen">ЗЕЛЕНЫЙ</string>
|
||||
<string name="CurvesBlue">СИНИЙ</string>
|
||||
<string name="CurvesAll">Все</string>
|
||||
<string name="CurvesRed">Красный</string>
|
||||
<string name="CurvesGreen">Зелёный</string>
|
||||
<string name="CurvesBlue">Синий</string>
|
||||
<string name="Blur">Размытие</string>
|
||||
<string name="BlurOff">Выкл</string>
|
||||
<string name="BlurLinear">Линейность</string>
|
||||
@@ -181,10 +181,10 @@
|
||||
<string name="Delete">Удалить</string>
|
||||
<string name="Forward">Переслать</string>
|
||||
<string name="FromCamera">Из камеры</string>
|
||||
<string name="FromGalley">Из галереи</string>
|
||||
<string name="FromGalley">Из «Галереи»</string>
|
||||
<string name="Set">Установить</string>
|
||||
<string name="OK">OK</string>
|
||||
<string name="Crop">ОБРЕЗАТЬ</string>
|
||||
<string name="Crop">Обрезать</string>
|
||||
<!--messages-->
|
||||
<string name="AttachPhoto">Фото</string>
|
||||
<string name="AttachVideo">Видео</string>
|
||||
@@ -192,26 +192,26 @@
|
||||
<string name="AttachContact">Контакт</string>
|
||||
<string name="AttachDocument">Файл</string>
|
||||
<string name="AttachVoiceMessage">Голосовое сообщение</string>
|
||||
<string name="FromSelf">Мне</string>
|
||||
<string name="FromSelf">Я</string>
|
||||
<!--Alert messages-->
|
||||
<string name="NoHandleAppInstalled">У вас нет приложений, которые могут обрабатывать тип файла \'%1$s\', пожалуйста, установите такое приложение, чтобы продолжить</string>
|
||||
<string name="NoHandleAppInstalled">Нет приложений, которые могут обрабатывать тип файла \'%1$s\', пожалуйста, установите такое приложение, чтобы продолжить.</string>
|
||||
<string name="ContactAlreadyInGroup">Контакт уже находится в этой группе.</string>
|
||||
<string name="ForwardMessagesTo">Переслать выбранные сообщения в <![CDATA[<b>]]>%1$s<![CDATA[</b>]]>?</string>
|
||||
<string name="SendMessagesTo">Отправить сообщения в <![CDATA[<b>]]>%1$s<![CDATA[</b>]]>?</string>
|
||||
<string name="AreYouSureDeleteThisChat">Удалить этот чат? Чат больше не будет отображаться в списке чатов, сообщения останутся на сервере.</string>
|
||||
<string name="ForwardMessagesTo">Переслать выбранные сообщения пользователю <![CDATA[<b>]]>%1$s<![CDATA[</b>]]>?</string>
|
||||
<string name="SendMessagesTo">Отправить сообщения пользователю <![CDATA[<b>]]>%1$s<![CDATA[</b>]]>?</string>
|
||||
<string name="AreYouSureDeleteThisChat">Удалить этот чат? Он больше не будет отображаться в списке чатов, сообщения останутся на серверах.</string>
|
||||
<string name="AreYouSureBlockContact">Вы действительно хотите заблокировать этот контакт?</string>
|
||||
<string name="AreYouSureDeleteContact">Вы уверены, что хотите удалить этот контакт?</string>
|
||||
<!--permissions-->
|
||||
<string name="PermissionContacts">Delta Chat необходим доступ к вашим контактам, чтобы вы могли общаться со своими друзьями на всех ваших устройствах.</string>
|
||||
<string name="PermissionStorage">Delta Chat необходим доступ к вашему хранилищу, чтобы вы могли отправлять и сохранять фотографии, видео, музыку и другие материалы.</string>
|
||||
<string name="PermissionNoAudio">Delta Chat необходим доступ к вашему микрофону, чтобы вы могли отправлять голосовые сообщения.</string>
|
||||
<string name="PermissionOpenSettings">Адаптировать настройки</string>
|
||||
<string name="PermissionContacts">Доступ к вашим контактам необходим для того, чтобы вы могли общаться со своими друзьями на всех ваших устройствах.</string>
|
||||
<string name="PermissionStorage">Необходим доступ к памяти вашего устройства для отправки и хранения фотографий, видео, музыки и других файлов.</string>
|
||||
<string name="PermissionNoAudio">Доступ к микрофону для записи голосовых сообщений.</string>
|
||||
<string name="PermissionOpenSettings">Настройки</string>
|
||||
<!--Intro view-->
|
||||
<string name="Intro1Headline">Delta Chat</string>
|
||||
<string name="Intro1Message">Мессенджер с <![CDATA[<b>самым большим диапазоном охвата</b>]]> в мире. <![CDATA[<br/><b>Бесплатный</b>]]> и <![CDATA[<b>безопасный</b>]]>.</string>
|
||||
|
||||
<string name="Intro2Headline">Независимый</string>
|
||||
<string name="Intro2Message"><![CDATA[<b>Независимость</b>]]> от иностранных компьютеров или сервисов. Приложение использует только ваш почтовый сервер.</string>
|
||||
<string name="Intro2Message"><![CDATA[<b>У Delta Chat нет своих серверов.</b>]]> Приложение использует только ваш почтовый сервер.</string>
|
||||
|
||||
<string name="Intro3Headline">Быстрый</string>
|
||||
<string name="Intro3Message"><![CDATA[<b>Push-сообщения</b>]]> за секунды.<![CDATA[<br/>]]>Быстрый интерфейс.</string>
|
||||
@@ -222,7 +222,7 @@
|
||||
<string name="Intro5Headline">Бесплатный</string>
|
||||
<string name="Intro5Message"><![CDATA[<b>Delta Chat</b>]]> бесплатен навсегда.<![CDATA[<br/>]]>Открытое ПО. Без рекламы. Без навязчивых подписок. Без привязки к поставщику услуг.</string>
|
||||
|
||||
<string name="Intro6Headline">Безопасный</string>
|
||||
<string name="Intro6Headline">Зашифровано</string>
|
||||
<string name="Intro6Message"><![CDATA[<b>Шифрование</b>]]> со всеми известными алгоритмами. Сообщения остаются на ваших серверах.</string>
|
||||
|
||||
<string name="Intro7Headline">Надежный</string>
|
||||
@@ -263,8 +263,11 @@
|
||||
<item quantity="one">Удалить %d сообщение? Сообщение также будет удалено с сервера.</item>
|
||||
<item quantity="few">Удалить %d сообщения? Сообщения также будут удалены с сервера.</item>
|
||||
<item quantity="many">Удалить %d сообщения? Сообщения также будут удалены с сервера.</item>
|
||||
<item quantity="other">Удалить %d сообщения? Сообщения также будут удалены с сервера.</item>
|
||||
<item quantity="other">Удалить %d сообщения? Они также будут удалены с вашего сервера.</item>
|
||||
</plurals>
|
||||
<!-- Translators: The first string placeholder gets replaced with the
|
||||
text "%d new messages", so the complete sentence would be e.g.
|
||||
"4 new messages in 2 chats". -->
|
||||
<plurals name="NewMessagesInChats">
|
||||
<item quantity="one">%1$s в %2$d чате</item>
|
||||
<item quantity="few">%1$s в %2$d чатах</item>
|
||||
@@ -307,6 +310,9 @@
|
||||
<item quantity="many">%d месяцев</item>
|
||||
<item quantity="other">%d месяцев</item>
|
||||
</plurals>
|
||||
<!-- Translators: The second string placeholder gets replaced with the
|
||||
text "%d minutes", so the complete sentence would be e.g.
|
||||
"At most 8 notifications within 3 minutes". -->
|
||||
<plurals name="MaxNotifications">
|
||||
<item quantity="one">Не более %1$d сообщения в течении %2$s</item>
|
||||
<item quantity="few">Не более %1$d сообщений в течении %2$s</item>
|
||||
@@ -325,8 +331,8 @@
|
||||
<string name="formatDateAtTime">%1$s в %2$s</string>
|
||||
<string name="AccountSettings">Настройки аккаунта</string>
|
||||
<string name="MyAccount">Мой аккаунт</string>
|
||||
<string name="MyName">Мое имя</string>
|
||||
<string name="MyNameExplain">Ваше имя, которое будут видеть все участники переписки. Если вы не введете свое имя, участники переписки увидят только адрес вашей эл.почты.</string>
|
||||
<string name="MyName">Моё имя</string>
|
||||
<string name="MyNameExplain">Ваше имя будет видно всем участникам переписки. Если оставить поле пустым, участники переписки увидят только адрес вашей эл.почты.</string>
|
||||
<string name="Password">Пароль</string>
|
||||
<string name="SmtpPassword">SMTP пароль</string>
|
||||
<string name="FromAbove">Как указан выше</string>
|
||||
@@ -340,7 +346,7 @@
|
||||
<string name="InboxHeadline">Входящие</string>
|
||||
<string name="OutboxHeadline">Исходящие</string>
|
||||
<string name="MyAccountExplain">Для известных поставщиков электронной почты дополнительные настройки определяются автоматически.</string>
|
||||
<string name="MyAccountExplain2" >Иногда, <![CDATA[<b>]]>IMAP должен быть включен<![CDATA[</b>]]> в веб-интерфейсе электронной почты.\n\nВ случае затруднений, обратитесь к своему поставщику электронной почты или компетентным друзьям.</string>
|
||||
<string name="MyAccountExplain2" >Иногда <![CDATA[<b>]]>IMAP должен быть включён<![CDATA[</b>]]> в веб-интерфейсе электронной почты.\n\nВ случае затруднений обратитесь к своему поставщику услуги электронной почты или компетентным друзьям.</string>
|
||||
<string name="AccountNotConfigured">Аккаунт не настроен</string>
|
||||
<string name="AboutThisProgram">Delta Chat (Дельта Чат)</string>
|
||||
<string name="NotSet">Не задано</string>
|
||||
@@ -351,7 +357,7 @@
|
||||
<string name="AskStartChatWith">Начать чат с <![CDATA[<b>]]>%1$s<![CDATA[</b>]]>?</string>
|
||||
<string name="DeaddropHint">Чтобы начать чат, нажмите стрелку ответа.</string>
|
||||
<string name="NotYetImplemented">Эта функция недоступна или в разработке.</string>
|
||||
<string name="DefaultStatusText">Отправлено с помощью Delta Chat Messenger: https://delta.chat</string>
|
||||
<string name="DefaultStatusText">Отправлено с помощью мессенджера Delta Chat: https://delta.chat/ru</string>
|
||||
<string name="Name" >Имя</string>
|
||||
<string name="EmailAddress">Адрес электронной почты</string>
|
||||
<string name="CannotDeleteContact">Невозможно удалить контакты во время их использования, вместо этого заблокируйте контакт.</string>
|
||||
@@ -361,12 +367,12 @@
|
||||
<!-- Translators: please use a very short string here, it should not much longer than
|
||||
the string needed for video time+size (0:00, 12,3 Mib) -->
|
||||
<string name="OneMoment">Один момент …</string>
|
||||
<string name="NoChatsHelp">Начните обмен сообщениями, нажав кнопку нового чата в нижнем правом углу или коснитесь кнопки меню для получения дополнительных возможностей.</string>
|
||||
<string name="NoChatsHelp">Начните обмен сообщениями, нажав кнопку нового чата в нижнем правом углу, или коснитесь кнопки меню для получения дополнительных возможностей.</string>
|
||||
<string name="Intro7Message"><![CDATA[<b>Delta Chat</b>]]> безопасен для использования в бизнесе, основан на совместимых стандартах.</string>
|
||||
<string name="InviteMenuEntry">Отправить приглашения</string>
|
||||
<string name="InviteText">Я использую систему мгновенных сообщений Delta Chat - %1$s - вы можете написать мне на %2$s</string>
|
||||
<string name="InviteText">Я использую мессенджер Delta Chat - %1$s - вы можете написать мне на %2$s</string>
|
||||
<string name="AdvancedSettings">Расширенные настройки</string>
|
||||
<string name="AskResetNotifications">Сбросить все настройки уведомлений и звуки этой страницы, а также ваших контактов и групп?</string>
|
||||
<string name="AskResetNotifications">Сбросить все настройки звуков и уведомлений для контактов и групп на этой странице?</string>
|
||||
<string name="AttachFiles">Прикрепить файлы</string>
|
||||
<string name="ErrGroupNameEmpty">Введите название группы.</string>
|
||||
<string name="MsgNewGroupDraftHint">Напишите первое сообщение, чтобы другие могли отвечать в этой группе.\n\n• Группа будет нормально общаться, даже если не все участники используют Delta Chat.\n\n• Доставка первого сообщения может занять некоторое время.</string>
|
||||
@@ -374,12 +380,12 @@
|
||||
<string name="MsgGroupNameChanged">Название группы изменено с \"%1$s\" в \"%2$s\".</string>
|
||||
<string name="MsgGroupImageChanged">Изображение группы изменено.</string>
|
||||
<string name="MsgMemberAddedToGroup">Участник %1$s добавлен.</string>
|
||||
<string name="MsgMemberRemovedFromToGroup">Участник %1$s удален.</string>
|
||||
<string name="MsgMemberRemovedFromToGroup">Участник %1$s удалён.</string>
|
||||
<string name="AskAddMemberToGroup">Добавить <![CDATA[<b>]]>%1$s<![CDATA[</b>]]> в группу?</string>
|
||||
<string name="AskRemoveMemberFromGroup">Удалить <![CDATA[<b>]]>%1$s<![CDATA[</b>]]> из группы?</string>
|
||||
<string name="ErrSelfNotInGroup">Чтобы выполнить это действие, вы должны быть участником группы.</string>
|
||||
<string name="MsgGroupLeft">Группа оставлена.</string>
|
||||
<string name="NoMessagesHint">Отправить сообщение <![CDATA[<b>]]>%1$s<![CDATA[</b>]]>:\n\n• Общение будет возможным, даже если <![CDATA[<b>]]>%2$s<![CDATA[</b>]]> не используют Delta Chat.\n\n• Доставка первого сообщения может занять некоторое время.</string>
|
||||
<string name="NoMessagesHint">Отправить сообщение <![CDATA[<b>]]>%1$s<![CDATA[</b>]]>:\n\n• Общение будет возможным, даже если <![CDATA[<b>]]>%2$s<![CDATA[</b>]]> не использует Delta Chat.\n\n• Доставка первого сообщения может занять некоторое время.</string>
|
||||
<string name="SendNRcvReadReceipts">Получать и отправлять уведомления о доставке</string>
|
||||
<string name="PreferE2EEncryption">Предпочитать сквозное шифрование</string>
|
||||
<string name="E2EManagePrivateKeys">Управление закрытыми ключами</string>
|
||||
@@ -391,50 +397,92 @@
|
||||
<string name="Error">Ошибка: %1$s</string>
|
||||
<string name="NoNetwork">Сеть недоступна.</string>
|
||||
<string name="Audio">Аудио</string>
|
||||
<string name="PleaseCutVideoToMaxSize">Обрежьте видео до максимального размера в %1$s.</string>
|
||||
<string name="PermNotificationTitle">Соединен с %1$s</string>
|
||||
<string name="PleaseCutVideoToMaxSize">Обрежьте видео до размера меньше чем %1$s.</string>
|
||||
<string name="PermNotificationTitle">Подключён к %1$s</string>
|
||||
<string name="PermNotificationText">Ожидание сообщений …</string>
|
||||
<string name="SettingsFor">Настройки для %1$s</string>
|
||||
<string name="AutoplayGifs">Автозапуск GIF</string>
|
||||
<string name="HelpUrl">https://delta.chat/ru/help</string>
|
||||
<string name="EncryptedMessage">Зашифрованное сообщение</string>
|
||||
<string name="Encryption">Шифрование</string>
|
||||
<string name="EncrinfoE2E">Включено сквозное шифрование.</string>
|
||||
<string name="EncrinfoE2EExplain">Если все отпечатки пальцев совпадают на другом устройстве, соединение безопасно.</string>
|
||||
<string name="EncrinfoTransport">Защищенное соединение по крайней мере до моего сервера.</string>
|
||||
<string name="EncrinfoNone">Незащищенное соединение до моего сервера.</string>
|
||||
<string name="EncrinfoNoE2EExplain">Сквозное шифрование включится автоматически, как только контакт начнет использовать Delta Chat или другое приложение с поддержкой Autocrypt.</string>
|
||||
<string name="EncrinfoFingerprints">Отпечатки пальцев</string>
|
||||
<string name="EncrinfoE2EAvailable">Доступно сквозное шифрование.</string>
|
||||
<string name="EncrinfoTransport">Соединение защищено, по крайней мере до моего сервера.</string>
|
||||
<string name="EncrinfoNone">Соединение к моему серверу незащищено.</string>
|
||||
<string name="EncrinfoFingerprints">Ключи шифрования</string>
|
||||
<string name="Backup">Резервное копирование</string>
|
||||
<string name="ImportBackupExplain2">Для восстановления из резервной копии скопируйте резервную копию в <![CDATA[<i>]]>%1$s<![CDATA[</i>]]> и переустановите приложение.</string>
|
||||
<string name="ReadReceiptMailBody">Это уведомление о доставке сообщения \"%1$s\".\n\nОно подтверждает, что сообщение было отображено на устройстве адресата. Однако это не означает, что получатель прочитал его содержимое.</string>
|
||||
<string name="ReadReceipt">Уведомление о доставке</string>
|
||||
<string name="NameAndStatus">Имя и статус</string>
|
||||
<string name="MyStatus">Мой статус</string>
|
||||
<string name="MyStatusExplain">Статус может быть показан в подписи.</string>
|
||||
<string name="NameAndStatus">Имя и подпись</string>
|
||||
<string name="MyStatus">Моя подпись</string>
|
||||
<string name="MyStatusExplain">Эта подпись будет отображаться в конце сообщения.</string>
|
||||
<string name="MsgGroupImageDeleted">Изображение группы удалено.</string>
|
||||
<string name="AskDeleteGroupImage">Вы действительно хотите удалить изображение группы?\n\nИзменение вступит в силу на всех устройствах участников группы.</string>
|
||||
<string name="ExportImportHeader">Экспорт и импорт</string>
|
||||
<string name="ImportExportExplain">Файлы экспорта будут содержать закрытые ключи! Храните их в защищенном месте или удалите их по первой возможности.</string>
|
||||
<string name="ImportExportExplain">Файлы экспорта будут содержать закрытые ключи! Храните их в защищенном месте или удалите при первой возможности.</string>
|
||||
<string name="EnterPasswordToContinue">Введите пароль для %1$s, чтобы продолжить:</string>
|
||||
<string name="IncorrectPassword">Неверный пароль.</string>
|
||||
<string name="ImportBackupAsk">Delta Chat нашел резервную копию в <![CDATA[<i>]]>%1$s<![CDATA[</i>]]>.\n\nИмпортировать и использовать все данные и настройки из резервной копии?</string>
|
||||
<string name="ImportBackup">Восстановить из резервной копии</string>
|
||||
<string name="NoBackupFound">Резервная копия не найдена.\n\nСкопируйте резервную копию в <![CDATA[<i>]]>%1$s<![CDATA[</i>]]> и попробуйте снова. Иначе нажмите \"Начать обмен сообщениями\" для обычного процесса установки.</string>
|
||||
<string name="NoBackupFound">Резервная копия не найдена.\n\nСкопируйте резервную копию в <![CDATA[<i>]]>%1$s<![CDATA[</i>]]> и попробуйте снова. Иначе, нажмите «Начать обмен сообщениями» для обычного процесса установки.</string>
|
||||
<string name="FilesSuccessfullyExported">Файлы успешно экспортированы в <![CDATA[<i>]]>%1$s<![CDATA[</i>]]>.</string>
|
||||
<string name="ExportBackup">Сохранить резервную копию</string>
|
||||
<string name="ExportPrivateKeys">Экспорт закрытых ключей</string>
|
||||
<string name="ImportPrivateKeys">Импорт закрытых ключей</string>
|
||||
<string name="ImportPrivateKeysAsk2">Импорт закрытых ключей из <![CDATA[<i>]]>%1$s<![CDATA[</i>]]>?\n\n• Существующие закрытые ключи удалены не будут\n\n• Последний импортированный ключ будет использован по умолчанию.</string>
|
||||
<string name="NoRecentEmoji">Здесь будут ранее использованные смайлики.</string>
|
||||
<string name="E2eeOffBecauseOfUser">Для включения сквозного шифрования выберите соответствующий пункт в настройках.</string>
|
||||
<string name="E2eeOffBecauseOfRecipient">Шифрование будет переключено в сквозной режим, если со стороны контакта будет выбран соответствующий пункт настроек.</string>
|
||||
<string name="ImportPrivateKeysAsk2">Импорт закрытых ключей из <![CDATA[<i>]]>%1$s<![CDATA[</i>]]>?\n\n• Существующие закрытые ключи не будут удалены\n\n• Последний импортированный ключ будет использован по умолчанию.</string>
|
||||
<string name="NoRecentEmoji">Здесь будут показаны часто употребляемые эмодзи.</string>
|
||||
<string name="NotNow">Не сейчас</string>
|
||||
<string name="ArchiveChat">Архивировать чат</string>
|
||||
<string name="UnarchiveChat">Разархивировать чат</string>
|
||||
<string name="ArchivedChats">Архивированные чаты</string>
|
||||
<string name="Archived">Помещено в архив</string>
|
||||
<string name="LeaveGroup">Выйти из группы</string>
|
||||
<string name="ArchivedChats">Архив чатов</string>
|
||||
<string name="Archived">Архивировано</string>
|
||||
<string name="LeaveGroup">Покинуть группу</string>
|
||||
<string name="AskLeaveGroup">Вы уверены, что хотите выйти из группы?</string>
|
||||
<string name="Never">Никогда</string>
|
||||
<string name="AutocryptKeyTransferInitiate">Начать передачу Сообщения Настройки Autocrypt</string>
|
||||
<string name="AutocryptKeyTransfer">Сообщение Настойки Autocrypt</string>
|
||||
<string name="AutocryptKeyTransferMsgBeforeSend">Для <![CDATA[<i>]]>передачи Сообщения Настройки Autocrypt<![CDATA[</i>]]> необходимо, чтобы почтовый клиент на другом устройстве так же поддерживал Autocrypt.\n\nЗатем Вы можете послать ключ себе. Ключ будет зашифрован кодом настройки, который указан здесь, и который нужно будет ввести на другом устройстве.</string>
|
||||
<string name="AutocryptKeyTransferMsgAfterSend">Вы отправили ключ себе. Теперь перейдите к другому устройству и откройте сообщение настройки. Будет предложено ввести код настройки. Введите следующие цифры:\n\n%1$s\n\nКак только Вы это сделаете, другое устройство будет готово использовать Autocrypt.</string>
|
||||
<string name="AutocryptSetupMessageSubject">Сообщение Настройки Autocrypt</string>
|
||||
<string name="AutocryptSetupMessageGeneralBody">Это Сообщение Настройки Autocrypt, используемое для передачи ключа между клиентами.\n\nДля расшифровки и использования вашего ключа откройте это сообщение в почтовом клиенте, совместимом с Autocrypt, и введите код, отображаемый на устройстве с которого отправлено сообщение.</string>
|
||||
<string name="AutocryptSetupMessageTapBody">Это Сообщение Настройки Autocrypt, используемое для передачи вашего ключа между клиентами.\n\nЧтобы расшифровать и начать использовать Ваш ключ, нажмите на это сообщение.</string>
|
||||
<string name="AutocryptKeyTransferPleaseEnterCode">Пожалуйста, введите код настройки отображённый на другом устройстве.</string>
|
||||
<string name="AutocryptKeyTransferBadCode">Неверный код настройки. Пожалуйста, повторите.\n\nЕсли вы не помните код настройки, вернитесь к исходному устройству и передайте ключ ещё раз.</string>
|
||||
<string name="AutocryptKeyTransferSucceeded">Ключ передан успешно. Сейчас это устройство может использовать Autocrypt с тем же ключом, что и на другом устройстве.</string>
|
||||
<string name="Retry">Повторить</string>
|
||||
<string name="SelfTalkSubtitle">Сообщения отправленные самому себе</string>
|
||||
<string name="QrScan">Сканировать QR код</string>
|
||||
<string name="QrShow">Показать QR код</string>
|
||||
<string name="QrScanContainsText">Отсканированный QR код содержит текст:\n\n%1$s</string>
|
||||
<string name="QrScanContainsUrl">QR код для перехода по ссылке URL:\n\n%1$s</string>
|
||||
<string name="OobFingerprint">Ключ</string>
|
||||
<string name="OobFingerprintAskOob">Верифицировать контакт и начать общение с <![CDATA[<b>]]>%1$s<![CDATA[</b>]]>?</string>
|
||||
<string name="OobFingerprintOk">Контакт <![CDATA[<i>]]>%1$s<![CDATA[</i>]]> верифицирован. Начать общение?</string>
|
||||
<string name="OobFingerprintMismatch">Отсканированный ключ шифрования <![CDATA[<b>]]>не соответствует<![CDATA[</b>]]> ключу, который ранее был у <![CDATA[<i>]]>%1$s<![CDATA[</i>]]>.</string>
|
||||
<string name="OobFingerprintWithoutAddr">Этот QR код содержит ключ шифрования, не адрес эл.почты.\n\nЧтобы выполнить верификацию по внешнему каналу, прежде всего установите с получателем защищённое соединение.</string>
|
||||
<string name="OobSecureJoinRequested">%1$s соединений.</string>
|
||||
<string name="CannotDecryptBody">Это сообщение не может быть расшифровано.\n\n• Возможно вам надо, просто попросить отправителя направить вам сообщение ещё раз.\n\n• В случае переустановки программы Дельта Чат или любой другой почтовой программы на этом или другом устройствах вам будет необходимо отправить от них Сообщение Настроек Autocrypt.</string>
|
||||
<string name="Autocrypt">Autocrypt</string>
|
||||
<string name="AutocryptExplain"><![CDATA[<i>]]>Autocrypt<![CDATA[</i>]]> это новая и открытая спецификация сквозного шифрования для эл. почты.\n\nНастройки вашего сквозного шифрования создаются при необходимости автоматически и вы можете передавать их между устройствами посредством <![CDATA[<i>]]>Сообщения Настроек Autocrypt.<![CDATA[</i>]]></string>
|
||||
<string name="NewVerifiedGroup">Новая проверенная группа</string>
|
||||
<string name="SharedChats">Коллективный чат</string>
|
||||
<string name="VerifiedContact">Проверенный контакт</string>
|
||||
<string name="Contact">Контакт</string>
|
||||
<string name="VerifiedGroup">Проверенная группа</string>
|
||||
<string name="Group">Группа</string>
|
||||
<string name="EditedNameWillBeShared">Отредактированное имя будет разослано всем участникам группы.</string>
|
||||
<string name="QrShowInviteCode">Показать QR код приглашения</string>
|
||||
<string name="E2EEncryptionPreferred">Предпочтено сквозное шифрование.</string>
|
||||
<string name="OobAddrVerified">%1$s верифицирован.</string>
|
||||
<string name="OobAddrVerifiedIntroduceMyself">%1$s верифицирован, представьтесь …</string>
|
||||
<string name="OobAskJoinVerifiedGroup">Вы хотите присоединиться к верифицированной группе <![CDATA[<b>]]>%1$s<![CDATA[</b>]]>?</string>
|
||||
<!-- Translators: %1$s is replaced by an action, eg. MsgMemberAddedToGroup, MsgMemberRemovedFromToGroup, MsgGroupNameChanged or MsgGroupImageChanged. If the action ends with a full stop, this is removed.
|
||||
%2$s is replaced by a the name of the user that made this action.
|
||||
Resulting strings might be "Member Alice added by Bob." or 'Group name changed from "Foo" to "Bar" by Claire.
|
||||
If you do not find a correct grammar for your language you can just use "%1$s (by %2$s)" or "%2$s: %1$s" -->
|
||||
<string name="ActionByUser">%1$s от %2$s.</string>
|
||||
<!-- Translators: %1$s is replaced by an action, eg. MsgMemberAddedToGroup, MsgMemberRemovedFromToGroup, MsgGroupNameChanged or MsgGroupImageChanged. If the action ends with a full stop, this is removed.
|
||||
Resulting strings might be "Member Alice added by me." or 'Group name changed from "Foo" to "Bar" by me.
|
||||
If you do not find a correct grammar for your language you can just use "%1$s (by me)" or "Me: %1$s" -->
|
||||
<string name="ActionBySelf">%1$s от меня.</string>
|
||||
</resources>
|
||||
|
||||
@@ -0,0 +1,459 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
|
||||
|
||||
<resources xmlns:tools="http://schemas.android.com/tools">
|
||||
<string name="AppName">Delta Chat</string>
|
||||
<!--chats view-->
|
||||
<string name="Settings">Rregullime</string>
|
||||
<string name="NewGroup">Grup i ri</string>
|
||||
<string name="NoResult">S\’ka përfundime.</string>
|
||||
<string name="NoChats">Ende pa biseda.</string>
|
||||
<string name="DeleteChat">Fshije bisedën</string>
|
||||
<string name="SelectChat">Përzgjidhni bisedë…</string>
|
||||
<string name="Search">Kërko</string>
|
||||
<string name="MuteNotifications">Mos shfaq njoftime</string>
|
||||
<string name="MuteFor">Mos i shfaq për %1$s</string>
|
||||
<string name="UnmuteNotifications">Shfaqi</string>
|
||||
<string name="Draft">Skicë</string>
|
||||
<!--audio view-->
|
||||
<string name="NoAudio">Kartelat e shtuara te mediateka e pajisjes suaj do të shfaqen këtu.</string>
|
||||
<string name="AttachMusic">Muzikë</string>
|
||||
<!--documents view-->
|
||||
<string name="SelectFile">Përzgjidhni Kartelë</string>
|
||||
<string name="FreeOfTotal">%1$s nga %2$s të lira</string>
|
||||
<string name="ErrorHint">Gabim i panjohur</string>
|
||||
<string name="AccessError">Gabim hyrjeje</string>
|
||||
<string name="NoFiles">Ende pa kartela…</string>
|
||||
<string name="NotMounted">S\’ka depozitë të montuar</string>
|
||||
<string name="UsbActive">Shpërngulje USB në ecuri e sipër</string>
|
||||
<string name="InternalStorage">Depozitë e Brendshme</string>
|
||||
<string name="ExternalStorage">Depozitë e Jashtme</string>
|
||||
<string name="SystemRoot">Rrënjë e Sistemit</string>
|
||||
<string name="SdCard">Diskth SD</string>
|
||||
<string name="Folder">Dosje</string>
|
||||
<string name="GalleryInfo">Për dërgim figurash të pangjeshura</string>
|
||||
<!--chat view-->
|
||||
<string name="ChatGallery">Galeri</string>
|
||||
<string name="ChatCamera">Kamerë</string>
|
||||
<string name="NoMessages">S\’ka mesazhe.</string>
|
||||
<string name="ForwardedMessage">Mesazh i përcjellë</string>
|
||||
<string name="From">Nga</string>
|
||||
<string name="NoRecent">S’ka të freskët</string>
|
||||
<string name="TypeMessage">Mesazh</string>
|
||||
<string name="SlideToCancel">Rrëshqiteni që të anulohet</string>
|
||||
<string name="SaveToDownloads">Ruaje te \"Shkarkime\"</string>
|
||||
<string name="SaveToMusic">Ruaje te \"Muzikë\"</string>
|
||||
<string name="Share">Ndajeni me të tjerë</string>
|
||||
<string name="SendItems">Dërgo %1$s</string>
|
||||
<string name="ClearRecentEmoji">Të hiqen emoji-t e përdorur së fundi?</string>
|
||||
<string name="AddShortcut">Shtoje widget-in te kreu</string>
|
||||
<string name="ShortcutAdded">Widget-i u shtua tek kreu</string>
|
||||
<!--notification-->
|
||||
<string name="Reply">Përgjigjuni</string>
|
||||
<string name="ReplyToGroup">Përgjigjiuni %1$s</string>
|
||||
<string name="ReplyToContact">Përgjigjiuni %1$s</string>
|
||||
<!--contacts view-->
|
||||
<string name="NoContacts">Ende pa kontakte.</string>
|
||||
<!--group create view-->
|
||||
<string name="SendMessageTo">Dërgoni mesazh te…</string>
|
||||
<string name="EnterGroupNamePlaceholder">Jepni emër grupi</string>
|
||||
<!--group info view-->
|
||||
<string name="AddMember">Shtoni anëtar</string>
|
||||
<string name="Notifications">Njoftime</string>
|
||||
<string name="RemoveMember">Hiqni anëtar</string>
|
||||
<!--contact info view-->
|
||||
<string name="NewContactTitle">Kontakt i ri</string>
|
||||
<string name="BlockContact">Bllokoje kontaktin</string>
|
||||
<string name="DeleteContact">Fshije kontaktin</string>
|
||||
<string name="Info">Të dhëna</string>
|
||||
<!--settings view-->
|
||||
<string name="TextSize">Madhësi shkronjash mesazhi</string>
|
||||
<string name="UnblockContact">Zhbllokoje kontaktin</string>
|
||||
<string name="NoBlocked">Ende pa kontakte të bllokuar</string>
|
||||
<string name="DefaultForNormalMessages">Mesazhe normale</string>
|
||||
<string name="MessagePreview">Paraparje mesazhesh</string>
|
||||
<string name="DefaultForGroupMessages">Mesazhi grupi</string>
|
||||
<string name="Sound">Tingull</string>
|
||||
<string name="InAppNotifications">Njoftime nga aplikacioni</string>
|
||||
<string name="Vibrate">Dridhu</string>
|
||||
<string name="ResetAllNotifications">Ktheji krejt njoftimet te parazgjedhjet</string>
|
||||
<string name="NotificationsAndSounds">Njoftime dhe tinguj</string>
|
||||
<string name="BlockedContacts">Kontakte të bllokuar</string>
|
||||
<string name="Default">Parazgjedhje</string>
|
||||
<string name="OnlyIfSilent">Vetëm për pa zë</string>
|
||||
<string name="ChatBackground">Sfond bisedash</string>
|
||||
<string name="SendByEnter">Dërgoje me \"Enter\"</string>
|
||||
<string name="Help">Ndihmë</string>
|
||||
<string name="Enabled">On</string>
|
||||
<string name="Disabled">Off</string>
|
||||
<string name="LedColor">Ngjyrë LED</string>
|
||||
<string name="BadgeNumber">Në qoftë e mundur, përdor ikonë për numërime</string>
|
||||
<string name="Short">E shkurtër</string>
|
||||
<string name="Long">E gjatë</string>
|
||||
<string name="RaiseToSpeak">Ngrijeni që të flisni</string>
|
||||
<string name="EditName">Përpunoni emrin</string>
|
||||
<string name="NotificationsPriority">Shiheni</string>
|
||||
<string name="NotificationsPriorityDefault">Përparësi normale</string>
|
||||
<string name="NotificationsPriorityHigh">Përparësi e lartë</string>
|
||||
<string name="NotificationsPriorityMax">Përparësia më lartë</string>
|
||||
<string name="RepeatNotifications">Njoftime përsëritjeje</string>
|
||||
<string name="NotificationsOther">Tjetër</string>
|
||||
<string name="InChatSound">Tinguj nga aplikacioni</string>
|
||||
<string name="SmartNotifications">Kufizo njoftimet</string>
|
||||
<string name="SmartNotificationsSoundAtMost">Maks.</string>
|
||||
<string name="SmartNotificationsTimes">herë</string>
|
||||
<string name="SmartNotificationsWithin">brenda</string>
|
||||
<string name="SmartNotificationsMinutes">minutash</string>
|
||||
<string name="DirectShare">Ndarje e drejtpërdrejtë me të tjerët</string>
|
||||
<string name="DirectShareInfo">Shfaq biseda të freskëta te menuja e ndarjeve me të tjerët</string>
|
||||
<!--cache view-->
|
||||
<string name="CacheSettings">Depozitë</string>
|
||||
<string name="KeepMedia">Mbaje Median</string>
|
||||
<string name="KeepMediaInfo">Foto, video dhe kartela të tjera prej bisedash në re, që <![CDATA[<b>nuk i keni hapur</b>]]> gjatë kësaj periudhe, do të hiqen prej pajisjes, për të kursyer hapësirë disku.</string>
|
||||
<string name="KeepMediaForever">Përgjithmonë</string>
|
||||
<!--passcode view-->
|
||||
<string name="Passcode">Kyçje Kodkalimi</string>
|
||||
<string name="ChangePasscode">Ndryshoni Kodkalimin</string>
|
||||
<string name="ChangePasscodeInfo">Kur rregulloni një kodkalim shtesë, te faqja e bisedave do të shfaqet një ikonë dryni. Prekeni që të kyçet aplikacioni.\n\nShënim: nëse harroni kodkalimin, do t\’ju duhet të fshini dhe ri-instaloni aplikacionin.</string>
|
||||
<string name="PasscodePIN">PIN</string>
|
||||
<string name="PasscodePassword">Fjalëkalim</string>
|
||||
<string name="EnterCurrentPasscode">Jepni kodkalimin tuaj të tanishëm</string>
|
||||
<string name="EnterNewFirstPasscode">Jepni një kodkalim</string>
|
||||
<string name="EnterNewPasscode">Jepni kodkalimin tuaj të ri</string>
|
||||
<string name="EnterYourPasscode">Jepni kodkalimin tuaj</string>
|
||||
<string name="ReEnterYourPasscode">Rijepeni kodkalimin tuaj të ri</string>
|
||||
<string name="PasscodeDoNotMatch">Kodkalimet nuk përputhen</string>
|
||||
<string name="AutoLock">Vetëkyçe</string>
|
||||
<string name="AutoLockInfo">Kërko kodkalim nëse largohet për njëfarë kohe.</string>
|
||||
<string name="UnlockFingerprint">Shkyçe me shenja gishtash</string>
|
||||
<string name="FingerprintInfo">Që të vazhdohet, konfirmoni shenja gishtash</string>
|
||||
<string name="FingerprintNotRecognized">Shenja gishtash që nuk njihen. Riprovoni</string>
|
||||
<!--photo gallery view-->
|
||||
<string name="SaveToGallery">Ruaje te \"Galeri\"</string>
|
||||
<string name="Of">%1$d nga %2$d gjithsej</string>
|
||||
<string name="Gallery">Galeri</string>
|
||||
<string name="AllPhotos">Krejt Fotot</string>
|
||||
<string name="AllVideo">Krejt Videot</string>
|
||||
<string name="NoPhotos">Ende pa foto</string>
|
||||
<string name="NoVideo">Ende pa video</string>
|
||||
<string name="CropImage">Qetheni figurën</string>
|
||||
<string name="EditImage">Përpunoni figurën</string>
|
||||
<string name="Enhance">Përmirësoje</string>
|
||||
<string name="Highlights">Theksime</string>
|
||||
<string name="Contrast">Kontrast</string>
|
||||
<string name="Exposure">Ekspozim</string>
|
||||
<string name="Warmth">Ngrohtësi</string>
|
||||
<string name="Saturation">Ngopje</string>
|
||||
<string name="Shadows">Hije</string>
|
||||
<string name="Grain">Kokërrzim</string>
|
||||
<string name="Sharpen">Mprehe</string>
|
||||
<string name="Fade">Zbehe</string>
|
||||
<string name="Tint">Ngjyrose</string>
|
||||
<string name="TintShadows">Hije</string>
|
||||
<string name="TintHighlights">Theksime</string>
|
||||
<string name="Curves">Kurba</string>
|
||||
<string name="CurvesAll">Krejt</string>
|
||||
<string name="CurvesRed">E kuqe</string>
|
||||
<string name="CurvesGreen">E gjelbër</string>
|
||||
<string name="CurvesBlue">Blu</string>
|
||||
<string name="Blur">Turbullim</string>
|
||||
<string name="BlurOff">Off</string>
|
||||
<string name="BlurLinear">Lineare</string>
|
||||
<string name="BlurRadial">Radiale</string>
|
||||
<string name="DiscardChanges">Të hidhen tej ndryshimet?</string>
|
||||
<string name="ClearButton">Pastroje</string>
|
||||
<string name="PickerPhotos">Foto</string>
|
||||
<string name="PickerVideo">Video</string>
|
||||
<!--privacy settings-->
|
||||
<string name="PrivacySettings">Privatësi dhe siguri</string>
|
||||
<string name="SecurityTitle">Siguri</string>
|
||||
<!--edit video view-->
|
||||
<string name="SendVideo">Dërgoni Video</string>
|
||||
<!--button titles-->
|
||||
<string name="Done">U bë</string>
|
||||
<string name="Open">Hape</string>
|
||||
<string name="Cancel">Anuloje</string>
|
||||
<string name="Edit">Përpunoni</string>
|
||||
<string name="Send">Dërgoje</string>
|
||||
<string name="CopyToClipboard">Kopjoje në të papastër</string>
|
||||
<string name="Delete">Fshije</string>
|
||||
<string name="Forward">Përcille</string>
|
||||
<string name="FromCamera">Prej kamerës</string>
|
||||
<string name="FromGalley">Prej \"Galerie\"</string>
|
||||
<string name="Set">Vëre</string>
|
||||
<string name="OK">OK</string>
|
||||
<string name="Crop">Qethe</string>
|
||||
<!--messages-->
|
||||
<string name="AttachPhoto">Foto</string>
|
||||
<string name="AttachVideo">Video</string>
|
||||
<string name="AttachGif">GIF</string>
|
||||
<string name="AttachContact">Kontakt</string>
|
||||
<string name="AttachDocument">Kartelë</string>
|
||||
<string name="AttachVoiceMessage">Mesazh zanor</string>
|
||||
<string name="FromSelf">Unë</string>
|
||||
<!--Alert messages-->
|
||||
<string name="NoHandleAppInstalled">Asnjë aplikacion nga të instaluarit s\’e hap dot llojin \'%1$s\' e kartelave, ju lutemi, që të vazhdohet, instaloni një të tillë.</string>
|
||||
<string name="ContactAlreadyInGroup">Kontakti gjendet tashmë në këtë grup.</string>
|
||||
<string name="ForwardMessagesTo">Përcillja mesazhet e përzgjedhur <![CDATA[<b>]]>%1$s<![CDATA[</b>]]>?</string>
|
||||
<string name="SendMessagesTo">Të dërgohen mesazhet te <![CDATA[<b>]]>%1$s<![CDATA[</b>]]>?</string>
|
||||
<string name="AreYouSureDeleteThisChat">Të fshihet kjo bisedë? S\’do të shfaqet më te lista e bisedave, mesazhet e saj do të mbeten në shërbyes.</string>
|
||||
<string name="AreYouSureBlockContact">Jeni i sigurt se doni ta bllokoni këtë kontakt?</string>
|
||||
<string name="AreYouSureDeleteContact">Jeni i sigurt se doni ta fshini këtë kontakt?</string>
|
||||
<!--permissions-->
|
||||
<string name="PermissionContacts">Për t\’ju lidhur me shokët tuaj nga cilado pajisje juaja, lypset hyrje te kontaktet.</string>
|
||||
<string name="PermissionStorage">Për dërgim dhe ruajte fotosh, videosh, muzike dhe media të tjera, lypset hyrje te depozita.</string>
|
||||
<string name="PermissionNoAudio">Për dërgim mesazhesh zanorë, lypset hyrje te mikrofoni.</string>
|
||||
<string name="PermissionOpenSettings">Rregullime</string>
|
||||
<!--Intro view-->
|
||||
<string name="Intro1Headline">Delta Chat</string>
|
||||
<string name="Intro1Message">Programi i shkëmbimit të mesazheve me <![CDATA[<b>publikun më të gjerë</b>]]> në botë.<![CDATA[<br/><b>I lirë</b>]]> dhe <![CDATA[<b>i pavarur</b>]]>.</string>
|
||||
|
||||
<string name="Intro2Headline">I pavarur</string>
|
||||
<string name="Intro2Message"><![CDATA[<b>I pavarur</b>]]> nga kompjutera apo shërbime të huaja. Aplikacioni përdor vetëm shërbyesin tuaj të email-eve.</string>
|
||||
|
||||
<string name="Intro3Headline">I shpejtë</string>
|
||||
<string name="Intro3Message"><![CDATA[<b>Dërgim mesazhesh</b>]]> brenda pak sekondash.<![CDATA[<br/>]]>Ndërfaqe e shpejtë.</string>
|
||||
|
||||
<string name="Intro4Headline">I fuqishëm</string>
|
||||
<string name="Intro4Message">Biseda, figura, video, mesazhe audio, etj <![CDATA[<b>Pa kufi</b>]]>. I aftë për funksionim në shumë klientë njëherësh.</string>
|
||||
|
||||
<string name="Intro5Headline">I lirë</string>
|
||||
<string name="Intro5Message"><![CDATA[<b>Delta Chat</b>]]> është i lirë, përgjithmonë.<![CDATA[<br/>]]>Me burim të hapët. Pa reklama. Pa pajtime. Pa kyçje brenda një platforme nga tregtues.</string>
|
||||
|
||||
<string name="Intro6Headline">I fshehtëzuar</string>
|
||||
<string name="Intro6Message"><![CDATA[<b>I fshehtëzuar</b>]]> me krejt algoritmet e zakonshëm. Mesazhet mbeten në shërbyesit tuaj.</string>
|
||||
|
||||
<string name="Intro7Headline">I besueshëm</string>
|
||||
|
||||
<string name="IntroStartMessaging">Filloni të Shkëmbeni Mesazhe</string>
|
||||
<!--plural-->
|
||||
<plurals name="Members">
|
||||
<item quantity="one">%d anëtar</item>
|
||||
<item quantity="other">%d anëtarë</item>
|
||||
</plurals>
|
||||
<plurals name="Contacts">
|
||||
<item quantity="one">%d kontakte</item>
|
||||
<item quantity="other">%d kontakte</item>
|
||||
</plurals>
|
||||
<plurals name="MeAndMembers">
|
||||
<item quantity="one">%d anëtar dhe unë</item>
|
||||
<item quantity="other">%d anëtarë dhe unë</item>
|
||||
</plurals>
|
||||
<plurals name="NewMessages">
|
||||
<item quantity="one">%d mesazh i ri</item>
|
||||
<item quantity="other">%d mesazhe të rinj</item>
|
||||
</plurals>
|
||||
<plurals name="messages">
|
||||
<item quantity="one">%d mesazh</item>
|
||||
<item quantity="other">%d mesazhe</item>
|
||||
</plurals>
|
||||
<plurals name="AreYouSureDeleteMessages">
|
||||
<item quantity="one">Të fshihen %d mesazh? Do të fshihet edhe nga shërbyesi.</item>
|
||||
<item quantity="other">Të fshihen %d mesazhe? Këta do të fshihen edhe nga shërbyesi.</item>
|
||||
</plurals>
|
||||
<!-- Translators: The first string placeholder gets replaced with the
|
||||
text "%d new messages", so the complete sentence would be e.g.
|
||||
"4 new messages in 2 chats". -->
|
||||
<plurals name="NewMessagesInChats">
|
||||
<item quantity="one">%1$s në %2$d fjalosje</item>
|
||||
<item quantity="other">%1$s në %2$d biseda</item>
|
||||
</plurals>
|
||||
<plurals name="Chats">
|
||||
<item quantity="one">%d fjalosje</item>
|
||||
<item quantity="other">%d biseda</item>
|
||||
</plurals>
|
||||
<plurals name="Minutes">
|
||||
<item quantity="one">%d minutë</item>
|
||||
<item quantity="other">%d minuta</item>
|
||||
</plurals>
|
||||
<plurals name="Hours">
|
||||
<item quantity="one">%d orë</item>
|
||||
<item quantity="other">%d orë</item>
|
||||
</plurals>
|
||||
<plurals name="Days">
|
||||
<item quantity="one">%d ditë</item>
|
||||
<item quantity="other">%d ditë</item>
|
||||
</plurals>
|
||||
<plurals name="Weeks">
|
||||
<item quantity="one">%d javë</item>
|
||||
<item quantity="other">%d javë</item>
|
||||
</plurals>
|
||||
<plurals name="Months">
|
||||
<item quantity="one">%d muaj</item>
|
||||
<item quantity="other">%d muaj</item>
|
||||
</plurals>
|
||||
<!-- Translators: The second string placeholder gets replaced with the
|
||||
text "%d minutes", so the complete sentence would be e.g.
|
||||
"At most 8 notifications within 3 minutes". -->
|
||||
<plurals name="MaxNotifications">
|
||||
<item quantity="one">E shumta %1$d njoftime brenda %2$s</item>
|
||||
<item quantity="other">E shumta %1$d njoftime brenda %2$s</item>
|
||||
</plurals>
|
||||
<!--date formatters-->
|
||||
<string name="formatterMonthYear">MMMM yyyy</string>
|
||||
<string name="formatterMonth">dd MMM</string>
|
||||
<string name="formatterYear">dd.MM.yyyy</string>
|
||||
<string name="chatDate">EEE, d MMMM</string>
|
||||
<string name="chatFullDate">EEE, d MMMM, yyyy</string>
|
||||
<string name="formatterWeek">EEE</string>
|
||||
<string name="formatterDay24H">HH:mm</string>
|
||||
<string name="formatterDay12H">h:mm a</string>
|
||||
<string name="formatDateAtTime">%1$s në %2$s</string>
|
||||
<string name="AccountSettings">Rregullime llogarie</string>
|
||||
<string name="MyAccount">Llogaria ime</string>
|
||||
<string name="MyName">Emri im</string>
|
||||
<string name="MyNameExplain">Emri juaj, siç u shfaqet marrësve. Në u lëntë i zbrazët, do të dërgohet vetëm adresa juaj email.</string>
|
||||
<string name="Password">Fjalëkalim</string>
|
||||
<string name="SmtpPassword">Fjalëkalim SMTP</string>
|
||||
<string name="FromAbove">Nga sipër</string>
|
||||
<string name="SmtpLoginname">Emër hyrjeje për SMTP</string>
|
||||
<string name="SmtpPort">Portë SMTP</string>
|
||||
<string name="Automatic">Automatike</string>
|
||||
<string name="ImapServer">Shërbyes IMAP</string>
|
||||
<string name="ImapLoginname">Emër hyrjeje për IMAP</string>
|
||||
<string name="SmtpServer">Shërbyes SMTP</string>
|
||||
<string name="ImapPort">Portë IMAP</string>
|
||||
<string name="InboxHeadline">Të marrë</string>
|
||||
<string name="OutboxHeadline">Të dërguar</string>
|
||||
<string name="MyAccountExplain">Për furnizues të njohur shërbimesh email, rregullimet shtesë përcaktohen vetvetiu.</string>
|
||||
<string name="MyAccountExplain2" >Ndonjëherë, <![CDATA[<b>]]>IMAP lypset të aktivizohet<![CDATA[</b>]]> te pjesa e dukshme e sistemit email web.\n\nNëse hasni probleme, këshillohuni me furnizuesin e email-it ose me shokë tuajt.</string>
|
||||
<string name="AccountNotConfigured">Llogari e paformësuar</string>
|
||||
<string name="AboutThisProgram">Mbi Delta Chat-in</string>
|
||||
<string name="NotSet">E papërcaktuar</string>
|
||||
<string name="NewChat">Bisedë e re</string>
|
||||
<string name="Deaddrop">Kërkesa kontakti</string>
|
||||
<string name="DeaddropInChatlist">Shfaq te listë bisedash kërkesa kontakti</string>
|
||||
<string name="MuteAlways">Përherë pa zë</string>
|
||||
<string name="AskStartChatWith">Bisedoni me <![CDATA[<b>]]>%1$s<![CDATA[</b>]]>?</string>
|
||||
<string name="DeaddropHint">Prekni shigjetat përgjigje që të nisni të bisedoni.</string>
|
||||
<string name="NotYetImplemented">Ky funksion s’është i passhëm ose është jo i plotë</string>
|
||||
<string name="DefaultStatusText">Dërguar me Delta Chat Messenger-in tim: https://delta.chat</string>
|
||||
<string name="Name" >Emër</string>
|
||||
<string name="EmailAddress">Adresë email</string>
|
||||
<string name="CannotDeleteContact">S’fshihen dot kontaktet në përdorim, në vend të kësaj bëni bllokim kontakti.</string>
|
||||
<string name="BadEmailAddress">Adresë email e gabuar</string>
|
||||
<string name="ContactCreated">Kontakti u krijua</string>
|
||||
<string name="ViewProfile">Shihni profilin</string>
|
||||
<!-- Translators: please use a very short string here, it should not much longer than
|
||||
the string needed for video time+size (0:00, 12,3 Mib) -->
|
||||
<string name="OneMoment">Një sekondë …</string>
|
||||
<string name="NoChatsHelp">Nisni të shkëmbeni mesazhe duke shtypur butonin \"Bisedë e re\" poshtë djathtas, ose prekni butonin \"Menu\" për më tepër mundësi.</string>
|
||||
<string name="Intro7Message"><![CDATA[<b>Delta Chat</b>]]> është i parrezik për përdorim në biznes, i përputhshëm dhe i bazuar në standarde.</string>
|
||||
<string name="InviteMenuEntry">Dërgoni ftesa</string>
|
||||
<string name="InviteText">Po përdor Delta Chat-in - %1$s - mund të dërgoni mesazh te %2$s</string>
|
||||
<string name="AdvancedSettings">Rregullime të mëtejshme</string>
|
||||
<string name="AskResetNotifications">Të kthehen te parazgjedhjet krejt rregullimet mbi njoftime dhe tinguj për faqen e tanishme, kontaktet dhe grupet?</string>
|
||||
<string name="AttachFiles">Bashkëngjitni kartela</string>
|
||||
<string name="ErrGroupNameEmpty">Ju lutemi, jepni një emër për grupin.</string>
|
||||
<string name="MsgNewGroupDraftHint">Hartoni mesazhin e parë, duke u lejuar të tjerëve të përgjigjen brenda këtij grupi.\n\n• S\’ka problem që Delta Chat-in s\’e përdorin tërë anëtarët.\n\n• Dërgimi i mesazhit të parë mund të dojë pak kohë.</string>
|
||||
<string name="MsgNewGroupDraft">Tungjatjeta, sapo krijova grupin \"%1$s\" për ne.</string>
|
||||
<string name="MsgGroupNameChanged">Emri i grupit u ndryshua nga \"%1$s\" në \"%2$s\".</string>
|
||||
<string name="MsgGroupImageChanged">Figura e grupit u ndryshua.</string>
|
||||
<string name="MsgMemberAddedToGroup">U shtua anëtari %1$s.</string>
|
||||
<string name="MsgMemberRemovedFromToGroup">U hoq anëtari %1$s.</string>
|
||||
<string name="AskAddMemberToGroup">Të shtohet <![CDATA[<b>]]>%1$s<![CDATA[</b>]]> te grupi?</string>
|
||||
<string name="AskRemoveMemberFromGroup">Të hiqet <![CDATA[<b>]]>%1$s<![CDATA[</b>]]> nga grupi?</string>
|
||||
<string name="ErrSelfNotInGroup">Që të kryeni këtë veprim, duhet të jeni një anëtar i grupit.</string>
|
||||
<string name="MsgGroupLeft">Grupi u la.</string>
|
||||
<string name="NoMessagesHint">Dërgoje mesazhin te <![CDATA[<b>]]>%1$s<![CDATA[</b>]]>:\n\n• S\’ka problem nëse <![CDATA[<b>]]>%2$s<![CDATA[</b>]]> nuk përdor Delta Chat-in.\n\n• Dërgimi i mesazhit të parë mund të dojë pak kohë.</string>
|
||||
<string name="SendNRcvReadReceipts">Merrni dhe dërgoni fatura kthimesh</string>
|
||||
<string name="PreferE2EEncryption">Parapëlqe fshehtëzim skaj-më-skaj</string>
|
||||
<string name="E2EManagePrivateKeys">Administroni kyçe privatë</string>
|
||||
<string name="E2ECompareKeys">Krahasoni kyçe</string>
|
||||
<string name="ForwardToTitle">Përcilleni për …</string>
|
||||
<string name="SelectContact">Zgjidhni një kontakt</string>
|
||||
<string name="DoneHint">U bë.</string>
|
||||
<string name="FileNotFound">S’u gjet dot %1$s.</string>
|
||||
<string name="Error">Gabim: %1$s</string>
|
||||
<string name="NoNetwork">Rrjet i pakapshëm.</string>
|
||||
<string name="Audio">Audio</string>
|
||||
<string name="PleaseCutVideoToMaxSize">Ju lutemi, shkurtojeni videon në një madhësi më të vogël se %1$s.</string>
|
||||
<string name="PermNotificationTitle">I lidhur te %1$s</string>
|
||||
<string name="PermNotificationText">Po pritet për mesazhe…</string>
|
||||
<string name="SettingsFor">Rregullime për %1$s</string>
|
||||
<string name="AutoplayGifs">Vetëluaji GIF-et</string>
|
||||
<string name="HelpUrl">https://delta.chat/sq/help</string>
|
||||
<string name="EncryptedMessage">Mesazh i fshehtëzuar</string>
|
||||
<string name="Encryption">Fshehtëzim</string>
|
||||
<string name="EncrinfoE2EAvailable">Është i mundshëm fshehtëzim skaj-më-skaj.</string>
|
||||
<string name="EncrinfoTransport">Fshehtëzim transporti të paktën deri te shërbyesi im.</string>
|
||||
<string name="EncrinfoNone">Pa fshehtëzim te shërbyesi im.</string>
|
||||
<string name="EncrinfoFingerprints">Shenja gishtash</string>
|
||||
<string name="Backup">Kopjeruajtje</string>
|
||||
<string name="ImportBackupExplain2">Që të importohet një kopjeruajtje, kopjojeni kopjeruajtjen te <![CDATA[<i>]]>%1$s<![CDATA[</i>]]> dhe ri-instaloni aplikacionin.</string>
|
||||
<string name="ReadReceiptMailBody">Kjo është një faturë kthimi për mesazhin \"%1$s\".\n\nKjo faturë kthimi dëshmon vetëm se mesazhi u shfaq te pajisja e marrësit. S\’ka garanci që marrësi ta ketë lexuar lëndën e mesazhit.</string>
|
||||
<string name="ReadReceipt">Faturë kthimi</string>
|
||||
<string name="NameAndStatus">Emër dhe gjendje</string>
|
||||
<string name="MyStatus">Gjendja ime</string>
|
||||
<string name="MyStatusExplain">Veç vendesh të tjera, gjendja tregohet edhe te fundi i email-eve.</string>
|
||||
<string name="MsgGroupImageDeleted">Figura e grupit u fshi.</string>
|
||||
<string name="AskDeleteGroupImage">Jeni i sigurt se doni të fshihet figura e grupit?\n\nKjo do të prekë krejt pajisjet e krejt anëtarëve të grupit.</string>
|
||||
<string name="ExportImportHeader">Eksportim dhe importim</string>
|
||||
<string name="ImportExportExplain">Kartelat e eksportuara do të përmbajnë kyçe private! Mbajini në një vend të parrezik, ose fshijini sa më shpejt të jetë e mundur.</string>
|
||||
<string name="EnterPasswordToContinue">Që të vazhdohet, jepni fjalëkalimin për %1$s:</string>
|
||||
<string name="IncorrectPassword">Fjalëkalim i pasaktë.</string>
|
||||
<string name="ImportBackupAsk">U gjet kopjeruajtje te <![CDATA[<i>]]>%1$s<![CDATA[</i>]]>.\n\nDoni të importohet dhe të përdoren krejt të dhënat dhe rregullimet prej saj?</string>
|
||||
<string name="ImportBackup">Importoje kopjeruajtjen</string>
|
||||
<string name="NoBackupFound">S\’u gjetën kopjeruajtje.\n\nKopjojeni kopjeruajtjen te <![CDATA[<i>]]>%1$s<![CDATA[</i>]]> dhe riprovoni. Ose, shtypni \"Nisni të shkëmbeni mesazhe\" që të ecni sipas procesit normal të rregullimit.</string>
|
||||
<string name="FilesSuccessfullyExported">Kartelat u eksportuan te <![CDATA[<i>]]>%1$s<![CDATA[</i>]]>.</string>
|
||||
<string name="ExportBackup">Eksporto kopjeruajtje</string>
|
||||
<string name="ExportPrivateKeys">Eksporto kyçe private</string>
|
||||
<string name="ImportPrivateKeys">Importo kyçe private</string>
|
||||
<string name="ImportPrivateKeysAsk2">Të importohen kyçe privatë prej <![CDATA[<i>]]>%1$s<![CDATA[</i>]]>?\n\n• Kyçet private ekzistuese nuk do të fshihen\n\n• Si kyç i ri parazgjedhje do të përdoret kyçi i fundit i importuar</string>
|
||||
<string name="NoRecentEmoji">Këtu do të shfaqen emoji-t e përdorur së fundi.</string>
|
||||
<string name="NotNow">Jo tani</string>
|
||||
<string name="ArchiveChat">Arkivoje bisedën</string>
|
||||
<string name="UnarchiveChat">Çarkivoje bisedën</string>
|
||||
<string name="ArchivedChats">Biseda të arkivuara</string>
|
||||
<string name="Archived">E arkivuar</string>
|
||||
<string name="LeaveGroup">Braktiseni grupin</string>
|
||||
<string name="AskLeaveGroup">Jeni i sigurt se doni ta braktisni grupin?</string>
|
||||
<string name="Never">Kurrë</string>
|
||||
<string name="AutocryptKeyTransferInitiate">Përgatit Transferim Kyçi Autocrypt</string>
|
||||
<string name="AutocryptKeyTransfer">Transferim Kyçi Autocrypt</string>
|
||||
<string name="AutocryptKeyTransferMsgBeforeSend"><![CDATA[<i>]]>Transferimi i Kyçit Autocrypt<![CDATA[</i>]]> lyp që klienti i postës në pajisjen tjetër të mund të përdorë protokolle Autocrypt.\n\nMandej mund t’i dërgoni vetes kyçin tuaj të fshehtë. Kyçi do të fshehtëzohet me një kod rregullimi që shfaqet këtu dhe duhet të shtypet te pajisja tjetër.</string>
|
||||
<string name="AutocryptKeyTransferMsgAfterSend">Kyçi juaj u dërgua te ju. Kaloni te pajisja tjetër dhe hapni mesazhin e rregullimit. Do t’ju kërkohet një kod rregullimi. Shtypni këto shifra:\n\n%1$s\n\nPasi të keni mbaruar, pajisja tjetër e juaja do të jetë gati të përdorë Autocrypt-in.</string>
|
||||
<string name="AutocryptSetupMessageSubject">Mesazh Rregullimi Autocrypt</string>
|
||||
<string name="AutocryptSetupMessageGeneralBody">Ky është Mesazhi i Rregullimit të Autocrypt-it i përdorur për të transferuar kyçin tuaj nga një klient në tjetrin.\n\nQë të shfshehtëzoni dhe përdorni kyçin tuaj, hapeni mesazhin në një klient të aftë për Autocrypt dhe jepni kodin e rregullimit të shfaqur te pajisja që e prodhoi.</string>
|
||||
<string name="AutocryptSetupMessageTapBody">Ky është Mesazhi i Rregullimit të Autocrypt-it i përdorur për të transferuar kyçin tuaj nga një klient në tjetrin.\n\nQë të shfshehtëzoni dhe përdorni kyçin tuaj, prekeni këtë mesazh.</string>
|
||||
<string name="AutocryptKeyTransferPleaseEnterCode">Ju lutemi, jepni kodin e rregullimit që është shfaqur te pajisja tjetër.</string>
|
||||
<string name="AutocryptKeyTransferBadCode">Kod rregullimi i gabuar. Ju lutemi, riprovoni.\n\nNëse s’e mbani mend kodin e rregullimit, thjesht rinisni transferimin e kyçit që nga pajisja tjetër.</string>
|
||||
<string name="AutocryptKeyTransferSucceeded">Kyçi u transferua me sukses. Tani kjo pajisje është gati të përdorë Autocrypt-in me të njëjtin kyç si pajisja tjetër.</string>
|
||||
<string name="Retry">Riprovo</string>
|
||||
<string name="SelfTalkSubtitle">Mesazhe që i kam dërguar vetes</string>
|
||||
<string name="QrScan">Skanoni kod QR</string>
|
||||
<string name="QrShow">Shfaq kod QR</string>
|
||||
<string name="QrScanContainsText">Kodi QR i skanuar përmban tekstin vijues:\n\n%1$s</string>
|
||||
<string name="QrScanContainsUrl">Kodi QR i skanuar përmban URL-në vijuese:\n\n%1$s</string>
|
||||
<string name="OobFingerprint">Shenja gishtash</string>
|
||||
<string name="OobFingerprintAskOob">Verifikoni kontaktin dhe filloni të bisedoni me <![CDATA[<b>]]>%1$s<![CDATA[</b>]]>?</string>
|
||||
<string name="OobFingerprintOk">Kontakti <![CDATA[<i>]]>%1$s<![CDATA[</i>]]> u verifikua. Të fillohet bisedë?</string>
|
||||
<string name="OobFingerprintMismatch">Shenjat e gishtave të skanuara <![CDATA[<b>]]>nuk përputhen<![CDATA[</b>]]> me shenjat e gishtave parë së fundi për <![CDATA[<i>]]>%1$s<![CDATA[</i>]]>.</string>
|
||||
<string name="OobFingerprintWithoutAddr">Ky kod QR përmban shenja gishtash, por jo adresë email.\n\nPër një verifikim out-of-band-verification, ju lutemi, së pari vendosni një lidhje të fshehtëzuar.</string>
|
||||
<string name="OobSecureJoinRequested">%1$s vjen.</string>
|
||||
<string name="CannotDecryptBody">Ky mesazh s\'mund të fshehtëzohet.\n\n• Mundet të bëjë punë thjesht t\’i përgjigjeni këtij mesazhi dhe t\’i kërkonit dërguesit t\’jua ridërgojë mesazhin.\n\n• Në rast se e ri-instaluat Delta Chat-in ose tjetër program email-esh në këtë ose në një tjetër pajisje, mund të donit të dërgonit një Mesazh Rregullimi Autocrypt-i që këtej.</string>
|
||||
<string name="Autocrypt">Autocrypt</string>
|
||||
<string name="AutocryptExplain"><![CDATA[<i>]]>Autocrypt<![CDATA[</i>]]> është një protokoll i ri dhe i hapur që fshehtëzim skaj-më-skaj email-esh.\n\nRregullimi juaj për këtë krijohet vetvetiu kur duhet dhe mund ta shpërngulni mes pajisjesh përmes <![CDATA[<i>]]>Mesazhesh Rregullimi Autocrypt-i.<![CDATA[</i>]]></string>
|
||||
<string name="NewVerifiedGroup">Grup i ri i verifikuar</string>
|
||||
<string name="SharedChats">Fjalosje të ndara me të tjerët</string>
|
||||
<string name="VerifiedContact">Kontakt i verifikuar</string>
|
||||
<string name="Contact">Kontakt</string>
|
||||
<string name="VerifiedGroup">Grup i verifikuar</string>
|
||||
<string name="Group">Grup</string>
|
||||
<string name="EditedNameWillBeShared">Emri i përpunuar do të ndahet me krejt anëtarët e grupit.</string>
|
||||
<string name="QrShowInviteCode">Shfaq kod QR ftese</string>
|
||||
<string name="E2EEncryptionPreferred">Parapëlqehet fshehtëzim skaj-më-skaj.</string>
|
||||
<string name="OobAddrVerified">%1$s u verifikua.</string>
|
||||
<string name="OobAddrVerifiedIntroduceMyself">%1$s u verifikua, prezantomë …</string>
|
||||
<string name="OobAskJoinVerifiedGroup">Doni të bëheni pjesë e grupit të verifikuar <![CDATA[<b>]]>%1$s<![CDATA[</b>]]>?</string>
|
||||
<!-- Translators: %1$s is replaced by an action, eg. MsgMemberAddedToGroup, MsgMemberRemovedFromToGroup, MsgGroupNameChanged or MsgGroupImageChanged. If the action ends with a full stop, this is removed.
|
||||
%2$s is replaced by a the name of the user that made this action.
|
||||
Resulting strings might be "Member Alice added by Bob." or 'Group name changed from "Foo" to "Bar" by Claire.
|
||||
If you do not find a correct grammar for your language you can just use "%1$s (by %2$s)" or "%2$s: %1$s" -->
|
||||
<string name="ActionByUser">%1$s nga %2$s.</string>
|
||||
<!-- Translators: %1$s is replaced by an action, eg. MsgMemberAddedToGroup, MsgMemberRemovedFromToGroup, MsgGroupNameChanged or MsgGroupImageChanged. If the action ends with a full stop, this is removed.
|
||||
Resulting strings might be "Member Alice added by me." or 'Group name changed from "Foo" to "Bar" by me.
|
||||
If you do not find a correct grammar for your language you can just use "%1$s (by me)" or "Me: %1$s" -->
|
||||
<string name="ActionBySelf">%1$s nga unë.</string>
|
||||
</resources>
|
||||
@@ -10,7 +10,7 @@
|
||||
<string name="NoResult">எந்த முடிவுகளும் இல்லை </string>
|
||||
<string name="NoChats">இதுவரையில் எந்த அரட்டைகளும் இல்லை </string>
|
||||
<string name="DeleteChat">அரட்டையை நீக்கு </string>
|
||||
<string name="SelectChat">அரட்டையை தேர்வு செய்க </string>
|
||||
<string name="SelectChat">அரட்டையை தேர்வு செய்க ...</string>
|
||||
<string name="Search">தேடு </string>
|
||||
<string name="MuteNotifications">அறிவிப்புகளை ஊமையாக்கு </string>
|
||||
<string name="MuteFor">%1$sஇதற்காக ஊமையாக்கு </string>
|
||||
@@ -42,8 +42,8 @@
|
||||
<string name="NoRecent">சமீபமாக ஏதுமில்லை </string>
|
||||
<string name="TypeMessage">சேதி </string>
|
||||
<string name="SlideToCancel">ரத்து செய்ய திரையில் சறுக்கவும் </string>
|
||||
<string name="SaveToDownloads">பதிவிறக்கத்தில் சேமி</string>
|
||||
<string name="SaveToMusic">இசையில் சேமிக்கவும் </string>
|
||||
<string name="SaveToDownloads">\"பதிவிறக்கத்தில்\" சேமி</string>
|
||||
<string name="SaveToMusic">\"இசையில்\" சேமிக்கவும் </string>
|
||||
<string name="Share">பகிர் </string>
|
||||
<string name="SendItems">%1$sஅனுப்பவும் </string>
|
||||
<string name="ClearRecentEmoji">சமீபத்தைய emoji களை நீக்கவும் </string>
|
||||
@@ -103,9 +103,241 @@
|
||||
<string name="SmartNotifications">அறிவிப்புகளை கட்டுப்படுத்து </string>
|
||||
<string name="SmartNotificationsSoundAtMost">அதிகத்தில் ஒலிக்கவும் </string>
|
||||
<string name="SmartNotificationsTimes">வேளைகள் </string>
|
||||
<string name="SmartNotificationsWithin">இதற்குள்</string>
|
||||
<string name="SmartNotificationsMinutes">நிமிடங்கள்</string>
|
||||
<string name="DirectShare">நேரடியான பகிர்வு </string>
|
||||
<string name="DirectShareInfo">சமீபத்திய அரட்டைகளை பகிர் பட்டியலில் காட்டுக </string>
|
||||
<!--cache view-->
|
||||
<string name="CacheSettings">சேமிப்பகம் </string>
|
||||
<string name="KeepMedia">ஊடகத்தை தக்க வைக்கவும் </string>
|
||||
<string name="KeepMediaForever">என்றென்றைக்கும் </string>
|
||||
<!--passcode view-->
|
||||
<string name="Passcode">கடவு குறியீடு மூலம் பூட்டு </string>
|
||||
<string name="ChangePasscode">கடவு குறியீட்டை மாற்றவும் </string>
|
||||
<string name="PasscodePIN">தனிப்பட்ட அடையாள எண் (PIN)</string>
|
||||
<string name="PasscodePassword">கடவுச்சொல் </string>
|
||||
<string name="EnterCurrentPasscode">தற்போதைய கடவு குறியீட்டை உள்ளீடவும் </string>
|
||||
<string name="EnterNewFirstPasscode">கடவு குறியீடை உள்ளிடவும் </string>
|
||||
<string name="EnterNewPasscode">உங்களது புதிய கடவு குறியீட்டை உள்ளீடவும் </string>
|
||||
<string name="EnterYourPasscode">கடவு குறியீடை உள்ளீடவும் </string>
|
||||
<string name="ReEnterYourPasscode">மீண்டும் கடவு குறியீடை உள்ளீடவும் </string>
|
||||
<string name="PasscodeDoNotMatch">கடவு குறியீடுகள் வேறு வேறாக உள்ளது </string>
|
||||
<string name="AutoLock">தானியங்கி பூட்டு </string>
|
||||
<string name="UnlockFingerprint">கைரேகையை கொண்டு திறக்கவும் </string>
|
||||
<string name="FingerprintInfo">மீண்டும் தொடர்வதற்கு உங்களின் கைரேகையை உறுதி செய்யவும் </string>
|
||||
<string name="FingerprintNotRecognized">கைரேகையை ஏற்க முடியவில்லை மீண்டும் முயற்சி செய்யவும் </string>
|
||||
<!--photo gallery view-->
|
||||
<string name="SaveToGallery">காட்சியகத்தில் (Gallery) சேமிக்கவும் </string>
|
||||
<string name="Gallery">காட்சி கூடம் </string>
|
||||
<string name="AllPhotos">எல்லா படங்களும் </string>
|
||||
<string name="AllVideo">எல்லா காணொளிகளும் </string>
|
||||
<string name="NoPhotos">எந்த படங்களும் இல்லை </string>
|
||||
<string name="NoVideo">எந்த காணொளியும் இல்லை </string>
|
||||
<string name="CropImage">படத்தை தேவைக்கேற்றபடி நறுக்கு (Crop)</string>
|
||||
<string name="EditImage">படத்தை திருத்தவும் </string>
|
||||
<string name="Enhance">மேம்படுத்து </string>
|
||||
<string name="Exposure">வெளிப்பாடு </string>
|
||||
<string name="Warmth">வெப்பநிலை </string>
|
||||
<string name="Saturation">செறிவூட்டல்</string>
|
||||
<string name="Vignette">விக்னெட்டி</string>
|
||||
<string name="Shadows">நிழல்கள்</string>
|
||||
<string name="Grain">தானிய விளைவு</string>
|
||||
<string name="Sharpen">கூர்மையாக்கு</string>
|
||||
<string name="Fade">மங்கலாக்குதல்</string>
|
||||
<string name="Tint">நிறமேற்றம்</string>
|
||||
<string name="TintShadows">நிழல்கள்</string>
|
||||
<string name="TintHighlights">வெளிப்பாடு </string>
|
||||
<string name="Curves">வளைவுகள் </string>
|
||||
<string name="CurvesAll">எல்லாம் </string>
|
||||
<string name="CurvesRed">சிகப்பு</string>
|
||||
<string name="CurvesGreen">பச்சை</string>
|
||||
<string name="CurvesBlue">நீலம்</string>
|
||||
<string name="Blur">மங்கலாக்கு</string>
|
||||
<string name="BlurOff">நிறுத்தவும்</string>
|
||||
<string name="BlurLinear">நேரியல்</string>
|
||||
<string name="BlurRadial">ஆரத்திசையில்</string>
|
||||
<string name="DiscardChanges">மாற்றங்களை நீக்கவா ?</string>
|
||||
<string name="ClearButton">அழிக்கவும் </string>
|
||||
<string name="PickerPhotos">புகைப்படங்கள் </string>
|
||||
<string name="PickerVideo">காணொளி </string>
|
||||
<!--privacy settings-->
|
||||
<string name="PrivacySettings">அந்தரங்கம் மற்றும் பாதுகாப்பு </string>
|
||||
<string name="SecurityTitle">பாதுகாப்பு</string>
|
||||
<!--edit video view-->
|
||||
<string name="SendVideo">காணொளியை அனுப்பு </string>
|
||||
<!--button titles-->
|
||||
<string name="Done">முடிந்தது </string>
|
||||
<string name="Open">திற </string>
|
||||
<string name="Cancel">ரத்து செய் </string>
|
||||
<string name="Edit">திருத்து </string>
|
||||
<string name="Send">அனுப்பு </string>
|
||||
<string name="CopyToClipboard">பிடிப்பு பலகை </string>
|
||||
<string name="Delete">நீக்கவும் </string>
|
||||
<string name="Forward">முன்னோக்கு </string>
|
||||
<string name="FromCamera">புகைப்பட கருவியில் இருந்து </string>
|
||||
<string name="FromGalley">காட்சியகத்தில் இருந்து </string>
|
||||
<string name="Set">அமை </string>
|
||||
<string name="OK">சரி </string>
|
||||
<string name="Crop">நறுக்கு </string>
|
||||
<!--messages-->
|
||||
<string name="AttachPhoto">புகைப்படம் </string>
|
||||
<string name="AttachVideo">காணொளி </string>
|
||||
<string name="AttachGif">GIF </string>
|
||||
<string name="AttachContact">தொடர்பு</string>
|
||||
<string name="AttachDocument">கோப்பு </string>
|
||||
<string name="AttachVoiceMessage">குரல் செய்தி </string>
|
||||
<string name="FromSelf">நான் </string>
|
||||
<!--Alert messages-->
|
||||
<string name="NoHandleAppInstalled">இந்த வகையான ஆவணத்தை திறக்க எந்த செயலியும் உங்கள் சாதனத்தில் நிறுவப்படவில்லை \'%1$s\', இந்த ஆவணத்தை திறக்கக்கூடிய ஏதேனும் ஒரு செயலியை நிறுவவும் </string>
|
||||
<string name="ContactAlreadyInGroup">இந்த தொடர்பு இந்த குழுவில் ஏற்கனவே உள்ளது </string>
|
||||
<string name="ForwardMessagesTo">தேர்வு செய்யப்பட்ட செய்திகளை இவற்றுக்கு <![CDATA[]]>%1$s<![CDATA[]]> முன்னோக்கி அனுப்பவா ? </string>
|
||||
<string name="AreYouSureDeleteThisChat">இந்த அரட்டையை அழிக்கவா ? இதை இனிமேல் அரட்டை பட்டியலில் காணமுடியாது .
|
||||
அனால் இந்த அரட்டையின் செய்திகள் சேவக கணிப்பொறியில் இருக்கும் </string>
|
||||
<string name="AreYouSureBlockContact">இந்த தொடர்பை முடக்கவா ?</string>
|
||||
<string name="AreYouSureDeleteContact">இந்த தொடர்பை நீக்கவா ?</string>
|
||||
<string name="PermissionStorage">புகைப்படங்கள், காணொளிகள், இசை கோப்புகள் மற்றும் ஏனைய கோப்புகளை அனுப்பவும் , சேமிக்கவும் நினைவக அணுகல் தேவைப்படுகிறது </string>
|
||||
<string name="PermissionNoAudio">குரல் செய்திகளை அனுப்ப நுண் ஒலிப்பேசி அணுகல் தேவைப்படுகிறது </string>
|
||||
<string name="PermissionOpenSettings">அமைப்புகள் </string>
|
||||
<!--Intro view-->
|
||||
<string name="Intro1Headline">டெல்டா அரட்டை </string>
|
||||
<string name="Intro2Headline">சுதந்திரமான </string>
|
||||
<string name="Intro3Headline">வேகமான </string>
|
||||
<string name="Intro4Headline">திறன்மிகு </string>
|
||||
<string name="Intro5Headline">இலவசம் </string>
|
||||
<string name="Intro6Headline">மறைகுறியீடாக்கப்பட்டது </string>
|
||||
<string name="Intro7Headline">நம்பத்தகுந்த </string>
|
||||
|
||||
<string name="IntroStartMessaging">செய்திகளை அனுப்ப தொடங்குங்கள் </string>
|
||||
<!--plural-->
|
||||
<plurals name="Members">
|
||||
<item quantity="one">%d </item>
|
||||
<item quantity="other"> %dஉறுப்பினர்கள் </item>
|
||||
</plurals>
|
||||
<plurals name="Contacts">
|
||||
<item quantity="one">%dதொடர்புகள் </item>
|
||||
<item quantity="other">%dதொடர்புகள் </item>
|
||||
</plurals>
|
||||
<plurals name="MeAndMembers">
|
||||
<item quantity="one">%dநானும் மற்றும் உறுப்பினர்களும் </item>
|
||||
<item quantity="other">%dநானும் மற்றும் உறுப்பினர்களும் </item>
|
||||
</plurals>
|
||||
<plurals name="NewMessages">
|
||||
<item quantity="one">%d புதிய செய்திகள் </item>
|
||||
<item quantity="other">%d புதிய செய்திகள் </item>
|
||||
</plurals>
|
||||
<plurals name="messages">
|
||||
<item quantity="one">%d செய்திகள் </item>
|
||||
<item quantity="other">%dசெய்திகள் </item>
|
||||
</plurals>
|
||||
<plurals name="Chats">
|
||||
<item quantity="one">%d அரட்டை</item>
|
||||
<item quantity="other">%dஅரட்டைகள் </item>
|
||||
</plurals>
|
||||
<plurals name="Minutes">
|
||||
<item quantity="one">%d நிமிடம் </item>
|
||||
<item quantity="other">%dநிமிடங்கள் </item>
|
||||
</plurals>
|
||||
<plurals name="Hours">
|
||||
<item quantity="one">%d மணி
|
||||
</item>
|
||||
<item quantity="other">%d மணிகள் </item>
|
||||
</plurals>
|
||||
<plurals name="Days">
|
||||
<item quantity="one">%d நாள் </item>
|
||||
<item quantity="other">%d நாட்கள் </item>
|
||||
</plurals>
|
||||
<plurals name="Weeks">
|
||||
<item quantity="one">%dவாரம் </item>
|
||||
<item quantity="other">%dவாரங்கள் </item>
|
||||
</plurals>
|
||||
<plurals name="Months">
|
||||
<item quantity="one">%dமாதம் </item>
|
||||
<item quantity="other">%dமாதங்கள் </item>
|
||||
</plurals>
|
||||
<!--date formatters-->
|
||||
<string name="formatterMonthYear">MMMM yyyy</string>
|
||||
<string name="formatterMonth">MMM dd</string>
|
||||
<string name="formatterYear">dd.MM.yyyy</string>
|
||||
<string name="chatDate">EEE, MMMM d</string>
|
||||
<string name="chatFullDate">EEE, MMMM d, yyyy</string>
|
||||
<string name="formatterWeek">EEE</string>
|
||||
<string name="formatterDay24H">HH:mm</string>
|
||||
<string name="formatterDay12H">h:mm a</string>
|
||||
<string name="AccountSettings">கணக்கு அமைப்புகள் </string>
|
||||
<string name="MyAccount">எனது அமைப்புகள் </string>
|
||||
<string name="MyName">எனது பெயர் </string>
|
||||
<string name="MyNameExplain">உங்கள் அனுப்புநர்களுக்கு காட்டப்படும் தங்களின் பெயர் , இதை வெற்றிடமாக விட்டால் உங்கள் மின் அஞ்சல் முகவரி உங்கள் அனுப்புநர்களுக்கு காட்டப்படும் </string>
|
||||
<string name="Password">கடவுச்சொல் </string>
|
||||
<string name="SmtpPassword">SMTP க்கான கடவுச்சொல் </string>
|
||||
<string name="FromAbove">மேலே இருந்து </string>
|
||||
<string name="SmtpLoginname">SMTP க் கான உள் நுழைவு பெயர் </string>
|
||||
<string name="SmtpPort">SMTP போர்ட் </string>
|
||||
<string name="Automatic">தானியங்கி </string>
|
||||
<string name="ImapServer">IMAP சேவகன் </string>
|
||||
<string name="ImapLoginname">IMAP க் கான உள் நுழைவு பெயர் </string>
|
||||
<string name="SmtpServer">SMTP க்கான சேவகன் </string>
|
||||
<string name="ImapPort">IMAP போர்ட் </string>
|
||||
<string name="InboxHeadline">உட்பெட்டி</string>
|
||||
<string name="OutboxHeadline">வெளிப்பெட்டி </string>
|
||||
<string name="MyAccountExplain">அறியப்பட்ட மின் அஞ்சல் வழங்குநர்களுக்கு மற்ற அமைப்புகள் தானாக தீர்மானிக்கப்படும் </string>
|
||||
<string name="AccountNotConfigured">கணக்கு உள்ளமைக்கப்படவில்லை</string>
|
||||
<string name="AboutThisProgram">டெல்டா அரட்டையை பற்றி </string>
|
||||
<string name="NotSet">இன்னும் அமைக்கப்படவில்லை </string>
|
||||
<string name="NewChat">புது அரட்டை </string>
|
||||
<string name="Deaddrop">தொடர்பு கோரிக்கை </string>
|
||||
<string name="DeaddropInChatlist">அரட்டை பட்டியலில் தொடர்பு கோரிக்கைகளை காட்டவும் </string>
|
||||
<string name="MuteAlways">எப்போதுமே ஊமையாக்கு </string>
|
||||
<string name="DeaddropHint">மறு உத்தரவிற்கான அம்பு குறியை தட்டி அரட்டையை ஆரம்பிக்கவும் </string>
|
||||
<string name="NotYetImplemented">இந்த செயல்பாடு தற்போது இல்லை அல்லது முழுமையடையவில்லை </string>
|
||||
<string name="DefaultStatusText">என்னுடைய டெல்டா அரட்டை செயலியில் இருந்து அனுப்பி உள்ளேன் : https://delta.chat</string>
|
||||
<string name="Name" >பெயர் </string>
|
||||
<string name="EmailAddress">மின் அஞ்சல் முகவரி </string>
|
||||
<string name="CannotDeleteContact">பயன்பாட்டில் உள்ள தொடர்புகளை நீக்க முடியாது , அதற்கு பதில் தொடர்பை முடக்கவும் </string>
|
||||
<string name="BadEmailAddress">தவறான மின் அஞ்சல் முகவரி </string>
|
||||
<string name="ContactCreated">தொடர்பு உருவாக்கப்பட்டது </string>
|
||||
<string name="ViewProfile">சுயவிவரத்தை காண்பி</string>
|
||||
<!-- Translators: please use a very short string here, it should not much longer than
|
||||
the string needed for video time+size (0:00, 12,3 Mib) -->
|
||||
<string name="OneMoment">ஒரு நிமிடம் காத்திருக்கவும் ...</string>
|
||||
<string name="InviteMenuEntry">அழைப்பிதழ்களை அனுப்பு </string>
|
||||
<string name="InviteText">நான் தற்போது டெல்டா அரட்டை செயலியை பயன்படுத்தி வருகிறேன் - %1$s - நீங்கள் இதில் எனக்கு செய்தி அனுப்பலாம் %2$s </string>
|
||||
<string name="AdvancedSettings">மேம்பட்ட அமைப்புகள் </string>
|
||||
<string name="AskResetNotifications">தற்போதைய பக்கம், தொடர்புகள் மற்றும் குழுக்களுக்கு எல்லா நினைவூட்டல் அமைப்புகள் மற்றும் நினைவூட்டல் சத்தங்களை மீட்டமைக்கவா ?</string>
|
||||
<string name="AttachFiles">கோப்புகளை இணைக்கவும் </string>
|
||||
<string name="ErrGroupNameEmpty">குழுவிற்கு ஒரு பெயரை சூட்டவும் </string>
|
||||
<string name="MsgNewGroupDraft">வணக்கம் , நான் நமக்கு \"%1$s\" என்ற பெயரில் குழுவை உருவாக்கி உள்ளேன் </string>
|
||||
<string name="MsgGroupImageChanged">குழு படம் மாற்றப்பட்டது.</string>
|
||||
<string name="MsgMemberAddedToGroup"> %1$s உறுப்பினராக சேர்க்கப்பட்டார் </string>
|
||||
<string name="MsgMemberRemovedFromToGroup">உறுப்பினர் %1$s நீக்கப்பட்டார் </string>
|
||||
<string name="ErrSelfNotInGroup">இந்த செயலை செய்ய நீங்கள் குழு உறுப்பினராக இருக்க வேண்டும் </string>
|
||||
<string name="MsgGroupLeft">குழுவில் இருந்து வெளியேறினது </string>
|
||||
<string name="SelectContact">ஏதேனும் ஒரு தொடர்பை தெரிவு செய்யவும் </string>
|
||||
<string name="DoneHint">முடிந்தது </string>
|
||||
<string name="FileNotFound">%1$sகண்டுபிடிக்க முடியவில்லை. </string>
|
||||
<string name="Error">பிழை: %1$s</string>
|
||||
<string name="NoNetwork">இணைய பிணைப்பு இல்லை </string>
|
||||
<string name="Audio">ஒலி </string>
|
||||
<string name="PermNotificationTitle">%1$s இதனுடன் இணைக்கப்பட்டது </string>
|
||||
<string name="PermNotificationText">செய்திகளுக்காக காத்திருக்கிறது ...</string>
|
||||
<string name="HelpUrl">https://delta.chat/en/help</string>
|
||||
<string name="EncryptedMessage">மறைகுறியாக்கப்பட்ட செய்தி</string>
|
||||
<string name="Encryption">மறைகுறியாக்கம் </string>
|
||||
<string name="EncrinfoFingerprints">கைரேகைகள் </string>
|
||||
<string name="Backup">காப்பு நகல் </string>
|
||||
<string name="NameAndStatus">பெயர் மற்றும் நிலை </string>
|
||||
<string name="MyStatus">என் நிலை </string>
|
||||
<string name="MsgGroupImageDeleted">குழு படம் நீக்கப்பட்டது </string>
|
||||
<string name="AskDeleteGroupImage">குழுவிற்கான படத்தை நீக்கவா ? இந்த செயல் அணைத்து குழு உறுப்பினர்களின் சாதனத்திலும் பாதிக்கும் </string>
|
||||
<string name="ExportImportHeader">ஏற்றுமதி மற்றும் இறக்குமதி </string>
|
||||
<string name="IncorrectPassword">தவறான கடவு சொல் </string>
|
||||
<string name="NoRecentEmoji">கடைசியாக பயன்படுத்த பட்ட எமோஜிகள் இங்கே காண்பிக்கப்படும் </string>
|
||||
<string name="NotNow">இப்போது இல்லை </string>
|
||||
<string name="Archived">ஆவண காக்கப்படுத்தப்பட்டது </string>
|
||||
<string name="LeaveGroup">குழுவில் இருந்து வெளியேறு </string>
|
||||
<string name="AskLeaveGroup">இந்த குழுவில் இருந்து வெளியேறவா ?</string>
|
||||
<string name="Never">எப்போதும் இல்லை </string>
|
||||
<string name="AutocryptKeyTransferPleaseEnterCode">மற்ற சாதனத்தில் காணப்படும் அமைப்பு குறியீடை தயவு செய்து உள்ளீடவும் </string>
|
||||
<string name="Retry">மீண்டும் முயற்சி செய்யவும் </string>
|
||||
<string name="SelfTalkSubtitle">தங்களுக்கே அனுப்பி கொண்ட செய்திகள் </string>
|
||||
<string name="Contact">தொடர்பு</string>
|
||||
</resources>
|
||||
|
||||
@@ -206,4 +206,5 @@
|
||||
<!--Intro view-->
|
||||
<string name="Intro1Headline">డెల్టా చాట్</string>
|
||||
<string name="Password">పాస్వర్డ్</string>
|
||||
<string name="Contact">పరిచయం</string>
|
||||
</resources>
|
||||
|
||||
@@ -16,23 +16,30 @@
|
||||
<string name="MuteFor">%1$s için sessiz</string>
|
||||
<string name="UnmuteNotifications">Sessizden çıkarma</string>
|
||||
<string name="Draft">Taslak</string>
|
||||
<!--audio view-->
|
||||
<string name="NoAudio">Aygıtınızın müzik kitaplığına eklenen dosyalar burada görünecek.</string>
|
||||
<string name="AttachMusic">Müzik</string>
|
||||
<!--documents view-->
|
||||
<string name="SelectFile">Dosya Seçin</string>
|
||||
<string name="FreeOfTotal">%2$sde %1$s boş</string>
|
||||
<string name="ErrorHint">Bilinmeyen hata</string>
|
||||
<string name="AccessError">Erişim hatası</string>
|
||||
<string name="NoFiles">Henüz dosya yok ...</string>
|
||||
<string name="NotMounted">Depo bellek bağlanmadı</string>
|
||||
<string name="UsbActive">USB aktarımı etkin</string>
|
||||
<string name="UsbActive">USB aktarımı devam ediyor</string>
|
||||
<string name="InternalStorage">Dahili Depolama</string>
|
||||
<string name="ExternalStorage">Harici Depolama</string>
|
||||
<string name="SystemRoot">Sistem Root</string>
|
||||
<string name="SdCard">SD Kart</string>
|
||||
<string name="Folder">Klasör</string>
|
||||
<string name="GalleryInfo">Sıkıştırılmamış resimleri göndermek için</string>
|
||||
<!--chat view-->
|
||||
<string name="ChatGallery">Galeri</string>
|
||||
<string name="ChatCamera">Kamera</string>
|
||||
<string name="NoMessages">İleti yok.</string>
|
||||
<string name="ForwardedMessage">Yönlendirilmiş ileti</string>
|
||||
<string name="From">Kimden</string>
|
||||
<string name="NoRecent">son kullanılan yok</string>
|
||||
<string name="TypeMessage">İleti</string>
|
||||
<string name="SlideToCancel">İPTAL ETMEK İÇİN KAYDIR</string>
|
||||
<string name="SaveToDownloads">İndirilenlere kaydet</string>
|
||||
@@ -43,11 +50,13 @@
|
||||
<string name="AddShortcut">Ana ekrana gereç ekleme</string>
|
||||
<string name="ShortcutAdded">Gereç ana ekrana eklendi</string>
|
||||
<!--notification-->
|
||||
<string name="Reply">Yanıtlama</string>
|
||||
<string name="Reply">Yanıtla</string>
|
||||
<string name="ReplyToGroup">%1$se yanıt ver</string>
|
||||
<string name="ReplyToContact">%1$se yanıt ver</string>
|
||||
<!--contacts view-->
|
||||
<string name="NoContacts">Henüz kişi yok.</string>
|
||||
<!--group create view-->
|
||||
<string name="SendMessageTo">...ileti gönder</string>
|
||||
<string name="EnterGroupNamePlaceholder">Grup adı girin</string>
|
||||
<!--group info view-->
|
||||
<string name="AddMember">Üye ekle</string>
|
||||
@@ -74,12 +83,15 @@
|
||||
<string name="Default">Öntanımlı</string>
|
||||
<string name="OnlyIfSilent">Sadece sessizse</string>
|
||||
<string name="ChatBackground">Söyleşi arkaplanı</string>
|
||||
<string name="SendByEnter">Enter tuşu ile gönder</string>
|
||||
<string name="Help">Yardım</string>
|
||||
<string name="Enabled">Aç</string>
|
||||
<string name="Disabled">Kapat</string>
|
||||
<string name="Enabled">Açık</string>
|
||||
<string name="Disabled">Kapalı</string>
|
||||
<string name="LedColor">LED rengi</string>
|
||||
<string name="BadgeNumber">Sayıyı akılda tutmak için mümkünse simge kullanın</string>
|
||||
<string name="Short">Kısa</string>
|
||||
<string name="Long">Uzun</string>
|
||||
<string name="RaiseToSpeak">Konuşmayı artır</string>
|
||||
<string name="EditName">Adı düzenle</string>
|
||||
<string name="NotificationsPriority">Görünüm</string>
|
||||
<string name="NotificationsPriorityDefault">Normal öncelik</string>
|
||||
@@ -87,7 +99,11 @@
|
||||
<string name="NotificationsPriorityMax">En yüksek öncelik</string>
|
||||
<string name="RepeatNotifications">Bildirimleri yinele</string>
|
||||
<string name="NotificationsOther">Diğer</string>
|
||||
<string name="InChatSound">söyleşi içi sesler</string>
|
||||
<string name="SmartNotifications">Sınır bildirimleri</string>
|
||||
<string name="SmartNotificationsSoundAtMost">En çok</string>
|
||||
<string name="SmartNotificationsTimes">kere</string>
|
||||
<string name="SmartNotificationsWithin">içerisinde</string>
|
||||
<string name="DirectShare">Doğrudan paylaşım</string>
|
||||
<string name="DirectShareInfo">Son söyleşileri paylaşma menüsünde göster</string>
|
||||
<!--cache view-->
|
||||
@@ -97,6 +113,7 @@
|
||||
<!--passcode view-->
|
||||
<string name="Passcode">Şifre Kilidi</string>
|
||||
<string name="ChangePasscode">Şifre Değiştir</string>
|
||||
<string name="ChangePasscodeInfo">Ek bir şifre koyduğunuzda söyleşi sayfasında bir kilit simgesi görünür. Uygulamayı kilitlemek için dokunun.\n\nNote: Eğer şifreyi unutursanız, uygulamayı silip tekrar yüklemeniz gerekir.</string>
|
||||
<string name="PasscodePIN">PİN</string>
|
||||
<string name="PasscodePassword">Parola</string>
|
||||
<string name="EnterCurrentPasscode">Güncel şifrenizi girin</string>
|
||||
@@ -106,11 +123,13 @@
|
||||
<string name="ReEnterYourPasscode">Yeni şifrenizi tekrar girin</string>
|
||||
<string name="PasscodeDoNotMatch">Şifreleriniz eşleşmiyor</string>
|
||||
<string name="AutoLock">Otomatik kilit</string>
|
||||
<string name="UnlockFingerprint">Parmak izi il şifreyi aç</string>
|
||||
<string name="AutoLockInfo">Bir süre uzak kalınırsa şifre gerekir.</string>
|
||||
<string name="UnlockFingerprint">Parmak izi ile şifreyi aç</string>
|
||||
<string name="FingerprintInfo">Devam etmek için parmak izini onayla</string>
|
||||
<string name="FingerprintNotRecognized">Parmak izi tanınmadı. Tekrar deneyin</string>
|
||||
<!--photo gallery view-->
|
||||
<string name="SaveToGallery">Galeriye kaydet</string>
|
||||
<string name="Of">%1$d/%2$d</string>
|
||||
<string name="Gallery">Galeri</string>
|
||||
<string name="AllPhotos">Tüm Fotograflar</string>
|
||||
<string name="AllVideo">Tüm Vidyolar</string>
|
||||
@@ -126,8 +145,10 @@
|
||||
<string name="Saturation">Renk doygunluğu</string>
|
||||
<string name="Vignette">Süsleme</string>
|
||||
<string name="Shadows">Gölgeler</string>
|
||||
<string name="Grain">Gren</string>
|
||||
<string name="Sharpen">Keskinleştirme</string>
|
||||
<string name="Fade">Soldurma</string>
|
||||
<string name="Tint">Renk tonu</string>
|
||||
<string name="TintShadows">Gölgeler</string>
|
||||
<string name="TintHighlights">Vurgulamalar</string>
|
||||
<string name="Curves">Eğriler</string>
|
||||
@@ -156,6 +177,7 @@
|
||||
<string name="Send">Gönder</string>
|
||||
<string name="CopyToClipboard">Panoya kopyala</string>
|
||||
<string name="Delete">Sil</string>
|
||||
<string name="Forward">İlet</string>
|
||||
<string name="FromCamera">Kameradan</string>
|
||||
<string name="FromGalley">Galeriden</string>
|
||||
<string name="OK">TAMAM</string>
|
||||
@@ -164,17 +186,35 @@
|
||||
<string name="AttachPhoto">Fotograf</string>
|
||||
<string name="AttachVideo">Vidyo</string>
|
||||
<string name="AttachGif">GİF</string>
|
||||
<string name="AttachContact">Kişiler</string>
|
||||
<string name="AttachDocument">Dosya</string>
|
||||
<string name="AttachVoiceMessage">Sesli ileti</string>
|
||||
<string name="FromSelf">Ben</string>
|
||||
<!--Alert messages-->
|
||||
<string name="NoHandleAppInstalled">\'%1$s\' dosya türünü açacak kurulu bir uygulama yok, bir tane kurun ve devam edin.</string>
|
||||
<string name="ContactAlreadyInGroup">Kişi zaten bu grupta.</string>
|
||||
<string name="ForwardMessagesTo">Seçili iletiler <![CDATA[<b>]]>%1$s<![CDATA[</b>]]> a iletilsin mi?</string>
|
||||
<string name="SendMessagesTo"><![CDATA[<b>]]>%1$s<![CDATA[</b>]]>\'a ileti gönderilsin mi?</string>
|
||||
<string name="AreYouSureDeleteThisChat">Bu söyleşiyi silinsin mi? Söyleşi listesinde artık gösterilmeyecek, iletileri sunucuda kalacak.</string>
|
||||
<string name="AreYouSureBlockContact">Bu kişiyi engellemek istediğinizden emin misiniz?</string>
|
||||
<string name="AreYouSureDeleteContact">Bu kişiyi silmek istediğizden emin misiniz?</string>
|
||||
<string name="PermissionStorage">Fotoğraf, video, müzik ve diğer medyayı kaydetmek ve göndermek için depolama erişimi gerekiyor.</string>
|
||||
<string name="PermissionNoAudio">Sesli ileti göndermek için mikrofon erişimi gerekiyor.</string>
|
||||
<string name="PermissionOpenSettings">Ayarlar</string>
|
||||
<!--Intro view-->
|
||||
<string name="Intro1Headline">Delta Chat</string>
|
||||
<string name="Intro2Headline">Bağımsız</string>
|
||||
<string name="Intro2Message"><![CDATA[<b>Delta Chat sunucusu yok.</b>]]> Uygulama yalnızca e-posta sunucunuzu kullanıyor.</string>
|
||||
|
||||
<string name="Intro3Headline">Hızlı</string>
|
||||
<string name="Intro4Headline">Muhteşem</string>
|
||||
<string name="Intro6Headline">Güvenli</string>
|
||||
<string name="Intro4Message"><![CDATA[<b>Sınırsız</b>]]> söyleşiler, görüntüler, vidyolar, sesli iletiler ve daha fazlası. Çoklu istemci kapasiteli. </string>
|
||||
|
||||
<string name="Intro5Headline">Özgür</string>
|
||||
<string name="Intro6Headline">Şifreli</string>
|
||||
<string name="Intro7Headline">Güvenilir</string>
|
||||
|
||||
<string name="IntroStartMessaging">İleti Alışverişini Başlat</string>
|
||||
<!--plural-->
|
||||
<plurals name="Members">
|
||||
<item quantity="one">%düye</item>
|
||||
@@ -196,6 +236,10 @@
|
||||
<item quantity="one">%dileti</item>
|
||||
<item quantity="other">%dileti</item>
|
||||
</plurals>
|
||||
<plurals name="AreYouSureDeleteMessages">
|
||||
<item quantity="one">%d ileti silinsin mi? Bu sunucudan da silinecek.</item>
|
||||
<item quantity="other">%d iletiler silinsin mi? Bunlar sunucudan da silinecek.</item>
|
||||
</plurals>
|
||||
<plurals name="Chats">
|
||||
<item quantity="one">%d söyleşi</item>
|
||||
<item quantity="other">%dsöyleşi</item>
|
||||
@@ -222,9 +266,11 @@
|
||||
</plurals>
|
||||
<string name="formatterYear">gg.AA.yyyy</string>
|
||||
<string name="formatterDay24H">SS:dd</string>
|
||||
<string name="formatDateAtTime">%1$s de %2$s</string>
|
||||
<string name="AccountSettings">Hesap ayarları</string>
|
||||
<string name="MyAccount">Hesabım</string>
|
||||
<string name="MyName">Adım</string>
|
||||
<string name="MyNameExplain">Adınız karşıya böyle gösterilecek. Boş bırakırsanız, yalnızca eposta adresiniz gönderilecek.</string>
|
||||
<string name="Password">Parola</string>
|
||||
<string name="SmtpPassword">STMP parolası</string>
|
||||
<string name="FromAbove">Yukarıdan</string>
|
||||
@@ -237,46 +283,115 @@
|
||||
<string name="ImapPort">İMAP bağlanma noktası</string>
|
||||
<string name="InboxHeadline">Gelen kutusu</string>
|
||||
<string name="OutboxHeadline">Gönderilenler</string>
|
||||
<string name="MyAccountExplain">Bilinen e-posta sağlayıcıları için ek ayarlar otomatik olarak algılanır.</string>
|
||||
<string name="AccountNotConfigured">Hesap düzenlenmedi</string>
|
||||
<string name="AboutThisProgram">Delta Chat Hakkında</string>
|
||||
<string name="NotSet">Ayarlanmadı</string>
|
||||
<string name="NewChat">Yeni söyleşi</string>
|
||||
<string name="Deaddrop">İletişim istekleri</string>
|
||||
<string name="DeaddropInChatlist">Söyleşi listesindeki kişi isteklerini göster</string>
|
||||
<string name="MuteAlways">Sürekli sessiz</string>
|
||||
<string name="AskStartChatWith"><![CDATA[<b>]]>%1$s<![CDATA[</b>]]> ile söyleşi?</string>
|
||||
<string name="DeaddropHint">Söyleşmeye başlamak için yanıt oklarına dokunun.</string>
|
||||
<string name="NotYetImplemented">Bu işlev mevcut değil veya eksik.</string>
|
||||
<string name="DefaultStatusText">Delta Chat Messengerim ile göderildi: https://delta.chat</string>
|
||||
<string name="Name" >Ad</string>
|
||||
<string name="EmailAddress">E-posta adresi</string>
|
||||
<string name="CannotDeleteContact">Kullanımdaki kişiler silinemez, bunun yerine kişiyi engelleyin.</string>
|
||||
<string name="BadEmailAddress">Hatalı eposta adresi.</string>
|
||||
<string name="ContactCreated">Kişi oluşturuldu.</string>
|
||||
<string name="ViewProfile">Profil görüntüsü</string>
|
||||
<!-- Translators: please use a very short string here, it should not much longer than
|
||||
the string needed for video time+size (0:00, 12,3 Mib) -->
|
||||
<string name="OneMoment">Bir dakika ...</string>
|
||||
<string name="NoChatsHelp">Sayfanın sağ altındaki \'\'Yeni söyleşi\'\' düğmesine basarak başlayın ya da daha fazla seçenek için \'\'Menü\'\' düğmesine dokunun.</string>
|
||||
<string name="Intro7Message"><![CDATA[<b>Delta Chat</b>]]> uyumlu ve standartlara dayalıdır ve iş kullanımı için güvenlidir.</string>
|
||||
<string name="InviteMenuEntry">Davetiye gönderin</string>
|
||||
<string name="InviteText">Şimdi Delta Chat kullanıyorum - %1$s- bana yazabilirsin%2$s</string>
|
||||
<string name="AdvancedSettings">Gelişmiş ayarlar</string>
|
||||
<string name="AskResetNotifications">Geçerli sayfanın grupların ve kişilerin bütün bildirim ayarları ve sesleri sıfırlansın mı?</string>
|
||||
<string name="AttachFiles">Dosyaları iliştir</string>
|
||||
<string name="ErrGroupNameEmpty">Grup için bir ad girin</string>
|
||||
<string name="MsgNewGroupDraftHint">İlk iletiyi diğerlerinin bu grupta yanıtlamasına izin verin.\n\ n• Tüm üyeler Delta Chat kullanmıyorsa sorun yoktur.\n\n• İlk iletiyi teslim etmek biraz zaman alabilir.</string>
|
||||
<string name="MsgNewGroupDraft">Selam, bizim için \"%1$s\" grubunu oluşturdum. </string>
|
||||
<string name="MsgGroupNameChanged">Grup adı \"%1$s\" den \"%2$s\"ye değişti.</string>
|
||||
<string name="MsgGroupImageChanged">Grup resmi değişti.</string>
|
||||
<string name="MsgMemberAddedToGroup">%1$s üye eklendi</string>
|
||||
<string name="MsgMemberRemovedFromToGroup">%1$s üye silindi.</string>
|
||||
<string name="AskAddMemberToGroup">Gruba <![CDATA[<b>]]>%1$s<![CDATA[</b>]]> eklensin mi?</string>
|
||||
<string name="AskRemoveMemberFromGroup">Gruptan <![CDATA[<b>]]>%1$s<![CDATA[</b>]]> kaldırılsın mı?</string>
|
||||
<string name="ErrSelfNotInGroup">Bu işlemi gerçekleştirmek için grubun üyesi olmalısınız.</string>
|
||||
<string name="MsgGroupLeft">Grup ayrıldı.</string>
|
||||
<string name="SendNRcvReadReceipts">İletim raporlarını al ve gönder</string>
|
||||
<string name="PreferE2EEncryption">Uçtan uca şifrelemeyi yeğle</string>
|
||||
<string name="E2EManagePrivateKeys">Özel anahtarları yönet</string>
|
||||
<string name="E2ECompareKeys">Anahtarları karşılaştır</string>
|
||||
<string name="ForwardToTitle">...ya ilet</string>
|
||||
<string name="SelectContact">Bir kişi seçin</string>
|
||||
<string name="DoneHint">Tamam.</string>
|
||||
<string name="FileNotFound">%1$sbulunamadı.</string>
|
||||
<string name="Error">Hata: %1$s</string>
|
||||
<string name="NoNetwork">Ağ kullanılamıyor.</string>
|
||||
<string name="Audio">Ses</string>
|
||||
<string name="PleaseCutVideoToMaxSize">Lütfen vidyoyu %1$s\'den daha küçük boyutta kesin.</string>
|
||||
<string name="PermNotificationTitle">%1$s\'e bağlandı</string>
|
||||
<string name="PermNotificationText">İletiler bekliyor ...</string>
|
||||
<string name="SettingsFor">%1$siçin ayarlar</string>
|
||||
<string name="AutoplayGifs">GİFleri otomatik oynat</string>
|
||||
<string name="HelpUrl">https://delta.chat/en/help</string>
|
||||
<string name="EncryptedMessage">Şifrelenmiş ileti</string>
|
||||
<string name="EncrinfoE2E">Uçtan uca şifreleme etkin</string>
|
||||
<string name="Encryption">Şifreleme</string>
|
||||
<string name="EncrinfoTransport">En azından sunucuma kadar şifreli taşıma.</string>
|
||||
<string name="EncrinfoNone">Sunucuma şifreleme yok.</string>
|
||||
<string name="EncrinfoFingerprints">Parmak izleri</string>
|
||||
<string name="Backup">Yedekleme</string>
|
||||
<string name="ImportBackupExplain2"><![CDATA[<i>]]>%1$s<![CDATA[</i>]]>dan bir yedeği içe aktarmak ve yeniden kurmak.</string>
|
||||
<string name="ReadReceipt">İletim raporu</string>
|
||||
<string name="NameAndStatus">Ad ve durum</string>
|
||||
<string name="MyStatus">Durumum</string>
|
||||
<string name="MyStatusExplain">Durum, diğer yerlerin yanı sıra e-posta altbilgisinde gösterilir.</string>
|
||||
<string name="MsgGroupImageDeleted">Grup resmi silindi</string>
|
||||
<string name="AskDeleteGroupImage">Grup resmini silmek istediğinizden emin misiniz?\n\nBu tüm grup üyelerinin aygıtlarını etkileyecek.</string>
|
||||
<string name="ExportImportHeader">Dışa aktarım ve içe aktarım</string>
|
||||
<string name="ImportExportExplain">Dışa aktarılan dosyalar gizli anahtarları içerecektir! Onları güvenli bir yerde saklayın veya mümkün olan en kısa sürede silin.</string>
|
||||
<string name="EnterPasswordToContinue">Devam etmek için %1$s parolasını girin:</string>
|
||||
<string name="IncorrectPassword">Geçersiz parola</string>
|
||||
<string name="ImportBackupAsk"><![CDATA[<i>]]>%1$s<![CDATA[</i>]]> de yedekleme bulundu.\n\nTüm verileri ve ayarları buradan içe aktarmak ve kullanmak istiyor musunuz?</string>
|
||||
<string name="ImportBackup">Yedeklemeyi içe aktar</string>
|
||||
<string name="FilesSuccessfullyExported">Dosyalar <![CDATA[<i>]]>%1$s<![CDATA[</i>]]>\'a dışa aktarıldı.</string>
|
||||
<string name="ExportBackup">Yedeklemeyi dışa aktar</string>
|
||||
<string name="ExportPrivateKeys">Özel anahtarları dışa aktar</string>
|
||||
<string name="ImportPrivateKeys">Özel anahtarları içe aktar</string>
|
||||
<string name="ImportPrivateKeysAsk2">Gizli anahtarlar <![CDATA[<i>]]>%1$s<![CDATA[</i>]]>dan içe aktarılsın mı?\n\n•Var olan gizli anahtarlar silinmeyecek\n\n• Son içe aktarılan anahtar yeni öntanımlı anahtar olarak kullanılacak.</string>
|
||||
<string name="NoRecentEmoji">Son kullanılan duygu simgeleri burada gösterilecek.</string>
|
||||
<string name="NotNow">Şimdi değil</string>
|
||||
<string name="ArchiveChat">Söyleşiyi arşivle</string>
|
||||
<string name="UnarchiveChat">Söyleşiyi arşivden kaldır</string>
|
||||
<string name="ArchivedChats">Arşivlenmiş söyleşiler</string>
|
||||
<string name="Archived">Arşivlenmiş</string>
|
||||
<string name="LeaveGroup">Gruptan ayrıl</string>
|
||||
<string name="AskLeaveGroup">Bu gruptan ayrılmak istediğinize emin misiniz?</string>
|
||||
<string name="Never">Asla</string>
|
||||
</resources>
|
||||
<string name="AutocryptKeyTransferInitiate">Autocrypt anahtar aktarımını başlat</string>
|
||||
<string name="AutocryptKeyTransfer">Autocrypt Anahtar Aktarımı</string>
|
||||
<string name="AutocryptKeyTransferMsgAfterSend">Anahtarınız kendinize gönderildi. Diğer aygıta geçin ve kurulum iletisini açın. Sizden bir kurulum şifresi girmeniz istenecektir. İsteğe aşağıdaki rakamları yazın:\n\n%1$s\n\nİşiniz bittiğinde, diğer aygıtınız Autocrypt\'i kullanmaya hazır hale gelecektir.</string>
|
||||
<string name="AutocryptSetupMessageSubject">Autocrypt Kurulum İletisi</string>
|
||||
<string name="AutocryptSetupMessageTapBody">Bu istemciler arasındaki anahtarınızı aktarım için kullanılan Autocrypt Kurulum İletisidir.\n\nBu iletiye dokun, şifreyi kaldır ve anahtarını kullan.</string>
|
||||
<string name="AutocryptKeyTransferPleaseEnterCode">Lütfen diğer aygıtta görüntülenen kurulum kodunu giriniz.</string>
|
||||
<string name="AutocryptKeyTransferBadCode">Kötü kurulum kodu. Lütfen tekrar deneyin.\n\nKurulum kodunu anımsamıyorsanız, diğer aygıttaki anahtar aktarımını yeniden başlatmanız yeterlidir.</string>
|
||||
<string name="AutocryptKeyTransferSucceeded">Anahtar transferi başarılı.Bu aygıt artık Autocrypt\'i diğer aygıtla aynı tuşla kullanmaya hazırdır.</string>
|
||||
<string name="Retry">Yeniden dene</string>
|
||||
<string name="SelfTalkSubtitle">Kendime gönderdiğim iletiler</string>
|
||||
<string name="QrScan">QR kod tara</string>
|
||||
<string name="QrShow">QR kodu göster</string>
|
||||
<string name="OobFingerprint">Parmak izi</string>
|
||||
<string name="OobSecureJoinRequested">%1$s katılıyor.</string>
|
||||
<string name="Autocrypt">Autocrypt</string>
|
||||
<string name="NewVerifiedGroup">Yeni doğrulanmış grup</string>
|
||||
<string name="SharedChats">Paylaşılmış söyleşiler</string>
|
||||
<string name="VerifiedContact">Doğrulanmış kişi</string>
|
||||
<string name="Contact">Kişiler</string>
|
||||
<string name="VerifiedGroup">Doğrulanmış grup</string>
|
||||
<string name="Group">Grup</string>
|
||||
<string name="EditedNameWillBeShared">Düzenlenen ad tüm grup üyeleriyle paylaşılacaktır.</string>
|
||||
</resources>
|
||||
|
||||