Add third speed dial action, share button.

This commit is contained in:
akwizgran
2018-09-25 12:48:42 +01:00
committed by Torsten Grote
parent ac87f23187
commit f202ddd9a3
9 changed files with 117 additions and 104 deletions

View File

@@ -416,11 +416,13 @@
<!-- Prototype --> <!-- Prototype -->
<activity <activity
android:name=".android.contact.ContactLinkOutputActivity" android:name=".android.contact.ContactLinkOutputActivity"
android:theme="@style/BriarTheme"/> android:theme="@style/BriarTheme"
android:label="@string/send_link_title"/>
<activity <activity
android:name=".android.contact.ContactLinkInputActivity" android:name=".android.contact.ContactLinkInputActivity"
android:theme="@style/BriarTheme" android:theme="@style/BriarTheme"
android:label="@string/open_link_title"
android:windowSoftInputMode="stateHidden|adjustResize"> android:windowSoftInputMode="stateHidden|adjustResize">
<intent-filter> <intent-filter>
<data android:scheme="briar"/> <data android:scheme="briar"/>

View File

@@ -5,7 +5,6 @@ import android.os.Bundle;
import android.support.v7.app.ActionBar; import android.support.v7.app.ActionBar;
import android.text.Editable; import android.text.Editable;
import android.text.TextWatcher; import android.text.TextWatcher;
import android.util.Log;
import android.view.MenuItem; import android.view.MenuItem;
import android.widget.Button; import android.widget.Button;
import android.widget.EditText; import android.widget.EditText;
@@ -44,7 +43,6 @@ public class ContactLinkInputActivity extends BriarActivity
if (ab != null) { if (ab != null) {
ab.setDisplayHomeAsUpEnabled(true); ab.setDisplayHomeAsUpEnabled(true);
} }
setTitle("Enter contact link");
clipboard = (ClipboardManager) requireNonNull( clipboard = (ClipboardManager) requireNonNull(
getSystemService(CLIPBOARD_SERVICE)); getSystemService(CLIPBOARD_SERVICE));
@@ -53,20 +51,16 @@ public class ContactLinkInputActivity extends BriarActivity
linkInput.addTextChangedListener(this); linkInput.addTextChangedListener(this);
pasteButton = findViewById(R.id.pasteButton); pasteButton = findViewById(R.id.pasteButton);
pasteButton.setOnClickListener(v -> { pasteButton.setOnClickListener(v -> linkInput
linkInput .setText(clipboard.getPrimaryClip().getItemAt(0).getText()));
.setText(clipboard.getPrimaryClip().getItemAt(0).getText());
});
contactNameInput = findViewById(R.id.contactNameInput); contactNameInput = findViewById(R.id.contactNameInput);
contactNameInput.addTextChangedListener(this); contactNameInput.addTextChangedListener(this);
addButton = findViewById(R.id.addButton); addButton = findViewById(R.id.addButton);
addButton.setOnClickListener(v -> { addButton.setOnClickListener(v -> Toast.makeText(this,
Toast.makeText(this, "Contact " + contactNameInput.getText() + " requested",
"Contact " + contactNameInput.getText() + " requested", LENGTH_SHORT).show());
LENGTH_SHORT).show();
});
} }
@Override @Override
@@ -110,14 +104,7 @@ public class ContactLinkInputActivity extends BriarActivity
} }
private boolean isBriarLink(CharSequence s) { private boolean isBriarLink(CharSequence s) {
Log.e("TEST", s.toString()); return s.length() == 72 && s.toString().startsWith("briar://");
// briar://pfmrkyclibynikzg
Log.e("TEST", "'" + s.subSequence(0, 8).toString() + "'");
Log.e("TEST", "LENGTH?" + (s.length() == 24));
Log.e("TEST", "SUB?" + (s.toString().startsWith("briar://")));
Log.e("TEST", "IS BRIAR LINK?" +
(s.length() == 24 && s.toString().startsWith("briar://")));
return s.length() == 24 && s.toString().startsWith("briar://");
} }
private void updateAddButtonState() { private void updateAddButtonState() {

View File

@@ -16,6 +16,8 @@ import org.briarproject.briar.android.activity.BriarActivity;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import static android.content.Intent.ACTION_SEND;
import static android.content.Intent.EXTRA_TEXT;
import static android.widget.Toast.LENGTH_SHORT; import static android.widget.Toast.LENGTH_SHORT;
import static org.briarproject.bramble.util.StringUtils.getRandomString; import static org.briarproject.bramble.util.StringUtils.getRandomString;
@@ -30,15 +32,14 @@ public class ContactLinkOutputActivity extends BriarActivity {
public void onCreate(@Nullable Bundle state) { public void onCreate(@Nullable Bundle state) {
super.onCreate(state); super.onCreate(state);
setContentView(R.layout.activity_contact_link_ouput); setContentView(R.layout.activity_contact_link_output);
ActionBar ab = getSupportActionBar(); ActionBar ab = getSupportActionBar();
if (ab != null) { if (ab != null) {
ab.setDisplayHomeAsUpEnabled(true); ab.setDisplayHomeAsUpEnabled(true);
} }
setTitle(R.string.add_contact_via_link_title);
String link = "briar://" + getRandomString(16); String link = "briar://" + getRandomString(64);
TextView linkView = findViewById(R.id.linkView); TextView linkView = findViewById(R.id.linkView);
linkView.setText(link); linkView.setText(link);
@@ -46,17 +47,23 @@ public class ContactLinkOutputActivity extends BriarActivity {
ClipboardManager clipboard = (ClipboardManager) ClipboardManager clipboard = (ClipboardManager)
getSystemService(CLIPBOARD_SERVICE); getSystemService(CLIPBOARD_SERVICE);
if (clipboard == null) throw new AssertionError(); if (clipboard == null) throw new AssertionError();
ClipData clip = ClipData.newPlainText("Briar link", link); ClipData clip = ClipData.newPlainText(
getString(R.string.link_clip_label), link);
Button button = findViewById(R.id.button); Button copyButton = findViewById(R.id.copyButton);
button.setOnClickListener(v -> { copyButton.setOnClickListener(v -> {
clipboard.setPrimaryClip(clip); clipboard.setPrimaryClip(clip);
Toast.makeText(this, "Link copied!", LENGTH_SHORT).show(); Toast.makeText(this, R.string.link_copied_toast, LENGTH_SHORT)
.show();
}); });
Button enterLinkButton = findViewById(R.id.enterLinkButton); Button shareButton = findViewById(R.id.shareButton);
enterLinkButton.setOnClickListener(v -> startActivity( shareButton.setOnClickListener(v -> {
new Intent(this, ContactLinkInputActivity.class))); Intent i = new Intent(ACTION_SEND);
i.putExtra(EXTRA_TEXT, link);
i.setType("text/plain");
startActivity(i);
});
} }
@Override @Override

View File

@@ -194,11 +194,15 @@ public class ContactListFragment extends BaseFragment implements EventListener,
Intent intent = Intent intent =
new Intent(getContext(), ContactExchangeActivity.class); new Intent(getContext(), ContactExchangeActivity.class);
startActivity(intent); startActivity(intent);
return true; return false;
case R.id.action_add_contact_via_link: case R.id.action_open_link:
startActivity(new Intent(getContext(),
ContactLinkInputActivity.class));
return false;
case R.id.action_send_link:
startActivity(new Intent(getContext(), startActivity(new Intent(getContext(),
ContactLinkOutputActivity.class)); ContactLinkOutputActivity.class));
return true; return false;
default: default:
return false; return false;
} }

View File

@@ -7,61 +7,57 @@
android:layout_height="match_parent"> android:layout_height="match_parent">
<EditText <EditText
android:id="@+id/linkInput" android:id="@+id/contactNameInput"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_margin="16dp" android:layout_margin="@dimen/margin_large"
android:hint="Enter Briar link" android:hint="@string/contact_name_hint"
android:inputType="textUri" android:importantForAutofill="no"
app:layout_constraintEnd_toStartOf="@+id/pasteButton" android:inputType="text|textCapWords"
app:layout_constraintHorizontal_bias="0.5" app:layout_constraintBottom_toTopOf="@id/linkInput"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_chainStyle="packed"/> app:layout_constraintVertical_chainStyle="packed"/>
<EditText
android:id="@+id/linkInput"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/margin_large"
android:layout_marginStart="@dimen/margin_large"
android:hint="@string/contact_link_hint"
android:importantForAutofill="no"
android:inputType="textUri"
app:layout_constraintBottom_toTopOf="@id/addButton"
app:layout_constraintEnd_toStartOf="@id/pasteButton"
app:layout_constraintHorizontal_bias="0.8"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/contactNameInput"/>
<Button <Button
android:id="@+id/pasteButton" android:id="@+id/pasteButton"
style="@style/BriarButtonFlat.Positive" style="@style/BriarButtonFlat.Positive"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_margin="16dp" android:layout_margin="@dimen/margin_large"
android:layout_marginEnd="8dp" android:text="@string/paste_button"
android:layout_marginRight="8dp" app:layout_constraintBottom_toBottomOf="@id/linkInput"
android:text="Paste"
app:layout_constraintBottom_toBottomOf="@+id/linkInput"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5" app:layout_constraintStart_toEndOf="@id/linkInput"
app:layout_constraintStart_toEndOf="@+id/linkInput" app:layout_constraintTop_toTopOf="@id/linkInput"/>
app:layout_constraintTop_toTopOf="@+id/linkInput"/>
<EditText
android:id="@+id/contactNameInput"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginLeft="16dp"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:hint="Contact Name"
android:inputType="textUri"
app:layout_constraintEnd_toStartOf="@+id/addButton"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/linkInput"
app:layout_constraintVertical_chainStyle="packed"/>
<Button <Button
android:id="@+id/addButton" android:id="@+id/addButton"
style="@style/BriarButton" style="@style/BriarButton"
android:layout_width="wrap_content" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_margin="16dp" android:layout_margin="@dimen/margin_large"
android:enabled="false" android:enabled="false"
android:text="Add Contact" android:text="@string/add_contact_button"
app:layout_constraintBottom_toBottomOf="@+id/contactNameInput"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/contactNameInput" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/contactNameInput" app:layout_constraintTop_toBottomOf="@id/linkInput"
tools:enabled="true"/> tools:enabled="true"/>
</android.support.constraint.ConstraintLayout> </android.support.constraint.ConstraintLayout>

View File

@@ -10,11 +10,11 @@
android:id="@+id/linkIntro" android:id="@+id/linkIntro"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_margin="16dp" android:layout_margin="@dimen/margin_large"
android:text="Copy this link and send it to the contact you want to add:" android:text="@string/send_link_instructions"
android:textIsSelectable="true" android:textIsSelectable="true"
android:textSize="18sp" android:textSize="18sp"
app:layout_constraintBottom_toTopOf="@+id/linkView" app:layout_constraintBottom_toTopOf="@id/linkView"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
@@ -24,44 +24,39 @@
android:id="@+id/linkView" android:id="@+id/linkView"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_margin="16dp" android:layout_margin="@dimen/margin_large"
android:textIsSelectable="true" android:textIsSelectable="true"
android:textSize="18sp" android:textSize="18sp"
android:typeface="monospace" android:typeface="monospace"
app:layout_constraintBottom_toTopOf="@+id/button" app:layout_constraintBottom_toTopOf="@id/copyButton"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/linkIntro" app:layout_constraintTop_toBottomOf="@id/linkIntro"
tools:text="briar://scnsdflamslmksdflksdf"/> tools:text="briar://scnsdflamslkfjgluoblmksdfbwevlewajfdlkjewwhqliafskfjhskdjhvoieiv"/>
<Button <Button
android:id="@+id/button" android:id="@+id/copyButton"
style="@style/BriarButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:text="Copy link"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/enterLinkButton"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintHorizontal_chainStyle="spread"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/linkView"/>
<Button
android:id="@+id/enterLinkButton"
style="@style/BriarButtonFlat.Positive" style="@style/BriarButtonFlat.Positive"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginEnd="8dp" android:layout_margin="@dimen/margin_large"
android:layout_marginLeft="8dp" android:text="@string/copy_button"
android:layout_marginRight="8dp" app:layout_constraintEnd_toStartOf="@id/shareButton"
android:layout_marginStart="8dp" app:layout_constraintHorizontal_bias="0.5"
android:text="Enter Link" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toBottomOf="@+id/button" app:layout_constraintTop_toBottomOf="@id/linkView"/>
<Button
android:id="@+id/shareButton"
style="@style/BriarButtonFlat.Positive"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="@dimen/margin_large"
android:text="@string/share_button"
app:layout_constraintBottom_toBottomOf="@id/copyButton"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5" app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toEndOf="@+id/button" app:layout_constraintStart_toEndOf="@id/copyButton"
app:layout_constraintTop_toTopOf="@+id/button"/> app:layout_constraintTop_toTopOf="@id/copyButton"/>
</android.support.constraint.ConstraintLayout> </android.support.constraint.ConstraintLayout>

View File

@@ -11,11 +11,17 @@
android:layout_height="match_parent" android:layout_height="match_parent"
app:scrollToEnd="false"/> app:scrollToEnd="false"/>
<com.leinardi.android.speeddial.SpeedDialOverlayLayout
android:id="@+id/overlay"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<com.leinardi.android.speeddial.SpeedDialView <com.leinardi.android.speeddial.SpeedDialView
android:id="@+id/speedDial" android:id="@+id/speedDial"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="bottom|end" android:layout_gravity="bottom|end"
app:sdMainFabClosedSrc="@drawable/ic_add_white"/> app:sdMainFabClosedSrc="@drawable/ic_add_white"
app:sdOverlayLayout="@id/overlay"/>
</android.support.design.widget.CoordinatorLayout> </android.support.design.widget.CoordinatorLayout>

View File

@@ -10,9 +10,15 @@
app:showAsAction="ifRoom"/> app:showAsAction="ifRoom"/>
<item <item
android:id="@+id/action_add_contact_via_link" android:id="@+id/action_open_link"
android:icon="@drawable/ic_link" android:icon="@drawable/ic_link"
android:title="@string/add_contact_via_link_title" android:title="@string/open_link_title"
app:showAsAction="never"/>
<item
android:id="@+id/action_send_link"
android:icon="@drawable/ic_link"
android:title="@string/send_link_title"
app:showAsAction="never"/> app:showAsAction="never"/>
</menu> </menu>

View File

@@ -151,8 +151,18 @@
<string name="connection_error_explanation">Please check that you\'re both connected to the same Wi-Fi network.</string> <string name="connection_error_explanation">Please check that you\'re both connected to the same Wi-Fi network.</string>
<string name="connection_error_feedback">If this problem persists, please <a href="feedback">send feedback</a> to help us improve the app.</string> <string name="connection_error_feedback">If this problem persists, please <a href="feedback">send feedback</a> to help us improve the app.</string>
<string name="add_contact_nearby_title">Add contact nearby</string> <string name="add_contact_nearby_title">Add Contact Nearby</string>
<string name="add_contact_via_link_title">Add contact via link</string> <string name="open_link_title">Open Link</string>
<string name="send_link_title">Send My Link</string>
<string name="contact_name_hint">Contact name</string>
<string name="contact_link_hint">Contact link</string>
<string name="paste_button">Paste</string>
<string name="add_contact_button">Add Contact</string>
<string name="share_button">Share</string>
<string name="copy_button">Copy</string>
<string name="send_link_instructions">Send this link to your contact:</string>
<string name="link_clip_label">Briar link</string>
<string name="link_copied_toast">Link copied</string>
<!-- Introductions --> <!-- Introductions -->
<string name="introduction_onboarding_title">Introduce your contacts</string> <string name="introduction_onboarding_title">Introduce your contacts</string>