aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/java/eu/siacs/conversations/Config.java3
-rw-r--r--src/main/java/eu/siacs/conversations/entities/Bookmark.java5
-rw-r--r--src/main/java/eu/siacs/conversations/entities/Message.java2
-rw-r--r--src/main/java/eu/siacs/conversations/entities/MucOptions.java10
-rw-r--r--src/main/java/eu/siacs/conversations/parser/PresenceParser.java2
-rw-r--r--src/main/java/eu/siacs/conversations/services/AvatarService.java13
-rw-r--r--src/main/java/eu/siacs/conversations/services/XmppConnectionService.java59
-rw-r--r--src/main/java/eu/siacs/conversations/ui/ChooseContactActivity.java23
-rw-r--r--src/main/java/eu/siacs/conversations/ui/ConferenceDetailsActivity.java13
-rw-r--r--src/main/java/eu/siacs/conversations/ui/ConversationActivity.java2
-rw-r--r--src/main/java/eu/siacs/conversations/ui/StartConversationActivity.java118
-rw-r--r--src/main/java/eu/siacs/conversations/ui/XmppActivity.java23
-rw-r--r--src/main/java/eu/siacs/conversations/utils/CryptoHelper.java11
-rw-r--r--src/main/java/eu/siacs/conversations/utils/ExceptionHelper.java26
-rw-r--r--src/main/res/layout/create_conference_dialog.xml42
-rw-r--r--src/main/res/menu/start_conversation.xml14
-rw-r--r--src/main/res/values-ar/strings.xml1
-rw-r--r--src/main/res/values-bg/strings.xml6
-rw-r--r--src/main/res/values-ca/strings.xml1
-rw-r--r--src/main/res/values-cs/strings.xml1
-rw-r--r--src/main/res/values-de/strings.xml11
-rw-r--r--src/main/res/values-el/strings.xml1
-rw-r--r--src/main/res/values-es/strings.xml1
-rw-r--r--src/main/res/values-eu/strings.xml1
-rw-r--r--src/main/res/values-fr/strings.xml39
-rw-r--r--src/main/res/values-id/strings.xml1
-rw-r--r--src/main/res/values-it/strings.xml1
-rw-r--r--src/main/res/values-iw/strings.xml1
-rw-r--r--src/main/res/values-ja/strings.xml1
-rw-r--r--src/main/res/values-ko/strings.xml1
-rw-r--r--src/main/res/values-nb-rNO/strings.xml1
-rw-r--r--src/main/res/values-nl/strings.xml4
-rw-r--r--src/main/res/values-pl/strings.xml47
-rw-r--r--src/main/res/values-pt-rBR/strings.xml1
-rw-r--r--src/main/res/values-pt/strings.xml1
-rw-r--r--src/main/res/values-ro-rRO/strings.xml4
-rw-r--r--src/main/res/values-ru/strings.xml1
-rw-r--r--src/main/res/values-sk/strings.xml1
-rw-r--r--src/main/res/values-sr/strings.xml1
-rw-r--r--src/main/res/values-sv/strings.xml4
-rw-r--r--src/main/res/values-tr-rTR/strings.xml1
-rw-r--r--src/main/res/values-vi/strings.xml1
-rw-r--r--src/main/res/values-zh-rCN/strings.xml1
-rw-r--r--src/main/res/values/strings.xml8
44 files changed, 410 insertions, 99 deletions
diff --git a/src/main/java/eu/siacs/conversations/Config.java b/src/main/java/eu/siacs/conversations/Config.java
index 476e2ead..c73da59e 100644
--- a/src/main/java/eu/siacs/conversations/Config.java
+++ b/src/main/java/eu/siacs/conversations/Config.java
@@ -36,6 +36,8 @@ public final class Config {
public static final String LOGTAG = "conversations";
+ public static final String BUG_REPORTS = "bugs@conversations.im";
+
public static final String DOMAIN_LOCK = null; //only allow account creation for this domain
public static final String MAGIC_CREATE_DOMAIN = "conversations.im";
@@ -48,6 +50,7 @@ public final class Config {
public static final boolean SHOW_DISABLE_FOREGROUND = true; //if set to true the foreground notification has a button to disable it
public static final int PING_MAX_INTERVAL = 300;
+ public static final int IDLE_PING_INTERVAL = 600; //540 is minimum according to docs;
public static final int PING_MIN_INTERVAL = 30;
public static final int PING_TIMEOUT = 15;
public static final int SOCKET_TIMEOUT = 15;
diff --git a/src/main/java/eu/siacs/conversations/entities/Bookmark.java b/src/main/java/eu/siacs/conversations/entities/Bookmark.java
index fd6a5dab..c5c4ff5d 100644
--- a/src/main/java/eu/siacs/conversations/entities/Bookmark.java
+++ b/src/main/java/eu/siacs/conversations/entities/Bookmark.java
@@ -50,9 +50,8 @@ public class Bookmark extends Element implements ListItem {
@Override
public String getDisplayName() {
- if (this.mJoinedConversation != null
- && (this.mJoinedConversation.getMucOptions().getSubject() != null)) {
- return this.mJoinedConversation.getMucOptions().getSubject();
+ if (this.mJoinedConversation != null) {
+ return this.mJoinedConversation.getName();
} else if (getBookmarkName() != null) {
return getBookmarkName();
} else {
diff --git a/src/main/java/eu/siacs/conversations/entities/Message.java b/src/main/java/eu/siacs/conversations/entities/Message.java
index 818ac1d6..4b687711 100644
--- a/src/main/java/eu/siacs/conversations/entities/Message.java
+++ b/src/main/java/eu/siacs/conversations/entities/Message.java
@@ -19,7 +19,7 @@ public class Message extends AbstractEntity {
public static final String TABLENAME = "messages";
- public static final String MERGE_SEPARATOR = " \u200B\n\n";
+ public static final String MERGE_SEPARATOR = "\n\u0004\n";
public static final int STATUS_RECEIVED = 0;
public static final int STATUS_UNSEND = 1;
diff --git a/src/main/java/eu/siacs/conversations/entities/MucOptions.java b/src/main/java/eu/siacs/conversations/entities/MucOptions.java
index 68c1fb50..d0848370 100644
--- a/src/main/java/eu/siacs/conversations/entities/MucOptions.java
+++ b/src/main/java/eu/siacs/conversations/entities/MucOptions.java
@@ -18,6 +18,8 @@ import eu.siacs.conversations.xmpp.pep.Avatar;
@SuppressLint("DefaultLocale")
public class MucOptions {
+ private boolean mAutoPushConfiguration = true;
+
public Account getAccount() {
return this.conversation.getAccount();
}
@@ -39,6 +41,14 @@ public class MucOptions {
}
}
+ public void flagNoAutoPushConfiguration() {
+ mAutoPushConfiguration = false;
+ }
+
+ public boolean autoPushConfiguration() {
+ return mAutoPushConfiguration;
+ }
+
public enum Affiliation {
OWNER("owner", 4, R.string.owner),
ADMIN("admin", 3, R.string.admin),
diff --git a/src/main/java/eu/siacs/conversations/parser/PresenceParser.java b/src/main/java/eu/siacs/conversations/parser/PresenceParser.java
index edcd986e..b5718b61 100644
--- a/src/main/java/eu/siacs/conversations/parser/PresenceParser.java
+++ b/src/main/java/eu/siacs/conversations/parser/PresenceParser.java
@@ -78,7 +78,7 @@ public class PresenceParser extends AbstractParser implements
} else {
mucOptions.addUser(user);
}
- if (codes.contains(MucOptions.STATUS_CODE_ROOM_CREATED)) {
+ if (codes.contains(MucOptions.STATUS_CODE_ROOM_CREATED) && mucOptions.autoPushConfiguration()) {
Log.d(Config.LOGTAG,mucOptions.getAccount().getJid().toBareJid()
+": room '"
+mucOptions.getConversation().getJid().toBareJid()
diff --git a/src/main/java/eu/siacs/conversations/services/AvatarService.java b/src/main/java/eu/siacs/conversations/services/AvatarService.java
index 633758a5..9e8e6970 100644
--- a/src/main/java/eu/siacs/conversations/services/AvatarService.java
+++ b/src/main/java/eu/siacs/conversations/services/AvatarService.java
@@ -64,7 +64,7 @@ public class AvatarService implements OnAdvancedStreamFeaturesLoaded {
public Bitmap get(final MucOptions.User user, final int size, boolean cachedOnly) {
Contact c = user.getContact();
- if (c != null && (c.getProfilePhoto() != null || c.getAvatar() != null)) {
+ if (c != null && (c.getProfilePhoto() != null || c.getAvatar() != null || user.getAvatar() == null)) {
return get(c, size, cachedOnly);
} else {
return getImpl(user, size, cachedOnly);
@@ -370,7 +370,7 @@ public class AvatarService implements OnAdvancedStreamFeaturesLoaded {
private boolean drawTile(Canvas canvas, String name, int left, int top, int right, int bottom) {
if (name != null) {
- final String letter = name.isEmpty() ? "X" : name.substring(0, 1);
+ final String letter = getFirstLetter(name);
final int color = UIHelper.getColorForName(name);
drawTile(canvas, letter, color, left, top, right, bottom);
return true;
@@ -378,6 +378,15 @@ public class AvatarService implements OnAdvancedStreamFeaturesLoaded {
return false;
}
+ private static String getFirstLetter(String name) {
+ for(Character c : name.toCharArray()) {
+ if (Character.isLetterOrDigit(c)) {
+ return c.toString();
+ }
+ }
+ return "X";
+ }
+
private boolean drawTile(Canvas canvas, Uri uri, int left, int top, int right, int bottom) {
if (uri != null) {
Bitmap bitmap = mXmppConnectionService.getFileBackend()
diff --git a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java
index 52a2fc22..7eebe069 100644
--- a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java
+++ b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java
@@ -1,6 +1,7 @@
package eu.siacs.conversations.services;
import android.annotation.SuppressLint;
+import android.annotation.TargetApi;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.app.Service;
@@ -128,6 +129,7 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa
public static final String ACTION_DISABLE_FOREGROUND = "disable_foreground";
public static final String ACTION_TRY_AGAIN = "try_again";
public static final String ACTION_DISABLE_ACCOUNT = "disable_account";
+ public static final String ACTION_IDLE_PING = "idle_ping";
private static final String ACTION_MERGE_PHONE_CONTACTS = "merge_phone_contacts";
public static final String ACTION_GCM_TOKEN_REFRESH = "gcm_token_refresh";
public static final String ACTION_GCM_MESSAGE_RECEIVED = "gcm_message_received";
@@ -551,8 +553,14 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa
case ACTION_GCM_TOKEN_REFRESH:
refreshAllGcmTokens();
break;
+ case ACTION_IDLE_PING:
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+ scheduleNextIdlePing();
+ }
+ break;
case ACTION_GCM_MESSAGE_RECEIVED:
Log.d(Config.LOGTAG,"gcm push message arrived in service. extras="+intent.getExtras());
+ break;
}
}
this.wakeLock.acquire();
@@ -627,7 +635,7 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa
if (pingNow) {
for (Account account : pingCandidates) {
account.getXmppConnection().sendPing();
- Log.d(Config.LOGTAG, account.getJid().toBareJid() + " send ping");
+ Log.d(Config.LOGTAG, account.getJid().toBareJid() + " send ping (action="+action+")");
this.scheduleWakeUpCall(Config.PING_TIMEOUT, account.getUuid().hashCode());
}
}
@@ -759,6 +767,9 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa
toggleForegroundService();
updateUnreadCountBadge();
toggleScreenEventReceiver();
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+ scheduleNextIdlePing();
+ }
}
@Override
@@ -841,16 +852,25 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa
public void scheduleWakeUpCall(int seconds, int requestCode) {
final long timeToWake = SystemClock.elapsedRealtime() + (seconds < 0 ? 1 : seconds + 1) * 1000;
-
- Context context = getApplicationContext();
- AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
-
- Intent intent = new Intent(context, EventReceiver.class);
+ AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
+ Intent intent = new Intent(this, EventReceiver.class);
intent.setAction("ping");
- PendingIntent alarmIntent = PendingIntent.getBroadcast(context, requestCode, intent, 0);
+ PendingIntent alarmIntent = PendingIntent.getBroadcast(this, requestCode, intent, 0);
alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, timeToWake, alarmIntent);
}
+ @TargetApi(Build.VERSION_CODES.M)
+ private void scheduleNextIdlePing() {
+ Log.d(Config.LOGTAG,"schedule next idle ping");
+ AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
+ Intent intent = new Intent(this, EventReceiver.class);
+ intent.setAction(ACTION_IDLE_PING);
+ alarmManager.setAndAllowWhileIdle(AlarmManager.ELAPSED_REALTIME_WAKEUP,
+ SystemClock.elapsedRealtime()+(Config.IDLE_PING_INTERVAL * 1000),
+ PendingIntent.getBroadcast(this,0,intent,0)
+ );
+ }
+
public XmppConnection createConnection(final Account account) {
final SharedPreferences sharedPref = getPreferences();
account.setResource(sharedPref.getString("resource", getString(R.string.default_resource))
@@ -1831,6 +1851,9 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa
account.pendingConferenceLeaves.remove(conversation);
if (account.getStatus() == Account.State.ONLINE) {
conversation.resetMucOptions();
+ if (onConferenceJoined != null) {
+ conversation.getMucOptions().flagNoAutoPushConfiguration();
+ }
conversation.setHasMessagesLeftOnServer(false);
fetchConferenceConfiguration(conversation, new OnConferenceConfigurationFetched() {
@@ -2048,8 +2071,7 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa
}
return;
}
- String localpart = new BigInteger(75, getRNG()).toString(32);
- Jid jid = Jid.fromParts(localpart, server, null);
+ final Jid jid = Jid.fromParts(new BigInteger(64, getRNG()).toString(Character.MAX_RADIX), server, null);
final Conversation conversation = findOrCreateConversation(account, jid, true);
joinMuc(conversation, new OnConferenceJoined() {
@Override
@@ -2058,7 +2080,7 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa
@Override
public void onPushSucceeded() {
if (subject != null && !subject.trim().isEmpty()) {
- pushSubjectToConference(conversation, subject);
+ pushSubjectToConference(conversation, subject.trim());
}
for (Jid invite : jids) {
invite(conversation, invite);
@@ -2066,6 +2088,7 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa
if (account.countPresences() > 1) {
directInvite(conversation, account.getJid().toBareJid());
}
+ saveConversationAsBookmark(conversation, subject);
if (callback != null) {
callback.success(conversation);
}
@@ -2073,6 +2096,7 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa
@Override
public void onPushFailed() {
+ archiveConversation(conversation);
if (callback != null) {
callback.error(R.string.conference_creation_failed, conversation);
}
@@ -3306,6 +3330,21 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa
return templates;
}
+ public void saveConversationAsBookmark(Conversation conversation, String name) {
+ Account account = conversation.getAccount();
+ Bookmark bookmark = new Bookmark(account, conversation.getJid().toBareJid());
+ if (!conversation.getJid().isBareJid()) {
+ bookmark.setNick(conversation.getJid().getResourcepart());
+ }
+ if (name != null && !name.trim().isEmpty()) {
+ bookmark.setBookmarkName(name.trim());
+ }
+ bookmark.setAutojoin(getPreferences().getBoolean("autojoin",true));
+ account.getBookmarks().add(bookmark);
+ pushBookmarks(account);
+ conversation.setBookmark(bookmark);
+ }
+
public interface OnMamPreferencesFetched {
void onPreferencesFetched(Element prefs);
void onPreferencesFetchFailed();
diff --git a/src/main/java/eu/siacs/conversations/ui/ChooseContactActivity.java b/src/main/java/eu/siacs/conversations/ui/ChooseContactActivity.java
index 1698343b..5156fcca 100644
--- a/src/main/java/eu/siacs/conversations/ui/ChooseContactActivity.java
+++ b/src/main/java/eu/siacs/conversations/ui/ChooseContactActivity.java
@@ -1,8 +1,10 @@
package eu.siacs.conversations.ui;
+import android.app.ActionBar;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
+import android.support.annotation.StringRes;
import android.view.ActionMode;
import android.view.Menu;
import android.view.MenuInflater;
@@ -32,6 +34,7 @@ public class ChooseContactActivity extends AbstractSearchableListItemActivity {
private Set<Contact> selected;
private Set<String> filterContacts;
+ public static final String EXTRA_TITLE_RES_ID = "extra_title_res_id";
@Override
public void onCreate(final Bundle savedInstanceState) {
@@ -77,6 +80,8 @@ public class ChooseContactActivity extends AbstractSearchableListItemActivity {
String[] selection = getSelectedContactJids();
data.putExtra("contacts", selection);
data.putExtra("multiple", true);
+ data.putExtra(EXTRA_ACCOUNT,request.getStringExtra(EXTRA_ACCOUNT));
+ data.putExtra("subject", request.getStringExtra("subject"));
setResult(RESULT_OK, data);
finish();
return true;
@@ -121,6 +126,7 @@ public class ChooseContactActivity extends AbstractSearchableListItemActivity {
data.putExtra("conversation",
request.getStringExtra("conversation"));
data.putExtra("multiple", false);
+ data.putExtra("subject", request.getStringExtra("subject"));
setResult(RESULT_OK, data);
finish();
}
@@ -129,6 +135,22 @@ public class ChooseContactActivity extends AbstractSearchableListItemActivity {
}
@Override
+ public void onStart() {
+ super.onStart();
+ Intent intent = getIntent();
+ @StringRes
+ int res = intent != null ? intent.getIntExtra(EXTRA_TITLE_RES_ID,R.string.title_activity_choose_contact) : R.string.title_activity_choose_contact;
+ ActionBar bar = getActionBar();
+ if (bar != null) {
+ try {
+ bar.setTitle(res);
+ } catch (Exception e) {
+ bar.setTitle(R.string.title_activity_choose_contact);
+ }
+ }
+ }
+
+ @Override
public boolean onCreateOptionsMenu(final Menu menu) {
super.onCreateOptionsMenu(menu);
final Intent i = getIntent();
@@ -194,6 +216,7 @@ public class ChooseContactActivity extends AbstractSearchableListItemActivity {
data.putExtra("conversation",
request.getStringExtra("conversation"));
data.putExtra("multiple", false);
+ data.putExtra("subject", request.getStringExtra("subject"));
setResult(RESULT_OK, data);
finish();
diff --git a/src/main/java/eu/siacs/conversations/ui/ConferenceDetailsActivity.java b/src/main/java/eu/siacs/conversations/ui/ConferenceDetailsActivity.java
index f3988313..80ebb28b 100644
--- a/src/main/java/eu/siacs/conversations/ui/ConferenceDetailsActivity.java
+++ b/src/main/java/eu/siacs/conversations/ui/ConferenceDetailsActivity.java
@@ -26,7 +26,6 @@ import org.openintents.openpgp.util.OpenPgpUtils;
import java.util.ArrayList;
import java.util.Collections;
-import java.util.Comparator;
import java.util.concurrent.atomic.AtomicInteger;
import eu.siacs.conversations.Config;
@@ -485,16 +484,8 @@ public class ConferenceDetailsActivity extends XmppActivity implements OnConvers
}
protected void saveAsBookmark() {
- Account account = mConversation.getAccount();
- Bookmark bookmark = new Bookmark(account, mConversation.getJid().toBareJid());
- if (!mConversation.getJid().isBareJid()) {
- bookmark.setNick(mConversation.getJid().getResourcepart());
- }
- bookmark.setBookmarkName(mConversation.getMucOptions().getSubject());
- bookmark.setAutojoin(getPreferences().getBoolean("autojoin",true));
- account.getBookmarks().add(bookmark);
- xmppConnectionService.pushBookmarks(account);
- mConversation.setBookmark(bookmark);
+ xmppConnectionService.saveConversationAsBookmark(mConversation,
+ mConversation.getMucOptions().getSubject());
}
protected void deleteBookmark() {
diff --git a/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java b/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java
index c7fa2d28..a9b9beb7 100644
--- a/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java
+++ b/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java
@@ -1122,6 +1122,8 @@ public class ConversationActivity extends XmppActivity
if (mPendingConferenceInvite != null) {
mPendingConferenceInvite.execute(this);
+ mToast = Toast.makeText(this, R.string.creating_conference,Toast.LENGTH_LONG);
+ mToast.show();
mPendingConferenceInvite = null;
}
diff --git a/src/main/java/eu/siacs/conversations/ui/StartConversationActivity.java b/src/main/java/eu/siacs/conversations/ui/StartConversationActivity.java
index 3ab6d1d2..9af83edd 100644
--- a/src/main/java/eu/siacs/conversations/ui/StartConversationActivity.java
+++ b/src/main/java/eu/siacs/conversations/ui/StartConversationActivity.java
@@ -10,6 +10,7 @@ import android.app.AlertDialog;
import android.app.Fragment;
import android.app.FragmentTransaction;
import android.app.ListFragment;
+import android.app.PendingIntent;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
@@ -27,6 +28,7 @@ import android.support.v4.view.ViewPager;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
+import android.util.Pair;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.KeyEvent;
@@ -54,6 +56,7 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
+import java.util.concurrent.RunnableFuture;
import java.util.concurrent.atomic.AtomicBoolean;
import eu.siacs.conversations.Config;
@@ -94,6 +97,7 @@ public class StartConversationActivity extends XmppActivity implements OnRosterU
private EditText mSearchEditText;
private AtomicBoolean mRequestedContactsPermission = new AtomicBoolean(false);
private final int REQUEST_SYNC_CONTACTS = 0x3b28cf;
+ private final int REQUEST_CREATE_CONFERENCE = 0x3b39da;
private MenuItem.OnActionExpandListener mOnActionExpandListener = new MenuItem.OnActionExpandListener() {
@@ -201,6 +205,47 @@ public class StartConversationActivity extends XmppActivity implements OnRosterU
}
};
private String mInitialJid;
+ private Pair<Integer, Intent> mPostponedActivityResult;
+ private UiCallback<Conversation> mAdhocConferenceCallback = new UiCallback<Conversation>() {
+ @Override
+ public void success(final Conversation conversation) {
+ runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ hideToast();
+ switchToConversation(conversation);
+ }
+ });
+ }
+
+ @Override
+ public void error(final int errorCode, Conversation object) {
+ runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ replaceToast(getString(errorCode));
+ }
+ });
+ }
+
+ @Override
+ public void userInputRequried(PendingIntent pi, Conversation object) {
+
+ }
+ };
+ private Toast mToast;
+
+ protected void hideToast() {
+ if (mToast != null) {
+ mToast.cancel();
+ }
+ }
+
+ protected void replaceToast(String msg) {
+ hideToast();
+ mToast = Toast.makeText(this, msg ,Toast.LENGTH_LONG);
+ mToast.show();
+ }
@Override
public void onRosterUpdate() {
@@ -488,6 +533,37 @@ public class StartConversationActivity extends XmppActivity implements OnRosterU
});
}
+ private void showCreateConferenceDialog() {
+ final AlertDialog.Builder builder = new AlertDialog.Builder(this);
+ builder.setTitle(R.string.create_conference);
+ final View dialogView = getLayoutInflater().inflate(R.layout.create_conference_dialog, null);
+ final Spinner spinner = (Spinner) dialogView.findViewById(R.id.account);
+ final EditText subject = (EditText) dialogView.findViewById(R.id.subject);
+ populateAccountSpinner(this, mActivatedAccounts, spinner);
+ builder.setView(dialogView);
+ builder.setPositiveButton(R.string.choose_participants, new OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ if (!xmppConnectionServiceBound) {
+ return;
+ }
+ final Account account = getSelectedAccount(spinner);
+ if (account == null) {
+ return;
+ }
+ Intent intent = new Intent(getApplicationContext(), ChooseContactActivity.class);
+ intent.putExtra("multiple", true);
+ intent.putExtra("show_enter_jid", true);
+ intent.putExtra("subject", subject.getText().toString());
+ intent.putExtra(EXTRA_ACCOUNT, account.getJid().toBareJid().toString());
+ intent.putExtra(ChooseContactActivity.EXTRA_TITLE_RES_ID,R.string.choose_participants);
+ startActivityForResult(intent, REQUEST_CREATE_CONFERENCE);
+ }
+ });
+ builder.setNegativeButton(R.string.cancel, null);
+ builder.create().show();
+ }
+
private Account getSelectedAccount(Spinner spinner) {
if (!spinner.isEnabled()) {
return null;
@@ -532,7 +608,7 @@ public class StartConversationActivity extends XmppActivity implements OnRosterU
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.start_conversation, menu);
MenuItem menuCreateContact = menu.findItem(R.id.action_create_contact);
- MenuItem menuCreateConference = menu.findItem(R.id.action_join_conference);
+ MenuItem menuCreateConference = menu.findItem(R.id.action_conference);
MenuItem menuHideOffline = menu.findItem(R.id.action_hide_offline);
menuHideOffline.setChecked(this.mHideOfflineContacts);
mMenuSearchView = menu.findItem(R.id.action_search);
@@ -564,6 +640,9 @@ public class StartConversationActivity extends XmppActivity implements OnRosterU
case R.id.action_join_conference:
showJoinConferenceDialog(null);
return true;
+ case R.id.action_create_conference:
+ showCreateConferenceDialog();
+ return true;
case R.id.action_scan_qr_code:
new IntentIntegrator(this).initiateScan();
return true;
@@ -616,6 +695,39 @@ public class StartConversationActivity extends XmppActivity implements OnRosterU
this.mPendingInvite = null;
}
}
+ } else if (resultCode == RESULT_OK) {
+ if (xmppConnectionServiceBound) {
+ this.mPostponedActivityResult = null;
+ if (requestCode == REQUEST_CREATE_CONFERENCE) {
+ Log.d(Config.LOGTAG,"account jid: "+ intent.getStringExtra(EXTRA_ACCOUNT));
+ Account account = extractAccount(intent);
+ final String subject = intent.getStringExtra("subject");
+ List<Jid> jids = new ArrayList<>();
+ if (intent.getBooleanExtra("multiple", false)) {
+ String[] toAdd = intent.getStringArrayExtra("contacts");
+ for (String item : toAdd) {
+ try {
+ jids.add(Jid.fromString(item));
+ } catch (InvalidJidException e) {
+ //ignored
+ }
+ }
+ } else {
+ try {
+ jids.add(Jid.fromString(intent.getStringExtra("contact")));
+ } catch (Exception e) {
+ //ignored
+ }
+ }
+ if (account != null && jids.size() > 1) {
+ xmppConnectionService.createAdhocConference(account, subject, jids, mAdhocConferenceCallback);
+ mToast = Toast.makeText(this, R.string.creating_conference,Toast.LENGTH_LONG);
+ mToast.show();
+ }
+ }
+ } else {
+ this.mPostponedActivityResult = new Pair<>(requestCode, intent);
+ }
}
super.onActivityResult(requestCode, requestCode, intent);
}
@@ -657,6 +769,10 @@ public class StartConversationActivity extends XmppActivity implements OnRosterU
@Override
protected void onBackendConnected() {
+ if (mPostponedActivityResult != null) {
+ onActivityResult(mPostponedActivityResult.first, RESULT_OK, mPostponedActivityResult.second);
+ this.mPostponedActivityResult = null;
+ }
this.mActivatedAccounts.clear();
for (Account account : xmppConnectionService.getAccounts()) {
if (account.getStatus() != Account.State.DISABLED) {
diff --git a/src/main/java/eu/siacs/conversations/ui/XmppActivity.java b/src/main/java/eu/siacs/conversations/ui/XmppActivity.java
index a136259d..5dfa5083 100644
--- a/src/main/java/eu/siacs/conversations/ui/XmppActivity.java
+++ b/src/main/java/eu/siacs/conversations/ui/XmppActivity.java
@@ -117,6 +117,20 @@ public abstract class XmppActivity extends Activity {
protected int mTheme;
protected boolean mUsingEnterKey = false;
+ protected Toast mToast;
+
+ protected void hideToast() {
+ if (mToast != null) {
+ mToast.cancel();
+ }
+ }
+
+ protected void replaceToast(String msg) {
+ hideToast();
+ mToast = Toast.makeText(this, msg ,Toast.LENGTH_LONG);
+ mToast.show();
+ }
+
protected Runnable onOpenPGPKeyPublished = new Runnable() {
@Override
public void run() {
@@ -940,19 +954,22 @@ public abstract class XmppActivity extends Activity {
mPendingConferenceInvite = ConferenceInvite.parse(data);
if (xmppConnectionServiceBound && mPendingConferenceInvite != null) {
mPendingConferenceInvite.execute(this);
+ mToast = Toast.makeText(this, R.string.creating_conference,Toast.LENGTH_LONG);
+ mToast.show();
mPendingConferenceInvite = null;
}
}
}
+
private UiCallback<Conversation> adhocCallback = new UiCallback<Conversation>() {
@Override
public void success(final Conversation conversation) {
- switchToConversation(conversation);
runOnUiThread(new Runnable() {
@Override
public void run() {
- Toast.makeText(XmppActivity.this,R.string.conference_created,Toast.LENGTH_LONG).show();
+ switchToConversation(conversation);
+ hideToast();
}
});
}
@@ -962,7 +979,7 @@ public abstract class XmppActivity extends Activity {
runOnUiThread(new Runnable() {
@Override
public void run() {
- Toast.makeText(XmppActivity.this,errorCode,Toast.LENGTH_LONG).show();
+ replaceToast(getString(errorCode));
}
});
}
diff --git a/src/main/java/eu/siacs/conversations/utils/CryptoHelper.java b/src/main/java/eu/siacs/conversations/utils/CryptoHelper.java
index 1ef5fb3f..253584bf 100644
--- a/src/main/java/eu/siacs/conversations/utils/CryptoHelper.java
+++ b/src/main/java/eu/siacs/conversations/utils/CryptoHelper.java
@@ -9,6 +9,7 @@ import org.bouncycastle.asn1.x500.style.IETFUtils;
import org.bouncycastle.cert.jcajce.JcaX509CertificateHolder;
import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
import java.security.cert.CertificateEncodingException;
import java.security.cert.CertificateParsingException;
import java.security.cert.X509Certificate;
@@ -184,9 +185,7 @@ public final class CryptoHelper {
//ignored
}
try {
- MessageDigest md = MessageDigest.getInstance("SHA-1");
- byte[] fingerprint = md.digest(certificate.getEncoded());
- information.putString("sha1", prettifyFingerprintCert(bytesToHex(fingerprint)));
+ information.putString("sha1", getFingerprintCert(certificate.getEncoded()));
} catch (Exception e) {
}
@@ -196,6 +195,12 @@ public final class CryptoHelper {
}
}
+ public static String getFingerprintCert(byte[] input) throws NoSuchAlgorithmException {
+ MessageDigest md = MessageDigest.getInstance("SHA-1");
+ byte[] fingerprint = md.digest(input);
+ return prettifyFingerprintCert(bytesToHex(fingerprint));
+ }
+
public static int encryptionTypeToText(int encryption) {
switch (encryption) {
case Message.ENCRYPTION_OTR:
diff --git a/src/main/java/eu/siacs/conversations/utils/ExceptionHelper.java b/src/main/java/eu/siacs/conversations/utils/ExceptionHelper.java
index 58d74b58..962613fb 100644
--- a/src/main/java/eu/siacs/conversations/utils/ExceptionHelper.java
+++ b/src/main/java/eu/siacs/conversations/utils/ExceptionHelper.java
@@ -8,6 +8,7 @@ import android.content.SharedPreferences;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
+import android.content.pm.Signature;
import android.preference.PreferenceManager;
import android.text.format.DateUtils;
import android.util.Log;
@@ -18,6 +19,8 @@ import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
+import java.text.SimpleDateFormat;
+import java.util.Date;
import java.util.List;
import eu.siacs.conversations.Config;
@@ -31,6 +34,7 @@ import eu.siacs.conversations.xmpp.jid.InvalidJidException;
import eu.siacs.conversations.xmpp.jid.Jid;
public class ExceptionHelper {
+ private static SimpleDateFormat DATE_FORMATs = new SimpleDateFormat("yyyy-MM-dd");
public static void init(Context context) {
if (!(Thread.getDefaultUncaughtExceptionHandler() instanceof ExceptionHandler)) {
Thread.setDefaultUncaughtExceptionHandler(new ExceptionHandler(
@@ -43,7 +47,7 @@ public class ExceptionHelper {
final SharedPreferences preferences = PreferenceManager
.getDefaultSharedPreferences(activity);
boolean neverSend = preferences.getBoolean("never_send", false);
- if (neverSend) {
+ if (neverSend || Config.BUG_REPORTS == null) {
return false;
}
List<Account> accounts = service.getAccounts();
@@ -63,16 +67,18 @@ public class ExceptionHelper {
BufferedReader stacktrace = new BufferedReader(inputStreamReader);
final StringBuilder report = new StringBuilder();
PackageManager pm = activity.getPackageManager();
- PackageInfo packageInfo = null;
+ PackageInfo packageInfo;
try {
- packageInfo = pm.getPackageInfo(activity.getPackageName(), 0);
+ packageInfo = pm.getPackageInfo(activity.getPackageName(), PackageManager.GET_SIGNATURES);
report.append("Version: " + packageInfo.versionName + '\n');
- report.append("Last Update: "
- + DateUtils.formatDateTime(activity,
- packageInfo.lastUpdateTime,
- DateUtils.FORMAT_SHOW_TIME
- | DateUtils.FORMAT_SHOW_DATE) + '\n');
- } catch (NameNotFoundException e) {
+ report.append("Last Update: " + DATE_FORMATs.format(new Date(packageInfo.lastUpdateTime)) + '\n');
+ Signature[] signatures = packageInfo.signatures;
+ if (signatures != null && signatures.length >= 1) {
+ report.append("SHA-1: " + CryptoHelper.getFingerprintCert(packageInfo.signatures[0].toByteArray()) + "\n");
+ }
+ report.append('\n');
+ } catch (Exception e) {
+ e.printStackTrace();
return false;
}
String line;
@@ -97,7 +103,7 @@ public class ExceptionHelper {
Conversation conversation = null;
try {
conversation = service.findOrCreateConversation(finalAccount,
- Jid.fromString("bugs@siacs.eu"), false);
+ Jid.fromString(Config.BUG_REPORTS), false);
} catch (final InvalidJidException ignored) {
}
Message message = new Message(conversation, report
diff --git a/src/main/res/layout/create_conference_dialog.xml b/src/main/res/layout/create_conference_dialog.xml
new file mode 100644
index 00000000..cab2ac57
--- /dev/null
+++ b/src/main/res/layout/create_conference_dialog.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="vertical"
+ android:paddingBottom="8dp"
+ android:paddingLeft="24dp"
+ android:paddingRight="24dp"
+ android:paddingTop="16dp">
+
+ <TextView
+ android:id="@+id/your_account"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="@string/your_account"
+ android:textColor="@color/black87"
+ android:textSize="?attr/TextSizeBody" />
+
+ <Spinner
+ android:id="@+id/account"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content" />
+
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="8dp"
+ android:text="@string/conference_subject"
+ android:textColor="@color/black87"
+ android:textSize="?attr/TextSizeBody" />
+
+ <EditText
+ android:id="@+id/subject"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:hint="@string/edit_subject_hint"
+ android:inputType="textAutoComplete"
+ android:textColor="@color/black87"
+ android:textColorHint="@color/black54"
+ android:textSize="?attr/TextSizeBody"/>
+
+</LinearLayout> \ No newline at end of file
diff --git a/src/main/res/menu/start_conversation.xml b/src/main/res/menu/start_conversation.xml
index a89d71ff..327709fa 100644
--- a/src/main/res/menu/start_conversation.xml
+++ b/src/main/res/menu/start_conversation.xml
@@ -13,10 +13,20 @@
android:showAsAction="always"
android:title="@string/create_contact" />
<item
- android:id="@+id/action_join_conference"
+ android:id="@+id/action_conference"
android:icon="?attr/icon_add_group"
android:showAsAction="always"
- android:title="@string/join_conference" />
+ android:title="@string/join_or_create_conference">
+ <menu>
+ <item
+ android:id="@+id/action_join_conference"
+ android:title="@string/join_conference"/>
+ <item
+ android:id="@+id/action_create_conference"
+ android:title="@string/create_conference"/>
+
+ </menu>
+ </item>
<item
android:id="@+id/action_scan_qr_code"
android:showAsAction="never"
diff --git a/src/main/res/values-ar/strings.xml b/src/main/res/values-ar/strings.xml
index 25be4d61..6b825007 100644
--- a/src/main/res/values-ar/strings.xml
+++ b/src/main/res/values-ar/strings.xml
@@ -232,7 +232,6 @@
<string name="conference_with">انشاء غرفة بــ </string>
<string name="no_conference_server_found">سيرفر الغرف غير موجود</string>
<string name="conference_creation_failed">فشل انشاء الغرفة</string>
- <string name="conference_created">تم انشاء الرغرفة بنجاح</string>
<string name="secret_accepted">الاجابة السريّة مقبولة</string>
<string name="reset">إعادة تعيين</string>
<string name="account_image_description">الصورة الرمزية للحساب</string>
diff --git a/src/main/res/values-bg/strings.xml b/src/main/res/values-bg/strings.xml
index 819250ba..2f4dd15a 100644
--- a/src/main/res/values-bg/strings.xml
+++ b/src/main/res/values-bg/strings.xml
@@ -379,7 +379,6 @@
<string name="conference_with">Започване на беседа с…</string>
<string name="no_conference_server_found">Не е открит сървър за беседата</string>
<string name="conference_creation_failed">Неуспешно създаване на беседа!</string>
- <string name="conference_created">Беседата беше създадена!</string>
<string name="secret_accepted">Тайната е приета!</string>
<string name="reset">Възстановяване</string>
<string name="account_image_description">Аватар на профила</string>
@@ -415,6 +414,7 @@
<string name="disable_all_accounts">Деактивиране на всички профили</string>
<string name="perform_action_with">Изпълнение на действието с</string>
<string name="no_affiliation">Няма принадлежност</string>
+ <string name="no_role">Извън линия</string>
<string name="outcast">Отхвърлен</string>
<string name="member">Член</string>
<string name="advanced_mode">Разширен режим</string>
@@ -454,7 +454,7 @@
<string name="pdf_document">PDF документ</string>
<string name="apk">Приложение за Андроид</string>
<string name="vcard">Контакт</string>
- <string name="received_x_file">Получи %s</string>
+ <string name="received_x_file">Получихте %s</string>
<string name="disable_foreground_service">Изключване на услугата на преден план</string>
<string name="touch_to_open_conversations">Докоснете, за да отворите Conversations</string>
<string name="avatar_has_been_published">Аватарът беше публикуван!</string>
@@ -509,6 +509,7 @@
<string name="pref_use_white_background_summary">Показване на получените съобщения с черен текст на бял фон</string>
<string name="account_status_tor_unavailable">Мрежата на Тор е недостъпна</string>
<string name="account_status_bind_failure">Грешка при свързване</string>
+ <string name="account_status_host_unknown">Сървърът е непознат</string>
<string name="server_info_broken">Повредено</string>
<string name="pref_presence_settings">Присъствие</string>
<string name="pref_away_when_screen_off">Отсъстващ, когато екранът е изключен</string>
@@ -605,4 +606,5 @@
<string name="presence_dnd">Зает</string>
<string name="secure_password_generated">Беше създадена сигурна парола</string>
<string name="device_does_not_support_battery_op">Устройството Ви не поддържа изключването на оптимизациите за използването на батерията</string>
+ <string name="show_password">Показване на паролата</string>
</resources>
diff --git a/src/main/res/values-ca/strings.xml b/src/main/res/values-ca/strings.xml
index 37a3e067..57787843 100644
--- a/src/main/res/values-ca/strings.xml
+++ b/src/main/res/values-ca/strings.xml
@@ -321,7 +321,6 @@
<string name="conference_with">Crear una conferència de conversació amb ...</string>
<string name="no_conference_server_found">Servidor de la conferència de conversació no trobat</string>
<string name="conference_creation_failed">la creació de la conferència de conversació ha fallat</string>
- <string name="conference_created">Conferència de la conversació creada</string>
<string name="secret_accepted">Aceptació del secret</string>
<string name="reset">Reset</string>
<string name="account_image_description">Avatar del compte</string>
diff --git a/src/main/res/values-cs/strings.xml b/src/main/res/values-cs/strings.xml
index 07cbde0d..33d7669c 100644
--- a/src/main/res/values-cs/strings.xml
+++ b/src/main/res/values-cs/strings.xml
@@ -379,7 +379,6 @@
<string name="conference_with">Vytvořit konferenci s…</string>
<string name="no_conference_server_found">Nebyl nalezen konferenční server</string>
<string name="conference_creation_failed">Vytvoření konference selhalo!</string>
- <string name="conference_created">Konference vytvořena!</string>
<string name="secret_accepted">Tajemství souhlasí!</string>
<string name="reset">Reset</string>
<string name="account_image_description">Avatar účtu</string>
diff --git a/src/main/res/values-de/strings.xml b/src/main/res/values-de/strings.xml
index 278c9f65..7b6b4e0b 100644
--- a/src/main/res/values-de/strings.xml
+++ b/src/main/res/values-de/strings.xml
@@ -166,8 +166,8 @@
<string name="mgmt_account_disable">Vorübergehend abschalten</string>
<string name="mgmt_account_publish_avatar">Avatar veröffentlichen</string>
<string name="mgmt_account_publish_pgp">Öffentlichen OpenPGP-Schlüssel veröffentlichen</string>
- <string name="openpgp_has_been_published">Öffentlicher OpenPGP Schlüssel wurde veröffentlicht.</string>
- <string name="republish_pgp_keys">Deine öffentliche OpenPGP Schlüssel müssen veröffentlicht werden!</string>
+ <string name="openpgp_has_been_published">Öffentlicher OpenPGP-Schlüssel wurde veröffentlicht.</string>
+ <string name="republish_pgp_keys">Deine öffentliche OpenPGP-Schlüssel müssen veröffentlicht werden!</string>
<string name="mgmt_account_enable">Konto aktivieren </string>
<string name="mgmt_account_are_you_sure">Bist du dir sicher?</string>
<string name="mgmt_account_delete_confirm_text">Wenn du dein Konto löschst, gehen alle Gesprächsverläufe verloren</string>
@@ -379,7 +379,6 @@
<string name="conference_with">Konferenz erstellen mit…</string>
<string name="no_conference_server_found">Kein Konferenz-Server gefunden</string>
<string name="conference_creation_failed">Erstellen der Konferenz fehlgeschlagen!</string>
- <string name="conference_created">Konferenz erstellt!</string>
<string name="secret_accepted">Schlüssel akzeptiert!</string>
<string name="reset">Zurücksetzen</string>
<string name="account_image_description">Konto-Avatar</string>
@@ -530,7 +529,7 @@
<string name="fetching_mam_prefs">Archivierungseinstellungen werden abgerufen. Bitte warten …</string>
<string name="unable_to_fetch_mam_prefs">Archivierungseinstellungen konnten nicht abgerufen werden</string>
<string name="captcha_required">Captcha erforderlich</string>
- <string name="captcha_hint">Gib den Text vom obigen Bild ein</string>
+ <string name="captcha_hint">Gib den Text von obigem Bild ein</string>
<string name="certificate_chain_is_not_trusted">Zertifikat wird nicht vertraut</string>
<string name="jid_does_not_match_certificate">Jabber-ID stimmt nicht dem Zertifikat überein</string>
<string name="action_renew_certificate">Zertifikat erneuern</string>
@@ -590,7 +589,7 @@
<string name="no_application_to_share_uri">Keine Anwendung zum Teilen der URI gefunden</string>
<string name="share_uri_with">Teile URI mit…</string>
<string name="welcome_text">XMPP ist ein providerunabhängiges Protokoll. Du kannst diesen Klienten mit einem beliebigen XMPP-Server deiner Wahl nutzen.\nWir haben jedoch eine einfache Möglichkeit geschaffen, ein Konto auf conversations.im zu erstellen; ein Provider, der speziell für den Einsatz mit Conversations geeignet ist.</string>
- <string name="magic_create_text">Wir führen dich durch den Prozess ein Konto auf conversations.im zu erstellen.\nWenn du conversations.im als Provider nutzt, kannst du mit Nutzern anderer Provider kommunizieren, indem du ihnen deine vollständige Jabber-ID gibst.</string>
+ <string name="magic_create_text">Wir führen dich durch den Prozess der Kontoerstellung auf conversations.im.\nWenn du conversations.im als Anbieter wählst, kannst du mit Nutzern anderer Anbieter kommunizieren, indem du ihnen deine vollständige Jabber-ID gibst.</string>
<string name="your_full_jid_will_be">Deine vollständige Jabber ID lautet: %s</string>
<string name="create_account">Konto erstellen</string>
<string name="use_own_provider">Nutze eigenen Provider</string>
@@ -606,6 +605,6 @@
<string name="presence_xa">Nicht verfügbar</string>
<string name="presence_dnd">Beschäftigt</string>
<string name="secure_password_generated">Ein sicheres Passwort wurde erstellt</string>
- <string name="device_does_not_support_battery_op">Dein Gerät unterstützt keine Batterieoptimierungen</string>
+ <string name="device_does_not_support_battery_op">Dein Gerät unterstützt kein Ausschalten der Batterieoptimierung</string>
<string name="show_password">Passwort anzeigen</string>
</resources>
diff --git a/src/main/res/values-el/strings.xml b/src/main/res/values-el/strings.xml
index da1872d1..ad22c451 100644
--- a/src/main/res/values-el/strings.xml
+++ b/src/main/res/values-el/strings.xml
@@ -321,7 +321,6 @@
<string name="conference_with">Δημιουργία συνδιάσκεψης με...</string>
<string name="no_conference_server_found">Δεν βρέθηκε διακομιστής συνδιάσκεψης</string>
<string name="conference_creation_failed">Η δημιουργία συνδιάσκεψης απέτυχε!</string>
- <string name="conference_created">Η συνδιάσκεψη δημιουργήθηκε!</string>
<string name="secret_accepted">Το μυστικό έγινε δεκτό!</string>
<string name="reset">Επαναφορά</string>
<string name="account_image_description">Εικόνα προφίλ λογαριασμού</string>
diff --git a/src/main/res/values-es/strings.xml b/src/main/res/values-es/strings.xml
index 50c39fa3..7d0edaba 100644
--- a/src/main/res/values-es/strings.xml
+++ b/src/main/res/values-es/strings.xml
@@ -379,7 +379,6 @@
<string name="conference_with">Crear conversación en grupo</string>
<string name="no_conference_server_found">No se ha encontrado el servidor para crear la conversación</string>
<string name="conference_creation_failed">¡La creación de la conversación ha fallado!</string>
- <string name="conference_created">¡Conversación en grupo creada!</string>
<string name="secret_accepted">¡Secreto aceptado!</string>
<string name="reset">Reinicializar</string>
<string name="account_image_description">Imagen de perfil</string>
diff --git a/src/main/res/values-eu/strings.xml b/src/main/res/values-eu/strings.xml
index 447d0108..1e2ad86a 100644
--- a/src/main/res/values-eu/strings.xml
+++ b/src/main/res/values-eu/strings.xml
@@ -379,7 +379,6 @@
<string name="conference_with">Konferentzia sortu honekin…</string>
<string name="no_conference_server_found">Ez da konferentzia zerbitzaririk aurkitu</string>
<string name="conference_creation_failed">Konferentzia sortzeak huts egin du!</string>
- <string name="conference_created">Konferentzia sortu da!</string>
<string name="secret_accepted">Sekretua onartu da!</string>
<string name="reset">Berrezarri</string>
<string name="account_image_description">Kontuaren profileko argazkia</string>
diff --git a/src/main/res/values-fr/strings.xml b/src/main/res/values-fr/strings.xml
index 8cfc8d21..c9849b29 100644
--- a/src/main/res/values-fr/strings.xml
+++ b/src/main/res/values-fr/strings.xml
@@ -78,7 +78,7 @@
<string name="clear_histor_msg">Voulez-vous supprimer tous les messages de cette conversation ?\n\n<b>Attention :</b> Les messages seront supprimés uniquement sur cet appareil.</string>
<string name="delete_messages">Supprimer les messages</string>
<string name="also_end_conversation">Fermer cette conversation ensuite</string>
- <string name="choose_presence">Choisir le statut de présence</string>
+ <string name="choose_presence">Choisir la dispo. donnée au contact</string>
<string name="send_unencrypted_message">Envoyer un message non chiffré</string>
<string name="send_otr_message">Envoyer un message chiffré avec OTR</string>
<string name="send_omemo_message">Envoyer un message chiffré avec OMEMO</string>
@@ -105,7 +105,7 @@
<string name="pref_accept_files_summary">Accepter automatiquement les fichiers plus petits que…</string>
<string name="pref_attachments">Pièce jointe</string>
<string name="pref_return_to_previous">Partage rapide</string>
- <string name="pref_return_to_previous_summary">Ne pas ouvrir la conversation après avoir partagé quelque chose</string>
+ <string name="pref_return_to_previous_summary">Ne pas ouvrir la conversation après avoir partagé quelque chose depuis une autre application</string>
<string name="pref_notification_settings">Notification</string>
<string name="pref_notifications">Notifications</string>
<string name="pref_notifications_summary">Notifier lors de la réception d\'un message</string>
@@ -127,14 +127,14 @@
<string name="error_decrypting_file">Erreur d\'E/S lors du déchiffrement du fichier</string>
<string name="accept">Accepter</string>
<string name="error">Une erreur s\'est produite</string>
- <string name="pref_grant_presence_updates">Autoriser les màj de présence</string>
- <string name="pref_grant_presence_updates_summary">Autoriser et demander par avance les mises à jour de présence des contacts ajoutés.</string>
+ <string name="pref_grant_presence_updates">Autoriser les màj de disponibilité</string>
+ <string name="pref_grant_presence_updates_summary">Autoriser et demander par avance les mises à jour de disponibilité des contacts ajoutés.</string>
<string name="subscriptions">Publications</string>
<string name="your_account">Votre compte</string>
<string name="keys">Clefs</string>
- <string name="send_presence_updates">Envoyer mes màj de présence</string>
- <string name="receive_presence_updates">Recevoir ses màj de présence</string>
- <string name="ask_for_presence_updates">Demander les màj de présence</string>
+ <string name="send_presence_updates">Envoyer mes màj de disponibilité</string>
+ <string name="receive_presence_updates">Recevoir ses màj de disponibilité</string>
+ <string name="ask_for_presence_updates">Demander les màj de disponibilité</string>
<string name="attach_choose_picture">Choisir une image</string>
<string name="attach_take_picture">Prendre une photo</string>
<string name="preemptively_grant">Accepter par avance les demandes de publication.</string>
@@ -255,7 +255,7 @@
<string name="contact_has_read_up_to_this_point">%s a tout lu jusqu\'à ici</string>
<string name="publish">Publier</string>
<string name="touch_to_choose_picture">Toucher l\'avatar pour choisir une image depuis la galerie.</string>
- <string name="publish_avatar_explanation">Note : toutes les personnes ayant souscrit à vos mises jour de présence verront cette image.</string>
+ <string name="publish_avatar_explanation">Note : toutes les personnes ayant souscrit à vos mises jour de disponibilité verront cette image.</string>
<string name="publishing">Mise à jour…</string>
<string name="error_publish_avatar_server_reject">Le serveur a rejeté votre publication</string>
<string name="error_publish_avatar_converting">Une erreur s\'est produite pendant la conversion de votre image.</string>
@@ -276,13 +276,13 @@
<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>
- <string name="missing_presence_updates">Mises à jour de présence manquantes pour ce contact</string>
- <string name="request_presence_updates">Veuillez demander à votre contact de partager ses mises à jour de présence.\n\n<small>Elles seront utilisées pour déterminer son client.</small></string>
+ <string name="missing_presence_updates">Mises à jour de disponibilité manquantes pour ce contact</string>
+ <string name="request_presence_updates">Veuillez demander à votre contact de partager ses mises à jour de disponibilité.\n\n<small>Elles seront utilisées pour déterminer son client.</small></string>
<string name="request_now">Demander maintenant</string>
<string name="delete_fingerprint">Supprimer l\'empreinte</string>
<string name="sure_delete_fingerprint">Êtes-vous sûr de vouloir supprimer l\'empreinte ?</string>
<string name="ignore">Ignorer</string>
- <string name="without_mutual_presence_updates"><b>Attention :</b> peut poser problème si l\'un des deux correspondants n\'a pas activé les mises à jour de présence.\n\n<small>Vérifiez dans les détails du contact que vous y avez bien souscrit.</small></string>
+ <string name="without_mutual_presence_updates"><b>Attention :</b> peut poser problème si l\'un des deux correspondants n\'a pas activé les mises à jour de disponibilité.\n\n<small>Vérifiez dans les détails du contact que vous y avez bien souscrit.</small></string>
<string name="pref_security_settings">Sécurité</string>
<string name="pref_force_encryption">Forcer le chiffrement de bout en bout</string>
<string name="pref_force_encryption_summary">Toujours envoyer des messages chiffrés (sauf pour les conférences)</string>
@@ -379,7 +379,6 @@
<string name="conference_with">Créer une conférence avec…</string>
<string name="no_conference_server_found">Aucun serveur de conférence disponible</string>
<string name="conference_creation_failed">Échec de la création de la conférence !</string>
- <string name="conference_created">Conférence créée !</string>
<string name="secret_accepted">Secret accepté !</string>
<string name="reset">Réinitialiser</string>
<string name="account_image_description">Avatar du compte</string>
@@ -415,6 +414,7 @@
<string name="disable_all_accounts">Désactiver tous les comptes</string>
<string name="perform_action_with">Faire une action avec</string>
<string name="no_affiliation">Aucune affiliation</string>
+ <string name="no_role">Hors ligne</string>
<string name="outcast">Banni</string>
<string name="member">Membre</string>
<string name="advanced_mode">Mode expert</string>
@@ -509,8 +509,9 @@
<string name="pref_use_white_background_summary">Afficher les messages reçus en texte noir sur fond blanc.</string>
<string name="account_status_tor_unavailable">Réseau Tor inaccessible</string>
<string name="account_status_bind_failure">La liaison a échoué</string>
+ <string name="account_status_host_unknown">Hôte inconnu</string>
<string name="server_info_broken">Détraqué</string>
- <string name="pref_presence_settings">Présence</string>
+ <string name="pref_presence_settings">Disponibilité</string>
<string name="pref_away_when_screen_off">Absent quand l\'écran est éteint</string>
<string name="pref_away_when_screen_off_summary">Marquer cette ressource comme absente quand l\'écran est éteint.</string>
<string name="pref_xa_on_silent_mode">Indisponible en mode silencieux</string>
@@ -586,17 +587,17 @@
<string name="this_account_is_disabled">Vous avez désactivé ce compte</string>
<string name="security_error_invalid_file_access">Erreur de sécurité : accès fichier non-valide</string>
<string name="no_application_to_share_uri">Aucune application trouvée pour partager l\'URI</string>
- <string name="share_uri_with">Partagée l\'URI avec...</string>
+ <string name="share_uri_with">Partager l\'URI avec...</string>
<string name="welcome_text">XMPP est un protocole indépendant. Vous pouvez utiliser ce client avec le serveur XMPP de votre choix.\nCependant, pour votre confort, vous pouvez créer un compte sur conversations.im, un fournisseur spécialement approprié pour Conversations.</string>
- <string name="magic_create_text">Nous vous guiderons pendant toute la procédure de création d\'un compte utilisateur sur conversations.im.\nEn choisissant conversations.im comme fournisseur, vous pourrez communiquer avec les utilisateurs d\'autres fournisseurs en leurs transmettant votre Jabber ID complet. </string>
- <string name="your_full_jid_will_be">Votre Jabber ID complet sera: %s</string>
+ <string name="magic_create_text">Nous vous guiderons pendant toute la procédure de création d\'un compte utilisateur sur conversations.im.\nEn choisissant conversations.im comme fournisseur, vous pourrez communiquer avec les utilisateurs d\'autres fournisseurs en leur transmettant votre Jabber ID complet. </string>
+ <string name="your_full_jid_will_be">Votre Jabber ID complet sera : %s</string>
<string name="create_account">Créer un compte</string>
<string name="use_own_provider">Utiliser votre propre fournisseur</string>
<string name="pick_your_username">Choisissez votre nom d\'utilisateur</string>
<string name="pref_manually_change_presence">Changer votre disponibilité</string>
- <string name="pref_manually_change_presence_summary">Cliquez sur votre avatar pour modifier votre présence</string>
+ <string name="pref_manually_change_presence_summary">Cliquez sur votre avatar pour modifier votre disponibilité</string>
<string name="change_presence">Changer votre disponibilité</string>
- <string name="status_message">Message de status</string>
+ <string name="status_message">Message de statut</string>
<string name="all_accounts_on_this_device">Configurer pour tous les comptes sur cet appareil</string>
<string name="presence_chat">Disponible</string>
<string name="presence_online">En ligne</string>
@@ -604,4 +605,6 @@
<string name="presence_xa">Non disponible</string>
<string name="presence_dnd">Occupé</string>
<string name="secure_password_generated">Un mot de passe fort a été généré</string>
+ <string name="device_does_not_support_battery_op">Les optimisations de batterie ne peuvent pas être désactivées sur votre appareil</string>
+ <string name="show_password">Afficher le mot de passe</string>
</resources>
diff --git a/src/main/res/values-id/strings.xml b/src/main/res/values-id/strings.xml
index 8a76210d..218f4dc2 100644
--- a/src/main/res/values-id/strings.xml
+++ b/src/main/res/values-id/strings.xml
@@ -333,7 +333,6 @@
<string name="conference_with">Buat conference dengan...</string>
<string name="no_conference_server_found">Tidak ada server conference ditemukan</string>
<string name="conference_creation_failed">Pembuatan conference gagal!</string>
- <string name="conference_created">Conference dibuat!</string>
<string name="secret_accepted">Rahasia disetujui!</string>
<string name="reset">Ulang</string>
<string name="account_image_description">Avatar akun</string>
diff --git a/src/main/res/values-it/strings.xml b/src/main/res/values-it/strings.xml
index 38ecd281..b77da3aa 100644
--- a/src/main/res/values-it/strings.xml
+++ b/src/main/res/values-it/strings.xml
@@ -365,7 +365,6 @@
<string name="conference_with">Crea conferenza con…</string>
<string name="no_conference_server_found">Nessun server per conferenza trovato</string>
<string name="conference_creation_failed">Creazione della conferenza fallita!</string>
- <string name="conference_created">Conferenza creata!</string>
<string name="secret_accepted">Segreto accettato!</string>
<string name="reset">Reset</string>
<string name="account_image_description">Avatar utente</string>
diff --git a/src/main/res/values-iw/strings.xml b/src/main/res/values-iw/strings.xml
index b4b6f6c5..a3eca4e6 100644
--- a/src/main/res/values-iw/strings.xml
+++ b/src/main/res/values-iw/strings.xml
@@ -341,7 +341,6 @@
<string name="conference_with">צור ועידה עם...</string>
<string name="no_conference_server_found">לא נמצא שרת ועידות</string>
<string name="conference_creation_failed">יצירת הועידה נכשלה!</string>
- <string name="conference_created">הועידה נוצרה!</string>
<string name="secret_accepted">הסוד התקבל!</string>
<string name="reset">איפוס</string>
<string name="account_image_description">תמונת פרופיל</string>
diff --git a/src/main/res/values-ja/strings.xml b/src/main/res/values-ja/strings.xml
index 73400f89..0a9cd280 100644
--- a/src/main/res/values-ja/strings.xml
+++ b/src/main/res/values-ja/strings.xml
@@ -379,7 +379,6 @@
<string name="conference_with">…と会議を作成</string>
<string name="no_conference_server_found">会議サーバーが見つかりません</string>
<string name="conference_creation_failed">会議の作成に失敗しました!</string>
- <string name="conference_created">会議を作成しました!</string>
<string name="secret_accepted">秘密を受取ました!</string>
<string name="reset">リセット</string>
<string name="account_image_description">アカウント アバター</string>
diff --git a/src/main/res/values-ko/strings.xml b/src/main/res/values-ko/strings.xml
index 5025fcda..f675059f 100644
--- a/src/main/res/values-ko/strings.xml
+++ b/src/main/res/values-ko/strings.xml
@@ -352,7 +352,6 @@
<string name="conference_with">회의 생성 </string>
<string name="no_conference_server_found">회의 서버가 발견되지 않았습니다 </string>
<string name="conference_creation_failed">회의 생성 실패 </string>
- <string name="conference_created">회의 생성됨 </string>
<string name="secret_accepted">비밀 접수됨 </string>
<string name="reset">초기화 </string>
<string name="account_image_description">계정 아바타 </string>
diff --git a/src/main/res/values-nb-rNO/strings.xml b/src/main/res/values-nb-rNO/strings.xml
index 2753d0ce..0eefc052 100644
--- a/src/main/res/values-nb-rNO/strings.xml
+++ b/src/main/res/values-nb-rNO/strings.xml
@@ -352,7 +352,6 @@
<string name="conference_with">Opprett konferanse med…</string>
<string name="no_conference_server_found">Ingen konferanse-tjener funnet</string>
<string name="conference_creation_failed">Opprettelse av konferanse feilet!</string>
- <string name="conference_created">Konferanse opprettet!</string>
<string name="secret_accepted">Hemmelighet godtatt!</string>
<string name="reset">Tilbakestill</string>
<string name="account_image_description">Konto-avatar</string>
diff --git a/src/main/res/values-nl/strings.xml b/src/main/res/values-nl/strings.xml
index 8c0b2eff..a55ab129 100644
--- a/src/main/res/values-nl/strings.xml
+++ b/src/main/res/values-nl/strings.xml
@@ -379,7 +379,6 @@
<string name="conference_with">Groepsgesprek aanmaken met…</string>
<string name="no_conference_server_found">Geen groepsgespreksserver gevonden</string>
<string name="conference_creation_failed">Aanmaken van groepsgesprek mislukt!</string>
- <string name="conference_created">Groepsgesprek aangemaakt!</string>
<string name="secret_accepted">Geheim aanvaard!</string>
<string name="reset">Opnieuw instellen</string>
<string name="account_image_description">Account-avatar</string>
@@ -415,6 +414,7 @@
<string name="disable_all_accounts">Alle accounts uitschakelen</string>
<string name="perform_action_with">Actie uitvoeren met</string>
<string name="no_affiliation">Geen aansluiting</string>
+ <string name="no_role">Offline</string>
<string name="outcast">Verstoteling</string>
<string name="member">Lid</string>
<string name="advanced_mode">Geavanceerde modus</string>
@@ -509,6 +509,7 @@
<string name="pref_use_white_background_summary">Toon ontvangen berichten als zwarte tekst op een witte achtergrond</string>
<string name="account_status_tor_unavailable">Tor-netwerk niet beschikbaar</string>
<string name="account_status_bind_failure">Bindingsfout</string>
+ <string name="account_status_host_unknown">Onbekende host</string>
<string name="server_info_broken">Gebroken</string>
<string name="pref_presence_settings">Aanwezigheid</string>
<string name="pref_away_when_screen_off">Even weg wanneer scherm uit staat</string>
@@ -605,4 +606,5 @@
<string name="presence_dnd">Bezig</string>
<string name="secure_password_generated">Een veilig wachtwoord is aangemaakt</string>
<string name="device_does_not_support_battery_op">Je apparaat ondersteunt het uitschakelen van batterij-optimalisatie niet</string>
+ <string name="show_password">Wachtwoord weergeven</string>
</resources>
diff --git a/src/main/res/values-pl/strings.xml b/src/main/res/values-pl/strings.xml
index 22114b9d..dbabd34a 100644
--- a/src/main/res/values-pl/strings.xml
+++ b/src/main/res/values-pl/strings.xml
@@ -71,6 +71,8 @@
<string name="send_failed">wysyłanie nie powiodło się</string>
<string name="send_rejected">odrzucono</string>
<string name="preparing_image">Przygotowywanie obrazu do wysłania</string>
+ <string name="preparing_images">Przygotowywanie obrazów do wysłania</string>
+ <string name="sharing_files_please_wait">Udostępnianie plików. Proszę czekać...</string>
<string name="action_clear_history">Wyczyść historię</string>
<string name="clear_conversation_history">Wyczyść historię konwersacji</string>
<string name="clear_histor_msg">Czy na pewno usunąć wszystkie wiadomości powiązane z konwersacją?\n\n<b>Uwaga:</b> Działanie nie wpływa na wiadomości przechowywane na innych urządzeniach lub serwerach.</string>
@@ -101,10 +103,18 @@
<string name="pref_xmpp_resource_summary">Nazwa identyfikująca urządzenie</string>
<string name="pref_accept_files">Akceptuj pliki</string>
<string name="pref_accept_files_summary">Automatycznie akceptuj pliki mniejsze niż...</string>
+ <string name="pref_attachments">Załączniki</string>
+ <string name="pref_return_to_previous">Szybkie Udostępnianie</string>
+ <string name="pref_return_to_previous_summary">Po udostępnieniu obiektu natychmiastowo powróć do poprzedniej aktywności zamiast otwierać konwersację</string>
<string name="pref_notification_settings">Powiadomienie</string>
<string name="pref_notifications">Powiadomienia</string>
<string name="pref_notifications_summary">Powiadamiaj, gdy nadejdzie wiadomość</string>
<string name="pref_vibrate">Wibracje</string>
+ <string name="pref_vibrate_summary">Wibruj gdy nadejdzie wiadomość</string>
+ <string name="pref_led">Powiadomienie diodą LED</string>
+ <string name="pref_led_summary">Migaj lampką powiadamiającą gdy nadejdzie wiadomość</string>
+ <string name="pref_sound">Dzwonek</string>
+ <string name="pref_sound_summary">Odtwórz dźwięk gdy nadejdzie wiadomość</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">Zaawansowane</string>
@@ -156,6 +166,7 @@
<string name="mgmt_account_disable">Wyłącz tymczasowo</string>
<string name="mgmt_account_publish_avatar">Publikuj awatar</string>
<string name="mgmt_account_publish_pgp">Udostępnij klucz publiczny OpenPGP</string>
+ <string name="openpgp_has_been_published">Klucz publiczny OpenPGP został opublikowany.</string>
<string name="mgmt_account_enable">Włącz konto</string>
<string name="mgmt_account_are_you_sure">Czy na pewno?</string>
<string name="mgmt_account_delete_confirm_text">Wraz z kontem zostanie nieodwracalnie usunięta powiązana historia konwersacji.</string>
@@ -309,6 +320,7 @@
<string name="checking_x">Sprawdzanie %s na hoście HTTP</string>
<string name="not_connected_try_again">Brak połączenia. Spróbuj ponownie później</string>
<string name="check_x_filesize">Sprawdź rozmiar %s</string>
+ <string name="check_x_filesize_on_host">Sprawdź wielkość %1$s na %2$s</string>
<string name="message_options">Opcje wiadomości</string>
<string name="copy_text">Skopiuj tekst</string>
<string name="copy_original_url">Skopiuj oryginalny URL</string>
@@ -347,6 +359,7 @@
<string name="choose_file">Wybierz plik</string>
<string name="receiving_x_file">Odbieranie %1$s (ukończono %2$d%%)</string>
<string name="download_x_file">Pobierz %s</string>
+ <string name="delete_x_file">Usuń %s</string>
<string name="file">plik</string>
<string name="open_x_file">Otwórz %s</string>
<string name="sending_file">Wysyłanie (ukończono %1$d%%)</string>
@@ -365,7 +378,6 @@
<string name="conference_with">Utwórz konferencję...</string>
<string name="no_conference_server_found">Nie odnaleziono serwera konferencji</string>
<string name="conference_creation_failed">Nie udało się utworzyć konferencji!</string>
- <string name="conference_created">Konferencja została utworzona!</string>
<string name="secret_accepted">Sekret został zaakceptowany!</string>
<string name="reset">Resetuj</string>
<string name="account_image_description">Awatar konta</string>
@@ -429,6 +441,7 @@
<string name="two_hours">2 godziny</string>
<string name="eight_hours">8 godzin</string>
<string name="until_further_notice">Ręcznie</string>
+ <string name="pref_input_options">Ustawienia wprowadzania</string>
<string name="pref_enter_is_send">Enter wysyła</string>
<string name="pref_enter_is_send_summary">Używaj klawisza Enter do wysyłania wiadomości</string>
<string name="pref_display_enter_key">Pokaż klawisz Enter</string>
@@ -495,12 +508,16 @@
<string name="pref_use_white_background">Białe tło</string>
<string name="pref_use_white_background_summary">Pokazuj otrzymane wiadomości jako czarny tekst na białym tle</string>
<string name="account_status_tor_unavailable">Sieć TOR jest niedostepna</string>
+ <string name="account_status_bind_failure">Błąd połączenia (zasób)</string>
+ <string name="account_status_host_unknown">Nieznana nazwa hosta</string>
<string name="server_info_broken">Zepsute</string>
<string name="pref_presence_settings">Obecność</string>
<string name="pref_away_when_screen_off">Status \"Oddalony\" gdy wyświetlacz jest wyłączony</string>
<string name="pref_away_when_screen_off_summary">Oznacza Twój zasób jako \"Oddalony\", gdy wyświetlacz jest wyłączony</string>
<string name="pref_xa_on_silent_mode">Niedostepne w trybie cichym</string>
<string name="pref_xa_on_silent_mode_summary">Oznacza Twój zasób jako \"Nieobecny\" gdy urządzenie jest w trybie cichym</string>
+ <string name="pref_treat_vibrate_as_silent">Traktuj tryb wibracji jak tryb cichy</string>
+ <string name="pref_treat_vibrate_as_silent_summary">Oznacza twój zasób jako niedostępny kiedy urządzenie jest w trybie wibracji</string>
<string name="pref_show_connection_options">Rozszerzone ustawienia połączenia</string>
<string name="pref_show_connection_options_summary">Pokaż nazwę hosta i ustawienia portu przy dodawaniu konta</string>
<string name="hostname_example">xmpp.examle.com</string>
@@ -512,6 +529,7 @@
<string name="fetching_mam_prefs">Pobieranie preferencji archiwizacji. Proszę czekać...</string>
<string name="unable_to_fetch_mam_prefs">Nie można pobrać preferencji archiwizacji</string>
<string name="captcha_required">Captcha wymagana</string>
+ <string name="captcha_hint">Wprowadź tekst z powyższego obrazka</string>
<string name="certificate_chain_is_not_trusted">Łańcuch certyfikatu nie jest zaufany</string>
<string name="jid_does_not_match_certificate">Jabber ID nie odpowiada certyfikatowi</string>
<string name="action_renew_certificate">Odnów certyfikat</string>
@@ -535,6 +553,8 @@
<string name="load_more_messages">Załaduj wiecej wiadomości</string>
<string name="shared_file_with_x">Dzielony plik z %s</string>
<string name="shared_image_with_x">Dzielony obraz z %s</string>
+ <string name="shared_images_with_x">Obraz udostępniony %s</string>
+ <string name="shared_text_with_x">Tekst udostępniony %s</string>
<string name="no_storage_permission">Conversations potrzebuje dostęp do zewnętrznego magazynu</string>
<string name="sync_with_contacts">Synchronizuj z kontaktami</string>
<string name="sync_with_contacts_long">Conversations chce dopasować Twoje kontakty XMPP z listą kontaktów w telefonie, by uzupełnić ich pełne imiona oraz awatary.\nConversations jedynie przeczyta Twoje kontakty i dopasuje je lokalnie, bez wysyłania na Twój serwer.\n\nZostaniesz teraz poproszony o przydzielenie pozwolenia na odczyt Twoich kontaktów.</string>
@@ -563,4 +583,29 @@
<string name="this_field_is_required">To pole jest wymagane</string>
<string name="correct_message">Popraw wiadomość</string>
<string name="send_corrected_message">Wyślij poprawioną wiadomość</string>
+ <string name="no_keys_just_confirm">Ten kontakt jest już zaufany. Wybierając \'ukończono\' potwierdzasz jedynie że %s jest częścią tej konferencji.</string>
+ <string name="select_image_and_crop">Wybierz i przytnij obraz</string>
+ <string name="this_account_is_disabled">Wyłączyłeś to konto</string>
+ <string name="security_error_invalid_file_access">Błąd bezpieczeństwa: nieprawidłowy dostęp do pliku</string>
+ <string name="no_application_to_share_uri">Nie odnaleziono aplikacji skojarzonej z URI</string>
+ <string name="share_uri_with">Udostępnij URI za pomocą...</string>
+ <string name="welcome_text">XMPP jest protokołem niezależnym od dostawcy usług. Możesz używać tego klienta z dowolnym serwerem XMPP.\nJednak dla Twojej wygody ułatwiliśmy Ci stworzenie konta na conversations.im, serwerze specjalnie przystosowanym do używania z Conversations.</string>
+ <string name="magic_create_text">Przeprowadzimy Cię przez proces tworzenia konta na conversations.im.\nKiedy wybierzesz konto na serwerze conversations.im, będziesz mógł komunikować się z użytkownikami na innych serwerach podając im swój pełen Jabber ID.</string>
+ <string name="your_full_jid_will_be">Twój pełen Jabber ID będzie następujący: %s</string>
+ <string name="create_account">Utwórz Konto</string>
+ <string name="use_own_provider">Użyj innego serwera</string>
+ <string name="pick_your_username">Wybierz nazwę użytkownika</string>
+ <string name="pref_manually_change_presence">Zmień dostępność ręcznie</string>
+ <string name="pref_manually_change_presence_summary">Dotknij swojego avatara aby zmienić dostępność</string>
+ <string name="change_presence">Zmień dostępność</string>
+ <string name="status_message">Status</string>
+ <string name="all_accounts_on_this_device">Ustaw na wszystkich kontach na tym urządzeniu</string>
+ <string name="presence_chat">Chętny do rozmowy</string>
+ <string name="presence_online">Dostępny</string>
+ <string name="presence_away">Zaraz Wracam</string>
+ <string name="presence_xa">Niedostępny</string>
+ <string name="presence_dnd">Zajęty</string>
+ <string name="secure_password_generated">Zostało wygenerowane bezpieczne hasło</string>
+ <string name="device_does_not_support_battery_op">Twoje urządzenie nie pozwala na wyłączenie optymalizacji baterii</string>
+ <string name="show_password">Pokaż hasło</string>
</resources>
diff --git a/src/main/res/values-pt-rBR/strings.xml b/src/main/res/values-pt-rBR/strings.xml
index 91751693..4fe169c0 100644
--- a/src/main/res/values-pt-rBR/strings.xml
+++ b/src/main/res/values-pt-rBR/strings.xml
@@ -379,7 +379,6 @@
<string name="conference_with">Criar conferência com...</string>
<string name="no_conference_server_found">Não foi encontrado nenhum servidor de conferências</string>
<string name="conference_creation_failed">Não foi possível criar a conferência!</string>
- <string name="conference_created">A conferência foi criada!</string>
<string name="secret_accepted">O segredo foi aceito!</string>
<string name="reset">Redefinir</string>
<string name="account_image_description">Avatar da conta</string>
diff --git a/src/main/res/values-pt/strings.xml b/src/main/res/values-pt/strings.xml
index 86107fce..223d6ae7 100644
--- a/src/main/res/values-pt/strings.xml
+++ b/src/main/res/values-pt/strings.xml
@@ -377,7 +377,6 @@
<string name="conference_with">Criar conferência com...</string>
<string name="no_conference_server_found">Não foi encontrado nenhum servidor de conferências</string>
<string name="conference_creation_failed">Criação de conferência falhou!</string>
- <string name="conference_created">Conferência criada!</string>
<string name="secret_accepted">Segredo aceite!</string>
<string name="reset">Restaurar</string>
<string name="account_image_description">Avatar da conta</string>
diff --git a/src/main/res/values-ro-rRO/strings.xml b/src/main/res/values-ro-rRO/strings.xml
index 448fc13e..c3758493 100644
--- a/src/main/res/values-ro-rRO/strings.xml
+++ b/src/main/res/values-ro-rRO/strings.xml
@@ -379,7 +379,6 @@
<string name="conference_with">Creeaza conferinta cu...</string>
<string name="no_conference_server_found">Serverul conferintei nu a fost gasita</string>
<string name="conference_creation_failed">Conferinta nu a putut fi creata!</string>
- <string name="conference_created">Conferinta a fost creata!</string>
<string name="secret_accepted">Secret acceptat!</string>
<string name="reset">Reseteaza</string>
<string name="account_image_description">Avatar cont</string>
@@ -415,6 +414,7 @@
<string name="disable_all_accounts">Dezactiveaza toate conturile</string>
<string name="perform_action_with">Efectuaza actiune cu</string>
<string name="no_affiliation">Fara afiliere</string>
+ <string name="no_role">Deconectat</string>
<string name="outcast">proscris</string>
<string name="member">Membru</string>
<string name="advanced_mode">Mod avansat</string>
@@ -511,6 +511,7 @@
<string name="pref_use_white_background_summary">Arata mesajele primite cu negru pe fond alb</string>
<string name="account_status_tor_unavailable">Reteaua Tor nu este disponibila</string>
<string name="account_status_bind_failure">Eroare de conexiune</string>
+ <string name="account_status_host_unknown">Gazda necunoscuta</string>
<string name="server_info_broken">Deteriorat</string>
<string name="pref_presence_settings">Setari de prezenta</string>
<string name="pref_away_when_screen_off">Plecat cand ecranul este oprit</string>
@@ -609,4 +610,5 @@ Emitent</string>
<string name="presence_dnd">Ocupat</string>
<string name="secure_password_generated">O parola sigura a fost generata</string>
<string name="device_does_not_support_battery_op">Dispozitivul dumneavoastra nu suporta dezactivarea optimizarii de baterie pentru aceasta aplicatie</string>
+ <string name="show_password">Arata parola</string>
</resources>
diff --git a/src/main/res/values-ru/strings.xml b/src/main/res/values-ru/strings.xml
index ffe47976..7c7889f5 100644
--- a/src/main/res/values-ru/strings.xml
+++ b/src/main/res/values-ru/strings.xml
@@ -362,7 +362,6 @@
<string name="conference_with">Создать конференцию с...</string>
<string name="no_conference_server_found">Сервер конференции не был найден</string>
<string name="conference_creation_failed">Не удалось создать конференцию!</string>
- <string name="conference_created">Конференция создана!</string>
<string name="secret_accepted">Секретный ключ принят!</string>
<string name="reset">Сброс</string>
<string name="account_image_description">Изображение учётной записи</string>
diff --git a/src/main/res/values-sk/strings.xml b/src/main/res/values-sk/strings.xml
index f2c3f1ca..2bea5a90 100644
--- a/src/main/res/values-sk/strings.xml
+++ b/src/main/res/values-sk/strings.xml
@@ -337,7 +337,6 @@
<string name="conference_with">Vytvoriť skupinovú konverzáciu s…</string>
<string name="no_conference_server_found">Nenašiel sa server na skupinovú konverzáciu</string>
<string name="conference_creation_failed">Vytvorenie skupinovej konverzácie zlyhalo!</string>
- <string name="conference_created">Skupinová konverzácia vytvorená!</string>
<string name="secret_accepted">Tajomstvo prijaté!</string>
<string name="reset">Vymazať</string>
<string name="account_image_description">Avatar účtu</string>
diff --git a/src/main/res/values-sr/strings.xml b/src/main/res/values-sr/strings.xml
index b8210083..5ad978eb 100644
--- a/src/main/res/values-sr/strings.xml
+++ b/src/main/res/values-sr/strings.xml
@@ -379,7 +379,6 @@
<string name="conference_with">Направи групно ћаскање са…</string>
<string name="no_conference_server_found">Сервер групног ћаскања није нађен</string>
<string name="conference_creation_failed">Прављење групног ћаскања није успело!</string>
- <string name="conference_created">Групно ћаскање направљено!</string>
<string name="secret_accepted">Тајна прихваћена!</string>
<string name="reset">Ресетуј</string>
<string name="account_image_description">Аватар налога</string>
diff --git a/src/main/res/values-sv/strings.xml b/src/main/res/values-sv/strings.xml
index ab19da92..0688d97b 100644
--- a/src/main/res/values-sv/strings.xml
+++ b/src/main/res/values-sv/strings.xml
@@ -379,7 +379,6 @@
<string name="conference_with">Skapa konferens med…</string>
<string name="no_conference_server_found">Ingen konferensserver hittad</string>
<string name="conference_creation_failed">Kunde inte skapa konferens</string>
- <string name="conference_created">Konferens skapad!</string>
<string name="secret_accepted">Hemlighet accepterad!</string>
<string name="reset">Återställ</string>
<string name="account_image_description">Kontots avatarbild</string>
@@ -415,6 +414,7 @@
<string name="disable_all_accounts">Deaktivera alla konton</string>
<string name="perform_action_with">Utför åtgärden med</string>
<string name="no_affiliation">Ingen anknytning</string>
+ <string name="no_role">Offline</string>
<string name="outcast">Utstött</string>
<string name="member">Medlem</string>
<string name="advanced_mode">Avancerat läge</string>
@@ -509,6 +509,7 @@
<string name="pref_use_white_background_summary">Visa mottagna meddelanden som svart text på vit bakgrund</string>
<string name="account_status_tor_unavailable">Tor-nätverk ej tillgängligt</string>
<string name="account_status_bind_failure">Bind-fel</string>
+ <string name="account_status_host_unknown">Server okänd</string>
<string name="server_info_broken">Sönder</string>
<string name="pref_presence_settings">Tillgänglighet</string>
<string name="pref_away_when_screen_off">Status borta när skärmen är av</string>
@@ -605,4 +606,5 @@
<string name="presence_dnd">Upptagen</string>
<string name="secure_password_generated">Ett säkert lösenord har genererats</string>
<string name="device_does_not_support_battery_op">Din enhet stödjer inte deaktivering av batterioptimeringar</string>
+ <string name="show_password">Visa lösenord</string>
</resources>
diff --git a/src/main/res/values-tr-rTR/strings.xml b/src/main/res/values-tr-rTR/strings.xml
index 848934ee..a2634ca6 100644
--- a/src/main/res/values-tr-rTR/strings.xml
+++ b/src/main/res/values-tr-rTR/strings.xml
@@ -376,7 +376,6 @@
<string name="conference_with">… ile grup sohbet başlat</string>
<string name="no_conference_server_found">Bir grup sohbet sunucusu bulunamadı</string>
<string name="conference_creation_failed">Grup sohbet başlatılamadı!</string>
- <string name="conference_created">Grup sohbet başladıldı!</string>
<string name="secret_accepted">Gizli bilgi kabul edildi!</string>
<string name="reset">Sıfırla</string>
<string name="account_image_description">Hesap avatarı</string>
diff --git a/src/main/res/values-vi/strings.xml b/src/main/res/values-vi/strings.xml
index eb1d91ea..73c952e9 100644
--- a/src/main/res/values-vi/strings.xml
+++ b/src/main/res/values-vi/strings.xml
@@ -352,7 +352,6 @@
<string name="conference_with">Tạo diễn đàn với...</string>
<string name="no_conference_server_found">Không tìm thấy máy chủ diễn đàn nào</string>
<string name="conference_creation_failed">Tạo diễn đàn thất bại!</string>
- <string name="conference_created">Đã tạo diễn đàn!</string>
<string name="secret_accepted">Đã chấp thuận bí mật!</string>
<string name="reset">Cài lại</string>
<string name="account_image_description">Ảnh đại diện tài khoản</string>
diff --git a/src/main/res/values-zh-rCN/strings.xml b/src/main/res/values-zh-rCN/strings.xml
index afc03e22..df61bd1c 100644
--- a/src/main/res/values-zh-rCN/strings.xml
+++ b/src/main/res/values-zh-rCN/strings.xml
@@ -377,7 +377,6 @@
<string name="conference_with">与…创建讨论组</string>
<string name="no_conference_server_found">无法找到讨论组服务器</string>
<string name="conference_creation_failed">讨论组创建失败!</string>
- <string name="conference_created">讨论组已创建!</string>
<string name="secret_accepted">秘密被接受!</string>
<string name="reset">重置</string>
<string name="account_image_description">账户头像</string>
diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml
index 8a1dc1b3..0739d0eb 100644
--- a/src/main/res/values/strings.xml
+++ b/src/main/res/values/strings.xml
@@ -412,8 +412,7 @@
<string name="enable_notifications">Enable notifications</string>
<string name="conference_with">Create conference with…</string>
<string name="no_conference_server_found">No conference server found</string>
- <string name="conference_creation_failed">Conference creation failed!</string>
- <string name="conference_created">Conference created!</string>
+ <string name="conference_creation_failed">Conference creation failed!</string>s
<string name="secret_accepted">Secret accepted!</string>
<string name="reset">Reset</string>
<string name="account_image_description">Account avatar</string>
@@ -644,4 +643,9 @@
<string name="device_does_not_support_battery_op">Your device does not support opting out of battery optimization</string>
<string name="show_password">Show password</string>
<string name="registration_please_wait">Registration failed: Try again later</string>
+ <string name="create_conference">Create conference</string>
+ <string name="join_or_create_conference">Join or create conference</string>
+ <string name="conference_subject">Subject</string>
+ <string name="choose_participants">Choose participants</string>
+ <string name="creating_conference">Creating conference…</string>
</resources>