From fb50760e5a4f7de7a77a5c1286e04f0cf25f2006 Mon Sep 17 00:00:00 2001
From: Christian Schneppe <christian@pix-art.de>
Date: Sun, 31 Mar 2019 11:06:09 +0200
Subject: [PATCH] add activity to define some important privacy settings on
 first start

---
 CHANGELOG.md                                  |   3 +
 src/main/AndroidManifest.xml                  |   4 +
 .../services/XmppConnectionService.java       |  14 +-
 .../messenger/ui/ConversationsActivity.java   |  11 +-
 .../messenger/ui/EditAccountActivity.java     |   4 +-
 .../messenger/ui/EnterNameActivity.java       |  34 ++-
 .../messenger/ui/SetSettingsActivity.java     | 171 +++++++++++++
 .../pixart/messenger/ui/SettingsActivity.java |  10 +-
 .../de/pixart/messenger/ui/XmppActivity.java  |   5 +
 .../messenger/ui/adapter/MessageAdapter.java  |  65 ++---
 .../messenger/utils/FirstStartManager.java    |  30 +++
 .../ic_help_circle_outline_black_24dp.png     | Bin 0 -> 888 bytes
 .../ic_help_circle_outline_black_24dp.png     | Bin 0 -> 670 bytes
 .../ic_help_circle_outline_black_24dp.png     | Bin 0 -> 1435 bytes
 .../ic_help_circle_outline_black_24dp.png     | Bin 0 -> 1979 bytes
 .../ic_help_circle_outline_black_24dp.png     | Bin 0 -> 4762 bytes
 src/main/res/layout/activity_enter_name.xml   |   1 +
 src/main/res/layout/activity_set_settings.xml | 239 ++++++++++++++++++
 src/main/res/values/bools.xml                 |   5 -
 src/main/res/values/defaults.xml              |   4 +
 src/main/res/values/strings.xml               |   7 +-
 src/main/res/xml/preferences.xml              |  20 +-
 22 files changed, 568 insertions(+), 59 deletions(-)
 create mode 100644 src/main/java/de/pixart/messenger/ui/SetSettingsActivity.java
 create mode 100644 src/main/java/de/pixart/messenger/utils/FirstStartManager.java
 create mode 100644 src/main/res/drawable-hdpi/ic_help_circle_outline_black_24dp.png
 create mode 100644 src/main/res/drawable-mdpi/ic_help_circle_outline_black_24dp.png
 create mode 100644 src/main/res/drawable-xhdpi/ic_help_circle_outline_black_24dp.png
 create mode 100644 src/main/res/drawable-xxhdpi/ic_help_circle_outline_black_24dp.png
 create mode 100644 src/main/res/drawable-xxxhdpi/ic_help_circle_outline_black_24dp.png
 create mode 100644 src/main/res/layout/activity_set_settings.xml
 delete mode 100644 src/main/res/values/bools.xml

diff --git a/CHANGELOG.md b/CHANGELOG.md
index ed2443f28..bee9d8f21 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,8 @@
 ### Changelog
 
+#### Version 2.2.2
+* add activity to define some important privacy settings on first start
+
 #### Version 2.2.1
 * use extra activity for enter name during registration (PAM)
 * bug fixes
diff --git a/src/main/AndroidManifest.xml b/src/main/AndroidManifest.xml
index d458673da..71b2e5909 100644
--- a/src/main/AndroidManifest.xml
+++ b/src/main/AndroidManifest.xml
@@ -305,6 +305,10 @@
             android:name=".ui.EnterNameActivity"
             android:label="@string/enter_your_name"
             android:launchMode="singleTask" />
+        <activity
+            android:name=".ui.SetSettingsActivity"
+            android:label="@string/title_activity_settings"
+            android:launchMode="singleTask" />
         <activity
             android:name=".ui.MucUsersActivity"
             android:label="@string/group_chat_members" />
diff --git a/src/main/java/de/pixart/messenger/services/XmppConnectionService.java b/src/main/java/de/pixart/messenger/services/XmppConnectionService.java
index b06ebc85d..caea57fc8 100644
--- a/src/main/java/de/pixart/messenger/services/XmppConnectionService.java
+++ b/src/main/java/de/pixart/messenger/services/XmppConnectionService.java
@@ -164,6 +164,12 @@ import de.pixart.messenger.xmpp.stanzas.PresencePacket;
 import me.leolin.shortcutbadger.ShortcutBadger;
 import rocks.xmpp.addr.Jid;
 
