diff --git a/res/drawable/divider_end.xml b/res/drawable/divider_end.xml
deleted file mode 100644
index 553712883..000000000
--- a/res/drawable/divider_end.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
diff --git a/res/drawable/divider_start.xml b/res/drawable/divider_start.xml
deleted file mode 100644
index 45500503b..000000000
--- a/res/drawable/divider_start.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
diff --git a/res/layout/new_contact_activity.xml b/res/layout/new_contact_activity.xml
index 12466080d..5e5e4b80c 100644
--- a/res/layout/new_contact_activity.xml
+++ b/res/layout/new_contact_activity.xml
@@ -10,15 +10,10 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ app:layout_constraintTop_toTopOf="parent">
-
-
diff --git a/res/menu/qr_show.xml b/res/menu/qr_show.xml
index 3bbd0773f..b3279e2b5 100644
--- a/res/menu/qr_show.xml
+++ b/res/menu/qr_show.xml
@@ -7,10 +7,22 @@
android:icon="@drawable/ic_share_white_24dp"
app:showAsAction="ifRoom"/>
+
+
+
+
+
+
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 5f7d4c483..61cb48437 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -199,6 +199,7 @@
New Contact
+ Add Contact Manually
New Chat
New Group
Clone Chat
diff --git a/src/com/b44t/messenger/DcContact.java b/src/com/b44t/messenger/DcContact.java
index 91afae6f0..0f61d9107 100644
--- a/src/com/b44t/messenger/DcContact.java
+++ b/src/com/b44t/messenger/DcContact.java
@@ -6,7 +6,7 @@ public class DcContact {
public final static int DC_CONTACT_ID_INFO = 2;
public final static int DC_CONTACT_ID_DEVICE = 5;
public final static int DC_CONTACT_ID_LAST_SPECIAL = 9;
- public final static int DC_CONTACT_ID_NEW_CONTACT = -1; // used by the UI, not valid to the core
+ public final static int DC_CONTACT_ID_NEW_CLASSIC_CONTACT= -1; // used by the UI, not valid to the core
public final static int DC_CONTACT_ID_NEW_GROUP = -2; // - " -
public final static int DC_CONTACT_ID_ADD_MEMBER = -3; // - " -
public final static int DC_CONTACT_ID_QR_INVITE = -4; // - " -
diff --git a/src/org/thoughtcrime/securesms/ContactSelectionListFragment.java b/src/org/thoughtcrime/securesms/ContactSelectionListFragment.java
index cc0ccec9e..4dd91ebf3 100644
--- a/src/org/thoughtcrime/securesms/ContactSelectionListFragment.java
+++ b/src/org/thoughtcrime/securesms/ContactSelectionListFragment.java
@@ -350,7 +350,7 @@ public class ContactSelectionListFragment extends Fragment
int specialId = contact.getSpecialId();
String addr = contact.getNumber();
if (!isMulti() || !selectedContacts.contains(addr)) {
- if (specialId == DcContact.DC_CONTACT_ID_NEW_CONTACT) {
+ if (specialId == DcContact.DC_CONTACT_ID_NEW_CLASSIC_CONTACT) {
Intent intent = new Intent(getContext(), NewContactActivity.class);
if (dcContext.mayBeValidAddr(cursorFilter)) {
intent.putExtra(NewContactActivity.ADDR_EXTRA, cursorFilter);
diff --git a/src/org/thoughtcrime/securesms/NewConversationActivity.java b/src/org/thoughtcrime/securesms/NewConversationActivity.java
index 49e99882d..47411508b 100644
--- a/src/org/thoughtcrime/securesms/NewConversationActivity.java
+++ b/src/org/thoughtcrime/securesms/NewConversationActivity.java
@@ -72,7 +72,7 @@ public class NewConversationActivity extends ContactSelectionActivity {
if (!textToShare.isEmpty()) {
getIntent().putExtra(TEXT_EXTRA, textToShare);
}
- onContactSelected(DcContact.DC_CONTACT_ID_NEW_CONTACT, recipientsArray[0]);
+ onContactSelected(DcContact.DC_CONTACT_ID_NEW_CLASSIC_CONTACT, recipientsArray[0]);
} else {
Intent shareIntent = new Intent(this, ShareActivity.class);
shareIntent.putExtra(Intent.EXTRA_TEXT, textToShare);
diff --git a/src/org/thoughtcrime/securesms/connect/DcContactsLoader.java b/src/org/thoughtcrime/securesms/connect/DcContactsLoader.java
index 03e65135b..2ffddfde5 100644
--- a/src/org/thoughtcrime/securesms/connect/DcContactsLoader.java
+++ b/src/org/thoughtcrime/securesms/connect/DcContactsLoader.java
@@ -46,15 +46,15 @@ public class DcContactsLoader extends AsyncLoader {
{
additional_items = Util.appendInt(additional_items, DcContact.DC_CONTACT_ID_QR_INVITE);
}
+ if (addCreateContactLink && !dcContext.isChatmail())
+ {
+ additional_items = Util.appendInt(additional_items, DcContact.DC_CONTACT_ID_NEW_CLASSIC_CONTACT);
+ }
if (query == null && addCreateGroupLinks) {
additional_items = Util.appendInt(additional_items, DcContact.DC_CONTACT_ID_NEW_GROUP);
final boolean broadcastsEnabled = Prefs.isNewBroadcastListAvailable(getContext());
if (broadcastsEnabled) additional_items = Util.appendInt(additional_items, DcContact.DC_CONTACT_ID_NEW_BROADCAST_LIST);
}
- if (addCreateContactLink)
- {
- additional_items = Util.appendInt(additional_items, DcContact.DC_CONTACT_ID_NEW_CONTACT);
- }
int all_ids[] = new int[contact_ids.length + additional_items.length];
System.arraycopy(additional_items, 0, all_ids, 0, additional_items.length);
System.arraycopy(contact_ids, 0, all_ids, additional_items.length, contact_ids.length);
diff --git a/src/org/thoughtcrime/securesms/contacts/ContactSelectionListAdapter.java b/src/org/thoughtcrime/securesms/contacts/ContactSelectionListAdapter.java
index f5f4947c1..dda073439 100644
--- a/src/org/thoughtcrime/securesms/contacts/ContactSelectionListAdapter.java
+++ b/src/org/thoughtcrime/securesms/contacts/ContactSelectionListAdapter.java
@@ -271,15 +271,15 @@ public class ContactSelectionListAdapter extends RecyclerView.Adapter
String addr = null;
boolean itemMultiSelect = multiSelect;
- if (id == DcContact.DC_CONTACT_ID_NEW_CONTACT) {
- name = context.getString(R.string.menu_new_contact);
+ if (id == DcContact.DC_CONTACT_ID_NEW_CLASSIC_CONTACT) {
+ name = context.getString(R.string.menu_new_classic_contact);
itemMultiSelect = false; // the item creates a new contact in the list that will be selected instead
} else if (id == DcContact.DC_CONTACT_ID_NEW_GROUP) {
name = context.getString(R.string.menu_new_group);
} else if (id == DcContact.DC_CONTACT_ID_NEW_BROADCAST_LIST) {
name = context.getString(R.string.new_broadcast_list);
} else if (id == DcContact.DC_CONTACT_ID_QR_INVITE) {
- name = context.getString(R.string.qrscan_title);
+ name = context.getString(R.string.menu_new_contact);
} else {
dcContact = getContact(i);
name = dcContact.getDisplayName();
diff --git a/src/org/thoughtcrime/securesms/contacts/ContactSelectionListItem.java b/src/org/thoughtcrime/securesms/contacts/ContactSelectionListItem.java
index 6ef23e6c2..18f798449 100644
--- a/src/org/thoughtcrime/securesms/contacts/ContactSelectionListItem.java
+++ b/src/org/thoughtcrime/securesms/contacts/ContactSelectionListItem.java
@@ -64,7 +64,7 @@ public class ContactSelectionListItem extends LinearLayout implements RecipientM
this.name = name;
this.number = number;
- if (specialId==DcContact.DC_CONTACT_ID_NEW_CONTACT || specialId==DcContact.DC_CONTACT_ID_NEW_GROUP
+ if (specialId==DcContact.DC_CONTACT_ID_NEW_CLASSIC_CONTACT || specialId==DcContact.DC_CONTACT_ID_NEW_GROUP
|| specialId==DcContact.DC_CONTACT_ID_NEW_BROADCAST_LIST
|| specialId==DcContact.DC_CONTACT_ID_ADD_MEMBER || specialId==DcContact.DC_CONTACT_ID_QR_INVITE) {
this.recipient = null;
diff --git a/src/org/thoughtcrime/securesms/contacts/NewContactActivity.java b/src/org/thoughtcrime/securesms/contacts/NewContactActivity.java
index f895b8efb..361425136 100644
--- a/src/org/thoughtcrime/securesms/contacts/NewContactActivity.java
+++ b/src/org/thoughtcrime/securesms/contacts/NewContactActivity.java
@@ -40,16 +40,13 @@ public class NewContactActivity extends PassphraseRequiredActionBarActivity
ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
- actionBar.setTitle(R.string.menu_new_contact);
+ actionBar.setTitle(R.string.menu_new_classic_contact);
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setHomeAsUpIndicator(R.drawable.ic_close_white_24dp);
}
nameInput = ViewUtil.findById(this, R.id.name_text);
addrInput = ViewUtil.findById(this, R.id.email_text);
- Button qrscanBtn = ViewUtil.findById(this, R.id.qrscan_btn);
-
- qrscanBtn.setOnClickListener((view) -> new IntentIntegrator(this).setCaptureActivity(QrActivity.class).initiateScan());
addrInput.setText(getIntent().getStringExtra(ADDR_EXTRA));
addrInput.setOnFocusChangeListener((view, focused) -> {
String addr = addrInput.getText() == null? "" : addrInput.getText().toString();
diff --git a/src/org/thoughtcrime/securesms/qr/QrActivity.java b/src/org/thoughtcrime/securesms/qr/QrActivity.java
index 28d9a2315..1cedd9578 100644
--- a/src/org/thoughtcrime/securesms/qr/QrActivity.java
+++ b/src/org/thoughtcrime/securesms/qr/QrActivity.java
@@ -15,6 +15,7 @@ import android.view.MenuItem;
import android.widget.Toast;
import androidx.annotation.NonNull;
+import androidx.core.view.MenuCompat;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentStatePagerAdapter;
@@ -30,6 +31,7 @@ import com.google.zxing.common.HybridBinarizer;
import org.thoughtcrime.securesms.BaseActionBarActivity;
import org.thoughtcrime.securesms.R;
+import org.thoughtcrime.securesms.contacts.NewContactActivity;
import org.thoughtcrime.securesms.mms.AttachmentManager;
import org.thoughtcrime.securesms.permissions.Permissions;
import org.thoughtcrime.securesms.util.DynamicNoActionBarTheme;
@@ -68,7 +70,7 @@ public class QrActivity extends BaseActionBarActivity {
setSupportActionBar(ViewUtil.findById(this, R.id.toolbar));
assert getSupportActionBar() != null;
- getSupportActionBar().setTitle(R.string.qr_code);
+ getSupportActionBar().setTitle(R.string.menu_new_contact);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
int lastSelectedTab = PreferenceManager.getDefaultSharedPreferences(this).getInt("qrTab", TAB_SHOW);
@@ -110,11 +112,7 @@ public class QrActivity extends BaseActionBarActivity {
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
menu.clear();
- if(tabLayout.getSelectedTabPosition() == TAB_SHOW) {
- getMenuInflater().inflate(R.menu.qr_show, menu);
- } else {
- getMenuInflater().inflate(R.menu.qr_scan, menu);
- }
+ getMenuInflater().inflate(R.menu.qr_show, menu);
return super.onPrepareOptionsMenu(menu);
}
@@ -133,6 +131,9 @@ public class QrActivity extends BaseActionBarActivity {
case android.R.id.home:
finish();
return true;
+ case R.id.new_classic_contact:
+ this.startActivity(new Intent(this, NewContactActivity.class));
+ break;
case R.id.share:
qrShowFragment.shareInviteURL();
break;