Merge commit 'e3bf4c1e7bce8c752b4fef54be9a76893561a24a' into sc

Merge v1.0.5 pt. 5

Conflicts:
	README.md
	vector/src/main/java/im/vector/app/features/login/LoginFragment.kt
	vector/src/main/java/im/vector/app/features/themes/ThemeUtils.kt
This commit is contained in:
SpiritCroc 2020-08-22 10:53:41 +02:00
commit 28f65ec0e8
176 changed files with 6670 additions and 2872 deletions

34
.github/ISSUE_TEMPLATE/bug_report.md vendored Normal file
View File

@ -0,0 +1,34 @@
---
name: Bug report
about: Create a report to help us improve Element
title: ''
labels: ''
assignees: ''
---
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Smartphone (please complete the following information):**
- Device: [e.g. Samsung S6]
- OS: [e.g. Android 6.0]
**Additional context**
- App version and store [e.g. 1.0.0 - F-Droid]
- Homeserver: [e.g. matrix.org]
Add any other context about the problem here.

View File

@ -0,0 +1,20 @@
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: type:suggestion
assignees: ''
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.

View File

@ -5,13 +5,15 @@ Features ✨:
- Protect access to the app by a pin code (#1700)
Improvements 🙌:
-
- Give user the possibility to prevent accidental call (#1869)
Bugfix 🐛:
- Fix invisible toolbar (Status.im theme) (#1746)
- Fix relative date time formatting (#822)
- Fix crash reported by RageShake
Translations 🗣:
-
- Add PlayStore description resources in the Triple-T format, to let Weblate handle them
SDK API changes ⚠️:
-
@ -20,6 +22,7 @@ Build 🧱:
-
Other changes:
- Use `Context#getSystemService` extension function provided by `core-ktx` (#1702)
- Hide Flair settings, this is not implemented yet.
- Rename package `im.vector.riotx.attachmentviewer` to `im.vector.lib.attachmentviewer`
- Rename package `im.vector.riotx.multipicker` to `im.vector.lib.multipicker`

View File

@ -40,7 +40,7 @@ For now, the Matrix SDK and the Element application are in the same project. So
## I want to help translating Element
If you want to fix an issue with an English string, please submit a PR.
If you want to fix an issue in other languages, or add a missing translation, or even add a new language, please use [Weblate](https://translate.riot.im/projects/riot-android/).
If you want to fix an issue in other languages, or add a missing translation, or even add a new language, please use [Weblate](https://translate.riot.im/projects/element-android/).
## I want to submit a PR to fix an issue

View File

@ -22,6 +22,7 @@ import android.content.IntentFilter
import android.net.ConnectivityManager
import android.net.Network
import android.os.Build
import androidx.core.content.getSystemService
import timber.log.Timber
import javax.inject.Inject
@ -53,7 +54,7 @@ internal class FallbackNetworkCallbackStrategy @Inject constructor(private val c
internal class PreferredNetworkCallbackStrategy @Inject constructor(context: Context) : NetworkCallbackStrategy {
private var hasChangedCallback: (() -> Unit)? = null
private val conn = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
private val conn = context.getSystemService<ConnectivityManager>()!!
private val networkCallback = object : ConnectivityManager.NetworkCallback() {
override fun onLost(network: Network) {

View File

@ -24,6 +24,7 @@ import android.content.Context
import android.content.Intent
import android.net.ConnectivityManager
import android.net.NetworkInfo
import androidx.core.content.getSystemService
import javax.inject.Inject
internal class NetworkInfoReceiver @Inject constructor() : BroadcastReceiver() {
@ -31,7 +32,7 @@ internal class NetworkInfoReceiver @Inject constructor() : BroadcastReceiver() {
var isConnectedCallback: ((Boolean) -> Unit)? = null
override fun onReceive(context: Context, intent: Intent) {
val conn = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
val conn = context.getSystemService<ConnectivityManager>()!!
val networkInfo: NetworkInfo? = conn.activeNetworkInfo
isConnectedCallback?.invoke(networkInfo?.isConnected ?: false)
}

View File

@ -21,4 +21,275 @@
<string name="notice_room_name_changed">%1$s রুম এর নাম এতে পরিবর্তন করেছে: %2$s</string>
<string name="notice_placed_video_call">%s একটি ভিডিও কল স্থাপন করেছিল।</string>
<string name="notice_placed_voice_call">%s একটি ভয়েস কল দিয়েছে।</string>
<string name="summary_message">%1$s: %2$s</string>
<string name="summary_you_sent_image">আপনি একটি ছবি প্রেরণ করেছেন।</string>
<string name="summary_you_sent_sticker">আপনি একটি স্তিকার পাঠিয়েছেন।</string>
<string name="notice_room_invite_no_invitee_by_you">আপনার আমন্ত্রণ</string>
<string name="notice_room_created">%1$s কক্ষটি তৈরি করেছেন</string>
<string name="notice_room_created_by_you">আপনি কক্ষটি তৈরি করেছেন</string>
<string name="notice_room_invite_by_you">আপনি %1$s কে আমন্ত্রিত করেছেন</string>
<string name="notice_room_join_by_you">আপনি কক্ষে যোগ দিয়েছেন</string>
<string name="notice_room_leave_by_you">আপনি কক্ষ ছেড়ে দিয়েছেন</string>
<string name="notice_room_reject_by_you">আপনি আমন্ত্রণটি বাতিল করেছেন</string>
<string name="notice_room_kick_by_you">আপনি %1$s কে কীক করেছেন</string>
<string name="notice_room_unban_by_you">আপনি %1$s কে নিষিদ্ধ মুক্ত করেছেন</string>
<string name="notice_room_ban_by_you">আপনি %1$s কে নিষিদ্ধ করেছেন</string>
<string name="notice_room_withdraw_by_you">আপনি %1$s এর আমন্ত্রণ প্রত্যাহার করেছেন</string>
<string name="notice_avatar_url_changed_by_you">আপনি আপনার অবতারটি পরিবর্তন করেছেন</string>
<string name="notice_display_name_set_by_you">আপনি আপনার প্রদর্শনের নামটি %1$s তে সেট করেছেন</string>
<string name="notice_display_name_changed_from_by_you">আপনি আপনার প্রদর্শনের নামটি %1$s থেকে %2$s এ পরিবর্তন করেছেন</string>
<string name="notice_display_name_removed_by_you">আপনি আপনার প্রদর্শনের নামটি সরিয়ে দিয়েছেন (যেটা ছিল %1$s)</string>
<string name="notice_room_topic_changed_by_you">আপনি বিষয়টিকে এতে পরিবর্তন করেছেন: %1$s</string>
<string name="notice_room_avatar_changed">%1$s কক্ষের অবতারটি পরিবর্তন করেছে</string>
<string name="notice_room_avatar_changed_by_you">আপনি কক্ষের অবতারটি পরিবর্তন করেছেন</string>
<string name="notice_room_name_changed_by_you">আপনি কক্ষের নাম এতে পরিবর্তন করেছেন:%1$s</string>
<string name="notice_placed_video_call_by_you">আপনি একটি ভিডিও কল করেছেন।</string>
<string name="notice_placed_voice_call_by_you">আপনি একটি ভয়েস কল দিয়েছেন।</string>
<string name="notice_call_candidates">কল সেটআপ করার জন্য %s ডেটা প্রেরণ করেছে।</string>
<string name="notice_call_candidates_by_you">আপনি কল সেটআপ করার জন্য ডেটা প্রেরণ করেছেন।</string>
<string name="notice_answered_call">%s কলটির উত্তর দিয়েছে।</string>
<string name="notice_answered_call_by_you">আপনি কলটি উত্তর দিয়েছেন।</string>
<string name="notice_ended_call">%s কলটি শেষ করেছেন।</string>
<string name="notice_ended_call_by_you">আপনি কলটি শেষ করেছেন।</string>
<string name="notice_made_future_room_visibility">%1$s ভবিষ্যতের ঘরের ইতিহাস %2$s এর কাছে দৃশ্যমান করে তুলেছে</string>
<string name="notice_made_future_room_visibility_by_you">আপনি ভবিষ্যতের কক্ষ ইতিহাস %1$s এর কাছে দৃশ্যমান করেছেন</string>
<string name="notice_room_visibility_invited">কক্ষের সমস্ত সদস্য, যখন থেকে তারা আমন্ত্রিত।</string>
<string name="notice_room_visibility_joined">কক্ষের সমস্ত সদস্য, যখন থেকে তারা যোগদান করেছিল।</string>
<string name="notice_room_visibility_shared">সমস্ত কক্ষের সদস্য।</string>
<string name="notice_room_visibility_world_readable">যে কেউ।</string>
<string name="notice_room_visibility_unknown">অজানা (%s)।</string>
<string name="notice_end_to_end">%1$s এন্ড-টু-এন্ড এনক্রিপশন চালু করেছে (%2$s)</string>
<string name="notice_end_to_end_by_you">আপনি শেষ-থেকে-শেষ এনক্রিপশন চালু করেছেন (%1$s)</string>
<string name="notice_room_update">%s এই কক্ষটিকে আপগ্রেড করেছে।</string>
<string name="notice_room_update_by_you">আপনি এই কক্ষটি আপগ্রেড করেছেন।</string>
<string name="notice_requested_voip_conference">%1$s একটি ভিওআইপি সম্মেলনের জন্য অনুরোধ করেছে</string>
<string name="notice_requested_voip_conference_by_you">আপনি একটি ভিওআইপি সম্মেলনের অনুরোধ করেছেন</string>
<string name="notice_voip_started">ভিওআইপি সম্মেলন শুরু হয়েছে</string>
<string name="notice_voip_finished">ভিওআইপি সম্মেলন শেষ হয়েছে</string>
<string name="notice_avatar_changed_too">(আবতারটিও পরিবর্তন করা হয়েছিল)</string>
<string name="notice_room_name_removed">%1$s কক্ষের নাম সরিয়েছে</string>
<string name="notice_room_name_removed_by_you">আপনি কক্ষের নাম সরিয়েছেন</string>
<string name="notice_room_topic_removed">%1$s কক্ষের বিষয় মুছে ফেলেছে</string>
<string name="notice_room_topic_removed_by_you">আপনি কক্ষের বিষয়টিকে সরিয়ে দিয়েছেন</string>
<string name="notice_room_avatar_removed">%1$s কক্ষের অবতার সরিয়ে নিয়েছে</string>
<string name="notice_room_avatar_removed_by_you">আপনি কক্ষের অবতার সরিয়েছেন</string>
<string name="notice_event_redacted">বার্তা সরানো হয়েছে</string>
<string name="notice_event_redacted_by">%1$s দ্বারা বার্তা সরানো হয়েছে</string>
<string name="notice_event_redacted_with_reason">বার্তা সরানো হয়েছে [কারণ:%1$s]</string>
<string name="notice_event_redacted_by_with_reason">%1$s দ্বারা বার্তা সরানো হয়েছে [কারণ: %2$s]</string>
<string name="notice_profile_change_redacted">%1$s তাদের প্রোফাইল %2$ আপডেট করেছে</string>
<string name="notice_profile_change_redacted_by_you">আপনি আপনার প্রোফাইল %1$s আপডেট করেছেন</string>
<string name="notice_room_third_party_invite">%1$s %2$s কে ঘরে যোগদানের জন্য একটি আমন্ত্রণ পাঠিয়েছে</string>
<string name="notice_room_third_party_invite_by_you">আপনি %1$s কে ঘরে যোগদানের জন্য একটি আমন্ত্রণ প্রেরণ করেছেন</string>
<string name="notice_room_third_party_revoked_invite">%1$s %2$s এর কক্ষে যোগদানের আমন্ত্রণ বাতিল করে দিয়েছিল</string>
<string name="notice_room_third_party_revoked_invite_by_you">আপনি %1$s এর কক্ষে যোগদানের জন্য আমন্ত্রণটি বাতিল করেছেন</string>
<string name="notice_room_third_party_registered_invite">%1$s %2$s এর জন্য আমন্ত্রণটি গ্রহণ করেছে</string>
<string name="notice_room_third_party_registered_invite_by_you">আপনি %1$s এর জন্য আমন্ত্রণটি গ্রহণ করেছেন</string>
<string name="notice_widget_added">%1$s %2$s উইজেট যুক্ত করেছে</string>
<string name="notice_widget_added_by_you">আপনি %1$s উইজেট যুক্ত করেছেন</string>
<string name="notice_widget_removed">%1$s %2$s উইজেট সরিয়ে দিয়েছেন</string>
<string name="notice_widget_removed_by_you">আপনি %1$s উইজেট সরিয়েছেন</string>
<string name="notice_widget_modified">%1$s %2$s উইজেট পরিবর্তন করেছেন</string>
<string name="notice_widget_modified_by_you">আপনি %1$s উইজেট পরিবর্তন করেছেন</string>
<string name="power_level_admin">অ্যাডমিন</string>
<string name="power_level_moderator">নিয়ামক</string>
<string name="power_level_default">ডিফল্ট</string>
<string name="power_level_custom">কাস্টম (%1$d)</string>
<string name="power_level_custom_no_value">কাস্টম</string>
<string name="notice_power_level_changed_by_you">আপনি %1$s এর পাওয়ার স্তর পরিবর্তন করেছেন।</string>
<string name="notice_power_level_changed">%1$s %2$s এর পাওয়ার স্তর পরিবর্তন করেছে।</string>
<string name="notice_power_level_diff">%1$s %2$s থেকে %3$s পর্যন্ত</string>
<string name="notice_crypto_unable_to_decrypt">** ডিক্রিপ্ট করতে অক্ষম: %s **</string>
<string name="notice_crypto_error_unkwown_inbound_session_id">প্রেরকের ডিভাইস আমাদের এই বার্তার জন্য কীগুলি প্রেরণ করেনি।</string>
<string name="could_not_redact">পুনরায় প্রতিক্রিয়া করতে পারেনি</string>
<string name="unable_to_send_message">বার্তা পাঠাতে অক্ষম</string>
<string name="message_failed_to_upload">চিত্র আপলোড করতে ব্যর্থ</string>
<string name="network_error">নেটওয়ার্ক ত্রুটি</string>
<string name="matrix_error">ম্যাট্রিক্স ত্রুটি</string>
<string name="room_error_join_failed_empty_room">খালি কক্ষে পুনরায় যোগদান করা বর্তমানে সম্ভব নয়।</string>
<string name="encrypted_message">এনক্রিপ্ট করা বার্তা</string>
<string name="medium_email">ইমেল ঠিকানা</string>
<string name="medium_phone_number">ফোন নম্বর</string>
<string name="room_displayname_invite_from">%s থেকে আমন্ত্রণ করুন</string>
<string name="room_displayname_room_invite">কক্ষ আমন্ত্রণ</string>
<string name="room_displayname_two_members">%1$s এবং %2$s</string>
<plurals name="room_displayname_three_and_more_members">
<item quantity="one">%1$s এবং অন্য ১ জন</item>
<item quantity="other">%1$s এবং অন্যান্য %2$d জন</item>
</plurals>
<string name="room_displayname_empty_room">খালি কক্ষ</string>
<string name="verification_emoji_dog">কুকুর</string>
<string name="verification_emoji_cat">বেড়াল</string>
<string name="verification_emoji_lion">সিংহ</string>
<string name="verification_emoji_horse">ঘোড়া</string>
<string name="verification_emoji_unicorn">ইউনিকর্ন</string>
<string name="verification_emoji_pig">শূকর</string>
<string name="verification_emoji_elephant">হাতি</string>
<string name="verification_emoji_rabbit">খরগোশ</string>
<string name="verification_emoji_panda">পান্ডা</string>
<string name="verification_emoji_rooster">গৃহপালিত মোরগ</string>
<string name="verification_emoji_penguin">পেংগুইন</string>
<string name="verification_emoji_turtle">কচ্ছপ</string>
<string name="verification_emoji_fish">মাছ</string>
<string name="verification_emoji_octopus">অক্টোপাস</string>
<string name="verification_emoji_butterfly">প্রজাপতি</string>
<string name="verification_emoji_flower">ফুল</string>
<string name="verification_emoji_tree">গাছ</string>
<string name="verification_emoji_cactus">ফণীমনসা</string>
<string name="verification_emoji_mushroom">মাশরুম</string>
<string name="verification_emoji_globe">পৃথিবী</string>
<string name="verification_emoji_moon">চন্দ্র</string>
<string name="verification_emoji_cloud">মেঘ</string>
<string name="verification_emoji_fire">আগুন</string>
<string name="verification_emoji_banana">কলা</string>
<string name="verification_emoji_apple">আপেল</string>
<string name="verification_emoji_strawberry">স্ট্রবেরি</string>
<string name="verification_emoji_corn">ভূট্টা</string>
<string name="verification_emoji_pizza">পিজা</string>
<string name="verification_emoji_cake">কেক</string>
<string name="verification_emoji_heart">হৃদয়</string>
<string name="verification_emoji_smiley">স্মাইলি</string>
<string name="verification_emoji_robot">রোবট</string>
<string name="verification_emoji_hat">টুপি</string>
<string name="verification_emoji_glasses">চশমা</string>
<string name="verification_emoji_wrench">রেঞ্চ</string>
<string name="verification_emoji_santa">সান্তা</string>
<string name="verification_emoji_thumbsup">থাম্বস আপ</string>
<string name="verification_emoji_umbrella">ছাতা</string>
<string name="verification_emoji_hourglass">বালিঘড়ি</string>
<string name="verification_emoji_clock">ঘড়ি</string>
<string name="verification_emoji_gift">উপহার</string>
<string name="verification_emoji_lightbulb">আলো বালব</string>
<string name="verification_emoji_book">বই</string>
<string name="verification_emoji_pencil">পেন্সিল</string>
<string name="verification_emoji_paperclip">পেপার ক্লিপ</string>
<string name="verification_emoji_scissors">কাঁচি</string>
<string name="verification_emoji_lock">লক</string>
<string name="verification_emoji_key">চাবি</string>
<string name="verification_emoji_hammer">হাতুড়ি</string>
<string name="verification_emoji_telephone">টেলিফোন</string>
<string name="verification_emoji_flag">পতাকা</string>
<string name="verification_emoji_train">রেলগাড়ি</string>
<string name="verification_emoji_bicycle">সাইকেল</string>
<string name="verification_emoji_airplane">বিমান</string>
<string name="verification_emoji_rocket">রকেট</string>
<string name="verification_emoji_trophy">ট্রফি</string>
<string name="verification_emoji_ball">বল</string>
<string name="verification_emoji_guitar">গিটার</string>
<string name="verification_emoji_trumpet">ট্রাম্পেট</string>
<string name="verification_emoji_bell">ঘণ্টা</string>
<string name="verification_emoji_anchor">নোঙ্গর</string>
<string name="verification_emoji_headphone">হেডফোন</string>
<string name="verification_emoji_folder">ফোল্ডার</string>
<string name="verification_emoji_pin">পিন</string>
<string name="initial_sync_start_importing_account">প্রাথমিক সিঙ্ক:
\nঅ্যাকাউন্ট আমদানি করা হচ্ছে…</string>
<string name="initial_sync_start_importing_account_crypto">প্রাথমিক সিঙ্ক:
\nক্রিপ্টো আমদানি হচ্ছে</string>
<string name="initial_sync_start_importing_account_rooms">প্রাথমিক সিঙ্ক:
\nকক্ষগুলি আমদানি করা হচ্ছে</string>
<string name="initial_sync_start_importing_account_joined_rooms">প্রাথমিক সিঙ্ক:
\nযোগ করা কক্ষগুলিতে আমদানি করা হিচ্ছে</string>
<string name="initial_sync_start_importing_account_invited_rooms">প্রাথমিক সিঙ্ক:
\nআমন্ত্রিত করা কক্ষগুলিতে আমদানি করা হিচ্ছে</string>
<string name="initial_sync_start_importing_account_left_rooms">প্রাথমিক সিঙ্ক:
\nছেড়ে দেওয়া কক্ষগুলিতে আমদানি করা হিচ্ছে</string>
<string name="initial_sync_start_importing_account_groups">প্রাথমিক সিঙ্ক:
\nসম্প্রদায়গুলি আমদানি করা হচ্ছে</string>
<string name="initial_sync_start_importing_account_data">প্রাথমিক সিঙ্ক:
\nঅ্যাকাউন্ট ডেটা আমদানি করা হচ্ছে</string>
<string name="event_status_sending_message">বার্তা প্রেরণ করা হচ্ছে …</string>
<string name="clear_timeline_send_queue">প্রেরণ সারি পরিষ্কার করুন</string>
<string name="notice_room_invite_no_invitee_with_reason">%1$s এর আমন্ত্রণ। কারণ: %2$s</string>
<string name="notice_room_invite_no_invitee_with_reason_by_you">আপনার আমন্ত্রণ। কারণ: %1$s</string>
<string name="notice_room_invite_with_reason">%1$s আমন্ত্রিত করেছেন %2$s কে। কারণ: %3$s</string>
<string name="notice_room_invite_with_reason_by_you">আপনি %1$s কে আমন্ত্রিত করেছেন। কারণ: %2$s</string>
<string name="notice_room_invite_you_with_reason">%1$s আপনাকে আমন্ত্রণ করেছে। কারণ: %2$s</string>
<string name="notice_room_join_with_reason">%1$s রুম এ যোগ দিয়েছে। কারণ: %2$s</string>
<string name="notice_room_join_with_reason_by_you">আপনি কক্ষে যোগ দিয়েছেন। কারণ: %1$s</string>
<string name="notice_room_leave_with_reason">%1$s রুম ছেড়ে দিয়েছে। কারণ: %2$s</string>
<string name="notice_room_leave_with_reason_by_you">আপনি কক্ষ ছেড়ে দিয়েছেন। কারণ: %1$s</string>
<string name="notice_room_reject_with_reason">%1$s আমন্ত্রণ বাতিল করেছেন। কারণ: %2$s</string>
<string name="notice_room_reject_with_reason_by_you">আপনি আমন্ত্রণটি বাতিল করেছেন। কারণ: %1$s</string>
<string name="notice_room_kick_with_reason">%1$s %2$s কে কিক করেছে। কারণ: %2$s</string>
<string name="notice_room_kick_with_reason_by_you">আপনি %1$s কে কীক করেছেন। কারণ: %2$s</string>
<string name="notice_room_unban_with_reason">%1$s %2$s কে নিষিদ্ধ তালিকা থেকে মুক্ত করেছে। কারণ: %3$s</string>
<string name="notice_room_unban_with_reason_by_you">আপনি %1$s কে নিষিদ্ধ মুক্ত করেছেন। কারণ: %2$s</string>
<string name="notice_room_ban_with_reason">%1$s %2$s কে নিষিদ্ধ করেছে। কারণ: %3$s</string>
<string name="notice_room_ban_with_reason_by_you">আপনি %1$s কে নিষিদ্ধ করেছেন। কারণ: %2$s</string>
<string name="notice_room_third_party_invite_with_reason">%1$s রুমের সাথে যোগ দিতে %2$s কে একটি আমন্ত্রণ পাঠিয়েছেন। কারণ: %3$s</string>
<string name="notice_room_third_party_invite_with_reason_by_you">আপনি %1$s কে ঘরে যোগদানের জন্য একটি আমন্ত্রণ প্রেরণ করেছেন। কারণ: %2$s</string>
<string name="notice_room_third_party_revoked_invite_with_reason">%1$s %2$s এর কক্ষে যোগদানের আমন্ত্রণ বাতিল করে দিয়েছিল। কারণ: %3$s</string>
<string name="notice_room_third_party_revoked_invite_with_reason_by_you">আপনি %1$s এর কক্ষে যোগদানের জন্য আমন্ত্রণটি বাতিল করেছেন। কারণ: %2$s</string>
<string name="notice_room_third_party_registered_invite_with_reason">%1$s %2$s এর জন্য আমন্ত্রণ গ্রহণ করেছেন। কারণ: %3$s</string>
<string name="notice_room_third_party_registered_invite_with_reason_by_you">আপনি %1$s এর জন্য আমন্ত্রণটি গ্রহণ করেছেন। কারণ: %2$s</string>
<string name="notice_room_withdraw_with_reason">%1$s %2$s এর আমন্ত্রণ ফেরত নিয়েছে। কারণ: %3$s</string>
<string name="notice_room_withdraw_with_reason_by_you">আপনি %1$s এর আমন্ত্রণ প্রত্যাহার করেছেন। কারণ: %2$s</string>
<plurals name="notice_room_aliases_added">
<item quantity="one">%1$s এই ঘরের ঠিকানা হিসাবে %2$s যুক্ত করেছে।</item>
<item quantity="other">%1$s এই ঘরের ঠিকানাগুলি হিসাবে %2$s যুক্ত করেছে।</item>
</plurals>
<plurals name="notice_room_aliases_added_by_you">
<item quantity="one">আপনি এই কক্ষের জন্য ঠিকানা হিসাবে %1$s যুক্ত করেছেন।</item>
<item quantity="other">আপনি এই কক্ষের ঠিকানা হিসাবে %1$s যুক্ত করেছেন।</item>
</plurals>
<plurals name="notice_room_aliases_removed">
<item quantity="one">%1$s এই ঘরের ঠিকানা হিসাবে %2$s সরানো হয়েছে।</item>
<item quantity="other">%1$s %3$s কে এই ঘরের ঠিকানা হিসাবে সরানো হয়েছে।</item>
</plurals>
<plurals name="notice_room_aliases_removed_by_you">
<item quantity="one">আপনি এই ঘরের ঠিকানা হিসাবে %1$s সরিয়েছেন।</item>
<item quantity="other">আপনি এই ঘরের ঠিকানা হিসাবে %2$s গুলি সরিয়েছেন।</item>
</plurals>
<string name="notice_room_aliases_added_and_removed">%1$s %2$s যোগ করেছে এবং %3$s গুলি এই ঘরের ঠিকানা হিসাবে সরানো হয়েছে।</string>
<string name="notice_room_aliases_added_and_removed_by_you">আপনি %1$s যোগ করেছেন এবং %2$s কে এই ঘরের ঠিকানা হিসাবে সরিয়ে দিয়েছেন।</string>
<string name="notice_room_canonical_alias_set">%1$s এই ঘরের মূল ঠিকানাটি %2$s তে সেট করে।</string>
<string name="notice_room_canonical_alias_set_by_you">আপনি এই ঘরের মূল ঠিকানাটি %1$s তে সেট করেছেন।</string>
<string name="notice_room_canonical_alias_unset">%1$s এই ঘরের মূল ঠিকানা সরিয়ে নিয়েছে।</string>
<string name="notice_room_canonical_alias_unset_by_you">আপনি এই ঘরের মূল ঠিকানা সরিয়েছেন।</string>
<string name="notice_room_guest_access_can_join">%1$s অতিথিদের ঘরে যোগদানের অনুমতি দিয়েছে।</string>
<string name="notice_room_guest_access_can_join_by_you">আপনি অতিথিদের ঘরে যোগদানের অনুমতি দিয়েছেন।</string>
<string name="notice_room_guest_access_forbidden">%1$s অতিথিদের ঘরে যোগদান করতে বাধা দিয়েছে।</string>
<string name="notice_room_guest_access_forbidden_by_you">আপনি অতিথিদের ঘরে যোগদান করতে বাধা দিয়েছেন।</string>
<string name="notice_end_to_end_ok">%1$s এন্ড-টু-এন্ড এনক্রিপশন চালু করেছে।</string>
<string name="notice_end_to_end_ok_by_you">আপনি শেষ থেকে শেষ এনক্রিপশন চালু করেছেন।</string>
<string name="notice_end_to_end_unknown_algorithm">%1$s এন্ড-টু-এন্ড এনক্রিপশন চালু করেছে (অজানা অ্যালগরিদম %2$s)।</string>
<string name="notice_end_to_end_unknown_algorithm_by_you">আপনি শেষ-থেকে-শেষ এনক্রিপশন চালু করেছেন (অজানা অ্যালগরিদম %1$s )।</string>
<string name="key_verification_request_fallback_message">%s আপনার কীটি যাচাই করার জন্য অনুরোধ করছে, তবে আপনার ক্লায়েন্ট ইন-চ্যাট কী যাচাইকরণ সমর্থন করে না। কীগুলি যাচাই করতে আপনাকে লিগ্যাসি কী যাচাইকরণ ব্যবহার করতে হবে।</string>
<string name="call_notification_answer">গ্রহণ</string>
<string name="call_notification_reject">পতন</string>
<string name="call_notification_hangup">বন্ধ করুন</string>
</resources>

View File

@ -204,6 +204,103 @@
<string name="notice_end_to_end_ok">%1$s aktivierte Ende-zu-Ende-Verschlüsselung.</string>
<string name="notice_end_to_end_unknown_algorithm">%1$s aktivierte Ende-zu-Ende-Verschlüsselung (unbekannter Algorithmus %2$s).</string>
<string name="key_verification_request_fallback_message">%s fordert zur Überprüfung Ihres Schlüssels auf, jedoch unterstützt Ihr Client nicht die Schlüsselüberprüfung im Chat. Sie müssen die herkömmliche Schlüsselüberprüfung verwenden, um die Schlüssel zu überprüfen.</string>
<string name="key_verification_request_fallback_message">%s fordert zur Überprüfung deines Schlüssels auf, jedoch unterstützt dein Client nicht die Schlüsselüberprüfung im Chat. Du musst die herkömmliche Schlüsselüberprüfung verwenden, um die Schlüssel zu überprüfen.</string>
<string name="summary_you_sent_image">Du hast ein Bild gesendet.</string>
<string name="summary_you_sent_sticker">Du hast einen Sticker gesendet.</string>
<string name="notice_room_invite_no_invitee_by_you">Deine Einladung</string>
<string name="notice_room_created">%1$s hat den Raum erstellt</string>
<string name="notice_room_created_by_you">Du hast den Raum erstellt</string>
<string name="notice_room_invite_by_you">Du hast $1$s eingeladen</string>
<string name="notice_room_join_by_you">Du bist dem Raum beigetreten</string>
<string name="notice_room_leave_by_you">Du hast den Raum verlassen</string>
<string name="notice_room_reject_by_you">Du hast die Einladung abgelehnt</string>
<string name="notice_room_kick_by_you">Du hast %1$s aus dem Raum entfernt</string>
<string name="notice_room_unban_by_you">Du hast den Bann von %1$s aufgehoben</string>
<string name="notice_room_ban_by_you">Du hast %1$s gebannt</string>
<string name="notice_room_withdraw_by_you">Du hast die Einladung von %1$s zurückgenommen</string>
<string name="notice_avatar_url_changed_by_you">Du hast dein Profilbild geändert</string>
<string name="notice_display_name_set_by_you">Du hast deinen Anzeigenamen zu %1$s geändert</string>
<string name="notice_display_name_changed_from_by_you">Du hast deinen Anzeigenamen von %1$s zu %2$s geändert</string>
<string name="notice_display_name_removed_by_you">Du hast deinen Anzeigenamen entfernt (er war %1$s)</string>
<string name="notice_room_topic_changed_by_you">Du hast das Thema geändert auf: %1$s</string>
<string name="notice_room_avatar_changed">%1$s hat das Bild des Raumes geändert</string>
<string name="notice_room_avatar_changed_by_you">Du hast das Bild des Raumes geändert</string>
<string name="notice_room_name_changed_by_you">Du hast den Raumnamen zu %1$s geändert</string>
<string name="notice_placed_video_call_by_you">Du hast einen Videoanruf gestartet.</string>
<string name="notice_placed_voice_call_by_you">Du hast einen Audioanruf gestartet.</string>
<string name="notice_answered_call_by_you">Du hast den Anruf angenommen.</string>
<string name="notice_ended_call_by_you">Du hast den Anruf beendet.</string>
<string name="notice_made_future_room_visibility_by_you">Du hast den zukünftigen Nachrichtenverlauf für %1$s sichtbar gemacht</string>
<string name="notice_end_to_end_by_you">Du hast Ende-zu-Ende-Verschlüsselung aktiviert (%1$s)</string>
<string name="notice_room_update_by_you">Du hast den Raum aufgwertet.</string>
<string name="notice_requested_voip_conference_by_you">Du hast eine VoIP-Konferenz angefordert</string>
<string name="notice_room_name_removed_by_you">Du hast den Raumnamen entfernt</string>
<string name="notice_room_topic_removed_by_you">Du hast das Raumthema entfernt</string>
<string name="notice_room_avatar_removed">%1$s hat das Bild des Raumes entfernt</string>
<string name="notice_room_avatar_removed_by_you">Du hast das Bild des Raumes entfernt</string>
<string name="notice_profile_change_redacted_by_you">Du hast dein Profil %1$s aktualisiert</string>
<string name="notice_room_third_party_invite_by_you">Du hast %1$s in den Raum eingeladen</string>
<string name="notice_room_third_party_revoked_invite_by_you">Du hast die Einladung für %1$s zurückgenommen</string>
<string name="notice_room_third_party_registered_invite_by_you">Du hast die Einladung für %1$s akzeptiert</string>
<string name="notice_widget_added">%1$s hat das %2$s Widget hinzugefügt</string>
<string name="notice_widget_added_by_you">Du hast das %1$s Widget hinzugefügt</string>
<string name="notice_widget_removed">%1$s hat das %2$s Widget entfernt</string>
<string name="notice_widget_removed_by_you">Du hast das %1$s Widget entfernt</string>
<string name="notice_widget_modified">%1$s hat das %2$s Widget modifiziert</string>
<string name="notice_widget_modified_by_you">Du hast das %1$s Widget modifiziert</string>
<string name="power_level_admin">Administrator</string>
<string name="power_level_moderator">Moderator</string>
<string name="power_level_default">Standard</string>
<string name="power_level_custom">Benutzerdefiniert (%1$d)</string>
<string name="power_level_custom_no_value">Benutzerdefiniert</string>
<string name="notice_power_level_changed_by_you">Du hast die Berechtigungsstufe von %1$s geändert.</string>
<string name="notice_power_level_changed">%1$s hat die Berechtigungsstufe von %2$s geändert.</string>
<string name="notice_power_level_diff">%1$s von %2$s zu %3$s</string>
<string name="notice_room_invite_no_invitee_with_reason_by_you">Deine Einladung. Grund: %1$s</string>
<string name="notice_room_invite_with_reason_by_you">Du hast %1$s eingeladen. Grund: %2$s</string>
<string name="notice_room_join_with_reason_by_you">Du bist dem Raum beigetreten. Grund: %1$s</string>
<string name="notice_room_leave_with_reason_by_you">Du hast den Raum verlassen. Grund: %1$s</string>
<string name="notice_room_reject_with_reason_by_you">Du hast die Einladung abgelehnt. Grund: %1$s</string>
<string name="notice_room_kick_with_reason_by_you">Du hast %1$s aus dem Raum entfernt. Grund %2$s</string>
<string name="notice_room_unban_with_reason_by_you">Du hast den Bann von %1$s aufgehoben. Grund: %2$s</string>
<string name="notice_room_ban_with_reason_by_you">Du hast %1$s gebannt. Grund: %2$s</string>
<string name="notice_room_third_party_invite_with_reason_by_you">Du hast %1$s in den Raum eingeladen. Grund: %2$s</string>
<string name="notice_room_third_party_revoked_invite_with_reason_by_you">Du hast die Einladung für %1$s zurückgenommen. Grund: %2$s</string>
<string name="notice_room_third_party_registered_invite_with_reason_by_you">Du hast die Einladung von %1$s angenommen. Grund: %2$s</string>
<string name="notice_room_withdraw_with_reason_by_you">Du hast die Einladung von %1$s abgelehnt. Grund: %2$s</string>
<plurals name="notice_room_aliases_added_by_you">
<item quantity="one">Du hast die Raumaddresse %1$s hinzugefügt.</item>
<item quantity="other">Du hast die Raumaddressen %1$s hinzugefügt.</item>
</plurals>
<plurals name="notice_room_aliases_removed_by_you">
<item quantity="one">Du hast die Raumaddresse %1$s vom Raum entfernt.</item>
<item quantity="other">Du hast die Raumaddressen %1$s vom Raum entfernt.</item>
</plurals>
<string name="notice_room_aliases_added_and_removed_by_you">Du hast den Raumaddressen %1$s hinzugefügt und %2$s entfernt.</string>
<string name="notice_room_canonical_alias_set_by_you">Du hast die Hauptaddresse für diesen Raum auf %1$s gesetzt.</string>
<string name="notice_room_canonical_alias_unset_by_you">Du hast die Hauptaddresse des Raums entfernt.</string>
<string name="notice_room_guest_access_can_join_by_you">Du hast Gästen erlaubt dem Raum beizutreten.</string>
<string name="notice_room_guest_access_forbidden_by_you">Du hast Gästen untersagt dem Raum beizutreten.</string>
<string name="notice_end_to_end_ok_by_you">Du hast Ende-zu-Ende-Verschlüsselung aktiviert.</string>
<string name="notice_end_to_end_unknown_algorithm_by_you">Du hast Ende-zu-Ende-Verschlüsselung aktiviert (unbekannter Algorithmus %1$s).</string>
<string name="call_notification_answer">Akzeptiere</string>
<string name="call_notification_reject">Ablehnen</string>
<string name="call_notification_hangup">Anruf beenden</string>
<string name="notice_call_candidates">%s hat Daten gesendet, um einen Anruf zu starten.</string>
<string name="notice_call_candidates_by_you">Du hast Daten geschickt, um eine Anruf zu starten.</string>
</resources>

View File

@ -199,4 +199,104 @@
<string name="key_verification_request_fallback_message">%s soovib verifitseerida sinu võtmeid, kuid sinu kasutatav klient ei oska vestluse-sisest verifitseerimist teha. Sa pead kasutama traditsioonilist verifitseerimislahendust.</string>
<string name="notice_room_created">Kasutaja %1$s lõi jututoa</string>
<string name="summary_you_sent_image">Sina saatsid pildi.</string>
<string name="summary_you_sent_sticker">Sina saatsid kleepsu.</string>
<string name="notice_room_invite_no_invitee_by_you">Sinu kutse</string>
<string name="notice_room_created_by_you">Sa lõid jututoa</string>
<string name="notice_room_invite_by_you">Sina kutsusid kasutajat %1$s</string>
<string name="notice_room_join_by_you">Sina liitusid jututoaga</string>
<string name="notice_room_leave_by_you">Sina lahkusid jututoast</string>
<string name="notice_room_reject_by_you">Sina lükkasid kutse tagasi</string>
<string name="notice_room_kick_by_you">Sina müksasid %1$s välja</string>
<string name="notice_room_unban">%1$s taastas %2$s ligipääsu</string>
<string name="notice_room_unban_by_you">Sina taastasid %1$s ligipääsu</string>
<string name="notice_room_ban">%1$s keelas %1$s ligipääsu</string>
<string name="notice_room_ban_by_you">Sina keelasid %1$s ligipääsu</string>
<string name="notice_room_withdraw_by_you">Sina võtsid tagasi %1$s kutse</string>
<string name="notice_avatar_url_changed_by_you">Sina muutsid oma tunnuspilti</string>
<string name="notice_display_name_set_by_you">Sina määrasid oma kuvatavaks nimeks %1$s</string>
<string name="notice_display_name_changed_from_by_you">Sina muutsid senise kuvatava nime %1$s uueks nimeks %2$s</string>
<string name="notice_display_name_removed_by_you">Sina eemaldasid oma kuvatava nime (oli %1$s)</string>
<string name="notice_room_topic_changed_by_you">Sina muutsid uueks teemaks %1$s</string>
<string name="notice_room_avatar_changed">%1$s muutis jututoa tunnuspilti</string>
<string name="notice_room_avatar_changed_by_you">Sina muutsid jututoa tunnuspilti</string>
<string name="notice_room_name_changed_by_you">Sina muutsid jututoa uueks nimeks %1$s</string>
<string name="notice_placed_video_call_by_you">Sa alustasid videokõnet.</string>
<string name="notice_placed_voice_call_by_you">Sa alustasid häälkõnet.</string>
<string name="notice_call_candidates">%s saatis info kõne algatamiseks.</string>
<string name="notice_call_candidates_by_you">Sa saatsid info kõne algatamiseks.</string>
<string name="notice_answered_call_by_you">Sa vastasid kõnele.</string>
<string name="notice_ended_call_by_you">Sa lõpetasid kõne.</string>
<string name="notice_made_future_room_visibility_by_you">Sa seadistasid, et tulevane jututoa ajalugu on nähtav kasutajale %1$s</string>
<string name="notice_end_to_end_by_you">Sa lülitasid sisse läbiva krüptimise (%1$s)</string>
<string name="notice_room_update_by_you">Sa uuendasid seda jututuba.</string>
<string name="notice_requested_voip_conference_by_you">Sa algatasid VoIP rühmakõne</string>
<string name="notice_room_name_removed_by_you">Sa eemaldasid jututoa nime</string>
<string name="notice_room_topic_removed_by_you">Sa eemaldasid jututoa teema</string>
<string name="notice_room_avatar_removed">%1$s eemaldas jututoa tunnuspildi</string>
<string name="notice_room_avatar_removed_by_you">Sa eemaldasid jututoa tunnuspildi</string>
<string name="notice_profile_change_redacted_by_you">Sa uuendasid oma profiili %1$s</string>
<string name="notice_room_third_party_invite_by_you">Sina saatsid kasutajale %1$s kutse jututoaga liitumiseks</string>
<string name="notice_room_third_party_revoked_invite_by_you">Sina võtsid tagasi jututoaga liitumise kutse kasutajalt %1$s</string>
<string name="notice_room_third_party_registered_invite_by_you">Sina võtsid vastu kutse %1$s nimel</string>
<string name="notice_widget_added">%1$s lisas %2$s vidina</string>
<string name="notice_widget_added_by_you">Sina lisasid %1$s vidina</string>
<string name="notice_widget_removed">%1$s eemaldas %2$s vidina</string>
<string name="notice_widget_removed_by_you">Sina eemdaldasid %1$s vidina</string>
<string name="notice_widget_modified">%1$s muutis %2$s vidinat</string>
<string name="notice_widget_modified_by_you">Sa muutsid %1$s vidinat</string>
<string name="power_level_admin">Peakasutaja</string>
<string name="power_level_moderator">Moderaator</string>
<string name="power_level_default">Tavakasutaja</string>
<string name="power_level_custom">Kohandatud kasutajaõigused (%1$s)</string>
<string name="power_level_custom_no_value">Kohandatud õigused</string>
<string name="notice_power_level_changed_by_you">Sina muutsid kasutaja %1$s õigusi.</string>
<string name="notice_power_level_changed">%1$s muutis kasutaja %2$s õigusi.</string>
<string name="notice_power_level_diff">%1$s õiguste muutus %2$s -&gt; %3$s</string>
<string name="notice_room_invite_no_invitee_with_reason_by_you">Sinu kutse. Põhjus %1$s</string>
<string name="notice_room_invite_with_reason_by_you">Sina kutsusid kasutajat %1$s. Põhjus: %1$s</string>
<string name="notice_room_join_with_reason_by_you">Sina liitusid jututoaga. Põhjus: %1$s</string>
<string name="notice_room_leave_with_reason_by_you">Sina lahkusid jututoast. Põhjus: %1$s</string>
<string name="notice_room_reject_with_reason_by_you">Sina lükkasid kutse tagasi. Põhjus: %1$s</string>
<string name="notice_room_kick_with_reason_by_you">Sina müksasid kasutaja %1$s välja. Põhjus: %2$s</string>
<string name="notice_room_unban_with_reason">%1$s taastas ligipääsu kasutajale %2$s. Põhjus: %3$s</string>
<string name="notice_room_unban_with_reason_by_you">Sina taastasid kasutaja %1$s ligipääsu. Põhjus: %2$s</string>
<string name="notice_room_ban_with_reason">%1$s keelas kasutaja %2$s ligipääsu. Põhjus: %3$s</string>
<string name="notice_room_ban_with_reason_by_you">Sina keelasid kasutaja %1$s ligipääsu. Põhjus: %2$s</string>
<string name="notice_room_third_party_invite_with_reason_by_you">Sina saatsid kasutajale %1$s kutse jututoaga liitumiseks. Põhjus: %2$s</string>
<string name="notice_room_third_party_revoked_invite_with_reason_by_you">Sina võtsid tagasi jututoaga liitumise kutse kasutajalt %1$s. Põhjus: %2$s</string>
<string name="notice_room_third_party_registered_invite_with_reason_by_you">Sina võtsid vastu kutse %1$s nimel. Põhjus: %2$s</string>
<string name="notice_room_withdraw_with_reason_by_you">Sina võtsid tagasi kasutaja %1$s kutse. Põhjus: %2$s</string>
<plurals name="notice_room_aliases_added_by_you">
<item quantity="one">Sina lisasid %1$s selle jututoa aadressiks.</item>
<item quantity="other">Sina lisasid %1$s selle jututoa aadressideks.</item>
</plurals>
<plurals name="notice_room_aliases_removed_by_you">
<item quantity="one">Sina eemaldasid %1$s, kui selle jututoa aadressi.</item>
<item quantity="other">Sina eemaldasid %1$s selle jututoa aadresside hulgast.</item>
</plurals>
<string name="notice_room_aliases_added_and_removed_by_you">Sina lisasid %1$s selle jututoa aadressiks ning eemaldasid %2$s aadresside hulgast.</string>
<string name="notice_room_canonical_alias_set_by_you">Sina seadistasid selle jututoa põhiaadressiks %1$s.</string>
<string name="notice_room_canonical_alias_unset_by_you">Sina eemaldasid selle jututoa põhiaadressi.</string>
<string name="notice_room_guest_access_can_join_by_you">Sina lubasid külalistel selle jututoaga liituda.</string>
<string name="notice_room_guest_access_forbidden_by_you">Sina seadistasid, et külalised ei või selle jututoaga liituda.</string>
<string name="notice_end_to_end_ok_by_you">Sa lülitasid sisse läbiva krüptimise.</string>
<string name="notice_end_to_end_unknown_algorithm_by_you">Sa lülitasid sisse läbiva krüptimise (kasutusel on tundmatu algoritm %1$s).</string>
<string name="call_notification_answer">Võta vastu</string>
<string name="call_notification_reject">Keeldu</string>
<string name="call_notification_hangup">Lõpeta kõne</string>
</resources>

View File

@ -204,4 +204,100 @@
<string name="key_verification_request_fallback_message">%s sta chiedendo di verificare la tua chiave, ma il tuo client non supporta la verifica in-chat. Dovrai usare il metodo di verifica obsoleto per verificare le chiavi.</string>
<string name="notice_room_created">%1$s ha creato la stanza</string>
<string name="summary_you_sent_image">Hai inviato un\'immagine.</string>
<string name="summary_you_sent_sticker">Hai inviato un adesivo.</string>
<string name="notice_room_invite_no_invitee_by_you">Il tuo invito</string>
<string name="notice_room_created_by_you">Hai creato la stanza</string>
<string name="notice_room_invite_by_you">Hai invitato %1$s</string>
<string name="notice_room_join_by_you">Sei entrato nella stanza</string>
<string name="notice_room_leave_by_you">Sei uscito dalla stanza</string>
<string name="notice_room_reject_by_you">Hai rifiutato l\'invito</string>
<string name="notice_room_kick_by_you">Hai buttato fuori %1$s</string>
<string name="notice_room_unban_by_you">Hai riammesso %1$s</string>
<string name="notice_room_ban_by_you">Hai bandito %1$s</string>
<string name="notice_room_withdraw_by_you">Hai ritirato l\'invito di %1$s</string>
<string name="notice_avatar_url_changed_by_you">Hai cambiato il tuo avatar</string>
<string name="notice_display_name_set_by_you">Hai impostato il tuo nome visualizzato a %1$s</string>
<string name="notice_display_name_changed_from_by_you">Hai cambiato il tuo nome visualizzato da %1$s a %2$s</string>
<string name="notice_display_name_removed_by_you">Hai rimosso il tuo nome visibile (era %1$s)</string>
<string name="notice_room_topic_changed_by_you">Hai cambiato l\'argomento a: %1$s</string>
<string name="notice_room_avatar_changed">%1$s ha modificato l\'avatar della stanza</string>
<string name="notice_room_avatar_changed_by_you">Hai modificato l\'avatar della stanza</string>
<string name="notice_room_name_changed_by_you">Hai cambiato il nome della stanza a: %1$s</string>
<string name="notice_placed_video_call_by_you">Hai iniziato una videochiamata.</string>
<string name="notice_placed_voice_call_by_you">Hai iniziato una telefonata.</string>
<string name="notice_call_candidates">%s ha inviato dati per impostare la chiamata.</string>
<string name="notice_call_candidates_by_you">Hai inviato dati per impostare la chiamata.</string>
<string name="notice_answered_call_by_you">Hai risposto alla chiamata.</string>
<string name="notice_ended_call_by_you">Hai terminato la chiamata.</string>
<string name="notice_made_future_room_visibility_by_you">Hai reso visibile la futura cronologia della stanza a %1$s</string>
<string name="notice_end_to_end_by_you">Hai attivato la crittografia end-to-end (%1$s)</string>
<string name="notice_room_update_by_you">Hai aggiornato questa stanza.</string>
<string name="notice_requested_voip_conference_by_you">Hai richiesto una conferenza VoIP</string>
<string name="notice_room_name_removed_by_you">Hai rimosso il nome della stanza</string>
<string name="notice_room_topic_removed_by_you">Hai rimosso l\'argomento della stanza</string>
<string name="notice_room_avatar_removed">%1$s ha rimosso l\'avatar della stanza</string>
<string name="notice_room_avatar_removed_by_you">Hai rimosso l\'avatar della stanza</string>
<string name="notice_profile_change_redacted_by_you">Hai aggiornato il tuo profilo %1$s</string>
<string name="notice_room_third_party_invite_by_you">Hai mandato un invito a %1$s a unirsi alla stanza</string>
<string name="notice_room_third_party_revoked_invite_by_you">Hai revocato l\'invito per %1$s a unirsi alla stanza</string>
<string name="notice_room_third_party_registered_invite_by_you">Hai accettato l\'invito per %1$s</string>
<string name="notice_widget_added">%1$s ha aggiunto il widget %2$s</string>
<string name="notice_widget_added_by_you">Hai aggiunto il widget %1$s</string>
<string name="notice_widget_removed">%1$s ha rimosso il widget %2$s</string>
<string name="notice_widget_removed_by_you">Hai rimosso il widget %1$s</string>
<string name="notice_widget_modified">%1$s ha modificato il widget %2$s</string>
<string name="notice_widget_modified_by_you">Hai modificato il widget %1$s</string>
<string name="power_level_admin">Amministratore</string>
<string name="power_level_moderator">Moderatore</string>
<string name="power_level_default">Predefinito</string>
<string name="power_level_custom">Personalizzato (%1$d)</string>
<string name="power_level_custom_no_value">Personalizzato</string>
<string name="notice_power_level_changed_by_you">Hai cambiato il livello di potere di %1$s.</string>
<string name="notice_power_level_changed">%1$s ha cambiato il livello di potere di %2$s.</string>
<string name="notice_power_level_diff">%1$s da %2$s a %3$s</string>
<string name="notice_room_invite_no_invitee_with_reason_by_you">Il tuo invito. Motivo: %1$s</string>
<string name="notice_room_invite_with_reason_by_you">Hai invitato %1$s. Motivo: %2$s</string>
<string name="notice_room_join_with_reason_by_you">Sei entrato nella stanza. Motivo: %1$s</string>
<string name="notice_room_leave_with_reason_by_you">Sei uscito dalla stanza. Motivo: %1$s</string>
<string name="notice_room_reject_with_reason_by_you">Hai rifiutato l\'invito. Motivo: %1$s</string>
<string name="notice_room_kick_with_reason_by_you">Hai buttato fuori %1$s. Motivo: %2$s</string>
<string name="notice_room_unban_with_reason_by_you">Hai riammesso %1$s. Motivo: %2$s</string>
<string name="notice_room_ban_with_reason_by_you">Hai bandito %1$s. Motivo: %2$s</string>
<string name="notice_room_third_party_invite_with_reason_by_you">Hai mandato un invito a %1$s a unirsi alla stanza. Motivo: %2$s</string>
<string name="notice_room_third_party_revoked_invite_with_reason_by_you">Hai revocato l\'invito a %1$s a unirsi alla stanza. Motivo: %2$s</string>
<string name="notice_room_third_party_registered_invite_with_reason_by_you">Hai accettato l\'invito per %1$s. Motivo: %2$s</string>
<string name="notice_room_withdraw_with_reason_by_you">Hai ritirato l\'invito di %2$s. Motivo: %2$s</string>
<plurals name="notice_room_aliases_added_by_you">
<item quantity="one">Hai aggiunto %1$s come indirizzo per questa stanza.</item>
<item quantity="other">Hai aggiunto %1$s come indirizzi per questa stanza.</item>
</plurals>
<plurals name="notice_room_aliases_removed_by_you">
<item quantity="one">Hai rimosso %1$s come indirizzo per questa stanza.</item>
<item quantity="other">Hai rimosso %2$s come indirizzi per questa stanza.</item>
</plurals>
<string name="notice_room_aliases_added_and_removed_by_you">Hai aggiunto %1$s e rimosso %2$s come indirizzi per questa stanza.</string>
<string name="notice_room_canonical_alias_set_by_you">Hai impostato l\'indirizzo principale per questa stanza a %1$s.</string>
<string name="notice_room_canonical_alias_unset_by_you">Hai rimosso l\'indirizzo principale per questa stanza.</string>
<string name="notice_room_guest_access_can_join_by_you">Hai permesso l\'accesso alla stanza per gli ospiti.</string>
<string name="notice_room_guest_access_forbidden_by_you">Hai impedito l\'accesso alla stanza per gli ospiti.</string>
<string name="notice_end_to_end_ok_by_you">Hai attivato la crittografia end-to-end.</string>
<string name="notice_end_to_end_unknown_algorithm_by_you">Hai attivato la crittografia end-to-end (algoritmo %1$s sconosciuto).</string>
<string name="call_notification_answer">Accetta</string>
<string name="call_notification_reject">Rifiuta</string>
<string name="call_notification_hangup">Riaggancia</string>
</resources>

View File

@ -2,52 +2,52 @@
<resources>
<string name="summary_message">%1$s: %2$s</string>
<string name="summary_user_sent_image">%1$s enviou uma imagem.</string>
<string name="summary_user_sent_image">%1$s enviou uma foto.</string>
<string name="notice_room_invite_no_invitee">convite de %s</string>
<string name="notice_room_invite">%1$s convidou %2$s</string>
<string name="notice_room_invite_you">%1$s convidou você</string>
<string name="notice_room_join">%1$s entrou</string>
<string name="notice_room_leave">%1$s saiu</string>
<string name="notice_room_join">%1$s entrou na sala</string>
<string name="notice_room_leave">%1$s saiu da sala</string>
<string name="notice_room_reject">%1$s recusou o convite</string>
<string name="notice_room_kick">%1$s expulsou %2$s</string>
<string name="notice_room_unban">%1$s des-baniu %2$s</string>
<string name="notice_room_kick">%1$s removeu %2$s</string>
<string name="notice_room_unban">%1$s removeu o banimento de %2$s</string>
<string name="notice_room_ban">%1$s baniu %2$s</string>
<string name="notice_room_withdraw">%1$s cancelou o convite de %2$s</string>
<string name="notice_avatar_url_changed">%1$s mudou seu avatar</string>
<string name="notice_display_name_set">%1$s definiu seu nome público como %2$s</string>
<string name="notice_display_name_changed_from">%1$s alterou seu nome públido de %2$s para %3$s</string>
<string name="notice_display_name_removed">%1$s apagou seu nome público (%2$s)</string>
<string name="notice_room_topic_changed">%1$s alterou o tópico desta sala para: %2$s</string>
<string name="notice_room_name_changed">%1$s alterou o nome desta sala para: %2$s</string>
<string name="notice_room_withdraw">%1$s desfez o convite a %2$s</string>
<string name="notice_avatar_url_changed">%1$s alterou a foto de perfil</string>
<string name="notice_display_name_set">%1$s definiu o nome e sobrenome como %2$s</string>
<string name="notice_display_name_changed_from">%1$s alterou o nome e sobrenome de %2$s para %3$s</string>
<string name="notice_display_name_removed">%1$s removeu o nome e sobrenome (era %2$s)</string>
<string name="notice_room_topic_changed">%1$s alterou a descrição para: %2$s</string>
<string name="notice_room_name_changed">%1$s alterou o nome da sala para: %2$s</string>
<string name="notice_placed_video_call">%s iniciou uma chamada de vídeo.</string>
<string name="notice_placed_voice_call">%s iniciou uma chamada de voz.</string>
<string name="notice_answered_call">%s respondeu à chamada.</string>
<string name="notice_answered_call">%s aceitou a chamada.</string>
<string name="notice_ended_call">%s encerrou a chamada.</string>
<string name="notice_made_future_room_visibility">%1$s deixou o histórico futuro desta sala visível para %2$s</string>
<string name="notice_room_visibility_invited">todas as pessoas que integram esta sala, a partir do momento em que foram convidadas.</string>
<string name="notice_room_visibility_joined">todas as pessoas que integram esta sala, a partir do momento em que entraram.</string>
<string name="notice_room_visibility_shared">todas as pessoas que integram esta sala.</string>
<string name="notice_made_future_room_visibility">%1$s deixou o histórico futuro da sala visível para %2$s</string>
<string name="notice_room_visibility_invited">todos os membros da sala, a partir do momento em que foram convidados.</string>
<string name="notice_room_visibility_joined">todos os membros da sala, a partir do momento em que entraram nela.</string>
<string name="notice_room_visibility_shared">todos os membros da sala.</string>
<string name="notice_room_visibility_world_readable">qualquer pessoa.</string>
<string name="notice_room_visibility_unknown">desconhedido (%s).</string>
<string name="notice_end_to_end">%1$s ativou a criptografia ponta-a-ponta (%2$s)</string>
<string name="notice_room_visibility_unknown">desconhecido (%s).</string>
<string name="notice_end_to_end">%1$s ativou a criptografia de ponta a ponta (%2$s)</string>
<string name="notice_requested_voip_conference">%1$s solicitou uma conferência VoIP</string>
<string name="notice_voip_started">A conferência VoIP começou</string>
<string name="notice_voip_finished">A conferência VoIP terminou</string>
<string name="notice_requested_voip_conference">%1$s deseja iniciar uma chamada em grupo</string>
<string name="notice_voip_started">Chamada em grupo iniciada</string>
<string name="notice_voip_finished">Chamada em grupo encerrada</string>
<string name="notice_avatar_changed_too">(o avatar também foi alterado)</string>
<string name="notice_room_name_removed">%1$s apagou o nome da sala</string>
<string name="notice_room_topic_removed">%1$s apagou o tópico da sala</string>
<string name="notice_profile_change_redacted">%1$s atualizou o seu perfil %2$s</string>
<string name="notice_room_third_party_invite">%1$s enviou um convite para que %2$s se junte à sala</string>
<string name="notice_avatar_changed_too">(a foto de perfil também foi alterada)</string>
<string name="notice_room_name_removed">%1$s removeu o nome da sala</string>
<string name="notice_room_topic_removed">%1$s removeu a descrição da sala</string>
<string name="notice_profile_change_redacted">%1$s atualizou o perfil %2$s</string>
<string name="notice_room_third_party_invite">%1$s enviou um convite para %2$s entrar na sala</string>
<string name="notice_room_third_party_registered_invite">%1$s aceitou o convite para %2$s</string>
<string name="notice_crypto_unable_to_decrypt">** Impossível descriptografar: %s **</string>
<string name="notice_crypto_error_unkwown_inbound_session_id">O dispositivo de quem enviou a mensagem não nos enviou as chaves para esta mensagem.</string>
<string name="notice_crypto_unable_to_decrypt">** Não foi possível descriptografar: %s **</string>
<string name="notice_crypto_error_unkwown_inbound_session_id">O aparelho do remetente não nos enviou as chaves para esta mensagem.</string>
<!-- Room Screen -->
<string name="could_not_redact">Não foi possível apagar</string>
<string name="could_not_redact">Não foi possível redigir</string>
<string name="unable_to_send_message">Não foi possível enviar a mensagem</string>
<string name="message_failed_to_upload">O envio da imagem falhou</string>
@ -63,16 +63,16 @@
<!-- call events -->
<!-- room error messages -->
<string name="room_error_join_failed_empty_room">Ainda não é possível voltar a entrar em uma sala vazia.</string>
<string name="room_error_join_failed_empty_room">Atualmente, não é possível entrar novamente em uma sala vazia.</string>
<string name="encrypted_message">Mensagem criptografada</string>
<!-- medium friendly name -->
<string name="medium_email">Endereço de email</string>
<string name="medium_email">Endereço de e-mail</string>
<string name="medium_phone_number">Número de telefone</string>
<string name="summary_user_sent_sticker">%1$s enviou um sticker.</string>
<string name="summary_user_sent_sticker">%1$s enviou uma figurinha.</string>
<!-- Room display name -->
<string name="room_displayname_invite_from">Convite de %s</string>
@ -81,9 +81,229 @@
<string name="room_displayname_empty_room">Sala vazia</string>
<plurals name="room_displayname_three_and_more_members">
<item quantity="one">%1$s e 1 outra/o</item>
<item quantity="other">%1$s e %2$d outras/os</item>
<item quantity="one">%1$s e 1 outro</item>
<item quantity="other">%1$s e %2$d outros</item>
</plurals>
<string name="summary_you_sent_image">Você enviou uma foto.</string>
<string name="summary_you_sent_sticker">Você enviou uma figurinha.</string>
<string name="notice_room_invite_no_invitee_by_you">Seu convite</string>
<string name="notice_room_created">%1$s criou a sala</string>
<string name="notice_room_created_by_you">Você criou a sala</string>
<string name="notice_room_invite_by_you">Você convidou %1$s</string>
<string name="notice_room_join_by_you">Você entrou na sala</string>
<string name="notice_room_leave_by_you">Você saiu da sala</string>
<string name="notice_room_reject_by_you">Você recusou o convite</string>
<string name="notice_room_kick_by_you">Você removeu %1$s</string>
<string name="notice_room_unban_by_you">Você removeu o banimento de %1$s</string>
<string name="notice_room_ban_by_you">Você baniu %1$s</string>
<string name="notice_room_withdraw_by_you">Você desfez o convite a %1$s</string>
<string name="notice_avatar_url_changed_by_you">Você alterou a sua foto de perfil</string>
<string name="notice_display_name_set_by_you">Você definiu o seu nome e sobrenome como %1$s</string>
<string name="notice_display_name_changed_from_by_you">Você alterou o seu nome e sobrenome de %1$s para %2$s</string>
<string name="notice_display_name_removed_by_you">Você removeu o seu nome e sobrenome (era %1$s)</string>
<string name="notice_room_topic_changed_by_you">Você alterou a descrição para: %1$s</string>
<string name="notice_room_avatar_changed">%1$s alterou a foto da sala</string>
<string name="notice_room_avatar_changed_by_you">Você alterou a foto da sala</string>
<string name="notice_room_name_changed_by_you">Você alterou o nome da sala para: %1$s</string>
<string name="notice_placed_video_call_by_you">Você iniciou uma chamada de vídeo.</string>
<string name="notice_placed_voice_call_by_you">Você iniciou uma chamada de voz.</string>
<string name="notice_call_candidates">%s enviou dados para configurar a chamada.</string>
<string name="notice_call_candidates_by_you">Você enviou dados para configurar a chamada.</string>
<string name="notice_answered_call_by_you">Você aceitou a chamada.</string>
<string name="notice_ended_call_by_you">Você encerrou a chamada.</string>
<string name="notice_made_future_room_visibility_by_you">Você deixou o histórico futuro da sala visível para %1$s</string>
<string name="notice_end_to_end_by_you">Você ativou a criptografia de ponta a ponta (%1$s)</string>
<string name="notice_room_update">%s atualizou esta sala.</string>
<string name="notice_room_update_by_you">Você atualizou esta sala.</string>
<string name="notice_requested_voip_conference_by_you">Você solicitou uma chamada em grupo</string>
<string name="notice_room_name_removed_by_you">Você removeu o nome da sala</string>
<string name="notice_room_topic_removed_by_you">Você removeu a descrição da sala</string>
<string name="notice_room_avatar_removed">%1$s removeu a foto da sala</string>
<string name="notice_room_avatar_removed_by_you">Você removeu a foto da sala</string>
<string name="notice_event_redacted">Mensagem removida</string>
<string name="notice_event_redacted_by">Mensagem removida por %1$s</string>
<string name="notice_event_redacted_with_reason">Mensagem removida [motivo: %1$s]</string>
<string name="notice_event_redacted_by_with_reason">Mensagem removida por %1$s [motivo: %2$s]</string>
<string name="notice_profile_change_redacted_by_you">Você atualizou o seu perfil %1$s</string>
<string name="notice_room_third_party_invite_by_you">Você enviou um convite para %1$s entrar na sala</string>
<string name="notice_room_third_party_revoked_invite">%1$s cancelou o convite a %2$s para entrar na sala</string>
<string name="notice_room_third_party_revoked_invite_by_you">Você cancelou o convite a %1$s para entrar na sala</string>
<string name="notice_room_third_party_registered_invite_by_you">Você aceitou o convite para %1$s</string>
<string name="notice_widget_added">%1$s adicionou o widget %2$s</string>
<string name="notice_widget_added_by_you">Você adicionou o widget %1$s</string>
<string name="notice_widget_removed">%1$s removeu o widget %2$s</string>
<string name="notice_widget_removed_by_you">Você removeu o widget %1$s</string>
<string name="notice_widget_modified">%1$s editou o widget %2$s</string>
<string name="notice_widget_modified_by_you">Você editou o widget %1$s</string>
<string name="power_level_admin">Administrador</string>
<string name="power_level_moderator">Moderador</string>
<string name="power_level_default">Padrão</string>
<string name="power_level_custom">Personalizado (%1$d)</string>
<string name="power_level_custom_no_value">Personalizado</string>
<string name="notice_power_level_changed_by_you">Você alterou o nível de permissão de %1$s.</string>
<string name="notice_power_level_changed">%1$s alterou o nível de permissão de %2$s.</string>
<string name="notice_power_level_diff">%1$s de %2$s para %3$s</string>
<string name="verification_emoji_dog">Cachorro</string>
<string name="verification_emoji_cat">Gato</string>
<string name="verification_emoji_lion">Leão</string>
<string name="verification_emoji_horse">Cavalo</string>
<string name="verification_emoji_unicorn">Unicórnio</string>
<string name="verification_emoji_pig">Porco</string>
<string name="verification_emoji_elephant">Elefante</string>
<string name="verification_emoji_rabbit">Coelho</string>
<string name="verification_emoji_panda">Panda</string>
<string name="verification_emoji_rooster">Galo</string>
<string name="verification_emoji_penguin">Pinguim</string>
<string name="verification_emoji_turtle">Tartaruga</string>
<string name="verification_emoji_fish">Peixe</string>
<string name="verification_emoji_octopus">Polvo</string>
<string name="verification_emoji_butterfly">Borboleta</string>
<string name="verification_emoji_flower">Flor</string>
<string name="verification_emoji_tree">Árvore</string>
<string name="verification_emoji_cactus">Cacto</string>
<string name="verification_emoji_mushroom">Cogumelo</string>
<string name="verification_emoji_globe">Globo</string>
<string name="verification_emoji_moon">Lua</string>
<string name="verification_emoji_cloud">Nuvem</string>
<string name="verification_emoji_fire">Fogo</string>
<string name="verification_emoji_banana">Banana</string>
<string name="verification_emoji_apple">Maçã</string>
<string name="verification_emoji_strawberry">Morango</string>
<string name="verification_emoji_corn">Milho</string>
<string name="verification_emoji_pizza">Pizza</string>
<string name="verification_emoji_cake">Bolo</string>
<string name="verification_emoji_heart">Coração</string>
<string name="verification_emoji_smiley">Sorriso</string>
<string name="verification_emoji_robot">Robô</string>
<string name="verification_emoji_hat">Chapéu</string>
<string name="verification_emoji_glasses">Óculos</string>
<string name="verification_emoji_wrench">Chave inglesa</string>
<string name="verification_emoji_santa">Papai-noel</string>
<string name="verification_emoji_thumbsup">Joinha</string>
<string name="verification_emoji_umbrella">Guarda-chuva</string>
<string name="verification_emoji_hourglass">Ampulheta</string>
<string name="verification_emoji_clock">Relógio</string>
<string name="verification_emoji_gift">Presente</string>
<string name="verification_emoji_lightbulb">Lâmpada</string>
<string name="verification_emoji_book">Livro</string>
<string name="verification_emoji_pencil">Lápis</string>
<string name="verification_emoji_paperclip">Clipe de papel</string>
<string name="verification_emoji_scissors">Tesoura</string>
<string name="verification_emoji_lock">Cadeado</string>
<string name="verification_emoji_key">Chave</string>
<string name="verification_emoji_hammer">Martelo</string>
<string name="verification_emoji_telephone">Telefone</string>
<string name="verification_emoji_flag">Bandeira</string>
<string name="verification_emoji_train">Trem</string>
<string name="verification_emoji_bicycle">Bicicleta</string>
<string name="verification_emoji_airplane">Avião</string>
<string name="verification_emoji_rocket">Foguete</string>
<string name="verification_emoji_trophy">Troféu</string>
<string name="verification_emoji_ball">Bola</string>
<string name="verification_emoji_guitar">Guitarra</string>
<string name="verification_emoji_trumpet">Trombeta</string>
<string name="verification_emoji_bell">Sino</string>
<string name="verification_emoji_anchor">Âncora</string>
<string name="verification_emoji_headphone">Fones de ouvido</string>
<string name="verification_emoji_folder">Pasta</string>
<string name="verification_emoji_pin">Alfinete</string>
<string name="initial_sync_start_importing_account">Primeira sincronização:↵
\nImportando a conta…</string>
<string name="initial_sync_start_importing_account_crypto">Primeira sincronização:↵
\nImportando as chaves de criptografia</string>
<string name="initial_sync_start_importing_account_rooms">Primeira sincronização:↵
\nImportando as salas</string>
<string name="initial_sync_start_importing_account_joined_rooms">Primeira sincronização:↵
\nImportando as salas em que você entrou</string>
<string name="initial_sync_start_importing_account_invited_rooms">Primeira sincronização:↵
\nImportando as salas em que você foi convidado</string>
<string name="initial_sync_start_importing_account_left_rooms">Primeira sincronização:↵
\nImportando as salas em que você saiu</string>
<string name="initial_sync_start_importing_account_groups">Primeira sincronização:↵
\nImportando as comunidades</string>
<string name="initial_sync_start_importing_account_data">Primeira sincronização:↵
\nImportando os dados da conta</string>
<string name="event_status_sending_message">Enviando mensagem…</string>
<string name="clear_timeline_send_queue">Limpar a fila de envio</string>
<string name="notice_room_invite_no_invitee_with_reason">Convite de %1$s. Motivo: %2$s</string>
<string name="notice_room_invite_no_invitee_with_reason_by_you">O seu convite. Motivo: %1$s</string>
<string name="notice_room_invite_with_reason">%1$s convidou %2$s. Motivo: %3$s</string>
<string name="notice_room_invite_with_reason_by_you">Você convidou %1$s. Motivo: %2$s</string>
<string name="notice_room_invite_you_with_reason">%1$s convidou você. Motivo: %2$s</string>
<string name="notice_room_join_with_reason">%1$s entrou na sala. Motivo: %2$s</string>
<string name="notice_room_join_with_reason_by_you">Você entrou na sala. Motivo: %1$s</string>
<string name="notice_room_leave_with_reason">%1$s saiu da sala. Motivo: %2$s</string>
<string name="notice_room_leave_with_reason_by_you">Você saiu da sala. Motivo: %1$s</string>
<string name="notice_room_reject_with_reason">%1$s recusou o convite. Motivo: %2$s</string>
<string name="notice_room_reject_with_reason_by_you">Você recusou o convite. Motivo: %1$s</string>
<string name="notice_room_kick_with_reason">%1$s removeu %2$s. Motivo: %3$s</string>
<string name="notice_room_kick_with_reason_by_you">Você removeu %1$s. Motivo: %2$s</string>
<string name="notice_room_unban_with_reason">%1$s removeu o banimento de %2$s. Motivo: %3$s</string>
<string name="notice_room_unban_with_reason_by_you">Você removeu o banimento de %1$s. Motivo: %2$s</string>
<string name="notice_room_ban_with_reason">%1$s baniu %2$s. Motivo: %3$s</string>
<string name="notice_room_ban_with_reason_by_you">Você baniu %1$s. Motivo: %2$s</string>
<string name="notice_room_third_party_invite_with_reason">%1$s enviou um convite para %2$s entrar na sala. Motivo: %3$s</string>
<string name="notice_room_third_party_invite_with_reason_by_you">Você enviou um convite para %1$s entrar na sala. Motivo: %2$s</string>
<string name="notice_room_third_party_revoked_invite_with_reason">%1$s revogou o convite para %2$s entrar na sala. Motivo: %3$s</string>
<string name="notice_room_third_party_revoked_invite_with_reason_by_you">Você revogou o convite para %1$s entrar na sala. Motivo: %2$s</string>
<string name="notice_room_third_party_registered_invite_with_reason">%1$s aceitou o convite para %2$s. Motivo: %3$s</string>
<string name="notice_room_third_party_registered_invite_with_reason_by_you">Você aceitou o convite para %1$s. Motivo: %2$s</string>
<string name="notice_room_withdraw_with_reason">%1$s desfez o convite de %2$s. Motivo: %3$s</string>
<string name="notice_room_withdraw_with_reason_by_you">Você desfez o convite de %1$s. Motivo: %2$s</string>
<plurals name="notice_room_aliases_added">
<item quantity="one">%1$s adicionou %2$s como um endereço desta sala.</item>
<item quantity="other">%1$s adicionou %2$s como endereços desta sala.</item>
</plurals>
<plurals name="notice_room_aliases_added_by_you">
<item quantity="one">Você adicionou %1$s como um endereço desta sala.</item>
<item quantity="other">Você adicionou %1$s como endereços desta sala.</item>
</plurals>
<plurals name="notice_room_aliases_removed">
<item quantity="one">%1$s removeu %2$s como um endereço desta sala.</item>
<item quantity="other">%1$s removeu %3$s como endereços desta sala.</item>
</plurals>
<plurals name="notice_room_aliases_removed_by_you">
<item quantity="one">Você removeu %1$s como um endereço desta sala.</item>
<item quantity="other">Você removeu %2$s como endereços desta sala.</item>
</plurals>
<string name="notice_room_aliases_added_and_removed">%1$s adicionou %2$s e removeu %3$s como endereços desta sala.</string>
<string name="notice_room_aliases_added_and_removed_by_you">Você adicionou %1$s e removeu %2$s como endereços desta sala.</string>
<string name="notice_room_canonical_alias_set">%1$s definiu o endereço principal desta sala como %2$s.</string>
<string name="notice_room_canonical_alias_set_by_you">Você definiu o endereço principal desta sala como %1$s.</string>
<string name="notice_room_canonical_alias_unset">%1$s removeu o endereço principal desta sala.</string>
<string name="notice_room_canonical_alias_unset_by_you">Você removeu o endereço principal desta sala.</string>
<string name="notice_room_guest_access_can_join">%1$s permitiu que convidados entrem na sala.</string>
<string name="notice_room_guest_access_can_join_by_you">Você permitiu que convidados entrem na sala.</string>
<string name="notice_room_guest_access_forbidden">%1$s impediu que convidados entrem na sala.</string>
<string name="notice_room_guest_access_forbidden_by_you">Você impediu que convidados entrem na sala.</string>
<string name="notice_end_to_end_ok">%1$s ativou a criptografia de ponta a ponta.</string>
<string name="notice_end_to_end_ok_by_you">Você ativou a criptografia de ponta a ponta.</string>
<string name="notice_end_to_end_unknown_algorithm">%1$s ativou a criptografia de ponta a ponta (algoritmo não reconhecido %2$s).</string>
<string name="notice_end_to_end_unknown_algorithm_by_you">Você ativou a criptografia de ponta a ponta (algoritmo não reconhecido %1$s).</string>
<string name="key_verification_request_fallback_message">%s deseja verificar a sua chave, mas o seu aplicativo não suporta a verificação da chave da conversa. Você precisará usar a verificação tradicional de chaves para verificar chaves.</string>
<string name="call_notification_answer">Aceitar</string>
<string name="call_notification_reject">Recusar</string>
<string name="call_notification_hangup">Encerrar</string>
</resources>

View File

@ -195,9 +195,9 @@
<string name="notice_room_created">%1$s создал(а) комнату</string>
<plurals name="notice_room_aliases_added">
<item quantity="one">%1$s добавил(а) адрес %2$s для комнаты.</item>
<item quantity="few">%1$s добавил(а) адреса %2$s для комнаты.</item>
<item quantity="many">%1$s добавил(а) адреса %2$s для комнаты.</item>
<item quantity="one">%1$s добавил(а) %2$s в качестве адреса для этой комнаты.</item>
<item quantity="few">%1$s добавил(а) %2$s в качестве адресов для этой комнаты.</item>
<item quantity="many">%1$s добавил(а) %2$s в качестве адресов для этой комнаты.</item>
</plurals>
<plurals name="notice_room_aliases_removed">
@ -307,4 +307,14 @@
<string name="notice_end_to_end_ok_by_you">Вы включили сквозное шифрование.</string>
<string name="notice_end_to_end_unknown_algorithm_by_you">Вы включили сквозное шифрование (неизвестный алгоритм %1$s).</string>
<string name="notice_room_avatar_changed">%1$s изменил(а) аватар комнаты</string>
<string name="notice_room_avatar_changed_by_you">Вы изменили аватар комнаты</string>
<string name="notice_call_candidates">%s отправил(а) данные для начала звонка.</string>
<string name="notice_call_candidates_by_you">Вы отправили данные для начала звонка.</string>
<string name="notice_room_avatar_removed">%1$s удалил(а) аватар комнаты</string>
<string name="notice_room_avatar_removed_by_you">Вы удалили аватар комнаты</string>
<string name="call_notification_answer">Принять</string>
<string name="call_notification_reject">Отклонить</string>
<string name="call_notification_hangup">Завершить звонок</string>
</resources>

View File

@ -13,7 +13,7 @@
<string name="notice_room_ban">%1$s 封禁了 %2$s</string>
<string name="notice_avatar_url_changed">%1$s 更换了他们的头像</string>
<string name="notice_display_name_set">%1$s 将他们的昵称设置为 %2$s</string>
<string name="notice_display_name_changed_from">%1$s 把他的昵称从 %2$s 改为 %3$s</string>
<string name="notice_display_name_changed_from">%1$s 把他的昵称从 %2$s 改为 %3$s</string>
<string name="notice_display_name_removed">%1$s 移除了他们的昵称 (%2$s)</string>
<string name="notice_room_topic_changed">%1$s 把主题改为: %2$s</string>
<string name="notice_room_name_changed">%1$s 把聊天室名称改为: %2$s</string>
@ -26,7 +26,7 @@
<string name="notice_room_visibility_shared">所有聊天室成员。</string>
<string name="notice_room_visibility_world_readable">任何人。</string>
<string name="notice_room_visibility_unknown">未知(%s</string>
<string name="notice_end_to_end">%1$s 开启了端端加密(%2$s</string>
<string name="notice_end_to_end">%1$s 开启了端端加密(%2$s</string>
<string name="notice_requested_voip_conference">%1$s 请求了一次 VoIP 会议</string>
<string name="notice_voip_started">VoIP 会议已开始</string>
@ -52,9 +52,9 @@
<string name="medium_email">电子邮箱地址</string>
<string name="medium_phone_number">手机号码</string>
<string name="notice_room_withdraw">%1$s 撤了对 %2$s 的邀请</string>
<string name="notice_made_future_room_visibility">%1$s 让之后的聊天室历史记录对 %2$s 可见</string>
<string name="notice_profile_change_redacted">%1$s 更新了他们的简介 %2$s</string>
<string name="notice_room_withdraw">%1$s 撤了对 %2$s 的邀请</string>
<string name="notice_made_future_room_visibility">%1$s 让未来的聊天室历史记录对 %2$s 可见</string>
<string name="notice_profile_change_redacted">%1$s 更新了他的个人档案 %2$s</string>
<string name="notice_room_third_party_invite">%1$s 向 %2$s 发送了加入聊天室的邀请</string>
<string name="notice_room_third_party_registered_invite">%1$s 接受了 %2$s 的邀请</string>
@ -155,12 +155,12 @@
<string name="initial_sync_start_importing_account_data">初始化同步:
\n正在导入账号数据</string>
<string name="notice_room_update">%s 升级了聊天室。</string>
<string name="notice_room_update">%s 升级了聊天室。</string>
<string name="event_status_sending_message">正在发送消息…</string>
<string name="clear_timeline_send_queue">清除正在发送队列</string>
<string name="notice_room_third_party_revoked_invite">%1$s 撤回了对 %2$s 邀请</string>
<string name="notice_room_third_party_revoked_invite">%1$s 撤回了对 %2$s 加入聊天室的邀请</string>
<string name="verification_emoji_pin">置顶</string>
<string name="notice_room_invite_no_invitee_with_reason">%1$s 的邀请。理由:%2$s</string>
@ -170,8 +170,8 @@
<string name="notice_room_leave_with_reason">%1$s 离开了聊天室。理由:%2$s</string>
<string name="notice_room_reject_with_reason">%1$s 已拒绝邀请。理由:%2$s</string>
<string name="notice_room_kick_with_reason">%1$s 踢走了 %2$s。理由%3$s</string>
<string name="notice_room_unban_with_reason">%1$s 取消封锁了 %2$s。理由%3$s</string>
<string name="notice_room_ban_with_reason">%1$s 封了 %2$s。理由%3$s</string>
<string name="notice_room_unban_with_reason">%1$s 解封了 %2$s。理由%3$s</string>
<string name="notice_room_ban_with_reason">%1$s 封了 %2$s。理由%3$s</string>
<string name="notice_room_third_party_invite_with_reason">%1$s 已发送邀请给 %2$s 来加入聊天室。理由:%3$s</string>
<string name="notice_room_third_party_revoked_invite_with_reason">%1$s 撤销了 %2$s 加入聊天室的邀請。理由:%3$s</string>
<string name="notice_room_third_party_registered_invite_with_reason">%1$s 接受 %2$s 的邀請。理由:%3$s</string>
@ -185,10 +185,10 @@
<item quantity="other">%1$s 移除了此聊天室的 %3$s 地址。</item>
</plurals>
<string name="notice_room_aliases_added_and_removed">%1$s 为此聊天室新增 %2$s 并移除 %3$s 地址。</string>
<string name="notice_room_aliases_added_and_removed">%1$s 为此聊天室新增 %2$s 并移除 %3$s 地址。</string>
<string name="notice_room_canonical_alias_set">%1$s 为此聊天室设定了 %2$s 为主地址</string>
<string name="notice_room_canonical_alias_unset">%1$s 为此聊天室移除了主地址。</string>
<string name="notice_room_canonical_alias_set">%1$s 将此聊天室的主地址设为了 %2$s</string>
<string name="notice_room_canonical_alias_unset">%1$s 为此聊天室移除了主地址。</string>
<string name="notice_room_guest_access_can_join">%1$s 已允许访客加入聊天室。</string>
<string name="notice_room_guest_access_forbidden">%1$s 已禁止访客加入聊天室。</string>
@ -198,5 +198,99 @@
<string name="key_verification_request_fallback_message">%s 正在请求验证您的密钥,但您的客户端不支援聊天中密钥验证。 您将必须使用旧版的密钥验证来验证金钥。</string>
<string name="notice_room_created">%1$s 创建了这个房间</string>
<string name="notice_room_created">%1$s 创建了这个聊天室</string>
<string name="summary_you_sent_image">您发送了一张图片。</string>
<string name="summary_you_sent_sticker">您发送了一张贴纸。</string>
<string name="notice_room_invite_no_invitee_by_you">您的邀请</string>
<string name="notice_room_created_by_you">您创建了这个聊天室</string>
<string name="notice_room_invite_by_you">您邀请了 %1$s</string>
<string name="notice_room_join_by_you">您加入了聊天室</string>
<string name="notice_room_leave_by_you">您离开了聊天室</string>
<string name="notice_room_reject_by_you">您拒绝了邀请</string>
<string name="notice_room_kick_by_you">您移除了 %1$s</string>
<string name="notice_room_unban_by_you">您解封了 %1$s</string>
<string name="notice_room_ban_by_you">您封禁了 %1$s</string>
<string name="notice_room_withdraw_by_you">您撤回了对 %1$s 的邀请</string>
<string name="notice_avatar_url_changed_by_you">您更换了您的头像</string>
<string name="notice_display_name_set_by_you">您将您的昵称设置为 %1$s</string>
<string name="notice_display_name_changed_from_by_you">您将您的昵称从 %1$s 改为 %2$s</string>
<string name="notice_display_name_removed_by_you">您移除了您的昵称 (%1$s)</string>
<string name="notice_room_topic_changed_by_you">您把主题改为:%1$s</string>
<string name="notice_room_avatar_changed">%1$s 变更了聊天室头像</string>
<string name="notice_room_avatar_changed_by_you">您变更了聊天室头像</string>
<string name="notice_room_name_changed_by_you">您把聊天室名称改为:%1$s</string>
<string name="notice_placed_video_call_by_you">您发起了一次视频通话。</string>
<string name="notice_placed_voice_call_by_you">您发起了一次语音通话。</string>
<string name="notice_call_candidates">%s 发送了数据以建立通话。</string>
<string name="notice_call_candidates_by_you">您发送了数据以建立通话。</string>
<string name="notice_answered_call_by_you">您接听了通话。</string>
<string name="notice_ended_call_by_you">您结束了通话。</string>
<string name="notice_made_future_room_visibility_by_you">您已让未来的聊天室记录对 %1$s 可见</string>
<string name="notice_end_to_end_by_you">您开启了端到端加密(%1$s</string>
<string name="notice_room_update_by_you">您升级了此聊天室。</string>
<string name="notice_requested_voip_conference_by_you">您请求了 VoIP 会议</string>
<string name="notice_room_name_removed_by_you">您移除了聊天室名称</string>
<string name="notice_room_topic_removed_by_you">您移除了聊天室主题</string>
<string name="notice_room_avatar_removed">%1$s 移除了聊天室头像</string>
<string name="notice_room_avatar_removed_by_you">您移除了聊天室头像</string>
<string name="notice_profile_change_redacted_by_you">您更新了您的个人档案 %1$s</string>
<string name="notice_room_third_party_invite_by_you">您向 %1$s 发送了加入聊天室的邀请</string>
<string name="notice_room_third_party_revoked_invite_by_you">您已撤回了对 %1$s 加入聊天室的邀请</string>
<string name="notice_room_third_party_registered_invite_by_you">您接受了 %1$s 的邀请</string>
<string name="notice_widget_added">%1$s 添加了 %2$s 小部件</string>
<string name="notice_widget_added_by_you">您添加了 %1$s 小部件</string>
<string name="notice_widget_removed">%1$s 移除了 %2$s 小部件</string>
<string name="notice_widget_removed_by_you">您移除了 %1$s 小部件</string>
<string name="notice_widget_modified">%1$s 修改了 %2$s 小部件</string>
<string name="notice_widget_modified_by_you">您修改了 %1$s 小部件</string>
<string name="power_level_admin">管理员</string>
<string name="power_level_moderator">审核员</string>
<string name="power_level_default">默认</string>
<string name="power_level_custom">自定义(%1$d</string>
<string name="power_level_custom_no_value">自定义</string>
<string name="notice_power_level_changed_by_you">您更改了%1$s 的权力等级。</string>
<string name="notice_power_level_changed">%1$s 更改了 %2$s 的权力等级。</string>
<string name="notice_power_level_diff">%1$s 从 %2$s 到 %3$s</string>
<string name="notice_room_invite_no_invitee_with_reason_by_you">您的邀请。理由:%1$s</string>
<string name="notice_room_invite_with_reason_by_you">您邀请了 %1$s。理由%2$s</string>
<string name="notice_room_join_with_reason_by_you">您加入了聊天室。理由:%1$s</string>
<string name="notice_room_leave_with_reason_by_you">您离开了聊天室。理由:%1$s</string>
<string name="notice_room_reject_with_reason_by_you">您拒绝了邀请。理由:%1$s</string>
<string name="notice_room_kick_with_reason_by_you">您踢走了 %1$s。理由%2$s</string>
<string name="notice_room_unban_with_reason_by_you">您解封了 %1$s。理由%2$s</string>
<string name="notice_room_ban_with_reason_by_you">您封禁了 %1$s。理由%2$s</string>
<string name="notice_room_third_party_invite_with_reason_by_you">您已发送邀请给 %1$s 来加入聊天室。理由:%2$s</string>
<string name="notice_room_third_party_revoked_invite_with_reason_by_you">您撤销了 %1$s 加入聊天室的邀请。理由:%2$s</string>
<string name="notice_room_third_party_registered_invite_with_reason_by_you">您接受了 %1$s 的邀请。理由:%2$s</string>
<string name="notice_room_withdraw_with_reason_by_you">您撤回了 %1$s 的邀请。理由:%2$s</string>
<plurals name="notice_room_aliases_added_by_you">
<item quantity="other">您新增了 %1$s 为此聊天室的地址。</item>
</plurals>
<plurals name="notice_room_aliases_removed_by_you">
<item quantity="other">您移除了此聊天室的 %2$s 地址。</item>
</plurals>
<string name="notice_room_aliases_added_and_removed_by_you">您为此聊天室新增了 %1$s 并移除了 %2$s 地址。</string>
<string name="notice_room_canonical_alias_set_by_you">您将此聊天室的主地址设为了 %1$s。</string>
<string name="notice_room_canonical_alias_unset_by_you">您移除了此聊天室的主地址。</string>
<string name="notice_room_guest_access_can_join_by_you">您已允许访客加入聊天室。</string>
<string name="notice_room_guest_access_forbidden_by_you">您已禁止访客加入聊天室。</string>
<string name="notice_end_to_end_ok_by_you">您已开启端到端加密。</string>
<string name="notice_end_to_end_unknown_algorithm_by_you">您已开启端到端加密(无法识别的算法 %1$s</string>
<string name="call_notification_answer">接受</string>
<string name="call_notification_reject">拒绝</string>
<string name="call_notification_hangup">挂断</string>
</resources>

View File

@ -200,4 +200,98 @@
<string name="key_verification_request_fallback_message">%s 正在請求驗證您的金鑰,但您的客戶端不支援聊天中金鑰驗證。您將必須使用舊版的金鑰驗證來驗證金鑰。</string>
<string name="notice_room_created">%1$s 建立了聊天室</string>
<string name="summary_you_sent_image">您傳送了圖片。</string>
<string name="summary_you_sent_sticker">您傳送了貼圖。</string>
<string name="notice_room_invite_no_invitee_by_you">您的邀請</string>
<string name="notice_room_created_by_you">您建立了聊天室</string>
<string name="notice_room_invite_by_you">您邀請了 %1$s</string>
<string name="notice_room_join_by_you">您加入了聊天室</string>
<string name="notice_room_leave_by_you">您離開的聊天室</string>
<string name="notice_room_reject_by_you">您回絕了邀請</string>
<string name="notice_room_kick_by_you">您踢除了 %1$s</string>
<string name="notice_room_unban_by_you">您取消封鎖了 %1$s</string>
<string name="notice_room_ban_by_you">您封鎖了 %1$s</string>
<string name="notice_room_withdraw_by_you">您撤銷了 %1$s 的邀請</string>
<string name="notice_avatar_url_changed_by_you">您變更了您的大頭貼</string>
<string name="notice_display_name_set_by_you">您將您的顯示名稱設定為 %1$s</string>
<string name="notice_display_name_changed_from_by_you">您將您的顯示名稱從 %1$s 變更為 %2$s</string>
<string name="notice_display_name_removed_by_you">您移除了您的顯示名稱(其曾為 %1$s</string>
<string name="notice_room_topic_changed_by_you">您將主題變更為:%1$s</string>
<string name="notice_room_avatar_changed">%1$s 變更了聊天室大頭貼</string>
<string name="notice_room_avatar_changed_by_you">您變更了聊天室大頭貼</string>
<string name="notice_room_name_changed_by_you">您將聊天室名稱變更為:%1$s</string>
<string name="notice_placed_video_call_by_you">您發起了視訊通話。</string>
<string name="notice_placed_voice_call_by_you">您發起了音訊通話。</string>
<string name="notice_call_candidates">%s 傳送了資料以建立通話。</string>
<string name="notice_call_candidates_by_you">您傳送了資料以建立通話。</string>
<string name="notice_answered_call_by_you">您接了通話。</string>
<string name="notice_ended_call_by_you">您結束了通話。</string>
<string name="notice_made_future_room_visibility_by_you">您已將未來的聊天室歷史設定為對 %1$s 可見</string>
<string name="notice_end_to_end_by_you">您開啟了端到端加密 (%1$s)</string>
<string name="notice_room_update_by_you">您升級了此聊天室。</string>
<string name="notice_requested_voip_conference_by_you">您請求了 VoIP 會議</string>
<string name="notice_room_name_removed_by_you">您移除了聊天室名稱</string>
<string name="notice_room_topic_removed_by_you">您移除了聊天室主題</string>
<string name="notice_room_avatar_removed">%1$s 移除了聊天室大頭貼</string>
<string name="notice_room_avatar_removed_by_you">您移除了聊天室大頭貼</string>
<string name="notice_profile_change_redacted_by_you">您更新了您的個人檔案 %1$s</string>
<string name="notice_room_third_party_invite_by_you">您傳送了邀請給 %1$s 以加入聊天室</string>
<string name="notice_room_third_party_revoked_invite_by_you">您已撤銷對 %1$s 加入聊天室的邀請</string>
<string name="notice_room_third_party_registered_invite_by_you">您接受了 %1$s 的邀請</string>
<string name="notice_widget_added">%1$s 新增了 %2$s 小工具</string>
<string name="notice_widget_added_by_you">您新增了 %1$s 小工具</string>
<string name="notice_widget_removed">%1$s 移除了 %2$s 小工具</string>
<string name="notice_widget_removed_by_you">您移除了 %1$s 小工具</string>
<string name="notice_widget_modified">%1$s 修改了 %2$s 小工具</string>
<string name="notice_widget_modified_by_you">您修改了 %1$s 小工具</string>
<string name="power_level_admin">管理員</string>
<string name="power_level_moderator">板主</string>
<string name="power_level_default">預設</string>
<string name="power_level_custom">自訂 (%1$d)</string>
<string name="power_level_custom_no_value">自訂</string>
<string name="notice_power_level_changed_by_you">您變更了 %1$s 的權力等級。</string>
<string name="notice_power_level_changed">%1$s 變更了 %2$s 的權力等級。</string>
<string name="notice_power_level_diff">%1$s 從 %2$s 到 %3$s</string>
<string name="notice_room_invite_no_invitee_with_reason_by_you">您的邀請。理由:%1$s</string>
<string name="notice_room_invite_with_reason_by_you">您邀請了 %1$s。理由%2$s</string>
<string name="notice_room_join_with_reason_by_you">您加入了聊天室。理由:%1$s</string>
<string name="notice_room_leave_with_reason_by_you">您離開了聊天室。理由:%1$s</string>
<string name="notice_room_reject_with_reason_by_you">您回絕了邀請。理由:%1$s</string>
<string name="notice_room_kick_with_reason_by_you">您踢除了 %1$s。理由%2$s</string>
<string name="notice_room_unban_with_reason_by_you">您取消封鎖了 %1$s。理由%2$s</string>
<string name="notice_room_ban_with_reason_by_you">您封鎖了 %1$s。理由%2$s</string>
<string name="notice_room_third_party_invite_with_reason_by_you">您傳甕了邀請給 %1$s 以加入聊天室。理由:%2$s</string>
<string name="notice_room_third_party_revoked_invite_with_reason_by_you">您撤銷了 %1$s 加入聊天室的邀請。理由:%2$s</string>
<string name="notice_room_third_party_registered_invite_with_reason_by_you">您接受了 %1$s 的邀請。理由:%2$s</string>
<string name="notice_room_withdraw_with_reason_by_you">您撤回了 %1$s 的邀請。理由:%2$s</string>
<plurals name="notice_room_aliases_added_by_you">
<item quantity="other">您為此聊天室新增了 %1$s 作為地址。</item>
</plurals>
<plurals name="notice_room_aliases_removed_by_you">
<item quantity="other">您為此聊天室移除了 %2$s 作為地址。</item>
</plurals>
<string name="notice_room_aliases_added_and_removed_by_you">您為此聊天室新增了 %1$s 並移除了 %2$s 作為地址。</string>
<string name="notice_room_canonical_alias_set_by_you">您將此聊天室的主要地址設定為 %1$s。</string>
<string name="notice_room_canonical_alias_unset_by_you">您將此聊天室的主要地址移除。</string>
<string name="notice_room_guest_access_can_join_by_you">您已允許訪客加入聊天室。</string>
<string name="notice_room_guest_access_forbidden_by_you">您已阻止訪客加入聊天室。</string>
<string name="notice_end_to_end_ok_by_you">您開啟了端到端加密。</string>
<string name="notice_end_to_end_unknown_algorithm_by_you">您開啟了端到端加密(無法識別的演算法 %1$s</string>
<string name="call_notification_answer">接受</string>
<string name="call_notification_reject">拒絕</string>
<string name="call_notification_hangup">掛斷</string>
</resources>

View File

@ -169,3 +169,6 @@ enum class===76
### Do not import temporary legacy classes
import im.vector.matrix.android.internal.legacy.riot===3
import org.matrix.androidsdk.crypto.data===2
### Use `Context#getSystemService` extension function provided by `core-ktx`
getSystemService\(Context

View File

@ -6,6 +6,7 @@
<issue id="MissingTranslation" severity="warning" />
<issue id="TypographyEllipsis" severity="error" />
<issue id="ImpliedQuantity" severity="warning" />
<issue id="UnusedQuantity" severity="error" />
<issue id="IconXmlAndPng" severity="error" />
<issue id="IconDipSize" severity="error" />
<issue id="IconDuplicatesConfig" severity="error" />

View File

@ -19,11 +19,11 @@ package im.vector.app.features.debug
import android.app.Activity
import android.app.NotificationChannel
import android.app.NotificationManager
import android.content.Context
import android.content.Intent
import android.os.Build
import androidx.core.app.NotificationCompat
import androidx.core.app.Person
import androidx.core.content.getSystemService
import butterknife.OnClick
import im.vector.app.R
import im.vector.app.core.di.ActiveSessionHolder
@ -83,7 +83,7 @@ class DebugMenuActivity : VectorBaseActivity() {
@OnClick(R.id.debug_test_notification)
fun testNotification() {
val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
val notificationManager = getSystemService<NotificationManager>()!!
// Create channel first
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
@ -95,7 +95,7 @@ class DebugMenuActivity : VectorBaseActivity() {
)
channel.description = "Channel description"
(getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager).createNotificationChannel(channel)
notificationManager.createNotificationChannel(channel)
val channel2 =
NotificationChannel(
@ -105,7 +105,7 @@ class DebugMenuActivity : VectorBaseActivity() {
)
channel2.description = "Channel description 2"
(getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager).createNotificationChannel(channel2)
notificationManager.createNotificationChannel(channel2)
}
val builder = NotificationCompat.Builder(this, "CHAN")

View File

@ -1,31 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="16dp">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/store_title" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="@string/store_whats_new" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="@string/store_short_description" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="@string/store_full_description" />
</LinearLayout>

View File

@ -15,9 +15,9 @@
*/
package im.vector.app.fdroid.features.settings.troubleshoot
import android.content.Context
import android.net.ConnectivityManager
import androidx.appcompat.app.AppCompatActivity
import androidx.core.content.getSystemService
import androidx.core.net.ConnectivityManagerCompat
import im.vector.app.R
import im.vector.app.core.resources.StringProvider
@ -29,7 +29,7 @@ class TestBackgroundRestrictions @Inject constructor(private val context: AppCom
: TroubleshootTest(R.string.settings_troubleshoot_test_bg_restricted_title) {
override fun perform() {
(context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager).apply {
context.getSystemService<ConnectivityManager>()!!.apply {
// Checks if the device is on a metered network
if (isActiveNetworkMetered) {
// Checks users Data Saver settings.

View File

@ -26,6 +26,7 @@ import android.os.PowerManager
import androidx.core.content.ContextCompat
import im.vector.app.core.di.HasVectorInjector
import im.vector.app.core.services.VectorSyncService
import androidx.core.content.getSystemService
import im.vector.matrix.android.internal.session.sync.job.SyncService
import timber.log.Timber
@ -42,7 +43,7 @@ class AlarmSyncBroadcastReceiver : BroadcastReceiver() {
}
// Acquire a lock to give enough time for the sync :/
(context.getSystemService(Context.POWER_SERVICE) as PowerManager).run {
context.getSystemService<PowerManager>()!!.run {
newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "riotx:fdroidSynclock").apply {
acquire((10_000).toLong())
}
@ -74,7 +75,7 @@ class AlarmSyncBroadcastReceiver : BroadcastReceiver() {
}
val pIntent = PendingIntent.getBroadcast(context, REQUEST_CODE, intent, PendingIntent.FLAG_UPDATE_CURRENT)
val firstMillis = System.currentTimeMillis() + delay
val alarmMgr = context.getSystemService(Context.ALARM_SERVICE) as AlarmManager
val alarmMgr = context.getSystemService<AlarmManager>()!!
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
alarmMgr.setAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, firstMillis, pIntent)
} else {
@ -86,7 +87,7 @@ class AlarmSyncBroadcastReceiver : BroadcastReceiver() {
Timber.v("Cancel alarm")
val intent = Intent(context, AlarmSyncBroadcastReceiver::class.java)
val pIntent = PendingIntent.getBroadcast(context, REQUEST_CODE, intent, PendingIntent.FLAG_UPDATE_CURRENT)
val alarmMgr = context.getSystemService(Context.ALARM_SERVICE) as AlarmManager
val alarmMgr = context.getSystemService<AlarmManager>()!!
alarmMgr.cancel(pIntent)
}
}

View File

@ -21,8 +21,24 @@ import android.text.format.DateUtils
import im.vector.app.core.resources.LocaleProvider
import org.threeten.bp.LocalDateTime
import org.threeten.bp.format.DateTimeFormatter
import java.util.Calendar
import java.util.Date
import javax.inject.Inject
/**
* Returns the timestamp for the start of the day of the provided time.
* For example, for the time "Jul 21, 11:11" the start of the day: "Jul 21, 00:00" is returned.
*/
fun startOfDay(time: Long): Long {
val calendar = Calendar.getInstance()
calendar.time = Date(time)
calendar.set(Calendar.HOUR_OF_DAY, 0)
calendar.set(Calendar.MINUTE, 0)
calendar.set(Calendar.SECOND, 0)
calendar.set(Calendar.MILLISECOND, 0)
return calendar.time.time
}
class VectorDateFormatter @Inject constructor(private val context: Context,
private val localeProvider: LocaleProvider) {
@ -41,15 +57,23 @@ class VectorDateFormatter @Inject constructor(private val context: Context,
return messageDayFormatter.format(localDateTime)
}
/**
* Formats a localized relative date time for the last 2 days, e.g, "Today, HH:MM", "Yesterday, HH:MM" or
* "2 days ago, HH:MM".
* For earlier timestamps the absolute date time is returned, e.g. "Month Day, HH:MM".
*
* @param time the absolute timestamp [ms] that should be formatted relative to now
*/
fun formatRelativeDateTime(time: Long?): String {
if (time == null) {
return ""
}
val now = System.currentTimeMillis()
return DateUtils.getRelativeDateTimeString(
context,
time,
DateUtils.DAY_IN_MILLIS,
2 * DateUtils.DAY_IN_MILLIS,
now - startOfDay(now - 2 * DateUtils.DAY_IN_MILLIS),
DateUtils.FORMAT_SHOW_WEEKDAY or DateUtils.FORMAT_SHOW_TIME
).toString()
}

View File

@ -23,7 +23,6 @@ import androidx.recyclerview.widget.RecyclerView
import com.airbnb.epoxy.EpoxyController
import com.airbnb.epoxy.EpoxyVisibilityTracker
import im.vector.app.R
import im.vector.app.features.themes.ThemeUtils
/**
* Apply a Vertical LinearLayout Manager to the recyclerView and set the adapter from the epoxy controller
@ -46,7 +45,7 @@ fun RecyclerView.configureWith(epoxyController: EpoxyController,
if (showDivider) {
addItemDecoration(
DividerItemDecoration(context, DividerItemDecoration.VERTICAL).apply {
ContextCompat.getDrawable(context, ThemeUtils.getResourceId(context, R.drawable.divider_horizontal_light))?.let {
ContextCompat.getDrawable(context, R.drawable.divider_horizontal)?.let {
setDrawable(it)
}
}

View File

@ -16,12 +16,12 @@
package im.vector.app.core.extensions
import android.content.Context
import android.view.View
import android.view.inputmethod.InputMethodManager
import androidx.core.content.getSystemService
fun View.hideKeyboard() {
val imm = context?.getSystemService(Context.INPUT_METHOD_SERVICE) as? InputMethodManager
val imm = context?.getSystemService<InputMethodManager>()
imm?.hideSoftInputFromWindow(windowToken, 0)
}
@ -29,6 +29,6 @@ fun View.showKeyboard(andRequestFocus: Boolean = false) {
if (andRequestFocus) {
requestFocus()
}
val imm = context?.getSystemService(Context.INPUT_METHOD_SERVICE) as? InputMethodManager
val imm = context?.getSystemService<InputMethodManager>()
imm?.showSoftInput(this, InputMethodManager.SHOW_IMPLICIT)
}

View File

@ -23,6 +23,7 @@ import android.net.Uri
import android.os.Build
import android.provider.MediaStore
import androidx.annotation.WorkerThread
import androidx.core.content.getSystemService
import arrow.core.Try
import okio.buffer
import okio.sink
@ -85,7 +86,7 @@ fun addEntryToDownloadManager(context: Context,
null
}
} else {
val downloadManager = context.getSystemService(Context.DOWNLOAD_SERVICE) as? DownloadManager
val downloadManager = context.getSystemService<DownloadManager>()
@Suppress("DEPRECATION")
downloadManager?.addCompletedDownload(title, description, true, mimeType, file.absolutePath, file.length(), true)
return null

View File

@ -23,6 +23,7 @@ import android.hardware.Camera
import android.hardware.camera2.CameraCharacteristics
import android.hardware.camera2.CameraManager
import android.os.Build
import androidx.core.content.getSystemService
import javax.inject.Inject
class HardwareInfo @Inject constructor(
@ -36,7 +37,7 @@ class HardwareInfo @Inject constructor(
return Camera.getNumberOfCameras() > 0
}
val manager = context.getSystemService(Context.CAMERA_SERVICE) as CameraManager? ?: return Camera.getNumberOfCameras() > 0
val manager = context.getSystemService<CameraManager>() ?: return Camera.getNumberOfCameras() > 0
return manager.cameraIdList.any {
val lensFacing = manager.getCameraCharacteristics(it).get(CameraCharacteristics.LENS_FACING)

View File

@ -20,9 +20,10 @@ import android.content.Context
import android.os.Build
import android.os.VibrationEffect
import android.os.Vibrator
import androidx.core.content.getSystemService
fun vibrate(context: Context, durationMillis: Long = 100) {
val vibrator = context.getSystemService(Context.VIBRATOR_SERVICE) as Vibrator? ?: return
val vibrator = context.getSystemService<Vibrator>() ?: return
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
vibrator.vibrate(VibrationEffect.createOneShot(durationMillis, VibrationEffect.DEFAULT_AMPLITUDE))
} else {

View File

@ -21,6 +21,7 @@ import android.media.AudioAttributes
import android.media.AudioManager
import android.media.MediaPlayer
import android.os.Build
import androidx.core.content.getSystemService
import im.vector.app.R
import timber.log.Timber
@ -33,7 +34,7 @@ class CallRingPlayer(
private var player: MediaPlayer? = null
fun start() {
val audioManager: AudioManager = applicationContext.getSystemService(Context.AUDIO_SERVICE) as AudioManager
val audioManager = applicationContext.getSystemService<AudioManager>()!!
player?.release()
player = createPlayer()

View File

@ -172,7 +172,7 @@ class CallService : VectorService(), WiredHeadsetStateReceiver.HeadsetEventListe
// turn the screen on for 3 seconds
// if (Matrix.getInstance(VectorApp.getInstance())!!.pushManager.isScreenTurnedOn) {
// try {
// val pm = getSystemService(Context.POWER_SERVICE) as PowerManager
// val pm = getSystemService<PowerManager>()!!
// val wl = pm.newWakeLock(
// WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON or PowerManager.ACQUIRE_CAUSES_WAKEUP,
// CallService::class.java.simpleName)

View File

@ -21,6 +21,7 @@ import android.app.PendingIntent
import android.content.Context
import android.content.Intent
import android.os.Build
import androidx.core.content.getSystemService
import im.vector.app.R
import im.vector.app.core.extensions.vectorComponent
import im.vector.app.features.notifications.NotificationUtils
@ -64,7 +65,7 @@ class VectorSyncService : SyncService() {
}
private fun removeForegroundNotification() {
val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
val notificationManager = getSystemService<NotificationManager>()!!
notificationManager.cancel(NotificationUtils.NOTIFICATION_ID_FOREGROUND_SERVICE)
}
@ -75,7 +76,7 @@ class VectorSyncService : SyncService() {
PendingIntent.getService(this, 0, newIntent(this, sessionId), 0)
}
val firstMillis = System.currentTimeMillis() + delay
val alarmMgr = getSystemService(Context.ALARM_SERVICE) as AlarmManager
val alarmMgr = getSystemService<AlarmManager>()!!
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
alarmMgr.setAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, firstMillis, pendingIntent)
} else {

View File

@ -35,6 +35,7 @@ import androidx.browser.customtabs.CustomTabsIntent
import androidx.browser.customtabs.CustomTabsSession
import androidx.core.content.ContextCompat
import androidx.core.content.FileProvider
import androidx.core.content.getSystemService
import androidx.fragment.app.Fragment
import im.vector.app.BuildConfig
import im.vector.app.R
@ -375,7 +376,7 @@ private fun saveMediaLegacy(context: Context, mediaMimeType: String?, title: Str
}
val savedFile = saveFileIntoLegacy(file, downloadDir, outputFilename)
if (savedFile != null) {
val downloadManager = context.getSystemService(Context.DOWNLOAD_SERVICE) as? DownloadManager
val downloadManager = context.getSystemService<DownloadManager>()
downloadManager?.addCompletedDownload(
savedFile.name,
title,

View File

@ -30,6 +30,7 @@ import android.provider.Settings
import android.widget.Toast
import androidx.annotation.StringRes
import androidx.appcompat.app.AppCompatActivity
import androidx.core.content.getSystemService
import androidx.fragment.app.Fragment
import im.vector.app.R
import im.vector.app.features.notifications.NotificationUtils
@ -47,7 +48,7 @@ import im.vector.app.features.notifications.NotificationUtils
fun isIgnoringBatteryOptimizations(context: Context): Boolean {
// no issue before Android M, battery optimisations did not exist
return Build.VERSION.SDK_INT < Build.VERSION_CODES.M
|| (context.getSystemService(Context.POWER_SERVICE) as PowerManager?)?.isIgnoringBatteryOptimizations(context.packageName) == true
|| context.getSystemService<PowerManager>()?.isIgnoringBatteryOptimizations(context.packageName) == true
}
fun isAirplaneModeOn(context: Context): Boolean {
@ -84,7 +85,7 @@ fun requestDisablingBatteryOptimization(activity: Activity, fragment: Fragment?,
* @param text the text to copy
*/
fun copyToClipboard(context: Context, text: CharSequence, showToast: Boolean = true, @StringRes toastMessage: Int = R.string.copied_to_clipboard) {
val clipboard = context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
val clipboard = context.getSystemService<ClipboardManager>()!!
clipboard.setPrimaryClip(ClipData.newPlainText("", text))
if (showToast) {
context.toast(toastMessage)

View File

@ -22,6 +22,7 @@ import android.bluetooth.BluetoothProfile
import android.content.Context
import android.content.pm.PackageManager
import android.media.AudioManager
import androidx.core.content.getSystemService
import im.vector.app.core.services.WiredHeadsetStateReceiver
import im.vector.matrix.android.api.session.call.MxCall
import timber.log.Timber
@ -55,9 +56,9 @@ class CallAudioManager(
init {
executor.execute {
audioManager = applicationContext.getSystemService(Context.AUDIO_SERVICE) as AudioManager
audioManager = applicationContext.getSystemService()
}
val bm = applicationContext.getSystemService(Context.BLUETOOTH_SERVICE) as? BluetoothManager
val bm = applicationContext.getSystemService<BluetoothManager>()
val adapter = bm?.adapter
Timber.d("## VOIP Bluetooth adapter $adapter")
bluetoothAdapter = adapter

View File

@ -28,6 +28,7 @@ import android.view.View
import android.view.Window
import android.view.WindowManager
import androidx.appcompat.app.AlertDialog
import androidx.core.content.getSystemService
import androidx.core.view.ViewCompat
import androidx.core.view.isInvisible
import androidx.core.view.isVisible
@ -458,7 +459,7 @@ class VectorCallActivity : VectorBaseActivity(), CallControlsView.InteractionLis
)
}
with(getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager) {
with(getSystemService<KeyguardManager>()!!) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
requestDismissKeyguard(this@VectorCallActivity, null)
}

View File

@ -20,6 +20,7 @@ import android.content.Context
import android.hardware.camera2.CameraManager
import android.os.Build
import androidx.annotation.RequiresApi
import androidx.core.content.getSystemService
import im.vector.app.ActiveSessionDataSource
import im.vector.app.core.services.BluetoothHeadsetReceiver
import im.vector.app.core.services.CallService
@ -480,7 +481,7 @@ class WebRtcPeerConnectionManager @Inject constructor(
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
val restarter = CameraRestarter(cameraInUse?.name ?: "", callContext.mxCall.callId)
callContext.cameraAvailabilityCallback = restarter
val cameraManager = context.getSystemService(Context.CAMERA_SERVICE) as CameraManager
val cameraManager = context.getSystemService<CameraManager>()!!
cameraManager.registerAvailabilityCallback(restarter, null)
}
}
@ -792,7 +793,7 @@ class WebRtcPeerConnectionManager @Inject constructor(
currentCall?.cameraAvailabilityCallback?.let { cameraAvailabilityCallback ->
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
val cameraManager = context.getSystemService(Context.CAMERA_SERVICE) as CameraManager
val cameraManager = context.getSystemService<CameraManager>()!!
cameraManager.unregisterAvailabilityCallback(cameraAvailabilityCallback)
}
}
@ -1048,8 +1049,7 @@ class WebRtcPeerConnectionManager @Inject constructor(
// re-start the capture
// TODO notify that video is enabled
videoCapturer?.startCapture(currentCaptureMode.width, currentCaptureMode.height, currentCaptureMode.fps)
(context.getSystemService(Context.CAMERA_SERVICE) as? CameraManager)
?.unregisterAvailabilityCallback(this)
context.getSystemService<CameraManager>()?.unregisterAvailabilityCallback(this)
}
}
}

View File

@ -18,11 +18,12 @@ package im.vector.app.features.call.telecom
import android.content.Context
import android.telephony.TelephonyManager
import androidx.core.content.getSystemService
object TelecomUtils {
fun isLineBusy(context: Context): Boolean {
val telephonyManager = context.getSystemService(Context.TELEPHONY_SERVICE) as? TelephonyManager
val telephonyManager = context.getSystemService<TelephonyManager>()
?: return false
return telephonyManager.callState != TelephonyManager.CALL_STATE_IDLE
}

View File

@ -20,6 +20,7 @@ import android.content.Context
import android.content.pm.ShortcutManager
import android.graphics.Bitmap
import android.os.Build
import androidx.core.content.getSystemService
import androidx.core.content.pm.ShortcutInfoCompat
import androidx.core.content.pm.ShortcutManagerCompat
import androidx.core.graphics.drawable.IconCompat
@ -96,7 +97,7 @@ class ShortcutsHandler @Inject constructor(
// We can only disabled pinned shortcuts with the API, but at least it will prevent the crash
if (ShortcutManagerCompat.isRequestPinShortcutSupported(context)) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N_MR1) {
context.getSystemService(ShortcutManager::class.java)
context.getSystemService<ShortcutManager>()
?.let {
it.disableShortcuts(it.pinnedShortcuts.map { pinnedShortcut -> pinnedShortcut.id })
}

View File

@ -600,6 +600,20 @@ class RoomDetailFragment @Inject constructor(
}
private fun safeStartCall(isVideoCall: Boolean) {
if (vectorPreferences.preventAccidentalCall()) {
AlertDialog.Builder(requireActivity())
.setMessage(if (isVideoCall) R.string.start_video_call_prompt_msg else R.string.start_voice_call_prompt_msg)
.setPositiveButton(if (isVideoCall) R.string.start_video_call else R.string.start_voice_call) { _, _ ->
safeStartCall2(isVideoCall)
}
.setNegativeButton(R.string.cancel, null)
.show()
} else {
safeStartCall2(isVideoCall)
}
}
private fun safeStartCall2(isVideoCall: Boolean) {
val startCallAction = RoomDetailAction.StartCall(isVideoCall)
roomDetailViewModel.pendingAction = startCallAction
if (isVideoCall) {

View File

@ -20,7 +20,6 @@ import android.util.AttributeSet
import android.view.View
import androidx.appcompat.widget.AppCompatTextView
import im.vector.app.R
import im.vector.app.features.themes.ThemeUtils
class UnreadCounterBadgeView : AppCompatTextView {
@ -38,7 +37,7 @@ class UnreadCounterBadgeView : AppCompatTextView {
val bgRes = if (state.highlighted) {
R.drawable.bg_unread_highlight
} else {
ThemeUtils.getResourceId(context, R.drawable.bg_unread_notification_light)
R.drawable.bg_unread_notification
}
setBackgroundResource(bgRes)
text = RoomSummaryFormatter.formatUnreadMessagesCounter(state.count)

View File

@ -22,7 +22,6 @@ import androidx.constraintlayout.motion.widget.MotionLayout
import androidx.core.view.isVisible
import com.google.android.material.floatingactionbutton.FloatingActionButton
import im.vector.app.R
import im.vector.app.features.themes.ThemeUtils
import kotlinx.android.synthetic.main.motion_fab_menu_merge.view.*
class FabMenuView @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null,
@ -37,12 +36,6 @@ class FabMenuView @JvmOverloads constructor(context: Context, attrs: AttributeSe
override fun onFinishInflate() {
super.onFinishInflate()
// Tint label background
listOf(createRoomItemChatLabel, createRoomItemGroupLabel)
.forEach {
it.setBackgroundResource(ThemeUtils.getResourceId(context, R.drawable.vector_label_background_light))
}
listOf(createRoomItemChat, createRoomItemChatLabel)
.forEach {
it.setOnClickListener {

View File

@ -77,6 +77,10 @@ class LoginCaptchaFragment @Inject constructor(
override fun onPageStarted(view: WebView?, url: String?, favicon: Bitmap?) {
super.onPageStarted(view, url, favicon)
if (!isAdded) {
return
}
// Show loader
loginCaptchaProgress.isVisible = true
}
@ -84,6 +88,10 @@ class LoginCaptchaFragment @Inject constructor(
override fun onPageFinished(view: WebView, url: String) {
super.onPageFinished(view, url)
if (!isAdded) {
return
}
// Hide loader
loginCaptchaProgress.isVisible = false
}

View File

@ -442,7 +442,7 @@ class NotificationDrawerManager @Inject constructor(private val context: Context
/*
TODO
if (Matrix.getInstance(VectorApp.getInstance())!!.pushManager.isScreenTurnedOn) {
val pm = VectorApp.getInstance().getSystemService(Context.POWER_SERVICE) as PowerManager
val pm = VectorApp.getInstance().getSystemService<PowerManager>()!!
val wl = pm.newWakeLock(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON or PowerManager.ACQUIRE_CAUSES_WAKEUP,
NotificationDrawerManager::class.java.name)
wl.acquire(3000)

View File

@ -35,6 +35,7 @@ import androidx.core.app.NotificationManagerCompat
import androidx.core.app.RemoteInput
import androidx.core.app.TaskStackBuilder
import androidx.core.content.ContextCompat
import androidx.core.content.getSystemService
import androidx.core.graphics.drawable.IconCompat
import androidx.fragment.app.Fragment
import im.vector.app.BuildConfig
@ -856,7 +857,7 @@ class NotificationUtils @Inject constructor(private val context: Context,
}
// We cannot use NotificationManagerCompat here.
val setting = (context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager).currentInterruptionFilter
val setting = context.getSystemService<NotificationManager>()!!.currentInterruptionFilter
return setting == NotificationManager.INTERRUPTION_FILTER_NONE
|| setting == NotificationManager.INTERRUPTION_FILTER_ALARMS

View File

@ -21,6 +21,7 @@ import android.hardware.Sensor
import android.hardware.SensorManager
import androidx.appcompat.app.AlertDialog
import androidx.appcompat.app.AppCompatActivity
import androidx.core.content.getSystemService
import com.squareup.seismic.ShakeDetector
import im.vector.app.R
import im.vector.app.core.hardware.vibrate
@ -41,7 +42,7 @@ class RageShake @Inject constructor(private val activity: AppCompatActivity,
var interceptor: (() -> Unit)? = null
fun start() {
val sensorManager = activity.getSystemService(AppCompatActivity.SENSOR_SERVICE) as? SensorManager ?: return
val sensorManager = activity.getSystemService<SensorManager>() ?: return
shakeDetector = ShakeDetector(this).apply {
setSensitivity(vectorPreferences.getRageshakeSensitivity())
@ -94,8 +95,7 @@ class RageShake @Inject constructor(private val activity: AppCompatActivity,
* Check if the feature is available
*/
fun isAvailable(context: Context): Boolean {
return (context.getSystemService(AppCompatActivity.SENSOR_SERVICE) as? SensorManager)
?.getDefaultSensor(Sensor.TYPE_ACCELEROMETER) != null
return context.getSystemService<SensorManager>()?.getDefaultSensor(Sensor.TYPE_ACCELEROMETER) != null
}
}
}

View File

@ -24,11 +24,11 @@ import android.provider.MediaStore
import androidx.core.content.edit
import androidx.preference.PreferenceManager
import com.squareup.seismic.ShakeDetector
import im.vector.matrix.android.api.extensions.tryThis
import im.vector.app.BuildConfig
import im.vector.app.R
import im.vector.app.features.homeserver.ServerUrlsRepository
import im.vector.app.features.themes.ThemeUtils
import im.vector.matrix.android.api.extensions.tryThis
import timber.log.Timber
import javax.inject.Inject
@ -111,6 +111,7 @@ class VectorPreferences @Inject constructor(private val context: Context) {
// notifications
const val SETTINGS_ENABLE_ALL_NOTIF_PREFERENCE_KEY = "SETTINGS_ENABLE_ALL_NOTIF_PREFERENCE_KEY"
const val SETTINGS_ENABLE_THIS_DEVICE_PREFERENCE_KEY = "SETTINGS_ENABLE_THIS_DEVICE_PREFERENCE_KEY"
// public static final String SETTINGS_TURN_SCREEN_ON_PREFERENCE_KEY = "SETTINGS_TURN_SCREEN_ON_PREFERENCE_KEY";
const val SETTINGS_SYSTEM_CALL_NOTIFICATION_PREFERENCE_KEY = "SETTINGS_SYSTEM_CALL_NOTIFICATION_PREFERENCE_KEY"
const val SETTINGS_SYSTEM_NOISY_NOTIFICATION_PREFERENCE_KEY = "SETTINGS_SYSTEM_NOISY_NOTIFICATION_PREFERENCE_KEY"
@ -131,6 +132,7 @@ class VectorPreferences @Inject constructor(private val context: Context) {
const val SETTINGS_SET_SYNC_DELAY_PREFERENCE_KEY = "SETTINGS_SET_SYNC_DELAY_PREFERENCE_KEY"
// Calls
const val SETTINGS_CALL_PREVENT_ACCIDENTAL_CALL_KEY = "SETTINGS_CALL_PREVENT_ACCIDENTAL_CALL_KEY"
const val SETTINGS_CALL_RINGTONE_USE_RIOT_PREFERENCE_KEY = "SETTINGS_CALL_RINGTONE_USE_RIOT_PREFERENCE_KEY"
const val SETTINGS_CALL_RINGTONE_URI_PREFERENCE_KEY = "SETTINGS_CALL_RINGTONE_URI_PREFERENCE_KEY"
@ -148,6 +150,7 @@ class VectorPreferences @Inject constructor(private val context: Context) {
private const val SETTINGS_LABS_SHOW_HIDDEN_EVENTS_PREFERENCE_KEY = "SETTINGS_LABS_SHOW_HIDDEN_EVENTS_PREFERENCE_KEY"
private const val SETTINGS_LABS_ENABLE_SWIPE_TO_REPLY = "SETTINGS_LABS_ENABLE_SWIPE_TO_REPLY"
private const val SETTINGS_DEVELOPER_MODE_FAIL_FAST_PREFERENCE_KEY = "SETTINGS_DEVELOPER_MODE_FAIL_FAST_PREFERENCE_KEY"
// SETTINGS_LABS_HIDE_TECHNICAL_E2E_ERRORS
private const val SETTINGS_LABS_MERGE_E2E_ERRORS = "SETTINGS_LABS_MERGE_E2E_ERRORS"
const val SETTINGS_LABS_UNREAD_NOTIFICATIONS_AS_TAB = "SETTINGS_LABS_UNREAD_NOTIFICATIONS_AS_TAB"
@ -645,6 +648,13 @@ class VectorPreferences @Inject constructor(private val context: Context) {
}
}
/**
* Tells if a confirmation dialog should be displayed before staring a call
*/
fun preventAccidentalCall(): Boolean {
return defaultPrefs.getBoolean(SETTINGS_CALL_PREVENT_ACCIDENTAL_CALL_KEY, false)
}
/**
* Tells if the read receipts should be shown
*

View File

@ -266,74 +266,6 @@ object ThemeUtils {
return null
}
/**
* Get the resource Id applied to the current theme
*
* @param c the context
* @param resourceId the resource id in the light theme
* @return the resource Id for the current theme
*/
// TODO Now that we are API 21, this is not necessary anymore
fun getResourceId(c: Context, resourceId: Int): Int {
val theme = getApplicationTheme(c)
return when (theme) {
THEME_LIGHT_VALUE -> resourceId
THEME_SC_LIGHT_VALUE -> {
return when (resourceId) {
R.drawable.bg_search_edit_text_light -> R.drawable.bg_search_edit_text_light
R.drawable.bg_unread_notification_light -> R.drawable.bg_unread_notification_sc_light
R.drawable.vector_label_background_light -> R.drawable.vector_label_background_light
R.drawable.divider_horizontal_light -> R.drawable.divider_horizontal_light
else -> {
Timber.w("Warning, missing case for wanted drawable in sc_light theme")
resourceId
}
}
}
THEME_DARK_VALUE -> {
return when (resourceId) {
R.drawable.bg_search_edit_text_light -> R.drawable.bg_search_edit_text_dark
R.drawable.bg_unread_notification_light -> R.drawable.bg_unread_notification_dark
R.drawable.vector_label_background_light -> R.drawable.vector_label_background_dark
R.drawable.divider_horizontal_light -> R.drawable.divider_horizontal_dark
else -> {
Timber.w("Warning, missing case for wanted drawable in dark theme")
resourceId
}
}
}
THEME_BLACK_VALUE -> {
return when (resourceId) {
R.drawable.bg_search_edit_text_light -> R.drawable.bg_search_edit_text_black
R.drawable.bg_unread_notification_light -> R.drawable.bg_unread_notification_black
R.drawable.vector_label_background_light -> R.drawable.vector_label_background_black
R.drawable.divider_horizontal_light -> R.drawable.divider_horizontal_black
else -> {
Timber.w("Warning, missing case for wanted drawable in black theme")
resourceId
}
}
}
THEME_SC_VALUE, THEME_SC_DARK_VALUE, THEME_SC_COLORED_VALUE, THEME_SC_DARK_COLORED_VALUE -> {
return when (resourceId) {
R.drawable.bg_search_edit_text_light -> R.drawable.bg_search_edit_text_sc
R.drawable.bg_unread_notification_light -> R.drawable.bg_unread_notification_sc
R.drawable.vector_label_background_light -> R.drawable.vector_label_background_sc
R.drawable.divider_horizontal_light -> R.drawable.divider_horizontal_sc
else -> {
Timber.w("Warning, missing case for wanted drawable in sc theme")
resourceId
}
}
}
else -> {
Timber.w("Warning, missing theme: $theme")
resourceId
}
}
}
/**
* Update the menu icons colors
*

View File

@ -0,0 +1,30 @@
Element is a new type of messenger and collaboration app that:
1. Puts you in control to preserve your privacy
2. Lets you communicate with anyone in the Matrix network, and even beyond by integrating with apps such as Slack
3. Protects you from advertising, datamining and walled gardens
4. Secures you through end-to-end encryption, with cross-signing to verify others
Element is completely different from other messaging and collaboration apps because it is decentralised and open source.
Element lets you self-host - or choose a host - so that you have privacy, ownership and control of your data and conversations. It gives you access to an open network; so youre not just stuck speaking to other Element users only. And it is very secure.
Element is able to do all this because it operates on Matrix - the standard for open, decentralised communication.
Element puts you in control by letting you choose who hosts your conversations. From the Element app, you can choose to host in different ways:
1. Get a free account on the matrix.org public server
2. Self-host your account by running a server on your own hardware
3. Sign up for an account on a custom server by simply subscribing to the Element Matrix Services hosting platform
<b>Why choose Element?</b>
<b>OWN YOUR DATA</b>: You decide where to keep your data and messages. You own it and control it, not some MEGACORP that mines your data or gives access to third parties.
<b>OPEN MESSAGING AND COLLABORATION</b>: You can chat with anyone else in the Matrix network, whether theyre using Element or another Matrix app, and even if they are using a different messaging system of the likes of Slack, IRC or XMPP.
<b>SUPER-SECURE</b>: Real end-to-end encryption (only those in the conversation can decrypt messages), and cross-signing to verify the devices of conversation participants.
<b>COMPLETE COMMUNICATION</b>: Messaging, voice and video calls, file sharing, screen sharing and a whole bunch of integrations, bots and widgets. Build rooms, communities, stay in touch and get things done.
<b>EVERYWHERE YOU ARE</b>: Stay in touch wherever you are with fully synchronised message history across all your devices and on the web at https://element.io/app.

View File

@ -0,0 +1 @@
Secure decentralised chat & VoIP. Keep your data safe from third parties.

View File

@ -0,0 +1 @@
Element (previously Riot.im)

View File

@ -0,0 +1 @@
Element (anciennement Riot.im)

View File

@ -0,0 +1 @@
Element曾为 Riot.im

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="?riot_primary_text_color" android:state_enabled="true" />
<item android:color="?riot_primary_text_color_disabled" android:state_enabled="false" />
</selector>

View File

@ -1,5 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/riot_primary_text_color_dark" android:state_enabled="true" />
<item android:color="@color/riot_primary_text_color_disabled_dark" android:state_enabled="false" />
</selector>

View File

@ -1,5 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/riot_primary_text_color_light" android:state_enabled="true" />
<item android:color="@color/riot_secondary_text_color_light" android:state_enabled="false" />
</selector>

View File

@ -1,5 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/riot_primary_text_color_status" android:state_enabled="true" />
<item android:color="@color/riot_primary_text_color_disabled_status" android:state_enabled="false" />
</selector>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 197 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 306 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

View File

@ -1,5 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/riotx_search_background_mobile_black" />
<corners android:radius="4dp" />
</shape>

View File

@ -1,5 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/riotx_search_background_mobile_dark" />
<corners android:radius="4dp" />
</shape>

View File

@ -1,5 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/riotx_search_background_mobile_light" />
<corners android:radius="4dp" />
</shape>

View File

@ -5,5 +5,5 @@
<corners android:radius="40dp" />
<solid android:color="@color/riotx_unread_room_badge_dark" />
<solid android:color="?riotx_unread_room_badge" />
</shape>

View File

@ -1,9 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="40dp" />
<solid android:color="@color/riotx_unread_room_badge_black" />
</shape>

View File

@ -1,9 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="40dp" />
<solid android:color="@color/riotx_unread_room_badge_light" />
</shape>

View File

@ -1,11 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<!-- required on android < 4.2 devices -->
<solid android:color="@android:color/transparent" />
<stroke
android:width="4dp"
android:color="@color/direct_chat_ring_color_black" />
</shape>

View File

@ -1,11 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<!-- required on android < 4.2 devices -->
<solid android:color="@android:color/transparent" />
<stroke
android:width="4dp"
android:color="@color/direct_chat_ring_color_dark" />
</shape>

View File

@ -1,11 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<!-- required on android < 4.2 devices -->
<solid android:color="@android:color/transparent" />
<stroke
android:width="4dp"
android:color="@color/direct_chat_ring_color_light" />
</shape>

View File

@ -1,11 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<!-- required on android < 4.2 devices -->
<solid android:color="@android:color/transparent" />
<stroke
android:width="4dp"
android:color="@color/direct_chat_ring_color_status" />
</shape>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<size android:height="1dp" />
<solid android:color="@color/riotx_header_panel_border_mobile_dark" />
<solid android:color="?riotx_header_panel_border_mobile" />
</shape>

View File

@ -1,5 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<size android:height="1dp" />
<solid android:color="@color/riotx_header_panel_border_mobile_black" />
</shape>

View File

@ -1,5 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<size android:height="1dp" />
<solid android:color="@color/riotx_header_panel_border_mobile_light" />
</shape>

View File

@ -9,7 +9,7 @@
<item android:left="6dp" android:right="2dp">
<shape>
<corners android:bottomRightRadius="4dp" android:topRightRadius="4dp" />
<solid android:color="@color/riotx_header_panel_background_dark" />
<solid android:color="?riotx_header_panel_background" />
</shape>
</item>

View File

@ -1,35 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true">
<layer-list>
<!-- Draw the BG. -->
<item android:left="6dp" android:right="2dp">
<shape>
<corners android:bottomRightRadius="4dp" android:topRightRadius="4dp" />
<solid android:color="@color/riotx_header_panel_background_black" />
</shape>
</item>
<item android:gravity="start" android:left="2dp">
<shape>
<size android:width="4dp" />
<corners android:bottomLeftRadius="40dp" android:topLeftRadius="40dp" />
<solid android:color="@color/riotx_accent" />
</shape>
</item>
</layer-list>
</item>
<item android:state_checked="false">
<shape android:shape="rectangle">
<solid android:color="@android:color/transparent" />
</shape>
</item>
</selector>

View File

@ -1,35 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true">
<layer-list>
<!-- Draw the BG. -->
<item android:left="6dp" android:right="2dp">
<shape>
<corners android:bottomRightRadius="4dp" android:topRightRadius="4dp" />
<solid android:color="@color/riotx_header_panel_background_light" />
</shape>
</item>
<item android:gravity="start" android:left="2dp">
<shape>
<size android:width="4dp" />
<corners android:bottomLeftRadius="40dp" android:topLeftRadius="40dp" />
<solid android:color="@color/riotx_accent" />
</shape>
</item>
</layer-list>
</item>
<item android:state_checked="false">
<shape android:shape="rectangle">
<solid android:color="@android:color/transparent" />
</shape>
</item>
</selector>

View File

@ -6,6 +6,6 @@
android:width="1dp"
android:height="1dp" />
<solid android:color="@color/list_divider_color_dark" />
<solid android:color="?list_divider_color" />
</shape>

View File

@ -1,11 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<size
android:width="1dp"
android:height="1dp" />
<solid android:color="@color/list_divider_color_light" />
</shape>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="10dp" />
<solid android:color="#343a46" />
</shape>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="10dp" />
<solid android:color="#1A000000" />
</shape>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="10dp" />
<solid android:color="#1A000000" />
</shape>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="10dp" />
<solid android:color="#1A000000" />
</shape>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="10dp" />
<solid android:color="#1A000000" />
</shape>

View File

@ -2,5 +2,5 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="10dp" />
<solid android:color="#343a46" />
<solid android:color="?riotx_header_panel_border_mobile" />
</shape>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="10dp" />
<solid android:color="@color/riotx_header_panel_border_mobile_black" />
</shape>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="10dp" />
<solid android:color="@color/riotx_header_panel_border_mobile_dark" />
</shape>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="10dp" />
<solid android:color="@color/riotx_header_panel_border_mobile_light" />
</shape>

View File

@ -1,9 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
android:angle="90"
android:endColor="#1a1a1a"
android:startColor="#212121"
android:type="linear" />
</shape>

View File

@ -1,9 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
android:angle="90"
android:endColor="#c0c0c0"
android:startColor="#e1e1e1"
android:type="linear" />
</shape>

View File

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
android:angle="90"
android:endColor="#212121"
android:startColor="#1a1a1a" />
</shape>

View File

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
android:angle="90"
android:endColor="#e1e1e1"
android:startColor="#d3d3d3" />
</shape>

View File

@ -1,10 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#4d4d4d" />
<padding
android:bottom="4dp"
android:left="16dp"
android:right="16dp"
android:top="4dp" />
<corners android:radius="3dp" />
</shape>

View File

@ -1,10 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#FFF2F2F2" />
<padding
android:bottom="4dp"
android:left="16dp"
android:right="16dp"
android:top="4dp" />
<corners android:radius="3dp" />
</shape>

View File

@ -4,10 +4,10 @@
<corners android:radius="3dp" />
<solid android:color="@color/riotx_fab_label_bg_light" />
<solid android:color="?riotx_fab_label_bg" />
<stroke
android:width="0.5dp"
android:color="#1EFFFFFF" />
android:color="?riotx_fab_label_stroke" />
</shape>

View File

@ -1,13 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="3dp" />
<solid android:color="@color/riotx_fab_label_bg_black" />
<stroke
android:width="0.5dp"
android:color="@color/black" />
</shape>

View File

@ -1,13 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="3dp" />
<solid android:color="@color/riotx_fab_label_bg_dark" />
<stroke
android:width="0.5dp"
android:color="@color/black" />
</shape>

View File

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Non focused states -->
<item android:drawable="@drawable/vector_tabbar_unselected_background" android:state_focused="false" android:state_pressed="false" android:state_selected="false" />
<item android:drawable="@drawable/vector_tabbar_selected_background" android:state_focused="false" android:state_pressed="false" android:state_selected="true" />
<!-- Focused states -->
<item android:drawable="@drawable/vector_tabbar_unselected_background" android:state_focused="true" android:state_pressed="false" android:state_selected="false" />
<item android:drawable="@drawable/vector_tabbar_selected_background" android:state_focused="true" android:state_pressed="false" android:state_selected="true" />
<!-- Pressed -->
<!-- Non focused states -->
<item android:drawable="@drawable/vector_tabbar_unselected_background" android:state_focused="false" android:state_pressed="true" android:state_selected="false" />
<item android:drawable="@drawable/vector_tabbar_selected_background" android:state_focused="false" android:state_pressed="true" android:state_selected="true" />
<!-- Focused states -->
<item android:drawable="@drawable/vector_tabbar_unselected_background" android:state_focused="true" android:state_pressed="true" android:state_selected="false" />
<item android:drawable="@drawable/vector_tabbar_selected_background" android:state_focused="true" android:state_pressed="true" android:state_selected="true" />
</selector>

Some files were not shown because too many files have changed in this diff Show More