diff options
33 files changed, 381 insertions, 306 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index d3231829..a62956e1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ ###Changelog -####Versin 1.8.4 +####Version 1.9.0 +* Per conference notification settings +* Let user decide whether to compress pictures +* Ask user to exclude Conversations from battery optimizations + +####Version 1.8.4 * prompt to trust own OMEMO devices * fixed rotation issues in avatar publication * invite non-contact JIDs to conferences diff --git a/src/main/AndroidManifest.xml b/src/main/AndroidManifest.xml index 2f93480e..dda0fbe9 100644 --- a/src/main/AndroidManifest.xml +++ b/src/main/AndroidManifest.xml @@ -14,6 +14,7 @@ <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> <uses-permission android:name="android.permission.VIBRATE"/> <uses-permission android:name="android.permission.NFC"/> + <uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS"/> <uses-permission android:name="android.permission.READ_PHONE_STATE" diff --git a/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java b/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java index 020d3ee7..ca76eb0c 100644 --- a/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java +++ b/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java @@ -16,6 +16,7 @@ import android.net.Uri; import android.os.Build; import android.os.Bundle; import android.provider.MediaStore; +import android.provider.Settings; import android.support.v4.widget.SlidingPaneLayout; import android.support.v4.widget.SlidingPaneLayout.PanelSlideListener; import android.util.Log; @@ -36,6 +37,8 @@ import android.widget.Toast; import net.java.otr4j.session.SessionStatus; +import org.openintents.openpgp.util.OpenPgpApi; + import java.util.ArrayList; import java.util.Iterator; import java.util.List; @@ -61,7 +64,6 @@ import eu.siacs.conversations.utils.ExceptionHelper; import eu.siacs.conversations.xmpp.OnUpdateBlocklist; import eu.siacs.conversations.xmpp.jid.InvalidJidException; import eu.siacs.conversations.xmpp.jid.Jid; -import org.openintents.openpgp.util.OpenPgpApi; public class ConversationActivity extends XmppActivity implements OnAccountUpdate, OnConversationUpdate, OnRosterUpdate, OnUpdateBlocklist, XmppConnectionService.OnShowErrorToast { @@ -200,7 +202,7 @@ public class ConversationActivity extends XmppActivity @Override public void onItemClick(AdapterView<?> arg0, View clickedView, - int position, long arg3) { + int position, long arg3) { if (getSelectedConversation() != conversationList.get(position)) { setSelectedConversation(conversationList.get(position)); ConversationActivity.this.mConversationFragment.reInit(getSelectedConversation()); @@ -288,7 +290,7 @@ public class ConversationActivity extends XmppActivity SlidingPaneLayout mSlidingPaneLayout = (SlidingPaneLayout) mContentView; mSlidingPaneLayout.setParallaxDistance(150); mSlidingPaneLayout - .setShadowResource(R.drawable.es_slidingpane_shadow); + .setShadowResource(R.drawable.es_slidingpane_shadow); mSlidingPaneLayout.setSliderFadeColor(0); mSlidingPaneLayout.setPanelSlideListener(new PanelSlideListener() { @@ -299,7 +301,7 @@ public class ConversationActivity extends XmppActivity hideKeyboard(); if (xmppConnectionServiceBound) { xmppConnectionService.getNotificationService() - .setOpenConversation(null); + .setOpenConversation(null); } closeContextMenu(); } @@ -442,7 +444,7 @@ public class ConversationActivity extends XmppActivity case ATTACHMENT_CHOICE_CHOOSE_IMAGE: intent.setAction(Intent.ACTION_GET_CONTENT); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) { - intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE,true); + intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true); } intent.setType("image/*"); chooser = true; @@ -509,16 +511,16 @@ public class ConversationActivity extends XmppActivity } switch (attachmentChoice) { case ATTACHMENT_CHOICE_LOCATION: - getPreferences().edit().putString("recently_used_quick_action","location").apply(); + getPreferences().edit().putString("recently_used_quick_action", "location").apply(); break; case ATTACHMENT_CHOICE_RECORD_VOICE: - getPreferences().edit().putString("recently_used_quick_action","voice").apply(); + getPreferences().edit().putString("recently_used_quick_action", "voice").apply(); break; case ATTACHMENT_CHOICE_TAKE_PHOTO: - getPreferences().edit().putString("recently_used_quick_action","photo").apply(); + getPreferences().edit().putString("recently_used_quick_action", "photo").apply(); break; case ATTACHMENT_CHOICE_CHOOSE_IMAGE: - getPreferences().edit().putString("recently_used_quick_action","picture").apply(); + getPreferences().edit().putString("recently_used_quick_action", "picture").apply(); break; } final Conversation conversation = getSelectedConversation(); @@ -558,19 +560,19 @@ public class ConversationActivity extends XmppActivity selectPresenceToAttachFile(attachmentChoice, encryption); } else { final ConversationFragment fragment = (ConversationFragment) getFragmentManager() - .findFragmentByTag("conversation"); + .findFragmentByTag("conversation"); if (fragment != null) { fragment.showNoPGPKeyDialog(false, new OnClickListener() { @Override public void onClick(DialogInterface dialog, - int which) { + int which) { conversation - .setNextEncryption(Message.ENCRYPTION_NONE); + .setNextEncryption(Message.ENCRYPTION_NONE); xmppConnectionService.databaseBackend - .updateConversation(conversation); - selectPresenceToAttachFile(attachmentChoice,Message.ENCRYPTION_NONE); + .updateConversation(conversation); + selectPresenceToAttachFile(attachmentChoice, Message.ENCRYPTION_NONE); } }); } @@ -610,8 +612,8 @@ public class ConversationActivity extends XmppActivity attachFile(requestCode); } } else { - Toast.makeText(this,R.string.no_storage_permission,Toast.LENGTH_SHORT).show(); - } + Toast.makeText(this, R.string.no_storage_permission, Toast.LENGTH_SHORT).show(); + } } public void startDownloadable(Message message) { @@ -622,14 +624,14 @@ public class ConversationActivity extends XmppActivity Transferable transferable = message.getTransferable(); if (transferable != null) { if (!transferable.start()) { - Toast.makeText(this, R.string.not_connected_try_again,Toast.LENGTH_SHORT).show(); + Toast.makeText(this, R.string.not_connected_try_again, Toast.LENGTH_SHORT).show(); } } else if (message.treatAsDownloadable() != Message.Decision.NEVER) { xmppConnectionService.getHttpConnectionManager().createNewDownloadConnection(message, true); } } - @Override + @Override public boolean onOptionsItemSelected(final MenuItem item) { if (item.getItemId() == android.R.id.home) { showConversationsOverview(); @@ -700,9 +702,9 @@ public class ConversationActivity extends XmppActivity this.mConversationFragment.reInit(getSelectedConversation()); } else { setSelectedConversation(null); - if (mRedirected.compareAndSet(false,true)) { + if (mRedirected.compareAndSet(false, true)) { Intent intent = new Intent(this, StartConversationActivity.class); - intent.putExtra("init",true); + intent.putExtra("init", true); startActivity(intent); finish(); } @@ -717,7 +719,7 @@ public class ConversationActivity extends XmppActivity View dialogView = getLayoutInflater().inflate( R.layout.dialog_clear_history, null); final CheckBox endConversationCheckBox = (CheckBox) dialogView - .findViewById(R.id.end_conversation_checkbox); + .findViewById(R.id.end_conversation_checkbox); builder.setView(dialogView); builder.setNegativeButton(getString(R.string.cancel), null); builder.setPositiveButton(getString(R.string.delete_messages), @@ -819,7 +821,7 @@ public class ConversationActivity extends XmppActivity } PopupMenu popup = new PopupMenu(this, menuItemView); final ConversationFragment fragment = (ConversationFragment) getFragmentManager() - .findFragmentByTag("conversation"); + .findFragmentByTag("conversation"); if (fragment != null) { popup.setOnMenuItemClickListener(new OnMenuItemClickListener() { @@ -840,7 +842,7 @@ public class ConversationActivity extends XmppActivity conversation.setNextEncryption(Message.ENCRYPTION_PGP); item.setChecked(true); } else { - announcePgp(conversation.getAccount(),conversation); + announcePgp(conversation.getAccount(), conversation); } } else { showInstallPgpDialog(); @@ -946,7 +948,7 @@ public class ConversationActivity extends XmppActivity int rotation = getWindowManager().getDefaultDisplay().getRotation(); final int upKey; final int downKey; - switch(rotation) { + switch (rotation) { case Surface.ROTATION_90: upKey = KeyEvent.KEYCODE_DPAD_LEFT; downKey = KeyEvent.KEYCODE_DPAD_RIGHT; @@ -969,7 +971,8 @@ public class ConversationActivity extends XmppActivity return true; } else if (modifier && key == downKey) { if (isConversationsOverviewHideable() && !isConversationsOverviewVisable()) { - showConversationsOverview();; + showConversationsOverview(); + ; } return selectDownConversation(); } else if (modifier && key == upKey) { @@ -1105,11 +1108,11 @@ public class ConversationActivity extends XmppActivity public void onSaveInstanceState(final Bundle savedInstanceState) { Conversation conversation = getSelectedConversation(); if (conversation != null) { - savedInstanceState.putString(STATE_OPEN_CONVERSATION,conversation.getUuid()); + savedInstanceState.putString(STATE_OPEN_CONVERSATION, conversation.getUuid()); } else { savedInstanceState.remove(STATE_OPEN_CONVERSATION); } - savedInstanceState.putBoolean(STATE_PANEL_OPEN,isConversationsOverviewVisable()); + savedInstanceState.putBoolean(STATE_PANEL_OPEN, isConversationsOverviewVisable()); if (this.mPendingImageUris.size() >= 1) { savedInstanceState.putString(STATE_PENDING_URI, this.mPendingImageUris.get(0).toString()); } else { @@ -1136,7 +1139,7 @@ public class ConversationActivity extends XmppActivity } if (xmppConnectionService.getAccounts().size() == 0) { - if (mRedirected.compareAndSet(false,true)) { + if (mRedirected.compareAndSet(false, true)) { if (Config.X509_VERIFICATION) { startActivity(new Intent(this, ManageAccountActivity.class)); } else { @@ -1145,9 +1148,9 @@ public class ConversationActivity extends XmppActivity finish(); } } else if (conversationList.size() <= 0) { - if (mRedirected.compareAndSet(false,true)) { + if (mRedirected.compareAndSet(false, true)) { Intent intent = new Intent(this, StartConversationActivity.class); - intent.putExtra("init",true); + intent.putExtra("init", true); startActivity(intent); finish(); } @@ -1179,7 +1182,7 @@ public class ConversationActivity extends XmppActivity this.onActivityResult(mPostponedActivityResult.first, RESULT_OK, mPostponedActivityResult.second); } - if(!forbidProcessingPendings) { + if (!forbidProcessingPendings) { for (Iterator<Uri> i = mPendingImageUris.iterator(); i.hasNext(); i.remove()) { Uri foo = i.next(); attachImageToConversation(getSelectedConversation(), foo); @@ -1196,7 +1199,9 @@ public class ConversationActivity extends XmppActivity } forbidProcessingPendings = false; - ExceptionHelper.checkForCrash(this, this.xmppConnectionService); + if (!ExceptionHelper.checkForCrash(this, this.xmppConnectionService)) { + openBatteryOptimizationDialogIfNeeded(); + } setIntent(new Intent()); } @@ -1205,14 +1210,14 @@ public class ConversationActivity extends XmppActivity final String downloadUuid = intent.getStringExtra(MESSAGE); final String text = intent.getStringExtra(TEXT); final String nick = intent.getStringExtra(NICK); - final boolean pm = intent.getBooleanExtra(PRIVATE_MESSAGE,false); + final boolean pm = intent.getBooleanExtra(PRIVATE_MESSAGE, false); if (selectConversationByUuid(uuid)) { this.mConversationFragment.reInit(getSelectedConversation()); if (nick != null) { if (pm) { Jid jid = getSelectedConversation().getJid(); try { - Jid next = Jid.fromParts(jid.getLocalpart(),jid.getDomainpart(),nick); + Jid next = Jid.fromParts(jid.getLocalpart(), jid.getDomainpart(), nick); this.mConversationFragment.privateMessageWith(next); } catch (final InvalidJidException ignored) { //do nothing @@ -1262,7 +1267,7 @@ public class ConversationActivity extends XmppActivity Uri uri = intent.getData(); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2 && uri == null) { ClipData clipData = intent.getClipData(); - for(int i = 0; i < clipData.getItemCount(); ++i) { + for (int i = 0; i < clipData.getItemCount(); ++i) { uris.add(clipData.getItemAt(i).getUri()); } } else { @@ -1272,8 +1277,7 @@ public class ConversationActivity extends XmppActivity } @Override - protected void onActivityResult(int requestCode, int resultCode, - final Intent data) { + protected void onActivityResult(int requestCode, int resultCode, final Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode == RESULT_OK) { if (requestCode == REQUEST_DECRYPT_PGP) { @@ -1301,15 +1305,15 @@ public class ConversationActivity extends XmppActivity mPendingImageUris.clear(); mPendingImageUris.addAll(extractUriFromIntent(data)); if (xmppConnectionServiceBound) { - for(Iterator<Uri> i = mPendingImageUris.iterator(); i.hasNext(); i.remove()) { - attachImageToConversation(getSelectedConversation(),i.next()); + for (Iterator<Uri> i = mPendingImageUris.iterator(); i.hasNext(); i.remove()) { + attachImageToConversation(getSelectedConversation(), i.next()); } } } else if (requestCode == ATTACHMENT_CHOICE_CHOOSE_FILE || requestCode == ATTACHMENT_CHOICE_RECORD_VOICE) { mPendingFileUris.clear(); mPendingFileUris.addAll(extractUriFromIntent(data)); if (xmppConnectionServiceBound) { - for(Iterator<Uri> i = mPendingFileUris.iterator(); i.hasNext(); i.remove()) { + for (Iterator<Uri> i = mPendingFileUris.iterator(); i.hasNext(); i.remove()) { attachFileToConversation(getSelectedConversation(), i.next()); } } @@ -1327,9 +1331,9 @@ public class ConversationActivity extends XmppActivity mPendingImageUris.clear(); } } else if (requestCode == ATTACHMENT_CHOICE_LOCATION) { - double latitude = data.getDoubleExtra("latitude",0); - double longitude = data.getDoubleExtra("longitude",0); - this.mPendingGeoUri = Uri.parse("geo:"+String.valueOf(latitude)+","+String.valueOf(longitude)); + double latitude = data.getDoubleExtra("latitude", 0); + double longitude = data.getDoubleExtra("longitude", 0); + this.mPendingGeoUri = Uri.parse("geo:" + String.valueOf(latitude) + "," + String.valueOf(longitude)); if (xmppConnectionServiceBound) { attachLocationToConversation(getSelectedConversation(), mPendingGeoUri); this.mPendingGeoUri = null; @@ -1344,6 +1348,39 @@ public class ConversationActivity extends XmppActivity if (requestCode == ConversationActivity.REQUEST_DECRYPT_PGP) { mConversationFragment.onActivityResult(requestCode, resultCode, data); } + if (requestCode == REQUEST_BATTERY_OP) { + setNeverAskForBatteryOptimizationsAgain(); + } + } + } + + private void setNeverAskForBatteryOptimizationsAgain() { + getPreferences().edit().putBoolean("show_battery_optimization", false).commit(); + } + + private void openBatteryOptimizationDialogIfNeeded() { + if (showBatteryOptimizationWarning() && getPreferences().getBoolean("show_battery_optimization", true)) { + AlertDialog.Builder builder = new AlertDialog.Builder(this); + builder.setTitle(R.string.battery_optimizations_enabled); + builder.setMessage(R.string.battery_optimizations_enabled_dialog); + builder.setPositiveButton(R.string.next, new OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + Intent intent = new Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS); + Uri uri = Uri.parse("package:" + getPackageName()); + intent.setData(uri); + startActivityForResult(intent, REQUEST_BATTERY_OP); + } + }); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) { + builder.setOnDismissListener(new DialogInterface.OnDismissListener() { + @Override + public void onDismiss(DialogInterface dialog) { + setNeverAskForBatteryOptimizationsAgain(); + } + }); + } + builder.create().show(); } } diff --git a/src/main/java/eu/siacs/conversations/ui/EditAccountActivity.java b/src/main/java/eu/siacs/conversations/ui/EditAccountActivity.java index 01054de1..09958c22 100644 --- a/src/main/java/eu/siacs/conversations/ui/EditAccountActivity.java +++ b/src/main/java/eu/siacs/conversations/ui/EditAccountActivity.java @@ -5,9 +5,10 @@ import android.app.AlertDialog.Builder; import android.app.PendingIntent; import android.content.DialogInterface; import android.content.Intent; -import android.content.res.Configuration; import android.graphics.Bitmap; +import android.net.Uri; import android.os.Bundle; +import android.provider.Settings; import android.security.KeyChain; import android.security.KeyChainAliasCallback; import android.text.Editable; @@ -52,16 +53,17 @@ import eu.siacs.conversations.xmpp.pep.Avatar; public class EditAccountActivity extends XmppActivity implements OnAccountUpdate, OnKeyStatusUpdated, OnCaptchaRequested, KeyChainAliasCallback, XmppConnectionService.OnShowErrorToast { - private LinearLayout mMainLayout; private AutoCompleteTextView mAccountJid; private EditText mPassword; private EditText mPasswordConfirm; private CheckBox mRegisterNew; private Button mCancelButton; private Button mSaveButton; + private Button mDisableBatterOptimizations; private TableLayout mMoreTable; private LinearLayout mStats; + private RelativeLayout mBatteryOptimizations; private TextView mServerInfoSm; private TextView mServerInfoRosterVersion; private TextView mServerInfoCarbons; @@ -311,6 +313,14 @@ public class EditAccountActivity extends XmppActivity implements OnAccountUpdate }); } + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent data) { + super.onActivityResult(requestCode, resultCode, data); + if (requestCode == REQUEST_BATTERY_OP) { + updateAccountInformation(mAccount == null); + } + } + protected void updateSaveButton() { if (accountInfoEdited() && !mInitMode) { this.mSaveButton.setText(R.string.save); @@ -372,7 +382,6 @@ public class EditAccountActivity extends XmppActivity implements OnAccountUpdate protected void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_edit_account); - this.mMainLayout = (LinearLayout) findViewById(R.id.account_main_layout); this.mAccountJid = (AutoCompleteTextView) findViewById(R.id.account_jid); this.mAccountJid.addTextChangedListener(this.mTextWatcher); this.mAccountJidLabel = (TextView) findViewById(R.id.account_jid_label); @@ -387,6 +396,17 @@ public class EditAccountActivity extends XmppActivity implements OnAccountUpdate this.mAvatar.setOnClickListener(this.mAvatarClickListener); this.mRegisterNew = (CheckBox) findViewById(R.id.account_register_new); this.mStats = (LinearLayout) findViewById(R.id.stats); + this.mBatteryOptimizations = (RelativeLayout) findViewById(R.id.battery_optimization); + this.mDisableBatterOptimizations = (Button) findViewById(R.id.batt_op_disable); + this.mDisableBatterOptimizations.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View v) { + Intent intent = new Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS); + Uri uri = Uri.parse("package:"+getPackageName()); + intent.setData(uri); + startActivityForResult(intent,REQUEST_BATTERY_OP); + } + }); this.mSessionEst = (TextView) findViewById(R.id.session_est); this.mServerInfoRosterVersion = (TextView) findViewById(R.id.server_info_roster_version); this.mServerInfoCarbons = (TextView) findViewById(R.id.server_info_carbons); @@ -595,6 +615,7 @@ public class EditAccountActivity extends XmppActivity implements OnAccountUpdate } if (this.mAccount.isOnlineAndConnected() && !this.mFetchingAvatar) { this.mStats.setVisibility(View.VISIBLE); + this.mBatteryOptimizations.setVisibility(showBatteryOptimizationWarning() ? View.VISIBLE : View.GONE); this.mSessionEst.setText(UIHelper.readableTimeDifferenceFull(this, this.mAccount.getXmppConnection() .getLastSessionEstablished())); Features features = this.mAccount.getXmppConnection().getFeatures(); diff --git a/src/main/java/eu/siacs/conversations/ui/XmppActivity.java b/src/main/java/eu/siacs/conversations/ui/XmppActivity.java index a23f51eb..36e82b2a 100644 --- a/src/main/java/eu/siacs/conversations/ui/XmppActivity.java +++ b/src/main/java/eu/siacs/conversations/ui/XmppActivity.java @@ -35,6 +35,7 @@ import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.os.IBinder; +import android.os.PowerManager; import android.os.SystemClock; import android.preference.PreferenceManager; import android.text.InputType; @@ -91,6 +92,7 @@ public abstract class XmppActivity extends Activity { protected static final int REQUEST_ANNOUNCE_PGP = 0x0101; protected static final int REQUEST_INVITE_TO_CONVERSATION = 0x0102; protected static final int REQUEST_CHOOSE_PGP_ID = 0x0103; + protected static final int REQUEST_BATTERY_OP = 0x13849ff; public XmppConnectionService xmppConnectionService; public boolean xmppConnectionServiceBound = false; @@ -372,6 +374,15 @@ public abstract class XmppActivity extends Activity { } } + protected boolean showBatteryOptimizationWarning() { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + PowerManager pm = (PowerManager) getSystemService(POWER_SERVICE); + return !pm.isIgnoringBatteryOptimizations(getPackageName()); + } else { + return false; + } + } + protected boolean usingEnterKey() { return getPreferences().getBoolean("display_enter_key", false); } diff --git a/src/main/java/eu/siacs/conversations/utils/ExceptionHelper.java b/src/main/java/eu/siacs/conversations/utils/ExceptionHelper.java index 0f182847..8799b4a5 100644 --- a/src/main/java/eu/siacs/conversations/utils/ExceptionHelper.java +++ b/src/main/java/eu/siacs/conversations/utils/ExceptionHelper.java @@ -24,6 +24,7 @@ import eu.siacs.conversations.entities.Account; import eu.siacs.conversations.entities.Conversation; import eu.siacs.conversations.entities.Message; import eu.siacs.conversations.services.XmppConnectionService; +import eu.siacs.conversations.ui.ConversationActivity; import eu.siacs.conversations.xmpp.jid.InvalidJidException; import eu.siacs.conversations.xmpp.jid.Jid; @@ -35,14 +36,13 @@ public class ExceptionHelper { } } - public static void checkForCrash(Context context, - final XmppConnectionService service) { + public static boolean checkForCrash(ConversationActivity activity, final XmppConnectionService service) { try { final SharedPreferences preferences = PreferenceManager - .getDefaultSharedPreferences(context); + .getDefaultSharedPreferences(activity); boolean neverSend = preferences.getBoolean("never_send", false); if (neverSend) { - return; + return false; } List<Account> accounts = service.getAccounts(); Account account = null; @@ -53,24 +53,25 @@ public class ExceptionHelper { } } if (account == null) { - return; + return false; } final Account finalAccount = account; - FileInputStream file = context.openFileInput("stacktrace.txt"); + FileInputStream file = activity.openFileInput("stacktrace.txt"); InputStreamReader inputStreamReader = new InputStreamReader(file); BufferedReader stacktrace = new BufferedReader(inputStreamReader); final StringBuilder report = new StringBuilder(); - PackageManager pm = context.getPackageManager(); + PackageManager pm = activity.getPackageManager(); PackageInfo packageInfo = null; try { - packageInfo = pm.getPackageInfo(context.getPackageName(), 0); + packageInfo = pm.getPackageInfo(activity.getPackageName(), 0); report.append("Version: " + packageInfo.versionName + '\n'); report.append("Last Update: " - + DateUtils.formatDateTime(context, - packageInfo.lastUpdateTime, - DateUtils.FORMAT_SHOW_TIME - | DateUtils.FORMAT_SHOW_DATE) + '\n'); + + DateUtils.formatDateTime(activity, + packageInfo.lastUpdateTime, + DateUtils.FORMAT_SHOW_TIME + | DateUtils.FORMAT_SHOW_DATE) + '\n'); } catch (NameNotFoundException e) { + return false; } String line; while ((line = stacktrace.readLine()) != null) { @@ -78,11 +79,11 @@ public class ExceptionHelper { report.append('\n'); } file.close(); - context.deleteFile("stacktrace.txt"); - AlertDialog.Builder builder = new AlertDialog.Builder(context); - builder.setTitle(context.getString(R.string.crash_report_title)); - builder.setMessage(context.getText(R.string.crash_report_message)); - builder.setPositiveButton(context.getText(R.string.send_now), + activity.deleteFile("stacktrace.txt"); + AlertDialog.Builder builder = new AlertDialog.Builder(activity); + builder.setTitle(activity.getString(R.string.crash_report_title)); + builder.setMessage(activity.getText(R.string.crash_report_message)); + builder.setPositiveButton(activity.getText(R.string.send_now), new OnClickListener() { @Override @@ -91,18 +92,18 @@ public class ExceptionHelper { Log.d(Config.LOGTAG, "using account=" + finalAccount.getJid().toBareJid() + " to send in stack trace"); - Conversation conversation = null; - try { - conversation = service.findOrCreateConversation(finalAccount, - Jid.fromString("bugs@siacs.eu"), false); - } catch (final InvalidJidException ignored) { - } - Message message = new Message(conversation, report + Conversation conversation = null; + try { + conversation = service.findOrCreateConversation(finalAccount, + Jid.fromString("bugs@siacs.eu"), false); + } catch (final InvalidJidException ignored) { + } + Message message = new Message(conversation, report .toString(), Message.ENCRYPTION_NONE); service.sendMessage(message); } }); - builder.setNegativeButton(context.getText(R.string.send_never), + builder.setNegativeButton(activity.getText(R.string.send_never), new OnClickListener() { @Override @@ -112,8 +113,9 @@ public class ExceptionHelper { } }); builder.create().show(); + return true; } catch (final IOException ignored) { - } - + return false; + } } } diff --git a/src/main/res/layout/activity_edit_account.xml b/src/main/res/layout/activity_edit_account.xml index 73395bba..ed935819 100644 --- a/src/main/res/layout/activity_edit_account.xml +++ b/src/main/res/layout/activity_edit_account.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:tools="http://schemas.android.com/tools" xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/grey200"> @@ -10,22 +10,22 @@ android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_above="@+id/button_bar" - android:layout_alignParentTop="true" > + android:layout_alignParentTop="true"> <LinearLayout android:id="@+id/account_main_layout" android:layout_width="match_parent" android:layout_height="wrap_content" - android:orientation="vertical" > + android:orientation="vertical"> <RelativeLayout android:id="@+id/editor" android:layout_width="fill_parent" android:layout_height="wrap_content" + android:layout_marginBottom="@dimen/activity_vertical_margin" android:layout_marginLeft="@dimen/activity_horizontal_margin" android:layout_marginRight="@dimen/activity_horizontal_margin" android:layout_marginTop="@dimen/activity_vertical_margin" - android:layout_marginBottom="@dimen/activity_vertical_margin" android:background="@drawable/infocard_border" android:orientation="vertical" android:padding="@dimen/infocard_padding"> @@ -40,78 +40,78 @@ <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" - android:orientation="vertical" - android:layout_toRightOf="@+id/avater"> - <TextView - android:id="@+id/account_jid_label" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="@string/account_settings_jabber_id" - android:textColor="@color/black87" - android:textSize="?attr/TextSizeBody" /> + android:layout_toRightOf="@+id/avater" + android:orientation="vertical"> + <TextView + android:id="@+id/account_jid_label" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/account_settings_jabber_id" + android:textColor="@color/black87" + android:textSize="?attr/TextSizeBody"/> - <AutoCompleteTextView - android:id="@+id/account_jid" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:hint="@string/account_settings_example_jabber_id" - android:inputType="textEmailAddress" - android:textColor="@color/black87" - android:textColorHint="@color/black54" - android:textSize="?attr/TextSizeBody" /> + <AutoCompleteTextView + android:id="@+id/account_jid" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:hint="@string/account_settings_example_jabber_id" + android:inputType="textEmailAddress" + android:textColor="@color/black87" + android:textColorHint="@color/black54" + android:textSize="?attr/TextSizeBody"/> - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginTop="8dp" - android:text="@string/account_settings_password" - android:textColor="@color/black87" - android:textSize="?attr/TextSizeBody" /> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginTop="8dp" + android:text="@string/account_settings_password" + android:textColor="@color/black87" + android:textSize="?attr/TextSizeBody"/> - <EditText - android:id="@+id/account_password" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:hint="@string/password" - android:inputType="textPassword" - android:textColor="@color/black87" - android:textColorHint="@color/black54" - android:textSize="?attr/TextSizeBody" /> + <EditText + android:id="@+id/account_password" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:hint="@string/password" + android:inputType="textPassword" + android:textColor="@color/black87" + android:textColorHint="@color/black54" + android:textSize="?attr/TextSizeBody"/> <LinearLayout android:id="@+id/name_port" - android:layout_marginTop="8dp" - android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" + android:layout_marginTop="8dp" + android:orientation="horizontal" android:weightSum="1"> <LinearLayout - android:orientation="vertical" android:layout_width="0dp" android:layout_height="match_parent" - android:layout_weight="0.8"> + android:layout_weight="0.8" + android:orientation="vertical"> <TextView + android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/account_settings_hostname" android:textColor="@color/black87" - android:textSize="?attr/TextSizeBody" - android:id="@+id/textView"/> + android:textSize="?attr/TextSizeBody"/> <EditText + android:id="@+id/hostname" android:layout_width="fill_parent" android:layout_height="wrap_content" + android:hint="@string/hostname_or_onion" + android:inputType="textNoSuggestions" android:textColor="@color/black87" android:textColorHint="@color/black54" - android:textSize="?attr/TextSizeBody" - android:id="@+id/hostname" - android:inputType="textNoSuggestions" - android:hint="@string/hostname_or_onion"/> + android:textSize="?attr/TextSizeBody"/> </LinearLayout> <LinearLayout - android:orientation="vertical" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="0.2" + android:orientation="vertical" > <TextView android:layout_width="wrap_content" @@ -120,65 +120,108 @@ android:textColor="@color/black87" android:textSize="?attr/TextSizeBody"/> <EditText + android:id="@+id/port" android:layout_width="match_parent" android:layout_height="match_parent" android:inputType="number" android:maxLength="5" android:textColor="@color/black87" android:textColorHint="@color/black54" - android:textSize="?attr/TextSizeBody" - android:id="@+id/port"/> + android:textSize="?attr/TextSizeBody"/> </LinearLayout> </LinearLayout> <CheckBox - android:id="@+id/account_register_new" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginTop="8dp" - android:text="@string/register_account" - android:textColor="@color/black87" - android:textSize="?attr/TextSizeBody" /> + android:id="@+id/account_register_new" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginTop="8dp" + android:text="@string/register_account" + android:textColor="@color/black87" + android:textSize="?attr/TextSizeBody"/> + <TextView + android:id="@+id/account_confirm_password_desc" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/account_settings_confirm_password" + android:textColor="@color/black87" + android:textSize="?attr/TextSizeBody" + android:visibility="gone"/> + + <EditText + android:id="@+id/account_password_confirm" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="8dp" + android:hint="@string/confirm_password" + android:inputType="textPassword" + android:textColor="@color/black87" + android:textColorHint="@color/black54" + android:textSize="?attr/TextSizeBody" + android:visibility="gone"/> + </LinearLayout> + </RelativeLayout> + + <RelativeLayout + android:id="@+id/battery_optimization" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:layout_marginBottom="@dimen/activity_vertical_margin" + android:layout_marginLeft="@dimen/activity_horizontal_margin" + android:layout_marginRight="@dimen/activity_horizontal_margin" + android:layout_marginTop="@dimen/activity_vertical_margin" + android:background="@drawable/infocard_border" + android:orientation="vertical" + android:padding="@dimen/infocard_padding" + android:visibility="gone"> <TextView - android:id="@+id/account_confirm_password_desc" + android:id="@+id/batt_op_headline" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:text="@string/account_settings_confirm_password" + android:text="@string/battery_optimizations_enabled" android:textColor="@color/black87" - android:textSize="?attr/TextSizeBody" - android:visibility="gone" /> - - <EditText - android:id="@+id/account_password_confirm" - android:layout_width="match_parent" + android:textSize="?attr/TextSizeHeadline" + android:textStyle="bold"/> + <TextView + android:id="@+id/batt_op_body" + android:layout_width="wrap_content" android:layout_height="wrap_content" + android:layout_below="@+id/batt_op_headline" + android:layout_marginBottom="8dp" android:layout_marginTop="8dp" - android:hint="@string/confirm_password" - android:inputType="textPassword" - android:visibility="gone" + android:text="@string/battery_optimizations_enabled_explained" android:textColor="@color/black87" - android:textColorHint="@color/black54" - android:textSize="?attr/TextSizeBody" /> - </LinearLayout> + android:textSize="?attr/TextSizeBody"/> + <Button + android:id="@+id/batt_op_disable" + style="?android:attr/borderlessButtonStyle" + android:layout_marginRight="-8dp" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_alignParentBottom="true" + android:layout_alignParentEnd="true" + android:layout_alignParentRight="true" android:layout_below="@+id/batt_op_body" + android:text="@string/disable" android:textColor="@color/accent"/> </RelativeLayout> - <LinearLayout + + <LinearLayout android:id="@+id/stats" android:layout_width="fill_parent" android:layout_height="fill_parent" + android:layout_marginBottom="@dimen/activity_vertical_margin" android:layout_marginLeft="@dimen/activity_horizontal_margin" android:layout_marginRight="@dimen/activity_horizontal_margin" android:layout_marginTop="@dimen/activity_vertical_margin" - android:layout_marginBottom="@dimen/activity_vertical_margin" android:background="@drawable/infocard_border" android:orientation="vertical" android:padding="@dimen/infocard_padding" - android:visibility="gone" > + android:visibility="gone"> <TableLayout android:layout_width="match_parent" android:layout_height="wrap_content" - android:stretchColumns="1" > + android:stretchColumns="1"> <TableRow android:layout_width="fill_parent" @@ -190,7 +233,7 @@ android:layout_height="wrap_content" android:text="@string/server_info_session_established" android:textColor="@color/black87" - android:textSize="?attr/TextSizeBody" /> + android:textSize="?attr/TextSizeBody"/> <TextView android:id="@+id/session_est" @@ -208,18 +251,18 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:stretchColumns="1" - android:visibility="gone" > + android:visibility="gone"> <TableRow android:layout_width="fill_parent" - android:layout_height="wrap_content" > + android:layout_height="wrap_content"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/server_info_pep" android:textColor="@color/black87" - android:textSize="?attr/TextSizeBody" /> + android:textSize="?attr/TextSizeBody"/> <TextView android:id="@+id/server_info_pep" @@ -233,14 +276,14 @@ <TableRow android:layout_width="fill_parent" - android:layout_height="wrap_content" > + android:layout_height="wrap_content"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/server_info_blocking" android:textColor="@color/black87" - android:textSize="?attr/TextSizeBody" /> + android:textSize="?attr/TextSizeBody"/> <TextView android:id="@+id/server_info_blocking" @@ -254,14 +297,14 @@ <TableRow android:layout_width="fill_parent" - android:layout_height="wrap_content" > + android:layout_height="wrap_content"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/server_info_stream_management" android:textColor="@color/black87" - android:textSize="?attr/TextSizeBody" /> + android:textSize="?attr/TextSizeBody"/> <TextView android:id="@+id/server_info_sm" @@ -275,14 +318,14 @@ <TableRow android:layout_width="fill_parent" - android:layout_height="wrap_content" > + android:layout_height="wrap_content"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/server_info_roster_version" android:textColor="@color/black87" - android:textSize="?attr/TextSizeBody" /> + android:textSize="?attr/TextSizeBody"/> <TextView android:id="@+id/server_info_roster_version" @@ -296,14 +339,14 @@ <TableRow android:layout_width="fill_parent" - android:layout_height="wrap_content" > + android:layout_height="wrap_content"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/server_info_carbon_messages" android:textColor="@color/black87" - android:textSize="?attr/TextSizeBody" /> + android:textSize="?attr/TextSizeBody"/> <TextView android:id="@+id/server_info_carbons" @@ -317,14 +360,14 @@ <TableRow android:layout_width="fill_parent" - android:layout_height="wrap_content" > + android:layout_height="wrap_content"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/server_info_mam" android:textColor="@color/black87" - android:textSize="?attr/TextSizeBody" /> + android:textSize="?attr/TextSizeBody"/> <TextView android:id="@+id/server_info_mam" @@ -338,14 +381,14 @@ <TableRow android:layout_width="fill_parent" - android:layout_height="wrap_content" > + android:layout_height="wrap_content"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/server_info_csi" android:textColor="@color/black87" - android:textSize="?attr/TextSizeBody" /> + android:textSize="?attr/TextSizeBody"/> <TextView android:id="@+id/server_info_csi" @@ -358,14 +401,14 @@ </TableRow> <TableRow android:layout_width="fill_parent" - android:layout_height="wrap_content" > + android:layout_height="wrap_content"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/server_info_http_upload" android:textColor="@color/black87" - android:textSize="?attr/TextSizeBody" /> + android:textSize="?attr/TextSizeBody"/> <TextView android:id="@+id/server_info_http_upload" @@ -379,9 +422,9 @@ </TableLayout> <RelativeLayout + android:id="@+id/otr_fingerprint_box" android:layout_width="wrap_content" android:layout_height="match_parent" - android:id="@+id/otr_fingerprint_box" android:layout_marginTop="32dp"> <LinearLayout @@ -395,17 +438,17 @@ android:id="@+id/otr_fingerprint" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:fontFamily="monospace" android:textColor="@color/black87" android:textSize="?attr/TextSizeBody" - android:typeface="monospace" - android:fontFamily="monospace"/> + android:typeface="monospace"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" + android:text="@string/otr_fingerprint" android:textColor="@color/black54" - android:textSize="?attr/TextSizeInfo" - android:text="@string/otr_fingerprint"/> + android:textSize="?attr/TextSizeInfo"/> </LinearLayout> <ImageButton @@ -415,79 +458,79 @@ android:layout_alignParentRight="true" android:layout_centerVertical="true" android:background="?android:selectableItemBackground" + android:contentDescription="@string/copy_otr_clipboard_description" android:padding="@dimen/image_button_padding" android:src="?attr/icon_copy" - android:visibility="visible" - android:contentDescription="@string/copy_otr_clipboard_description"/> + android:visibility="visible"/> + </RelativeLayout> + <RelativeLayout + android:id="@+id/axolotl_fingerprint_box" + android:layout_width="wrap_content" + android:layout_height="match_parent" + android:layout_marginTop="32dp"> + + <LinearLayout + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_alignParentLeft="true" + android:layout_toLeftOf="@+id/axolotl_actions" + android:orientation="vertical"> + + <TextView + android:id="@+id/axolotl_fingerprint" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:fontFamily="monospace" + android:textColor="@color/black87" + android:textSize="?attr/TextSizeBody" + android:typeface="monospace"/> + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/this_device_omemo_fingerprint" + android:textColor="@color/black54" + android:textSize="?attr/TextSizeInfo"/> + </LinearLayout> + + <LinearLayout + android:id="@+id/axolotl_actions" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_alignParentRight="true" + android:layout_centerVertical="true" + android:orientation="vertical"> + + <ImageButton + android:id="@+id/action_copy_axolotl_to_clipboard" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:background="?android:selectableItemBackground" + android:contentDescription="@string/copy_omemo_clipboard_description" + android:padding="@dimen/image_button_padding" + android:src="?attr/icon_copy" + android:visibility="visible"/> + <ImageButton + android:id="@+id/action_regenerate_axolotl_key" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:background="?android:selectableItemBackground" + android:contentDescription="@string/regenerate_omemo_key" + android:padding="@dimen/image_button_padding" + android:src="?attr/icon_refresh" + android:visibility="gone"/> + + </LinearLayout> </RelativeLayout> - <RelativeLayout - android:layout_width="wrap_content" - android:layout_height="match_parent" - android:id="@+id/axolotl_fingerprint_box" - android:layout_marginTop="32dp"> - - <LinearLayout - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_alignParentLeft="true" - android:layout_toLeftOf="@+id/axolotl_actions" - android:orientation="vertical"> - - <TextView - android:id="@+id/axolotl_fingerprint" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:textColor="@color/black87" - android:textSize="?attr/TextSizeBody" - android:typeface="monospace" - android:fontFamily="monospace"/> - - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:textColor="@color/black54" - android:textSize="?attr/TextSizeInfo" - android:text="@string/this_device_omemo_fingerprint"/> - </LinearLayout> - - <LinearLayout - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:id="@+id/axolotl_actions" - android:layout_centerVertical="true" - android:layout_alignParentRight="true" - android:orientation="vertical"> - - <ImageButton - android:id="@+id/action_copy_axolotl_to_clipboard" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:background="?android:selectableItemBackground" - android:padding="@dimen/image_button_padding" - android:src="?attr/icon_copy" - android:visibility="visible" - android:contentDescription="@string/copy_omemo_clipboard_description"/> - <ImageButton - android:id="@+id/action_regenerate_axolotl_key" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:background="?android:selectableItemBackground" - android:padding="@dimen/image_button_padding" - android:src="?attr/icon_refresh" - android:visibility="gone" - android:contentDescription="@string/regenerate_omemo_key"/> - - </LinearLayout> - </RelativeLayout> </LinearLayout> <LinearLayout android:id="@+id/other_device_keys_card" android:layout_width="fill_parent" android:layout_height="wrap_content" + android:layout_marginBottom="@dimen/activity_vertical_margin" android:layout_marginLeft="@dimen/activity_horizontal_margin" android:layout_marginRight="@dimen/activity_horizontal_margin" android:layout_marginTop="@dimen/activity_vertical_margin" - android:layout_marginBottom="@dimen/activity_vertical_margin" android:background="@drawable/infocard_border" android:orientation="vertical" android:padding="@dimen/infocard_padding" @@ -497,10 +540,10 @@ android:id="@+id/other_device_keys_title" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:text="@string/other_devices" android:textColor="@color/black87" android:textSize="?attr/TextSizeHeadline" - android:textStyle="bold" - android:text="@string/other_devices"/> + android:textStyle="bold"/> <LinearLayout android:id="@+id/other_device_keys" @@ -508,7 +551,7 @@ android:layout_height="wrap_content" android:divider="?android:dividerHorizontal" android:orientation="vertical" - android:showDividers="middle" > + android:showDividers="middle"> </LinearLayout> </LinearLayout> </LinearLayout> @@ -519,10 +562,10 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" - android:layout_alignParentStart="true" android:layout_alignParentEnd="true" android:layout_alignParentLeft="true" - android:layout_alignParentRight="true" > + android:layout_alignParentRight="true" + android:layout_alignParentStart="true"> <Button android:id="@+id/cancel_button" @@ -531,14 +574,14 @@ android:layout_height="wrap_content" android:layout_weight="1" android:text="@string/cancel" - android:textColor="@color/black87" /> + android:textColor="@color/black87"/> <View android:layout_width="1dp" android:layout_height="fill_parent" android:layout_marginBottom="7dp" android:layout_marginTop="7dp" - android:background="@color/black12" /> + android:background="@color/black12"/> <Button android:id="@+id/save_button" @@ -548,7 +591,7 @@ android:layout_weight="1" android:enabled="false" android:text="@string/save" - android:textColor="@color/black54" /> + android:textColor="@color/black54"/> </LinearLayout> </RelativeLayout> diff --git a/src/main/res/values-ar/strings.xml b/src/main/res/values-ar/strings.xml index 08d1dcbe..d9128abc 100644 --- a/src/main/res/values-ar/strings.xml +++ b/src/main/res/values-ar/strings.xml @@ -193,7 +193,6 @@ <string name="skip">تجاهل</string> <string name="disable_notifications">ايقاف التنبيهات</string> <string name="disable_notifications_for_this_conversation">ايقاف التنبيهات لتلك المحادثة</string> - <string name="notifications_disabled">التنبيهات غير فعاله</string> <string name="enable">تفعيل</string> <string name="conference_requires_password">الغرفة تطلب كلمة مرور</string> <string name="enter_password">أدخل كلمة المرور</string> diff --git a/src/main/res/values-bg/strings.xml b/src/main/res/values-bg/strings.xml index 9ac85726..40735189 100644 --- a/src/main/res/values-bg/strings.xml +++ b/src/main/res/values-bg/strings.xml @@ -89,6 +89,7 @@ <string name="openkeychain_required_long">Conversations използва външно приложение с име <b>OpenKeychain</b>, за да шифрова и дешифрова съобщенията и да управлява публичните Ви ключове.\n\nOpenKeychain е лицензирано под условията на GPLv3 и е налично в F-Droid и Google Play.\n\n<small>(Моля, рестартирайте Conversations след това.)</small></string> <string name="restart">Рестартиране</string> <string name="install">Инсталиране</string> + <string name="openkeychain_not_installed">Моля, инсталирайте OpenKeychain</string> <string name="offering">предлагане…</string> <string name="waiting">изчакване…</string> <string name="no_pgp_key">Не е открит OpenPGP ключ</string> @@ -108,8 +109,6 @@ <string name="pref_vibrate_summary">Също така да има и вибрация при получаване на ново съобщение</string> <string name="pref_sound">Звук</string> <string name="pref_sound_summary">Изпълнение на звук с известието</string> - <string name="pref_conference_notifications">Известия в публичните беседи</string> - <string name="pref_conference_notifications_summary">Известяване винаги, когато пристигне ново съобщение в публична беседа, а не само когато тя е отбелязана</string> <string name="pref_notification_grace_period">Продължителност на отсрочване на известията</string> <string name="pref_notification_grace_period_summary">Изключва известията за кратко, след като бъде получено копие на съобщение</string> <string name="pref_advanced_options">Разширени настройки</string> @@ -263,7 +262,6 @@ <string name="skip">Пропускане</string> <string name="disable_notifications">Изключване на известията</string> <string name="disable_notifications_for_this_conversation">Изключване на известията за този разговор</string> - <string name="notifications_disabled">Известията са изключени</string> <string name="enable">Включване</string> <string name="conference_requires_password">Беседата изисква парола</string> <string name="enter_password">Въведете парола</string> @@ -521,4 +519,9 @@ <item quantity="one">%d съобщение</item> <item quantity="other">%d съобщения</item> </plurals> + <string name="shared_file_with_x">Файлът е споделен с %s</string> + <string name="shared_image_with_x">Изображението е споделено с %s</string> + <string name="no_storage_permission">Conversations се нуждае от достъп до външно място за съхранение</string> + <string name="sync_with_contacts">Синхронизиране с контактите</string> + <string name="sync_with_contacts_long">Conversations иска да съчетае Вашия списък в XMPP с контактите Ви, за да показва пълните им имена и снимки..\n\nConversations единствено ще чете контактите Ви и ще ги използва вътрешно, без да ги качва на сървъра Ви.\n\nЩе бъдете помолен/а за позволение за достъп до контактите Ви.</string> </resources> diff --git a/src/main/res/values-ca/strings.xml b/src/main/res/values-ca/strings.xml index 363eb20b..9f5845f6 100644 --- a/src/main/res/values-ca/strings.xml +++ b/src/main/res/values-ca/strings.xml @@ -240,7 +240,6 @@ <string name="skip">Saltar</string> <string name="disable_notifications">Deshabilitar notificacions</string> <string name="disable_notifications_for_this_conversation">Deshabilitar notificacions per aquesta conversació</string> - <string name="notifications_disabled">Les notificacions estàn deshabilitades</string> <string name="enable">Habilitat</string> <string name="conference_requires_password">La sala requereix una contrasenya</string> <string name="enter_password">Introduir-ho la contrasenya</string> diff --git a/src/main/res/values-cs/strings.xml b/src/main/res/values-cs/strings.xml index 9bf1c3b7..e70d4359 100644 --- a/src/main/res/values-cs/strings.xml +++ b/src/main/res/values-cs/strings.xml @@ -89,6 +89,7 @@ <string name="openkeychain_required_long">Konverzace využívá aplikaci třetí strany, <b>OpenKeychain</b>, k šifrování a dešifrování zpráv a ke správě veřejných klíčů.\n\nOpenKeychain je licencován pod GPLv3 a dostupný na F-Droid a Google Play.\n\n<small>(Po instalaci prosím restartujte aplikaci Konverzace.)</small></string> <string name="restart">Restartovat</string> <string name="install">Instalovat</string> + <string name="openkeychain_not_installed">Nainstalujte prosím OpenKeychain</string> <string name="offering">nabízí…</string> <string name="waiting">čekám…</string> <string name="no_pgp_key">Nebyl nalezen žádný OpenPGP klíč</string> @@ -108,8 +109,6 @@ <string name="pref_vibrate_summary">Vibrovat při přijetí nové zprávy</string> <string name="pref_sound">Zvuk</string> <string name="pref_sound_summary">Přehrát zvuk společně s upozorněním</string> - <string name="pref_conference_notifications">Upozornění ve veřejných konferencích</string> - <string name="pref_conference_notifications_summary">Vždy upozornit při příchodu zprávy ve veřejných konferencích místo jen pouze pokud je zvýrazněno</string> <string name="pref_notification_grace_period">Četnost upozornění</string> <string name="pref_notification_grace_period_summary">Neupozorňovat krátce poté co byla obdržena kopie zprávy</string> <string name="pref_advanced_options">Pokročilé nastavení</string> @@ -263,7 +262,6 @@ <string name="skip">Přeskočit</string> <string name="disable_notifications">Vypnout upozornění</string> <string name="disable_notifications_for_this_conversation">Vypnout upozornění pro tuto konverzaci</string> - <string name="notifications_disabled">Upozornění jsou vypnuta</string> <string name="enable">Povolit</string> <string name="conference_requires_password">Konference vyžaduje heslo</string> <string name="enter_password">Vložit heslo</string> @@ -524,4 +522,9 @@ <item quantity="few">%d zprávy</item> <item quantity="other">%d zpráv</item> </plurals> + <string name="shared_file_with_x">Soubor sdílen s %s</string> + <string name="shared_image_with_x">Obrázek sdílen s %s</string> + <string name="no_storage_permission">Conversations vyžaduje přístup k externímu úložišti</string> + <string name="sync_with_contacts">Synchronizovat s kontakty</string> + <string name="sync_with_contacts_long">Aplikace Conversations by ráda porovnala váš XMPP seznam s vašimi kontakty, aby mohla zobrazit plná jména a avatary.\n\nConversations načte a porovná kontakty pouze lokálně, bez jejich nahrávání na server.\n\nNyní budete dotázáni na udělení práv pro přístup k seznamu kontaktů.</string> </resources> diff --git a/src/main/res/values-de/strings.xml b/src/main/res/values-de/strings.xml index ce1071b1..06454cc5 100644 --- a/src/main/res/values-de/strings.xml +++ b/src/main/res/values-de/strings.xml @@ -109,8 +109,6 @@ <string name="pref_vibrate_summary">Vibrieren bei Erhalt einer neuen Nachricht</string> <string name="pref_sound">Benachrichtigungston</string> <string name="pref_sound_summary">Benachrichtigungston wiedergeben</string> - <string name="pref_conference_notifications">Benachrichtigungen in öffentlichen Konferenzen</string> - <string name="pref_conference_notifications_summary">Bei jeder Nachricht in öffentlichen Konferenzen benachrichtigen und nicht nur, wenn ich angesprochen werde</string> <string name="pref_notification_grace_period">Gnadenfrist</string> <string name="pref_notification_grace_period_summary">Deaktiviere Benachrichtigungen für eine kurze Zeit nach Erhalt einer Nachricht, die von einem anderen deiner Clients kommt.</string> <string name="pref_advanced_options">Erweiterte Optionen</string> @@ -245,7 +243,7 @@ <string name="add_back">Auch hinzufügen</string> <string name="contact_has_read_up_to_this_point">%s hat bis zu diesem Punkt gelesen</string> <string name="publish">Veröffentlichen</string> - <string name="touch_to_choose_picture">Avatar anklicken, um ein Bild aus der Galerie auszuwählen</string> + <string name="touch_to_choose_picture">Avatar antippen, um Bild aus Galerie auszuwählen</string> <string name="publish_avatar_explanation">Achtung: Jeder, der deinen Status sehen darf, sieht auch deinen Avatar.</string> <string name="publishing">Veröffentliche…</string> <string name="error_publish_avatar_server_reject">Der Server hat die Veröffentlichung des Avatars abgelehnt.</string> @@ -264,7 +262,6 @@ <string name="skip">Überspringen</string> <string name="disable_notifications">Benachrichtigungen deaktivieren</string> <string name="disable_notifications_for_this_conversation">Benachrichtigungen für diese Unterhaltung deaktivieren</string> - <string name="notifications_disabled">Benachrichtigungen sind deaktiviert</string> <string name="enable">Aktivieren</string> <string name="conference_requires_password">Konferenz ist passwortgeschützt</string> <string name="enter_password">Passwort eingeben</string> @@ -510,7 +507,7 @@ <string name="verified_omemo_key_with_certificate">OMEMO Schlüssel mit Zertifikat bestätigt!</string> <string name="device_does_not_support_certificates">Dein Gerät unterstützt das Auswählen von Client-Zertifikaten nicht!</string> <string name="pref_connection_options">Verbindungs-Optionen</string> - <string name="pref_use_tor">Mit TOR verbinden</string> + <string name="pref_use_tor">Über TOR verbinden</string> <string name="pref_use_tor_summary">Alle Verbindungen über das TOR-Netzwerk tunneln. Benötigt Orbot</string> <string name="account_settings_hostname">Hostname</string> <string name="account_settings_port">Port</string> diff --git a/src/main/res/values-el/strings.xml b/src/main/res/values-el/strings.xml index cd8f9e44..54daf96c 100644 --- a/src/main/res/values-el/strings.xml +++ b/src/main/res/values-el/strings.xml @@ -240,7 +240,6 @@ <string name="skip">Παράλειψη</string> <string name="disable_notifications">Απενεργοποίηση ειδοποιήσεων</string> <string name="disable_notifications_for_this_conversation">Απενεργοποίηση ειδοποιήσεων για αυτή την συζήτηση</string> - <string name="notifications_disabled">Οι ειδοποιήσεις είναι απενεργοποιημένες</string> <string name="enable">Ενεργοποίηση</string> <string name="conference_requires_password">Η συζήτηση απαιτεί συνθηματικό</string> <string name="enter_password">Εισαγωγή συνθηματικού</string> diff --git a/src/main/res/values-es/strings.xml b/src/main/res/values-es/strings.xml index 59842939..ef83b460 100644 --- a/src/main/res/values-es/strings.xml +++ b/src/main/res/values-es/strings.xml @@ -109,8 +109,6 @@ <string name="pref_vibrate_summary">Vibra cuando llega un nuevo mensaje</string> <string name="pref_sound">Sonido</string> <string name="pref_sound_summary">Reproduce tono con la notificación</string> - <string name="pref_conference_notifications">Notif. conversación grupo pública</string> - <string name="pref_conference_notifications_summary">Siempre notifica cuando llega un mensaje a una conversación en grupo pública y no solo cuando alguien menciona tu nombre en un mensaje</string> <string name="pref_notification_grace_period">Notificaciones Carbons</string> <string name="pref_notification_grace_period_summary">Deshabilita las notificaciones durante un corto periodo de tiempo después de recibir la copia del mensaje carbon</string> <string name="pref_advanced_options">Opciones avanzadas</string> @@ -264,7 +262,6 @@ <string name="skip">Omitir</string> <string name="disable_notifications">Deshabilitar notificaciones</string> <string name="disable_notifications_for_this_conversation">Deshabilitar notificaciones para esta conversación</string> - <string name="notifications_disabled">Las notificaciones están deshabilitadas</string> <string name="enable">Habilitar</string> <string name="conference_requires_password">Esta conversación requiere contraseña</string> <string name="enter_password">Introduce la contraseña</string> diff --git a/src/main/res/values-eu/strings.xml b/src/main/res/values-eu/strings.xml index 0ef0a728..28d05858 100644 --- a/src/main/res/values-eu/strings.xml +++ b/src/main/res/values-eu/strings.xml @@ -109,8 +109,6 @@ <string name="pref_vibrate_summary">Dardaratu ere mezu berri bat heltzerakoan</string> <string name="pref_sound">Soinua</string> <string name="pref_sound_summary">Dei-tonua jo jakinarazpenarekin</string> - <string name="pref_conference_notifications">Konferentzia publikoen jakinarazpenak</string> - <string name="pref_conference_notifications_summary">Beti jakinarazi konferentzia publiko batean mezu berri bat heltzerakoan eta ez soilik nabarmentzerakoan</string> <string name="pref_notification_grace_period">Jakinarazpenen grazia epea</string> <string name="pref_notification_grace_period_summary">Jakinarazpenak denbora labur baterako ezgaitu ikatz-kopia bat jaso ondoren</string> <string name="pref_advanced_options">Aukera aurreratuak</string> @@ -264,7 +262,6 @@ <string name="skip">Orain ez</string> <string name="disable_notifications">Jakinarazpenak ezgaitu</string> <string name="disable_notifications_for_this_conversation">Elkarrizketa honetarako jakinarazpenak ezgaitu</string> - <string name="notifications_disabled">Jakinarazpenak ezgaituta daude</string> <string name="enable">Gaitu</string> <string name="conference_requires_password">Konferentziak pasahitza behar du</string> <string name="enter_password">Sartu pasahitza</string> diff --git a/src/main/res/values-fr/strings.xml b/src/main/res/values-fr/strings.xml index a0088580..ffd48c47 100644 --- a/src/main/res/values-fr/strings.xml +++ b/src/main/res/values-fr/strings.xml @@ -109,8 +109,6 @@ <string name="pref_vibrate_summary">Vibrer lors de l\'arrivée d\'un message.</string> <string name="pref_sound">Sonore</string> <string name="pref_sound_summary">Jouer une sonnerie pour notifier.</string> - <string name="pref_conference_notifications">Notifications et conf. publiques</string> - <string name="pref_conference_notifications_summary">Toujours notifier de l\'arrivée d\'un message dans une conférence publique, même si votre nom n\'y apparaît pas.</string> <string name="pref_notification_grace_period">Période sans notification</string> <string name="pref_notification_grace_period_summary">Désactiver momentanément les notifications après l\'arrivée d\'une copie carbone.</string> <string name="pref_advanced_options">Options avancées</string> @@ -264,7 +262,6 @@ <string name="skip">Passer</string> <string name="disable_notifications">Désactiver les notifications</string> <string name="disable_notifications_for_this_conversation">Désactiver les notifications pour cette conversation</string> - <string name="notifications_disabled">Notifications désactivées</string> <string name="enable">Activer</string> <string name="conference_requires_password">La conférence nécessite un mot de passe</string> <string name="enter_password">Entrer le mot de passe</string> diff --git a/src/main/res/values-id/strings.xml b/src/main/res/values-id/strings.xml index 47918d3c..419816c8 100644 --- a/src/main/res/values-id/strings.xml +++ b/src/main/res/values-id/strings.xml @@ -242,7 +242,6 @@ <string name="skip">Lewati</string> <string name="disable_notifications">Nonaktifkan notifikasi</string> <string name="disable_notifications_for_this_conversation">Nonaktifkan notifikasi untuk percakapan ini</string> - <string name="notifications_disabled">Notifikasi telah dimatikan</string> <string name="enable">Aktifkan</string> <string name="conference_requires_password">Conference membutuhkan password</string> <string name="enter_password">Masukan password</string> diff --git a/src/main/res/values-it/strings.xml b/src/main/res/values-it/strings.xml index 0cd04691..3916b532 100644 --- a/src/main/res/values-it/strings.xml +++ b/src/main/res/values-it/strings.xml @@ -107,8 +107,6 @@ <string name="pref_vibrate_summary">Vibra anche quando arriva un nuovo messaggio</string> <string name="pref_sound">Suono</string> <string name="pref_sound_summary">Riproduci una suoneria con la notifica</string> - <string name="pref_conference_notifications">Notifiche in Conferenze Pubbliche</string> - <string name="pref_conference_notifications_summary">Notifica sempre quando arriva un messaggio in una conferenza pubblica anziché solo quando è evidenziata</string> <string name="pref_notification_grace_period">Periodo tra notifiche</string> <string name="pref_notification_grace_period_summary">Disabilita le notifiche per un breve lasso di tempo dopo che un messaggio è stato ricevuto</string> <string name="pref_advanced_options">Opzioni Avanzate</string> @@ -261,7 +259,6 @@ <string name="skip">Salta</string> <string name="disable_notifications">Disabilita le notifiche</string> <string name="disable_notifications_for_this_conversation">Disabilita le notifiche per questa conversazione</string> - <string name="notifications_disabled">Le notifiche sono disabilitate</string> <string name="enable">Abilita</string> <string name="conference_requires_password">La conferenza richiede una password</string> <string name="enter_password">Inserisci la password</string> diff --git a/src/main/res/values-iw/strings.xml b/src/main/res/values-iw/strings.xml index 83741ae3..39dd55b7 100644 --- a/src/main/res/values-iw/strings.xml +++ b/src/main/res/values-iw/strings.xml @@ -108,8 +108,6 @@ <string name="pref_vibrate_summary">הרטט גם כאשר הודעה חדשה מגיעה</string> <string name="pref_sound">צליל</string> <string name="pref_sound_summary">נגן צלצול עם כל התראה</string> - <string name="pref_conference_notifications">התראות בועידות ציבוריות</string> - <string name="pref_conference_notifications_summary">תמיד </string> <string name="pref_notification_grace_period">משך תקופת ארכה</string> <string name="pref_notification_grace_period_summary">נטרל התראות לזמן קצר לאחר שהודעת Carbon Copy מתקבלת</string> <string name="pref_advanced_options">אפשרויות מתקדמות</string> @@ -259,7 +257,6 @@ <string name="skip">דלג</string> <string name="disable_notifications">השבת התראות</string> <string name="disable_notifications_for_this_conversation">השבת התראות עבור השיחה הנוכחית</string> - <string name="notifications_disabled">ההתראות מושבתות</string> <string name="enable">הפעל</string> <string name="conference_requires_password">ועידה זאת דורשת סיסמא</string> <string name="enter_password">הכנס סיסמא</string> diff --git a/src/main/res/values-ja/strings.xml b/src/main/res/values-ja/strings.xml index 307d21d3..f1c2e792 100644 --- a/src/main/res/values-ja/strings.xml +++ b/src/main/res/values-ja/strings.xml @@ -109,8 +109,6 @@ <string name="pref_vibrate_summary">新しいメッセージが到着したときに振動もします</string> <string name="pref_sound">サウンド</string> <string name="pref_sound_summary">通知で着信音を再生します</string> - <string name="pref_conference_notifications">公開会議で通知</string> - <string name="pref_conference_notifications_summary">強調表示されたときだけではなく、公開会議にメッセージが到着したときにいつも通知します</string> <string name="pref_notification_grace_period">通知猶予期間</string> <string name="pref_notification_grace_period_summary">カーボンコピーを受信した後、短時間、通知を無効にします</string> <string name="pref_advanced_options">詳細オプション</string> @@ -264,7 +262,6 @@ <string name="skip">スキップ</string> <string name="disable_notifications">通知を無効にする</string> <string name="disable_notifications_for_this_conversation">この会話の通知を無効にします</string> - <string name="notifications_disabled">通知を無効にしました</string> <string name="enable">有効</string> <string name="conference_requires_password">会議はパスワードが必要です</string> <string name="enter_password">パスワードを入力してください</string> diff --git a/src/main/res/values-ko/strings.xml b/src/main/res/values-ko/strings.xml index d8c28b70..bcc7a800 100644 --- a/src/main/res/values-ko/strings.xml +++ b/src/main/res/values-ko/strings.xml @@ -240,7 +240,6 @@ <string name="skip">건너뛰기 </string> <string name="disable_notifications">알림 해제 </string> <string name="disable_notifications_for_this_conversation">이 대화의 알림 해제 </string> - <string name="notifications_disabled">알림이 해제되었습니다 </string> <string name="enable">사용 </string> <string name="conference_requires_password">회의에 암호가 필요합니다 </string> <string name="enter_password">암호 입력 </string> diff --git a/src/main/res/values-nb-rNO/strings.xml b/src/main/res/values-nb-rNO/strings.xml index 45a9315e..e30a767b 100644 --- a/src/main/res/values-nb-rNO/strings.xml +++ b/src/main/res/values-nb-rNO/strings.xml @@ -109,8 +109,6 @@ <string name="pref_vibrate_summary">Vibrer også når ny melding ankommer</string> <string name="pref_sound">Lyd</string> <string name="pref_sound_summary">Spill av ringetone med merknad</string> - <string name="pref_conference_notifications">Varslinger i offentlige konferanser</string> - <string name="pref_conference_notifications_summary">Alltid varsle om nye meldinger i konferanser, i steden for bare når navnet ditt er markert</string> <string name="pref_notification_grace_period">Notifiseringsfrist</string> <string name="pref_notification_grace_period_summary">Skru av varslinger en liten stund etter mottak av karbon-kopi</string> <string name="pref_advanced_options">Avanserte valg</string> @@ -264,7 +262,6 @@ <string name="skip">Hopp over</string> <string name="disable_notifications">Skru av varslinger</string> <string name="disable_notifications_for_this_conversation">Skru av varslinger for denne samtalen</string> - <string name="notifications_disabled">Varslinger avskrudd</string> <string name="enable">Skru på</string> <string name="conference_requires_password">Konferansen krever passord</string> <string name="enter_password">Skriv inn passord</string> diff --git a/src/main/res/values-nl/strings.xml b/src/main/res/values-nl/strings.xml index c5647159..58a3c556 100644 --- a/src/main/res/values-nl/strings.xml +++ b/src/main/res/values-nl/strings.xml @@ -103,8 +103,6 @@ <string name="pref_vibrate_summary">Tril ook wanneer een nieuw bericht arriveert</string> <string name="pref_sound">Geluid</string> <string name="pref_sound_summary">Speel beltoon af bij melding</string> - <string name="pref_conference_notifications">Meldingen bij groepsgespreken</string> - <string name="pref_conference_notifications_summary">Laat altijd een melding zien wanneer er berichten zijn ontvangen in groepsgesprekken in plaats van alleen bij het noemen van je naam</string> <string name="pref_notification_grace_period">Uitstelperiode voor meldingen</string> <string name="pref_notification_grace_period_summary">Schakel meldingen voor korte tijd uit als er een carbon copy wordt ontvangen</string> <string name="pref_advanced_options">Geavanceerde instellingen</string> @@ -254,7 +252,6 @@ <string name="skip">Overslaan</string> <string name="disable_notifications">Meldingen uitschakelen</string> <string name="disable_notifications_for_this_conversation">Meldingen uitschakelen voor dit gesprek</string> - <string name="notifications_disabled">Meldingen zijn uitgeschakeld</string> <string name="enable">Inschakelen</string> <string name="conference_requires_password">Wachtwoord nodig voor toegang tot groepsgesprek</string> <string name="enter_password">Wachtwoord invoeren</string> diff --git a/src/main/res/values-pl/strings.xml b/src/main/res/values-pl/strings.xml index 6fc57f30..ad808458 100644 --- a/src/main/res/values-pl/strings.xml +++ b/src/main/res/values-pl/strings.xml @@ -103,8 +103,6 @@ <string name="pref_vibrate_summary">Wibruj, gdy nadejdzie wiadomość</string> <string name="pref_sound">Dźwięk</string> <string name="pref_sound_summary">Odtwórz dźwięk z powiadomieniem</string> - <string name="pref_conference_notifications">Powiadomienia konfrencji</string> - <string name="pref_conference_notifications_summary">Zawsze powiadamiaj przy odebraniu wiadomości w publicznej konferencji, a nie tylko przy wywołaniu nicka.</string> <string name="pref_notification_grace_period">Opóźnienie powiadomień</string> <string name="pref_notification_grace_period_summary">Wyłącz powiadomienia przez krótki czas po otrzymaniu kopii wiadomości</string> <string name="pref_advanced_options">Opcje zaawansowane</string> @@ -254,7 +252,6 @@ <string name="skip">Pomiń</string> <string name="disable_notifications">Wyłącz powiadomienia</string> <string name="disable_notifications_for_this_conversation">Wyłącz powiadomienia tej konwersacji</string> - <string name="notifications_disabled">Powiadomienia są wyłączone</string> <string name="enable">Włącz</string> <string name="conference_requires_password">Konferencja jest zabezpieczona hasłem</string> <string name="enter_password">Wprowadź hasło</string> diff --git a/src/main/res/values-pt/strings.xml b/src/main/res/values-pt/strings.xml index 917958f1..e32dadea 100644 --- a/src/main/res/values-pt/strings.xml +++ b/src/main/res/values-pt/strings.xml @@ -224,7 +224,6 @@ <string name="skip">Pular</string> <string name="disable_notifications">Desativar notificações</string> <string name="disable_notifications_for_this_conversation">Desativar notificações para essa conversa</string> - <string name="notifications_disabled">As notificações foram desativadas</string> <string name="enable">Ativar</string> <string name="conference_requires_password">Essa conferencia requer uma senha</string> <string name="enter_password">Informar a senha</string> diff --git a/src/main/res/values-ro-rRO/strings.xml b/src/main/res/values-ro-rRO/strings.xml index bb0dea98..a865ac44 100644 --- a/src/main/res/values-ro-rRO/strings.xml +++ b/src/main/res/values-ro-rRO/strings.xml @@ -109,8 +109,6 @@ <string name="pref_vibrate_summary">Vibreaza cand un nou mesaj este primit</string> <string name="pref_sound">Sunet</string> <string name="pref_sound_summary">Ton de apel pentru notificare</string> - <string name="pref_conference_notifications">Notificari in Conferintele Publice</string> - <string name="pref_conference_notifications_summary">Notifica mereu la mesajele scrise in conferintele publice nu doar la cele evidentiate</string> <string name="pref_notification_grace_period">Perioada de gratie notificari </string> <string name="pref_notification_grace_period_summary">Opreste notificari pentru o scurta perioada dupa ce o copie a mesajului a fost primita</string> <string name="pref_advanced_options">Optiuni avansate</string> @@ -264,7 +262,6 @@ <string name="skip">Sari</string> <string name="disable_notifications">Dezactiveaza notificari</string> <string name="disable_notifications_for_this_conversation">Dezactiveaza notificarile pentru aceasta conversatie</string> - <string name="notifications_disabled">Notificari dezactivate</string> <string name="enable">Activeaza</string> <string name="conference_requires_password">Conferinta necesita parola</string> <string name="enter_password">Introdu parola</string> diff --git a/src/main/res/values-ru/strings.xml b/src/main/res/values-ru/strings.xml index 0cd25392..f0a670fc 100644 --- a/src/main/res/values-ru/strings.xml +++ b/src/main/res/values-ru/strings.xml @@ -109,8 +109,6 @@ <string name="pref_vibrate_summary">Использовать вибрацию когда приходят новые сообщения</string> <string name="pref_sound">Звуковой сигнал</string> <string name="pref_sound_summary">Выберите звуковой сигнал для сообщений</string> - <string name="pref_conference_notifications">Уведомления в публичных конференциях</string> - <string name="pref_conference_notifications_summary">Всегда уведомлять, когда сообщение появляется в публичной конференции вместо простого подсвечивания</string> <string name="pref_notification_grace_period">Отсрочка уведомлений</string> <string name="pref_notification_grace_period_summary">Не использовать уведомления, если вы прочитали сообщение на другом устройстве</string> <string name="pref_advanced_options">Дополнительные параметры</string> @@ -264,7 +262,6 @@ <string name="skip">Пропустить</string> <string name="disable_notifications">Отключить уведомления</string> <string name="disable_notifications_for_this_conversation">Отключить уведомления для текущей беседы</string> - <string name="notifications_disabled">Уведомления отключены</string> <string name="enable">Включить</string> <string name="conference_requires_password">Конференция требует авторизации</string> <string name="enter_password">Введите пароль</string> diff --git a/src/main/res/values-sk/strings.xml b/src/main/res/values-sk/strings.xml index c544d3b4..25a9945e 100644 --- a/src/main/res/values-sk/strings.xml +++ b/src/main/res/values-sk/strings.xml @@ -104,8 +104,6 @@ <string name="pref_vibrate_summary">Vibrovať pri prijatí novej správy</string> <string name="pref_sound">Zvuk</string> <string name="pref_sound_summary">Prehrať zvuk spolu s upozornením</string> - <string name="pref_conference_notifications">Upozornenia vo verejných konverzáciách</string> - <string name="pref_conference_notifications_summary">Vždy upozorniť na prichádzajúcu správu vo verejnej konverzácii, nie len keď je zvýraznená</string> <string name="pref_notification_grace_period">Doba na prečítanie upozornenia</string> <string name="pref_notification_grace_period_summary">Neupozorňovať krátko po obdržaní kópie správy</string> <string name="pref_advanced_options">Rozšírené možnosti</string> @@ -255,7 +253,6 @@ <string name="skip">Preskočiť</string> <string name="disable_notifications">Vypnúť upozornenia</string> <string name="disable_notifications_for_this_conversation">Vypnúť upozornenia pre túto konverzáciu</string> - <string name="notifications_disabled">Upozornenia sú vypnuté</string> <string name="enable">Povoliť</string> <string name="conference_requires_password">Skupinová konverzácia vyžaduje heslo</string> <string name="enter_password">Vložiť heslo</string> diff --git a/src/main/res/values-sr/strings.xml b/src/main/res/values-sr/strings.xml index 3b64ea79..a19a6b90 100644 --- a/src/main/res/values-sr/strings.xml +++ b/src/main/res/values-sr/strings.xml @@ -109,8 +109,6 @@ <string name="pref_vibrate_summary">Вибрирај кад стигне нова порука</string> <string name="pref_sound">Звук</string> <string name="pref_sound_summary">Звуци обавештења</string> - <string name="pref_conference_notifications">Обавештења у групним ћаскањима</string> - <string name="pref_conference_notifications_summary">Увек обавештавај кад стигне порука у групном ћаскању уместо само кад је означена</string> <string name="pref_notification_grace_period">Период одгоде обавештења</string> <string name="pref_notification_grace_period_summary">Искључи обавештења на кратко по примању карбон копије</string> <string name="pref_advanced_options">Напредне поставке</string> @@ -264,7 +262,6 @@ <string name="skip">Прескочи</string> <string name="disable_notifications">Искључи обавештења</string> <string name="disable_notifications_for_this_conversation">Искључи обавештења за ову преписку</string> - <string name="notifications_disabled">Обавештења су искључена</string> <string name="enable">Укључи</string> <string name="conference_requires_password">Групно ћаскање захтева лозинку</string> <string name="enter_password">Унесите лозинку</string> diff --git a/src/main/res/values-sv/strings.xml b/src/main/res/values-sv/strings.xml index 13510248..cf0ce8e6 100644 --- a/src/main/res/values-sv/strings.xml +++ b/src/main/res/values-sv/strings.xml @@ -109,8 +109,6 @@ <string name="pref_vibrate_summary">Vibrera när meddelande tagits emot</string> <string name="pref_sound">Ljud</string> <string name="pref_sound_summary">Spela ljud med notifiering</string> - <string name="pref_conference_notifications">Notifieringar i publika konferenser</string> - <string name="pref_conference_notifications_summary">Notifiera alltid för meddelande i en publik konferens istället för endast vid highlight</string> <string name="pref_notification_grace_period">Notifieringsfrist</string> <string name="pref_notification_grace_period_summary">Inaktivera notifieringar en kort stund efter att en carbon copy tagits emot</string> <string name="pref_advanced_options">Avancerade inställningar</string> @@ -264,7 +262,6 @@ <string name="skip">Hoppa över</string> <string name="disable_notifications">Inaktivera notifieringar</string> <string name="disable_notifications_for_this_conversation">Inaktivera notifieringar för denna konversation</string> - <string name="notifications_disabled">Notifieringar är inaktiverade</string> <string name="enable">Aktivera</string> <string name="conference_requires_password">Konferensen kräver lösenord</string> <string name="enter_password">Fyll i lösenord</string> diff --git a/src/main/res/values-zh-rCN/strings.xml b/src/main/res/values-zh-rCN/strings.xml index 87a6e5d9..316e6cda 100644 --- a/src/main/res/values-zh-rCN/strings.xml +++ b/src/main/res/values-zh-rCN/strings.xml @@ -109,8 +109,6 @@ <string name="pref_vibrate_summary">收到新消息时震动</string> <string name="pref_sound">声音</string> <string name="pref_sound_summary">收到新消息时的铃声</string> - <string name="pref_conference_notifications">公共讨论组内通知</string> - <string name="pref_conference_notifications_summary">收到公共讨论组消息时总是通知,而不是仅在高亮时通知</string> <string name="pref_notification_grace_period">通知限期</string> <string name="pref_notification_grace_period_summary">接收副本短时间内关闭通知</string> <string name="pref_advanced_options">高级选项</string> @@ -264,7 +262,6 @@ <string name="skip">忽略</string> <string name="disable_notifications">关闭通知</string> <string name="disable_notifications_for_this_conversation">关闭该会话消息</string> - <string name="notifications_disabled">通知已关闭</string> <string name="enable">打开通知</string> <string name="conference_requires_password">讨论组设有密码</string> <string name="enter_password">输入密码</string> diff --git a/src/main/res/values-zh-rTW/strings.xml b/src/main/res/values-zh-rTW/strings.xml index 19252c90..619e5a6c 100644 --- a/src/main/res/values-zh-rTW/strings.xml +++ b/src/main/res/values-zh-rTW/strings.xml @@ -215,7 +215,6 @@ <string name="skip">略過</string> <string name="disable_notifications">關閉通知</string> <string name="disable_notifications_for_this_conversation">關閉該對話消息</string> - <string name="notifications_disabled">通知已關閉</string> <string name="enable">打開通知</string> <string name="conference_requires_password">群組設有密碼</string> <string name="enter_password">輸入密碼</string> diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index deffa64e..2185d099 100644 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -575,4 +575,8 @@ <string name="pref_picture_compression_summary">Resize and compressed pictures</string> <string name="always">Always</string> <string name="automatically">Automatically</string> + <string name="battery_optimizations_enabled">Battery optimizations enabled</string> + <string name="battery_optimizations_enabled_explained">Your phone is doing some heavy battery optimizations on Conversations that might lead to delayed notifications or even message loss. It is recommended to disable those.</string> + <string name="battery_optimizations_enabled_dialog">Your phone is doing some heavy battery optimizations on Conversations that might lead to delayed notifications or even message loss.\n\nYou will now be asked to disable those.</string> + <string name="disable">Disable</string> </resources> |