aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/AndroidManifest.xml1
-rw-r--r--src/main/java/eu/siacs/conversations/ui/ConversationActivity.java123
-rw-r--r--src/main/java/eu/siacs/conversations/ui/EditAccountActivity.java27
-rw-r--r--src/main/java/eu/siacs/conversations/ui/XmppActivity.java11
-rw-r--r--src/main/java/eu/siacs/conversations/utils/ExceptionHelper.java56
-rw-r--r--src/main/res/layout/activity_edit_account.xml381
-rw-r--r--src/main/res/values-ar/strings.xml1
-rw-r--r--src/main/res/values-bg/strings.xml9
-rw-r--r--src/main/res/values-ca/strings.xml1
-rw-r--r--src/main/res/values-cs/strings.xml9
-rw-r--r--src/main/res/values-de/strings.xml7
-rw-r--r--src/main/res/values-el/strings.xml1
-rw-r--r--src/main/res/values-es/strings.xml3
-rw-r--r--src/main/res/values-eu/strings.xml3
-rw-r--r--src/main/res/values-fr/strings.xml3
-rw-r--r--src/main/res/values-id/strings.xml1
-rw-r--r--src/main/res/values-it/strings.xml3
-rw-r--r--src/main/res/values-iw/strings.xml3
-rw-r--r--src/main/res/values-ja/strings.xml3
-rw-r--r--src/main/res/values-ko/strings.xml1
-rw-r--r--src/main/res/values-nb-rNO/strings.xml3
-rw-r--r--src/main/res/values-nl/strings.xml3
-rw-r--r--src/main/res/values-pl/strings.xml3
-rw-r--r--src/main/res/values-pt/strings.xml1
-rw-r--r--src/main/res/values-ro-rRO/strings.xml3
-rw-r--r--src/main/res/values-ru/strings.xml3
-rw-r--r--src/main/res/values-sk/strings.xml3
-rw-r--r--src/main/res/values-sr/strings.xml3
-rw-r--r--src/main/res/values-sv/strings.xml3
-rw-r--r--src/main/res/values-zh-rCN/strings.xml3
-rw-r--r--src/main/res/values-zh-rTW/strings.xml1
-rw-r--r--src/main/res/values/strings.xml4
32 files changed, 375 insertions, 305 deletions
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>