+import static de.pixart.messenger.ui.SettingsActivity.CHAT_STATES;
+import static de.pixart.messenger.ui.SettingsActivity.CONFIRM_MESSAGES;
+import static de.pixart.messenger.ui.SettingsActivity.ENABLE_MULTI_ACCOUNTS;
+import static de.pixart.messenger.ui.SettingsActivity.INDICATE_RECEIVED;
+import static de.pixart.messenger.ui.SettingsActivity.ENABLE_MULTI_ACCOUNTS;
+
 public class XmppConnectionService extends Service {
 
     public static final String ACTION_REPLY_TO_CONVERSATION = "reply_to_conversations";
@@ -3912,7 +3918,7 @@ public class XmppConnectionService extends Service {
     }
 
     public boolean confirmMessages() {
-        return getBooleanPreference("confirm_messages", R.bool.confirm_messages);
+        return getBooleanPreference(CONFIRM_MESSAGES, R.bool.confirm_messages);
     }
 
     public boolean allowMessageCorrection() {
@@ -3920,7 +3926,7 @@ public class XmppConnectionService extends Service {
     }
 
     public boolean sendChatStates() {
-        return getBooleanPreference("chat_states", R.bool.chat_states);
+        return getBooleanPreference(CHAT_STATES, R.bool.chat_states);
     }
 
     private boolean synchronizeWithBookmarks() {
@@ -3928,7 +3934,7 @@ public class XmppConnectionService extends Service {
     }
 
     public boolean indicateReceived() {
-        return getBooleanPreference("indicate_received", R.bool.indicate_received);
+        return getBooleanPreference(INDICATE_RECEIVED, R.bool.indicate_received);
     }
 
     public boolean useTorToConnect() {
@@ -3948,7 +3954,7 @@ public class XmppConnectionService extends Service {
     }
 
     public boolean multipleAccounts() {
-        return getBooleanPreference("enable_multi_accounts", R.bool.enable_multi_accounts);
+        return getBooleanPreference(ENABLE_MULTI_ACCOUNTS, R.bool.enable_multi_accounts);
     }
 
     public int unreadCount() {
diff --git a/src/main/java/de/pixart/messenger/ui/ConversationsActivity.java b/src/main/java/de/pixart/messenger/ui/ConversationsActivity.java
index e84e657b7..009ea217e 100644
--- a/src/main/java/de/pixart/messenger/ui/ConversationsActivity.java
+++ b/src/main/java/de/pixart/messenger/ui/ConversationsActivity.java
@@ -95,6 +95,7 @@ import de.pixart.messenger.xmpp.chatstate.ChatState;
 import rocks.xmpp.addr.Jid;
 
 import static de.pixart.messenger.ui.ConversationFragment.REQUEST_DECRYPT_PGP;
+import static de.pixart.messenger.ui.SettingsActivity.USE_INTERNAL_UPDATER;
 
 public class ConversationsActivity extends XmppActivity implements OnConversationSelected, OnConversationArchived, OnConversationsListItemUpdated, OnConversationRead, XmppConnectionService.OnAccountUpdate, XmppConnectionService.OnConversationUpdate, XmppConnectionService.OnRosterUpdate, OnUpdateBlocklist, XmppConnectionService.OnShowErrorToast, XmppConnectionService.OnAffiliationChanged, XmppConnectionService.OnRoomDestroy {
 
@@ -195,10 +196,12 @@ public class ConversationsActivity extends XmppActivity implements OnConversatio
             System.exit(0);
         }
 
-        if (xmppConnectionService.getAccounts().size() != 0) {
-            if (xmppConnectionService.hasInternetConnection()) {
-                if (xmppConnectionService.isWIFI() || (xmppConnectionService.isMobile() && !xmppConnectionService.isMobileRoaming())) {
-                    AppUpdate(xmppConnectionService.installedFrom());
+        if (useInternalUpdater()) {
+            if (xmppConnectionService.getAccounts().size() != 0) {
+                if (xmppConnectionService.hasInternetConnection()) {
+                    if (xmppConnectionService.isWIFI() || (xmppConnectionService.isMobile() && !xmppConnectionService.isMobileRoaming())) {
+                        AppUpdate(xmppConnectionService.installedFrom());
+                    }
                 }
             }
         }
diff --git a/src/main/java/de/pixart/messenger/ui/EditAccountActivity.java b/src/main/java/de/pixart/messenger/ui/EditAccountActivity.java
index f62d68bef..9f06bcf2a 100644
--- a/src/main/java/de/pixart/messenger/ui/EditAccountActivity.java
+++ b/src/main/java/de/pixart/messenger/ui/EditAccountActivity.java
@@ -299,7 +299,7 @@ public class EditAccountActivity extends OmemoActivity implements OnAccountUpdat
             overridePendingTransition(R.animator.fade_in, R.animator.fade_out);
             finish();
         } else if (mInitMode && mAccount != null && mAccount.getStatus() == Account.State.ONLINE) {
-            runOnUiThread(this::performPostVerificationRedirect);
+            runOnUiThread(this::next);
         }
         if (mAccount != null) {
             updateAccountInformation(false);
@@ -307,7 +307,7 @@ public class EditAccountActivity extends OmemoActivity implements OnAccountUpdat
         updateSaveButton();
     }
 
-    private void performPostVerificationRedirect() {
+    private void next() {
         if (redirectInProgress.compareAndSet(false, true)) {
             Intent intent = new Intent(this, EnterNameActivity.class);
             startActivity(intent);
diff --git a/src/main/java/de/pixart/messenger/ui/EnterNameActivity.java b/src/main/java/de/pixart/messenger/ui/EnterNameActivity.java
index 1f59901a6..ccfd88dad 100644
--- a/src/main/java/de/pixart/messenger/ui/EnterNameActivity.java
+++ b/src/main/java/de/pixart/messenger/ui/EnterNameActivity.java
@@ -13,13 +13,12 @@ import de.pixart.messenger.databinding.ActivityEnterNameBinding;
 import de.pixart.messenger.entities.Account;
 import de.pixart.messenger.services.XmppConnectionService;
 import de.pixart.messenger.utils.AccountUtils;
+import de.pixart.messenger.utils.FirstStartManager;
 
 public class EnterNameActivity extends XmppActivity implements XmppConnectionService.OnAccountUpdate {
 
     private ActivityEnterNameBinding binding;
-
     private Account account;
-
     private AtomicBoolean setNick = new AtomicBoolean(false);
 
     @Override
@@ -28,19 +27,38 @@ public class EnterNameActivity extends XmppActivity implements XmppConnectionSer
         this.binding = DataBindingUtil.setContentView(this, R.layout.activity_enter_name);
         setSupportActionBar((Toolbar) this.binding.toolbar);
         this.binding.next.setOnClickListener(this::next);
+        updateNextButton();
         this.setNick.set(savedInstanceState != null && savedInstanceState.getBoolean("set_nick", false));
     }
 
+    private void updateNextButton() {
+        if (account != null && (account.getStatus() == Account.State.CONNECTING || account.getStatus() == Account.State.REGISTRATION_SUCCESSFUL)) {
+            this.binding.next.setEnabled(false);
+            this.binding.next.setText(R.string.account_status_connecting);
+        } else if (account != null && (account.getStatus() == Account.State.ONLINE)) {
+            this.binding.next.setEnabled(true);
+            this.binding.next.setText(R.string.next);
+        }
+    }
+
     private void next(View view) {
+        FirstStartManager firstStartManager = new FirstStartManager(this);
         if (account != null) {
             String name = this.binding.name.getText().toString().trim();
             account.setDisplayName(name);
             xmppConnectionService.publishDisplayName(account);
-            Intent intent = new Intent(this, PublishProfilePictureActivity.class);
-            intent.putExtra(PublishProfilePictureActivity.EXTRA_ACCOUNT, account.getJid().asBareJid().toEscapedString());
-            intent.putExtra("setup", true);
-            startActivity(intent);
-            overridePendingTransition(R.animator.fade_in, R.animator.fade_out);
+            if (firstStartManager.isFirstTimeLaunch()) {
+                Intent intent = new Intent(this, SetSettingsActivity.class);
+                intent.putExtra("setup", true);
+                startActivity(intent);
+                overridePendingTransition(R.animator.fade_in, R.animator.fade_out);
+            } else {
+                Intent intent = new Intent(this, PublishProfilePictureActivity.class);
+                intent.putExtra(PublishProfilePictureActivity.EXTRA_ACCOUNT, account.getJid().asBareJid().toEscapedString());
+                intent.putExtra("setup", true);
+                startActivity(intent);
+                overridePendingTransition(R.animator.fade_in, R.animator.fade_out);
+            }
         }
         finish();
     }
@@ -54,12 +72,14 @@ public class EnterNameActivity extends XmppActivity implements XmppConnectionSer
     @Override
     protected void refreshUiReal() {
         checkSuggestPreviousNick();
+        updateNextButton();
     }
 
     @Override
     void onBackendConnected() {
         this.account = AccountUtils.getFirst(xmppConnectionService);
         checkSuggestPreviousNick();
+        updateNextButton();
     }
 
     private void checkSuggestPreviousNick() {
diff --git a/src/main/java/de/pixart/messenger/ui/SetSettingsActivity.java b/src/main/java/de/pixart/messenger/ui/SetSettingsActivity.java
new file mode 100644
index 000000000..74786b6a9
--- /dev/null
+++ b/src/main/java/de/pixart/messenger/ui/SetSettingsActivity.java
@@ -0,0 +1,171 @@
+package de.pixart.messenger.ui;
+
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.databinding.DataBindingUtil;
+import android.os.Bundle;
+import android.preference.PreferenceManager;
+import android.support.v7.app.AlertDialog;
+import android.support.v7.widget.Toolbar;
+import android.util.Log;
+import android.view.View;
+
+import de.pixart.messenger.Config;
+import de.pixart.messenger.R;
+import de.pixart.messenger.databinding.ActivitySetSettingsBinding;
+import de.pixart.messenger.entities.Account;
+import de.pixart.messenger.services.XmppConnectionService;
+import de.pixart.messenger.utils.AccountUtils;
+import de.pixart.messenger.utils.FirstStartManager;
+
+import static de.pixart.messenger.ui.SettingsActivity.BROADCAST_LAST_ACTIVITY;
+import static de.pixart.messenger.ui.SettingsActivity.CHAT_STATES;
+import static de.pixart.messenger.ui.SettingsActivity.CONFIRM_MESSAGES;
+import static de.pixart.messenger.ui.SettingsActivity.FORBID_SCREENSHOTS;
+import static de.pixart.messenger.ui.SettingsActivity.SHOW_LINKS_INSIDE;
+import static de.pixart.messenger.ui.SettingsActivity.SHOW_MAPS_INSIDE;
+
+public class SetSettingsActivity extends XmppActivity implements XmppConnectionService.OnAccountUpdate {
+    ActivitySetSettingsBinding binding;
+    Account account;
+    static final int FORDBIDSCREENSHOTS = 1;
+    static final int SHOWWEBLINKS = 2;
+    static final int SHOWMAPPREVIEW = 3;
+    static final int CHATSTATES = 4;
+    static final int CONFIRMMESSAGES = 5;
+    static final int LASTSEEN = 6;
+
+    @Override
+    protected void refreshUiReal() {
+        createInfoMenu();
+    }
+
+    @Override
+    void onBackendConnected() {
+        this.account = AccountUtils.getFirst(xmppConnectionService);
+        refreshUi();
+    }
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        this.binding = DataBindingUtil.setContentView(this, R.layout.activity_set_settings);
+        setSupportActionBar((Toolbar) this.binding.toolbar);
+        this.binding.next.setOnClickListener(this::next);
+        createInfoMenu();
+        getDefaults();
+    }
+
+    private void createInfoMenu() {
+        this.binding.actionInfoForbidScreenshots.setOnClickListener(string -> showInfo(FORDBIDSCREENSHOTS));
+        this.binding.actionInfoShowWeblinks.setOnClickListener(string -> showInfo(SHOWWEBLINKS));
+        this.binding.actionInfoShowMapPreviews.setOnClickListener(string -> showInfo(SHOWMAPPREVIEW));
+        this.binding.actionInfoChatStates.setOnClickListener(string -> showInfo(CHATSTATES));
+        this.binding.actionInfoConfirmMessages.setOnClickListener(string -> showInfo(CONFIRMMESSAGES));
+        this.binding.actionInfoLastSeen.setOnClickListener(string -> showInfo(LASTSEEN));
+    }
+
+    private void getDefaults() {
+        this.binding.forbidScreenshots.setChecked(getResources().getBoolean(R.bool.screen_security));
+        this.binding.showLinks.setChecked(getResources().getBoolean(R.bool.show_links_inside));
+        this.binding.showMappreview.setChecked(getResources().getBoolean(R.bool.show_maps_inside));
+        this.binding.chatStates.setChecked(getResources().getBoolean(R.bool.chat_states));
+        this.binding.confirmMessages.setChecked(getResources().getBoolean(R.bool.confirm_messages));
+        this.binding.lastSeen.setChecked(getResources().getBoolean(R.bool.last_activity));
+    }
+
+    private void next(View view) {
+        setSettings();
+        FirstStartManager firstStartManager = new FirstStartManager(this);
+        firstStartManager.setFirstTimeLaunch(false);
+        if (account != null) {
+            Intent intent = new Intent(this, PublishProfilePictureActivity.class);
+            intent.putExtra(PublishProfilePictureActivity.EXTRA_ACCOUNT, account.getJid().asBareJid().toEscapedString());
+            intent.putExtra("setup", true);
+            startActivity(intent);
+            overridePendingTransition(R.animator.fade_in, R.animator.fade_out);
+        }
+        finish();
+    }
+
+    private void showInfo(int setting) {
+        Log.d(Config.LOGTAG, "STRING " + setting);
+        String title;
+        String message;
+        switch (setting) {
+            case FORDBIDSCREENSHOTS:
+                title = getString(R.string.pref_screen_security);
+                message = getString(R.string.pref_screen_security_summary);
+                break;
+            case SHOWWEBLINKS:
+                title = getString(R.string.pref_show_links_inside);
+                message = getString(R.string.pref_show_links_inside_summary);
+                break;
+            case SHOWMAPPREVIEW:
+                title = getString(R.string.pref_show_mappreview_inside);
+                message = getString(R.string.pref_show_mappreview_inside_summary);
+                break;
+            case CHATSTATES:
+                title = getString(R.string.pref_chat_states);
+                message = getString(R.string.pref_chat_states_summary);
+                break;
+            case CONFIRMMESSAGES:
+                title = getString(R.string.pref_confirm_messages);
+                message = getString(R.string.pref_confirm_messages_summary);
+                break;
+            case LASTSEEN:
+                title = getString(R.string.pref_broadcast_last_activity);
+                message = getString(R.string.pref_broadcast_last_activity_summary);
+                break;
+            default:
+                title = getString(R.string.error);
+                message = getString(R.string.error);
+        }
+        Log.d(Config.LOGTAG, "STRING value " + title);
+        AlertDialog.Builder builder = new AlertDialog.Builder(this);
+        builder.setTitle(title);
+        builder.setMessage(message);
+        builder.setNeutralButton(getString(R.string.ok), null);
+        builder.create().show();
+    }
+
+
+    private void setSettings() {
+        final SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
+        if (this.binding.forbidScreenshots.isChecked()) {
+            preferences.edit().putBoolean(FORBID_SCREENSHOTS, true).apply();
+        } else {
+            preferences.edit().putBoolean(FORBID_SCREENSHOTS, false).apply();
+        }
+        if (this.binding.showLinks.isChecked()) {
+            preferences.edit().putBoolean(SHOW_LINKS_INSIDE, true).apply();
+        } else {
+            preferences.edit().putBoolean(SHOW_LINKS_INSIDE, false).apply();
+        }
+        if (this.binding.showMappreview.isChecked()) {
+            preferences.edit().putBoolean(SHOW_MAPS_INSIDE, true).apply();
+        } else {
+            preferences.edit().putBoolean(SHOW_MAPS_INSIDE, false).apply();
+        }
+        if (this.binding.chatStates.isChecked()) {
+            preferences.edit().putBoolean(CHAT_STATES, true).apply();
+        } else {
+            preferences.edit().putBoolean(CHAT_STATES, false).apply();
+        }
+        if (this.binding.confirmMessages.isChecked()) {
+            preferences.edit().putBoolean(CONFIRM_MESSAGES, true).apply();
+        } else {
+            preferences.edit().putBoolean(CONFIRM_MESSAGES, false).apply();
+        }
+        if (this.binding.lastSeen.isChecked()) {
+            preferences.edit().putBoolean(BROADCAST_LAST_ACTIVITY, true).apply();
+        } else {
+            preferences.edit().putBoolean(BROADCAST_LAST_ACTIVITY, false).apply();
+        }
+    }
+
+    @Override
+    public void onAccountUpdate() {
+        refreshUi();
+    }
+}
diff --git a/src/main/java/de/pixart/messenger/ui/SettingsActivity.java b/src/main/java/de/pixart/messenger/ui/SettingsActivity.java
index 7d6f32dd8..9e321e079 100644
--- a/src/main/java/de/pixart/messenger/ui/SettingsActivity.java
+++ b/src/main/java/de/pixart/messenger/ui/SettingsActivity.java
@@ -56,12 +56,18 @@ public class SettingsActivity extends XmppActivity implements
     public static final String OMEMO_SETTING = "omemo";
     public static final String SHOW_FOREGROUND_SERVICE = "show_foreground_service";
     public static final String USE_BUNDLED_EMOJIS = "use_bundled_emoji";
-    public static final String USE_MULTI_ACCOUNTS = "use_multi_accounts";
+    public static final String ENABLE_MULTI_ACCOUNTS = "enable_multi_accounts";
     public static final String QUICK_SHARE_ATTACHMENT_CHOICE = "quick_share_attachment_choice";
     public static final String NUMBER_OF_ACCOUNTS = "number_of_accounts";
     public static final String PLAY_GIF_INSIDE = "play_gif_inside";
+    public static final String USE_INTERNAL_UPDATER = "use_internal_updater";
     public static final String SHOW_LINKS_INSIDE = "show_links_inside";
+    public static final String SHOW_MAPS_INSIDE = "show_maps_inside";
     public static final String PREFER_XMPP_AVATAR = "prefer_xmpp_avatar";
+    public static final String CHAT_STATES = "chat_states";
+    public static final String FORBID_SCREENSHOTS = "screen_security";
+    public static final String CONFIRM_MESSAGES = "confirm_messages";
+    public static final String INDICATE_RECEIVED = "indicate_received";
 
     public static final int REQUEST_CREATE_BACKUP = 0xbf8701;
     Preference multiAccountPreference;
@@ -438,7 +444,7 @@ public class SettingsActivity extends XmppActivity implements
     @Override
     public void onSharedPreferenceChanged(SharedPreferences preferences, String name) {
         final List<String> resendPresence = Arrays.asList(
-                "confirm_messages",
+                CONFIRM_MESSAGES,
                 DND_ON_SILENT_MODE,
                 AWAY_WHEN_SCREEN_IS_OFF,
                 "allow_message_correction",
diff --git a/src/main/java/de/pixart/messenger/ui/XmppActivity.java b/src/main/java/de/pixart/messenger/ui/XmppActivity.java
index afc319048..936c62390 100644
--- a/src/main/java/de/pixart/messenger/ui/XmppActivity.java
+++ b/src/main/java/de/pixart/messenger/ui/XmppActivity.java
@@ -97,6 +97,7 @@ import pl.droidsonroids.gif.GifDrawable;
 import rocks.xmpp.addr.Jid;
 
 import static de.pixart.messenger.ui.SettingsActivity.USE_BUNDLED_EMOJIS;
+import static de.pixart.messenger.ui.SettingsActivity.USE_INTERNAL_UPDATER;
 
 public abstract class XmppActivity extends ActionBarActivity {
 
@@ -455,6 +456,10 @@ public abstract class XmppActivity extends ActionBarActivity {
         return getBooleanPreference("display_enter_key", R.bool.display_enter_key);
     }
 
+    public boolean useInternalUpdater() {
+        return getBooleanPreference(USE_INTERNAL_UPDATER, R.bool.use_internal_updater);
+    }
+
     public SharedPreferences getPreferences() {
         return PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
     }
diff --git a/src/main/java/de/pixart/messenger/ui/adapter/MessageAdapter.java b/src/main/java/de/pixart/messenger/ui/adapter/MessageAdapter.java
index df063bcdb..be483a5f6 100644
--- a/src/main/java/de/pixart/messenger/ui/adapter/MessageAdapter.java
+++ b/src/main/java/de/pixart/messenger/ui/adapter/MessageAdapter.java
@@ -84,6 +84,7 @@ import pl.droidsonroids.gif.GifImageView;
 import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT;
 import static de.pixart.messenger.ui.SettingsActivity.PLAY_GIF_INSIDE;
 import static de.pixart.messenger.ui.SettingsActivity.SHOW_LINKS_INSIDE;
+import static de.pixart.messenger.ui.SettingsActivity.SHOW_MAPS_INSIDE;
 
 public class MessageAdapter extends ArrayAdapter<Message> implements CopyTextView.CopyHandler {
 
@@ -107,6 +108,7 @@ public class MessageAdapter extends ArrayAdapter<Message> implements CopyTextVie
     private boolean mIndicateReceived = false;
     private boolean mPlayGifInside = false;
     private boolean mShowLinksInside = false;
+    private boolean mShowMapsInside = false;
     private OnQuoteListener onQuoteListener;
 
     public MessageAdapter(XmppActivity activity, List<Message> messages) {
@@ -740,39 +742,43 @@ public class MessageAdapter extends ArrayAdapter<Message> implements CopyTextVie
         viewHolder.audioPlayer.setVisibility(View.GONE);
         viewHolder.messageBody.setVisibility(View.GONE);
         String url = GeoHelper.MapPreviewUri(message);
-        viewHolder.image.setVisibility(View.VISIBLE);
         viewHolder.gifImage.setVisibility(View.GONE);
         viewHolder.richlinkview.setVisibility(View.GONE);
-        double target = metrics.density * 200;
-        int scaledW;
-        int scaledH;
-        if (Math.max(500, 500) * metrics.density <= target) {
-            scaledW = (int) (500 * metrics.density);
-            scaledH = (int) (500 * metrics.density);
-        } else if (Math.max(500, 500) <= target) {
-            scaledW = 500;
-            scaledH = 500;
+        if (mShowMapsInside) {
+            viewHolder.image.setVisibility(View.VISIBLE);
+            double target = metrics.density * 200;
+            int scaledW;
+            int scaledH;
+            if (Math.max(500, 500) * metrics.density <= target) {
+                scaledW = (int) (500 * metrics.density);
+                scaledH = (int) (500 * metrics.density);
+            } else if (Math.max(500, 500) <= target) {
+                scaledW = 500;
+                scaledH = 500;
+            } else {
+                scaledW = (int) target;
+                scaledH = (int) (500 / ((double) 500 / target));
+            }
+            LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(scaledW, scaledH);
+            layoutParams.setMargins(0, (int) (metrics.density * 4), 0, (int) (metrics.density * 4));
+            viewHolder.image.setLayoutParams(layoutParams);
+            viewHolder.image.setOnClickListener(v -> showLocation(message));
+            Picasso
+                    .get()
+                    .load(Uri.parse(url))
+                    .placeholder(R.drawable.ic_map_marker_grey600_48dp)
+                    .error(R.drawable.ic_map_marker_grey600_48dp)
+                    .into(viewHolder.image);
+            viewHolder.image.setMaxWidth(500);
+            viewHolder.image.setAdjustViewBounds(true);
+            viewHolder.download_button.setVisibility(View.GONE);
         } else {
-            scaledW = (int) target;
-            scaledH = (int) (500 / ((double) 500 / target));
+            viewHolder.image.setVisibility(View.GONE);
+            viewHolder.download_button.setVisibility(View.VISIBLE);
+            viewHolder.download_button.setText(R.string.show_location);
+            viewHolder.download_button.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_map_marker_grey600_48dp, 0, 0, 0);
+            viewHolder.download_button.setOnClickListener(v -> showLocation(message));
         }
-        LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(scaledW, scaledH);
-        layoutParams.setMargins(0, (int) (metrics.density * 4), 0, (int) (metrics.density * 4));
-        viewHolder.image.setLayoutParams(layoutParams);
-        viewHolder.image.setOnClickListener(v -> showLocation(message));
-        Picasso
-                .get()
-                .load(Uri.parse(url))
-                .placeholder(R.drawable.ic_map_marker_grey600_48dp)
-                .error(R.drawable.ic_map_marker_grey600_48dp)
-                .into(viewHolder.image);
-        viewHolder.image.setMaxWidth(500);
-        viewHolder.image.setAdjustViewBounds(true);
-        viewHolder.download_button.setVisibility(View.GONE);
-        viewHolder.download_button.setText(R.string.show_location);
-        viewHolder.download_button.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_map_marker_grey600_48dp, 0, 0, 0);
-        viewHolder.download_button.setOnClickListener(v -> showLocation(message));
-
     }
 
     private void displayAudioMessage(ViewHolder viewHolder, Message message, boolean darkBackground) {
@@ -1183,6 +1189,7 @@ public class MessageAdapter extends ArrayAdapter<Message> implements CopyTextVie
         this.mIndicateReceived = p.getBoolean("indicate_received", activity.getResources().getBoolean(R.bool.indicate_received));
         this.mPlayGifInside = p.getBoolean(PLAY_GIF_INSIDE, activity.getResources().getBoolean(R.bool.play_gif_inside));
         this.mShowLinksInside = p.getBoolean(SHOW_LINKS_INSIDE, activity.getResources().getBoolean(R.bool.show_links_inside));
+        this.mShowMapsInside = p.getBoolean(SHOW_MAPS_INSIDE, activity.getResources().getBoolean(R.bool.show_maps_inside));
     }
 
     public void setHighlightedTerm(List<String> terms) {
diff --git a/src/main/java/de/pixart/messenger/utils/FirstStartManager.java b/src/main/java/de/pixart/messenger/utils/FirstStartManager.java
new file mode 100644
index 000000000..755b4a265
--- /dev/null
+++ b/src/main/java/de/pixart/messenger/utils/FirstStartManager.java
@@ -0,0 +1,30 @@
+package de.pixart.messenger.utils;
+
+import android.content.Context;
+import android.content.SharedPreferences;
+
+import static android.content.Context.MODE_PRIVATE;
+
+public class FirstStartManager {
+    Context context;
+    private SharedPreferences pref;
+    private SharedPreferences.Editor editor;
+    private static final String PREF_NAME = "de.pixart.messenger";
+    private static final String IS_FIRST_TIME_LAUNCH = "IsFirstTimeLaunch";
+
+    public FirstStartManager(Context context) {
+        this.context = context;
+        pref = this.context.getSharedPreferences(PREF_NAME, MODE_PRIVATE);
+        editor = pref.edit();
+    }
+
+    public void setFirstTimeLaunch(boolean isFirstTime) {
+        editor = pref.edit();
+        editor.putBoolean(IS_FIRST_TIME_LAUNCH, isFirstTime);
+        editor.commit();
+    }
+
+    public boolean isFirstTimeLaunch() {
+        return pref.getBoolean(IS_FIRST_TIME_LAUNCH, true);
+    }
+}
diff --git a/src/main/res/drawable-hdpi/ic_help_circle_outline_black_24dp.png b/src/main/res/drawable-hdpi/ic_help_circle_outline_black_24dp.png
new file mode 100644
index 0000000000000000000000000000000000000000..66c3262312c723b9085e6bc3f98d66755aa08e21
GIT binary patch
literal 888
zcmV-;1Bd*HP)<h;3K|Lk000e1NJLTq001xm001xu1^@s6R|5Hm0009&Nkl<Zc-rk*
zL2FY%5PsG+VhvG=M#cIMgeC}We?jjNvF$}X)Z`!7Bq(?gTkzWEm5PU+ikO0j)|&?r
zJX_O)Vxv%dd*Z<$M$pz-m|z%Z_wDZ6*H(A~AB1*xc4l{WzS(`Amq;RsxR9fOF+dHl
z3fKe$fS-r}|JDFhQMd0fIDQE*3)lwi8Da<U5HNHQj%NWruI^q$2pfxlv-{=zB;bn!
z$0>x(sW=@Uz?G6Y@C~p6C;>)rMN<gzdldgCblM6#KF;M-1_A4m2|oa)0VfRX3Ef+O
zEs4!FoYUFLuQ8MS0L<VDN3neyZBhHrUF`&yHZ8!g!yV3}O)i}x$rNMs4dA?DOaUi;
z-@^mqcO4y-iLklB%r|N4{28X&v=q)C2P^@06$f+|14$`@Xff3(YZHLa<ovM0`IiPI
z^MxXaJaZ=MHVjKiYDS^IWKs9$74|Abw`0oKb4;lmP~<#Kn|FXBAcH94Iq22-1-LA+
znPO6D)}%4pA%mw4QcXC2iqSjG1ffce64Bk(Z2-p@hE<Uib*iY)y~+fuB0I|1BRT=p
z$e@)FeR@_h3f&Bo+bVfN^eZ|6tdc<`hlF*K*!~`(Uncquok=!rwoOxR65Fps^hb$)
zQ)d!NUatD|D}b-W_KlD+IiervOhj`!<-qxC%z=CcI1)1MnBkd;C4f5&Ppl(*dvOHd
zGKKCj47_a6CR?SDt3xap`ZuxlNF!}job*;_P{UCfeN61U0`wc&pk?%_&Y-Fxk;#N!
z7soAZSP>cBwzlDYw<{fDCv7-BZQDwSX6|#0Y^*ER%^cTGZ#m)vT@iDABtASaF)+mN
zLB-GsT0Tvr#?=3dQLmI8ERAsoP++c<^S1Aw+@=0Pi~*cuQYWyz)C;-JII^J`glPb>
zXO)Sl2g;W`Y~>vu+5)rk0t<0JE#Ae3D@wJgGMv$E`1)O~(4ZuU?rxL}$u5m!TKn<1
z+q)CK;+?0B)L+J%RL=YRyq-gbFQbm?d40j<%5yT|#q)t9@M8YJK}&31lDnqp;Hqc6
z0}#R3_W_?gyN`TxHVhkw^kJu1!TUth`}Z?z6Z`oJ>K=;EtcfJ@zsn!|dP?!ms?`<%
O0000<MNUMnLSTZkqMUsI

literal 0
HcmV?d00001

diff --git a/src/main/res/drawable-mdpi/ic_help_circle_outline_black_24dp.png b/src/main/res/drawable-mdpi/ic_help_circle_outline_black_24dp.png
new file mode 100644
index 0000000000000000000000000000000000000000..e7f0d63b59ea377c4c505350ff31cebb631d8baa
GIT binary patch
literal 670
zcmV;P0%84$P)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F80007INkl<Zc-rlk
zze`(D6vtyVY1Ktiux^FAq`Ek12Sc+dxF!MDynjIdffgD&bab$3?4(fW*rijEjvZtE
zfn-ct$l#FF5Ka7E_&zus-;aAuL?}J*fycY&o_pTC=bU?9BJp3`WD2A~2CRcDS?9a-
zeJ;KNs-O;9pa-r=kMGRbXX;K&mO%wvfsrLf_Y>!iwcSO~1VdrGMdKx~MLfQ13%w!d
z7HP|Q@m+8sjMcbkDq>!WIyK?+1#LMwQ51{!!8`EGVg4d0bFS}1(dEpWV(~X1DaPkP
z0i1y@G0%C9`C{h06;3p5W1_<C8}iGO%IH^NRB{QvfN7;)7WOJOspdy}O>Mg|{6Q?(
z0l!E`ynnBpFgDIPHUKZ90`FKDDyi}3puw@<U;{iM=J^lD8q}5I3A@!W2huDgeyZtc
zf5mM!<9h+~_c`{Lx;i`j6s?C<%nTPEF{iaGfY%@go(7EXaPBqBvzDs(xJ-}(8!V|o
z+aD)$;FNRCQLF~&_{Y%W-Em8@^nS$ZW-AL^{7Rg0P_fz;WjZ@42bREhQ8P|d+B!Ml
zdIYoJn~3g1Rfxilpc{4saY3kMRixez@F+$<HV9=Jwqq_GBb(yf^D(-QZPHK|B5#5{
zg;gO+uuS@2bslpAu7RIqEkaM1;*85>RE~)1ocO9-h|Y|<jE-!!>xHQKeO{@_J2;T!
zRo)kOgmsIi8<H|}-d4=EAE<_;Fm6j$XE3E=qTS<}kJXaNrnI4&(l#U6Q%z|#q$w@j
zW$~c4eBjWQ8{LoNw&g)7TCw;sIgaXjCLs^@YxZx-4I5_y8^KGei~s-t07*qoM6N<$
Ef>p>oMF0Q*

literal 0
HcmV?d00001

diff --git a/src/main/res/drawable-xhdpi/ic_help_circle_outline_black_24dp.png b/src/main/res/drawable-xhdpi/ic_help_circle_outline_black_24dp.png
new file mode 100644
index 0000000000000000000000000000000000000000..82f8a1ab0380bfdbf3d1cd2882f04b8df72b0c49
GIT binary patch
literal 1435
zcmV;M1!Ve(P)<h;3K|Lk000e1NJLTq002M$002M;1^@s6s%dfF000GINkl<Zc-rk-
zO>9*~6rL7KtHEMaEPcR(2*iYi)(|(+s);L0bf*&760nrG!!AtwY@)CsLEI=mCb$r(
z=z_SADuz%AjWKBpLTggXf(4i;v`8$3pXxc`YalP@+&gn;?(HkNC;5`*_MUTQ=FXhI
zInS7!a>^;EoHC&TVJ)G9u!qn?=mmQ4jQ`h4XnYVRynxV5*g-f=m?HdV34V77yv<mU
zs@XE}g@oONvxG^9No%-H_#HAAR`SG)gl@vs0F&0hvOgd!tE7p~CA1U%AlylD^3z})
zV}v&7o>5v1<8|BeTwlT92MGOy6F@(njo}>|d%-$C#~5aWnqb`G2Kq1IAmMGob2uvV
z3AKc3pcc=HcxN4WY;4F7crv3ogcib|F<)nx(B)~kn70I3QM>FCyhU{u3&4slMhxaM
zVRJy&RRvia34g^b!pm7~d+p2LB>YHtIz|1<q2p%6A~dCG@J>e<xK2WS20O4G$6_kN
zCImN(>~8ie3jcviilb`y@3#ntVDWDN{P$P*-!jXyyoGR08PmSdF0x%QLQ|N0O$>hx
z0+{nLvBDj^Q?it~McE0rEkBACEk%$co%v2n{$mLOp6@KTa+hKgM&VYysayGKKUkc3
zPKbVWOoZ;=4W}%0)Wa}J{9Pdu8!5K`+rrvELO2p2^yO6f;TT;j;C{<_CkPEb3$R-`
zUz;p=Uq>b<O^V})?Swag?GdpBN0P5v=xbB#)UKqHe~NHU5IAg6u$Y7GD;dqhI2w|^
zZ<XWHXW<#R;4&ico>TP2Qj78hyDTES7Zkg}+j(9D-#jdkbe>mRM2sbYcM{R7Gwo2e
zqfKnzDezvgOj@4DyXE}vTktk23Dk#47C?&nzO>~1THqZ(#urEY&Y-}5$WnKYqT9KE
zIVGImb(Z`)3CGLuiDiVx_Ty(^61|qX*DGUp%1YOIY++ww_xX#U{~L#dZCv1Qbs0p5
zAYd$1WEDfJ6qnfHP@5bR__w(XVz0*;_ARy?7PjyWhYasA#fE(5G7!m#okHm<En0vw
zSh?O?NTh737Bxo61zXe6guzHsdIk$DMRIIFA9vhEeS(~$E(7Y#Z~-{rx}XF<ClW+)
zK^7pZBk(55SW*sf1mUqO1vvs)7{OJ_m*?F6fJa3qh!M=f4IWSuA1;kO>LIs?s*;x*
zY)v^3Dk{kmM}Tz!D%VmV^qPy1M$b?<j^0&@t1SU!Z&1eWTo@S=26-^h0(>FJ{*CZt
z0NFv3AuS!AG-0|oz87SlBs}CPw-7QNZc&7lOl5X!R3T!NKH8d)C9x4xnLRvON$hOW
zk{Hv+N>TKk0G9fdGWg!<wJV-wmyb{`B1{<h26(xL+~Z2jpOjWAWwdeQSr#`qSJKM<
z<PjN$TmT-!F(sGi3~{zNXwk05N)@mG-A2C}TN28^XqOHgU~Dz<7nx}+Kn-k>b~(B^
zq=n_g<WnVUyM{%`dI8!HJxXKRo8Y6w(qbh#oZbn1VUk6I#C&Xf?ZTBa!9{5)Z;Hs@
zr(0xJq&WGNFuq!g3>Q<MP5TSPHA!7XvQseOnxqQY@|R6?lhjLDL|oNagi9v6O>P8U
z!Y67hzzvU>=+2UhCc`$l`;WtriND|HSe&o5)`MrdQL@h5Ym}@r_ZlUekka-TyGF^u
zEVg}=VRUJg9Y<wp5OupgpdZi9;~ke)*+piCX)ey^sL8HbdK7-X##9g$;R+{GocuU+
zEHM>K4amUGn7jQ1zLRD<FbtUuW){&Cgck`P;e5OPWM%-BoaWg!@u<|AE3@yJyEXdq
pA5HPIZFuK_m~c)x<&;y!)BlCO7UKvF!rcG>002ovPDHLkV1gXkpZEX(

literal 0
HcmV?d00001

diff --git a/src/main/res/drawable-xxhdpi/ic_help_circle_outline_black_24dp.png b/src/main/res/drawable-xxhdpi/ic_help_circle_outline_black_24dp.png
new file mode 100644
index 0000000000000000000000000000000000000000..3eb7065fe21c8176cc99e334c86f09b432265dff
GIT binary patch
literal 1979
zcmV;s2SoUZP)<h;3K|Lk000e1NJLTq003YB003YJ1^@s6;+S_h000MqNkl<Zc-rk<
zX>6875FUz_3R0m3)F2=jz{sJ9{xKrhASC4|8axoACK{9iRS*#pV!-Q%fl3ufxHMp5
zV!|Qf4*}y3B9fperKmsTQji47C18Rm;EdlkQ9?WO?)C2bb)V!(n(vsIoqfOE+1c4G
zKtx1DL_|bHL_|bHL|EvA9FD9)E<%2R+=bkWJc0aE@q~Jf-rKA`I|Vrm*)h6Nj@HNu
zWQ}s>MdT$zl8jp90_14qHPOxgM*;F)<PzlX797rzbgV*-LbhzqjxR!1BKLW4dSj$v
zYa+5$a~o!+BM+zO_{&MQOjEYyHRxx*KOo0n&V$IY`RMqYksAVb{N-Ga?3ypmAEUy=
zOBo|g){kV_@ieh5wBU#%$koU>$j6X(BD*8oBd=C$uU@0~#v$jb?;N!d!q#MQk}gGV
zGidm?YEtZrY++yreYc;IwZp)kuaG5Kaef!%j~b0Ujhv6{<IpyeU5z}WVc%}#O`$vg
zR^+b<8+JksFD0ITp)^dLOla#b$ljqkzccbc!tr&L%J-y&614(PlJYo&>=xpfpJdpf
z)$gEy>>r$PeX={GIiXd;33m;$U4Xw}ilo*hXvfx2qN9ZghMXCJ&tVib%}OvN)ue6k
zSfQckkxv@xDpoQ6GURp@<DXYNs$N^F)(UM6bv=#zOZZSdlxBM2l+gL34fOOvu0Z~g
zV0fU<E=Tq>&|4wwgp+Aa${U1Fi0+e58z=LGPH3w0--cZ3TlbeB8IIQbc7BD>0lH&8
zJ-Kxj^EwnH+^A{GOregEzMS7$81Jvqls~{i4yUnHbAQc=SrQ%X15ewX(?Pb=)K2rs
zcj5g1cESysA*y7Z@S<zy(^z^~Fzyf19P{hIeVTcjX8b-xFdrOpy*8*6H1GpW+4I0(
zu79qkjUNhRKj+H%1;B5hQ({f04yRXwXot#GUQn6MHi~`JYtmoP8O@=HzQa{+>;bbB
zdZV~s(6Bk0vR4RXpMzWlLqQXAsLW&%<chU8d5bk|eM2DoJ{KMEKJfW`odi{}V3BoB
zJpfXa2|D2{@>&ghJE-qAC3~5R(DO8-biStSae^o6c@4Rf1#%zNwD}!I?kU?Lsbt}$
zyOXs{Fy<F%$Ze_8#!bmyqG@wKfj>sr?0_0Z**6BVw==S<3}jCggrvII$;h5(vjcW9
z%BC8~u4iQ5W+1yS@D&%jc$ty?y)EZ=5-dRa8OY}*OOw=cTfyY6i#r(E7u1ApjNyW(
z$VuF50bB>1HCz{QzuuuX8d1e4Sq<UhcE<JthVs`k@+aG9#3DzFFCTc7vHcT6`L8kZ
z-?Pz(&5V+9fjYkf@HMHGhC0SG@;BOO2$x?O7@+eDk(&f7_v;Mx+|B5ywb7UZjFQlb
zlqkLMxnQC6iUnQWf#0Mt#xX`oX+X}Wntn+U?$?m3s<tuAHKnKCMx(emy)Y2x4-<ri
z4Utc0OFCOQTxVpe186VcZ;%z&_Oz(iO9vchl%!cB*+PZEl1-SOAXhqXJJNDK1aX_u
zX->k6LB0>{Vy^Ns35ObnRtlZ}8Mr%s>Lm;faUs?NWTlE9Bd>C3hnIy|h^dH`0_T4T
z?#sttXKZ-ahLS0PCF5w~<0>fVut>27TexK0BwO)yQ%a74-*of@;0wd<@nA=RV3BGi
z9o-S!Zphdkel~itV*v0QGS(umT1MG4j~&3-@{}h#W-xYqXH(e%M%fOJ9dLxP<rYtN
zc-@pAEr>e$dTRJN#*Q`~Z0IlWN4ZUfw2<LyBCDbKfEy9$*iw;grCj~yS+G<E5IAUJ
z<*qtd>O%1la98%7CA=l@gOfw(6!-2G{PeERW9QR3Gp<JVXP4`uiGto=>DURJewX-2
zpnrl(188FTO|TLjoQEAy2C_3~&aW?c31mA@rFql=(nESxKE}b;LSxoB8Vh}Q0JY&$
zf!;kXLeIu93S^rhv+|$=W((U|4xX`IU=+;<&t$j*o&ecZ1#8m?$-08<$}h^@S7fjQ
z#(?bPCY3*Sfs`;(_=Hf&$g>&h0J>o0yzm$PVA_k58sQj8#?FLr&k{6DxU)fiVN($K
zFN%A&g8Y>FIu+K1h7w`4)4(kdPF3K)#_vvG{C<^N3I%0q?IN|mF2si@>9v(ay7Vc{
z%TVd+fmM*~+RB3v@WtM}6Fx}|mt@oNf1jyr+UI^#kXXCY3cpwA8AE!ae@NJ{hW!LO
zf$nmHpLVhq0Dsj$W5Z5o$OuXjPRv(2V@v07=_qJ{fgSW+s$QTC^qmIwYzZ`QV56fN
zF#k_T^=hR_RcMbR?}A)uVu^}E3f12|)O+LAXX!h~40T^rp=Kdu7!{D+f8g*i<O#Y7
zb4Q_YZJOx?*Qtwr0Xv?yTt`5jgYMCx+XW8=<amnh>6lXyG$YU?O&8qlNzw7Nfj%MY
zldKI4R1woL4^BU&R=-07PYkAlA~gnAtF^!d3l1k4R47YVs+BjlVa61co_GLq2Oa3*
zi%n`lMUy3+-fZ}Hw#U_L^xj7G*-7dtFO6=Dh=_=Yh=_=Yh=>RY{{S)pD+{K)Xz&04
N002ovPDHLkV1hjn#329x

literal 0
HcmV?d00001

diff --git a/src/main/res/drawable-xxxhdpi/ic_help_circle_outline_black_24dp.png b/src/main/res/drawable-xxxhdpi/ic_help_circle_outline_black_24dp.png
new file mode 100644
index 0000000000000000000000000000000000000000..5838e0bbd5ee5c65f67d08b3cc027f173a5c452e
GIT binary patch
literal 4762
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

literal 0
HcmV?d00001

diff --git a/src/main/res/layout/activity_enter_name.xml b/src/main/res/layout/activity_enter_name.xml
index cb446479d..e98d55233 100644
--- a/src/main/res/layout/activity_enter_name.xml
+++ b/src/main/res/layout/activity_enter_name.xml
@@ -54,6 +54,7 @@
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     android:layout_alignParentEnd="true"
+                    android:layout_alignParentRight="true"
                     android:layout_alignParentBottom="true"
                     android:text="@string/next"
                     android:textColor="?colorAccent" />
diff --git a/src/main/res/layout/activity_set_settings.xml b/src/main/res/layout/activity_set_settings.xml
new file mode 100644
index 000000000..5560b6106
--- /dev/null
+++ b/src/main/res/layout/activity_set_settings.xml
@@ -0,0 +1,239 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layout xmlns:tools="http://schemas.android.com/tools"
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:card_view="http://schemas.android.com/apk/res-auto">
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:orientation="vertical">
+
+        <include
+            android:id="@+id/toolbar"
+            layout="@layout/toolbar" />
+
+        <ScrollView
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:fillViewport="true">
+
+            <RelativeLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content">
+
+                <LinearLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:orientation="vertical"
+                    android:padding="@dimen/card_padding_regular">
+
+                    <TextView
+                        android:layout_width="match_parent"
+                        android:layout_height="match_parent"
+                        android:paddingBottom="@dimen/card_padding_regular"
+                        android:text="@string/set_settings_intro"
+                        android:textAppearance="@style/TextAppearance.Conversations.Subhead" />
+
+                    <TableLayout
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:shrinkColumns="0"
+                        android:stretchColumns="0">
+
+                        <TableRow
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            android:paddingBottom="@dimen/card_padding_regular">
+
+                            <TextView
+                                android:layout_width="wrap_content"
+                                android:layout_height="match_parent"
+                                android:ellipsize="end"
+                                android:gravity="center_vertical"
+                                android:text="@string/pref_screen_security"
+                                android:textAppearance="@style/TextAppearance.Conversations.Body1" />
+
+                            <ImageButton
+                                android:id="@+id/action_info_forbid_screenshots"
+                                android:layout_width="wrap_content"
+                                android:layout_height="wrap_content"
+                                android:alpha="?attr/icon_alpha"
+                                android:background="?attr/selectableItemBackgroundBorderless"
+                                android:gravity="center_vertical"
+                                android:padding="@dimen/image_button_padding"
+                                android:src="@drawable/ic_help_circle_outline_black_24dp" />
+
+                            <android.support.v7.widget.AppCompatCheckBox
+                                android:id="@+id/forbid_screenshots"
+                                android:layout_width="wrap_content"
+                                android:layout_height="match_parent"
+                                android:gravity="center_vertical"
+                                android:padding="@dimen/image_button_padding" />
+                        </TableRow>
+
+                        <TableRow
+                            android:layout_width="fill_parent"
+                            android:layout_height="wrap_content"
+                            android:paddingBottom="@dimen/card_padding_regular">
+
+                            <TextView
+                                android:layout_width="wrap_content"
+                                android:layout_height="match_parent"
+                                android:ellipsize="end"
+                                android:gravity="center_vertical"
+                                android:text="@string/pref_show_links_inside"
+                                android:textAppearance="@style/TextAppearance.Conversations.Body1" />
+
+                            <ImageButton
+                                android:id="@+id/action_info_show_weblinks"
+                                android:layout_width="wrap_content"
+                                android:layout_height="wrap_content"
+                                android:alpha="?attr/icon_alpha"
+                                android:background="?attr/selectableItemBackgroundBorderless"
+                                android:gravity="center_vertical"
+                                android:padding="@dimen/image_button_padding"
+                                android:src="@drawable/ic_help_circle_outline_black_24dp" />
+
+                            <android.support.v7.widget.AppCompatCheckBox
+                                android:id="@+id/show_links"
+                                android:layout_width="wrap_content"
+                                android:layout_height="match_parent"
+                                android:gravity="center_vertical" />
+                        </TableRow>
+
+                        <TableRow
+                            android:layout_width="fill_parent"
+                            android:layout_height="wrap_content"
+                            android:paddingBottom="@dimen/card_padding_regular">
+
+                            <TextView
+                                android:layout_width="wrap_content"
+                                android:layout_height="match_parent"
+                                android:ellipsize="end"
+                                android:gravity="center_vertical"
+                                android:text="@string/pref_show_mappreview_inside"
+                                android:textAppearance="@style/TextAppearance.Conversations.Body1" />
+
+                            <ImageButton
+                                android:id="@+id/action_info_show_map_previews"
+                                android:layout_width="wrap_content"
+                                android:layout_height="wrap_content"
+                                android:alpha="?attr/icon_alpha"
+                                android:background="?attr/selectableItemBackgroundBorderless"
+                                android:gravity="center_vertical"
+                                android:padding="@dimen/image_button_padding"
+                                android:src="@drawable/ic_help_circle_outline_black_24dp" />
+
+                            <android.support.v7.widget.AppCompatCheckBox
+                                android:id="@+id/show_mappreview"
+                                android:layout_width="wrap_content"
+                                android:layout_height="match_parent"
+                                android:gravity="center_vertical" />
+                        </TableRow>
+
+                        <TableRow
+                            android:layout_width="fill_parent"
+                            android:layout_height="wrap_content"
+                            android:paddingBottom="@dimen/card_padding_regular">
+
+                            <TextView
+                                android:layout_width="wrap_content"
+                                android:layout_height="match_parent"
+                                android:ellipsize="end"
+                                android:gravity="center_vertical"
+                                android:text="@string/pref_chat_states"
+                                android:textAppearance="@style/TextAppearance.Conversations.Body1" />
+
+                            <ImageButton
+                                android:id="@+id/action_info_chat_states"
+                                android:layout_width="wrap_content"
+                                android:layout_height="wrap_content"
+                                android:alpha="?attr/icon_alpha"
+                                android:background="?attr/selectableItemBackgroundBorderless"
+                                android:gravity="center_vertical"
+                                android:padding="@dimen/image_button_padding"
+                                android:src="@drawable/ic_help_circle_outline_black_24dp" />
+
+                            <android.support.v7.widget.AppCompatCheckBox
+                                android:id="@+id/chat_states"
+                                android:layout_width="wrap_content"
+                                android:layout_height="match_parent"
+                                android:gravity="center_vertical" />
+                        </TableRow>
+
+                        <TableRow
+                            android:layout_width="fill_parent"
+                            android:layout_height="wrap_content"
+                            android:paddingBottom="@dimen/card_padding_regular">
+
+                            <TextView
+                                android:layout_width="wrap_content"
+                                android:layout_height="match_parent"
+                                android:ellipsize="end"
+                                android:gravity="center_vertical"
+                                android:text="@string/pref_confirm_messages"
+                                android:textAppearance="@style/TextAppearance.Conversations.Body1" />
+
+                            <ImageButton
+                                android:id="@+id/action_info_confirm_messages"
+                                android:layout_width="wrap_content"
+                                android:layout_height="wrap_content"
+                                android:alpha="?attr/icon_alpha"
+                                android:background="?attr/selectableItemBackgroundBorderless"
+                                android:gravity="center_vertical"
+                                android:padding="@dimen/image_button_padding"
+                                android:src="@drawable/ic_help_circle_outline_black_24dp" />
+
+                            <android.support.v7.widget.AppCompatCheckBox
+                                android:id="@+id/confirm_messages"
+                                android:layout_width="wrap_content"
+                                android:layout_height="match_parent"
+                                android:gravity="center_vertical" />
+                        </TableRow>
+
+                        <TableRow
+                            android:layout_width="fill_parent"
+                            android:layout_height="wrap_content"
+                            android:paddingBottom="@dimen/card_padding_regular">
+
+                            <TextView
+                                android:layout_width="wrap_content"
+                                android:layout_height="match_parent"
+                                android:ellipsize="end"
+                                android:gravity="center_vertical"
+                                android:text="@string/pref_broadcast_last_activity"
+                                android:textAppearance="@style/TextAppearance.Conversations.Body1" />
+
+                            <ImageButton
+                                android:id="@+id/action_info_last_seen"
+                                android:layout_width="wrap_content"
+                                android:layout_height="wrap_content"
+                                android:alpha="?attr/icon_alpha"
+                                android:background="?attr/selectableItemBackgroundBorderless"
+                                android:gravity="center_vertical"
+                                android:padding="@dimen/image_button_padding"
+                                android:src="@drawable/ic_help_circle_outline_black_24dp" />
+
+                            <android.support.v7.widget.AppCompatCheckBox
+                                android:id="@+id/last_seen"
+                                android:layout_width="wrap_content"
+                                android:layout_height="match_parent"
+                                android:gravity="center_vertical" />
+                        </TableRow>
+                    </TableLayout>
+                </LinearLayout>
+
+                <Button
+                    android:id="@+id/next"
+                    style="@style/Widget.Conversations.Button.Borderless"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_alignParentEnd="true"
+                    android:layout_alignParentRight="true"
+                    android:layout_alignParentBottom="true"
+                    android:text="@string/next"
+                    android:textColor="?colorAccent" />
+            </RelativeLayout>
+        </ScrollView>
+    </LinearLayout>
+</layout>
\ No newline at end of file
diff --git a/src/main/res/values/bools.xml b/src/main/res/values/bools.xml
deleted file mode 100644
index f5d0a43b6..000000000
--- a/src/main/res/values/bools.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-    <bool name="prefer_xmpp_avatar">true</bool>
-    <bool name="show_links_inside">true</bool>
-</resources>
\ No newline at end of file
diff --git a/src/main/res/values/defaults.xml b/src/main/res/values/defaults.xml
index e8e0c9206..dc4f7ead3 100644
--- a/src/main/res/values/defaults.xml
+++ b/src/main/res/values/defaults.xml
@@ -113,6 +113,10 @@
     <bool name="quick_share_attachment_choice">true</bool>
     <bool name="screen_security">false</bool>
     <bool name="play_gif_inside">false</bool>
+    <bool name="prefer_xmpp_avatar">true</bool>
+    <bool name="show_links_inside">true</bool>
+    <bool name="show_maps_inside">true</bool>
+    <bool name="use_internal_updater">true</bool>
 
     <string-array name="domains">
         <item>pix-art.de</item>
diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml
index d4dd1c5cf..00f199a0f 100644
--- a/src/main/res/values/strings.xml
+++ b/src/main/res/values/strings.xml
@@ -110,7 +110,7 @@
     <string name="pref_sound">Ringtone</string>
     <string name="pref_sound_summary">Play sound when a new message arrives</string>
     <string name="pref_send_crash">Send crash reports</string>
-    <string name="pref_send_crash_summary">By sending in stack traces you are helping the ongoing development of Pix-Art Messenger</string>
+    <string name="pref_send_crash_summary">By sending stack traces you are helping the ongoing development of Pix-Art Messenger</string>
     <string name="pref_confirm_messages">Confirm Messages</string>
     <string name="pref_confirm_messages_summary">Let your contacts know when you have received and read their messages</string>
     <string name="pref_ui_options">UI</string>
@@ -890,4 +890,9 @@
     <string name="mgmt_account_password_forgotten">Password forgotten</string>
     <string name="password_forgotten_title">Password forgotten</string>
     <string name="password_forgotten_text">You have forgotten your account password? We will now try to open the support website of your provider.</string>
+    <string name="set_settings_intro">Here you can set some important privacy settings to your needs. All the settings can also be modified later.</string>
+    <string name="pref_show_mappreview_inside_summary">Show map previews directly inside the chat view</string>
+    <string name="pref_show_mappreview_inside">Show previews of locations in chat</string>
+    <string name="pref_use_internal_updater_summary">Let the messenger look for new app updates once a day</string>
+    <string name="pref_use_internal_updater">look for updates</string>
 </resources>
diff --git a/src/main/res/xml/preferences.xml b/src/main/res/xml/preferences.xml
index 15fe0fc34..069adc3e8 100644
--- a/src/main/res/xml/preferences.xml
+++ b/src/main/res/xml/preferences.xml
@@ -76,11 +76,6 @@
             android:key="play_gif_inside"
             android:summary="@string/pref_play_gif_inside_summary"
             android:title="@string/pref_play_gif_inside" />
-        <CheckBoxPreference
-            android:defaultValue="@bool/show_links_inside"
-            android:key="show_links_inside"
-            android:summary="@string/pref_show_links_inside_summary"
-            android:title="@string/pref_show_links_inside" />
         <CheckBoxPreference
             android:defaultValue="@bool/prefer_xmpp_avatar"
             android:key="prefer_xmpp_avatar"
@@ -300,6 +295,21 @@
             android:key="last_activity"
             android:summary="@string/pref_broadcast_last_activity_summary"
             android:title="@string/pref_broadcast_last_activity" />
+        <CheckBoxPreference
+            android:defaultValue="@bool/use_internal_updater"
+            android:key="use_internal_updater"
+            android:summary="@string/pref_use_internal_updater_summary"
+            android:title="@string/pref_use_internal_updater" />
+        <CheckBoxPreference
+            android:defaultValue="@bool/show_links_inside"
+            android:key="show_links_inside"
+            android:summary="@string/pref_show_links_inside_summary"
+            android:title="@string/pref_show_links_inside" />
+        <CheckBoxPreference
+            android:defaultValue="@bool/show_maps_inside"
+            android:key="show_maps_inside"
+            android:summary="@string/pref_show_mappreview_inside_summary"
+            android:title="@string/pref_show_mappreview_inside" />
         <CheckBoxPreference
             android:defaultValue="@bool/warn_unencrypted_chat"
             android:key="warn_unencrypted_chat"