aboutsummaryrefslogtreecommitdiffstats
path: root/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'src/main')
-rw-r--r--src/main/.project33
-rw-r--r--src/main/java/de/tzur/conversations/Settings.java94
-rw-r--r--src/main/java/eu/siacs/conversations/Config.java2
-rw-r--r--src/main/java/eu/siacs/conversations/crypto/PgpEngine.java6
-rw-r--r--src/main/java/eu/siacs/conversations/entities/Bookmark.java7
-rw-r--r--src/main/java/eu/siacs/conversations/entities/Contact.java6
-rw-r--r--src/main/java/eu/siacs/conversations/entities/ListItem.java2
-rw-r--r--src/main/java/eu/siacs/conversations/entities/Message.java4
-rw-r--r--src/main/java/eu/siacs/conversations/generator/AbstractGenerator.java3
-rw-r--r--src/main/java/eu/siacs/conversations/parser/AbstractParser.java48
-rw-r--r--src/main/java/eu/siacs/conversations/parser/MessageParser.java3
-rw-r--r--src/main/java/eu/siacs/conversations/services/NotificationService.java3
-rw-r--r--src/main/java/eu/siacs/conversations/services/XmppConnectionService.java26
-rw-r--r--src/main/java/eu/siacs/conversations/ui/ChangePasswordActivity.java9
-rw-r--r--src/main/java/eu/siacs/conversations/ui/ConversationActivity.java5
-rw-r--r--src/main/java/eu/siacs/conversations/ui/ConversationFragment.java143
-rw-r--r--src/main/java/eu/siacs/conversations/ui/EditMessage.java3
-rw-r--r--src/main/java/eu/siacs/conversations/ui/SettingsActivity.java58
-rw-r--r--src/main/java/eu/siacs/conversations/ui/XmppActivity.java4
-rw-r--r--src/main/java/eu/siacs/conversations/ui/adapter/ConversationAdapter.java47
-rw-r--r--src/main/java/eu/siacs/conversations/ui/adapter/ListItemAdapter.java6
-rw-r--r--src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java16
-rw-r--r--src/main/java/eu/siacs/conversations/utils/UIHelper.java156
-rw-r--r--src/main/java/eu/siacs/conversations/xmpp/jingle/JingleConnection.java4
-rw-r--r--src/main/project.properties14
-rw-r--r--src/main/res/drawable-hdpi/ic_action_keyboard.pngbin0 -> 359 bytes
-rw-r--r--src/main/res/drawable-hdpi/smiley.pngbin0 -> 1679 bytes
-rw-r--r--src/main/res/drawable-mdpi/ic_action_keyboard.pngbin0 -> 433 bytes
-rw-r--r--src/main/res/drawable-mdpi/smiley.pngbin0 -> 987 bytes
-rw-r--r--src/main/res/drawable-xhdpi/ic_action_keyboard.pngbin0 -> 492 bytes
-rw-r--r--src/main/res/drawable-xhdpi/smiley.pngbin0 -> 1898 bytes
-rw-r--r--src/main/res/drawable-xxhdpi/ic_action_keyboard.pngbin0 -> 472 bytes
-rw-r--r--src/main/res/drawable-xxhdpi/smiley.pngbin0 -> 3140 bytes
-rw-r--r--src/main/res/drawable/emo_im_angel.pngbin0 -> 3592 bytes
-rw-r--r--src/main/res/drawable/emo_im_cool.pngbin0 -> 3466 bytes
-rw-r--r--src/main/res/drawable/emo_im_crying.pngbin0 -> 3558 bytes
-rw-r--r--src/main/res/drawable/emo_im_embarrassed.pngbin0 -> 3619 bytes
-rw-r--r--src/main/res/drawable/emo_im_foot_in_mouth.pngbin0 -> 3603 bytes
-rw-r--r--src/main/res/drawable/emo_im_happy.pngbin0 -> 3591 bytes
-rw-r--r--src/main/res/drawable/emo_im_heart.pngbin0 -> 684 bytes
-rw-r--r--src/main/res/drawable/emo_im_kissing.pngbin0 -> 3492 bytes
-rw-r--r--src/main/res/drawable/emo_im_laughing.pngbin0 -> 3624 bytes
-rw-r--r--src/main/res/drawable/emo_im_lips_are_sealed.pngbin0 -> 3670 bytes
-rw-r--r--src/main/res/drawable/emo_im_money_mouth.pngbin0 -> 3649 bytes
-rw-r--r--src/main/res/drawable/emo_im_sad.pngbin0 -> 3572 bytes
-rw-r--r--src/main/res/drawable/emo_im_surprised.pngbin0 -> 3490 bytes
-rw-r--r--src/main/res/drawable/emo_im_tongue_sticking_out.pngbin0 -> 3653 bytes
-rw-r--r--src/main/res/drawable/emo_im_undecided.pngbin0 -> 3552 bytes
-rw-r--r--src/main/res/drawable/emo_im_winking.pngbin0 -> 3568 bytes
-rw-r--r--src/main/res/drawable/emo_im_wtf.pngbin0 -> 3591 bytes
-rw-r--r--src/main/res/drawable/emo_im_yelling.pngbin0 -> 3575 bytes
-rw-r--r--src/main/res/layout/contact.xml11
-rw-r--r--src/main/res/layout/conversation_list_row.xml35
-rw-r--r--src/main/res/layout/fragment_conversation.xml11
-rw-r--r--src/main/res/layout/message_received.xml9
-rw-r--r--src/main/res/layout/message_sent.xml9
-rw-r--r--src/main/res/values-ar-rEG/strings.xml2
-rw-r--r--src/main/res/values-bg/strings.xml2
-rw-r--r--src/main/res/values-ca/strings.xml2
-rw-r--r--src/main/res/values-cs/strings.xml2
-rw-r--r--src/main/res/values-de/strings.xml525
-rw-r--r--src/main/res/values-el/strings.xml2
-rw-r--r--src/main/res/values-es/strings.xml2
-rw-r--r--src/main/res/values-eu/strings.xml2
-rw-r--r--src/main/res/values-fr/strings.xml2
-rw-r--r--src/main/res/values-gl/strings.xml2
-rw-r--r--src/main/res/values-it/strings.xml2
-rw-r--r--src/main/res/values-iw/strings.xml2
-rw-r--r--src/main/res/values-nl/strings.xml2
-rw-r--r--src/main/res/values-ru/strings.xml2
-rw-r--r--src/main/res/values-sk/strings.xml2
-rw-r--r--src/main/res/values-sv/strings.xml2
-rw-r--r--src/main/res/values-zh-rCN/strings.xml2
-rw-r--r--src/main/res/values-zh-rTW/strings.xml2
-rw-r--r--src/main/res/values/arrays.xml13
-rw-r--r--src/main/res/values/attrs.xml5
-rw-r--r--src/main/res/values/dimens.xml4
-rw-r--r--src/main/res/values/strings.xml782
-rw-r--r--src/main/res/xml/preferences.xml144
79 files changed, 1493 insertions, 791 deletions
diff --git a/src/main/.project b/src/main/.project
new file mode 100644
index 00000000..d2f05ef9
--- /dev/null
+++ b/src/main/.project
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>ConversationActivity</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>com.android.ide.eclipse.adt.PreCompilerBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>com.android.ide.eclipse.adt.ApkBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>com.android.ide.eclipse.adt.AndroidNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/src/main/java/de/tzur/conversations/Settings.java b/src/main/java/de/tzur/conversations/Settings.java
new file mode 100644
index 00000000..c919d60c
--- /dev/null
+++ b/src/main/java/de/tzur/conversations/Settings.java
@@ -0,0 +1,94 @@
+package de.tzur.conversations;
+
+import android.content.SharedPreferences;
+import android.util.Log;
+
+/**
+ * This class is used to provide access to settings which have to be accessed frequently.
+ * Every setting in this class has to be updated using @see SettingsActivity#onSharedPreferenceChanged.
+ */
+public final class Settings {
+
+ /**
+ * Initializes the settings provided via this static class.
+ * @param preferences the shared preferences of the app.
+ */
+ public static void initSettingsClassWithPreferences(SharedPreferences preferences) {
+ Log.d("SETTING", "Initializing settings");
+ String[] preferenceNames = { "parse_emoticons", "send_button_status", "led_notification_color", "auto_download_file_wlan", "auto_download_file_link", "confirm_messages_list" };
+ for (String name : preferenceNames) {
+ Settings.synchronizeSettingsClassWithPreferences(preferences, name);
+ }
+ }
+
+ /**
+ * Synchronizes the setting value in this class on settings update in SettingsActivity.
+ * @param preferences the shared preferences of the app.
+ * @param name the name of the setting to synchronize.
+ */
+ public static void synchronizeSettingsClassWithPreferences(SharedPreferences preferences, String name) {
+ Log.d("SETTING", "Synchronizing settings");
+ switch (name) {
+ case "parse_emoticons":
+ Settings.PARSE_EMOTICONS = preferences.getBoolean(name, Settings.PARSE_EMOTICONS);
+ break;
+ case "send_button_status":
+ Settings.SHOW_ONLINE_STATUS = preferences.getBoolean(name, Settings.SHOW_ONLINE_STATUS);
+ break;
+ case "led_notify_color":
+ Settings.LED_COLOR = preferences.getInt(name, Settings.LED_COLOR);
+ break;
+ case "auto_download_file_wlan":
+ Settings.DOWNLOAD_ONLY_WLAN = preferences.getBoolean(name, Settings.DOWNLOAD_ONLY_WLAN);
+ break;
+ case "auto_download_file_link":
+ Settings.DOWNLOAD_IMAGE_LINKS = preferences.getBoolean(name, Settings.DOWNLOAD_IMAGE_LINKS);
+ break;
+ case "confirm_messages_list":
+ int iPref = Settings.CONFIRM_MESSAGE_RECEIVED && Settings.CONFIRM_MESSAGE_READ ? 2 : Settings.CONFIRM_MESSAGE_RECEIVED ? 1 : 0;
+ try {
+ iPref = Integer.valueOf(preferences.getString(name, new Integer(iPref).toString()));
+ } catch (NumberFormatException e) {
+ // ignored, fallback-value set above
+ }
+ Settings.CONFIRM_MESSAGE_RECEIVED = iPref >= 1;
+ Settings.CONFIRM_MESSAGE_READ = iPref >= 2;
+ break;
+ }
+ }
+ /**
+ * Boolean if emoticons should be parsed to emoticons or not.
+ */
+ public static boolean PARSE_EMOTICONS = true;
+ /**
+ * Boolean if online status should be shown or not.
+ */
+ public static boolean SHOW_ONLINE_STATUS = true;
+ /**
+ * LED Color
+ */
+ public static int LED_COLOR = 0xffffffff;
+ /**
+ * Boolean if image-links should be downloaded or not.
+ */
+ public static boolean DOWNLOAD_IMAGE_LINKS = true;
+ /**
+ * Boolean if automatic downloads should be done only jif connected to WLAN.
+ */
+ public static boolean DOWNLOAD_ONLY_WLAN = true;
+ /**
+ * Boolean if confirm received messages
+ */
+ public static boolean CONFIRM_MESSAGE_RECEIVED = true;
+ /**
+ * Boolean if confirm read message
+ */
+ public static boolean CONFIRM_MESSAGE_READ = true;
+
+ /**
+ * This is a utility class - private constructor avoids any instantiation.
+ */
+ private Settings() {
+ // Private constructor to avoid instantiation
+ }
+}
diff --git a/src/main/java/eu/siacs/conversations/Config.java b/src/main/java/eu/siacs/conversations/Config.java
index ce91244d..00225f7b 100644
--- a/src/main/java/eu/siacs/conversations/Config.java
+++ b/src/main/java/eu/siacs/conversations/Config.java
@@ -21,6 +21,8 @@ public final class Config {
public static final int MESSAGE_MERGE_WINDOW = 20;
+ public static final boolean UTF8_EMOTICONS = false;
+
public static final int PAGE_SIZE = 50;
public static final int MAX_NUM_PAGES = 3;
diff --git a/src/main/java/eu/siacs/conversations/crypto/PgpEngine.java b/src/main/java/eu/siacs/conversations/crypto/PgpEngine.java
index 505c4b0f..101d44bb 100644
--- a/src/main/java/eu/siacs/conversations/crypto/PgpEngine.java
+++ b/src/main/java/eu/siacs/conversations/crypto/PgpEngine.java
@@ -13,6 +13,7 @@ import org.openintents.openpgp.OpenPgpSignatureResult;
import org.openintents.openpgp.util.OpenPgpApi;
import org.openintents.openpgp.util.OpenPgpApi.IOpenPgpCallback;
+import de.tzur.conversations.Settings;
import eu.siacs.conversations.R;
import eu.siacs.conversations.entities.Account;
import eu.siacs.conversations.entities.Contact;
@@ -60,6 +61,9 @@ public class PgpEngine {
final HttpConnectionManager manager = mXmppConnectionService.getHttpConnectionManager();
if (message.trusted()
&& message.treatAsDownloadable() != Message.Decision.NEVER
+ && Settings.DOWNLOAD_IMAGE_LINKS
+ && mXmppConnectionService.isDownloadAllowedInConnection()
+ && message.bodyContainsDownloadable()
&& manager.getAutoAcceptFileSize() > 0) {
manager.createNewDownloadConnection(message);
}
@@ -166,7 +170,7 @@ public class PgpEngine {
String[] lines = os.toString().split("\n");
for (int i = 2; i < lines.length - 1; ++i) {
if (!lines[i].contains("Version")) {
- encryptedMessageBody.append(lines[i].trim());
+ encryptedMessageBody.append(lines[i]);
}
}
message.setEncryptedBody(encryptedMessageBody
diff --git a/src/main/java/eu/siacs/conversations/entities/Bookmark.java b/src/main/java/eu/siacs/conversations/entities/Bookmark.java
index cc6f146b..06c46c1c 100644
--- a/src/main/java/eu/siacs/conversations/entities/Bookmark.java
+++ b/src/main/java/eu/siacs/conversations/entities/Bookmark.java
@@ -1,5 +1,7 @@
package eu.siacs.conversations.entities;
+import android.graphics.Color;
+
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
@@ -74,6 +76,11 @@ public class Bookmark extends Element implements ListItem {
return tags;
}
+ @Override
+ public int getStatusColor() {
+ return Color.parseColor("#259B23");
+ }
+
public String getNick() {
return this.findChildContent("nick");
}
diff --git a/src/main/java/eu/siacs/conversations/entities/Contact.java b/src/main/java/eu/siacs/conversations/entities/Contact.java
index e546f214..a215874f 100644
--- a/src/main/java/eu/siacs/conversations/entities/Contact.java
+++ b/src/main/java/eu/siacs/conversations/entities/Contact.java
@@ -2,6 +2,7 @@ package eu.siacs.conversations.entities;
import android.content.ContentValues;
import android.database.Cursor;
+import android.graphics.Color;
import org.json.JSONArray;
import org.json.JSONException;
@@ -152,6 +153,11 @@ public class Contact implements ListItem, Blockable {
return tags;
}
+ @Override
+ public int getStatusColor() {
+ return Color.parseColor(UIHelper.getStatusColor(getMostAvailableStatus()));
+ }
+
public boolean match(String needle) {
if (needle == null || needle.isEmpty()) {
return true;
diff --git a/src/main/java/eu/siacs/conversations/entities/ListItem.java b/src/main/java/eu/siacs/conversations/entities/ListItem.java
index efc1c2b9..aba2aef2 100644
--- a/src/main/java/eu/siacs/conversations/entities/ListItem.java
+++ b/src/main/java/eu/siacs/conversations/entities/ListItem.java
@@ -11,6 +11,8 @@ public interface ListItem extends Comparable<ListItem> {
public List<Tag> getTags();
+ public int getStatusColor();
+
public final class Tag {
private final String name;
private final int color;
diff --git a/src/main/java/eu/siacs/conversations/entities/Message.java b/src/main/java/eu/siacs/conversations/entities/Message.java
index 957c2a6d..9a904cab 100644
--- a/src/main/java/eu/siacs/conversations/entities/Message.java
+++ b/src/main/java/eu/siacs/conversations/entities/Message.java
@@ -409,9 +409,9 @@ public class Message extends AbstractEntity {
public String getMergedBody() {
final Message next = this.next();
if (this.mergeable(next)) {
- return getBody().trim() + MERGE_SEPARATOR + next.getMergedBody();
+ return getBody() + MERGE_SEPARATOR + next.getMergedBody();
}
- return getBody().trim();
+ return getBody();
}
public boolean hasMeCommand() {
diff --git a/src/main/java/eu/siacs/conversations/generator/AbstractGenerator.java b/src/main/java/eu/siacs/conversations/generator/AbstractGenerator.java
index 79626511..186b4b98 100644
--- a/src/main/java/eu/siacs/conversations/generator/AbstractGenerator.java
+++ b/src/main/java/eu/siacs/conversations/generator/AbstractGenerator.java
@@ -12,6 +12,7 @@ import java.util.List;
import java.util.Locale;
import java.util.TimeZone;
+import de.tzur.conversations.Settings;
import eu.siacs.conversations.services.XmppConnectionService;
import eu.siacs.conversations.utils.PhoneHelper;
@@ -81,7 +82,7 @@ public abstract class AbstractGenerator {
public List<String> getFeatures() {
ArrayList<String> features = new ArrayList<>();
features.addAll(Arrays.asList(FEATURES));
- if (mXmppConnectionService.confirmMessages()) {
+ if (Settings.CONFIRM_MESSAGE_RECEIVED) {
features.addAll(Arrays.asList(MESSAGE_CONFIRMATION_FEATURES));
}
Collections.sort(features);
diff --git a/src/main/java/eu/siacs/conversations/parser/AbstractParser.java b/src/main/java/eu/siacs/conversations/parser/AbstractParser.java
index 24e93db1..5f085925 100644
--- a/src/main/java/eu/siacs/conversations/parser/AbstractParser.java
+++ b/src/main/java/eu/siacs/conversations/parser/AbstractParser.java
@@ -1,11 +1,15 @@
package eu.siacs.conversations.parser;
+import android.util.Log;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
+import javax.xml.datatype.DatatypeConfigurationException;
+import javax.xml.datatype.DatatypeFactory;
+
import eu.siacs.conversations.entities.Account;
import eu.siacs.conversations.entities.Contact;
import eu.siacs.conversations.services.XmppConnectionService;
@@ -21,7 +25,16 @@ public abstract class AbstractParser {
this.mXmppConnectionService = service;
}
- public static Long getTimestamp(Element element, Long defaultValue) {
+ /**
+ * Gets the timestamp from the 'delay' element.
+ * Refer to XEP-0203: Delayed Delivery for details. @link{http://xmpp.org/extensions/xep-0203.html}
+ * @param packet the element to find the child element 'delay' in.
+ * @return the time in milli seconds of the attribute 'stamp' of the
+ * element 'delay'. In case there is no 'delay' element or no 'stamp'
+ * attribute or the current time is less than the value of the 'stamp'
+ * attribute the current time is returned.
+ */
+ public static Long getTimestamp(Element element, Long defaultValue) {
Element delay = element.findChild("delay","urn:xmpp:delay");
if (delay != null) {
String stamp = delay.getAttribute("stamp");
@@ -40,17 +53,34 @@ public abstract class AbstractParser {
return getTimestamp(packet,System.currentTimeMillis());
}
+ /**
+ * Parses the timestamp according to XEP-0082: XMPP Date and Time Profiles.
+ * @link{http://xmpp.org/extensions/xep-0082.html}
+ *
+ * @param timestamp the timestamp to parse
+ * @return Date
+ * @throws ParseException
+ */
public static Date parseTimestamp(String timestamp) throws ParseException {
- timestamp = timestamp.replace("Z", "+0000");
- SimpleDateFormat dateFormat;
- timestamp = timestamp.substring(0,19)+timestamp.substring(timestamp.length() -5,timestamp.length());
- dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ",Locale.US);
- return dateFormat.parse(timestamp);
+ /*try {
+ Log.d("TIMESTAMP", timestamp);
+ return DatatypeFactory.newInstance().newXMLGregorianCalendar(timestamp).toGregorianCalendar().getTime();
+ } catch (DatatypeConfigurationException e) {
+ Log.d("TIMESTAMP", e.getMessage());
+ return new Date();
+ }*/
+ timestamp = timestamp.replace("Z", "+0000");
+ SimpleDateFormat dateFormat;
+ timestamp = timestamp.substring(0,19)+timestamp.substring(timestamp.length() -5,timestamp.length());
+ dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ",Locale.US);
+ return dateFormat.parse(timestamp);
}
- protected void updateLastseen(final Element packet, final Account account, final boolean presenceOverwrite) {
- updateLastseen(packet, account, packet.getAttributeAsJid("from"), presenceOverwrite);
- }
+ protected void updateLastseen(final Element packet, final Account account,
+ final boolean presenceOverwrite) {
+ final Jid from = packet.getAttributeAsJid("from");
+ updateLastseen(packet, account, from, presenceOverwrite);
+ }
protected void updateLastseen(final Element packet, final Account account, final Jid from, final boolean presenceOverwrite) {
final String presence = from == null || from.isBareJid() ? "" : from.getResourcepart();
diff --git a/src/main/java/eu/siacs/conversations/parser/MessageParser.java b/src/main/java/eu/siacs/conversations/parser/MessageParser.java
index 2d722af7..81fd89cd 100644
--- a/src/main/java/eu/siacs/conversations/parser/MessageParser.java
+++ b/src/main/java/eu/siacs/conversations/parser/MessageParser.java
@@ -6,6 +6,7 @@ import android.util.Pair;
import net.java.otr4j.session.Session;
import net.java.otr4j.session.SessionStatus;
+import de.tzur.conversations.Settings;
import eu.siacs.conversations.Config;
import eu.siacs.conversations.entities.Account;
import eu.siacs.conversations.entities.Contact;
@@ -433,4 +434,4 @@ public class MessageParser extends AbstractParser implements
contact.setPresenceName(nick);
}
}
-} \ No newline at end of file
+}
diff --git a/src/main/java/eu/siacs/conversations/services/NotificationService.java b/src/main/java/eu/siacs/conversations/services/NotificationService.java
index 956f704e..09d223b3 100644
--- a/src/main/java/eu/siacs/conversations/services/NotificationService.java
+++ b/src/main/java/eu/siacs/conversations/services/NotificationService.java
@@ -31,6 +31,7 @@ import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
+import de.tzur.conversations.Settings;
import eu.siacs.conversations.Config;
import eu.siacs.conversations.R;
import eu.siacs.conversations.entities.Account;
@@ -218,7 +219,7 @@ public class NotificationService {
mBuilder.setDefaults(0);
mBuilder.setSmallIcon(R.drawable.ic_notification);
mBuilder.setDeleteIntent(createDeleteIntent());
- mBuilder.setLights(0xff00FF00, 2000, 3000);
+ mBuilder.setLights(Settings.LED_COLOR, 2000, 4000);
final Notification notification = mBuilder.build();
notificationManager.notify(NOTIFICATION_ID, notification);
}
diff --git a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java
index f5c54adf..c2b04722 100644
--- a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java
+++ b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java
@@ -49,6 +49,7 @@ import java.util.Map;
import java.util.concurrent.CopyOnWriteArrayList;
import de.duenndns.ssl.MemorizingTrustManager;
+import de.tzur.conversations.Settings;
import eu.siacs.conversations.Config;
import eu.siacs.conversations.R;
import eu.siacs.conversations.crypto.PgpEngine;
@@ -572,6 +573,25 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa
return activeNetwork != null && activeNetwork.isConnected();
}
+ /**
+ * check whether we are allowed to download at the moment
+ */
+ public boolean isDownloadAllowedInConnection() {
+ if (Settings.DOWNLOAD_ONLY_WLAN) {
+ return isWifiConnected();
+ }
+ return true;
+ }
+
+ /**
+ * check whether wifi is connected
+ */
+ public boolean isWifiConnected() {
+ ConnectivityManager cm = (ConnectivityManager) getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
+ NetworkInfo niWifi = cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
+ return niWifi.isConnected();
+ }
+
@SuppressLint("TrulyRandom")
@Override
public void onCreate() {
@@ -2199,10 +2219,6 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa
return getPreferences().getBoolean("force_encryption", false);
}
- public boolean confirmMessages() {
- return getPreferences().getBoolean("confirm_messages", true);
- }
-
public boolean sendChatStates() {
return getPreferences().getBoolean("chat_states", false);
}
@@ -2300,7 +2316,7 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa
public void sendReadMarker(final Conversation conversation) {
final Message markable = conversation.getLatestMarkableMessage();
this.markRead(conversation);
- if (confirmMessages() && markable != null && markable.getRemoteMsgId() != null) {
+ if (Settings.CONFIRM_MESSAGE_READ && markable != null && markable.getRemoteMsgId() != null) {
Log.d(Config.LOGTAG, conversation.getAccount().getJid().toBareJid() + ": sending read marker to " + markable.getCounterpart().toString());
Account account = conversation.getAccount();
final Jid to = markable.getCounterpart();
diff --git a/src/main/java/eu/siacs/conversations/ui/ChangePasswordActivity.java b/src/main/java/eu/siacs/conversations/ui/ChangePasswordActivity.java
index 54c064c6..aac435fd 100644
--- a/src/main/java/eu/siacs/conversations/ui/ChangePasswordActivity.java
+++ b/src/main/java/eu/siacs/conversations/ui/ChangePasswordActivity.java
@@ -27,11 +27,14 @@ public class ChangePasswordActivity extends XmppActivity implements XmppConnecti
mCurrentPassword.requestFocus();
mCurrentPassword.setError(getString(R.string.account_status_unauthorized));
} else if (!newPassword.equals(newPasswordConfirm)) {
- mNewPasswordConfirm.requestFocus();
- mNewPasswordConfirm.setError(getString(R.string.passwords_do_not_match));
+ mNewPasswordConfirm.requestFocus();
+ mNewPasswordConfirm.setError(getString(R.string.passwords_do_not_match));
+ } else if (newPassword.isEmpty()) {
+ mNewPassword.requestFocus();
+ mNewPassword.setError(getString(R.string.password_should_not_be_empty));
} else if (newPassword.trim().isEmpty()) {
mNewPassword.requestFocus();
- mNewPassword.setError(getString(R.string.password_should_not_be_empty));
+ mNewPassword.setError(getString(R.string.password_should_not_contain_only_spaces));
} else {
mCurrentPassword.setError(null);
mNewPassword.setError(null);
diff --git a/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java b/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java
index 96abf65b..db4fd712 100644
--- a/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java
+++ b/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java
@@ -47,6 +47,7 @@ import eu.siacs.conversations.services.XmppConnectionService.OnRosterUpdate;
import eu.siacs.conversations.ui.adapter.ConversationAdapter;
import eu.siacs.conversations.utils.ExceptionHelper;
import eu.siacs.conversations.xmpp.OnUpdateBlocklist;
+import github.ankushsachdeva.emojicon.EmojiconEditText;
public class ConversationActivity extends XmppActivity
implements OnAccountUpdate, OnConversationUpdate, OnRosterUpdate, OnUpdateBlocklist, XmppConnectionService.OnShowErrorToast {
@@ -1209,10 +1210,6 @@ public class ConversationActivity extends XmppActivity
return getPreferences().getBoolean("force_encryption", false);
}
- public boolean useSendButtonToIndicateStatus() {
- return getPreferences().getBoolean("send_button_status", false);
- }
-
public boolean indicateReceived() {
return getPreferences().getBoolean("indicate_received", false);
}
diff --git a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java
index d254ece7..5a672520 100644
--- a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java
+++ b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java
@@ -27,7 +27,9 @@ import android.widget.AbsListView.OnScrollListener;
import android.widget.AdapterView;
import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.ImageButton;
+import android.widget.ImageView;
import android.widget.ListView;
+import android.widget.PopupWindow;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.TextView.OnEditorActionListener;
@@ -40,6 +42,7 @@ import java.util.List;
import java.util.NoSuchElementException;
import java.util.concurrent.ConcurrentLinkedQueue;
+import de.tzur.conversations.Settings;
import eu.siacs.conversations.Config;
import eu.siacs.conversations.R;
import eu.siacs.conversations.crypto.PgpEngine;
@@ -62,6 +65,10 @@ import eu.siacs.conversations.utils.GeoHelper;
import eu.siacs.conversations.utils.UIHelper;
import eu.siacs.conversations.xmpp.chatstate.ChatState;
import eu.siacs.conversations.xmpp.jid.Jid;
+import github.ankushsachdeva.emojicon.EmojiconEditText;
+import github.ankushsachdeva.emojicon.EmojiconGridView;
+import github.ankushsachdeva.emojicon.EmojiconsPopup;
+import github.ankushsachdeva.emojicon.emoji.Emojicon;
public class ConversationFragment extends Fragment implements EditMessage.KeyboardListener {
@@ -104,6 +111,9 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
protected MessageAdapter messageListAdapter;
private EditMessage mEditMessage;
private ImageButton mSendButton;
+ private ImageView mEmojButton;
+ private View mRootView;
+ private EmojiconsPopup mEmojPopup;
private RelativeLayout snackbar;
private TextView snackbarMessage;
private TextView snackbarAction;
@@ -359,6 +369,115 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
});
mEditMessage.setOnEditorActionListener(mEditorActionListener);
+ // Start of emojicon
+ mEmojButton = (ImageView) view.findViewById(R.id.emoji_btn);
+ mRootView = view.findViewById(R.id.textsend);
+
+ // Give the topmost view of your activity layout hierarchy. This will be used to measure soft keyboard height
+ mEmojPopup = new EmojiconsPopup(mRootView, this.getActivity());
+
+ //Will automatically set size according to the soft keyboard size
+ mEmojPopup.setSizeForSoftKeyboard();
+
+ //Set on emojicon click listener
+ mEmojPopup.setOnEmojiconClickedListener(new EmojiconGridView.OnEmojiconClickedListener() {
+
+ @Override
+ public void onEmojiconClicked(Emojicon emojicon) {
+ mEditMessage.append(emojicon.getEmoji());
+ }
+ });
+
+ //Set on backspace click listener
+ mEmojPopup.setOnEmojiconBackspaceClickedListener(new EmojiconsPopup.OnEmojiconBackspaceClickedListener() {
+
+ @Override
+ public void onEmojiconBackspaceClicked(View v) {
+ KeyEvent event = new KeyEvent(
+ 0, 0, 0, KeyEvent.KEYCODE_DEL, 0, 0, 0, 0, KeyEvent.KEYCODE_ENDCALL);
+ mEditMessage.dispatchKeyEvent(event);
+ }
+ });
+
+ //If the emoji popup is dismissed, change emojiButton to smiley icon
+ mEmojPopup.setOnDismissListener(new PopupWindow.OnDismissListener() {
+
+ @Override
+ public void onDismiss() {
+ changeEmojiKeyboardIcon(mEmojButton, R.drawable.smiley);
+ }
+ });
+
+ //If the text keyboard closes, also dismiss the emoji popup
+ mEmojPopup.setOnSoftKeyboardOpenCloseListener(new EmojiconsPopup.OnSoftKeyboardOpenCloseListener() {
+
+ @Override
+ public void onKeyboardOpen(int keyBoardHeight) {
+
+ }
+
+ @Override
+ public void onKeyboardClose() {
+ if (mEmojPopup.isShowing())
+ mEmojPopup.dismiss();
+ }
+ });
+
+ //On emoji clicked, add it to edittext
+ mEmojPopup.setOnEmojiconClickedListener(new EmojiconGridView.OnEmojiconClickedListener() {
+
+ @Override
+ public void onEmojiconClicked(Emojicon emojicon) {
+ mEditMessage.append(emojicon.getEmoji());
+ }
+ });
+
+ //On backspace clicked, emulate the KEYCODE_DEL key event
+ mEmojPopup.setOnEmojiconBackspaceClickedListener(new EmojiconsPopup.OnEmojiconBackspaceClickedListener() {
+
+ @Override
+ public void onEmojiconBackspaceClicked(View v) {
+ KeyEvent event = new KeyEvent(
+ 0, 0, 0, KeyEvent.KEYCODE_DEL, 0, 0, 0, 0, KeyEvent.KEYCODE_ENDCALL);
+ mEditMessage.dispatchKeyEvent(event);
+ }
+ });
+
+ // To toggle between text keyboard and emoji keyboard keyboard(Popup)
+ mEmojButton.setOnClickListener(new OnClickListener() {
+
+ @Override
+ public void onClick(View v) {
+
+ //If popup is not showing => emoji keyboard is not visible, we need to show it
+ if(!mEmojPopup.isShowing()){
+
+ //If keyboard is visible, simply show the emoji popup
+ if(mEmojPopup.isKeyBoardOpen()){
+ mEmojPopup.showAtBottom();
+ changeEmojiKeyboardIcon(mEmojButton, R.drawable.ic_action_keyboard);
+ }
+
+ //else, open the text keyboard first and immediately after that show the emoji popup
+ else{
+ mEditMessage.setFocusableInTouchMode(true);
+ mEditMessage.requestFocus();
+ mEmojPopup.showAtBottomPending();
+ final InputMethodManager inputMethodManager = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
+ inputMethodManager.showSoftInput(mEditMessage, InputMethodManager.SHOW_IMPLICIT);
+ changeEmojiKeyboardIcon(mEmojButton, R.drawable.ic_action_keyboard);
+ }
+ }
+
+ //If popup is showing, simply dismiss it to show the undelying text keyboard
+ else{
+ mEmojPopup.dismiss();
+ }
+ }
+ });
+
+ // End of emojicon
+
mSendButton = (ImageButton) view.findViewById(R.id.textSendButton);
mSendButton.setOnClickListener(this.mSendButtonListener);
@@ -583,7 +702,7 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
}
protected void highlightInConference(String nick) {
- String oldString = mEditMessage.getText().toString().trim();
+ String oldString = mEditMessage.getText().toString();
if (oldString.isEmpty() || mEditMessage.getSelectionStart() == 0) {
mEditMessage.getText().insert(0, nick + ": ");
} else {
@@ -1124,15 +1243,15 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
final ConversationActivity activity = (ConversationActivity) getActivity();
final XmppConnectionService xmppService = activity.xmppConnectionService;
activity.selectPresence(message.getConversation(),
- new OnPresenceSelected() {
-
- @Override
- public void onPresenceSelected() {
- message.setCounterpart(conversation.getNextCounterpart());
- xmppService.sendMessage(message);
- messageSent();
- }
- });
+ new OnPresenceSelected() {
+
+ @Override
+ public void onPresenceSelected() {
+ message.setCounterpart(conversation.getNextCounterpart());
+ xmppService.sendMessage(message);
+ messageSent();
+ }
+ });
}
public void appendText(String text) {
@@ -1182,4 +1301,8 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
updateSendButton();
}
+ private void changeEmojiKeyboardIcon(ImageView iconToBeChanged, int drawableResourceId){
+ iconToBeChanged.setImageResource(drawableResourceId);
+ }
+
}
diff --git a/src/main/java/eu/siacs/conversations/ui/EditMessage.java b/src/main/java/eu/siacs/conversations/ui/EditMessage.java
index a58cf2b8..a7aa2024 100644
--- a/src/main/java/eu/siacs/conversations/ui/EditMessage.java
+++ b/src/main/java/eu/siacs/conversations/ui/EditMessage.java
@@ -7,8 +7,9 @@ import android.view.KeyEvent;
import android.widget.EditText;
import eu.siacs.conversations.Config;
+import github.ankushsachdeva.emojicon.EmojiconEditText;
-public class EditMessage extends EditText {
+public class EditMessage extends EmojiconEditText {
public EditMessage(Context context, AttributeSet attrs) {
super(context, attrs);
diff --git a/src/main/java/eu/siacs/conversations/ui/SettingsActivity.java b/src/main/java/eu/siacs/conversations/ui/SettingsActivity.java
index eb5d9b2e..d12ff4f2 100644
--- a/src/main/java/eu/siacs/conversations/ui/SettingsActivity.java
+++ b/src/main/java/eu/siacs/conversations/ui/SettingsActivity.java
@@ -6,6 +6,7 @@ import java.util.Arrays;
import java.util.Collections;
import java.util.Locale;
+import de.tzur.conversations.Settings;
import de.duenndns.ssl.MemorizingTrustManager;
import eu.siacs.conversations.R;
@@ -132,38 +133,42 @@ public class SettingsActivity extends XmppActivity implements
@Override
public void onSharedPreferenceChanged(SharedPreferences preferences,
String name) {
- if (name.equals("resource")) {
- String resource = preferences.getString("resource", "mobile")
- .toLowerCase(Locale.US);
- if (xmppConnectionServiceBound) {
- for (Account account : xmppConnectionService.getAccounts()) {
- if (account.setResource(resource)) {
- if (!account.isOptionSet(Account.OPTION_DISABLED)) {
- XmppConnection connection = account.getXmppConnection();
+ // need to synchronize the settings class first
+ Settings.synchronizeSettingsClassWithPreferences(getPreferences(), name);
+ switch (name) {
+ case "resource":
+ String resource = preferences.getString("resource", "mobile")
+ .toLowerCase(Locale.US);
+ if (xmppConnectionServiceBound) {
+ for (Account account : xmppConnectionService.getAccounts()) {
+ account.setResource(resource);
+ if (!account.isOptionSet(Account.OPTION_DISABLED)) {
+ XmppConnection connection = account.getXmppConnection();
if (connection != null) {
connection.resetStreamId();
}
- xmppConnectionService.reconnectAccountInBackground(account);
+ xmppConnectionService.reconnectAccountInBackground(account);
+ }
+ }
+ }
+ break;
+ case "keep_foreground_service":
+ xmppConnectionService.toggleForegroundService();
+ break;
+ case "confirm_messages":
+ if (xmppConnectionServiceBound) {
+ for (Account account : xmppConnectionService.getAccounts()) {
+ if (!account.isOptionSet(Account.OPTION_DISABLED)) {
+ xmppConnectionService.sendPresence(account);
}
}
}
- }
- } else if (name.equals("keep_foreground_service")) {
- xmppConnectionService.toggleForegroundService();
- } else if (name.equals("confirm_messages")) {
- if (xmppConnectionServiceBound) {
- for (Account account : xmppConnectionService.getAccounts()) {
- if (!account.isOptionSet(Account.OPTION_DISABLED)) {
- xmppConnectionService.sendPresence(account);
- }
- }
- }
- } else if (name.equals("dont_trust_system_cas")) {
- xmppConnectionService.updateMemorizingTrustmanager();
- reconnectAccounts();
- }
-
- }
+ break;
+ case "dont_trust_system_cas":
+ xmppConnectionService.updateMemorizingTrustmanager();
+ reconnectAccounts();
+ break;
+ }
private void displayToast(final String msg) {
runOnUiThread(new Runnable() {
@@ -181,5 +186,6 @@ public class SettingsActivity extends XmppActivity implements
}
}
}
+ }
}
diff --git a/src/main/java/eu/siacs/conversations/ui/XmppActivity.java b/src/main/java/eu/siacs/conversations/ui/XmppActivity.java
index 7c994c31..4157035b 100644
--- a/src/main/java/eu/siacs/conversations/ui/XmppActivity.java
+++ b/src/main/java/eu/siacs/conversations/ui/XmppActivity.java
@@ -63,6 +63,7 @@ import java.util.Hashtable;
import java.util.List;
import java.util.concurrent.RejectedExecutionException;
+import de.tzur.conversations.Settings;
import eu.siacs.conversations.Config;
import eu.siacs.conversations.R;
import eu.siacs.conversations.entities.Account;
@@ -346,6 +347,9 @@ public abstract class XmppActivity extends Activity {
setTheme(this.mTheme);
this.mUsingEnterKey = usingEnterKey();
mUseSubject = getPreferences().getBoolean("use_subject", true);
+
+ Settings.initSettingsClassWithPreferences(getPreferences());
+
final ActionBar ab = getActionBar();
if (ab!=null) {
ab.setDisplayHomeAsUpEnabled(true);
diff --git a/src/main/java/eu/siacs/conversations/ui/adapter/ConversationAdapter.java b/src/main/java/eu/siacs/conversations/ui/adapter/ConversationAdapter.java
index bfe44326..c42dd305 100644
--- a/src/main/java/eu/siacs/conversations/ui/adapter/ConversationAdapter.java
+++ b/src/main/java/eu/siacs/conversations/ui/adapter/ConversationAdapter.java
@@ -19,13 +19,30 @@ import java.lang.ref.WeakReference;
import java.util.List;
import java.util.concurrent.RejectedExecutionException;
+import de.tzur.conversations.Settings;
+import eu.siacs.conversations.Config;
import eu.siacs.conversations.R;
+import eu.siacs.conversations.entities.Account;
import eu.siacs.conversations.entities.Conversation;
import eu.siacs.conversations.entities.Transferable;
import eu.siacs.conversations.entities.Message;
+import eu.siacs.conversations.entities.Presences;
import eu.siacs.conversations.ui.ConversationActivity;
import eu.siacs.conversations.ui.XmppActivity;
import eu.siacs.conversations.utils.UIHelper;
+import github.ankushsachdeva.emojicon.EmojiconTextView;
+
+import android.content.Context;
+import android.graphics.Color;
+import android.graphics.Typeface;
+import android.preference.PreferenceManager;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ArrayAdapter;
+import android.widget.ImageView;
+import android.widget.TextView;
public class ConversationAdapter extends ArrayAdapter<Conversation> {
@@ -56,10 +73,34 @@ public class ConversationAdapter extends ArrayAdapter<Conversation> {
} else {
convName.setText(conversation.getJid().toBareJid().toString());
}
- TextView mLastMessage = (TextView) view.findViewById(R.id.conversation_lastmsg);
+ EmojiconTextView mLastMessage = (EmojiconTextView) view.findViewById(R.id.conversation_lastmsg);
TextView mTimestamp = (TextView) view.findViewById(R.id.conversation_lastupdate);
ImageView imagePreview = (ImageView) view.findViewById(R.id.conversation_lastimage);
+ if (Settings.SHOW_ONLINE_STATUS && conversation != null && conversation.getAccount().getStatus() == Account.State.ONLINE) {
+ TextView status = (TextView) view.findViewById(R.id.status);
+
+ String color = "#000000";
+ if (conversation.getMode() == Conversation.MODE_SINGLE) {
+ switch (conversation.getContact().getMostAvailableStatus()) {
+ case Presences.ONLINE:
+ case Presences.CHAT:
+ color = "#259B23";
+ break;
+ case Presences.AWAY:
+ case Presences.XA:
+ color = "#FF9800";
+ break;
+ case Presences.DND:
+ color = "#E51C23";
+ break;
+ }
+ } else if (conversation.getMode() == Conversation.MODE_MULTI && conversation.getMucOptions().online()) {
+ color = "#259B23";
+ }
+ status.setBackgroundColor(Color.parseColor(color));
+ }
+
Message message = conversation.getLatestMessage();
if (!conversation.isRead()) {
@@ -78,7 +119,9 @@ public class ConversationAdapter extends ArrayAdapter<Conversation> {
Pair<String,Boolean> preview = UIHelper.getMessagePreview(activity,message);
mLastMessage.setVisibility(View.VISIBLE);
imagePreview.setVisibility(View.GONE);
- mLastMessage.setText(preview.first);
+ boolean parseEmoticons = Settings.PARSE_EMOTICONS;
+ CharSequence msgText = parseEmoticons ? UIHelper.transformAsciiEmoticons(getContext(), preview.first) : preview.first;
+ mLastMessage.setText(msgText);
if (preview.second) {
if (conversation.isRead()) {
mLastMessage.setTypeface(null, Typeface.ITALIC);
diff --git a/src/main/java/eu/siacs/conversations/ui/adapter/ListItemAdapter.java b/src/main/java/eu/siacs/conversations/ui/adapter/ListItemAdapter.java
index 7b20b55f..10500bfc 100644
--- a/src/main/java/eu/siacs/conversations/ui/adapter/ListItemAdapter.java
+++ b/src/main/java/eu/siacs/conversations/ui/adapter/ListItemAdapter.java
@@ -57,6 +57,12 @@ public class ListItemAdapter extends ArrayAdapter<ListItem> {
if (view == null) {
view = inflater.inflate(R.layout.contact, parent, false);
}
+
+ if (Settings.SHOW_ONLINE_STATUS) {
+ TextView tvStatus = (TextView) view.findViewById(R.id.contact_status);
+ tvStatus.setBackgroundColor(item.getStatusColor());
+ }
+
TextView tvName = (TextView) view.findViewById(R.id.contact_display_name);
TextView tvJid = (TextView) view.findViewById(R.id.contact_jid);
ImageView picture = (ImageView) view.findViewById(R.id.contact_photo);
diff --git a/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java b/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java
index 167f3f02..b7ac3092 100644
--- a/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java
+++ b/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java
@@ -5,6 +5,7 @@ import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.graphics.Typeface;
import android.net.Uri;
+import android.preference.PreferenceManager;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.Spanned;
@@ -25,6 +26,8 @@ import android.widget.Toast;
import java.util.List;
+import de.tzur.conversations.Settings;
+import eu.siacs.conversations.Config;
import eu.siacs.conversations.R;
import eu.siacs.conversations.entities.Account;
import eu.siacs.conversations.entities.Contact;
@@ -36,6 +39,7 @@ import eu.siacs.conversations.entities.Message.FileParams;
import eu.siacs.conversations.ui.ConversationActivity;
import eu.siacs.conversations.utils.GeoHelper;
import eu.siacs.conversations.utils.UIHelper;
+import github.ankushsachdeva.emojicon.EmojiconTextView;
public class MessageAdapter extends ArrayAdapter<Message> {
@@ -241,13 +245,17 @@ public class MessageAdapter extends ArrayAdapter<Message> {
i = body.indexOf(Message.MERGE_SEPARATOR,end);
}
if (message.getType() != Message.TYPE_PRIVATE) {
+
if (message.hasMeCommand()) {
final Spannable span = new SpannableString(formattedBody);
span.setSpan(new StyleSpan(Typeface.BOLD_ITALIC), 0, nick.length(),
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
viewHolder.messageBody.setText(span);
} else {
- viewHolder.messageBody.setText(formattedBody);
+ boolean parseEmoticons = Settings.PARSE_EMOTICONS;
+ viewHolder.messageBody.setText(parseEmoticons ? UIHelper
+ .transformAsciiEmoticons(getContext(), message.getMergedBody())
+ : formattedBody);
}
} else {
String privateMarker;
@@ -389,7 +397,7 @@ public class MessageAdapter extends ArrayAdapter<Message> {
.findViewById(R.id.security_indicator);
viewHolder.image = (ImageView) view
.findViewById(R.id.message_image);
- viewHolder.messageBody = (TextView) view
+ viewHolder.messageBody = (EmojiconTextView) view
.findViewById(R.id.message_body);
viewHolder.time = (TextView) view
.findViewById(R.id.message_time);
@@ -409,7 +417,7 @@ public class MessageAdapter extends ArrayAdapter<Message> {
.findViewById(R.id.security_indicator);
viewHolder.image = (ImageView) view
.findViewById(R.id.message_image);
- viewHolder.messageBody = (TextView) view
+ viewHolder.messageBody = (EmojiconTextView) view
.findViewById(R.id.message_body);
viewHolder.time = (TextView) view
.findViewById(R.id.message_time);
@@ -590,7 +598,7 @@ public class MessageAdapter extends ArrayAdapter<Message> {
protected ImageView indicator;
protected ImageView indicatorReceived;
protected TextView time;
- protected TextView messageBody;
+ protected EmojiconTextView messageBody;
protected ImageView contact_picture;
protected TextView status_message;
}
diff --git a/src/main/java/eu/siacs/conversations/utils/UIHelper.java b/src/main/java/eu/siacs/conversations/utils/UIHelper.java
index 2e768ad9..7984c56f 100644
--- a/src/main/java/eu/siacs/conversations/utils/UIHelper.java
+++ b/src/main/java/eu/siacs/conversations/utils/UIHelper.java
@@ -2,10 +2,18 @@ package eu.siacs.conversations.utils;
import java.util.ArrayList;
import java.util.Arrays;
+import java.net.URLConnection;
import java.util.Calendar;
import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
import java.util.Locale;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.regex.Pattern;
+import java.util.regex.Matcher;
+import eu.siacs.conversations.Config;
import eu.siacs.conversations.R;
import eu.siacs.conversations.entities.Contact;
import eu.siacs.conversations.entities.Conversation;
@@ -16,6 +24,9 @@ import eu.siacs.conversations.xmpp.jid.Jid;
import android.content.Context;
import android.text.format.DateFormat;
import android.text.format.DateUtils;
+import android.text.Spannable.Factory;
+import android.text.style.ImageSpan;
+import android.text.Spannable;
import android.util.Pair;
public class UIHelper {
@@ -130,6 +141,135 @@ public class UIHelper {
}
}
+ public static final Map<Pattern, Integer> ANDROID_EMOTICONS = new HashMap<Pattern, Integer>();
+
+ private static final Factory spannableFactory = Spannable.Factory
+ .getInstance();
+
+ static {
+ addPattern(ANDROID_EMOTICONS, ":)", R.drawable.emo_im_happy);
+ addPattern(ANDROID_EMOTICONS, ":-)", R.drawable.emo_im_happy);
+ addPattern(ANDROID_EMOTICONS, ":(", R.drawable.emo_im_sad);
+ addPattern(ANDROID_EMOTICONS, ":-(", R.drawable.emo_im_sad);
+ addPattern(ANDROID_EMOTICONS, ";)", R.drawable.emo_im_winking);
+ addPattern(ANDROID_EMOTICONS, ";-)", R.drawable.emo_im_winking);
+ addPattern(ANDROID_EMOTICONS, ":P",
+ R.drawable.emo_im_tongue_sticking_out);
+ addPattern(ANDROID_EMOTICONS, ":-P",
+ R.drawable.emo_im_tongue_sticking_out);
+ addPattern(ANDROID_EMOTICONS, "=-O", R.drawable.emo_im_surprised);
+ addPattern(ANDROID_EMOTICONS, ":*", R.drawable.emo_im_kissing);
+ addPattern(ANDROID_EMOTICONS, ":-*", R.drawable.emo_im_kissing);
+ addPattern(ANDROID_EMOTICONS, ":O", R.drawable.emo_im_wtf);
+ addPattern(ANDROID_EMOTICONS, ":-O", R.drawable.emo_im_wtf);
+ addPattern(ANDROID_EMOTICONS, "B)", R.drawable.emo_im_cool);
+ addPattern(ANDROID_EMOTICONS, "B-)", R.drawable.emo_im_cool);
+ addPattern(ANDROID_EMOTICONS, "8)", R.drawable.emo_im_cool);
+ addPattern(ANDROID_EMOTICONS, "8-)", R.drawable.emo_im_cool);
+ addPattern(ANDROID_EMOTICONS, ":$", R.drawable.emo_im_money_mouth);
+ addPattern(ANDROID_EMOTICONS, ":-$", R.drawable.emo_im_money_mouth);
+ addPattern(ANDROID_EMOTICONS, ":-!", R.drawable.emo_im_foot_in_mouth);
+ addPattern(ANDROID_EMOTICONS, ":-[", R.drawable.emo_im_embarrassed);
+ addPattern(ANDROID_EMOTICONS, "O:)", R.drawable.emo_im_angel);
+ addPattern(ANDROID_EMOTICONS, "O:-)", R.drawable.emo_im_angel);
+ addPattern(ANDROID_EMOTICONS, ":\\", R.drawable.emo_im_undecided);
+ addPattern(ANDROID_EMOTICONS, ":-\\", R.drawable.emo_im_undecided);
+ addPattern(ANDROID_EMOTICONS, ":'(", R.drawable.emo_im_crying);
+ addPattern(ANDROID_EMOTICONS, ":D", R.drawable.emo_im_laughing);
+ addPattern(ANDROID_EMOTICONS, ":-D", R.drawable.emo_im_laughing);
+ addPattern(ANDROID_EMOTICONS, "O_o", R.drawable.emo_im_wtf);
+ addPattern(ANDROID_EMOTICONS, "o_O", R.drawable.emo_im_wtf);
+ addPattern(ANDROID_EMOTICONS, ">:O", R.drawable.emo_im_yelling);
+ addPattern(ANDROID_EMOTICONS, ">:0", R.drawable.emo_im_yelling);
+ addPattern(ANDROID_EMOTICONS, ":S", R.drawable.emo_im_lips_are_sealed);
+ addPattern(ANDROID_EMOTICONS, ":-S", R.drawable.emo_im_lips_are_sealed);
+ addPattern(ANDROID_EMOTICONS, "<3", R.drawable.emo_im_heart);
+ }
+
+ private static void addPattern(Map<Pattern, Integer> map, String smile,
+ int resource) {
+ map.put(Pattern.compile(Pattern.quote(smile)), resource);
+ }
+
+ private static boolean getSmiledText(Context context, Spannable spannable) {
+ boolean hasChanges = false;
+ Map<Pattern, Integer> emoticons = ANDROID_EMOTICONS;
+ for (Entry<Pattern, Integer> entry : emoticons.entrySet()) {
+ Matcher matcher = entry.getKey().matcher(spannable);
+ while (matcher.find()) {
+ boolean set = true;
+ for (ImageSpan span : spannable.getSpans(matcher.start(),
+ matcher.end(), ImageSpan.class))
+ if (spannable.getSpanStart(span) >= matcher.start()
+ && spannable.getSpanEnd(span) <= matcher.end())
+ spannable.removeSpan(span);
+ else {
+ set = false;
+ break;
+ }
+ if (set) {
+ spannable.setSpan(new ImageSpan(context, entry.getValue()),
+ matcher.start(), matcher.end(),
+ Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
+ hasChanges = true;
+ }
+ }
+ }
+ return hasChanges;
+ }
+
+ private final static class EmoticonPattern {
+ Pattern pattern;
+ String replacement;
+
+ EmoticonPattern(String ascii, int unicode) {
+ this.pattern = Pattern.compile("(?<=(^|\\s))" + ascii
+ + "(?=(\\s|$))");
+ this.replacement = new String(new int[] { unicode, }, 0, 1);
+ }
+
+ String replaceAll(String body) {
+ return pattern.matcher(body).replaceAll(replacement);
+ }
+ }
+
+ private static final EmoticonPattern[] patterns = new EmoticonPattern[] {
+ new EmoticonPattern(":-?D", 0x1f600),
+ new EmoticonPattern("\\^\\^", 0x1f601),
+ new EmoticonPattern(":'D", 0x1f602),
+ new EmoticonPattern("\\]-?D", 0x1f608),
+ new EmoticonPattern(";-?\\)", 0x1f609),
+ new EmoticonPattern(":-?\\)", 0x1f60a),
+ new EmoticonPattern("[B8]-?\\)", 0x1f60e),
+ new EmoticonPattern(":-?\\|", 0x1f610),
+ new EmoticonPattern(":-?[/\\\\]", 0x1f615),
+ new EmoticonPattern(":-?\\*", 0x1f617),
+ new EmoticonPattern(":-?[Ppb]", 0x1f61b),
+ new EmoticonPattern(":-?\\(", 0x1f61e),
+ new EmoticonPattern(":-?[0Oo]", 0x1f62e),
+ new EmoticonPattern("\\\\o/", 0x1F631), };
+
+ public static String transformAsciiEmoticonsToUtf8(String body) {
+ if (body != null) {
+ for (EmoticonPattern p : patterns) {
+ body = p.replaceAll(body);
+ }
+ }
+ return body;
+ }
+
+ public static Spannable transformAsciiEmoticons(Context context, String body) {
+ Spannable spannable;
+ if (Config.UTF8_EMOTICONS) {
+ spannable = spannableFactory.newSpannable(transformAsciiEmoticonsToUtf8(body));
+ }
+ else {
+ spannable = spannableFactory.newSpannable(body);
+ getSmiledText(context, spannable);
+ }
+ return spannable;
+ }
+
public static int getColorForName(String name) {
if (name.isEmpty()) {
return 0xFF202020;
@@ -190,7 +330,7 @@ public class UIHelper {
return new Pair<>(context.getString(R.string.location), true);
}
} else{
- return new Pair<>(message.getBody().trim(), false);
+ return new Pair<>(message.getBody(), false);
}
}
}
@@ -241,6 +381,20 @@ public class UIHelper {
}
}
+ public static String getStatusColor(int status) {
+ switch (status) {
+ case Presences.ONLINE:
+ case Presences.CHAT:
+ return "#259B23";
+ case Presences.AWAY:
+ case Presences.XA:
+ return "#FF9800";
+ case Presences.DND:
+ return "#E51C23";
+ }
+ return "#CCCCCC";
+ }
+
private static String getDisplayedMucCounterpart(final Jid counterpart) {
if (counterpart==null) {
return "";
diff --git a/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleConnection.java b/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleConnection.java
index 65cafe79..2c56488d 100644
--- a/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleConnection.java
+++ b/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleConnection.java
@@ -319,8 +319,8 @@ public class JingleConnection implements Transferable {
message.setBody(Long.toString(size));
conversation.add(message);
mXmppConnectionService.updateConversationUi();
- if (size < this.mJingleConnectionManager
- .getAutoAcceptFileSize()) {
+ if (size <= this.mJingleConnectionManager.getAutoAcceptFileSize()
+ && mXmppConnectionService.isDownloadAllowedInConnection()) {
Log.d(Config.LOGTAG, "auto accepting file from "
+ packet.getFrom());
this.acceptedAutomatically = true;
diff --git a/src/main/project.properties b/src/main/project.properties
new file mode 100644
index 00000000..4ab12569
--- /dev/null
+++ b/src/main/project.properties
@@ -0,0 +1,14 @@
+# This file is automatically generated by Android Tools.
+# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
+#
+# This file must be checked in Version Control Systems.
+#
+# To customize properties used by the Ant build system edit
+# "ant.properties", and override values to adapt the script to your
+# project structure.
+#
+# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
+#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
+
+# Project target.
+target=android-19
diff --git a/src/main/res/drawable-hdpi/ic_action_keyboard.png b/src/main/res/drawable-hdpi/ic_action_keyboard.png
new file mode 100644
index 00000000..37c04af2
--- /dev/null
+++ b/src/main/res/drawable-hdpi/ic_action_keyboard.png
Binary files differ
diff --git a/src/main/res/drawable-hdpi/smiley.png b/src/main/res/drawable-hdpi/smiley.png
new file mode 100644
index 00000000..c841c4c0
--- /dev/null
+++ b/src/main/res/drawable-hdpi/smiley.png
Binary files differ
diff --git a/src/main/res/drawable-mdpi/ic_action_keyboard.png b/src/main/res/drawable-mdpi/ic_action_keyboard.png
new file mode 100644
index 00000000..481e4222
--- /dev/null
+++ b/src/main/res/drawable-mdpi/ic_action_keyboard.png
Binary files differ
diff --git a/src/main/res/drawable-mdpi/smiley.png b/src/main/res/drawable-mdpi/smiley.png
new file mode 100644
index 00000000..9f6d6511
--- /dev/null
+++ b/src/main/res/drawable-mdpi/smiley.png
Binary files differ
diff --git a/src/main/res/drawable-xhdpi/ic_action_keyboard.png b/src/main/res/drawable-xhdpi/ic_action_keyboard.png
new file mode 100644
index 00000000..c1af1a2f
--- /dev/null
+++ b/src/main/res/drawable-xhdpi/ic_action_keyboard.png
Binary files differ
diff --git a/src/main/res/drawable-xhdpi/smiley.png b/src/main/res/drawable-xhdpi/smiley.png
new file mode 100644
index 00000000..b06e0073
--- /dev/null
+++ b/src/main/res/drawable-xhdpi/smiley.png
Binary files differ
diff --git a/src/main/res/drawable-xxhdpi/ic_action_keyboard.png b/src/main/res/drawable-xxhdpi/ic_action_keyboard.png
new file mode 100644
index 00000000..a4668c41
--- /dev/null
+++ b/src/main/res/drawable-xxhdpi/ic_action_keyboard.png
Binary files differ
diff --git a/src/main/res/drawable-xxhdpi/smiley.png b/src/main/res/drawable-xxhdpi/smiley.png
new file mode 100644
index 00000000..2f11d408
--- /dev/null
+++ b/src/main/res/drawable-xxhdpi/smiley.png
Binary files differ
diff --git a/src/main/res/drawable/emo_im_angel.png b/src/main/res/drawable/emo_im_angel.png
new file mode 100644
index 00000000..c34dfa69
--- /dev/null
+++ b/src/main/res/drawable/emo_im_angel.png
Binary files differ
diff --git a/src/main/res/drawable/emo_im_cool.png b/src/main/res/drawable/emo_im_cool.png
new file mode 100644
index 00000000..d8eeb34e
--- /dev/null
+++ b/src/main/res/drawable/emo_im_cool.png
Binary files differ
diff --git a/src/main/res/drawable/emo_im_crying.png b/src/main/res/drawable/emo_im_crying.png
new file mode 100644
index 00000000..1cafdb32
--- /dev/null
+++ b/src/main/res/drawable/emo_im_crying.png
Binary files differ
diff --git a/src/main/res/drawable/emo_im_embarrassed.png b/src/main/res/drawable/emo_im_embarrassed.png
new file mode 100644
index 00000000..e4db9634
--- /dev/null
+++ b/src/main/res/drawable/emo_im_embarrassed.png
Binary files differ
diff --git a/src/main/res/drawable/emo_im_foot_in_mouth.png b/src/main/res/drawable/emo_im_foot_in_mouth.png
new file mode 100644
index 00000000..09d1fba6
--- /dev/null
+++ b/src/main/res/drawable/emo_im_foot_in_mouth.png
Binary files differ
diff --git a/src/main/res/drawable/emo_im_happy.png b/src/main/res/drawable/emo_im_happy.png
new file mode 100644
index 00000000..b86602ae
--- /dev/null
+++ b/src/main/res/drawable/emo_im_happy.png
Binary files differ
diff --git a/src/main/res/drawable/emo_im_heart.png b/src/main/res/drawable/emo_im_heart.png
new file mode 100644
index 00000000..d88bcccd
--- /dev/null
+++ b/src/main/res/drawable/emo_im_heart.png
Binary files differ
diff --git a/src/main/res/drawable/emo_im_kissing.png b/src/main/res/drawable/emo_im_kissing.png
new file mode 100644
index 00000000..56378f6a
--- /dev/null
+++ b/src/main/res/drawable/emo_im_kissing.png
Binary files differ
diff --git a/src/main/res/drawable/emo_im_laughing.png b/src/main/res/drawable/emo_im_laughing.png
new file mode 100644
index 00000000..980bf281
--- /dev/null
+++ b/src/main/res/drawable/emo_im_laughing.png
Binary files differ
diff --git a/src/main/res/drawable/emo_im_lips_are_sealed.png b/src/main/res/drawable/emo_im_lips_are_sealed.png
new file mode 100644
index 00000000..f2de993b
--- /dev/null
+++ b/src/main/res/drawable/emo_im_lips_are_sealed.png
Binary files differ
diff --git a/src/main/res/drawable/emo_im_money_mouth.png b/src/main/res/drawable/emo_im_money_mouth.png
new file mode 100644
index 00000000..08c53fd6
--- /dev/null
+++ b/src/main/res/drawable/emo_im_money_mouth.png
Binary files differ
diff --git a/src/main/res/drawable/emo_im_sad.png b/src/main/res/drawable/emo_im_sad.png
new file mode 100644
index 00000000..31c08d06
--- /dev/null
+++ b/src/main/res/drawable/emo_im_sad.png
Binary files differ
diff --git a/src/main/res/drawable/emo_im_surprised.png b/src/main/res/drawable/emo_im_surprised.png
new file mode 100644
index 00000000..abe8c7ad
--- /dev/null
+++ b/src/main/res/drawable/emo_im_surprised.png
Binary files differ
diff --git a/src/main/res/drawable/emo_im_tongue_sticking_out.png b/src/main/res/drawable/emo_im_tongue_sticking_out.png
new file mode 100644
index 00000000..6f0f47b0
--- /dev/null
+++ b/src/main/res/drawable/emo_im_tongue_sticking_out.png
Binary files differ
diff --git a/src/main/res/drawable/emo_im_undecided.png b/src/main/res/drawable/emo_im_undecided.png
new file mode 100644
index 00000000..eb4f8c5b
--- /dev/null
+++ b/src/main/res/drawable/emo_im_undecided.png
Binary files differ
diff --git a/src/main/res/drawable/emo_im_winking.png b/src/main/res/drawable/emo_im_winking.png
new file mode 100644
index 00000000..568562ad
--- /dev/null
+++ b/src/main/res/drawable/emo_im_winking.png
Binary files differ
diff --git a/src/main/res/drawable/emo_im_wtf.png b/src/main/res/drawable/emo_im_wtf.png
new file mode 100644
index 00000000..41dd47fc
--- /dev/null
+++ b/src/main/res/drawable/emo_im_wtf.png
Binary files differ
diff --git a/src/main/res/drawable/emo_im_yelling.png b/src/main/res/drawable/emo_im_yelling.png
new file mode 100644
index 00000000..c3c8612b
--- /dev/null
+++ b/src/main/res/drawable/emo_im_yelling.png
Binary files differ
diff --git a/src/main/res/layout/contact.xml b/src/main/res/layout/contact.xml
index a7f5bef5..8a8e311b 100644
--- a/src/main/res/layout/contact.xml
+++ b/src/main/res/layout/contact.xml
@@ -11,8 +11,15 @@
android:layout_height="48dp"
android:layout_alignParentLeft="true"
android:scaleType="centerCrop"
- android:src="@drawable/ic_profile" >
- </ImageView>
+ android:src="@drawable/ic_profile" />
+ <TextView
+ android:layout_width="48dp"
+ android:layout_height="4dp"
+ android:textAppearance="?android:attr/textAppearanceSmall"
+ android:id="@+id/contact_status"
+ android:layout_below="@+id/contact_photo"
+ android:paddingTop="8dp"
+ android:paddingRight="8dp"/>
<LinearLayout
android:layout_width="wrap_content"
diff --git a/src/main/res/layout/conversation_list_row.xml b/src/main/res/layout/conversation_list_row.xml
index 28e526e0..602d3842 100644
--- a/src/main/res/layout/conversation_list_row.xml
+++ b/src/main/res/layout/conversation_list_row.xml
@@ -1,6 +1,10 @@
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
+<FrameLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:emojicon="http://schemas.android.com/apk/res-auto"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:orientation="horizontal"
+ android:padding="8dp"
android:descendantFocusability="blocksDescendants">
<View
@@ -8,7 +12,16 @@
android:layout_height="fill_parent"
android:background="@color/green500"/>
- <FrameLayout
+ <TextView
+ android:layout_width="56dp"
+ android:layout_height="4dp"
+ android:textAppearance="?android:attr/textAppearanceSmall"
+ android:id="@+id/status"
+ android:layout_below="@+id/conversation_image"
+ android:paddingTop="8dp"
+ android:paddingRight="8dp"/>
+
+ <FrameLayout
android:id="@+id/swipeable_item"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
@@ -27,13 +40,21 @@
android:layout_height="56dp"
android:layout_alignParentLeft="true"
android:scaleType="centerCrop" />
-
- <RelativeLayout
+<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_toRightOf="@+id/conversation_image"
android:paddingLeft="8dp" >
+ <github.ankushsachdeva.emojicon.EmojiconTextView
+ android:id="@+id/conversation_lastmsg"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:scrollHorizontally="false"
+ android:singleLine="true"
+ android:textColor="@color/primarytext"
+ android:textSize="?attr/TextSizeBody"
+ emojicon:emojiconSize="20sp" />
<TextView
android:id="@+id/conversation_name"
@@ -83,4 +104,4 @@
</RelativeLayout>
</RelativeLayout>
</FrameLayout>
-</FrameLayout> \ No newline at end of file
+</FrameLayout>
diff --git a/src/main/res/layout/fragment_conversation.xml b/src/main/res/layout/fragment_conversation.xml
index d0ac6ba7..3fd80aa2 100644
--- a/src/main/res/layout/fragment_conversation.xml
+++ b/src/main/res/layout/fragment_conversation.xml
@@ -33,8 +33,8 @@
android:id="@+id/textinput"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_alignParentLeft="true"
android:layout_toLeftOf="@+id/textSendButton"
+ android:layout_toRightOf="@+id/emoji_btn"
android:background="@color/grey50"
android:ems="10"
android:imeOptions="flagNoExtractUi|actionSend"
@@ -58,6 +58,15 @@
android:layout_centerVertical="true"
android:background="?android:selectableItemBackground"
android:src="@drawable/ic_send_text_offline" />
+
+ <ImageView
+ android:layout_width="48dp"
+ android:layout_height="48dp"
+ android:id="@+id/emoji_btn"
+ android:layout_centerVertical="true"
+ android:layout_alignParentLeft="true"
+ android:padding="4dp"
+ android:src="@drawable/smiley" />
</RelativeLayout>
<RelativeLayout
diff --git a/src/main/res/layout/message_received.xml b/src/main/res/layout/message_received.xml
index 44531b37..68ed5711 100644
--- a/src/main/res/layout/message_received.xml
+++ b/src/main/res/layout/message_received.xml
@@ -1,5 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<RelativeLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:emojicon="http://schemas.android.com/apk/res-auto"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
@@ -38,13 +40,14 @@
android:paddingBottom="2dp"
android:scaleType="centerCrop" />
- <TextView
+ <github.ankushsachdeva.emojicon.EmojiconTextView
android:id="@+id/message_body"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:autoLink="web"
android:textColor="@color/black87"
- android:textSize="?attr/TextSizeBody" />
+ android:textSize="?attr/TextSizeBody"
+ emojicon:emojiconSize="28sp" />
<Button
android:id="@+id/download_button"
diff --git a/src/main/res/layout/message_sent.xml b/src/main/res/layout/message_sent.xml
index f8365ad3..563e2e29 100644
--- a/src/main/res/layout/message_sent.xml
+++ b/src/main/res/layout/message_sent.xml
@@ -1,5 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<RelativeLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:emojicon="http://schemas.android.com/apk/res-auto"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
@@ -38,13 +40,14 @@
android:paddingBottom="2dp"
android:scaleType="centerCrop" />
- <TextView
+ <github.ankushsachdeva.emojicon.EmojiconTextView
android:id="@+id/message_body"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:autoLink="web"
android:textColor="@color/black87"
- android:textSize="?attr/TextSizeBody" />
+ android:textSize="?attr/TextSizeBody"
+ emojicon:emojiconSize="28sp" />
<Button
android:id="@+id/download_button"
diff --git a/src/main/res/values-ar-rEG/strings.xml b/src/main/res/values-ar-rEG/strings.xml
index c5a43674..79590fd6 100644
--- a/src/main/res/values-ar-rEG/strings.xml
+++ b/src/main/res/values-ar-rEG/strings.xml
@@ -96,7 +96,7 @@
<string name="pref_general">عام</string>
<string name="pref_xmpp_resource">الريسورس</string>
<string name="pref_accept_files">ضبط استقبال الملفات</string>
- <string name="pref_accept_files_summary">اقبل تلقائيا الملفات أقل من</string>
+ <string name="pref_accept_files_size_summary">اقبل تلقائيا الملفات أقل من</string>
<string name="pref_notification_settings">اعدادات الإشعارات</string>
<string name="pref_notifications">الإشعارات</string>
<string name="pref_notifications_summary">أخبرني عندما تصل رساله جديده</string>
diff --git a/src/main/res/values-bg/strings.xml b/src/main/res/values-bg/strings.xml
index cff228f7..73e64331 100644
--- a/src/main/res/values-bg/strings.xml
+++ b/src/main/res/values-bg/strings.xml
@@ -97,7 +97,7 @@
<string name="pref_xmpp_resource">XMPP ресурс</string>
<string name="pref_xmpp_resource_summary">Името, с което се определя този клиент</string>
<string name="pref_accept_files">Приемане на файлове</string>
- <string name="pref_accept_files_summary">Автоматично приемане на файлове с размер, по-малък от...</string>
+ <string name="pref_accept_files_size_summary">Автоматично приемане на файлове с размер, по-малък от...</string>
<string name="pref_notification_settings">Настройки за известията</string>
<string name="pref_notifications">Известия</string>
<string name="pref_notifications_summary">Известяване при получаване на ново съобщение</string>
diff --git a/src/main/res/values-ca/strings.xml b/src/main/res/values-ca/strings.xml
index b10fb617..6b673071 100644
--- a/src/main/res/values-ca/strings.xml
+++ b/src/main/res/values-ca/strings.xml
@@ -97,7 +97,7 @@
<string name="pref_xmpp_resource">Recursos XMPP</string>
<string name="pref_xmpp_resource_summary">El nom que identifica aquest client amb</string>
<string name="pref_accept_files">Acceptar fitxers</string>
- <string name="pref_accept_files_summary">Accepta fitxers automàticament amb una mida menor a…</string>
+ <string name="pref_accept_files_size_summary">Accepta fitxers automàticament amb una mida menor a…</string>
<string name="pref_notification_settings">Ajustos de notificacions</string>
<string name="pref_notifications">Notificacions</string>
<string name="pref_notifications_summary">Notifica quan arriba un nou missatge</string>
diff --git a/src/main/res/values-cs/strings.xml b/src/main/res/values-cs/strings.xml
index 190fd575..816abba8 100644
--- a/src/main/res/values-cs/strings.xml
+++ b/src/main/res/values-cs/strings.xml
@@ -97,7 +97,7 @@
<string name="pref_xmpp_resource">XMPP zdroj</string>
<string name="pref_xmpp_resource_summary">Jméno se kterým se tento klient identifikuje</string>
<string name="pref_accept_files">Přijímat soubory</string>
- <string name="pref_accept_files_summary">Automaticky přijímat soubory menší než…</string>
+ <string name="pref_accept_files_size_summary">Automaticky přijímat soubory menší než…</string>
<string name="pref_notification_settings">Nastavení upozornění</string>
<string name="pref_notifications">Upozornění</string>
<string name="pref_notifications_summary">Upozornit při přijetí nové zprávy</string>
diff --git a/src/main/res/values-de/strings.xml b/src/main/res/values-de/strings.xml
index efe00a4f..2d5337be 100644
--- a/src/main/res/values-de/strings.xml
+++ b/src/main/res/values-de/strings.xml
@@ -1,249 +1,261 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources>
- <string name="action_settings">Einstellungen</string>
- <string name="action_add">Neue Unterhaltung</string>
- <string name="action_accounts">Konten verwalten</string>
- <string name="action_end_conversation">Unterhaltung beenden</string>
+ <string name="action_settings">Einstellungen</string>
+ <string name="action_add">Neue Unterhaltung</string>
+ <string name="action_accounts">Konten verwalten</string>
+ <string name="action_end_conversation">Unterhaltung beenden</string>
<string name="action_contact_details">Kontakt-Details</string>
<string name="action_muc_details">Konferenz-Details</string>
- <string name="action_secure">Verschlüsselte Unterhaltung</string>
- <string name="action_add_account">Konto hinzufügen</string>
+ <string name="action_secure">Verschlüsselte Unterhaltung</string>
+ <string name="action_add_account">Konto hinzufügen</string>
<string name="action_edit_contact">Namen bearbeiten</string>
- <string name="action_add_phone_book">Zum Telefonbuch hinzufügen</string>
- <string name="action_delete_contact">Aus Kontaktliste entfernen</string>
- <string name="action_block_contact">Kontakt sperren</string>
- <string name="action_unblock_contact">Kontakt entsperren</string>
- <string name="action_block_domain">Domain sperren</string>
- <string name="action_unblock_domain">Domain entsperren</string>
- <string name="title_activity_manage_accounts">Konten verwalten</string>
- <string name="title_activity_settings">Einstellungen</string>
+ <string name="action_add_phone_book">Zum Telefonbuch hinzufügen</string>
+ <string name="action_delete_contact">Aus Kontaktliste entfernen</string>
+ <string name="action_block_contact">Kontakt sperren</string>
+ <string name="action_unblock_contact">Kontakt entsperren</string>
+ <string name="action_block_domain">Domain sperren</string>
+ <string name="action_unblock_domain">Domain entsperren</string>
+ <string name="title_activity_manage_accounts">Konten verwalten</string>
+ <string name="title_activity_settings">Einstellungen</string>
<string name="title_activity_conference_details">Konferenz-Details</string>
<string name="title_activity_contact_details">Kontakt-Details</string>
- <string name="title_activity_sharewith">Mit Unterhaltung teilen</string>
- <string name="title_activity_start_conversation">Beginne Unterhaltung</string>
- <string name="title_activity_choose_contact">Kontakt auswählen</string>
- <string name="title_activity_block_list">Sperrliste</string>
- <string name="just_now">gerade</string>
- <string name="minute_ago">vor einer Minute</string>
- <string name="minutes_ago">vor %d Minuten</string>
- <string name="unread_conversations">ungelesene Unterhaltungen</string>
+ <string name="title_activity_sharewith">Mit Unterhaltung teilen</string>
+ <string name="title_activity_start_conversation">Beginne Unterhaltung</string>
+ <string name="title_activity_choose_contact">Kontakt auswählen</string>
+ <string name="title_activity_block_list">Sperrliste</string>
+ <string name="just_now">gerade</string>
+ <string name="minute_ago">vor einer Minute</string>
+ <string name="minutes_ago">vor %d Minuten</string>
+ <string name="unread_conversations">ungelesene Unterhaltungen</string>
<string name="sending">senden…</string>
<string name="encrypted_message">Entschlüssele Nachricht. Bitte warten…</string>
- <string name="nick_in_use">Nickname wird bereits verwendet</string>
- <string name="admin">Administrator</string>
- <string name="owner">Eigentümer</string>
- <string name="moderator">Moderator</string>
- <string name="participant">Teilnehmer</string>
- <string name="visitor">Besucher</string>
- <string name="remove_contact_text">Möchtest du %s von deiner Kontaktliste entfernen? Die Unterhaltung mit diesem Kontakt wird dabei nicht entfernt.</string>
- <string name="block_contact_text">Möchtest du %s sperren und keine Nachrichten mehr erhalten?</string>
- <string name="unblock_contact_text">Möchtest du %s entsperren und wieder Nachrichten empfangen?</string>
- <string name="block_domain_text">Sperre alle Kontakte von %s?</string>
- <string name="unblock_domain_text">Entsperre alle Kontakte %s?</string>
- <string name="contact_blocked">Kontakt gesperrt</string>
+ <string name="nick_in_use">Nickname wird bereits verwendet</string>
+ <string name="admin">Administrator</string>
+ <string name="owner">Eigentümer</string>
+ <string name="moderator">Moderator</string>
+ <string name="participant">Teilnehmer</string>
+ <string name="visitor">Besucher</string>
+ <string name="remove_contact_text">Möchtest du %s von deiner Kontaktliste entfernen? Die Unterhaltung mit diesem Kontakt wird dabei nicht entfernt.</string>
+ <string name="block_contact_text">Möchtest du %s sperren und keine Nachrichten mehr erhalten?</string>
+ <string name="unblock_contact_text">Möchtest du %s entsperren und wieder Nachrichten empfangen?</string>
+ <string name="block_domain_text">Sperre alle Kontakte von %s?</string>
+ <string name="unblock_domain_text">Entsperre alle Kontakte %s?</string>
+ <string name="contact_blocked">Kontakt gesperrt</string>
<string name="remove_bookmark_text">Möchtest du %s von deiner Kontaktliste entfernen? Die Unterhaltung mit dieser Konferenz wird dabei nicht entfernt.</string>
- <string name="register_account">Neues Konto auf dem Server erstellen</string>
- <string name="change_password_on_server">Passwort ändern</string>
+ <string name="register_account">Neues Konto auf dem Server erstellen</string>
+ <string name="change_password_on_server">Passwort ändern</string>
<string name="share_with">Teile mit…</string>
- <string name="start_conversation">Beginne Unterhaltung</string>
- <string name="invite_contact">Kontakt einladen</string>
- <string name="contacts">Kontakte</string>
- <string name="cancel">Abbrechen</string>
- <string name="set">Einstellen</string>
- <string name="add">Hinzufügen</string>
- <string name="edit">Bearbeiten</string>
- <string name="delete">Entfernen</string>
- <string name="block">Sperren</string>
- <string name="unblock">Entsperren</string>
- <string name="save">Speichern</string>
- <string name="ok">OK</string>
- <string name="crash_report_title">Conversations ist abgestürzt</string>
- <string name="crash_report_message">Durch das Einsenden von Fehlerberichten hilfst du bei der stetigen Verbesserung von Conversations.\n<b>Achtung:</b> Dies wird eines deiner XMPP-Konten benutzen, um den Entwickler zu kontaktieren.</string>
- <string name="send_now">Jetzt abschicken</string>
- <string name="send_never">Nie mehr nachfragen</string>
- <string name="problem_connecting_to_account">Es gibt Probleme beim Verbindungsaufbau mit einem Konto</string>
- <string name="problem_connecting_to_accounts">Es gibt Probleme beim Verbindungsaufbau mit mehreren Konten</string>
- <string name="touch_to_fix">Drücke hier, um das Konto zu verwalten</string>
- <string name="attach_file">Datei anfügen</string>
- <string name="not_in_roster">Der Kontakt ist nicht in deiner Kontaktliste. Möchtest du ihn hinzufügen?</string>
+ <string name="start_conversation">Beginne Unterhaltung</string>
+ <string name="invite_contact">Kontakt einladen</string>
+ <string name="contacts">Kontakte</string>
+ <string name="cancel">Abbrechen</string>
+ <string name="set">Einstellen</string>
+ <string name="add">Hinzufügen</string>
+ <string name="edit">Bearbeiten</string>
+ <string name="delete">Entfernen</string>
+ <string name="block">Sperren</string>
+ <string name="unblock">Entsperren</string>
+ <string name="save">Speichern</string>
+ <string name="ok">OK</string>
+ <string name="crash_report_title">Conversations ist abgestürzt</string>
+ <string name="crash_report_message">Durch das Einsenden von Fehlerberichten hilfst du bei der stetigen Verbesserung von Conversations.\n<b>Achtung:</b> Dies wird eines deiner XMPP-Konten benutzen, um den Entwickler zu kontaktieren.</string>
+ <string name="send_now">Jetzt abschicken</string>
+ <string name="send_never">Nie mehr nachfragen</string>
+ <string name="problem_connecting_to_account">Es gibt Probleme beim Verbindungsaufbau mit einem Konto</string>
+ <string name="problem_connecting_to_accounts">Es gibt Probleme beim Verbindungsaufbau mit mehreren Konten</string>
+ <string name="touch_to_fix">Drücke hier, um das Konto zu verwalten</string>
+ <string name="attach_file">Datei anfügen</string>
+ <string name="not_in_roster">Der Kontakt ist nicht in deiner Kontaktliste. Möchtest du ihn hinzufügen?</string>
<string name="add_contact">Zur Kontaktliste hinzufügen</string>
- <string name="send_failed">Zustellung nicht erfolgreich</string>
- <string name="send_rejected">abgelehnt</string>
- <string name="preparing_image">Bereite Bild für die Übertragung vor</string>
- <string name="action_clear_history">Verlauf löschen</string>
+ <string name="send_failed">Zustellung nicht erfolgreich</string>
+ <string name="send_rejected">abgelehnt</string>
+ <string name="preparing_image">Bereite Bild für die Übertragung vor</string>
+ <string name="action_clear_history">Verlauf löschen</string>
<string name="clear_conversation_history">Verlauf löschen</string>
- <string name="clear_histor_msg">Möchtest du alle Nachrichten in dieser Unterhaltung löschen?\n\n<b>Achtung:</b> Dies beeinflusst nicht Nachrichten, die auf anderen Geräten oder Servern gespeichert sind.</string>
- <string name="delete_messages">Nachrichten löschen</string>
- <string name="also_end_conversation">Diese Unterhaltung danach beenden</string>
- <string name="choose_presence">Ressource des Kontakts auswählen</string>
+ <string name="clear_histor_msg">Möchtest du alle Nachrichten in dieser Unterhaltung löschen?\n\n<b>Achtung:</b> Dies beeinflusst nicht Nachrichten, die auf anderen Geräten oder Servern gespeichert sind.</string>
+ <string name="delete_messages">Nachrichten löschen</string>
+ <string name="also_end_conversation">Diese Unterhaltung danach beenden</string>
+ <string name="choose_presence">Ressource des Kontakts auswählen</string>
<string name="send_plain_text_message">Normal schreiben…</string>
<string name="send_otr_message">OTR-verschlüsselt schreiben…</string>
<string name="send_pgp_message">OpenPGP-verschlüsselt schreiben…</string>
- <string name="your_nick_has_been_changed">Dein Nickname wurde geändert</string>
+ <string name="your_nick_has_been_changed">Dein Nickname wurde geändert</string>
+ <string name="download_image">Bild herunterladen</string>
<string name="send_unencrypted">Normal verschicken</string>
- <string name="decryption_failed">Entschlüsselung fehlgeschlagen. Vielleicht hast du nicht den richtigen privaten Schlüssel.</string>
- <string name="openkeychain_required">OpenKeychain</string>
- <string name="openkeychain_required_long">Conversations benutzt eine Drittanwendung namens <b>OpenKeychain</b>, um Nachrichten zu ver- und entschlüsseln und um deine Schlüssel zu verwalten.\n\nOpenKeychain ist GPLv3-lizenziert und kann über F-Droid oder Google Play bezogen werden.\n\n<small>(Bitte starte Conversations danach neu.)</small></string>
+ <string name="decryption_failed">Entschlüsselung fehlgeschlagen. Vielleicht hast du nicht den richtigen privaten Schlüssel.</string>
+ <string name="openkeychain_required">OpenKeychain</string>
+ <string name="openkeychain_required_long">Conversations benutzt eine Drittanwendung namens <b>OpenKeychain</b>, um Nachrichten zu ver- und entschlüsseln und um deine Schlüssel zu verwalten.\n\nOpenKeychain ist GPLv3-lizenziert und kann über F-Droid oder Google Play bezogen werden.\n\n<small>(Bitte starte Conversations danach neu.)</small></string>
<string name="restart">Neu starten</string>
- <string name="install">Installieren</string>
+ <string name="install">Installieren</string>
<string name="offering">angeboten…</string>
<string name="waiting">warten…</string>
- <string name="no_pgp_key">Kein OpenPGP-Schlüssel gefunden</string>
- <string name="contact_has_no_pgp_key">Conversations ist nicht in der Lage, deine Nachrichten zu verschlüsseln, weil dein Kontakt seinen oder ihren Schlüssel nicht preisgibt.\n\n<small>Bitte sag deinem Kontakt, er oder sie möge OpenPGP einrichten.</small></string>
- <string name="no_pgp_keys">Keine OpenPGP-Schlüssel gefunden</string>
+ <string name="no_pgp_key">Kein OpenPGP-Schlüssel gefunden</string>
+ <string name="contact_has_no_pgp_key">Conversations ist nicht in der Lage, deine Nachrichten zu verschlüsseln, weil dein Kontakt seinen oder ihren Schlüssel nicht preisgibt.\n\n<small>Bitte sag deinem Kontakt, er oder sie möge OpenPGP einrichten.</small></string>
+ <string name="no_pgp_keys">Keine OpenPGP-Schlüssel gefunden</string>
<string name="contacts_have_no_pgp_keys">Conversations ist nicht in der Lage, deine Nachrichten zu verschlüsseln, weil deine Kontakte ihre Schlüssel nicht preisgeben.\n\n<small>Bitte sage deinen Kontakten, sie mögen OpenPGP einrichten.</small></string>
<string name="encrypted_message_received"><i>Verschlüsselte Nachricht erhalten. Drücke hier, um sie zu entschlüsseln und anzuzeigen.</i></string>
- <string name="pref_general">Allgemeines</string>
- <string name="pref_xmpp_resource">XMPP-Ressource</string>
- <string name="pref_xmpp_resource_summary">Der Name, mit dem sich der Client selbst identifiziert</string>
- <string name="pref_accept_files">Dateiannahme</string>
- <string name="pref_accept_files_summary">Dateien, die kleiner sind als …, automatisch annehmen</string>
- <string name="pref_notification_settings">Benachrichtigungen</string>
- <string name="pref_notifications">Benachrichtigungen</string>
- <string name="pref_notifications_summary">Benachrichtige mich, wenn eine neue Nachricht ankommt</string>
- <string name="pref_vibrate">Vibrieren</string>
- <string name="pref_vibrate_summary">Vibriere, wenn eine neue Nachricht ankommt</string>
- <string name="pref_sound">Klingelton</string>
- <string name="pref_sound_summary">Spiele Klingelton, wenn eine neue Nachricht ankommt</string>
- <string name="pref_conference_notifications">Konferenz-Benachrichtigungen</string>
+ <string name="pref_general">Allgemeines</string>
+ <string name="pref_xmpp_resource">XMPP-Ressource</string>
+ <string name="pref_xmpp_resource_summary">Der Name, mit dem sich der Client selbst identifiziert</string>
+ <string name="pref_accept_files">Dateiannahme</string>
+ <string name="pref_accept_files_summary">Einstellungen für Dateiannahme und automatischen Download</string>
+ <string name="pref_accept_files_size">Größe</string>
+ <string name="pref_accept_files_size_summary">Dateien, die kleiner sind als …, automatisch annehmen</string>
+ <string name="pref_accept_files_download">nur WLAN</string>
+ <string name="pref_accept_files_download_summary">Automatisches Herunterladen und Akzpetieren von Dateien nur im WLAN</string>
+ <string name="pref_accept_files_download_link">Bilder-Links</string>
+ <string name="pref_accept_files_download_link_summary">Bilder-Links automatisch herunterladen</string>
+ <string name="pref_notification_settings">Benachrichtigungen</string>
+ <string name="pref_notifications">Benachrichtigungen</string>
+ <string name="pref_notifications_summary">Benachrichtige mich, wenn eine neue Nachricht ankommt</string>
+ <string name="pref_vibrate">Vibrieren</string>
+ <string name="pref_vibrate_summary">Vibriere, wenn eine neue Nachricht ankommt</string>
+ <string name="pref_sound">Klingelton</string>
+ <string name="pref_sound_summary">Spiele Klingelton, wenn eine neue Nachricht ankommt</string>
+ <string name="pref_conference_notifications">Konferenz-Benachrichtigungen</string>
<string name="pref_conference_notifications_summary">Benachrichtige mich bei jeder Konferenz-Nachricht 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>
- <string name="pref_never_send_crash">Sende niemals Absturzberichte</string>
- <string name="pref_never_send_crash_summary">Wenn du Absturzberichte einschickst, hilfst du Conversations stetig zu verbessern</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>
+ <string name="pref_never_send_crash">Sende niemals Absturzberichte</string>
+ <string name="pref_never_send_crash_summary">Wenn du Absturzberichte einschickst, hilfst du Conversations stetig zu verbessern</string>
<string name="pref_confirm_messages">Lese- und Empfangsbestätigung senden</string>
- <string name="pref_confirm_messages_summary">Informiere deine Kontakte, wenn du eine Nachricht empfangen und gelesen hast</string>
- <string name="pref_ui_options">Benutzeroberfläche</string>
- <string name="openpgp_error">Fehler mit OpenKeychain</string>
- <string name="error_decrypting_file">Fehler beim Entschlüsseln der Datei</string>
- <string name="accept">Annehmen</string>
- <string name="error">Ein unbekannter Fehler ist aufgetreten</string>
- <string name="pref_grant_presence_updates">Online-Status</string>
- <string name="pref_grant_presence_updates_summary">Erlaube neu hinzugefügten Kontakten meinen Online-Status zu sehen und frage um Erlaubnis, ihren sehen zu dürfen</string>
- <string name="subscriptions">Abonnements</string>
- <string name="your_account">Dein Konto</string>
- <string name="keys">Schlüssel</string>
- <string name="send_presence_updates">Online-Status senden</string>
- <string name="receive_presence_updates">Online-Status empfangen</string>
- <string name="ask_for_presence_updates">Online-Status anfragen</string>
+ <string name="pref_confirm_messages_summary">Informiere deine Kontakte, wenn du eine Nachricht empfangen oder gelesen hast</string>
+ <string name="pref_confirm_messages_none">Keine Bestätigungen</string>
+ <string name="pref_confirm_messages_received">Nur Empfangsbestätigung</string>
+ <string name="pref_confirm_messages_read_and_received">Lese- und Empfangsbestätigung</string>
+ <string name="pref_ui_options">Benutzeroberfläche</string>
+ <string name="pref_parse_emoticons">Smilies ersetzen</string>
+ <string name="pref_parse_emoticons_summary">Zeige Smilie-Bilder anstelle von Emoticons.</string>
+ <string name="openpgp_error">Fehler mit OpenKeychain</string>
+ <string name="error_decrypting_file">Fehler beim Entschlüsseln der Datei</string>
+ <string name="accept">Annehmen</string>
+ <string name="error">Ein unbekannter Fehler ist aufgetreten</string>
+ <string name="pref_grant_presence_updates">Online-Status</string>
+ <string name="pref_grant_presence_updates_summary">Erlaube neu hinzugefügten Kontakten deinen online-Status zu sehen und frage um Erlaubnis, ihren sehen zu dürfen</string>
+ <string name="subscriptions">Abonnements</string>
+ <string name="your_account">Dein Konto</string>
+ <string name="keys">Schlüssel</string>
+ <string name="send_presence_updates">Anwesenheitsbenachrichtigungen senden</string>
+ <string name="receive_presence_updates">Empfange Anwesenheitsbenachrichtigungen</string>
+ <string name="ask_for_presence_updates">Frage um Erlaubnis, Anwesenheitsbenachrichtigungen sehen zu dürfen</string>
<string name="attach_choose_picture">Bild auswählen</string>
<string name="attach_take_picture">Bild aufnehmen</string>
- <string name="preemptively_grant">Erlaube Statusanfrage vorab</string>
- <string name="error_not_an_image_file">Die ausgewählte Datei ist kein Bild</string>
- <string name="error_compressing_image">Fehler beim Umwandeln des Bildes</string>
- <string name="error_file_not_found">Datei nicht gefunden</string>
- <string name="error_io_exception">Allgemeiner Fehler. Vielleicht hast du keinen Speicherplatz mehr?</string>
- <string name="error_security_exception_during_image_copy">Die App, mit der du das Bild ausgesucht hast, hat uns keine Rechte eingeräumt, das Bild zu betrachten.\n\n<small>Benutze einen anderen Dateimanager</small></string>
- <string name="account_status_unknown">Unbekannt</string>
- <string name="account_status_disabled">Vorübergehend abgeschaltet</string>
- <string name="account_status_online">Online</string>
+ <string name="preemptively_grant">Erlaube Statusanfrage vorab</string>
+ <string name="error_not_an_image_file">Die ausgewählte Datei ist kein Bild</string>
+ <string name="error_compressing_image">Fehler beim Umwandeln des Bildes</string>
+ <string name="error_file_not_found">Datei nicht gefunden</string>
+ <string name="error_io_exception">Allgemeiner Fehler. Vielleicht hast du keinen Speicherplatz mehr?</string>
+ <string name="error_security_exception_during_image_copy">Die App, mit der du das Bild ausgesucht hast, hat uns keine Rechte eingeräumt, das Bild zu betrachten.\n\n<small>Benutze einen anderen Dateimanager</small></string>
+ <string name="account_status_unknown">Unbekannt</string>
+ <string name="account_status_disabled">Vorübergehend abgeschaltet</string>
+ <string name="account_status_online">Online</string>
<string name="account_status_connecting">Verbinde…</string>
- <string name="account_status_offline">Offline</string>
- <string name="account_status_unauthorized">Ungültige Zugangsdaten</string>
- <string name="account_status_not_found">Server nicht gefunden</string>
- <string name="account_status_no_internet">Keine Internetverbindung</string>
- <string name="account_status_regis_fail">Registrierung fehlgeschlagen</string>
- <string name="account_status_regis_conflict">Benutzername wird bereits verwendet</string>
- <string name="account_status_regis_success">Registrierung abgeschlossen</string>
- <string name="account_status_regis_not_sup">Der Server unterstützt keine Registrierung</string>
- <string name="account_status_security_error">Sicherheitsfehler</string>
- <string name="account_status_incompatible_server">Inkompatibler Server</string>
- <string name="encryption_choice_none">Klartext</string>
- <string name="encryption_choice_otr">OTR</string>
- <string name="encryption_choice_pgp">OpenPGP</string>
- <string name="mgmt_account_edit">Konto bearbeiten</string>
- <string name="mgmt_account_delete">Löschen</string>
- <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="mgmt_account_enable">Anschalten</string>
- <string name="mgmt_account_are_you_sure">Bist du dir sicher?</string>
+ <string name="account_status_offline">Offline</string>
+ <string name="account_status_unauthorized">Ungültige Zugangsdaten</string>
+ <string name="account_status_not_found">Server nicht gefunden</string>
+ <string name="account_status_no_internet">Keine Internetverbindung</string>
+ <string name="account_status_regis_fail">Registrierung fehlgeschlagen</string>
+ <string name="account_status_regis_conflict">Benutzername wird bereits verwendet</string>
+ <string name="account_status_regis_success">Registrierung abgeschlossen</string>
+ <string name="account_status_regis_not_sup">Der Server unterstützt keine Registrierung</string>
+ <string name="account_status_security_error">Sicherheitsfehler</string>
+ <string name="account_status_incompatible_server">Inkompatibler Server</string>
+ <string name="encryption_choice_none">Klartext</string>
+ <string name="encryption_choice_otr">OTR</string>
+ <string name="encryption_choice_pgp">OpenPGP</string>
+ <string name="mgmt_account_edit">Konto bearbeiten</string>
+ <string name="mgmt_account_delete">Löschen</string>
+ <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="mgmt_account_enable">Anschalten</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>
- <string name="attach_record_voice">Sprache aufzeichnen</string>
+ <string name="attach_record_voice">Sprache aufzeichnen</string>
<string name="account_settings_jabber_id">Jabber-ID</string>
<string name="account_settings_password">Passwort</string>
- <string name="account_settings_example_jabber_id">benutzer@domain.de</string>
- <string name="account_settings_confirm_password">Passwort bestätigen</string>
- <string name="password">Passwort</string>
- <string name="confirm_password">Passwort bestätigen</string>
- <string name="passwords_do_not_match">Passwörter stimmen nicht überein</string>
- <string name="invalid_jid">Ungültige Jabber-ID</string>
- <string name="error_out_of_memory">Zu wenig Speicher vorhanden. Das Bild ist zu groß</string>
- <string name="add_phone_book_text">Möchtest du %s zum Telefonbuch hinzufügen?</string>
+ <string name="account_settings_example_jabber_id">benutzer@domain.de</string>
+ <string name="account_settings_confirm_password">Passwort bestätigen</string>
+ <string name="password">Passwort</string>
+ <string name="confirm_password">Passwort bestätigen</string>
+ <string name="passwords_do_not_match">Passwörter stimmen nicht überein</string>
+ <string name="invalid_jid">Ungültige Jabber-ID</string>
+ <string name="error_out_of_memory">Zu wenig Speicher vorhanden. Das Bild ist zu groß</string>
+ <string name="add_phone_book_text">Möchtest du %s zum Telefonbuch hinzufügen?</string>
<string name="contact_status_online">online</string>
- <string name="contact_status_free_to_chat">Bereit</string>
- <string name="contact_status_away">Abwesend</string>
- <string name="contact_status_extended_away">Abwesend (erweitert)</string>
- <string name="contact_status_do_not_disturb">Nicht stören</string>
- <string name="contact_status_offline">Offline</string>
- <string name="muc_details_conference">Konferenz</string>
- <string name="muc_details_other_members">Andere Mitglieder</string>
- <string name="server_info_show_more">Server Info</string>
- <string name="server_info_mam">XEP-0313: MAM</string>
- <string name="server_info_carbon_messages">XEP-0280: Message Carbons</string>
+ <string name="contact_status_free_to_chat">Bereit</string>
+ <string name="contact_status_away">Abwesend</string>
+ <string name="contact_status_extended_away">Abwesend (erweitert)</string>
+ <string name="contact_status_do_not_disturb">Nicht stören</string>
+ <string name="contact_status_offline">Offline</string>
+ <string name="muc_details_conference">Konferenz</string>
+ <string name="muc_details_other_members">Andere Mitglieder</string>
+ <string name="server_info_show_more">Server Info</string>
+ <string name="server_info_mam">XEP-0313: MAM</string>
+ <string name="server_info_carbon_messages">XEP-0280: Message Carbons</string>
<string name="server_info_csi">XEP-0352: CSI</string>
- <string name="server_info_blocking">XEP-0191: Blocking Command</string>
- <string name="server_info_roster_version">XEP-0237: Roster Versioning</string>
- <string name="server_info_stream_management">XEP-0198: Stream Management</string>
- <string name="server_info_pep">XEP-0163: PEP (Avatare)</string>
+ <string name="server_info_blocking">XEP-0191: Blocking Command</string>
+ <string name="server_info_roster_version">XEP-0237: Roster Versioning</string>
+ <string name="server_info_stream_management">XEP-0198: Stream Management</string>
+ <string name="server_info_pep">XEP-0163: PEP (Avatare)</string>
<string name="server_info_available">ja</string>
<string name="server_info_unavailable">nein</string>
- <string name="missing_public_keys">Öffentlicher Schlüssel fehlt</string>
- <string name="last_seen_now">online</string>
- <string name="last_seen_min">vor einer Minute gesehen</string>
- <string name="last_seen_mins">vor %d Minuten gesehen</string>
- <string name="last_seen_hour">vor einer Stunde gesehen</string>
- <string name="last_seen_hours">vor %d Stunden gesehen</string>
- <string name="last_seen_day">vor einem Tag gesehen</string>
- <string name="last_seen_days">vor %d Tagen gesehen</string>
- <string name="never_seen">noch nie gesehen</string>
- <string name="install_openkeychain">Verschlüsselte Nachricht. Bitte installiere OpenKeychain zur Entschlüsselung.</string>
- <string name="unknown_otr_fingerprint">Unbekannter OTR-Fingerabdruck</string>
- <string name="openpgp_messages_found">Verschlüsselte OpenPGP-Nachricht gefunden</string>
- <string name="reception_failed">Empfang ist fehlgeschlagen</string>
- <string name="your_fingerprint">Dein Fingerabdruck</string>
- <string name="otr_fingerprint">OTR-Fingerabdruck</string>
- <string name="verify">Verifizieren</string>
- <string name="decrypt">Entschlüsseln</string>
- <string name="conferences">Konferenzen</string>
- <string name="search">Suche</string>
- <string name="create_contact">Kontakt erstellen</string>
+ <string name="missing_public_keys">Öffentlicher Schlüssel fehlt</string>
+ <string name="last_seen_now">online</string>
+ <string name="last_seen_min">vor einer Minute gesehen</string>
+ <string name="last_seen_mins">vor %d Minuten gesehen</string>
+ <string name="last_seen_hour">vor einer Stunde gesehen</string>
+ <string name="last_seen_hours">vor %d Stunden gesehen</string>
+ <string name="last_seen_day">vor einem Tag gesehen</string>
+ <string name="last_seen_days">vor %d Tagen gesehen</string>
+ <string name="never_seen">noch nie gesehen</string>
+ <string name="install_openkeychain">Verschlüsselte Nachricht. Bitte installiere OpenKeychain zur Entschlüsselung.</string>
+ <string name="unknown_otr_fingerprint">Unbekannter OTR-Fingerabdruck</string>
+ <string name="openpgp_messages_found">Verschlüsselte OpenPGP-Nachricht gefunden</string>
+ <string name="reception_failed">Empfang ist fehlgeschlagen</string>
+ <string name="your_fingerprint">Dein Fingerabdruck</string>
+ <string name="otr_fingerprint">OTR-Fingerabdruck</string>
+ <string name="verify">Verifizieren</string>
+ <string name="decrypt">Entschlüsseln</string>
+ <string name="conferences">Konferenzen</string>
+ <string name="search">Suche</string>
+ <string name="create_contact">Kontakt erstellen</string>
<string name="join_conference">Konferenz betreten</string>
- <string name="delete_contact">Kontakt löschen</string>
+ <string name="delete_contact">Kontakt löschen</string>
<string name="view_contact_details">Kontakt-Details anzeigen</string>
- <string name="block_contact">Kontakt sperren</string>
+ <string name="block_contact">Kontakt sperren</string>
<string name="unblock_contact">Kontakt entsperren</string>
- <string name="create">Erstellen</string>
- <string name="contact_already_exists">Der Kontakt existiert bereits</string>
- <string name="join">Beitreten</string>
+ <string name="create">Erstellen</string>
+ <string name="contact_already_exists">Der Kontakt existiert bereits</string>
+ <string name="join">Beitreten</string>
<string name="conference_address">Konferenz-Adresse</string>
<string name="conference_address_example">raum@conference.domain.de</string>
<string name="save_as_bookmark">Zur Kontaktliste hinzufügen</string>
<string name="delete_bookmark">Von Kontaktliste entfernen</string>
<string name="bookmark_already_exists">Die Konferenz befindet sich bereits auf deiner Kontaktliste</string>
- <string name="you">Du</string>
+ <string name="you">Du</string>
<string name="action_edit_subject">Konferenz-Thema anpassen</string>
- <string name="conference_not_found">Konferenz nicht gefunden</string>
- <string name="leave">Verlassen</string>
- <string name="contact_added_you">Der Kontakt hat dich zur Kontaktliste hinzugefügt</string>
- <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="conference_not_found">Konferenz nicht gefunden</string>
+ <string name="leave">Verlassen</string>
+ <string name="contact_added_you">Der Kontakt hat dich zur Kontaktliste hinzugefügt</string>
+ <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">Hier klicken, um einen Avatar auszuwählen</string>
- <string name="publish_avatar_explanation">Achtung: Jeder, der deinen Status sehen darf, sieht auch deinen Avatar.</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>
- <string name="error_publish_avatar_converting">Bei der Konvertierung des Avatars lief etwas schief.</string>
- <string name="error_saving_avatar">Kann Avatar nicht speichern.</string>
- <string name="or_long_press_for_default">(Oder klicke lange, um Standard wiederherzustellen)</string>
- <string name="error_publish_avatar_no_server_support">Dein Server unterstützt die Veröffentlichung von Avataren nicht.</string>
+ <string name="error_publish_avatar_server_reject">Der Server hat die Veröffentlichung des Avatars abgelehnt.</string>
+ <string name="error_publish_avatar_converting">Bei der Konvertierung des Avatars lief etwas schief.</string>
+ <string name="error_saving_avatar">Kann Avatar nicht speichern.</string>
+ <string name="or_long_press_for_default">(Oder klicke lange, um Standard wiederherzustellen)</string>
+ <string name="error_publish_avatar_no_server_support">Dein Server unterstützt die Veröffentlichung von Avataren nicht.</string>
<string name="private_message">private Nachricht:</string>
<string name="private_message_to">privat an %s:</string>
<string name="send_private_message_to">Sende private Nachricht an %s…</string>
- <string name="connect">Verbinden</string>
- <string name="account_already_exists">Das Konto existiert bereits</string>
- <string name="next">Weiter</string>
+ <string name="connect">Verbinden</string>
+ <string name="account_already_exists">Das Konto existiert bereits</string>
+ <string name="next">Weiter</string>
<string name="server_info_session_established">Sitzung wiederhergestellt</string>
<string name="additional_information">Zusätzliche Informationen</string>
<string name="skip">Überspringen</string>
@@ -278,12 +290,12 @@
<string name="pref_use_larger_font_summary">Größere Schrift verwenden</string>
<string name="pref_use_send_button_to_indicate_status">Absende-Knopf zeigt Online-Status an</string>
<string name="pref_use_indicate_received">Anfrage für Nachrichtenempfang</string>
- <string name="pref_use_indicate_received_summary">Empfangene Nachrichten werden mit einem grünen Häkchen markiert. Bitte beachte, dass dies nicht in allen Fällen funktioniert.</string>
+ <string name="pref_use_indicate_received_summary">Empfangene Nachrichten werden mit einem grünen Häkchen markiert. Bitte beachte, dass dies nicht in allen Fällen funktioniert.</string>
<string name="pref_use_send_button_to_indicate_status_summary">Absende-Knopf einfärben, um den Online-Status des Kontakts zu signalisieren</string>
- <string name="pref_expert_options_other">Sonstiges</string>
- <string name="pref_conference_name">Konferenz-Name</string>
- <string name="pref_conference_name_summary">Konferenz-Thema statt Raum-JID als Namen verwenden</string>
- <string name="toast_message_otr_fingerprint">OTR-Fingerabdruck in die Zwischenablage kopiert!</string>
+ <string name="pref_expert_options_other">Sonstiges</string>
+ <string name="pref_conference_name">Konferenz-Name</string>
+ <string name="pref_conference_name_summary">Konferenz-Thema statt Raum-JID als Namen verwenden</string>
+ <string name="toast_message_otr_fingerprint">OTR-Fingerabdruck in die Zwischenablage kopiert!</string>
<string name="conference_banned">Du wurdest von der Konferenz ausgeschlossen</string>
<string name="conference_members_only">Die Konferenz ist nur für Mitglieder</string>
<string name="conference_kicked">Du wurdest aus der Konferenz geworfen</string>
@@ -304,71 +316,72 @@
<string name="show_qr_code">Zeige QR-Code</string>
<string name="show_block_list">Zeige Sperrliste</string>
<string name="account_details">Konto-Details</string>
- <string name="verify_otr">Prüfe OTR</string>
- <string name="remote_fingerprint">Fingerabdruck der Gegenseite</string>
- <string name="scan">Scanne</string>
- <string name="or_touch_phones">(oder Touch-Handys)</string>
- <string name="smp">Socialist Millionaire Protocol</string>
- <string name="shared_secret_hint">Hinweis oder Frage</string>
- <string name="shared_secret_secret">Gemeinsamer Schlüssel</string>
- <string name="confirm">Bestätige</string>
- <string name="in_progress">In Bearbeitung</string>
- <string name="respond">Antworten</string>
- <string name="failed">Fehlgeschlagen</string>
- <string name="secrets_do_not_match">Schlüssel stimmen nicht überein</string>
- <string name="try_again">Erneut versuchen</string>
- <string name="finish">Fertig</string>
- <string name="verified">Überprüft!</string>
+ <string name="verify_otr">Prüfe OTR</string>
+ <string name="remote_fingerprint">Fingerabdruck der Gegenseite</string>
+ <string name="scan">Scanne</string>
+ <string name="or_touch_phones">(oder Touch-Handys)</string>
+ <string name="smp">Socialist Millionaire Protocol</string>
+ <string name="shared_secret_hint">Hinweis oder Frage</string>
+ <string name="shared_secret_secret">Gemeinsamer Schlüssel</string>
+ <string name="confirm">Bestätige</string>
+ <string name="in_progress">In Bearbeitung</string>
+ <string name="respond">Antworten</string>
+ <string name="failed">Fehlgeschlagen</string>
+ <string name="secrets_do_not_match">Schlüssel stimmen nicht überein</string>
+ <string name="try_again">Erneut versuchen</string>
+ <string name="finish">Fertig</string>
+ <string name="verified">Überprüft!</string>
<string name="smp_requested">Kontakt fordert eine Überprüfung an</string>
- <string name="no_otr_session_found">Keine gültige OTR Sitzung gefunden!</string>
- <string name="conversations_foreground_service">Conversations</string>
- <string name="pref_keep_foreground_service">Den Dienst im Vordergrund ausführen.</string>
+ <string name="no_otr_session_found">Keine gültige OTR Sitzung gefunden!</string>
+ <string name="conversations_foreground_service">Conversations</string>
+ <string name="pref_keep_foreground_service">Den Dienst im Vordergrund ausführen.</string>
<string name="pref_keep_foreground_service_summary">Verhindert, dass Android Conversations beendet und die Verbindung unterbricht</string>
- <string name="choose_file">Datei auswählen</string>
+ <string name="choose_file">Datei auswählen</string>
<string name="receiving_x_file">Empfange %1$s (%2$d%% abgeschlossen)</string>
<string name="download_x_file">Lade %s herunter</string>
<string name="file">Datei</string>
<string name="open_x_file">Öffne %s</string>
<string name="sending_file">Sende (%1$d%% gesendet)</string>
- <string name="preparing_file">Bereite Datei für die Übertragung vor</string>
+ <string name="preparing_file">Bereite Datei für die Übertragung vor</string>
<string name="x_file_offered_for_download">%s zum Herunterladen angeboten</string>
- <string name="cancel_transmission">Datei-Übertragung abbrechen</string>
- <string name="file_transmission_failed">Datei-Übertragung fehlgeschlagen</string>
- <string name="file_deleted">Datei wurde gelöscht</string>
- <string name="no_application_found_to_open_file">Keine Anwendung zum Öffnen der Datei gefunden</string>
- <string name="could_not_verify_fingerprint">Kann Fingerabdruck nicht überprüfen</string>
- <string name="manually_verify">Manuell überprüfen</string>
- <string name="are_you_sure_verify_fingerprint">Bist du sicher, dass du den OTR-Fingerabdruck des Kontakts überprüfen willst?</string>
- <string name="pref_show_dynamic_tags">Dynamische Tags anzeigen</string>
- <string name="pref_show_dynamic_tags_summary">Zeige schreibgeschützte Tags unterhalb der Kontakte</string>
- <string name="enable_notifications">Aktiviere Benachrichtigungen</string>
+ <string name="cancel_transmission">Datei-Übertragung abbrechen</string>
+ <string name="file_transmission_failed">Datei-Übertragung fehlgeschlagen</string>
+ <string name="file_deleted">Datei wurde gelöscht</string>
+ <string name="no_application_found_to_open_file">Keine Anwendung zum Öffnen der Datei gefunden</string>
+ <string name="could_not_verify_fingerprint">Kann Fingerabdruck nicht überprüfen</string>
+ <string name="manually_verify">Manuell überprüfen</string>
+ <string name="are_you_sure_verify_fingerprint">Bist du sicher, dass du den OTR-Fingerabdruck des Kontakts überprüfen willst?</string>
+ <string name="pref_show_dynamic_tags">Dynamische Tags anzeigen</string>
+ <string name="pref_show_dynamic_tags_summary">Zeige schreibgeschützte Tags unterhalb der Kontakte</string>
+ <string name="enable_notifications">Aktiviere Benachrichtigungen</string>
<string name="conference_with">Beginne Konferenz mit…</string>
- <string name="no_conference_server_found">Konferenz-Server kann nicht gefunden werden</string>
+ <string name="no_conference_server_found">Konferenz-Server kann nicht gefunden werden</string>
<string name="conference_creation_failed">Beginnen 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>
- <string name="copy_otr_clipboard_description">OTR-Fingerabdruck in Zwischenablage kopieren</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>
+ <string name="copy_otr_clipboard_description">OTR-Fingerabdruck in Zwischenablage kopieren</string>
<string name="fetching_history_from_server">Lade Chatverlauf…</string>
<string name="no_more_history_on_server">Keine weiteren Nachrichten vorhanden</string>
<string name="updating">Aktualisiere…</string>
- <string name="password_changed">Passwort geändert.</string>
- <string name="could_not_change_password">Passwort kann nicht geändert werden.</string>
- <string name="otr_session_not_started">Sende eine Nachricht, um eine verschlüsselte Unterhaltung zu beginnen</string>
- <string name="ask_question">Frage stellen</string>
- <string name="smp_explain_question">Falls du mit deinem Kontakt ein gemeinsames Geheimnis hast (z.B. ein Insider-Witz oder was ihr zuletzt gemeinsam zum Mittag gegessen habt), kann dies zur gegenseitigen Überprüfung des Fingerabdrucks genutzt werden.\n\nDu stellst eine Frage oder gibst einen Hinweis und dein Kontakt gibt eine eindeutige Antwort.</string>
- <string name="smp_explain_answer">Dein Kontakt möchte deinen Fingerabdruck mit Hilfe eines gemeinsamen Schlüssels überprüfen. Dein Kontakt hat dazu folgende Frage gestellt.</string>
- <string name="shared_secret_hint_should_not_be_empty">Deine Frage darf nicht leer sein.</string>
- <string name="shared_secret_can_not_be_empty">Dein gemeinsamer Schlüssel darf nicht leer sein</string>
- <string name="manual_verification_explanation">Vergleiche den angezeigten Fingerabdruck sorgfältig mit dem deines Kontakts.\nDu kannst dazu einen sicheren Kommunikationsweg (z.B. verschlüsselte E-Mail oder Telefonanruf) zum Austausch nutzen.</string>
- <string name="change_password">Passwort ändern</string>
- <string name="current_password">Aktuelles Passwort</string>
- <string name="new_password">Neues Passwort</string>
- <string name="password_should_not_be_empty">Das Passwort darf nicht leer sein</string>
- <string name="enable_all_accounts">Alle Konten anschalten</string>
- <string name="disable_all_accounts">Alle Konten abschalten</string>
- <string name="perform_action_with">Aktion durchführen mit</string>
+ <string name="password_changed">Passwort geändert.</string>
+ <string name="could_not_change_password">Passwort kann nicht geändert werden.</string>
+ <string name="otr_session_not_started">Sende eine Nachricht, um eine verschlüsselte Unterhaltung zu beginnen</string>
+ <string name="ask_question">Frage stellen</string>
+ <string name="smp_explain_question">Falls du mit deinem Kontakt ein gemeinsames Geheimnis hast (z.B. ein Insider-Witz oder was ihr zuletzt gemeinsam zum Mittag gegessen habt), kann dies zur gegenseitigen Überprüfung des Fingerabdrucks genutzt werden.\n\nDu stellst eine Frage oder gibst einen Hinweis und dein Kontakt gibt eine eindeutige Antwort.</string>
+ <string name="smp_explain_answer">Dein Kontakt möchte deinen Fingerabdruck mit Hilfe eines gemeinsamen Schlüssels überprüfen. Dein Kontakt hat dazu folgende Frage gestellt.</string>
+ <string name="shared_secret_hint_should_not_be_empty">Deine Frage darf nicht leer sein.</string>
+ <string name="shared_secret_can_not_be_empty">Dein gemeinsamer Schlüssel darf nicht leer sein</string>
+ <string name="manual_verification_explanation">Vergleiche den angezeigten Fingerabdruck sorgfältig mit dem deines Kontakts.\nDu kannst dazu einen sicheren Kommunikationsweg (z.B. verschlüsselte E-Mail oder Telefonanruf) zum Austausch nutzen.</string>
+ <string name="change_password">Passwort ändern</string>
+ <string name="current_password">Aktuelles Passwort</string>
+ <string name="new_password">Neues Passwort</string>
+ <string name="password_should_not_be_empty">Das Passwort darf nicht leer sein</string>
+ <string name="password_should_not_contain_only_spaces">Das Passwort darf nicht nur aus Leerzeichen bestehen</string>
+ <string name="enable_all_accounts">Alle Konten anschalten</string>
+ <string name="disable_all_accounts">Alle Konten abschalten</string>
+ <string name="perform_action_with">Aktion durchführen mit</string>
<string name="no_affiliation">Keine Zugehörigkeit</string>
<string name="no_role">Keine Rolle</string>
<string name="outcast">Ausgeschlossen</string>
@@ -451,4 +464,6 @@
<string name="choose_quick_action">wähle Schnell-Taste</string>
<string name="file_not_found_on_remote_host">Datei auf Server nicht gefunden</string>
<string name="search_for_contacts_or_groups">Nach Kontakten oder Konferenzen suchen</string>
+ <string name="pref_led_notification_color">LED-Benachrichtigung Farbe</string>
+ <string name="pref_led_notification_color_summary">Setze die Farbe der LED-Benachrichtigung</string>
</resources>
diff --git a/src/main/res/values-el/strings.xml b/src/main/res/values-el/strings.xml
index d796cd6d..0e2dc010 100644
--- a/src/main/res/values-el/strings.xml
+++ b/src/main/res/values-el/strings.xml
@@ -97,7 +97,7 @@
<string name="pref_xmpp_resource">πόρος XMPP</string>
<string name="pref_xmpp_resource_summary">Το όνομα με το οποίο ταυτοποιείται αυτό το πρόγραμμα-πελάτης</string>
<string name="pref_accept_files">Αποδοχή αρχείων</string>
- <string name="pref_accept_files_summary">Αυτόματη αποδοχή αρχείων μικρότερα από...</string>
+ <string name="pref_accept_files_size_summary">Αυτόματη αποδοχή αρχείων μικρότερα από...</string>
<string name="pref_notification_settings">Επιλογές ειδοποιήσεων</string>
<string name="pref_notifications">Ειδοποιήσεις</string>
<string name="pref_notifications_summary">Ειδοποίηση όταν λαμβάνεται ένα νέο μήνυμα</string>
diff --git a/src/main/res/values-es/strings.xml b/src/main/res/values-es/strings.xml
index 29938612..4d8bef38 100644
--- a/src/main/res/values-es/strings.xml
+++ b/src/main/res/values-es/strings.xml
@@ -97,7 +97,7 @@
<string name="pref_xmpp_resource">Recurso</string>
<string name="pref_xmpp_resource_summary">El nombre que identifica el cliente que estás utilizando</string>
<string name="pref_accept_files">Aceptar archivos</string>
- <string name="pref_accept_files_summary">De forma automática aceptar archivos menores que…</string>
+ <string name="pref_accept_files_size_summary">De forma automática aceptar archivos menores que…</string>
<string name="pref_notification_settings">Ajustes de notificación</string>
<string name="pref_notifications">Notificaciones</string>
<string name="pref_notifications_summary">Notifica cuando llega un nuevo mensaje</string>
diff --git a/src/main/res/values-eu/strings.xml b/src/main/res/values-eu/strings.xml
index 028acc53..ffc276cc 100644
--- a/src/main/res/values-eu/strings.xml
+++ b/src/main/res/values-eu/strings.xml
@@ -97,7 +97,7 @@
<string name="pref_xmpp_resource">XMPP baliabidea</string>
<string name="pref_xmpp_resource_summary">Bezero honek bere burua aurkezteko erabiltzen duen izena</string>
<string name="pref_accept_files">Fitxategiak onartu</string>
- <string name="pref_accept_files_summary">Hurrengo tamaina baino fitxategi txikiagoak automatikoki onartu…</string>
+ <string name="pref_accept_files_size_summary">Hurrengo tamaina baino fitxategi txikiagoak automatikoki onartu…</string>
<string name="pref_notification_settings">Jakinarazpenen ezarpenak</string>
<string name="pref_notifications">Jakinarazpenak</string>
<string name="pref_notifications_summary">Mezu berri bat heltzerakoan jakinarazi</string>
diff --git a/src/main/res/values-fr/strings.xml b/src/main/res/values-fr/strings.xml
index 05ac82ac..0a42b56a 100644
--- a/src/main/res/values-fr/strings.xml
+++ b/src/main/res/values-fr/strings.xml
@@ -97,7 +97,7 @@
<string name="pref_xmpp_resource">Ressource XMPP</string>
<string name="pref_xmpp_resource_summary">Nom permettant d\'identifier ce client XMPP</string>
<string name="pref_accept_files">Accepter les fichiers</string>
- <string name="pref_accept_files_summary">Accepter automatiquement les fichiers plus petits que…</string>
+ <string name="pref_accept_files_size_summary">Accepter automatiquement les fichiers plus petits que…</string>
<string name="pref_notification_settings">Paramètres de notification</string>
<string name="pref_notifications">Notifications</string>
<string name="pref_notifications_summary">Notifier l\'arrivée d\'un message</string>
diff --git a/src/main/res/values-gl/strings.xml b/src/main/res/values-gl/strings.xml
index 477b7580..ff6c5eeb 100644
--- a/src/main/res/values-gl/strings.xml
+++ b/src/main/res/values-gl/strings.xml
@@ -61,7 +61,7 @@
<string name="pref_xmpp_resource">Recurso</string>
<string name="pref_xmpp_resource_summary">O nome que identifica o cliente que estás a empregar</string>
<string name="pref_accept_files">Aceptar arquivos</string>
- <string name="pref_accept_files_summary">De forma automática aceptar arquivos menores de…</string>
+ <string name="pref_accept_files_size_summary">De forma automática aceptar arquivos menores de…</string>
<string name="pref_notification_settings">Axustes de notificación</string>
<string name="pref_notifications">Notificacións</string>
<string name="pref_notifications_summary">Notifica cuando chega unha nova mensaxe</string>
diff --git a/src/main/res/values-it/strings.xml b/src/main/res/values-it/strings.xml
index 01299530..8397b043 100644
--- a/src/main/res/values-it/strings.xml
+++ b/src/main/res/values-it/strings.xml
@@ -97,7 +97,7 @@
<string name="pref_xmpp_resource">Risorsa XMPP</string>
<string name="pref_xmpp_resource_summary">Il nome con il quale questo client si identifica</string>
<string name="pref_accept_files">Accetta i file</string>
- <string name="pref_accept_files_summary">Accetta automaticamente i file più piccoli di…</string>
+ <string name="pref_accept_files_size_summary">Accetta automaticamente i file più piccoli di…</string>
<string name="pref_notification_settings">Impostazioni di Notifica</string>
<string name="pref_notifications">Notifiche</string>
<string name="pref_notifications_summary">Notifica quando arriva un nuovo messaggio</string>
diff --git a/src/main/res/values-iw/strings.xml b/src/main/res/values-iw/strings.xml
index 545ba1c8..cc12c7d0 100644
--- a/src/main/res/values-iw/strings.xml
+++ b/src/main/res/values-iw/strings.xml
@@ -82,7 +82,7 @@
<string name="pref_xmpp_resource">משאב XMPP</string>
<string name="pref_xmpp_resource_summary">השם שלקוח זה מזהה את עצמו עם</string>
<string name="pref_accept_files">קבל קבצים</string>
- <string name="pref_accept_files_summary">קבל אוטומטית קבצים קטנים יותר מאשר…</string>
+ <string name="pref_accept_files_size_summary">קבל אוטומטית קבצים קטנים יותר מאשר…</string>
<string name="pref_notification_settings">הגדרות התראה</string>
<string name="pref_notifications">התראות</string>
<string name="pref_notifications_summary">תודיע כאשר הודעה חדשה מגיעה</string>
diff --git a/src/main/res/values-nl/strings.xml b/src/main/res/values-nl/strings.xml
index 80b6934b..2873a793 100644
--- a/src/main/res/values-nl/strings.xml
+++ b/src/main/res/values-nl/strings.xml
@@ -97,7 +97,7 @@
<string name="pref_xmpp_resource">XMPP resource</string>
<string name="pref_xmpp_resource_summary">De naam waarmee deze client zich identificeert</string>
<string name="pref_accept_files">Accepteer bestanden</string>
- <string name="pref_accept_files_summary">Accepteer automatisch bestanden kleiner dan…</string>
+ <string name="pref_accept_files_size_summary">Accepteer automatisch bestanden kleiner dan…</string>
<string name="pref_notification_settings">Meldingsinstellingen</string>
<string name="pref_notifications">Meldingen</string>
<string name="pref_notifications_summary">Melding als een nieuw bericht arriveert</string>
diff --git a/src/main/res/values-ru/strings.xml b/src/main/res/values-ru/strings.xml
index 56a87ffc..3a2515b7 100644
--- a/src/main/res/values-ru/strings.xml
+++ b/src/main/res/values-ru/strings.xml
@@ -97,7 +97,7 @@
<string name="pref_xmpp_resource">Название ресурса</string>
<string name="pref_xmpp_resource_summary">Имя которым Conversations идентифицирует себя</string>
<string name="pref_accept_files">Принимать файлы</string>
- <string name="pref_accept_files_summary">Автоматический прием файлов…</string>
+ <string name="pref_accept_files_size_summary">Автоматический прием файлов…</string>
<string name="pref_notification_settings">Настройки Уведомлений</string>
<string name="pref_notifications">Уведомление</string>
<string name="pref_notifications_summary">Использовать звуковое уведомление когда приходят новые сообщения</string>
diff --git a/src/main/res/values-sk/strings.xml b/src/main/res/values-sk/strings.xml
index d6238794..01211ad2 100644
--- a/src/main/res/values-sk/strings.xml
+++ b/src/main/res/values-sk/strings.xml
@@ -97,7 +97,7 @@
<string name="pref_xmpp_resource">XMPP zdroj</string>
<string name="pref_xmpp_resource_summary">Meno, ktorým sa tento klient identifikuje</string>
<string name="pref_accept_files">Prijať súbory</string>
- <string name="pref_accept_files_summary">Automaticky prijať súbory menšie ako…</string>
+ <string name="pref_accept_files_size_summary">Automaticky prijať súbory menšie ako…</string>
<string name="pref_notification_settings">Nastavenia upozornení</string>
<string name="pref_notifications">Upozornenia</string>
<string name="pref_notifications_summary">Upozorniť pri prijatí novej správy</string>
diff --git a/src/main/res/values-sv/strings.xml b/src/main/res/values-sv/strings.xml
index 98ab7110..d635831c 100644
--- a/src/main/res/values-sv/strings.xml
+++ b/src/main/res/values-sv/strings.xml
@@ -97,7 +97,7 @@
<string name="pref_xmpp_resource">XMPP resurs</string>
<string name="pref_xmpp_resource_summary">Namnet som klienten identifierar sig med</string>
<string name="pref_accept_files">Acceptera filer</string>
- <string name="pref_accept_files_summary">Acceptera automatiskt filer som är mindre än…</string>
+ <string name="pref_accept_files_size_summary">Acceptera automatiskt filer som är mindre än…</string>
<string name="pref_notification_settings">Notifieringsinställningar</string>
<string name="pref_notifications">Notifieringar</string>
<string name="pref_notifications_summary">Notifiera när meddelande tagits emot</string>
diff --git a/src/main/res/values-zh-rCN/strings.xml b/src/main/res/values-zh-rCN/strings.xml
index 0d95ee18..32bfa38a 100644
--- a/src/main/res/values-zh-rCN/strings.xml
+++ b/src/main/res/values-zh-rCN/strings.xml
@@ -97,7 +97,7 @@
<string name="pref_xmpp_resource">XMPP 资源</string>
<string name="pref_xmpp_resource_summary">客户端标识名称</string>
<string name="pref_accept_files">接收文件</string>
- <string name="pref_accept_files_summary">自动接收小于 … 的文件</string>
+ <string name="pref_accept_files_size_summary">自动接收小于 … 的文件</string>
<string name="pref_notification_settings">通知设置</string>
<string name="pref_notifications">通知</string>
<string name="pref_notifications_summary">收到新消息时通知</string>
diff --git a/src/main/res/values-zh-rTW/strings.xml b/src/main/res/values-zh-rTW/strings.xml
index 1fd7c4bf..95d9e4e6 100644
--- a/src/main/res/values-zh-rTW/strings.xml
+++ b/src/main/res/values-zh-rTW/strings.xml
@@ -81,7 +81,7 @@
<string name="pref_xmpp_resource">XMPP 資源</string>
<string name="pref_xmpp_resource_summary">客戶端標示名稱</string>
<string name="pref_accept_files">接收文件</string>
- <string name="pref_accept_files_summary">自動接收小於 … 的文件</string>
+ <string name="pref_accept_files_size_summary">自動接收小於 … 的文件</string>
<string name="pref_notification_settings">通知設定</string>
<string name="pref_notifications">通知</string>
<string name="pref_notifications_summary">收到新訊息時通知</string>
diff --git a/src/main/res/values/arrays.xml b/src/main/res/values/arrays.xml
index 5be352d1..c555d4ba 100644
--- a/src/main/res/values/arrays.xml
+++ b/src/main/res/values/arrays.xml
@@ -57,4 +57,17 @@
<item>voice</item>
<item>location</item>
</string-array>
+
+ <string-array name="confirm_strings">
+ <item>@string/pref_confirm_messages_none</item>
+ <item>@string/pref_confirm_messages_received</item>
+ <item>@string/pref_confirm_messages_read_and_received</item>
+ </string-array>
+
+ <string-array name="confirm_values">
+ <item>0</item>
+ <item>1</item>
+ <item>2</item>
+ </string-array>
+
</resources>
diff --git a/src/main/res/values/attrs.xml b/src/main/res/values/attrs.xml
index e314f752..7a195aa4 100644
--- a/src/main/res/values/attrs.xml
+++ b/src/main/res/values/attrs.xml
@@ -24,5 +24,8 @@
<attr name="icon_secure" format="reference"/>
<attr name="icon_settings" format="reference"/>
<attr name="icon_import_export" format="reference"/>
-
+ <declare-styleable name="AmbilWarnaPreference">
+ <attr name="supportsAlpha"
+ format="boolean"/>
+ </declare-styleable>
</resources> \ No newline at end of file
diff --git a/src/main/res/values/dimens.xml b/src/main/res/values/dimens.xml
index 95e80055..d5d4aad4 100644
--- a/src/main/res/values/dimens.xml
+++ b/src/main/res/values/dimens.xml
@@ -5,4 +5,8 @@
<dimen name="infocard_padding">16dp</dimen>
<dimen name="conversations_overview_width">288dp</dimen>
<dimen name="image_button_padding">8dp</dimen>
+ <dimen name="ambilwarna_hsvHeight">240dp</dimen>
+ <dimen name="ambilwarna_hsvWidth">240dp</dimen>
+ <dimen name="ambilwarna_hueWidth">30dp</dimen>
+ <dimen name="ambilwarna_spacer">8dp</dimen>
</resources>
diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml
index dc29ffd3..a90c32bf 100644
--- a/src/main/res/values/strings.xml
+++ b/src/main/res/values/strings.xml
@@ -1,399 +1,413 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
- <string name="app_name" translatable="false">Conversations</string>
- <string name="action_settings">Settings</string>
- <string name="action_add">New conversation</string>
- <string name="action_accounts">Manage accounts</string>
- <string name="action_end_conversation">End this conversation</string>
- <string name="action_contact_details">Contact details</string>
- <string name="action_muc_details">Conference details</string>
- <string name="action_secure">Secure conversation</string>
- <string name="action_add_account">Add account</string>
- <string name="action_edit_contact">Edit name</string>
- <string name="action_add_phone_book">Add to phone book</string>
- <string name="action_delete_contact">Delete from roster</string>
- <string name="action_block_contact">Block contact</string>
- <string name="action_unblock_contact">Unblock contact</string>
- <string name="action_block_domain">Block domain</string>
- <string name="action_unblock_domain">Unblock domain</string>
- <string name="title_activity_manage_accounts">Manage Accounts</string>
- <string name="title_activity_settings">Settings</string>
- <string name="title_activity_conference_details">Conference Details</string>
- <string name="title_activity_contact_details">Contact Details</string>
- <string name="title_activity_sharewith">Share with Conversation</string>
- <string name="title_activity_start_conversation">Start Conversation</string>
- <string name="title_activity_choose_contact">Choose contact</string>
- <string name="title_activity_block_list">Block list</string>
- <string name="just_now">just now</string>
- <string name="minute_ago">1 min ago</string>
- <string name="minutes_ago">%d mins ago</string>
- <string name="unread_conversations">unread Conversations</string>
- <string name="sending">sending…</string>
- <string name="encrypted_message">Decrypting message. Please wait…</string>
- <string name="nick_in_use">Nickname is already in use</string>
- <string name="admin">Admin</string>
- <string name="owner">Owner</string>
- <string name="moderator">Moderator</string>
- <string name="participant">Participant</string>
- <string name="visitor">Visitor</string>
- <string name="remove_contact_text">Would you like to remove %s from your roster? The conversation associated with this contact will not be removed.</string>
- <string name="block_contact_text">Would you like to block %s from sending you messages?</string>
- <string name="unblock_contact_text">Would you like to unblock %s and allow them to send you messages?</string>
- <string name="block_domain_text">Block all contacts from %s?</string>
- <string name="unblock_domain_text">Unblock all contacts from %s?</string>
- <string name="contact_blocked">Contact blocked</string>
- <string name="remove_bookmark_text">Would you like to remove %s as a bookmark? The conversation associated with this bookmark will not be removed.</string>
- <string name="register_account">Register new account on server</string>
- <string name="change_password_on_server">Change password on server</string>
- <string name="share_with">Share with…</string>
- <string name="start_conversation">Start Conversation</string>
- <string name="invite_contact">Invite Contact</string>
- <string name="contacts">Contacts</string>
- <string name="cancel">Cancel</string>
- <string name="set">Set</string>
- <string name="add">Add</string>
- <string name="edit">Edit</string>
- <string name="delete">Delete</string>
- <string name="block">Block</string>
- <string name="unblock">Unblock</string>
- <string name="save">Save</string>
- <string name="ok">OK</string>
- <string name="crash_report_title">Conversations has crashed</string>
- <string name="crash_report_message">By sending in stack traces you are helping the ongoing development of Conversations\n<b>Warning:</b> This will use your XMPP account to send the stack trace to the developer.</string>
- <string name="send_now">Send now</string>
- <string name="send_never">Never ask again</string>
- <string name="problem_connecting_to_account">Unable to connect to account</string>
- <string name="problem_connecting_to_accounts">Unable to connect to multiple accounts</string>
- <string name="touch_to_fix">Touch here to manage your accounts</string>
- <string name="attach_file">Attach file</string>
- <string name="not_in_roster">The contact is not in your roster. Would you like to add it?</string>
- <string name="add_contact">Add contact</string>
- <string name="send_failed">delivery failed</string>
- <string name="send_rejected">rejected</string>
- <string name="preparing_image">Preparing image for transmission</string>
- <string name="action_clear_history">Clear history</string>
- <string name="clear_conversation_history">Clear Conversation History</string>
- <string name="clear_histor_msg">Do you want to delete all messages within this Conversation?\n\n<b>Warning:</b> This will not influence messages stored on other devices or servers.</string>
- <string name="delete_messages">Delete messages</string>
- <string name="also_end_conversation">End this conversations afterwards</string>
- <string name="choose_presence">Choose presence to contact</string>
- <string name="send_plain_text_message">Send plain text message</string>
- <string name="send_otr_message">Send OTR encrypted message</string>
- <string name="send_pgp_message">Send OpenPGP encrypted message</string>
- <string name="your_nick_has_been_changed">Your nickname has been changed</string>
- <string name="send_unencrypted">Send unencrypted</string>
- <string name="decryption_failed">Decryption failed. Maybe you don’t have the proper private key.</string>
- <string name="openkeychain_required">OpenKeychain</string>
- <string name="openkeychain_required_long">Conversations utilizes a third party app called <b>OpenKeychain</b> to encrypt and decrypt messages and to manage your public keys.\n\nOpenKeychain is licensed under GPLv3 and available on F-Droid and Google Play.\n\n<small>(Please restart Conversations afterwards.)</small></string>
- <string name="restart">Restart</string>
- <string name="install">Install</string>
- <string name="offering">offering…</string>
- <string name="waiting">waiting…</string>
- <string name="no_pgp_key">No OpenPGP Key found</string>
- <string name="contact_has_no_pgp_key">Conversations is unable to encrypt your messages because your contact is not announcing his or hers public key.\n\n<small>Please ask your contact to setup OpenPGP.</small></string>
- <string name="no_pgp_keys">No OpenPGP Keys found</string>
- <string name="contacts_have_no_pgp_keys">Conversations is unable to encrypt your messages because your contacts are not announcing their public key.\n\n<small>Please ask your contacts to setup OpenPGP.</small></string>
- <string name="encrypted_message_received"><i>Encrypted message received. Touch to view and decrypt.</i></string>
- <string name="pref_general">General</string>
- <string name="pref_xmpp_resource">XMPP resource</string>
- <string name="pref_xmpp_resource_summary">The name this client identifies itself with</string>
- <string name="pref_accept_files">Accept files</string>
- <string name="pref_accept_files_summary">Automatically accept files smaller than…</string>
- <string name="pref_notification_settings">Notification Settings</string>
- <string name="pref_notifications">Notifications</string>
- <string name="pref_notifications_summary">Notify when a new message arrives</string>
- <string name="pref_vibrate">Vibrate</string>
- <string name="pref_vibrate_summary">Also vibrate when a new message arrives</string>
- <string name="pref_sound">Sound</string>
- <string name="pref_sound_summary">Play ringtone with notification</string>
- <string name="pref_conference_notifications">Conference notifications</string>
- <string name="pref_conference_notifications_summary">Always notify when a new conference message arrives instead of only when highlighted</string>
- <string name="pref_notification_grace_period">Notification grace period</string>
- <string name="pref_notification_grace_period_summary">Disable notifications for a short time after a carbon copy was received</string>
- <string name="pref_advanced_options">Advanced Options</string>
- <string name="pref_never_send_crash">Never send crash reports</string>
- <string name="pref_never_send_crash_summary">By sending in stack traces you are helping the ongoing development of Conversations</string>
- <string name="pref_confirm_messages">Confirm Messages</string>
- <string name="pref_confirm_messages_summary">Let your contact know when you have received and read a message</string>
- <string name="pref_ui_options">UI Options</string>
- <string name="openpgp_error">OpenKeychain reported an error</string>
- <string name="error_decrypting_file">I/O Error decrypting file</string>
- <string name="accept">Accept</string>
- <string name="error">An error has occurred</string>
- <string name="pref_grant_presence_updates">Grant presence updates</string>
- <string name="pref_grant_presence_updates_summary">Preemptively grant and ask for presence subscription for contacts you created</string>
- <string name="subscriptions">Subscriptions</string>
- <string name="your_account">Your account</string>
- <string name="keys">Keys</string>
- <string name="send_presence_updates">Send presence updates</string>
- <string name="receive_presence_updates">Receive presence updates</string>
- <string name="ask_for_presence_updates">Ask for presence updates</string>
- <string name="attach_choose_picture">Choose picture</string>
- <string name="attach_take_picture">Take picture</string>
- <string name="preemptively_grant">Preemptively grant subscription request</string>
- <string name="error_not_an_image_file">The file you selected is not an image</string>
- <string name="error_compressing_image">Error while converting the image file</string>
- <string name="error_file_not_found">File not found</string>
- <string name="error_io_exception">General I/O error. Maybe you ran out of storage space?</string>
- <string name="error_security_exception_during_image_copy">The app you used to select this image did not provide us with enough permissions to read the file.\n\n<small>Use a different file manager to choose an image</small></string>
- <string name="account_status_unknown">Unknown</string>
- <string name="account_status_disabled">Temporarily disabled</string>
- <string name="account_status_online">Online</string>
- <string name="account_status_connecting">Connecting\u2026</string>
- <string name="account_status_offline">Offline</string>
- <string name="account_status_unauthorized">Unauthorized</string>
- <string name="account_status_not_found">Server not found</string>
- <string name="account_status_no_internet">No connectivity</string>
- <string name="account_status_regis_fail">Registration failed</string>
- <string name="account_status_regis_conflict">Username already in use</string>
- <string name="account_status_regis_success">Registration completed</string>
- <string name="account_status_regis_not_sup">Server does not support registration</string>
- <string name="account_status_security_error">Security error</string>
- <string name="account_status_incompatible_server">Incompatible server</string>
- <string name="encryption_choice_none">Plain text</string>
- <string name="encryption_choice_otr">OTR</string>
- <string name="encryption_choice_pgp">OpenPGP</string>
- <string name="mgmt_account_edit">Edit account</string>
- <string name="mgmt_account_delete">Delete account</string>
- <string name="mgmt_account_disable">Temporarily disable</string>
- <string name="mgmt_account_publish_avatar">Publish avatar</string>
- <string name="mgmt_account_publish_pgp">Publish OpenPGP public key</string>
- <string name="mgmt_account_enable">Enable account</string>
- <string name="mgmt_account_are_you_sure">Are you sure?</string>
- <string name="mgmt_account_delete_confirm_text">If you delete your account your entire conversation history will be lost</string>
- <string name="attach_record_voice">Record voice</string>
- <string name="account_settings_jabber_id">Jabber ID</string>
- <string name="account_settings_password">Password</string>
- <string name="account_settings_example_jabber_id">username@example.com</string>
- <string name="account_settings_confirm_password">Confirm password</string>
- <string name="password">Password</string>
- <string name="confirm_password">Confirm password</string>
- <string name="passwords_do_not_match">Passwords do not match</string>
- <string name="invalid_jid">This is not a valid Jabber ID</string>
- <string name="error_out_of_memory">Out of memory. Image is too large</string>
- <string name="add_phone_book_text">Do you want to add %s to your phones contact list?</string>
- <string name="contact_status_online">online</string>
- <string name="contact_status_free_to_chat">free to chat</string>
- <string name="contact_status_away">away</string>
- <string name="contact_status_extended_away">extended away</string>
- <string name="contact_status_do_not_disturb">do not disturb</string>
- <string name="contact_status_offline">offline</string>
- <string name="muc_details_conference">Conference</string>
- <string name="muc_details_other_members">Other Members</string>
- <string name="server_info_show_more">Server info</string>
- <string name="server_info_mam">XEP-0313: MAM</string>
- <string name="server_info_carbon_messages">XEP-0280: Message Carbons</string>
- <string name="server_info_csi">XEP-0352: Client State Indication</string>
- <string name="server_info_blocking">XEP-0191: Blocking Command</string>
- <string name="server_info_roster_version">XEP-0237: Roster Versioning</string>
- <string name="server_info_stream_management">XEP-0198: Stream Management</string>
- <string name="server_info_pep">XEP-0163: PEP (Avatars)</string>
- <string name="server_info_available">available</string>
- <string name="server_info_unavailable">unavailable</string>
- <string name="missing_public_keys">Missing public key announcements</string>
- <string name="last_seen_now">last seen just now</string>
- <string name="last_seen_min">last seen 1 minute ago</string>
- <string name="last_seen_mins">last seen %d minutes ago</string>
- <string name="last_seen_hour">last seen 1 hour ago</string>
- <string name="last_seen_hours">last seen %d hours ago</string>
- <string name="last_seen_day">last seen 1 day ago</string>
- <string name="last_seen_days">last seen %d days ago</string>
- <string name="never_seen">never seen</string>
- <string name="install_openkeychain">Encrypted message. Please install OpenKeychain to decrypt.</string>
- <string name="unknown_otr_fingerprint">Unknown OTR fingerprint</string>
- <string name="openpgp_messages_found">OpenPGP encrypted messages found</string>
- <string name="reception_failed">Reception failed</string>
- <string name="your_fingerprint">Your fingerprint</string>
- <string name="otr_fingerprint">OTR fingerprint</string>
- <string name="verify">Verify</string>
- <string name="decrypt">Decrypt</string>
- <string name="conferences">Conferences</string>
- <string name="search">Search</string>
- <string name="create_contact">Create Contact</string>
- <string name="join_conference">Join Conference</string>
- <string name="delete_contact">Delete Contact</string>
- <string name="view_contact_details">View contact details</string>
- <string name="block_contact">Block contact</string>
- <string name="unblock_contact">Unblock contact</string>
- <string name="create">Create</string>
- <string name="contact_already_exists">The contact already exists</string>
- <string name="join">Join</string>
- <string name="conference_address">Conference address</string>
- <string name="conference_address_example">room@conference.example.com</string>
- <string name="save_as_bookmark">Save as bookmark</string>
- <string name="delete_bookmark">Delete bookmark</string>
- <string name="bookmark_already_exists">This bookmark already exists</string>
- <string name="you">You</string>
- <string name="action_edit_subject">Edit conference subject</string>
- <string name="conference_not_found">Conference not found</string>
- <string name="leave">Leave</string>
- <string name="contact_added_you">Contact added you to contact list</string>
- <string name="add_back">Add back</string>
- <string name="contact_has_read_up_to_this_point">%s has read up to this point</string>
- <string name="publish">Publish</string>
- <string name="touch_to_choose_picture">Touch avatar to select picture from gallery</string>
- <string name="publish_avatar_explanation">Please note: Everyone subscribed to your presence updates will be allowed to see this picture.</string>
- <string name="publishing">Publishing…</string>
- <string name="error_publish_avatar_server_reject">The server rejected your publication</string>
- <string name="error_publish_avatar_converting">Something went wrong while converting your picture</string>
- <string name="error_saving_avatar">Could not save avatar to disk</string>
- <string name="or_long_press_for_default">(Or long press to bring back default)</string>
- <string name="error_publish_avatar_no_server_support">Your server does not support the publication of avatars</string>
- <string name="private_message">whispered</string>
- <string name="private_message_to">to %s</string>
- <string name="send_private_message_to">Send private message to %s</string>
- <string name="connect">Connect</string>
- <string name="account_already_exists">This account already exists</string>
- <string name="next">Next</string>
- <string name="server_info_session_established">Current session established</string>
- <string name="additional_information">Additional Information</string>
- <string name="skip">Skip</string>
- <string name="disable_notifications">Disable notifications</string>
- <string name="disable_notifications_for_this_conversation">Disable notifications for this conversation</string>
- <string name="notifications_disabled">Notifications are disabled</string>
- <string name="enable">Enable</string>
- <string name="conference_requires_password">Conference requires password</string>
- <string name="enter_password">Enter password</string>
- <string name="missing_presence_updates">Missing presence updates from contact</string>
- <string name="request_presence_updates">Please request presence updates from your contact first.\n\n<small>This will be used to determine what client(s) your contact is using.</small></string>
- <string name="request_now">Request now</string>
- <string name="delete_fingerprint">Delete Fingerprint</string>
- <string name="sure_delete_fingerprint">Are you sure you would like to delete this fingerprint?</string>
- <string name="ignore">Ignore</string>
- <string name="without_mutual_presence_updates"><b>Warning:</b> Sending this without mutual presence updates could cause unexpected problems.\n\n<small>Go to contact details to verify your presence subscriptions.</small></string>
- <string name="pref_encryption_settings">Encryption settings</string>
- <string name="pref_force_encryption">Force end-to-end encryption</string>
- <string name="pref_force_encryption_summary">Always send messages encrypted (except for conferences)</string>
- <string name="pref_dont_save_encrypted">Don’t save encrypted messages</string>
- <string name="pref_dont_save_encrypted_summary">Warning: This could lead to message loss</string>
- <string name="pref_expert_options">Expert options</string>
- <string name="pref_expert_options_summary">Please be careful with these</string>
- <string name="title_activity_about">About Conversations</string>
- <string name="pref_about_conversations_summary">Build and licensing information</string>
- <string name="pref_about_message" translatable="false">
- Conversations • the very last word in instant messaging.
+ <string name="app_name" translatable="false">Conversations</string>
+ <string name="action_settings">Settings</string>
+ <string name="action_add">New conversation</string>
+ <string name="action_accounts">Manage accounts</string>
+ <string name="action_end_conversation">End this conversation</string>
+ <string name="action_contact_details">Contact details</string>
+ <string name="action_muc_details">Conference details</string>
+ <string name="action_secure">Secure conversation</string>
+ <string name="action_add_account">Add account</string>
+ <string name="action_edit_contact">Edit name</string>
+ <string name="action_add_phone_book">Add to phone book</string>
+ <string name="action_delete_contact">Delete from roster</string>
+ <string name="action_block_contact">Block contact</string>
+ <string name="action_unblock_contact">Unblock contact</string>
+ <string name="action_block_domain">Block domain</string>
+ <string name="action_unblock_domain">Unblock domain</string>
+ <string name="title_activity_manage_accounts">Manage Accounts</string>
+ <string name="title_activity_settings">Settings</string>
+ <string name="title_activity_conference_details">Conference Details</string>
+ <string name="title_activity_contact_details">Contact Details</string>
+ <string name="title_activity_sharewith">Share with Conversation</string>
+ <string name="title_activity_start_conversation">Start Conversation</string>
+ <string name="title_activity_choose_contact">Choose contact</string>
+ <string name="title_activity_block_list">Block list</string>
+ <string name="just_now">just now</string>
+ <string name="minute_ago">1 min ago</string>
+ <string name="minutes_ago">%d mins ago</string>
+ <string name="unread_conversations">unread Conversations</string>
+ <string name="sending">sending…</string>
+ <string name="encrypted_message">Decrypting message. Please wait…</string>
+ <string name="nick_in_use">Nickname is already in use</string>
+ <string name="admin">Admin</string>
+ <string name="owner">Owner</string>
+ <string name="moderator">Moderator</string>
+ <string name="participant">Participant</string>
+ <string name="visitor">Visitor</string>
+ <string name="remove_contact_text">Would you like to remove %s from your roster? The conversation associated with this contact will not be removed.</string>
+ <string name="block_contact_text">Would you like to block %s from sending you messages?</string>
+ <string name="unblock_contact_text">Would you like to unblock %s and allow them to send you messages?</string>
+ <string name="block_domain_text">Block all contacts from %s?</string>
+ <string name="unblock_domain_text">Unblock all contacts from %s?</string>
+ <string name="contact_blocked">Contact blocked</string>
+ <string name="remove_bookmark_text">Would you like to remove %s as a bookmark? The conversation associated with this bookmark will not be removed.</string>
+ <string name="register_account">Register new account on server</string>
+ <string name="change_password_on_server">Change password on server</string>
+ <string name="share_with">Share with…</string>
+ <string name="start_conversation">Start Conversation</string>
+ <string name="invite_contact">Invite Contact</string>
+ <string name="contacts">Contacts</string>
+ <string name="cancel">Cancel</string>
+ <string name="set">Set</string>
+ <string name="add">Add</string>
+ <string name="edit">Edit</string>
+ <string name="delete">Delete</string>
+ <string name="block">Block</string>
+ <string name="unblock">Unblock</string>
+ <string name="save">Save</string>
+ <string name="ok">OK</string>
+ <string name="crash_report_title">Conversations has crashed</string>
+ <string name="crash_report_message">By sending in stack traces you are helping the ongoing development of Conversations\n<b>Warning:</b> This will use your XMPP account to send the stack trace to the developer.</string>
+ <string name="send_now">Send now</string>
+ <string name="send_never">Never ask again</string>
+ <string name="problem_connecting_to_account">Unable to connect to account</string>
+ <string name="problem_connecting_to_accounts">Unable to connect to multiple accounts</string>
+ <string name="touch_to_fix">Touch here to manage your accounts</string>
+ <string name="attach_file">Attach file</string>
+ <string name="not_in_roster">The contact is not in your roster. Would you like to add it?</string>
+ <string name="add_contact">Add contact</string>
+ <string name="send_failed">delivery failed</string>
+ <string name="send_rejected">rejected</string>
+ <string name="preparing_image">Preparing image for transmission</string>
+ <string name="action_clear_history">Clear history</string>
+ <string name="clear_conversation_history">Clear Conversation History</string>
+ <string name="clear_histor_msg">Do you want to delete all messages within this Conversation?\n\n<b>Warning:</b> This will not influence messages stored on other devices or servers.</string>
+ <string name="delete_messages">Delete messages</string>
+ <string name="also_end_conversation">End this conversations afterwards</string>
+ <string name="choose_presence">Choose presence to contact</string>
+ <string name="send_plain_text_message">Send plain text message</string>
+ <string name="send_otr_message">Send OTR encrypted message</string>
+ <string name="send_pgp_message">Send OpenPGP encrypted message</string>
+ <string name="your_nick_has_been_changed">Your nickname has been changed</string>
+ <string name="download_image">Download Image</string>
+ <string name="send_unencrypted">Send unencrypted</string>
+ <string name="decryption_failed">Decryption failed. Maybe you don’t have the proper private key.</string>
+ <string name="openkeychain_required">OpenKeychain</string>
+ <string name="openkeychain_required_long">Conversations utilizes a third party app called <b>OpenKeychain</b> to encrypt and decrypt messages and to manage your public keys.\n\nOpenKeychain is licensed under GPLv3 and available on F-Droid and Google Play.\n\n<small>(Please restart Conversations afterwards.)</small></string>
+ <string name="restart">Restart</string>
+ <string name="install">Install</string>
+ <string name="offering">offering…</string>
+ <string name="waiting">waiting…</string>
+ <string name="no_pgp_key">No OpenPGP Key found</string>
+ <string name="contact_has_no_pgp_key">Conversations is unable to encrypt your messages because your contact is not announcing his or hers public key.\n\n<small>Please ask your contact to setup OpenPGP.</small></string>
+ <string name="no_pgp_keys">No OpenPGP Keys found</string>
+ <string name="contacts_have_no_pgp_keys">Conversations is unable to encrypt your messages because your contacts are not announcing their public key.\n\n<small>Please ask your contacts to setup OpenPGP.</small></string>
+ <string name="encrypted_message_received"><i>Encrypted message received. Touch to view and decrypt.</i></string>
+ <string name="pref_general">General</string>
+ <string name="pref_xmpp_resource">XMPP resource</string>
+ <string name="pref_xmpp_resource_summary">The name this client identifies itself with</string>
+ <string name="pref_accept_files">Accept files</string>
+ <string name="pref_accept_files_summary">Settings for accepting and automatically downloading files</string>
+ <string name="pref_accept_files_size">Size</string>
+ <string name="pref_accept_files_size_summary">Automatically accept files smaller than…</string>
+ <string name="pref_accept_files_download">WLAN only</string>
+ <string name="pref_accept_files_download_summary">Download and accept files automatically only when using WLAN</string>
+ <string name="pref_accept_files_download_link">Image links</string>
+ <string name="pref_accept_files_download_link_summary">Automatically download image links</string>
+ <string name="pref_notification_settings">Notification Settings</string>
+ <string name="pref_notifications">Notifications</string>
+ <string name="pref_notifications_summary">Notify when a new message arrives</string>
+ <string name="pref_vibrate">Vibrate</string>
+ <string name="pref_vibrate_summary">Also vibrate when a new message arrives</string>
+ <string name="pref_sound">Sound</string>
+ <string name="pref_sound_summary">Play ringtone with notification</string>
+ <string name="pref_conference_notifications">Conference notifications</string>
+ <string name="pref_conference_notifications_summary">Always notify when a new conference message arrives instead of only when highlighted</string>
+ <string name="pref_notification_grace_period">Notification grace period</string>
+ <string name="pref_notification_grace_period_summary">Disable notifications for a short time after a carbon copy was received</string>
+ <string name="pref_advanced_options">Advanced Options</string>
+ <string name="pref_never_send_crash">Never send crash reports</string>
+ <string name="pref_never_send_crash_summary">By sending in stack traces you are helping the ongoing development of Conversations</string>
+ <string name="pref_confirm_messages">Confirm Messages</string>
+ <string name="pref_confirm_messages_summary">Let your contact know when you have received or read a message</string>
+ <string name="pref_confirm_messages_none">No confirmation</string>
+ <string name="pref_confirm_messages_received">Confirmation for received message</string>
+ <string name="pref_confirm_messages_read_and_received">Confirmation for received and read message</string>
+ <string name="pref_ui_options">UI Options</string>
+ <string name="pref_parse_emoticons">Parse Emoticons</string>
+ <string name="pref_parse_emoticons_summary">Replace emoticons with smilies.</string>
+ <string name="openpgp_error">OpenKeychain reported an error</string>
+ <string name="error_decrypting_file">I/O Error decrypting file</string>
+ <string name="accept">Accept</string>
+ <string name="error">An error has occurred</string>
+ <string name="pref_grant_presence_updates">Grant presence updates</string>
+ <string name="pref_grant_presence_updates_summary">Preemptively grant and ask for presence subscription for contacts you created</string>
+ <string name="subscriptions">Subscriptions</string>
+ <string name="your_account">Your account</string>
+ <string name="keys">Keys</string>
+ <string name="send_presence_updates">Send presence updates</string>
+ <string name="receive_presence_updates">Receive presence updates</string>
+ <string name="ask_for_presence_updates">Ask for presence updates</string>
+ <string name="attach_choose_picture">Choose picture</string>
+ <string name="attach_take_picture">Take picture</string>
+ <string name="preemptively_grant">Preemptively grant subscription request</string>
+ <string name="error_not_an_image_file">The file you selected is not an image</string>
+ <string name="error_compressing_image">Error while converting the image file</string>
+ <string name="error_file_not_found">File not found</string>
+ <string name="error_io_exception">General I/O error. Maybe you ran out of storage space?</string>
+ <string name="error_security_exception_during_image_copy">The app you used to select this image did not provide us with enough permissions to read the file.\n\n<small>Use a different file manager to choose an image</small></string>
+ <string name="account_status_unknown">Unknown</string>
+ <string name="account_status_disabled">Temporarily disabled</string>
+ <string name="account_status_online">Online</string>
+ <string name="account_status_connecting">Connecting\u2026</string>
+ <string name="account_status_offline">Offline</string>
+ <string name="account_status_unauthorized">Unauthorized</string>
+ <string name="account_status_not_found">Server not found</string>
+ <string name="account_status_no_internet">No connectivity</string>
+ <string name="account_status_regis_fail">Registration failed</string>
+ <string name="account_status_regis_conflict">Username already in use</string>
+ <string name="account_status_regis_success">Registration completed</string>
+ <string name="account_status_regis_not_sup">Server does not support registration</string>
+ <string name="account_status_security_error">Security error</string>
+ <string name="account_status_incompatible_server">Incompatible server</string>
+ <string name="encryption_choice_none">Plain text</string>
+ <string name="encryption_choice_otr">OTR</string>
+ <string name="encryption_choice_pgp">OpenPGP</string>
+ <string name="mgmt_account_edit">Edit account</string>
+ <string name="mgmt_account_delete">Delete account</string>
+ <string name="mgmt_account_disable">Temporarily disable</string>
+ <string name="mgmt_account_publish_avatar">Publish avatar</string>
+ <string name="mgmt_account_publish_pgp">Publish OpenPGP public key</string>
+ <string name="mgmt_account_enable">Enable account</string>
+ <string name="mgmt_account_are_you_sure">Are you sure?</string>
+ <string name="mgmt_account_delete_confirm_text">If you delete your account your entire conversation history will be lost</string>
+ <string name="attach_record_voice">Record voice</string>
+ <string name="account_settings_jabber_id">Jabber ID</string>
+ <string name="account_settings_password">Password</string>
+ <string name="account_settings_example_jabber_id">username@example.com</string>
+ <string name="account_settings_confirm_password">Confirm password</string>
+ <string name="password">Password</string>
+ <string name="confirm_password">Confirm password</string>
+ <string name="passwords_do_not_match">Passwords do not match</string>
+ <string name="invalid_jid">This is not a valid Jabber ID</string>
+ <string name="error_out_of_memory">Out of memory. Image is too large</string>
+ <string name="add_phone_book_text">Do you want to add %s to your phones contact list?</string>
+ <string name="contact_status_online">online</string>
+ <string name="contact_status_free_to_chat">free to chat</string>
+ <string name="contact_status_away">away</string>
+ <string name="contact_status_extended_away">extended away</string>
+ <string name="contact_status_do_not_disturb">do not disturb</string>
+ <string name="contact_status_offline">offline</string>
+ <string name="muc_details_conference">Conference</string>
+ <string name="muc_details_other_members">Other Members</string>
+ <string name="server_info_show_more">Server info</string>
+ <string name="server_info_mam">XEP-0313: MAM</string>
+ <string name="server_info_carbon_messages">XEP-0280: Message Carbons</string>
+ <string name="server_info_csi">XEP-0352: Client State Indication</string>
+ <string name="server_info_blocking">XEP-0191: Blocking Command</string>
+ <string name="server_info_roster_version">XEP-0237: Roster Versioning</string>
+ <string name="server_info_stream_management">XEP-0198: Stream Management</string>
+ <string name="server_info_pep">XEP-0163: PEP (Avatars)</string>
+ <string name="server_info_available">available</string>
+ <string name="server_info_unavailable">unavailable</string>
+ <string name="missing_public_keys">Missing public key announcements</string>
+ <string name="last_seen_now">last seen just now</string>
+ <string name="last_seen_min">last seen 1 minute ago</string>
+ <string name="last_seen_mins">last seen %d minutes ago</string>
+ <string name="last_seen_hour">last seen 1 hour ago</string>
+ <string name="last_seen_hours">last seen %d hours ago</string>
+ <string name="last_seen_day">last seen 1 day ago</string>
+ <string name="last_seen_days">last seen %d days ago</string>
+ <string name="never_seen">never seen</string>
+ <string name="install_openkeychain">Encrypted message. Please install OpenKeychain to decrypt.</string>
+ <string name="unknown_otr_fingerprint">Unknown OTR fingerprint</string>
+ <string name="openpgp_messages_found">OpenPGP encrypted messages found</string>
+ <string name="reception_failed">Reception failed</string>
+ <string name="your_fingerprint">Your fingerprint</string>
+ <string name="otr_fingerprint">OTR fingerprint</string>
+ <string name="verify">Verify</string>
+ <string name="decrypt">Decrypt</string>
+ <string name="conferences">Conferences</string>
+ <string name="search">Search</string>
+ <string name="create_contact">Create Contact</string>
+ <string name="join_conference">Join Conference</string>
+ <string name="delete_contact">Delete Contact</string>
+ <string name="view_contact_details">View contact details</string>
+ <string name="block_contact">Block contact</string>
+ <string name="unblock_contact">Unblock contact</string>
+ <string name="create">Create</string>
+ <string name="contact_already_exists">The contact already exists</string>
+ <string name="join">Join</string>
+ <string name="conference_address">Conference address</string>
+ <string name="conference_address_example">room@conference.example.com</string>
+ <string name="save_as_bookmark">Save as bookmark</string>
+ <string name="delete_bookmark">Delete bookmark</string>
+ <string name="bookmark_already_exists">This bookmark already exists</string>
+ <string name="you">You</string>
+ <string name="action_edit_subject">Edit conference subject</string>
+ <string name="conference_not_found">Conference not found</string>
+ <string name="leave">Leave</string>
+ <string name="contact_added_you">Contact added you to contact list</string>
+ <string name="add_back">Add back</string>
+ <string name="contact_has_read_up_to_this_point">%s has read up to this point</string>
+ <string name="publish">Publish</string>
+ <string name="touch_to_choose_picture">Touch avatar to select picture from gallery</string>
+ <string name="publish_avatar_explanation">Please note: Everyone subscribed to your presence updates will be allowed to see this picture.</string>
+ <string name="publishing">Publishing…</string>
+ <string name="error_publish_avatar_server_reject">The server rejected your publication</string>
+ <string name="error_publish_avatar_converting">Something went wrong while converting your picture</string>
+ <string name="error_saving_avatar">Could not save avatar to disk</string>
+ <string name="or_long_press_for_default">(Or long press to bring back default)</string>
+ <string name="error_publish_avatar_no_server_support">Your server does not support the publication of avatars</string>
+ <string name="private_message">whispered</string>
+ <string name="private_message_to">to %s</string>
+ <string name="send_private_message_to">Send private message to %s</string>
+ <string name="connect">Connect</string>
+ <string name="account_already_exists">This account already exists</string>
+ <string name="next">Next</string>
+ <string name="server_info_session_established">Current session established</string>
+ <string name="additional_information">Additional Information</string>
+ <string name="skip">Skip</string>
+ <string name="disable_notifications">Disable notifications</string>
+ <string name="disable_notifications_for_this_conversation">Disable notifications for this conversation</string>
+ <string name="notifications_disabled">Notifications are disabled</string>
+ <string name="enable">Enable</string>
+ <string name="conference_requires_password">Conference requires password</string>
+ <string name="enter_password">Enter password</string>
+ <string name="missing_presence_updates">Missing presence updates from contact</string>
+ <string name="request_presence_updates">Please request presence updates from your contact first.\n\n<small>This will be used to determine what client(s) your contact is using.</small></string>
+ <string name="request_now">Request now</string>
+ <string name="delete_fingerprint">Delete Fingerprint</string>
+ <string name="sure_delete_fingerprint">Are you sure you would like to delete this fingerprint?</string>
+ <string name="ignore">Ignore</string>
+ <string name="without_mutual_presence_updates"><b>Warning:</b> Sending this without mutual presence updates could cause unexpected problems.\n\n<small>Go to contact details to verify your presence subscriptions.</small></string>
+ <string name="pref_encryption_settings">Encryption settings</string>
+ <string name="pref_force_encryption">Force end-to-end encryption</string>
+ <string name="pref_force_encryption_summary">Always send messages encrypted (except for conferences)</string>
+ <string name="pref_dont_save_encrypted">Don’t save encrypted messages</string>
+ <string name="pref_dont_save_encrypted_summary">Warning: This could lead to message loss</string>
+ <string name="pref_expert_options">Expert options</string>
+ <string name="pref_expert_options_summary">Please be careful with these</string>
+ <string name="title_activity_about">About Conversations</string>
+ <string name="pref_about_conversations_summary">Build and licensing information</string>
+ <string name="pref_about_message" translatable="false">
+ Conversations • the very last word in instant messaging.
\n\nCopyright © 2014-2015 Daniel Gultsch
- \n\nThis program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
- \n\nThis program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
- \n\nYou should have received a copy of the GNU General Public License
- along with this program. If not, see https://www.gnu.org/licenses
- \n\nDownload the full source code at https://github.com/siacs/Conversations
- \n\n\nLibraries
- \n\nhttps://www.bouncycastle.org\n(The MIT License (MIT))
- \n\nhttps://www.gnu.org/software/libidn\n(Apache License, Version 2.0)
- \n\nhttps://github.com/ge0rg/MemorizingTrustManager\n(The MIT License (MIT))
- \n\nhttps://github.com/rtreffer/minidns\n(WTFPL)
- \n\nhttps://github.com/open-keychain/openkeychain-api-lib\n(Apache License, Version 2.0)
- \n\nhttps://github.com/jitsi/otr4j\n(LGPL-3.0)
- \n\nhttps://developer.android.com/tools/support-library\n(Apache License, Version 2.0)
- \n\nhttps://github.com/zxing/zxing\n(Apache License, Version 2.0)
- \n\nhttps://github.com/google/material-design-icons\n(CC BY 4.0)
+ \n\nThis program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+ \n\nThis program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+ \n\nYou should have received a copy of the GNU General Public License
+ along with this program. If not, see https://www.gnu.org/licenses
+ \n\nDownload the full source code at https://github.com/siacs/Conversations
+ \n\n\nLibraries
+ \n\nhttps://www.bouncycastle.org\n(The MIT License (MIT))
+ \n\nhttps://www.gnu.org/software/libidn\n(Apache License, Version 2.0)
+ \n\nhttps://github.com/ge0rg/MemorizingTrustManager\n(The MIT License (MIT))
+ \n\nhttps://github.com/rtreffer/minidns\n(WTFPL)
+ \n\nhttps://github.com/open-keychain/openkeychain-api-lib\n(Apache License, Version 2.0)
+ \n\nhttps://github.com/jitsi/otr4j\n(LGPL-3.0)
+ \n\nhttps://developer.android.com/tools/support-library\n(Apache License, Version 2.0)
+ \n\nhttps://github.com/zxing/zxing\n(Apache License, Version 2.0)
+ \n\nhttps://github.com/google/material-design-icons\n(CC BY 4.0)
\n\nhttps://github.com/timroes/EnhancedListView\n(Apache License, Version 2.0)
- </string>
- <string name="title_pref_quiet_hours">Quiet Hours</string>
- <string name="title_pref_quiet_hours_start_time">Start time</string>
- <string name="title_pref_quiet_hours_end_time">End time</string>
- <string name="title_pref_enable_quiet_hours">Enable quiet hours</string>
- <string name="pref_quiet_hours_summary">Notifications will be silenced during quiet hours</string>
- <string name="pref_use_larger_font">Increase font size</string>
- <string name="pref_use_larger_font_summary">Use larger font sizes across the entire app</string>
- <string name="pref_use_send_button_to_indicate_status">Send button indicates status</string>
- <string name="pref_use_indicate_received">Request message receipts</string>
- <string name="pref_use_indicate_received_summary">Received messages will be marked with a green tick if supported</string>
- <string name="pref_use_send_button_to_indicate_status_summary">Colorize send button to indicate contact status</string>
- <string name="pref_expert_options_other">Other</string>
- <string name="pref_conference_name">Conference name</string>
- <string name="pref_conference_name_summary">Use room’s subject instead of JID to identify conferences</string>
- <string name="toast_message_otr_fingerprint">OTR fingerprint copied to clipboard!</string>
- <string name="conference_banned">You are banned from this conference</string>
- <string name="conference_members_only">This conference is members only</string>
- <string name="conference_kicked">You have been kicked from this conference</string>
- <string name="using_account">using account %s</string>
+ </string>
+ <string name="title_pref_quiet_hours">Quiet Hours</string>
+ <string name="title_pref_quiet_hours_start_time">Start time</string>
+ <string name="title_pref_quiet_hours_end_time">End time</string>
+ <string name="title_pref_enable_quiet_hours">Enable quiet hours</string>
+ <string name="pref_quiet_hours_summary">Notifications will be silenced during quiet hours</string>
+ <string name="pref_use_larger_font">Increase font size</string>
+ <string name="pref_use_larger_font_summary">Use larger font sizes across the entire app</string>
+ <string name="pref_use_send_button_to_indicate_status">Send button indicates status</string>
+ <string name="pref_use_indicate_received">Request message receipts</string>
+ <string name="pref_use_indicate_received_summary">Received messages will be marked with a green tick if supported</string>
+ <string name="pref_use_send_button_to_indicate_status_summary">Colorize send button to indicate contact status</string>
+ <string name="pref_expert_options_other">Other</string>
+ <string name="pref_conference_name">Conference name</string>
+ <string name="pref_conference_name_summary">Use room’s subject instead of JID to identify conferences</string>
+ <string name="toast_message_otr_fingerprint">OTR fingerprint copied to clipboard!</string>
+ <string name="conference_banned">You are banned from this conference</string>
+ <string name="conference_members_only">This conference is members only</string>
+ <string name="conference_kicked">You have been kicked from this conference</string>
+ <string name="using_account">using account %s</string>
<string name="checking_x">Checking %s on HTTP host</string>
- <string name="not_connected_try_again">You are not connected. Try again later</string>
+ <string name="image_file_deleted">The image file has been deleted</string>
+ <string name="not_connected_try_again">You are not connected. Try again later</string>
<string name="check_x_filesize">Check %s size</string>
- <string name="message_options">Message options</string>
- <string name="copy_text">Copy text</string>
- <string name="copy_original_url">Copy original URL</string>
- <string name="send_again">Send again</string>
+ <string name="message_options">Message options</string>
+ <string name="copy_text">Copy text</string>
+ <string name="copy_original_url">Copy original URL</string>
+ <string name="send_again">Send again</string>
<string name="file_url">File URL</string>
- <string name="message_text">Message text</string>
- <string name="url_copied_to_clipboard">URL copied to clipboard</string>
- <string name="message_copied_to_clipboard">Message copied to clipboard</string>
- <string name="image_transmission_failed">Image transmission failed</string>
- <string name="scan_qr_code">Scan QR code</string>
- <string name="show_qr_code">Show QR code</string>
- <string name="show_block_list">Show block list</string>
- <string name="account_details">Account details</string>
- <string name="verify_otr">Verify OTR</string>
- <string name="remote_fingerprint">Remote Fingerprint</string>
- <string name="scan">scan</string>
- <string name="or_touch_phones">(or touch phones)</string>
- <string name="smp">Socialist Millionaire Protocol</string>
- <string name="shared_secret_hint">Hint or Question</string>
- <string name="shared_secret_secret">Shared Secret</string>
- <string name="confirm">Confirm</string>
- <string name="in_progress">In progress</string>
- <string name="respond">Respond</string>
- <string name="failed">Failed</string>
- <string name="secrets_do_not_match">Secrets do not match</string>
- <string name="try_again">Try again</string>
- <string name="finish">Finish</string>
- <string name="verified">Verified!</string>
- <string name="smp_requested">Contact requested SMP verification</string>
- <string name="no_otr_session_found">No valid OTR session has been found!</string>
- <string name="conversations_foreground_service">Conversations</string>
- <string name="pref_keep_foreground_service">Keep service in foreground</string>
- <string name="pref_keep_foreground_service_summary">Prevents the operating system from killing your connection</string>
- <string name="choose_file">Choose file</string>
- <string name="receiving_x_file">Receiving %1$s (%2$d%% completed)</string>
- <string name="download_x_file">Download %s</string>
- <string name="file">file</string>
- <string name="open_x_file">Open %s</string>
- <string name="sending_file">sending (%1$d%% completed)</string>
- <string name="preparing_file">Preparing file for transmission</string>
- <string name="x_file_offered_for_download">%s offered for download</string>
- <string name="cancel_transmission">Cancel transmission</string>
- <string name="file_transmission_failed">file transmission failed</string>
- <string name="file_deleted">The file has been deleted</string>
- <string name="no_application_found_to_open_file">No application found to open file</string>
- <string name="could_not_verify_fingerprint">Could not verify fingerprint</string>
- <string name="manually_verify">Manually verify</string>
- <string name="are_you_sure_verify_fingerprint">Are you sure that you want to verify your contacts OTR fingerprint?</string>
- <string name="pref_show_dynamic_tags">Show dynamic tags</string>
- <string name="pref_show_dynamic_tags_summary">Display read-only tags underneath contacts</string>
- <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="secret_accepted">Secret accepted!</string>
- <string name="reset">Reset</string>
- <string name="account_image_description">Account avatar</string>
- <string name="copy_otr_clipboard_description">Copy OTR fingerprint to clipboard</string>
- <string name="fetching_history_from_server">Fetching history from server</string>
- <string name="no_more_history_on_server">No more history on server</string>
- <string name="updating">Updating…</string>
- <string name="password_changed">Password changed!</string>
- <string name="could_not_change_password">Could not change password</string>
- <string name="otr_session_not_started">Send a message to start an encrypted chat</string>
- <string name="ask_question">Ask question</string>
+ <string name="message_text">Message text</string>
+ <string name="url_copied_to_clipboard">URL copied to clipboard</string>
+ <string name="message_copied_to_clipboard">Message copied to clipboard</string>
+ <string name="image_transmission_failed">Image transmission failed</string>
+ <string name="scan_qr_code">Scan QR code</string>
+ <string name="show_qr_code">Show QR code</string>
+ <string name="show_block_list">Show block list</string>
+ <string name="account_details">Account details</string>
+ <string name="verify_otr">Verify OTR</string>
+ <string name="remote_fingerprint">Remote Fingerprint</string>
+ <string name="scan">scan</string>
+ <string name="or_touch_phones">(or touch phones)</string>
+ <string name="smp">Socialist Millionaire Protocol</string>
+ <string name="shared_secret_hint">Hint or Question</string>
+ <string name="shared_secret_secret">Shared Secret</string>
+ <string name="confirm">Confirm</string>
+ <string name="in_progress">In progress</string>
+ <string name="respond">Respond</string>
+ <string name="failed">Failed</string>
+ <string name="secrets_do_not_match">Secrets do not match</string>
+ <string name="try_again">Try again</string>
+ <string name="finish">Finish</string>
+ <string name="verified">Verified!</string>
+ <string name="smp_requested">Contact requested SMP verification</string>
+ <string name="no_otr_session_found">No valid OTR session has been found!</string>
+ <string name="conversations_foreground_service">Conversations</string>
+ <string name="pref_keep_foreground_service">Keep service in foreground</string>
+ <string name="pref_keep_foreground_service_summary">Prevents the operating system from killing your connection</string>
+ <string name="choose_file">Choose file</string>
+ <string name="receiving_x_file">Receiving %1$s (%2$d%% completed)</string>
+ <string name="download_x_file">Download %s</string>
+ <string name="file">file</string>
+ <string name="open_x_file">Open %s</string>
+ <string name="sending_file">sending (%1$d%% completed)</string>
+ <string name="preparing_file">Preparing file for transmission</string>
+ <string name="x_file_offered_for_download">%s offered for download</string>
+ <string name="cancel_transmission">Cancel transmission</string>
+ <string name="file_transmission_failed">file transmission failed</string>
+ <string name="file_deleted">The file has been deleted</string>
+ <string name="no_application_found_to_open_file">No application found to open file</string>
+ <string name="could_not_verify_fingerprint">Could not verify fingerprint</string>
+ <string name="manually_verify">Manually verify</string>
+ <string name="are_you_sure_verify_fingerprint">Are you sure that you want to verify your contacts OTR fingerprint?</string>
+ <string name="pref_show_dynamic_tags">Show dynamic tags</string>
+ <string name="pref_show_dynamic_tags_summary">Display read-only tags underneath contacts</string>
+ <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="secret_accepted">Secret accepted!</string>
+ <string name="reset">Reset</string>
+ <string name="account_image_description">Account avatar</string>
+ <string name="copy_otr_clipboard_description">Copy OTR fingerprint to clipboard</string>
+ <string name="fetching_history_from_server">Fetching history from server</string>
+ <string name="no_more_history_on_server">No more history on server</string>
+ <string name="updating">Updating…</string>
+ <string name="password_changed">Password changed!</string>
+ <string name="could_not_change_password">Could not change password</string>
+ <string name="otr_session_not_started">Send a message to start an encrypted chat</string>
+ <string name="ask_question">Ask question</string>
<string name="smp_explain_question">If you and your contact have a secret in common that no one else knows (like an inside joke or simply what you had for lunch the last time you met) you can use that secret to verify each other’s fingerprints.\n\nYou provide a hint or a question for your contact who will respond with a case-sensitive answer.</string>
- <string name="smp_explain_answer">Your contact would like to verify your fingerprint by challenging you with a shared secret. Your contact provided the following hint or question for that secret.</string>
- <string name="shared_secret_hint_should_not_be_empty">Your hint should not be empty</string>
- <string name="shared_secret_can_not_be_empty">Your shared secret can not be empty</string>
- <string name="manual_verification_explanation">Carefully compare the fingerprint shown below with the fingerprint of your contact.\nYou can use any trusted form of communication like an encrypted e-mail or a telephone call to exchange those.</string>
+ <string name="smp_explain_answer">Your contact would like to verify your fingerprint by challenging you with a shared secret. Your contact provided the following hint or question for that secret.</string>
+ <string name="shared_secret_hint_should_not_be_empty">Your hint should not be empty</string>
+ <string name="shared_secret_can_not_be_empty">Your shared secret can not be empty</string>
+ <string name="manual_verification_explanation">Carefully compare the fingerprint shown below with the fingerprint of your contact.\nYou can use any trusted form of communication like an encrypted e-mail or a telephone call to exchange those.</string>
<string name="change_password">Change password</string>
<string name="current_password">Current password</string>
<string name="new_password">New password</string>
<string name="password_should_not_be_empty">Password should not be empty</string>
+ <string name="password_should_not_contain_only_spaces">Password should not contain only spaces</string>
<string name="enable_all_accounts">Enable all accounts</string>
<string name="disable_all_accounts">Disable all accounts</string>
<string name="perform_action_with">Perform action with</string>
@@ -479,4 +493,6 @@
<string name="choose_quick_action">Choose quick action</string>
<string name="file_not_found_on_remote_host">File not found on remote server</string>
<string name="search_for_contacts_or_groups">Search for contacts or groups</string>
+ <string name="pref_led_notification_color">LED notification color</string>
+ <string name="pref_led_notification_color_summary">Change the color of the LED notification</string>
</resources>
diff --git a/src/main/res/xml/preferences.xml b/src/main/res/xml/preferences.xml
index 5b7d6904..f0583227 100644
--- a/src/main/res/xml/preferences.xml
+++ b/src/main/res/xml/preferences.xml
@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
-<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto" >
<PreferenceCategory android:title="@string/pref_general" >
<CheckBoxPreference
@@ -15,17 +16,38 @@
android:key="resource"
android:summary="@string/pref_xmpp_resource_summary"
android:title="@string/pref_xmpp_resource" />
- <ListPreference
- android:defaultValue="524288"
- android:entries="@array/filesizes"
- android:entryValues="@array/filesizes_values"
- android:key="auto_accept_file_size"
+
+ <PreferenceScreen
android:summary="@string/pref_accept_files_summary"
- android:title="@string/pref_accept_files" />
+ android:title="@string/pref_accept_files">
- <CheckBoxPreference
- android:defaultValue="true"
- android:key="confirm_messages"
+ <CheckBoxPreference
+ android:defaultValue="true"
+ android:key="auto_download_file_link"
+ android:summary="@string/pref_accept_files_download_link_summary"
+ android:title="@string/pref_accept_files_download_link" />
+
+ <ListPreference
+ android:defaultValue="524288"
+ android:entries="@array/filesizes"
+ android:entryValues="@array/filesizes_values"
+ android:key="auto_accept_file_size"
+ android:summary="@string/pref_accept_files_size_summary"
+ android:title="@string/pref_accept_files_size" />
+
+ <CheckBoxPreference
+ android:defaultValue="true"
+ android:key="auto_download_file_wlan"
+ android:summary="@string/pref_accept_files_download_summary"
+ android:title="@string/pref_accept_files_download" />
+
+ </PreferenceScreen>
+
+ <ListPreference
+ android:defaultValue="2"
+ android:entries="@array/confirm_strings"
+ android:entryValues="@array/confirm_values"
+ android:key="confirm_messages_list"
android:summary="@string/pref_confirm_messages_summary"
android:title="@string/pref_confirm_messages" />
@@ -34,6 +56,18 @@
android:key="chat_states"
android:summary="@string/pref_chat_states_summary"
android:title="@string/pref_chat_states" />
+<<<<<<< HEAD
+ <CheckBoxPreference
+ android:defaultValue="true"
+ android:key="parse_emoticons"
+ android:summary="@string/pref_parse_emoticons_summary"
+ android:title="@string/pref_parse_emoticons"/>
+ </PreferenceCategory>
+ <PreferenceCategory android:title="@string/pref_notification_settings" >
+ <PreferenceScreen
+ android:summary="@string/pref_notification_settings"
+ android:title="@string/pref_notifications" >
+=======
</PreferenceCategory>
<PreferenceCategory
@@ -49,45 +83,63 @@
android:summary="@string/pref_quiet_hours_summary"
android:title="@string/title_pref_quiet_hours"
android:key="quiet_hours">
+>>>>>>> 1.5.2
<CheckBoxPreference
- android:defaultValue="false"
- android:key="enable_quiet_hours"
- android:summary="@string/pref_quiet_hours_summary"
- android:title="@string/title_pref_enable_quiet_hours" />
- <eu.siacs.conversations.ui.TimePreference
- android:dependency="enable_quiet_hours"
- android:key="quiet_hours_start"
- android:negativeButtonText="@string/cancel"
- android:positiveButtonText="@string/set"
- android:title="@string/title_pref_quiet_hours_start_time" />
- <eu.siacs.conversations.ui.TimePreference
- android:dependency="enable_quiet_hours"
- android:key="quiet_hours_end"
- android:negativeButtonText="@string/cancel"
- android:positiveButtonText="@string/set"
- android:title="@string/title_pref_quiet_hours_end_time" />
- </PreferenceScreen>
- <CheckBoxPreference
- android:defaultValue="true"
- android:dependency="show_notification"
- android:key="vibrate_on_notification"
- android:summary="@string/pref_vibrate_summary"
- android:title="@string/pref_vibrate" />
+ android:defaultValue="true"
+ android:key="show_notification"
+ android:summary="@string/pref_notifications_summary"
+ android:title="@string/pref_notifications" />
+ <PreferenceScreen
+ android:dependency="show_notification"
+ android:summary="@string/pref_quiet_hours_summary"
+ android:title="@string/title_pref_quiet_hours">
+ <CheckBoxPreference
+ android:defaultValue="false"
+ android:key="enable_quiet_hours"
+ android:summary="@string/pref_quiet_hours_summary"
+ android:title="@string/title_pref_enable_quiet_hours" />
+ <eu.siacs.conversations.ui.TimePreference
+ android:dependency="enable_quiet_hours"
+ android:key="quiet_hours_start"
+ android:negativeButtonText="@string/cancel"
+ android:positiveButtonText="@string/set"
+ android:title="@string/title_pref_quiet_hours_start_time" />
+ <eu.siacs.conversations.ui.TimePreference
+ android:dependency="enable_quiet_hours"
+ android:key="quiet_hours_end"
+ android:negativeButtonText="@string/cancel"
+ android:positiveButtonText="@string/set"
+ android:title="@string/title_pref_quiet_hours_end_time" />
+ </PreferenceScreen>
+ <CheckBoxPreference
+ android:defaultValue="true"
+ android:dependency="show_notification"
+ android:key="vibrate_on_notification"
+ android:summary="@string/pref_vibrate_summary"
+ android:title="@string/pref_vibrate" />
- <RingtonePreference
- android:defaultValue="content://settings/system/notification_sound"
- android:dependency="show_notification"
- android:key="notification_ringtone"
- android:ringtoneType="notification"
- android:summary="@string/pref_sound_summary"
- android:title="@string/pref_sound" />
+ <RingtonePreference
+ android:defaultValue="content://settings/system/notification_sound"
+ android:dependency="show_notification"
+ android:key="notification_ringtone"
+ android:ringtoneType="notification"
+ android:summary="@string/pref_sound_summary"
+ android:title="@string/pref_sound" />
- <CheckBoxPreference
- android:defaultValue="true"
- android:dependency="show_notification"
- android:key="always_notify_in_conference"
- android:summary="@string/pref_conference_notifications_summary"
- android:title="@string/pref_conference_notifications" />
+ <yuku.ambilwarna.widget.AmbilWarnaPreference
+ android:defaultValue="0xffffffff"
+ android:key="led_notify_color"
+ android:title="@string/pref_led_notification_color"
+ app:supportsAlpha="true"
+ android:summary="@string/pref_led_notification_color_summary"/>
+
+ <CheckBoxPreference
+ android:defaultValue="true"
+ android:dependency="show_notification"
+ android:key="always_notify_in_conference"
+ android:summary="@string/pref_conference_notifications_summary"
+ android:title="@string/pref_conference_notifications" />
+ </PreferenceScreen>
</PreferenceCategory>
<PreferenceCategory android:title="@string/pref_ui_options" >
<CheckBoxPreference