Merge branch 'develop' into element_3579

This commit is contained in:
ismailgulek 2020-10-13 16:11:19 +03:00
commit 50eca8d3e4
36 changed files with 487 additions and 369 deletions

View file

@ -1,12 +1,66 @@
Changes to be released in next version
=================================================
✨ Features
*
🙌 Improvements
*
🐛 Bugfix
*
⚠️ API Changes
*
🗣 Translations
*
🧱 Build
*
Others
*
Changes in 1.0.16 (2020-10-13)
=================================================
✨ Features
*
🙌 Improvements
* Self-verification: Update complete security screen wording (#3743).
🐛 Bugfix
*
⚠️ API Changes
*
🗣 Translations
*
🧱 Build
*
Others
*
Improvements:
* Upgrade MatrixKit version ([v0.12.24](https://github.com/matrix-org/matrix-ios-kit/releases/tag/v0.12.24)).
Changes in 1.0.15 (2020-10-09)
=================================================
✨ Features
*
🙌 Improvements
* Room: Make topic links tappable (#3713).
* Room: Add more to long room topics (#3715).
* Security screens: Update automatically shields when the trust changes.
* Room: Add floating action button to invite members.
* Pasteboard: Use MXKPasteboardManager.pasteboard on copy operations (#3732).
🐛 Bugfix
* Push: Check crypto has keys to decrypt an event before decryption attempt, avoid sync loops on failure.
@ -23,6 +77,9 @@ Changes to be released in next version
Others
*
Improvements:
* Upgrade MatrixKit version ([v0.12.23](https://github.com/matrix-org/matrix-ios-kit/releases/tag/v0.12.23)).
Changes in 1.0.14 (2020-10-02)
=================================================

View file

@ -11,7 +11,7 @@ use_frameworks!
# - `{ {kit spec hash} => {sdk spec hash}` to depend on specific pod options (:git => …, :podspec => …) for each repo. Used by Fastfile during CI
#
# Warning: our internal tooling depends on the name of this variable name, so be sure not to change it
$matrixKitVersion = '= 0.12.22'
$matrixKitVersion = '0.12.24'
# $matrixKitVersion = :local
# $matrixKitVersion = {'develop' => 'develop'}

View file

@ -16,6 +16,7 @@ PODS:
- AFNetworking/NSURLSession
- cmark (0.24.1)
- DGCollectionViewLeftAlignFlowLayout (1.0.4)
- Down (0.9.3)
- DTCoreText (1.6.25):
- DTCoreText/Core (= 1.6.25)
- DTFoundation/Core (~> 1.7.5)
@ -52,44 +53,45 @@ PODS:
- MatomoTracker (7.2.1):
- MatomoTracker/Core (= 7.2.1)
- MatomoTracker/Core (7.2.1)
- MatrixKit (0.12.22):
- cmark (~> 0.24.1)
- MatrixKit (0.12.24):
- Down (~> 0.9.3)
- DTCoreText (~> 1.6.23)
- HPGrowingTextView (~> 1.1)
- libPhoneNumber-iOS (~> 0.9.13)
- MatrixKit/Core (= 0.12.22)
- MatrixSDK (= 0.16.16)
- MatrixKit/AppExtension (0.12.22):
- cmark (~> 0.24.1)
- MatrixKit/Core (= 0.12.24)
- MatrixSDK (= 0.16.18)
- MatrixKit/AppExtension (0.12.24):
- Down (~> 0.9.3)
- DTCoreText (~> 1.6.23)
- DTCoreText/Extension
- HPGrowingTextView (~> 1.1)
- libPhoneNumber-iOS (~> 0.9.13)
- MatrixSDK (= 0.16.16)
- MatrixKit/Core (0.12.22):
- cmark (~> 0.24.1)
- MatrixSDK (= 0.16.18)
- MatrixKit/Core (0.12.24):
- Down (~> 0.9.3)
- DTCoreText (~> 1.6.23)
- HPGrowingTextView (~> 1.1)
- libPhoneNumber-iOS (~> 0.9.13)
- MatrixSDK (= 0.16.16)
- MatrixSDK (0.16.16):
- MatrixSDK/Core (= 0.16.16)
- MatrixSDK/Core (0.16.16):
- MatrixSDK (= 0.16.18)
- MatrixSDK (0.16.18):
- MatrixSDK/Core (= 0.16.18)
- MatrixSDK/Core (0.16.18):
- AFNetworking (~> 4.0.0)
- GZIP (~> 1.2.2)
- libbase58 (~> 0.1.4)
- OLMKit (~> 3.1.0)
- Realm (~> 4.4.0)
- MatrixSDK/JingleCallStack (0.16.16):
- MatrixSDK/JingleCallStack (0.16.18):
- JitsiMeetSDK (~> 2.8.1)
- MatrixSDK/Core
- MatrixSDK/SwiftSupport (0.16.16):
- MatrixSDK/SwiftSupport (0.16.18):
- MatrixSDK/Core
- OLMKit (3.1.0):
- OLMKit/olmc (= 3.1.0)
- OLMKit/olmcpp (= 3.1.0)
- OLMKit/olmc (3.1.0)
- OLMKit/olmcpp (3.1.0)
- ReadMoreTextView (3.0.1)
- Realm (4.4.1):
- Realm/Headers (= 4.4.1)
- Realm/Headers (4.4.1)
@ -114,12 +116,13 @@ DEPENDENCIES:
- KeychainAccess (~> 4.2)
- KTCenterFlowLayout (~> 1.3.1)
- MatomoTracker (~> 7.2.0)
- MatrixKit (= 0.12.22)
- MatrixKit/AppExtension (= 0.12.22)
- MatrixKit (= 0.12.24)
- MatrixKit/AppExtension (= 0.12.24)
- MatrixSDK
- MatrixSDK/JingleCallStack
- MatrixSDK/SwiftSupport
- OLMKit
- ReadMoreTextView (~> 3.0.1)
- Reusable (~> 4.1)
- SwiftGen (~> 6.1)
- SwiftLint (~> 0.36.0)
@ -131,6 +134,7 @@ SPEC REPOS:
- AFNetworking
- cmark
- DGCollectionViewLeftAlignFlowLayout
- Down
- DTCoreText
- DTFoundation
- FlowCommoniOS
@ -146,6 +150,7 @@ SPEC REPOS:
- MatrixKit
- MatrixSDK
- OLMKit
- ReadMoreTextView
- Realm
- Reusable
- SwiftGen
@ -157,6 +162,7 @@ SPEC CHECKSUMS:
AFNetworking: 7864c38297c79aaca1500c33288e429c3451fdce
cmark: 1d9ad0375e3b9fa281732e992467903606015520
DGCollectionViewLeftAlignFlowLayout: a0fa58797373ded039cafba8133e79373d048399
Down: 4553b984236807e384fa0ef7c7e360ef9f7c425d
DTCoreText: e92f4cf6b36d9d71ce4436d12cf089d74ab0596b
DTFoundation: 767ca882209ef4d5132ec7e702526d5ed5bb71a2
FlowCommoniOS: 1647a1775b988f5d97202f635bcbcbce4f4c46a1
@ -169,9 +175,10 @@ SPEC CHECKSUMS:
libbase58: 7c040313537b8c44b6e2d15586af8e21f7354efd
libPhoneNumber-iOS: 0a32a9525cf8744fe02c5206eb30d571e38f7d75
MatomoTracker: 246b6b0693cf39b356134dec7561f719d3538b96
MatrixKit: 4bb9215ce31b3fa5604c9c862783fbb5fbd549c9
MatrixSDK: 12259762d604dd351313e4d9e65cc48e16377247
MatrixKit: f7fd6a0f152aa1c0b71457c512025bb202343cba
MatrixSDK: 7bdaee197004919ae34670d5ba043d5bff95e4df
OLMKit: 4ee0159d63feeb86d836fdcfefe418e163511639
ReadMoreTextView: 19147adf93abce6d7271e14031a00303fe28720d
Realm: 4eb04d7487bd43c0581256f40b424eafb711deff
Reusable: 53a9acf5c536f229b31b5865782414b508252ddb
SwiftGen: 62e69d127507be1538d4263e137b2290cd6ab272
@ -179,6 +186,6 @@ SPEC CHECKSUMS:
zxcvbn-ios: fef98b7c80f1512ff0eec47ac1fa399fc00f7e3c
ZXingObjC: fdbb269f25dd2032da343e06f10224d62f537bdb
PODFILE CHECKSUM: afd7bcb0438772ab41f407ed18c47cb052e95bff
PODFILE CHECKSUM: 67035ff6c96ebee323589c4919aff428e315d5de
COCOAPODS: 1.9.3

View file

@ -7277,7 +7277,7 @@
CODE_SIGN_IDENTITY = "iPhone Developer";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 1.0.15;
CURRENT_PROJECT_VERSION = 1.0.17;
DEFINES_MODULE = YES;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
@ -7297,7 +7297,7 @@
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
MARKETING_VERSION = 1.0.15;
MARKETING_VERSION = 1.0.17;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
@ -7336,7 +7336,7 @@
CODE_SIGN_IDENTITY = "iPhone Distribution";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
COPY_PHASE_STRIP = YES;
CURRENT_PROJECT_VERSION = 1.0.15;
CURRENT_PROJECT_VERSION = 1.0.17;
DEFINES_MODULE = YES;
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
@ -7349,7 +7349,7 @@
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
MARKETING_VERSION = 1.0.15;
MARKETING_VERSION = 1.0.17;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SWIFT_COMPILATION_MODE = wholemodule;

View file

@ -0,0 +1,23 @@
{
"images" : [
{
"filename" : "FAB.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "FAB@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "FAB@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

View file

@ -1,5 +1,5 @@
/* New message from a specific person, not referencing a room */
"MSG_FROM_USER" = "Missatge de %@";
"MSG_FROM_USER" = "%@ ha enviat un missatge";
/* New message from a specific person in a named room */
"MSG_FROM_USER_IN_ROOM" = "%@ publicat a %@";
/* New message from a specific person, not referencing a room. Content included. */
@ -11,7 +11,7 @@
/* New action message from a specific person in a named room. */
"ACTION_FROM_USER_IN_ROOM" = "%@: * %@ %@";
/* New action message from a specific person, not referencing a room. */
"IMAGE_FROM_USER" = "%@ t'ha enviat una foto %@";
"IMAGE_FROM_USER" = "%@ ha enviat una foto %@";
/* New action message from a specific person in a named room. */
"IMAGE_FROM_USER_IN_ROOM" = "%@ ha publicat una foto %@ a %@";
/* Multiple unread messages in a room */
@ -50,3 +50,14 @@
"SINGLE_UNREAD_IN_ROOM" = "Has rebut un missatge a %@";
/* A single unread message */
"SINGLE_UNREAD" = "Has rebut un missatge";
/* Message title for a specific person in a named room */
"MSG_FROM_USER_IN_ROOM_TITLE" = "%@ a %@";
/* Sticker from a specific person, not referencing a room. */
"STICKER_FROM_USER" = "%@ tha enviat una enganxina";
/* New message indicator on unknown room */
"MESSAGE" = "Missatge";
/* New message indicator from a DM */
"MESSAGE_FROM_X" = "Missatge de %@";
/* New message indicator on a room */
"MESSAGE_IN_X" = "Missatge a %@";
"KEY_VERIFICATION_REQUEST_FROM_USER" = "%@ vol verificar";

View file

@ -552,3 +552,18 @@
// Re-request confirmation dialog
"rerequest_keys_alert_title" = "Sol·licitud enviada";
"rerequest_keys_alert_message" = "Inicia Element en un altre dispositiu que pugui desxifrar el missatge per que pugui enviar les claus a aquest dispositiu.";
// String for App Store
"store_short_description" = "Xat/VoIP segur i descentralitzat";
"close" = "Tanca";
"skip" = "Salta";
"joined" = "Unit";
"switch" = "Canvia";
"more" = "Més";
// Accessibility
"accessibility_checkbox_label" = "casella de selecció";
// MARK: Clients
"client_desktop_name" = "Element Escriptori";
"client_web_name" = "Element Web";
"client_ios_name" = "Element iOS";
"client_android_name" = "Element Android";
"auth_login_single_sign_on" = "Inicia sessió amb inici senzill";

View file

@ -1187,7 +1187,7 @@
"pin_protection_choose_pin_welcome_after_login" = "Willkommen zurück.";
"pin_protection_choose_pin_welcome_after_register" = "Willkommen.";
"pin_protection_not_allowed_pin" = "Aus Sicherheitsgründen ist diese PIN nicht verfügbar. Bitte versuche es mit einer anderen PIN";
"pin_protection_explanatory" = "PINs helfen dein Profil, deine Nachrichten und Kontakte so zu sichern, dass nur du Zugriff auf sie hast.";
"pin_protection_explanatory" = "Das Einrichten einer PIN schützt Daten wie Nachrichten und Kontakten so, dass nur du Zugriff auf sie hast, indem du die PIN beim Starten der App eingibst.";
"searchable_directory_create_new_room" = "Erstelle einen neuen Raum";
"searchable_directory_x_network" = "%@ Netzwerk";
"searchable_directory_search_placeholder" = "Name oder ID";
@ -1210,3 +1210,20 @@
"room_info_list_one_member" = "1 Mitglied";
"room_info_list_several_members" = "%@ Mitglieder";
"room_info_list_section_other" = "Sonstige";
"room_participants_leave_prompt_title_for_dm" = "Verlassen";
"room_participants_filter_room_members_for_dm" = "Mitglieder filtern";
"room_participants_security_information_room_not_encrypted_for_dm" = "Die Nachrichten hier sind nicht Ende-zu-Ende verschlüsselt.";
"room_participants_leave_prompt_msg_for_dm" = "Bist du sicher, dass du die Konversation verlassen möchtest?";
"room_participants_security_information_room_encrypted_for_dm" = "Nachrichten hier sind Ende-zu-Ende verschlüsselt.\n\nDeine Nachrichten sind mit digitalen Schlüsseln gesichert, nur du und der/die Empfänger!n haben die einzigen Schlüssel, um jene zu entsperren.";
"room_details_title_for_dm" = "Details";
"room_details_photo_for_dm" = "Bild";
"room_details_room_name_for_dm" = "Name";
"room_details_access_section_for_dm" = "Wer hat Zugriff hierauf?";
"room_details_access_section_anyone_apart_from_guest_for_dm" = "Alle, die den Link kennen (ausgenommen Gäste)";
"room_details_access_section_anyone_for_dm" = "Alle, die den Link kennen (auch Gäste)";
"room_details_access_section_directory_toggle_for_dm" = "Im Raum-Verzeichnis auflisten";
"room_details_no_local_addresses_for_dm" = "Keine lokalen Adressen vorhanden";
"room_details_advanced_room_id_for_dm" = "ID:";
"room_details_advanced_e2e_encryption_enabled_for_dm" = "Verschlüsselung ist hier aktiviert";
"room_details_advanced_e2e_encryption_disabled_for_dm" = "Verschlüsselung ist hier nicht aktiviert.";
"pin_protection_kick_user_alert_message" = "Zu viele Fehler. Du wurdest ausgeloggt";

View file

@ -67,12 +67,6 @@
// Accessibility
"accessibility_checkbox_label" = "checkbox";
// MARK: Clients
"client_desktop_name" = "Element Desktop";
"client_web_name" = "Element Web";
"client_ios_name" = "Element iOS";
"client_android_name" = "Element Android";
// Authentication
"auth_login" = "Log in";
"auth_register" = "Register";
@ -1137,7 +1131,7 @@
"device_verification_self_verify_wait_title" = "Complete security";
"device_verification_self_verify_wait_new_sign_in_title" = "Verify this login";
"device_verification_self_verify_wait_information" = "Verify this session from one of your other sessions, granting it access to encrypted messages.\n\nUse the latest Element on your other devices:";
"device_verification_self_verify_wait_additional_information" = "or another cross-signing capable Matrix client";
"device_verification_self_verify_wait_additional_information" = "This works with Element and other cross-signing capable Matrix cients.";
"device_verification_self_verify_wait_recover_secrets_without_passphrase" = "Use Recovery Key";
"device_verification_self_verify_wait_recover_secrets_with_passphrase" = "Use Recovery Passphrase or Key";
"device_verification_self_verify_wait_recover_secrets_additional_information" = "If you can't accessing an existing session";

View file

@ -1147,7 +1147,7 @@
"pin_protection_choose_pin_welcome_after_login" = "Tere tulemast tagasi.";
"pin_protection_choose_pin_welcome_after_register" = "Tere tulemast.";
"pin_protection_not_allowed_pin" = "Turvapõhjustel seda PIN-kooi ei saa kasutada. Palun vali mõnu muu PIN-kood";
"pin_protection_explanatory" = "PIN-kood aitab tagada, et vaid sina ise pääsed ligi oma profiilile, sõnumitele ja kontaktidele.";
"pin_protection_explanatory" = "PIN-koodi seadistamine aitab tagada, et vaid sina ise pääsed ligi oma profiilile, sõnumitele ja kontaktidele, kui sisestad PIN-koodi rakenduse käivitamisel.";
"searchable_directory_create_new_room" = "Loo uus jututuba";
"searchable_directory_x_network" = "%@ võrk";
"searchable_directory_search_placeholder" = "Nimi või Matrix'i tunnus";
@ -1170,3 +1170,20 @@
"room_info_list_one_member" = "1 liige";
"room_info_list_several_members" = "%@ liiget";
"room_info_list_section_other" = "Muud";
"room_participants_leave_prompt_title_for_dm" = "Lahku";
"room_participants_leave_prompt_msg_for_dm" = "Kas oled kindel, et soovid lahkuda jututoast?";
"room_participants_filter_room_members_for_dm" = "Filtreeri jututoa liikmeid";
"room_participants_security_information_room_not_encrypted_for_dm" = "See jututuba ei ole läbivalt krüptitud.";
"room_participants_security_information_room_encrypted_for_dm" = "Sõnumid siin jututoas kasutavad läbivat krüptimist. \n \nSinu sõnumid on turvatud ning ainult sinul ja saaja(te)l on unikaalsed võtmed selliste sõnumite lugemiseks.";
"room_details_title_for_dm" = "Jututoa üksikasjad";
"room_details_photo_for_dm" = "Jututoa foto";
"room_details_room_name_for_dm" = "Nimi";
"room_details_access_section_for_dm" = "Kes pääsevad ligi siia jututuppa?";
"room_details_access_section_anyone_apart_from_guest_for_dm" = "Kõik, kes teavad jututoa viidet, välja arvatud külalised";
"room_details_access_section_anyone_for_dm" = "Kõik, kes teavad jututoa viidet, kaasa arvatud külalised";
"room_details_access_section_directory_toggle_for_dm" = "Näita seda jututuba jututubade kataloogis";
"room_details_no_local_addresses_for_dm" = "Sellel jututoal puuduvad kohalikud aadressid";
"room_details_advanced_room_id_for_dm" = "Jututoa tunnus:";
"room_details_advanced_e2e_encryption_enabled_for_dm" = "Krüptimine on selles jututoas kasutusel";
"room_details_advanced_e2e_encryption_disabled_for_dm" = "Krüptimine ei ole selles jututoas kasutusel.";
"pin_protection_kick_user_alert_message" = "Liiga palju vigu PIN-koodi sisestamisel ning sa oled nüüd välja logitud";

View file

@ -353,7 +353,7 @@
"settings_crypto_blacklist_unverified_devices" = "Csak ellenőrzött munkameneteknek titkosít";
"settings_deactivate_my_account" = "Felhasználói fiókom felfüggesztése";
"room_details_people" = "Tagok";
"room_details_files" = "Fájlok";
"room_details_files" = "Feltöltések";
"room_details_settings" = "Beállítások";
"room_details_photo" = "Szoba képe";
"room_details_room_name" = "Szoba neve";
@ -1174,7 +1174,7 @@
"external_link_confirmation_title" = "Ezt a hivatkozást ellenőrizd le még egyszer";
"external_link_confirmation_message" = "%@ hivatkozás egy másik oldalra visz: %@ \n \nFolytatod?";
"major_update_information" = "Izgatottan jelentjük, hogy megváltoztattuk a nevünket! Az alkalmazásod friss és be vagy jelentkezve a fiókodba.";
"pin_protection_choose_pin" = "A biztonság érdekében válassz egy PIN kódot";
"pin_protection_choose_pin" = "A biztonság érdekében adj meg egy PIN kódot";
"pin_protection_confirm_pin" = "Erősítsd meg a PIN kódot";
"pin_protection_confirm_pin_to_disable" = "A PIN letiltásához írd be a PIN kódot";
"pin_protection_enter_pin" = "Add meg a PIN kódot";
@ -1205,3 +1205,48 @@
"biometrics_cant_unlocked_alert_message_retry" = "Újra";
"biometrics_desetup_subtitle" = " ";
"device_verification_self_verify_wait_recover_secrets_checking_availability" = "További hitelesítési lehetőségek keresése …";
"joined" = "Csatlakozott";
"switch" = "Cserél";
"more" = "További";
"room_participants_leave_prompt_title_for_dm" = "Elhagy";
"room_participants_leave_prompt_msg_for_dm" = "Biztos, hogy ki akarsz lépni?";
"room_participants_filter_room_members_for_dm" = "Tagok szűrése";
"room_participants_security_information_room_not_encrypted_for_dm" = "Itt az üzenetek nincsenek végponttól végpontig titkosítva.";
"room_participants_security_information_room_encrypted_for_dm" = "Itt az üzenetek végponttól végpontig titkosítva vannak. \n \nAz üzeneteidet titkosítással vannak biztosítva és csak neked és a címzetteknek van meg a kulcs hozzá.";
"room_details_title_for_dm" = "Részletek";
"room_details_photo_for_dm" = "Fotó";
"room_details_room_name_for_dm" = "Név";
"room_details_access_section_for_dm" = "Ki tud hozzáférni ehhez?";
"room_details_access_section_anyone_apart_from_guest_for_dm" = "Bárki aki ismeri a linket, a vendégeket leszámítva";
"room_details_access_section_anyone_for_dm" = "Bárki aki ismeri a linket, beleszámítva a vendégek";
"room_details_access_section_directory_toggle_for_dm" = "Megjelenik a szobák listájában";
"room_details_no_local_addresses_for_dm" = "Ennek nincs helyi címe";
"room_details_advanced_room_id_for_dm" = "Azon.:";
"room_details_advanced_e2e_encryption_enabled_for_dm" = "A titkosítás bekapcsolva";
"room_details_advanced_e2e_encryption_disabled_for_dm" = "Itt a titkosítás nincs bekapcsolva.";
"pin_protection_choose_pin_welcome_after_login" = "Üdv újra.";
"pin_protection_choose_pin_welcome_after_register" = "Üdv!";
"pin_protection_not_allowed_pin" = "Ez a PIN biztonsági okokból nem használható. Kérlek adj meg egy másik PIN-t";
"pin_protection_explanatory" = "A PIN beállításával védheted az olyan dolgokat, mint pl. üzenetek és névjegyek, hogy csak te férhessél hozzájuk az alkalmazás indulásakor megadott PIN kóddal.";
"pin_protection_kick_user_alert_message" = "Túl sok a hiba, ki lettél jelentkeztetve";
"searchable_directory_create_new_room" = "Új szoba készítése";
"searchable_directory_x_network" = "%@ hálózat";
"searchable_directory_search_placeholder" = "Név vagy azon.";
"create_room_title" = "Új szoba";
"create_room_section_header_name" = "Szoba neve";
"create_room_placeholder_name" = "Név";
"create_room_section_header_topic" = "Szoba témája (nem kötelező)";
"create_room_placeholder_topic" = "Téma";
"create_room_section_header_encryption" = "Szoba titkosítása";
"create_room_enable_encryption" = "Titkosítás engedélyezése";
"create_room_section_footer_encryption" = "A titkosítást ezután nem lehet kikapcsolni.";
"create_room_section_header_type" = "Szoba típusa";
"create_room_type_private" = "Privát szoba";
"create_room_type_public" = "Nyilvános szoba";
"create_room_section_footer_type" = "Emberek csak meghívóval csatlakozhatnak a privát szobához.";
"create_room_show_in_directory" = "A szoba megjelenítése a listában";
"create_room_section_header_address" = "Szoba címe";
"create_room_placeholder_address" = "#testroom:matrix.org";
"room_info_list_one_member" = "1 tag";
"room_info_list_several_members" = "%@ tag";
"room_info_list_section_other" = "Más";

View file

@ -1181,7 +1181,7 @@
"pin_protection_choose_pin_welcome_after_login" = "Bentornato/a.";
"pin_protection_choose_pin_welcome_after_register" = "Benvenuti.";
"pin_protection_not_allowed_pin" = "Per motivi di sicurezza, questo PIN non è disponibile. Provane un altro";
"pin_protection_explanatory" = "I PIN aiutano a tenere sicuri il tuo profilo, i messaggi e i contatti, in modo che solo tu possa vederli.";
"pin_protection_explanatory" = "L'impostazione di un PIN ti permette di proteggere dati come messaggi e contatti, in modo che solo tu possa vederli inserendo il PIN all'apertura dell'app.";
"searchable_directory_create_new_room" = "Crea una nuova stanza";
"searchable_directory_x_network" = "Rete %@";
"searchable_directory_search_placeholder" = "Nome o ID";
@ -1204,3 +1204,20 @@
"room_info_list_one_member" = "1 membro";
"room_info_list_several_members" = "%@ membri";
"room_info_list_section_other" = "Altro";
"room_participants_leave_prompt_title_for_dm" = "Esci";
"room_participants_leave_prompt_msg_for_dm" = "Vuoi veramente uscire?";
"room_participants_filter_room_members_for_dm" = "Filtra membri";
"room_participants_security_information_room_not_encrypted_for_dm" = "I messaggi qui non sono cifrati end-to-end.";
"room_participants_security_information_room_encrypted_for_dm" = "I messaggi qui sono cifrati end-to-end. \n \nI tuoi messaggi sono protetti con lucchetti e solo tu e il destinatario avete le chiavi univoche per sbloccarli.";
"room_details_title_for_dm" = "Dettagli";
"room_details_photo_for_dm" = "Foto";
"room_details_room_name_for_dm" = "Nome";
"room_details_access_section_for_dm" = "Chi può accedervi?";
"room_details_access_section_anyone_apart_from_guest_for_dm" = "Chiunque conosca il link, eccetto gli ospiti";
"room_details_access_section_anyone_for_dm" = "Chiunque conosca il link, compresi gli ospiti";
"room_details_access_section_directory_toggle_for_dm" = "Mostra nell'elenco delle stanze";
"room_details_no_local_addresses_for_dm" = "Non ha indirizzi locali";
"room_details_advanced_room_id_for_dm" = "ID:";
"room_details_advanced_e2e_encryption_enabled_for_dm" = "La crittografia è attiva";
"room_details_advanced_e2e_encryption_disabled_for_dm" = "La crittografia non è attiva.";
"pin_protection_kick_user_alert_message" = "Troppi errori, sei stato disconnesso";

View file

@ -55,3 +55,9 @@
/* Incoming named video conference invite from a specific person */
"VIDEO_CONF_NAMED_FROM_USER" = "Grupowe połączenie wideo z %@: '%@'";
"KEY_VERIFICATION_REQUEST_FROM_USER" = "%@ wymaga weryfikacji";
/* New message indicator on unknown room */
"MESSAGE" = "Wiadomość";
/* New message indicator from a DM */
"MESSAGE_FROM_X" = "Wiadomość od %@";
/* New message indicator on a room */
"MESSAGE_IN_X" = "Wiadomość w %@";

View file

@ -1192,7 +1192,7 @@
"pin_protection_choose_pin_welcome_after_login" = "С возвращением.";
"pin_protection_choose_pin_welcome_after_register" = "Добро пожаловать.";
"pin_protection_not_allowed_pin" = "По соображениям безопасности этот PIN-код недоступен. Пожалуйста, попробуйте другой PIN-код";
"pin_protection_explanatory" = "PIN-коды помогают защитить ваш профиль, сообщения и контакты, поэтому только вы можете получить к ним доступ.";
"pin_protection_explanatory" = "Установка PIN-кода позволяет защитить такие данные, как сообщения и контакты, поэтому только вы можете получить к ним доступ, введя PIN-код в начале приложения.";
"searchable_directory_create_new_room" = "Создать новую комнату";
"searchable_directory_x_network" = "%@ Сеть";
"searchable_directory_search_placeholder" = "Имя или ID";
@ -1231,3 +1231,4 @@
"room_details_advanced_room_id_for_dm" = "ID:";
"room_details_advanced_e2e_encryption_enabled_for_dm" = "Шифрование включено";
"room_details_advanced_e2e_encryption_disabled_for_dm" = "Шифрование не включено.";
"pin_protection_kick_user_alert_message" = "Слишком много ошибок, вы вышли из системы";

View file

@ -1193,7 +1193,7 @@
"pin_protection_choose_pin_welcome_after_login" = "Mirë se u kthyet.";
"pin_protection_choose_pin_welcome_after_register" = "Mirë se vini.";
"pin_protection_not_allowed_pin" = "Për arsye sigurie, ky PIN sështë i passhëm. Ju lutemi, provoni një PIN tjetër";
"pin_protection_explanatory" = "PIN-et ndihmojnë për të mbajtur të siguruar profilin, mesazhet dhe kontaktet tuaja, që kështu të mund ti përdorni.";
"pin_protection_explanatory" = "Ujdisja e një PIN-it ju lejon të mbroni të dhëna të tilla si, mesazhe dhe kontakte, që kështu të mund ti përdorni duke dhënë PIN-in gjatë nisjes së aplikacionit.";
"searchable_directory_create_new_room" = "Krijoni një dhomë të re";
"searchable_directory_x_network" = "Rrjet %@";
"searchable_directory_search_placeholder" = "Emër ose ID";
@ -1216,3 +1216,20 @@
"room_info_list_one_member" = "1 anëtar";
"room_info_list_several_members" = "%@ anëtarë";
"room_info_list_section_other" = "Tjetër";
"room_participants_leave_prompt_title_for_dm" = "Ikni";
"room_participants_leave_prompt_msg_for_dm" = "Jeni i sigurt se doni të ikni?";
"room_participants_filter_room_members_for_dm" = "Filtroni anëtarë";
"room_participants_security_information_room_not_encrypted_for_dm" = "Mesazhet këtu sjanë të fshehtëzuar skaj-më-skaj.";
"room_participants_security_information_room_encrypted_for_dm" = "Mesazhet këtu janë të fshehtëzuar skaj-më-skaj.\n\nMesazhet tuaj janë të siguruar me kyçe dhe vetëm ju dhe marrësi keni kyçet unikë për shkyçjen e tyre.";
"room_details_title_for_dm" = "Hollësi";
"room_details_photo_for_dm" = "Foto";
"room_details_room_name_for_dm" = "Emër";
"room_details_access_section_for_dm" = "Kush mund të përdorë këtë?";
"room_details_access_section_anyone_apart_from_guest_for_dm" = "Cilido që njeh lidhjen, hiq vizitorë";
"room_details_access_section_anyone_for_dm" = "Cilido që njeh lidhjen, përfshi vizitorë";
"room_details_access_section_directory_toggle_for_dm" = "Paraqit çka lista e dhomave";
"room_details_no_local_addresses_for_dm" = "Kjo ska adresa vendore";
"room_details_advanced_room_id_for_dm" = "ID:";
"room_details_advanced_e2e_encryption_enabled_for_dm" = "Këtu fshehtëzimi është i aktivizuar";
"room_details_advanced_e2e_encryption_disabled_for_dm" = "Këtu fshehtëzimi sështë i aktivizuar.";
"pin_protection_kick_user_alert_message" = "Shumë gabime, u bë nxjerrja juaj jashtë";

View file

@ -462,7 +462,7 @@
"identity_server_settings_alert_no_terms_title" = "Identitetsservern har inga användarvillkor";
"identity_server_settings_alert_change_title" = "Byt identitetsserver";
"room_details_people" = "Medlemmar";
"room_details_files" = "Filer";
"room_details_files" = "Uppladdningar";
"room_details_settings" = "Inställningar";
"room_details_room_name" = "Rumsnamn";
"room_details_topic" = "Ämne";
@ -1111,7 +1111,7 @@
"major_update_information" = "Vi är glada att meddela att vi har bytt namn! Din app är uppdaterad och du är inloggad på ditt konto.";
"major_update_learn_more_action" = "Lär dig mer";
"major_update_done_action" = "Förstått";
"pin_protection_choose_pin" = "Väl en PIN-kod för säkerhet";
"pin_protection_choose_pin" = "Skapa en PIN-kod för säkerhet";
"pin_protection_confirm_pin" = "Bekräfta din PIN-kod";
"pin_protection_confirm_pin_to_disable" = "Bekräfta PIN-kod för att inaktivera PIN-kod";
"pin_protection_enter_pin" = "Ange din PIN-kod";
@ -1140,3 +1140,49 @@
"biometrics_cant_unlocked_alert_message_x" = "För att låsa upp, använd %@ eller logga in igen och aktivera %@ igen";
"biometrics_cant_unlocked_alert_message_login" = "Logga in igen";
"biometrics_cant_unlocked_alert_message_retry" = "Försök igen";
"joined" = "Gått med";
"switch" = "Byt";
"more" = "Mer";
"room_participants_leave_prompt_title_for_dm" = "Lämna";
"room_participants_leave_prompt_msg_for_dm" = "Är du säker på att du vill lämna?";
"room_participants_filter_room_members_for_dm" = "Filtrera medlemmar";
"room_participants_security_information_room_not_encrypted_for_dm" = "Meddelanden här är inte totalsträckskrypterade.";
"room_participants_security_information_room_encrypted_for_dm" = "Meddelanden här är totalsträckskrypterade.\n\nDina meddelanden är säkrade med lås och endast du och mottagaren har de unika nycklarna för att låsa upp dem.";
"room_details_title_for_dm" = "Detaljer";
"room_details_photo_for_dm" = "Bild";
"room_details_room_name_for_dm" = "Namn";
"room_details_access_section_for_dm" = "Vem kan komma åt detta?";
"room_details_access_section_anyone_apart_from_guest_for_dm" = "Alla som har länken, förutom gäster";
"room_details_access_section_anyone_for_dm" = "Alla som har länken, inklusive gäster";
"room_details_access_section_directory_toggle_for_dm" = "Lista i rumskatalogen";
"room_details_no_local_addresses_for_dm" = "Detta har inga lokala adresser";
"room_details_advanced_room_id_for_dm" = "ID:";
"room_details_advanced_e2e_encryption_enabled_for_dm" = "Kryptering är aktiverad här";
"room_details_advanced_e2e_encryption_disabled_for_dm" = "Kryptering är inte aktiverad här.";
"device_verification_self_verify_wait_recover_secrets_checking_availability" = "Letar efter andra verifieringsfunktioner…";
"pin_protection_choose_pin_welcome_after_login" = "Välkommen tillbaka.";
"pin_protection_choose_pin_welcome_after_register" = "Välkommen.";
"pin_protection_not_allowed_pin" = "Av säkerhetsskäl är den här PIN-koden inte tillgänglig. Vänligen pröva en annan PIN-kod";
"pin_protection_explanatory" = "Att ställa in en PIN-kod låter dig skydda data som meddelanden och kontakter så att endast du kan komma åt dem genom att slå in koden när du startar appen.";
"pin_protection_kick_user_alert_message" = "För många fel, du har loggats ut";
"searchable_directory_create_new_room" = "Skapa ett nytt rum";
"searchable_directory_x_network" = "%@-nätverk";
"searchable_directory_search_placeholder" = "Namn eller ID";
"create_room_title" = "Nytt rum";
"create_room_section_header_name" = "Rumsnamn";
"create_room_placeholder_name" = "Namn";
"create_room_section_header_topic" = "Rumsämne (valfritt)";
"create_room_placeholder_topic" = "Ämne";
"create_room_section_header_encryption" = "Rumskryptering";
"create_room_enable_encryption" = "Aktivera kryptering";
"create_room_section_footer_encryption" = "Kryptering kan inte inaktiveras igen.";
"create_room_section_header_type" = "Rumstyp";
"create_room_type_private" = "Privat rum";
"create_room_type_public" = "Offentligt rum";
"create_room_section_footer_type" = "Personer kan endast gå med i ett privat rum om de bjuds in.";
"create_room_show_in_directory" = "Visa rummet i katalogen";
"create_room_section_header_address" = "Rumsadress";
"create_room_placeholder_address" = "#testrum:matrix.org";
"room_info_list_one_member" = "1 medlem";
"room_info_list_several_members" = "%@ medlemmar";
"room_info_list_section_other" = "Andra";

View file

@ -18,6 +18,12 @@ import UIKit
extension UIViewController {
private enum UIViewControllerConstants {
static let fabButtonSize = CGSize(width: 78, height: 78)
static let fabButtonTrailingMargin: CGFloat = 0
static let fabButtonBottomMargin: CGFloat = 9
}
/// Remove back bar button title when pushing a view controller.
/// This method should be called on the previous controller in UINavigationController stack.
@objc func vc_removeBackTitle() {
@ -61,4 +67,40 @@ extension UIViewController {
func vc_removeFromParent() {
self.vc_removeChildViewController(viewController: self)
}
/// Adds a floating action button to the bottom-right of the page.
/// - Parameters:
/// - image: Image to be showed in fab
/// - target: target of the button
/// - action: action of the button
/// - Returns: The FAB view
@discardableResult
@objc func vc_addFAB(withImage image: UIImage,
target: Any?,
action: Selector?) -> UIImageView {
let fabImageView = UIImageView(image: image)
fabImageView.translatesAutoresizingMaskIntoConstraints = false
fabImageView.backgroundColor = .clear
fabImageView.contentMode = .center
fabImageView.layer.shadowOpacity = 0.3
fabImageView.layer.shadowOffset = CGSize(width: 0, height: 3)
fabImageView.isUserInteractionEnabled = true
self.view.addSubview(fabImageView)
fabImageView.widthAnchor.constraint(equalToConstant: UIViewControllerConstants.fabButtonSize.width).isActive = true
fabImageView.heightAnchor.constraint(equalToConstant: UIViewControllerConstants.fabButtonSize.height).isActive = true
fabImageView.trailingAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.trailingAnchor,
constant: UIViewControllerConstants.fabButtonTrailingMargin).isActive = true
self.view.safeAreaLayoutGuide.bottomAnchor.constraint(equalTo: fabImageView.bottomAnchor,
constant: UIViewControllerConstants.fabButtonBottomMargin).isActive = true
let tapGestureRecognizer = UITapGestureRecognizer(target: target, action: action)
tapGestureRecognizer.numberOfTouchesRequired = 1
tapGestureRecognizer.numberOfTapsRequired = 1
fabImageView.addGestureRecognizer(tapGestureRecognizer)
return fabImageView
}
}

View file

@ -87,6 +87,7 @@ internal enum Asset {
internal static let uploadIcon = ImageAsset(name: "upload_icon")
internal static let voiceCallHangonIcon = ImageAsset(name: "voice_call_hangon_icon")
internal static let voiceCallHangupIcon = ImageAsset(name: "voice_call_hangup_icon")
internal static let addMemberFloatingAction = ImageAsset(name: "add_member_floating_action")
internal static let addParticipant = ImageAsset(name: "add_participant")
internal static let detailsIcon = ImageAsset(name: "details_icon")
internal static let editIcon = ImageAsset(name: "edit_icon")

View file

@ -470,22 +470,6 @@ internal enum VectorL10n {
internal static var cancel: String {
return VectorL10n.tr("Vector", "cancel")
}
/// Element Android
internal static var clientAndroidName: String {
return VectorL10n.tr("Vector", "client_android_name")
}
/// Element Desktop
internal static var clientDesktopName: String {
return VectorL10n.tr("Vector", "client_desktop_name")
}
/// Element iOS
internal static var clientIosName: String {
return VectorL10n.tr("Vector", "client_ios_name")
}
/// Element Web
internal static var clientWebName: String {
return VectorL10n.tr("Vector", "client_web_name")
}
/// Close
internal static var close: String {
return VectorL10n.tr("Vector", "close")
@ -966,7 +950,7 @@ internal enum VectorL10n {
internal static var deviceVerificationSelfVerifyStartWaiting: String {
return VectorL10n.tr("Vector", "device_verification_self_verify_start_waiting")
}
/// or another cross-signing capable Matrix client
/// This works with Element and other cross-signing capable Matrix cients.
internal static var deviceVerificationSelfVerifyWaitAdditionalInformation: String {
return VectorL10n.tr("Vector", "device_verification_self_verify_wait_additional_information")
}

View file

@ -233,7 +233,7 @@ static RageShakeManager* sharedInstance = nil;
UIGraphicsEndImageContext();
// the image is copied in the clipboard
[UIPasteboard generalPasteboard].image = image;
MXKPasteboardManager.shared.pasteboard.image = image;
return image;
}

View file

@ -119,10 +119,6 @@
- (void)cancelEditionMode:(BOOL)forceRefresh;
#pragma mark - Room handling
/**
Add the (+) button at the right bottom corner of the view.
*/
- (void)addPlusButton;
/**
Action triggered when the user taps on the (+) button.

View file

@ -1606,36 +1606,6 @@
#pragma mark - Room handling
- (void)addPlusButton
{
// Add room options button
plusButtonImageView = [[UIImageView alloc] init];
[plusButtonImageView setTranslatesAutoresizingMaskIntoConstraints:NO];
[self.view addSubview:plusButtonImageView];
plusButtonImageView.backgroundColor = [UIColor clearColor];
plusButtonImageView.contentMode = UIViewContentModeCenter;
plusButtonImageView.image = [UIImage imageNamed:@"plus_floating_action"];
plusButtonImageView.layer.shadowOpacity = 0.3;
plusButtonImageView.layer.shadowOffset = CGSizeMake(0, 3);
CGFloat side = 78.0f;
[plusButtonImageView.widthAnchor constraintEqualToConstant:side].active = YES;
[plusButtonImageView.heightAnchor constraintEqualToConstant:side].active = YES;
// align to safe area
[plusButtonImageView.trailingAnchor constraintEqualToAnchor:self.view.safeAreaLayoutGuide.trailingAnchor].active = YES;
[self.view.safeAreaLayoutGuide.bottomAnchor constraintEqualToAnchor:plusButtonImageView.bottomAnchor constant:9].active = YES;
plusButtonImageView.userInteractionEnabled = YES;
// Handle tap gesture
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onPlusButtonPressed)];
[tap setNumberOfTouchesRequired:1];
[tap setNumberOfTapsRequired:1];
[plusButtonImageView addGestureRecognizer:tap];
}
- (void)onPlusButtonPressed
{
__weak typeof(self) weakSelf = self;

View file

@ -102,7 +102,9 @@
self.groupsSearchBar.placeholder = NSLocalizedStringFromTable(@"search_default_placeholder", @"Vector", nil);
// @TODO: Add programmatically the (+) button.
//[self addPlusButton];
// plusButtonImageView = [self vc_addFABWithImage:[UIImage imageNamed:@"plus_floating_action"]
// target:self
// action:@selector(onPlusButtonPressed)];
// Observe user interface theme change.
kThemeServiceDidChangeThemeNotificationObserver = [[NSNotificationCenter defaultCenter] addObserverForName:kThemeServiceDidChangeThemeNotification object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification *notif) {
@ -549,63 +551,6 @@
#pragma mark - Room handling
- (void)addPlusButton
{
// Add room options button
plusButtonImageView = [[UIImageView alloc] init];
[plusButtonImageView setTranslatesAutoresizingMaskIntoConstraints:NO];
[self.view addSubview:plusButtonImageView];
plusButtonImageView.backgroundColor = [UIColor clearColor];
plusButtonImageView.contentMode = UIViewContentModeCenter;
plusButtonImageView.image = [UIImage imageNamed:@"plus_floating_action"];
plusButtonImageView.layer.shadowOpacity = 0.3;
plusButtonImageView.layer.shadowOffset = CGSizeMake(0, 3);
CGFloat side = 78.0f;
NSLayoutConstraint* widthConstraint = [NSLayoutConstraint constraintWithItem:plusButtonImageView
attribute:NSLayoutAttributeWidth
relatedBy:NSLayoutRelationEqual
toItem:nil
attribute:NSLayoutAttributeNotAnAttribute
multiplier:1
constant:side];
NSLayoutConstraint* heightConstraint = [NSLayoutConstraint constraintWithItem:plusButtonImageView
attribute:NSLayoutAttributeHeight
relatedBy:NSLayoutRelationEqual
toItem:nil
attribute:NSLayoutAttributeNotAnAttribute
multiplier:1
constant:side];
NSLayoutConstraint* trailingConstraint = [NSLayoutConstraint constraintWithItem:plusButtonImageView
attribute:NSLayoutAttributeTrailing
relatedBy:NSLayoutRelationEqual
toItem:self.view
attribute:NSLayoutAttributeTrailing
multiplier:1
constant:0];
NSLayoutConstraint* bottomConstraint = [NSLayoutConstraint constraintWithItem:self.bottomLayoutGuide
attribute:NSLayoutAttributeTop
relatedBy:NSLayoutRelationEqual
toItem:plusButtonImageView
attribute:NSLayoutAttributeBottom
multiplier:1
constant:9];
[NSLayoutConstraint activateConstraints:@[widthConstraint, heightConstraint, trailingConstraint, bottomConstraint]];
plusButtonImageView.userInteractionEnabled = YES;
// Handle tap gesture
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onPlusButtonPressed)];
[tap setNumberOfTouchesRequired:1];
[tap setNumberOfTapsRequired:1];
[plusButtonImageView addGestureRecognizer:tap];
}
- (void)onPlusButtonPressed
{
__weak typeof(self) weakSelf = self;

View file

@ -73,7 +73,9 @@
self.recentsTableView.tag = RecentsDataSourceModeHome;
// Add the (+) button programmatically
[self addPlusButton];
plusButtonImageView = [self vc_addFABWithImage:[UIImage imageNamed:@"plus_floating_action"]
target:self
action:@selector(onPlusButtonPressed)];
// Register table view cell used for rooms collection.
[self.recentsTableView registerClass:TableViewCellWithCollectionView.class forCellReuseIdentifier:TableViewCellWithCollectionView.defaultReuseIdentifier];

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="16096" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="79A-qb-tmk">
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="16097.3" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="79A-qb-tmk">
<device id="retina4_7" orientation="portrait" appearance="light"/>
<dependencies>
<deployment identifier="iOS"/>
@ -20,13 +20,13 @@
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="tIM-sl-gwE">
<rect key="frame" x="0.0" y="0.0" width="375" height="527"/>
<rect key="frame" x="0.0" y="0.0" width="375" height="518.5"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="IlB-Ch-LEo">
<rect key="frame" x="27.5" y="0.0" width="320" height="527"/>
<rect key="frame" x="0.0" y="0.0" width="375" height="518.5"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="d5Y-pj-XsI">
<rect key="frame" x="20" y="20" width="280" height="84"/>
<rect key="frame" x="20" y="20" width="335" height="84"/>
<string key="text">Verify this session from one of your others sessions, granting it access to encrypted messages.
Use the latest Riot on your other devices:</string>
@ -35,10 +35,10 @@ Use the latest Riot on your other devices:</string>
<nil key="highlightedColor"/>
</label>
<stackView opaque="NO" contentMode="scaleToFill" distribution="fillEqually" translatesAutoresizingMaskIntoConstraints="NO" id="ANK-XS-dY7">
<rect key="frame" x="0.0" y="144" width="320" height="95.5"/>
<rect key="frame" x="27.5" y="144" width="320" height="48"/>
<subviews>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" alignment="center" spacing="14" translatesAutoresizingMaskIntoConstraints="NO" id="3at-ql-vhb">
<rect key="frame" x="0.0" y="0.0" width="160" height="95.5"/>
<rect key="frame" x="0.0" y="0.0" width="160" height="48"/>
<subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="monitor" translatesAutoresizingMaskIntoConstraints="NO" id="nrB-Kj-4zE">
<rect key="frame" x="56" y="0.0" width="48" height="48"/>
@ -47,18 +47,10 @@ Use the latest Riot on your other devices:</string>
<constraint firstAttribute="width" secondItem="nrB-Kj-4zE" secondAttribute="height" multiplier="1:1" id="TOT-bj-1W4"/>
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="iBP-FF-AYM">
<rect key="frame" x="38.5" y="62" width="83" height="33.5"/>
<string key="text">Riot Web
Riot Desktop</string>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
</subviews>
</stackView>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" alignment="center" spacing="14" translatesAutoresizingMaskIntoConstraints="NO" id="coY-7W-lY7">
<rect key="frame" x="160" y="0.0" width="160" height="95.5"/>
<rect key="frame" x="160" y="0.0" width="160" height="48"/>
<subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="smartphone" translatesAutoresizingMaskIntoConstraints="NO" id="P0P-X4-uSQ">
<rect key="frame" x="56" y="0.0" width="48" height="48"/>
@ -67,14 +59,6 @@ Riot Desktop</string>
<constraint firstAttribute="width" secondItem="P0P-X4-uSQ" secondAttribute="height" multiplier="1:1" id="AZP-GN-y8E"/>
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="gLH-sE-KCq">
<rect key="frame" x="22.5" y="62" width="115" height="33.5"/>
<string key="text">Riot iOS
Riot X for Android</string>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
</subviews>
</stackView>
</subviews>
@ -82,26 +66,26 @@ Riot X for Android</string>
<constraint firstAttribute="width" constant="320" id="TyM-5Y-YSw"/>
</constraints>
</stackView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="or another cross-signing capable Matrix client" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="rFM-AQ-wAB">
<rect key="frame" x="20" y="259.5" width="280" height="14.5"/>
<fontDescription key="fontDescription" type="system" weight="medium" pointSize="12"/>
<color key="textColor" white="0.66666666666666663" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="This works with Element and other cross-signing capable Matrix cients." textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="LnW-1H-Ltq">
<rect key="frame" x="20" y="232" width="335" height="33.5"/>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" translatesAutoresizingMaskIntoConstraints="NO" id="8oJ-o6-DLK">
<rect key="frame" x="20" y="294" width="280" height="233"/>
<rect key="frame" x="20" y="285.5" width="335" height="233"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="dXT-cL-ukJ">
<rect key="frame" x="0.0" y="0.0" width="280" height="114.5"/>
<rect key="frame" x="0.0" y="0.0" width="335" height="114.5"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Checking for other verification capabilities ..." textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="A4x-sK-d5C">
<rect key="frame" x="20" y="10" width="240" height="38.5"/>
<rect key="frame" x="20" y="10" width="295" height="38.5"/>
<fontDescription key="fontDescription" type="system" pointSize="16"/>
<color key="textColor" white="0.66666666666666663" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<nil key="highlightedColor"/>
</label>
<activityIndicatorView opaque="NO" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" style="medium" translatesAutoresizingMaskIntoConstraints="NO" id="esP-Lt-anU">
<rect key="frame" x="0.0" y="64.5" width="280" height="20"/>
<rect key="frame" x="0.0" y="64.5" width="335" height="20"/>
</activityIndicatorView>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
@ -116,10 +100,10 @@ Riot X for Android</string>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="nf8-Ye-b9r">
<rect key="frame" x="0.0" y="114.5" width="280" height="118.5"/>
<rect key="frame" x="0.0" y="114.5" width="335" height="118.5"/>
<subviews>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="OEt-k0-vgM" customClass="RoundedButton" customModule="Riot" customModuleProvider="target">
<rect key="frame" x="0.0" y="10" width="280" height="44"/>
<rect key="frame" x="0.0" y="10" width="335" height="44"/>
<constraints>
<constraint firstAttribute="height" constant="44" id="7ws-Nc-I7y"/>
</constraints>
@ -132,7 +116,7 @@ Riot X for Android</string>
</connections>
</button>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="If you can't accessing an existing session" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="4Ou-cM-K9C">
<rect key="frame" x="20" y="64" width="240" height="24.5"/>
<rect key="frame" x="20" y="64" width="295" height="24.5"/>
<fontDescription key="fontDescription" type="system" weight="medium" pointSize="12"/>
<color key="textColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<nil key="highlightedColor"/>
@ -161,16 +145,16 @@ Riot X for Android</string>
<constraint firstAttribute="height" priority="250" id="72E-My-WHK"/>
<constraint firstItem="ANK-XS-dY7" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="IlB-Ch-LEo" secondAttribute="leading" id="9BR-a1-3By"/>
<constraint firstAttribute="bottom" secondItem="8oJ-o6-DLK" secondAttribute="bottom" id="CB2-Nd-n2g"/>
<constraint firstItem="rFM-AQ-wAB" firstAttribute="top" secondItem="ANK-XS-dY7" secondAttribute="bottom" constant="20" id="Goe-Tt-Jbm"/>
<constraint firstItem="LnW-1H-Ltq" firstAttribute="top" secondItem="ANK-XS-dY7" secondAttribute="bottom" constant="40" id="Mph-SR-U7u"/>
<constraint firstAttribute="trailing" secondItem="LnW-1H-Ltq" secondAttribute="trailing" constant="20" id="NZH-JW-JVA"/>
<constraint firstItem="d5Y-pj-XsI" firstAttribute="leading" secondItem="IlB-Ch-LEo" secondAttribute="leading" constant="20" id="Okc-DX-xdE"/>
<constraint firstItem="d5Y-pj-XsI" firstAttribute="top" secondItem="IlB-Ch-LEo" secondAttribute="top" constant="20" id="Pkt-ox-zZs"/>
<constraint firstItem="rFM-AQ-wAB" firstAttribute="leading" secondItem="IlB-Ch-LEo" secondAttribute="leading" constant="20" id="PtP-G3-lC6"/>
<constraint firstAttribute="trailing" secondItem="rFM-AQ-wAB" secondAttribute="trailing" constant="20" id="Q78-Oe-Lh2"/>
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="ANK-XS-dY7" secondAttribute="trailing" id="RQI-kF-Z1h"/>
<constraint firstItem="8oJ-o6-DLK" firstAttribute="leading" secondItem="IlB-Ch-LEo" secondAttribute="leading" constant="20" id="RtP-rm-bjH"/>
<constraint firstItem="8oJ-o6-DLK" firstAttribute="top" secondItem="rFM-AQ-wAB" secondAttribute="bottom" constant="20" id="dvv-3U-uH4"/>
<constraint firstItem="LnW-1H-Ltq" firstAttribute="leading" secondItem="IlB-Ch-LEo" secondAttribute="leading" constant="20" id="VOi-rz-Qf1"/>
<constraint firstItem="ANK-XS-dY7" firstAttribute="top" secondItem="d5Y-pj-XsI" secondAttribute="bottom" constant="40" id="gnp-AK-DYa"/>
<constraint firstItem="ANK-XS-dY7" firstAttribute="centerX" secondItem="IlB-Ch-LEo" secondAttribute="centerX" id="nEo-IT-GtP"/>
<constraint firstItem="8oJ-o6-DLK" firstAttribute="top" secondItem="LnW-1H-Ltq" secondAttribute="bottom" constant="20" id="tLd-x1-rOB"/>
<constraint firstAttribute="trailing" secondItem="8oJ-o6-DLK" secondAttribute="trailing" constant="20" id="vev-7p-7ua"/>
</constraints>
</view>
@ -204,12 +188,10 @@ Riot X for Android</string>
<viewLayoutGuide key="safeArea" id="GnW-bb-rsL"/>
</view>
<connections>
<outlet property="additionalInformationLabel" destination="rFM-AQ-wAB" id="TDZ-Xd-gP1"/>
<outlet property="additionalInformationLabel" destination="LnW-1H-Ltq" id="TJS-GC-ABf"/>
<outlet property="desktopClientImageView" destination="nrB-Kj-4zE" id="yl0-Ju-luK"/>
<outlet property="desktopClientLabel" destination="iBP-FF-AYM" id="6N0-AJ-rIX"/>
<outlet property="informationLabel" destination="d5Y-pj-XsI" id="TMb-bc-58a"/>
<outlet property="mobileClientImageView" destination="P0P-X4-uSQ" id="WtT-ix-yq8"/>
<outlet property="mobileClientLabel" destination="gLH-sE-KCq" id="jQ0-7U-mr8"/>
<outlet property="recoverSecretsAdditionalInformationLabel" destination="4Ou-cM-K9C" id="80N-lF-x2L"/>
<outlet property="recoverSecretsAvailabilityActivityIndicatorView" destination="esP-Lt-anU" id="4jv-GA-Hm9"/>
<outlet property="recoverSecretsAvailabilityLoadingContainerView" destination="dXT-cL-ukJ" id="rBM-Hj-c3o"/>

View file

@ -33,10 +33,7 @@ final class KeyVerificationSelfVerifyWaitViewController: UIViewController {
@IBOutlet private weak var informationLabel: UILabel!
@IBOutlet private weak var desktopClientImageView: UIImageView!
@IBOutlet private weak var desktopClientLabel: UILabel!
@IBOutlet private weak var mobileClientImageView: UIImageView!
@IBOutlet private weak var mobileClientLabel: UILabel!
@IBOutlet private weak var additionalInformationLabel: UILabel!
@ -99,11 +96,9 @@ final class KeyVerificationSelfVerifyWaitViewController: UIViewController {
}
self.informationLabel.textColor = theme.textPrimaryColor
self.desktopClientLabel.textColor = theme.textPrimaryColor
self.desktopClientImageView.tintColor = theme.tintColor
self.mobileClientLabel.textColor = theme.textPrimaryColor
self.mobileClientImageView.tintColor = theme.tintColor
self.additionalInformationLabel.textColor = theme.textSecondaryColor
self.additionalInformationLabel.textColor = theme.textPrimaryColor
self.recoverSecretsAvailabilityLoadingLabel.textColor = theme.textSecondaryColor
self.recoverSecretsAvailabilityActivityIndicatorView.color = theme.tintColor
}
@ -129,9 +124,6 @@ final class KeyVerificationSelfVerifyWaitViewController: UIViewController {
self.title = VectorL10n.deviceVerificationSelfVerifyWaitTitle
self.informationLabel.text = VectorL10n.deviceVerificationSelfVerifyWaitInformation
self.desktopClientLabel.vc_setText("\(VectorL10n.clientWebName)\n\(VectorL10n.clientDesktopName)", withLineSpacing: Constants.clientNamesLineSpacing, alignement: .center)
self.mobileClientLabel.vc_setText("\(VectorL10n.clientIosName)\n\(VectorL10n.clientAndroidName)",
withLineSpacing: Constants.clientNamesLineSpacing, alignement: .center)
self.desktopClientImageView.image = Asset.Images.monitor.image.withRenderingMode(.alwaysTemplate)
self.mobileClientImageView.image = Asset.Images.smartphone.image.withRenderingMode(.alwaysTemplate)

View file

@ -66,10 +66,9 @@
self.recentsTableView.tag = RecentsDataSourceModePeople;
// Add the (+) button programmatically
[self addPlusButton];
// Apply tintColor on the (+) button
plusButtonImageView.image = [UIImage imageNamed:@"people_floating_action"];
plusButtonImageView = [self vc_addFABWithImage:[UIImage imageNamed:@"people_floating_action"]
target:self
action:@selector(onPlusButtonPressed)];
// Register table view cell for contacts.
[self.recentsTableView registerClass:ContactTableViewCell.class forCellReuseIdentifier:ContactTableViewCell.defaultReuseIdentifier];

View file

@ -51,13 +51,6 @@
RoomMemberDetailsViewController *memberDetailsViewController;
ContactsTableViewController *contactsPickerViewController;
// Display a gradient view above the screen.
CAGradientLayer* tableViewMaskLayer;
// Display a button to invite new member.
UIImageView* addParticipantButtonImageView;
NSLayoutConstraint *addParticipantButtonImageViewBottomConstraint;
UIAlertController *currentAlert;
// Observe kThemeServiceDidChangeThemeNotification to handle user interface theme change.
@ -141,8 +134,12 @@
[self.tableView registerClass:ContactTableViewCell.class forCellReuseIdentifier:@"ParticipantTableViewCellId"];
// Add room creation button programmatically
[self addAddParticipantButton];
// Add invite members button programmatically
[self vc_addFABWithImage:[UIImage imageNamed:@"add_member_floating_action"]
target:self
action:@selector(onAddParticipantButtonPressed)];
// Observe user interface theme change.
kThemeServiceDidChangeThemeNotificationObserver = [[NSNotificationCenter defaultCenter] addObserverForName:kThemeServiceDidChangeThemeNotification object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification *notif) {
@ -168,15 +165,6 @@
self.view.backgroundColor = self.tableView.backgroundColor;
self.tableView.separatorColor = ThemeService.shared.theme.lineBreakColor;
// Update the gradient view above the screen
CGFloat white = 1.0;
[ThemeService.shared.theme.backgroundColor getWhite:&white alpha:nil];
CGColorRef opaqueWhiteColor = [UIColor colorWithWhite:white alpha:1.0].CGColor;
CGColorRef transparentWhiteColor = [UIColor colorWithWhite:white alpha:0].CGColor;
tableViewMaskLayer.colors = @[(__bridge id) transparentWhiteColor, (__bridge id) transparentWhiteColor, (__bridge id) opaqueWhiteColor];
addParticipantButtonImageView.tintColor = ThemeService.shared.theme.tintColor;
if (self.tableView.dataSource)
{
[self.tableView reloadData];
@ -304,40 +292,6 @@
}
}
- (void)viewDidLayoutSubviews
{
[super viewDidLayoutSubviews];
// Sanity check
if (tableViewMaskLayer)
{
CGRect currentBounds = tableViewMaskLayer.bounds;
CGRect newBounds = CGRectIntegral(self.view.frame);
newBounds.size.height -= self.keyboardHeight;
// Check if there is an update
if (!CGSizeEqualToSize(currentBounds.size, newBounds.size))
{
newBounds.origin = CGPointZero;
[UIView animateWithDuration:0.3 delay:0 options:UIViewAnimationOptionBeginFromCurrentState | UIViewAnimationOptionCurveEaseIn
animations:^{
tableViewMaskLayer.bounds = newBounds;
}
completion:^(BOOL finished){
}];
}
// Hide the addParticipants button on landscape when keyboard is visible
BOOL isLandscapeOriented = UIInterfaceOrientationIsLandscape([UIApplication sharedApplication].statusBarOrientation);
addParticipantButtonImageView.hidden = tableViewMaskLayer.hidden = (isLandscapeOriented && self.keyboardHeight);
}
}
#pragma mark -
- (void)setMxRoom:(MXRoom *)mxRoom
@ -554,24 +508,6 @@
}
}
- (void)setKeyboardHeight:(CGFloat)keyboardHeight
{
super.keyboardHeight = keyboardHeight;
// Update addParticipants button position with animation
[UIView animateWithDuration:0.3 delay:0 options:UIViewAnimationOptionBeginFromCurrentState | UIViewAnimationOptionCurveEaseIn
animations:^{
addParticipantButtonImageViewBottomConstraint.constant = keyboardHeight + 9;
// Force to render the view
[self.view layoutIfNeeded];
}
completion:^(BOOL finished){
}];
}
#pragma mark - Internals
- (void)refreshTableView
@ -587,88 +523,6 @@
topViewController.navigationItem.leftBarButtonItem = nil;
}
- (void)addAddParticipantButton
{
// Add blur mask programmatically
tableViewMaskLayer = [CAGradientLayer layer];
// Consider the grayscale components of the ThemeService.shared.theme.backgroundColor.
CGFloat white = 1.0;
[ThemeService.shared.theme.backgroundColor getWhite:&white alpha:nil];
CGColorRef opaqueWhiteColor = [UIColor colorWithWhite:white alpha:1.0].CGColor;
CGColorRef transparentWhiteColor = [UIColor colorWithWhite:white alpha:0].CGColor;
tableViewMaskLayer.colors = @[(__bridge id) transparentWhiteColor, (__bridge id) transparentWhiteColor, (__bridge id) opaqueWhiteColor];
// display a gradient to the rencents bottom (20% of the bottom of the screen)
tableViewMaskLayer.locations = @[@0.0F,
@0.85F,
@1.0F];
tableViewMaskLayer.bounds = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
tableViewMaskLayer.anchorPoint = CGPointZero;
// CAConstraint is not supported on IOS.
// it seems only being supported on Mac OS.
// so viewDidLayoutSubviews will refresh the layout bounds.
[self.view.layer addSublayer:tableViewMaskLayer];
// Add + button
addParticipantButtonImageView = [[UIImageView alloc] init];
[addParticipantButtonImageView setTranslatesAutoresizingMaskIntoConstraints:NO];
[self.view addSubview:addParticipantButtonImageView];
addParticipantButtonImageView.backgroundColor = [UIColor clearColor];
addParticipantButtonImageView.contentMode = UIViewContentModeCenter;
addParticipantButtonImageView.image = [UIImage imageNamed:@"add_participant"];
CGFloat side = 78.0f;
NSLayoutConstraint* widthConstraint = [NSLayoutConstraint constraintWithItem:addParticipantButtonImageView
attribute:NSLayoutAttributeWidth
relatedBy:NSLayoutRelationEqual
toItem:nil
attribute:NSLayoutAttributeNotAnAttribute
multiplier:1
constant:side];
NSLayoutConstraint* heightConstraint = [NSLayoutConstraint constraintWithItem:addParticipantButtonImageView
attribute:NSLayoutAttributeHeight
relatedBy:NSLayoutRelationEqual
toItem:nil
attribute:NSLayoutAttributeNotAnAttribute
multiplier:1
constant:side];
NSLayoutConstraint* centerXConstraint = [NSLayoutConstraint constraintWithItem:addParticipantButtonImageView
attribute:NSLayoutAttributeCenterX
relatedBy:NSLayoutRelationEqual
toItem:self.view
attribute:NSLayoutAttributeCenterX
multiplier:1
constant:0];
addParticipantButtonImageViewBottomConstraint = [NSLayoutConstraint constraintWithItem:self.view
attribute:NSLayoutAttributeBottom
relatedBy:NSLayoutRelationEqual
toItem:addParticipantButtonImageView
attribute:NSLayoutAttributeBottom
multiplier:1
constant:self.keyboardHeight + 9];
// Available on iOS 8 and later
[NSLayoutConstraint activateConstraints:@[widthConstraint, heightConstraint, centerXConstraint, addParticipantButtonImageViewBottomConstraint]];
addParticipantButtonImageView.userInteractionEnabled = YES;
// Handle tap gesture
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onAddParticipantButtonPressed)];
[tap setNumberOfTouchesRequired:1];
[tap setNumberOfTapsRequired:1];
[tap setDelegate:self];
[addParticipantButtonImageView addGestureRecognizer:tap];
}
- (void)onAddParticipantButtonPressed
{
// Push the contacts picker.

View file

@ -2622,7 +2622,7 @@
if (permalink)
{
[[UIPasteboard generalPasteboard] setString:permalink];
MXKPasteboardManager.shared.pasteboard.string = permalink;
}
else
{
@ -5256,7 +5256,7 @@
if (textMessage)
{
[UIPasteboard generalPasteboard].string = textMessage;
MXKPasteboardManager.shared.pasteboard.string = textMessage;
}
else
{

View file

@ -898,7 +898,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
if (roomdId)
{
[[UIPasteboard generalPasteboard] setString:roomdId];
MXKPasteboardManager.shared.pasteboard.string = roomdId;
}
else
{
@ -1006,7 +1006,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
if (roomAlias)
{
[[UIPasteboard generalPasteboard] setString:roomAlias];
MXKPasteboardManager.shared.pasteboard.string = roomAlias;
}
else
{
@ -1031,7 +1031,7 @@ NSString *const kRoomSettingsAdvancedE2eEnabledCellViewIdentifier = @"kRoomSetti
if (permalink)
{
[[UIPasteboard generalPasteboard] setString:permalink];
MXKPasteboardManager.shared.pasteboard.string = permalink;
}
else
{

View file

@ -55,9 +55,9 @@
self.recentsTableView.tag = RecentsDataSourceModeRooms;
// Add the (+) button programmatically
[self addPlusButton];
plusButtonImageView.image = [UIImage imageNamed:@"rooms_floating_action"];
plusButtonImageView = [self vc_addFABWithImage:[UIImage imageNamed:@"rooms_floating_action"]
target:self
action:@selector(onPlusButtonPressed)];
self.enableStickyHeaders = YES;
}

View file

@ -114,6 +114,8 @@ enum {
}];
[self userInterfaceThemeDidChange];
[self registerDeviceChangesNotification];
}
- (void)userInterfaceThemeDidChange
@ -247,6 +249,29 @@ enum {
}
#pragma mark - Data update
- (void)registerDeviceChangesNotification
{
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(onDeviceInfoTrustLevelDidChangeNotification:)
name:MXDeviceInfoTrustLevelDidChangeNotification
object:nil];
}
- (void)onDeviceInfoTrustLevelDidChangeNotification:(NSNotification*)notification
{
MXDeviceInfo *deviceInfo = notification.object;
NSString *deviceId = deviceInfo.deviceId;
if ([deviceId isEqualToString:device.deviceId])
{
[self reloadDeviceWithCompletion:^{
}];
}
}
#pragma mark - Segues
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender

View file

@ -204,6 +204,8 @@ TableViewSectionsDelegate>
}];
[self userInterfaceThemeDidChange];
[self registerUserDevicesChangesNotification];
self.tableViewSections = [TableViewSections new];
self.tableViewSections.delegate = self;
@ -559,6 +561,57 @@ TableViewSectionsDelegate>
}
#pragma mark - Data update
- (void)registerUserDevicesChangesNotification
{
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(onDeviceInfoTrustLevelDidChangeNotification:)
name:MXDeviceInfoTrustLevelDidChangeNotification
object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(crossSigningInfoTrustLevelDidChangeNotification:)
name:MXCrossSigningInfoTrustLevelDidChangeNotification
object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(onDidUpdateUsersDevicesNotification:)
name:MXDeviceListDidUpdateUsersDevicesNotification
object:nil];
}
- (void)onDidUpdateUsersDevicesNotification:(NSNotification*)notification
{
NSDictionary *usersDevices = notification.userInfo;
if ([usersDevices.allKeys containsObject:self.mainSession.myUserId])
{
[self loadDevices];
}
}
- (void)onDeviceInfoTrustLevelDidChangeNotification:(NSNotification*)notification
{
MXDeviceInfo *deviceInfo = notification.object;
NSString *userId = deviceInfo.userId;
if ([userId isEqualToString:self.mainSession.myUserId])
{
[self loadDevices];
}
}
- (void)crossSigningInfoTrustLevelDidChangeNotification:(NSNotification*)notification
{
MXCrossSigningInfo *crossSigningInfo = notification.object;
NSString *userId = crossSigningInfo.userId;
if ([userId isEqualToString:self.mainSession.myUserId])
{
[self loadDevices];
}
}
#pragma mark - Cross-signing
- (void)loadCrossSigning