Compare commits

..

7 Commits

Author SHA1 Message Date
akwizgran
3fb27dbb12 Bump version numbers for 1.2.14 release. 2021-01-29 14:10:24 +00:00
akwizgran
831c65b647 Merge branch 'vector-compat' into 'master'
Use vector support libraries instead of rasterizing all drawables

See merge request briar/briar!1346
2021-01-28 17:59:08 +00:00
akwizgran
afcd38b84c Update translations. 2021-01-28 16:15:44 +00:00
Torsten Grote
6005d156eb Rename ic_lock icon to notification_lock 2021-01-26 08:24:16 -03:00
Torsten Grote
94dd75f24b Use VectorDrawableCompat compatible ways of setting drawables programmatically
so they won't crash on API < 21
2021-01-25 13:34:27 -03:00
Torsten Grote
c93e5441b0 Store rasterized notification icons, because NotificationCompat doesn't handle it
and would crash on API < 21
2021-01-25 13:34:27 -03:00
Torsten Grote
8ec8cc927b Use vector support libraries instead of rasterizing all drawables
https://developer.android.com/guide/topics/graphics/vector-drawable-resources#vector-drawables-backward-solution
2021-01-25 13:34:26 -03:00
125 changed files with 247 additions and 928 deletions

View File

@@ -11,8 +11,8 @@ android {
defaultConfig {
minSdkVersion 16
targetSdkVersion 29
versionCode 10213
versionName "1.2.13"
versionCode 10214
versionName "1.2.14"
consumerProguardFiles 'proguard-rules.txt'
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"

View File

@@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="24" height="24" viewBox="0 0 24 24"><path d="M16,17V14H9V10H16V7L21,12L16,17M14,2A2,2 0 0,1 16,4V6H14V4H5V20H14V18H16V20A2,2 0 0,1 14,22H5A2,2 0 0,1 3,20V4A2,2 0 0,1 5,2H14Z" /></svg>

After

Width:  |  Height:  |  Size: 423 B

View File

@@ -22,9 +22,11 @@ android {
defaultConfig {
minSdkVersion 16
targetSdkVersion 29
versionCode 10213
versionName "1.2.13"
versionCode 10214
versionName "1.2.14"
applicationId "org.briarproject.briar.android"
vectorDrawables.useSupportLibrary = true
buildConfigField "String", "GitHash",
"\"${getStdout(['git', 'rev-parse', '--short=7', 'HEAD'], 'No commit hash')}\""
def now = (long) (System.currentTimeMillis() / 1000)

View File

@@ -448,12 +448,6 @@
android:label="@string/pending_contact_requests"
android:theme="@style/BriarTheme" />
<activity
android:name=".android.bluetoothsetup.BluetoothSetupActivity"
android:label="Bluetooth Setup"
android:theme="@style/BriarTheme"
android:windowSoftInputMode="adjustResize|stateHidden" />
</application>
<queries>

View File

@@ -255,7 +255,7 @@ class AndroidNotificationManagerImpl implements AndroidNotificationManager,
R.string.ongoing_notification_title;
int text = locked ? R.string.lock_tap_to_unlock :
R.string.ongoing_notification_text;
int icon = locked ? R.drawable.startup_lock :
int icon = locked ? R.drawable.notification_lock :
R.drawable.notification_ongoing;
// Ongoing foreground notification that shows BriarService is running
NotificationCompat.Builder b =
@@ -624,7 +624,7 @@ class AndroidNotificationManagerImpl implements AndroidNotificationManager,
NotificationCompat.Builder b =
new NotificationCompat.Builder(appContext, REMINDER_CHANNEL_ID);
b.setSmallIcon(R.drawable.ic_signout);
b.setSmallIcon(R.drawable.notification_signout);
b.setColor(getColor(appContext, R.color.briar_primary));
b.setContentTitle(
appContext.getText(R.string.reminder_notification_title));

View File

@@ -30,15 +30,14 @@ import org.briarproject.bramble.util.StringUtils;
import org.briarproject.briar.android.account.DozeHelperModule;
import org.briarproject.briar.android.account.LockManagerImpl;
import org.briarproject.briar.android.account.SetupModule;
import org.briarproject.briar.android.bluetoothsetup.BluetoothSetupModule;
import org.briarproject.briar.android.contact.ContactListModule;
import org.briarproject.briar.android.forum.ForumModule;
import org.briarproject.briar.android.keyagreement.ContactExchangeModule;
import org.briarproject.briar.android.login.LoginModule;
import org.briarproject.briar.android.navdrawer.NavDrawerModule;
import org.briarproject.briar.android.settings.SettingsModule;
import org.briarproject.briar.android.privategroup.list.GroupListModule;
import org.briarproject.briar.android.reporting.DevReportModule;
import org.briarproject.briar.android.settings.SettingsModule;
import org.briarproject.briar.android.test.TestAvatarCreatorImpl;
import org.briarproject.briar.android.viewmodel.ViewModelModule;
import org.briarproject.briar.api.android.AndroidNotificationManager;
@@ -79,7 +78,6 @@ import static org.briarproject.briar.android.TestingConstants.IS_DEBUG_BUILD;
SettingsModule.class,
DevReportModule.class,
ContactListModule.class,
BluetoothSetupModule.class,
// below need to be within same scope as ViewModelProvider.Factory
ForumModule.BindsModule.class,
GroupListModule.class,

View File

@@ -20,10 +20,6 @@ import org.briarproject.briar.android.blog.ReblogFragment;
import org.briarproject.briar.android.blog.RssFeedImportActivity;
import org.briarproject.briar.android.blog.RssFeedManageActivity;
import org.briarproject.briar.android.blog.WriteBlogPostActivity;
import org.briarproject.briar.android.bluetoothsetup.BluetoothSetupActivity;
import org.briarproject.briar.android.bluetoothsetup.BluetoothSetupChooseFragment;
import org.briarproject.briar.android.bluetoothsetup.BluetoothSetupPendingFragment;
import org.briarproject.briar.android.bluetoothsetup.BluetoothSetupStartFragment;
import org.briarproject.briar.android.contact.ContactListFragment;
import org.briarproject.briar.android.contact.add.remote.AddContactActivity;
import org.briarproject.briar.android.contact.add.remote.LinkExchangeFragment;
@@ -190,8 +186,6 @@ public interface ActivityComponent {
void inject(CrashReportActivity crashReportActivity);
void inject(BluetoothSetupActivity activity);
// Fragments
void inject(AuthorNameFragment fragment);
@@ -248,10 +242,4 @@ public interface ActivityComponent {
void inject(ConfirmAvatarDialogFragment fragment);
void inject(BluetoothSetupStartFragment fragment);
void inject(BluetoothSetupChooseFragment fragment);
void inject(BluetoothSetupPendingFragment fragment);
}

View File

@@ -1,60 +0,0 @@
package org.briarproject.briar.android.bluetoothsetup;
import android.os.Bundle;
import android.view.MenuItem;
import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
import org.briarproject.briar.R;
import org.briarproject.briar.android.activity.ActivityComponent;
import org.briarproject.briar.android.activity.BriarActivity;
import org.briarproject.briar.android.fragment.BaseFragment.BaseFragmentListener;
import javax.annotation.Nullable;
import javax.inject.Inject;
import androidx.appcompat.app.ActionBar;
import androidx.lifecycle.ViewModelProvider;
@MethodsNotNullByDefault
@ParametersNotNullByDefault
public class BluetoothSetupActivity extends BriarActivity implements
BaseFragmentListener {
@Inject
ViewModelProvider.Factory viewModelFactory;
private BluetoothSetupViewModel viewModel;
@Override
public void injectActivity(ActivityComponent component) {
component.inject(this);
}
@Override
public void onCreate(@Nullable Bundle state) {
super.onCreate(state);
setContentView(R.layout.activity_fragment_container);
ActionBar ab = getSupportActionBar();
if (ab != null) {
ab.setDisplayHomeAsUpEnabled(true);
}
viewModel = new ViewModelProvider(this, viewModelFactory)
.get(BluetoothSetupViewModel.class);
if (state == null) {
showInitialFragment(new BluetoothSetupStartFragment());
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
onBackPressed();
return true;
}
return super.onOptionsItemSelected(item);
}
}

View File

@@ -1,72 +0,0 @@
package org.briarproject.briar.android.bluetoothsetup;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
import org.briarproject.briar.R;
import org.briarproject.briar.android.activity.ActivityComponent;
import org.briarproject.briar.android.fragment.BaseFragment;
import javax.annotation.Nullable;
import javax.inject.Inject;
import androidx.lifecycle.ViewModelProvider;
@MethodsNotNullByDefault
@ParametersNotNullByDefault
public class BluetoothSetupChooseFragment extends BaseFragment {
private static final String TAG =
BluetoothSetupChooseFragment.class.getName();
@Inject
ViewModelProvider.Factory viewModelFactory;
private BluetoothSetupViewModel viewModel;
@Override
public String getUniqueTag() {
return TAG;
}
@Override
public void injectFragment(ActivityComponent component) {
component.inject(this);
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater,
@Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
if (getActivity() == null || getContext() == null) return null;
viewModel = new ViewModelProvider(requireActivity())
.get(BluetoothSetupViewModel.class);
View v =
inflater.inflate(R.layout.fragment_bluetooth_setup_choose,
container, false);
// TODO to enable when user picks a device from list
Button continueButton = v.findViewById(R.id.continueButton);
continueButton.setOnClickListener(view -> {
showNextFragment(new BluetoothSetupPendingFragment());
});
continueButton.setEnabled(true);
// RecyclerView devices = v.findViewById(R.id.devices);
// devices.setHasFixedSize(true);
// final LinearLayoutManager layoutManager =
// new LinearLayoutManager(getActivity(),
// LinearLayoutManager.VERTICAL, false);
// devices.setLayoutManager(layoutManager);
return v;
}
}

View File

@@ -1,18 +0,0 @@
package org.briarproject.briar.android.bluetoothsetup;
import org.briarproject.briar.android.viewmodel.ViewModelKey;
import androidx.lifecycle.ViewModel;
import dagger.Binds;
import dagger.Module;
import dagger.multibindings.IntoMap;
@Module
public abstract class BluetoothSetupModule {
@Binds
@IntoMap
@ViewModelKey(BluetoothSetupViewModel.class)
abstract ViewModel bindBluetoothSetupViewModel(
BluetoothSetupViewModel bluetoothSetupViewModel);
}

View File

@@ -1,59 +0,0 @@
package org.briarproject.briar.android.bluetoothsetup;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
import org.briarproject.briar.R;
import org.briarproject.briar.android.activity.ActivityComponent;
import org.briarproject.briar.android.fragment.BaseFragment;
import javax.annotation.Nullable;
import javax.inject.Inject;
import androidx.lifecycle.ViewModelProvider;
@MethodsNotNullByDefault
@ParametersNotNullByDefault
public class BluetoothSetupPendingFragment extends BaseFragment {
private static final String TAG =
BluetoothSetupPendingFragment.class.getName();
@Inject
ViewModelProvider.Factory viewModelFactory;
private BluetoothSetupViewModel viewModel;
@Override
public String getUniqueTag() {
return TAG;
}
@Override
public void injectFragment(ActivityComponent component) {
component.inject(this);
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater,
@Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
if (getActivity() == null || getContext() == null) return null;
viewModel = new ViewModelProvider(requireActivity())
.get(BluetoothSetupViewModel.class);
View v = inflater.inflate(R.layout.fragment_bluetooth_setup_pending,
container, false);
return v;
}
private void onContinueButtonClicked() {
}
}

View File

@@ -1,65 +0,0 @@
package org.briarproject.briar.android.bluetoothsetup;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
import org.briarproject.briar.R;
import org.briarproject.briar.android.activity.ActivityComponent;
import org.briarproject.briar.android.fragment.BaseFragment;
import javax.annotation.Nullable;
import javax.inject.Inject;
import androidx.lifecycle.ViewModelProvider;
@MethodsNotNullByDefault
@ParametersNotNullByDefault
public class BluetoothSetupStartFragment extends BaseFragment {
private static final String TAG =
BluetoothSetupStartFragment.class.getName();
@Inject
ViewModelProvider.Factory viewModelFactory;
private BluetoothSetupViewModel viewModel;
@Override
public String getUniqueTag() {
return TAG;
}
@Override
public void injectFragment(ActivityComponent component) {
component.inject(this);
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater,
@Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
if (getActivity() == null || getContext() == null) return null;
viewModel = new ViewModelProvider(requireActivity())
.get(BluetoothSetupViewModel.class);
View v = inflater.inflate(R.layout.fragment_bluetooth_setup_start,
container, false);
// TODO device-BT and BT-plugin needs to be enabled at this point
Button startButton = v.findViewById(R.id.startButton);
startButton.setOnClickListener(view -> {
showNextFragment(new BluetoothSetupChooseFragment());
});
startButton.setEnabled(true);
return v;
}
}

View File

@@ -1,33 +0,0 @@
package org.briarproject.briar.android.bluetoothsetup;
import android.app.Application;
import org.briarproject.bramble.api.db.DatabaseExecutor;
import org.briarproject.bramble.api.db.TransactionManager;
import org.briarproject.bramble.api.lifecycle.LifecycleManager;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.bramble.api.system.AndroidExecutor;
import org.briarproject.briar.android.viewmodel.DbViewModel;
import java.util.concurrent.Executor;
import java.util.logging.Logger;
import javax.inject.Inject;
import static java.util.logging.Logger.getLogger;
@NotNullByDefault
public class BluetoothSetupViewModel extends DbViewModel {
private final static Logger LOG =
getLogger(BluetoothSetupViewModel.class.getName());
@Inject
BluetoothSetupViewModel(Application application,
@DatabaseExecutor Executor dbExecutor,
LifecycleManager lifecycleManager,
TransactionManager db,
AndroidExecutor androidExecutor) {
super(application, dbExecutor, lifecycleManager, db, androidExecutor);
}
}

View File

@@ -15,7 +15,6 @@ import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
import org.briarproject.briar.R;
import org.briarproject.briar.android.activity.ActivityComponent;
import org.briarproject.briar.android.bluetoothsetup.BluetoothSetupActivity;
import org.briarproject.briar.android.contact.BaseContactListAdapter.OnContactClickListener;
import org.briarproject.briar.android.contact.add.remote.AddContactActivity;
import org.briarproject.briar.android.contact.add.remote.PendingContactListActivity;
@@ -135,11 +134,6 @@ public class ContactListFragment extends BaseFragment
case R.id.action_add_contact_remotely:
startActivity(
new Intent(getContext(), AddContactActivity.class));
return;
case R.id.action_bluetooth_setup:
startActivity(
new Intent(getContext(),
BluetoothSetupActivity.class));
}
}

View File

@@ -3,6 +3,7 @@ package org.briarproject.briar.android.conversation;
import android.annotation.SuppressLint;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.os.Parcelable;
import android.transition.Slide;
@@ -105,6 +106,7 @@ import androidx.recyclerview.selection.SelectionTracker.SelectionObserver;
import androidx.recyclerview.selection.StorageStrategy;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.vectordrawable.graphics.drawable.VectorDrawableCompat;
import de.hdodenhof.circleimageview.CircleImageView;
import uk.co.samuelwall.materialtaptargetprompt.MaterialTapTargetPrompt;
@@ -479,12 +481,10 @@ public class ConversationActivity extends BriarActivity
@UiThread
private void displayContactOnlineStatus() {
if (connectionRegistry.isConnected(contactId)) {
toolbarStatus.setImageDrawable(ContextCompat.getDrawable(
ConversationActivity.this, R.drawable.contact_online));
toolbarStatus.setImageResource(R.drawable.contact_online);
toolbarStatus.setContentDescription(getString(R.string.online));
} else {
toolbarStatus.setImageDrawable(ContextCompat.getDrawable(
ConversationActivity.this, R.drawable.contact_offline));
toolbarStatus.setImageResource(R.drawable.contact_offline);
toolbarStatus.setContentDescription(getString(R.string.offline));
}
}
@@ -935,13 +935,16 @@ public class ConversationActivity extends BriarActivity
return;
}
int color =
ContextCompat.getColor(this, R.color.briar_primary);
Drawable drawable = VectorDrawableCompat
.create(getResources(), R.drawable.ic_more_vert_accent, null);
new MaterialTapTargetPrompt.Builder(ConversationActivity.this,
R.style.OnboardingDialogTheme).setTarget(target)
.setPrimaryText(R.string.introduction_onboarding_title)
.setSecondaryText(R.string.introduction_onboarding_text)
.setIcon(R.drawable.ic_more_vert_accent)
.setBackgroundColour(
ContextCompat.getColor(this, R.color.briar_primary))
.setIconDrawable(drawable)
.setBackgroundColour(color)
.show();
}

View File

@@ -1,17 +1,13 @@
package org.briarproject.briar.android.login;
import android.content.Context;
import android.graphics.drawable.Drawable;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.briar.R;
import androidx.appcompat.app.AlertDialog;
import static androidx.core.content.ContextCompat.getColor;
import static androidx.core.content.ContextCompat.getDrawable;
import static androidx.core.graphics.drawable.DrawableCompat.setTint;
import static java.util.Objects.requireNonNull;
import static org.briarproject.briar.android.util.UiUtils.getDialogIcon;
@NotNullByDefault
class LoginUtils {
@@ -19,9 +15,7 @@ class LoginUtils {
static AlertDialog createKeyStrengthenerErrorDialog(Context ctx) {
AlertDialog.Builder builder =
new AlertDialog.Builder(ctx, R.style.BriarDialogTheme);
Drawable icon = getDrawable(ctx, R.drawable.alerts_and_states_error);
setTint(requireNonNull(icon), getColor(ctx, R.color.color_primary));
builder.setIcon(icon);
builder.setIcon(getDialogIcon(ctx, R.drawable.alerts_and_states_error));
builder.setTitle(R.string.dialog_title_cannot_check_password);
builder.setMessage(R.string.dialog_message_cannot_check_password);
builder.setPositiveButton(R.string.ok, null);

View File

@@ -2,6 +2,7 @@ package org.briarproject.briar.android.navdrawer;
import android.content.Intent;
import android.content.res.Configuration;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Bundle;
import android.view.LayoutInflater;
@@ -59,6 +60,7 @@ import androidx.fragment.app.FragmentTransaction;
import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.ViewModelProvider;
import androidx.lifecycle.ViewModelProviders;
import androidx.vectordrawable.graphics.drawable.VectorDrawableCompat;
import uk.co.samuelwall.materialtaptargetprompt.MaterialTapTargetPrompt;
import static android.view.View.GONE;
@@ -433,8 +435,7 @@ public class NavDrawerActivity extends BriarActivity implements
Transport t = getItem(position);
ImageView icon = view.findViewById(R.id.imageView);
icon.setImageDrawable(ContextCompat.getDrawable(
NavDrawerActivity.this, t.iconDrawable));
icon.setImageResource(t.iconDrawable);
icon.setColorFilter(ContextCompat.getColor(
NavDrawerActivity.this, t.iconColor));
@@ -476,11 +477,13 @@ public class NavDrawerActivity extends BriarActivity implements
private void showTransportsOnboarding(boolean show, ImageView imageView) {
if (show) {
int color = resolveColorAttribute(this, R.attr.colorControlNormal);
Drawable drawable = VectorDrawableCompat
.create(getResources(), R.drawable.transport_tor, null);
new MaterialTapTargetPrompt.Builder(NavDrawerActivity.this,
R.style.OnboardingDialogTheme).setTarget(imageView)
.setPrimaryText(R.string.network_settings_title)
.setSecondaryText(R.string.transports_onboarding_text)
.setIcon(R.drawable.transport_tor)
.setIconDrawable(drawable)
.setIconDrawableColourFilter(color)
.setBackgroundColour(
ContextCompat.getColor(this, R.color.briar_primary))

View File

@@ -141,8 +141,7 @@ public class TransportsActivity extends BriarActivity {
Transport t = getItem(position);
ImageView icon = view.findViewById(R.id.icon);
icon.setImageDrawable(ContextCompat.getDrawable(
TransportsActivity.this, t.iconDrawable));
icon.setImageResource(t.iconDrawable);
icon.setColorFilter(ContextCompat.getColor(
TransportsActivity.this, t.iconColor));

View File

@@ -54,6 +54,7 @@ import androidx.fragment.app.FragmentManager;
import androidx.lifecycle.LifecycleOwner;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.Observer;
import androidx.vectordrawable.graphics.drawable.VectorDrawableCompat;
import static android.content.Context.KEYGUARD_SERVICE;
import static android.content.Context.POWER_SERVICE;
@@ -88,7 +89,6 @@ import static androidx.appcompat.app.AppCompatDelegate.MODE_NIGHT_NO;
import static androidx.appcompat.app.AppCompatDelegate.MODE_NIGHT_YES;
import static androidx.appcompat.app.AppCompatDelegate.setDefaultNightMode;
import static androidx.core.content.ContextCompat.getColor;
import static androidx.core.content.ContextCompat.getDrawable;
import static androidx.core.content.ContextCompat.getSystemService;
import static androidx.core.graphics.drawable.DrawableCompat.setTint;
import static androidx.core.view.ViewCompat.LAYOUT_DIRECTION_RTL;
@@ -436,7 +436,8 @@ public class UiUtils {
}
public static Drawable getDialogIcon(Context ctx, @DrawableRes int resId) {
Drawable icon = getDrawable(ctx, resId);
Drawable icon =
VectorDrawableCompat.create(ctx.getResources(), resId, null);
setTint(requireNonNull(icon), getColor(ctx, R.color.color_primary));
return icon;
}

View File

@@ -2,7 +2,6 @@ package org.briarproject.briar.android.view;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.drawable.Drawable;
import android.os.Handler;
import android.os.Looper;
import android.util.AttributeSet;
@@ -53,9 +52,8 @@ public class BriarRecyclerView extends FrameLayout {
R.styleable.BriarRecyclerView);
isScrollingToEnd = attributes
.getBoolean(R.styleable.BriarRecyclerView_scrollToEnd, true);
Drawable drawable = attributes
.getDrawable(R.styleable.BriarRecyclerView_emptyImage);
if (drawable != null) setEmptyImage(drawable);
int drawableRes = attributes.getResourceId(R.styleable.BriarRecyclerView_emptyImage, -1);
if (drawableRes != -1) setEmptyImage(drawableRes);
String emtpyText =
attributes.getString(R.styleable.BriarRecyclerView_emptyText);
if (emtpyText != null) setEmptyText(emtpyText);
@@ -139,11 +137,6 @@ public class BriarRecyclerView extends FrameLayout {
}
}
public void setEmptyImage(Drawable drawable) {
if (recyclerView == null) initViews();
emptyImage.setImageDrawable(drawable);
}
public void setEmptyImage(@DrawableRes int res) {
if (recyclerView == null) initViews();
emptyImage.setImageResource(res);

View File

@@ -4,6 +4,7 @@ import android.app.Activity;
import android.content.ClipData;
import android.content.Context;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Parcel;
import android.os.Parcelable;
@@ -28,6 +29,7 @@ import androidx.customview.view.AbsSavedState;
import androidx.lifecycle.LifecycleOwner;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.Observer;
import androidx.vectordrawable.graphics.drawable.VectorDrawableCompat;
import uk.co.samuelwall.materialtaptargetprompt.MaterialTapTargetPrompt;
import static android.os.Build.VERSION.SDK_INT;
@@ -253,12 +255,14 @@ public class TextAttachmentController extends TextSendController
public void showImageOnboarding(Activity activity) {
int color = resolveColorAttribute(activity, R.attr.colorControlNormal);
Drawable drawable = VectorDrawableCompat
.create(activity.getResources(), R.drawable.ic_image, null);
new MaterialTapTargetPrompt.Builder(activity,
R.style.OnboardingDialogTheme).setTarget(sendButton)
.setPrimaryText(R.string.dialog_title_image_support)
.setSecondaryText(R.string.dialog_message_image_support)
.setBackgroundColour(getColor(activity, R.color.briar_primary))
.setIcon(R.drawable.ic_image)
.setIconDrawable(drawable)
.setIconDrawableColourFilter(color)
.show();
}

View File

@@ -8,7 +8,6 @@ import org.briarproject.briar.R;
import androidx.annotation.UiThread;
import androidx.appcompat.widget.AppCompatImageView;
import androidx.core.content.ContextCompat;
@UiThread
public class TrustIndicatorView extends AppCompatImageView {
@@ -44,7 +43,7 @@ public class TrustIndicatorView extends AppCompatImageView {
default:
res = R.drawable.trust_indicator_unknown;
}
setImageDrawable(ContextCompat.getDrawable(getContext(), res));
setImageResource(res);
setVisibility(VISIBLE);
invalidate();

View File

@@ -1,10 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportHeight="24.0"
android:viewportWidth="24.0">
android:width="24dp"
android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="#FFFFFFFF"
android:pathData="M13,12h7v1.5h-7zM13,9.5h7L20,11h-7zM13,14.5h7L20,16h-7zM21,4L3,4c-1.1,0 -2,0.9 -2,2v13c0,1.1 0.9,2 2,2h18c1.1,0 2,-0.9 2,-2L23,6c0,-1.1 -0.9,-2 -2,-2zM21,19h-9L12,6h9v13z"/>
android:pathData="M13,12h7v1.5h-7zM13,9.5h7L20,11h-7zM13,14.5h7L20,16h-7zM21,4L3,4c-1.1,0 -2,0.9 -2,2v13c0,1.1 0.9,2 2,2h18c1.1,0 2,-0.9 2,-2L23,6c0,-1.1 -0.9,-2 -2,-2zM21,19h-9L12,6h9v13z" />
</vector>

View File

@@ -1,10 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportHeight="24.0"
android:viewportWidth="24.0">
android:width="24dp"
android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="#FFFFFFFF"
android:pathData="M20,0L4,0v2h16L20,0zM4,24h16v-2L4,22v2zM20,4L4,4c-1.1,0 -2,0.9 -2,2v12c0,1.1 0.9,2 2,2h16c1.1,0 2,-0.9 2,-2L22,6c0,-1.1 -0.9,-2 -2,-2zM12,6.75c1.24,0 2.25,1.01 2.25,2.25s-1.01,2.25 -2.25,2.25S9.75,10.24 9.75,9 10.76,6.75 12,6.75zM17,17L7,17v-1.5c0,-1.67 3.33,-2.5 5,-2.5s5,0.83 5,2.5L17,17z"/>
android:pathData="M20,0L4,0v2h16L20,0zM4,24h16v-2L4,22v2zM20,4L4,4c-1.1,0 -2,0.9 -2,2v12c0,1.1 0.9,2 2,2h16c1.1,0 2,-0.9 2,-2L22,6c0,-1.1 -0.9,-2 -2,-2zM12,6.75c1.24,0 2.25,1.01 2.25,2.25s-1.01,2.25 -2.25,2.25S9.75,10.24 9.75,9 10.76,6.75 12,6.75zM17,17L7,17v-1.5c0,-1.67 3.33,-2.5 5,-2.5s5,0.83 5,2.5L17,17z" />
</vector>

View File

@@ -0,0 +1,15 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="#FFFFFF">
<group android:scaleX="0.92"
android:scaleY="0.92"
android:translateX="0.96"
android:translateY="0.96">
<path
android:fillColor="@android:color/white"
android:pathData="M18,8h-1L17,6c0,-2.76 -2.24,-5 -5,-5S7,3.24 7,6v2L6,8c-1.1,0 -2,0.9 -2,2v10c0,1.1 0.9,2 2,2h12c1.1,0 2,-0.9 2,-2L20,10c0,-1.1 -0.9,-2 -2,-2zM12,17c-1.1,0 -2,-0.9 -2,-2s0.9,-2 2,-2 2,0.9 2,2 -0.9,2 -2,2zM15.1,8L8.9,8L8.9,6c0,-1.71 1.39,-3.1 3.1,-3.1 1.71,0 3.1,1.39 3.1,3.1v2z"/>
</group>
</vector>

View File

@@ -1,10 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportHeight="24.0"
android:viewportWidth="24.0">
android:width="24dp"
android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="#FFFFFFFF"
android:pathData="M16,11c1.66,0 2.99,-1.34 2.99,-3S17.66,5 16,5c-1.66,0 -3,1.34 -3,3s1.34,3 3,3zM8,11c1.66,0 2.99,-1.34 2.99,-3S9.66,5 8,5C6.34,5 5,6.34 5,8s1.34,3 3,3zM8,13c-2.33,0 -7,1.17 -7,3.5L1,19h14v-2.5c0,-2.33 -4.67,-3.5 -7,-3.5zM16,13c-0.29,0 -0.62,0.02 -0.97,0.05 1.16,0.84 1.97,1.97 1.97,3.45L17,19h6v-2.5c0,-2.33 -4.67,-3.5 -7,-3.5z"/>
android:pathData="M16,11c1.66,0 2.99,-1.34 2.99,-3S17.66,5 16,5c-1.66,0 -3,1.34 -3,3s1.34,3 3,3zM8,11c1.66,0 2.99,-1.34 2.99,-3S9.66,5 8,5C6.34,5 5,6.34 5,8s1.34,3 3,3zM8,13c-2.33,0 -7,1.17 -7,3.5L1,19h14v-2.5c0,-2.33 -4.67,-3.5 -7,-3.5zM16,13c-0.29,0 -0.62,0.02 -0.97,0.05 1.16,0.84 1.97,1.97 1.97,3.45L17,19h6v-2.5c0,-2.33 -4.67,-3.5 -7,-3.5z" />
</vector>

View File

@@ -1,10 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportHeight="24.0"
android:viewportWidth="24.0">
android:width="24dp"
android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="#FFFFFFFF"
android:pathData="M20,2L4,2c-1.1,0 -1.99,0.9 -1.99,2L2,22l4,-4h14c1.1,0 2,-0.9 2,-2L22,4c0,-1.1 -0.9,-2 -2,-2zM18,14L6,14v-2h12v2zM18,11L6,11L6,9h12v2zM18,8L6,8L6,6h12v2z"/>
android:pathData="M20,2L4,2c-1.1,0 -1.99,0.9 -1.99,2L2,22l4,-4h14c1.1,0 2,-0.9 2,-2L22,4c0,-1.1 -0.9,-2 -2,-2zM18,14L6,14v-2h12v2zM18,11L6,11L6,9h12v2zM18,8L6,8L6,6h12v2z" />
</vector>

View File

@@ -0,0 +1,15 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="#FFFFFF">
<group android:scaleX="0.92"
android:scaleY="0.92"
android:translateX="0.96"
android:translateY="0.96">
<path
android:fillColor="#FF000000"
android:pathData="M16,17V14H9V10H16V7L21,12L16,17M14,2A2,2 0,0 1,16 4V6H14V4H5V20H14V18H16V20A2,2 0,0 1,14 22H5A2,2 0,0 1,3 20V4A2,2 0,0 1,5 2H14Z"/>
</group>
</vector>

Binary file not shown.

After

Width:  |  Height:  |  Size: 229 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 316 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 245 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 341 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 498 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 359 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 235 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 266 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 200 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 228 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 205 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 263 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 387 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 279 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 202 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 205 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 273 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 362 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 291 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 442 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 663 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 489 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 250 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 298 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 348 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 521 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 367 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 618 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 977 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 652 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 334 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 402 B

View File

@@ -1,151 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="499.24373dp"
android:height="175.49413dp"
android:viewportWidth="499.24373"
android:viewportHeight="175.49413">
<path
android:fillColor="#000000"
android:pathData="M459.809,171.16 L455.482,166.826 L448.412,164.399
C444.524,163.064,439.689,161.403,437.668,160.708 L433.994,159.445
L437.518,159.272 C445.76,158.868,450.506,155.265,451.854,148.388
C452.65,144.327,452.983,131.09,452.684,115.347
C452.531,107.263,452.518,99.9306,452.656,99.0522
C452.794,98.1738,453.191,96.6321,453.539,95.6262
C454.761,92.0938,453.879,83.7179,451.681,77.9947
C451.333,77.0872,449.747,73.7797,448.157,70.6447
C443.999,62.4444,443.652,61.7028,443.264,60.1606
C442.805,58.3392,443.052,54.7253,443.726,53.3947
C444.392,52.0797,445.883,50.4785,446.972,49.9081
C448.271,49.2279,449.588,50.0301,451.658,52.7632
C455.08,57.2792,465.659,72.2041,467.39,74.9562
C471.136,80.9126,473.346,86.1212,475.362,93.7447
C476.017,96.2197,477.247,100.742,478.097,103.795
C478.946,106.847,480.811,113.953,482.241,119.585 L484.841,129.825
L489.491,135.018 C492.048,137.874,495.288,141.482,496.691,143.035
C498.093,144.588,499.241,146.01,499.241,146.196
C499.241,146.531,464.741,175.495,464.342,175.495
C464.227,175.495,462.186,173.545,459.807,171.161 Z M365.944,154.772
C364.687,154.144,363.739,153.393,363.03,152.465
C360.941,149.729,361.08,154.834,361.166,83.9825 L361.244,19.9437
L361.905,18.7088 C362.92,16.8111,363.897,15.7979,365.645,14.8299
L367.245,13.9437 L405.029,13.8641
C447.485,13.7747,444.431,13.6158,447.145,16.056
C448.02,16.8431,448.902,18.0155,449.329,18.9598
C450.042,20.5368,450.045,20.5982,450.135,33.1639 L450.225,45.7841
L448.427,45.654 C447.001,45.5509,446.346,45.661,445.261,46.1861
C443.248,47.1606,441.321,49.0848,440.146,51.2936 L439.109,53.2436
L439.102,40.4186 L439.095,27.5936 L405.495,27.5936 L371.895,27.5936
L371.895,78.8936 L371.895,130.194 L405.494,130.194 L439.093,130.194
L439.169,95.769 C439.242,62.8088,439.267,61.4078,439.76,62.844
C440.043,63.669,441.566,66.8415,443.143,69.894
C448.636,80.5202,448.548,79.7541,448.539,117.097
C448.532,144.718,448.415,147.048,446.877,150.206
C445.806,152.405,444.166,153.916,441.819,154.866 L440.145,155.543
L403.977,155.623 L367.809,155.703 L365.945,154.772 Z M408.344,149.734
C411.215,148.425,412.802,146.056,412.774,143.117
C412.735,139.001,409.665,135.894,405.638,135.894
C403.518,135.894,402.071,136.503,400.474,138.066
C398.229,140.264,397.72,143.505,399.173,146.353
C399.886,147.751,401.694,149.362,403.135,149.883
C404.632,150.425,406.975,150.358,408.344,149.734 Z" />
<path
android:fillColor="#000000"
android:pathData="M39.4343,171.16 L43.7609,166.826 L50.8305,164.399
C54.7188,163.064,59.5534,161.403,61.574,160.708 L65.248,159.445 L61.724,159.272
C53.4822,158.868,48.7362,155.265,47.3877,148.388
C46.5914,144.327,46.2588,131.09,46.5575,115.347
C46.7109,107.263,46.7237,99.9306,46.5859,99.0522
C46.4482,98.1738,46.0506,96.6321,45.7025,95.6262
C44.48,92.0938,45.3625,83.7179,47.5602,77.9947
C47.9087,77.0872,49.4945,73.7797,51.0844,70.6447
C55.2429,62.4444,55.589,61.7028,55.9773,60.1606
C56.4359,58.3392,56.1889,54.7253,55.5148,53.3947
C54.8486,52.0797,53.3578,50.4785,52.2686,49.9081
C50.9697,49.2279,49.6529,50.0301,47.5822,52.7632
C44.1607,57.2792,33.5808,72.2041,31.8503,74.9562
C28.1048,80.9126,25.8947,86.1212,23.8781,93.7447
C23.2234,96.2197,21.9929,100.742,21.1435,103.795
C20.2942,106.847,18.4295,113.953,16.9996,119.585 L14.4,129.824 L9.75,135.017
C7.1925,137.873,3.9525,141.481,2.55,143.034 C1.1475,144.587,0,146.009,0,146.195
C0,146.53,34.4996,175.494,34.8991,175.494
C35.0138,175.494,37.0547,173.544,39.4343,171.16 Z M133.299,154.772
C134.557,154.144,135.505,153.393,136.213,152.465
C138.302,149.729,138.163,154.834,138.077,83.9825 L137.999,19.9437
L137.338,18.7088 C136.323,16.8111,135.346,15.7979,133.598,14.8299
L131.998,13.9437 L94.2141,13.8641
C51.7582,13.7747,54.8117,13.6158,52.0976,16.056
C51.2222,16.8431,50.3404,18.0155,49.9137,18.9598
C49.2011,20.5368,49.1976,20.5982,49.1081,33.1639 L49.0182,45.7841
L50.8164,45.654 C52.2422,45.5509,52.8978,45.661,53.9824,46.1861
C55.9953,47.1606,57.9223,49.0848,59.0972,51.2936 L60.1344,53.2436
L60.1414,40.4186 L60.1484,27.5936 L93.7484,27.5936 L127.348,27.5936
L127.348,78.8936 L127.348,130.194 L93.7493,130.194 L60.1506,130.194
L60.0743,95.769 C60.0013,62.8088,59.9761,61.4078,59.4833,62.844
C59.2002,63.669,57.6777,66.8415,56.0999,69.894
C50.6074,80.5202,50.695,79.7541,50.7039,117.097
C50.7109,144.718,50.8275,147.048,52.3659,150.206
C53.4373,152.405,55.0773,153.916,57.4241,154.866 L59.0979,155.543
L95.2656,155.623 L131.433,155.703 L133.297,154.772 Z M90.8996,149.734
C88.0284,148.425,86.4419,146.056,86.4696,143.117
C86.5084,139.001,89.5784,135.894,93.606,135.894
C95.7256,135.894,97.1733,136.503,98.7696,138.066
C101.015,140.264,101.524,143.505,100.071,146.353
C99.3579,147.751,97.5496,149.362,96.1089,149.883
C94.6118,150.425,92.2689,150.358,90.9,149.734 Z" />
<path
android:fillColor="#0a3d91"
android:pathData="M247.254,75.9792 L251.99,75.9792
C265.155,75.9792,275.753,86.5777,275.753,99.7427 L275.753,131.917
C275.753,145.082,265.154,155.68,251.99,155.68 L247.254,155.68
C234.089,155.68,223.491,145.081,223.491,131.917 L223.491,99.7424
C223.491,86.5774,234.09,75.9789,247.254,75.9789 Z" />
<path
android:strokeColor="#ffffff"
android:strokeWidth="4.32805729"
android:pathData="M236.311,102.927 L261.218,127.997 L249.214,142.533 L249.214,90.5963
L261.218,104.479 L236.311,128.896" />
<path
android:fillColor="#0a3d91"
android:strokeWidth="7.55000019"
android:strokeLineJoin="round"
android:strokeLineCap="round"
android:pathData="M143.679,27.5571 C142.089,30.1809,143.861,33.1318,146.464,34.1998
C149.159,35.7722,152.635,39.187,155.612,36.432
C157.845,34.3925,156.213,30.7041,153.571,29.7617
C150.507,28.085,147.019,24.2469,143.68,27.5572 Z M351.705,27.1294
C348.937,29.09,344.636,29.8244,343.327,33.1721
C342.685,35.9031,345.263,38.1647,347.911,37.5986
C351.113,35.9607,354.968,34.7562,357.089,31.6509
C357.658,29.0465,355.596,26.3002,352.821,26.9052
C352.405,26.7975,352.061,26.9402,351.704,27.1294 Z M324.943,40.3012
C322.009,42.0092,317.623,42.224,316.012,45.4542
C315.104,48.1085,317.444,50.6134,320.136,50.3152
C323.492,49.0109,327.456,48.2025,329.873,45.3129
C330.687,42.7752,328.896,39.8433,326.077,40.184
C325.673,40.0383,325.317,40.1458,324.944,40.3011 Z M169.707,42.7641
C168.488,45.476,170.464,48.2246,173.151,48.9095
C176.009,49.9903,179.82,53.0273,182.463,50.1434
C184.778,48.1069,182.802,44.308,180.053,43.7252
C176.725,42.5494,172.668,39.0116,169.707,42.7641 Z M296.98,50.3813
C293.857,51.6905,289.488,51.352,287.488,54.3514
C286.256,56.8701,288.261,59.6497,290.968,59.6911
C294.455,58.7838,298.535,58.5783,301.271,55.952
C302.385,53.5298,300.959,50.4059,298.119,50.401
C297.736,50.2053,297.369,50.274,296.98,50.3813 Z M199.49,51.9262
C197.261,53.388,196.81,56.7921,199.214,58.3031
C201.801,59.7737,205.129,60.258,208.054,60.7984
C210.839,61.1306,212.8,58.3192,211.945,55.7497
C209.902,52.47,205.473,53.0161,202.228,51.6605
C201.315,51.749,200.402,51.8376,199.49,51.9261 Z M268.004,56.434
C264.728,57.2229,260.543,56.2461,258.068,58.816
C256.418,61.0841,257.911,64.1697,260.572,64.6779
C264.184,64.3855,268.29,64.7686,271.412,62.5839
C272.874,60.3563,271.935,57.0522,269.127,56.6245
C268.778,56.3753,268.405,56.3852,268.004,56.434 Z M228.555,57.852
C226.622,59.6879,226.79,63.1186,229.426,64.1735
C232.235,65.1623,235.597,65.0202,238.57,65.0349
C241.369,64.8621,242.796,61.7451,241.494,59.3702
C238.89,56.5186,234.647,57.8284,231.201,57.1003
C230.319,57.3509,229.437,57.6015,228.555,57.8521 Z" />
</vector>

View File

@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="85dp"
@@ -16,6 +17,6 @@
android:layout_marginRight="@dimen/margin_medium"
android:layout_marginBottom="@dimen/margin_medium"
android:contentDescription="@string/app_name"
android:src="@drawable/navigation_drawer_header" />
app:srcCompat="@drawable/navigation_drawer_header" />
</FrameLayout>

View File

@@ -20,11 +20,11 @@
android:adjustViewBounds="true"
android:padding="@dimen/margin_medium"
android:scaleType="fitCenter"
android:src="@drawable/qr_code_intro"
app:layout_constraintBottom_toBottomOf="@id/explanationText"
app:layout_constraintEnd_toStartOf="@id/explanationText"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/qr_code_intro"
app:tint="@color/color_primary"
tools:ignore="ContentDescription" />
@@ -38,11 +38,11 @@
android:paddingTop="@dimen/margin_large"
android:paddingEnd="@dimen/margin_large"
android:scaleType="fitCenter"
android:src="@drawable/qr_code_explanation"
app:layout_constraintBottom_toTopOf="@id/explanationText"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/diagram"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/qr_code_explanation"
tools:ignore="ContentDescription" />
<TextView

View File

@@ -52,7 +52,7 @@
android:layout_height="0dp"
android:contentDescription="@string/close"
android:scaleType="center"
android:src="@drawable/ic_close"
app:srcCompat="@drawable/ic_close"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"

View File

@@ -13,10 +13,10 @@
android:layout_marginStart="8dp"
android:layout_marginLeft="8dp"
android:elevation="@dimen/margin_tiny"
android:src="@drawable/ic_info_white"
app:layout_constraintBottom_toTopOf="@+id/divider"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/ic_info_white"
app:tint="?attr/colorControlNormal" />
<TextView

View File

@@ -12,12 +12,12 @@
android:layout_width="150dp"
android:layout_height="150dp"
android:layout_margin="@dimen/margin_large"
android:src="@drawable/splash_screen"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.1"
app:srcCompat="@drawable/splash_screen"
app:tint="?attr/colorControlNormal" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -29,10 +29,10 @@
android:contentDescription="@string/blogs_reblog_button"
android:padding="2dp"
android:scaleType="fitCenter"
android:src="@drawable/ic_repeat"
android:visibility="invisible"
app:layout_constraintBottom_toBottomOf="@+id/avatar"
app:layout_constraintEnd_toEndOf="@+id/avatar" />
app:layout_constraintEnd_toEndOf="@+id/avatar"
app:srcCompat="@drawable/ic_repeat" />
<com.vanniktech.emoji.EmojiTextView
android:id="@+id/authorName"

View File

@@ -16,7 +16,7 @@
android:background="?attr/selectableItemBackground"
android:padding="@dimen/margin_small"
android:scaleType="center"
android:src="@drawable/ic_emoji_toggle"
app:srcCompat="@drawable/ic_emoji_toggle"
app:tint="?attr/colorControlNormal" />
<com.vanniktech.emoji.EmojiEditText

View File

@@ -1,125 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="@dimen/margin_large">
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.5" />
<TextView
android:id="@+id/stepOne"
style="@style/StepBubble"
android:text="@string/step_1"
app:layout_constraintBottom_toTopOf="@+id/stepOneText"
app:layout_constraintEnd_toStartOf="@+id/guideline"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.0" />
<TextView
android:id="@+id/stepOneText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="8dp"
android:text="Pick contact"
app:layout_constraintEnd_toStartOf="@+id/guideline"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/stepOne" />
<View
android:id="@+id/stepConnector"
android:layout_width="0dp"
android:layout_height="1dp"
android:layout_margin="16dp"
android:alpha="0.5"
android:background="@color/briar_accent"
app:layout_constraintBottom_toBottomOf="@+id/stepOne"
app:layout_constraintEnd_toStartOf="@+id/stepTwo"
app:layout_constraintStart_toEndOf="@+id/stepOne"
app:layout_constraintTop_toTopOf="@+id/stepOne" />
<TextView
android:id="@+id/stepTwo"
style="@style/StepBubble.Upcoming"
android:text="@string/step_2"
app:layout_constraintBottom_toTopOf="@+id/stepTwoText"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="@+id/guideline"
app:layout_constraintTop_toTopOf="@+id/stepOne"
app:layout_constraintVertical_bias="0.0"
app:layout_constraintVertical_chainStyle="packed" />
<TextView
android:id="@+id/stepTwoText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="8dp"
android:alpha="0.5"
android:text="Wait for setup"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/guideline"
app:layout_constraintTop_toBottomOf="@+id/stepTwo" />
<TextView
android:id="@+id/discoveryText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginLeft="8dp"
android:layout_marginTop="32dp"
android:text="Pick the nearby contact to perform the setup with."
android:textSize="16sp"
app:layout_constraintBottom_toTopOf="@id/contacts"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/stepOneText" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/contacts"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginVertical="32dp"
app:layout_constraintBottom_toTopOf="@id/continueButton"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/discoveryText" />
<Button
android:id="@+id/continueButton"
style="@style/BriarButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:enabled="false"
android:text="@string/continue_button"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
tools:enabled="true" />
<TextView
android:id="@+id/commentTextView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="148dp"
android:layout_marginLeft="148dp"
android:layout_marginTop="124dp"
android:text="list of all [contact-name-and-avatar]"
android:textColor="@color/briar_red_500"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</ScrollView>

View File

@@ -1,112 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="@dimen/margin_large">
<androidx.constraintlayout.widget.Guideline
android:id="@+id/guideline"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.5" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/stepOne"
style="@style/StepBubble.Completed"
app:layout_constraintBottom_toTopOf="@+id/stepOneText"
app:layout_constraintEnd_toStartOf="@+id/guideline"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.0"
app:layout_constraintVertical_chainStyle="packed" />
<TextView
android:id="@+id/stepOneText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="8dp"
android:text="Pick contact"
app:layout_constraintEnd_toStartOf="@+id/guideline"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/stepOne" />
<View
android:id="@+id/stepConnector"
android:layout_width="0dp"
android:layout_height="1dp"
android:layout_margin="16dp"
android:background="@color/briar_accent"
app:layout_constraintBottom_toBottomOf="@+id/stepOne"
app:layout_constraintEnd_toStartOf="@+id/stepTwo"
app:layout_constraintStart_toEndOf="@+id/stepOne"
app:layout_constraintTop_toTopOf="@+id/stepOne" />
<TextView
android:id="@+id/stepTwo"
style="@style/StepBubble"
android:text="@string/step_2"
app:layout_constraintBottom_toTopOf="@+id/stepTwoText"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="@+id/guideline"
app:layout_constraintTop_toTopOf="@+id/stepOne"
app:layout_constraintVertical_bias="0.0"
app:layout_constraintVertical_chainStyle="packed" />
<TextView
android:id="@+id/stepTwoText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="8dp"
android:text="Wait for setup"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/guideline"
app:layout_constraintTop_toBottomOf="@+id/stepTwo" />
<TextView
android:id="@+id/pendingText"
android:layout_marginTop="32dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginLeft="8dp"
android:textSize="16sp"
android:text="Waiting for a connection to be established with:\n\n[chosen contact-name-and-avatar]"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/stepOneText" />
<Button
android:id="@+id/doneButton"
style="@style/BriarButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Done"
android:enabled="false"
android:visibility="invisible"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<ProgressBar
android:id="@+id/progressBar"
style="?android:attr/progressBarStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:visibility="visible"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintVertical_bias="1.0" />
</androidx.constraintlayout.widget.ConstraintLayout>
</ScrollView>

View File

@@ -1,56 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="@dimen/margin_large">
<ImageView
android:id="@+id/diagram"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:paddingBottom="@dimen/margin_large"
android:scaleType="fitCenter"
android:src="@drawable/bluetooth"
app:layout_constraintBottom_toTopOf="@id/explanationText"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/explanationText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="left|start"
android:text="To be able to communicate over Bluetooth with contacts that were previously added at a distance, Briar needs to learn the Bluetooth address of your device. This only needs to be done once.\n\nTo accomplish this, you need to have one of your contacts nearby to perform the Bluetooth Setup.\n\nBefore you start the setup, your contact also needs bring up the Bluetooth Setup screen by navigating [here-and-here].\n\nNote: Bluetooth Pairing is not a required part of the setup."
android:textSize="16sp"
app:layout_constraintBottom_toTopOf="@id/startButton"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/diagram" />
<Button
android:id="@+id/startButton"
style="@style/BriarButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:enabled="false"
android:text="Start"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintVertical_bias="1.0"
tools:enabled="true" />
</androidx.constraintlayout.widget.ConstraintLayout>
</ScrollView>

View File

@@ -24,7 +24,6 @@
android:layout_width="0dp"
android:layout_height="0dp"
android:padding="8dp"
android:src="@drawable/ic_crash"
app:layout_constraintBottom_toTopOf="@+id/crashed"
app:layout_constraintDimensionRatio="1:1"
app:layout_constraintEnd_toEndOf="parent"
@@ -32,6 +31,7 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_chainStyle="packed"
app:srcCompat="@drawable/ic_crash"
app:tint="?attr/colorControlNormal"
tools:ignore="ContentDescription" />

View File

@@ -14,10 +14,10 @@
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:layout_marginRight="8dp"
android:src="@drawable/alerts_and_states_error"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/alerts_and_states_error"
app:tint="?attr/colorControlNormal"
tools:ignore="ContentDescription" />

View File

@@ -30,10 +30,10 @@
android:layout_marginTop="16dp"
android:layout_marginRight="16dp"
android:scaleType="fitCenter"
android:src="@drawable/qr_code_error"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/errorTitle"
app:srcCompat="@drawable/qr_code_error"
app:tint="?attr/colorControlNormal"
tools:ignore="ContentDescription" />

View File

@@ -19,11 +19,11 @@
android:adjustViewBounds="true"
android:paddingBottom="@dimen/margin_large"
android:scaleType="fitCenter"
android:src="@drawable/qr_code_intro"
app:layout_constraintBottom_toTopOf="@id/explanationImage"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/qr_code_intro"
app:tint="@color/color_primary" />
<ImageView
@@ -35,11 +35,11 @@
android:paddingTop="@dimen/margin_large"
android:paddingRight="@dimen/margin_large"
android:scaleType="fitCenter"
android:src="@drawable/qr_code_explanation"
app:layout_constraintBottom_toTopOf="@id/explanationText"
app:layout_constraintEnd_toEndOf="@id/diagram"
app:layout_constraintStart_toStartOf="@id/diagram"
app:layout_constraintTop_toBottomOf="@id/diagram"
app:srcCompat="@drawable/qr_code_explanation"
tools:ignore="ContentDescription" />
<TextView

View File

@@ -81,9 +81,9 @@
android:layout_marginTop="32dp"
android:background="@drawable/bubble_accent"
android:scaleType="center"
android:src="@drawable/ic_call_made"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/stepOneText"
app:srcCompat="@drawable/ic_call_made"
app:tint="@android:color/white" />
<TextView
@@ -123,11 +123,11 @@
style="@style/BriarButtonFlat.Positive.Tiny"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableStart="@drawable/ic_content_copy"
android:drawableLeft="@drawable/ic_content_copy"
android:drawablePadding="8dp"
android:enabled="false"
android:text="@string/copy_button"
app:drawableLeftCompat="@drawable/ic_content_copy"
app:drawableStartCompat="@drawable/ic_content_copy"
app:layout_constraintEnd_toStartOf="@id/shareButton"
app:layout_constraintHorizontal_bias="1.0"
app:layout_constraintHorizontal_chainStyle="packed"
@@ -139,11 +139,11 @@
style="@style/BriarButtonFlat.Positive.Tiny"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableStart="@drawable/social_share_blue"
android:drawableLeft="@drawable/social_share_blue"
android:drawablePadding="8dp"
android:enabled="false"
android:text="@string/share_button"
app:drawableLeftCompat="@drawable/social_share_blue"
app:drawableStartCompat="@drawable/social_share_blue"
app:layout_constraintBottom_toBottomOf="@id/copyButton"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="1.0"
@@ -157,9 +157,9 @@
android:layout_marginTop="16dp"
android:background="@drawable/bubble_accent"
android:scaleType="center"
android:src="@drawable/ic_call_received"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/copyButton"
app:srcCompat="@drawable/ic_call_received"
app:tint="@android:color/white" />
<TextView
@@ -202,10 +202,10 @@
style="@style/BriarButtonFlat.Positive.Tiny"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableStart="@drawable/ic_content_paste"
android:drawableLeft="@drawable/ic_content_paste"
android:drawablePadding="8dp"
android:text="@string/paste_button"
app:drawableLeftCompat="@drawable/ic_content_paste"
app:drawableStartCompat="@drawable/ic_content_paste"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="1.0"
app:layout_constraintStart_toStartOf="parent"

View File

@@ -77,13 +77,13 @@
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginTop="32dp"
android:src="@drawable/ic_nickname"
app:layout_constraintBottom_toTopOf="@+id/nicknameIcon"
app:layout_constraintDimensionRatio="1:1"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHeight_max="256dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/stepOneText"
app:srcCompat="@drawable/ic_nickname"
tools:ignore="ContentDescription" />
<androidx.appcompat.widget.AppCompatImageView
@@ -93,10 +93,10 @@
android:layout_marginTop="32dp"
android:background="@drawable/bubble_accent"
android:scaleType="center"
android:src="@drawable/ic_person"
app:layout_constraintBottom_toTopOf="@+id/contactNameLayout"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/imageView"
app:srcCompat="@drawable/ic_person"
app:tint="@android:color/white" />
<TextView

View File

@@ -10,13 +10,13 @@
android:layout_width="128dp"
android:layout_height="128dp"
android:scaleType="center"
android:src="@drawable/startup_lock"
app:layout_constraintBottom_toTopOf="@+id/textView"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.5"
app:layout_constraintVertical_chainStyle="packed"
app:srcCompat="@drawable/startup_lock"
app:tint="@color/briar_accent"
tools:ignore="ContentDescription" />

View File

@@ -10,13 +10,13 @@
android:layout_width="128dp"
android:layout_height="128dp"
android:scaleType="center"
android:src="@drawable/startup_lock"
app:layout_constraintBottom_toTopOf="@+id/textView"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.5"
app:layout_constraintVertical_chainStyle="packed"
app:srcCompat="@drawable/startup_lock"
app:tint="@color/briar_primary"
tools:ignore="ContentDescription" />

View File

@@ -38,13 +38,13 @@
android:layout_marginEnd="8dp"
android:layout_marginRight="8dp"
android:layout_marginBottom="8dp"
android:src="@drawable/ic_close"
app:backgroundTint="@color/briar_accent"
app:fabCustomSize="26dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0"
app:maxImageSize="18dp" />
app:maxImageSize="18dp"
app:srcCompat="@drawable/ic_close" />
</merge>

View File

@@ -43,11 +43,11 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="@dimen/margin_large"
android:src="@drawable/ic_contact_introduction"
app:layout_constraintBottom_toBottomOf="@+id/barrier"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/avatarContact2"
app:srcCompat="@drawable/ic_contact_introduction"
app:tint="?attr/colorControlNormal"
tools:ignore="ContentDescription" />

View File

@@ -47,9 +47,9 @@
android:layout_height="@dimen/button_size"
android:background="?attr/selectableItemBackgroundBorderless"
android:contentDescription="@string/blogs_reblog_comment_hint"
android:src="@drawable/ic_repeat"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/ic_repeat"
app:tint="?attr/colorControlNormal" />
<com.vanniktech.emoji.EmojiTextView

View File

@@ -41,10 +41,10 @@
android:layout_height="@dimen/button_size"
android:background="?attr/selectableItemBackgroundBorderless"
android:contentDescription="@string/groups_remove"
android:src="@drawable/action_delete_black"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/name"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/action_delete_black"
app:tint="?attr/colorControlNormal" />
<TextView

View File

@@ -40,9 +40,9 @@
android:layout_marginStart="@dimen/listitem_horizontal_margin"
android:layout_marginLeft="@dimen/listitem_horizontal_margin"
android:layout_marginTop="4dp"
android:src="@drawable/ic_visibility"
app:layout_constraintStart_toEndOf="@+id/avatarView"
app:layout_constraintTop_toBottomOf="@+id/nameView"
app:srcCompat="@drawable/ic_visibility"
app:tint="?attr/colorControlNormal"
tools:ignore="ContentDescription" />

View File

@@ -27,9 +27,9 @@
android:layout_margin="@dimen/margin_medium"
android:background="?attr/selectableItemBackgroundBorderless"
android:contentDescription="@string/delete"
android:src="@drawable/action_delete_black"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/action_delete_black"
app:tint="?attr/colorControlNormal" />
<TextView

View File

@@ -26,11 +26,11 @@
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_margin="@dimen/margin_medium"
android:src="@drawable/ic_check_white"
android:visibility="invisible"
app:layout_constraintBottom_toBottomOf="@+id/button"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/button"
app:srcCompat="@drawable/ic_check_white"
app:tint="?attr/colorControlNormal"
tools:ignore="ContentDescription" />
@@ -52,10 +52,10 @@
android:layout_height="24dp"
android:layout_margin="@dimen/margin_medium"
android:contentDescription="@string/help"
android:src="@drawable/ic_help_outline_white"
android:tint="@color/briar_button_text_positive"
app:layout_constraintBottom_toBottomOf="@+id/button"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@+id/button" />
app:layout_constraintTop_toTopOf="@+id/button"
app:srcCompat="@drawable/ic_help_outline_white" />
</merge>

View File

@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:showIn="@layout/fragment_keyagreement_qr">
@@ -25,6 +26,6 @@
android:alpha="0.54"
android:background="?attr/selectableItemBackground"
android:contentDescription="@string/show_qr_code_fullscreen"
android:src="@drawable/ic_fullscreen_black_48dp" />
app:srcCompat="@drawable/ic_fullscreen_black_48dp" />
</merge>

View File

@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
@@ -9,6 +10,6 @@
android:layout_gravity="center"
android:layout_margin="@dimen/margin_xxlarge"
android:contentDescription="@string/app_name"
android:src="@drawable/splash_screen" />
app:srcCompat="@drawable/splash_screen" />
</FrameLayout>

View File

@@ -19,8 +19,8 @@
android:focusable="true"
android:padding="4dp"
android:scaleType="center"
android:src="@drawable/ic_image_off"
android:visibility="invisible"
app:srcCompat="@drawable/ic_image_off"
app:tint="?attr/colorControlNormal" />
<androidx.appcompat.widget.AppCompatImageButton
@@ -34,7 +34,7 @@
android:focusable="true"
android:padding="4dp"
android:scaleType="center"
android:src="@drawable/social_send_now_white"
app:srcCompat="@drawable/social_send_now_white"
app:tint="@color/briar_accent" />
<ProgressBar

View File

@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
<menu
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
@@ -7,20 +8,13 @@
android:icon="@drawable/ic_nearby"
android:orderInCategory="3"
android:title="@string/add_contact_nearby_title"
app:showAsAction="never" />
app:showAsAction="never"/>
<item
android:id="@+id/action_add_contact_remotely"
android:icon="@drawable/ic_link_menu"
android:orderInCategory="2"
android:title="@string/add_contact_remotely_title"
app:showAsAction="never" />
<item
android:id="@+id/action_bluetooth_setup"
android:icon="@drawable/ic_link_menu"
android:orderInCategory="4"
android:title="Bluetooth setup"
app:showAsAction="never" />
app:showAsAction="never"/>
</menu>

View File

@@ -149,6 +149,7 @@
<string name="send">ارسال</string>
<string name="allow">السماح</string>
<string name="open">فتح</string>
<string name="change">تعديل</string>
<string name="no_data">لا يوجد بيانات</string>
<string name="ellipsis">...</string>
<string name="text_too_long">النص المُدخل طويل جدًا</string>
@@ -171,7 +172,6 @@
<string name="image_attach_error_invalid_mime_type">نوع ملف الصورة غير مدعوم : %s</string>
<string name="set_contact_alias">تعديل إسم جهة الاتصال</string>
<string name="set_contact_alias_hint">اسم جهة الاتصال</string>
<string name="change">تعديل</string>
<string name="delete_all_messages">حذف جميع الرّسائل </string>
<string name="dialog_title_delete_all_messages">تأكيد حذف الرّسالة</string>
<string name="dialog_message_delete_all_messages">هل أنتم متأكّدون من حذف جميع الرّسائل؟ </string>
@@ -465,6 +465,7 @@
<string name="blogs_rss_feeds_manage_delete_error">لا يمكن حذف الخلاصة!</string>
<string name="blogs_rss_feeds_manage_empty_state">لا خلاصات RSS للعرض\n\nالرجاء لمس علامة + لإستيراد خلاصة.</string>
<string name="blogs_rss_feeds_manage_error">حدث خطأ في جلب خلاصاتك. الرجاء المحاولة لاحقًا.</string>
<!--Settings Profile Picture-->
<!--Settings Display-->
<string name="pref_language_title">اللغة &amp; المنطقة</string>
<string name="pref_language_changed">هذا الإعداد سيتفعل بعد إعادة تشغيل Briar (براير). الرجاء تسجيل الخروج ثم اعادة تشغيل Briar (براير).</string>

View File

@@ -103,6 +103,7 @@
<string name="send">Göndər</string>
<string name="allow">Izn vermək</string>
<string name="open"></string>
<string name="change">Dəyiş</string>
<string name="no_data">Məlumat yoxdur</string>
<string name="ellipsis">...</string>
<string name="text_too_long">Daxil olunmuş mətn çox uzundur</string>
@@ -125,7 +126,6 @@
<string name="image_attach_error_invalid_mime_type">Şəkil formatı dəstəklənmir: %s</string>
<string name="set_contact_alias">Kontakt adı dəyişdirin</string>
<string name="set_contact_alias_hint">Əlaqə adı</string>
<string name="change">Dəyiş</string>
<string name="delete_all_messages">Bütün mesajları sil</string>
<string name="dialog_title_delete_all_messages">Silməyi təsdiq et</string>
<string name="dialog_message_delete_all_messages">Bütün mesajları silmək istədiyinizə əminsinizmi? </string>
@@ -357,6 +357,7 @@
<string name="blogs_rss_feeds_manage_delete_error">Feed silinmədi</string>
<string name="blogs_rss_feeds_manage_empty_state">Xeyr RSS əks etdirmir\n\nİdxal etmək üçün + düyməsinə toxunun</string>
<string name="blogs_rss_feeds_manage_error">Kanal yükləmədə bir problem var. Zəhmət olmasa bir az sonra yenə cəhd edin.</string>
<!--Settings Profile Picture-->
<!--Settings Display-->
<string name="pref_language_title">Dil və region</string>
<string name="pref_language_changed">Briar-ı yenidən başlatdığınızda bu parametr qüvvəyə minir. Lütfən çıxın və Briar-ı yenidən başladın.</string>

View File

@@ -81,6 +81,7 @@
<string name="send">Pošalji</string>
<string name="allow">Dozvoli</string>
<string name="open">Otvori</string>
<string name="change">Promijeni</string>
<string name="no_data">Nema podataka</string>
<string name="ellipsis">...</string>
<string name="text_too_long">Tekst koji ste unijeli je predugačak</string>
@@ -102,7 +103,6 @@
<string name="image_attach_error_invalid_mime_type">Fromat fotografije nije podržan: %s</string>
<string name="set_contact_alias">Promijeni ime kontakta</string>
<string name="set_contact_alias_hint">Ime kontakta</string>
<string name="change">Promijeni</string>
<string name="delete_contact">Izbrišite kontakt</string>
<string name="dialog_title_delete_contact">Potvrdite brisanje kontakta</string>
<string name="dialog_message_delete_contact">Jeste li sigurni da želite da uklonite ovaj kontakt i sve poruke koje ste razmijenili?</string>
@@ -342,6 +342,7 @@
<string name="blogs_rss_feeds_manage_delete_error">Kanal nije bilo moguće ukloniti!</string>
<string name="blogs_rss_feeds_manage_empty_state">Nema RSS kanala za prikazivanje\n\nDotaknite + ikonu da uvezete kanal</string>
<string name="blogs_rss_feeds_manage_error">Došlo je do problema pri učitavanju vaših kanala. Probajte opet kasnije.</string>
<!--Settings Profile Picture-->
<!--Settings Display-->
<string name="pref_language_title">Jezik i regija</string>
<string name="pref_language_changed">Ovo podešavanje će stupiti na snagu kada restartujete Briar. Molim vas da se odjavite i restartujete Briar.</string>

View File

@@ -129,6 +129,7 @@
<string name="send">Envia</string>
<string name="allow">Permet</string>
<string name="open">Obre</string>
<string name="change">Canvia</string>
<string name="no_data">Sense dades</string>
<string name="ellipsis">...</string>
<string name="text_too_long">El text és massa llarg</string>
@@ -151,7 +152,6 @@
<string name="image_attach_error_invalid_mime_type">El format de la imatge no s\'admet: %s</string>
<string name="set_contact_alias">Canvia el nom del contacte</string>
<string name="set_contact_alias_hint">Nom del contacte</string>
<string name="change">Canvia</string>
<string name="delete_all_messages">Esborra tots els missatges</string>
<string name="dialog_title_delete_all_messages">Confirmeu l\'esborrat dels missatges</string>
<string name="dialog_message_delete_all_messages">Segur que voleu esborrar tots els missatges?</string>
@@ -425,6 +425,7 @@ Així que l\'actualitzi li veureu una icona diferent .</string>
<string name="blogs_rss_feeds_manage_delete_error">La subscripció al canal de notícies no s\'ha pogut suprimir.</string>
<string name="blogs_rss_feeds_manage_empty_state">No hi ha cap notícia per mostrar\n\nFeu un toc sobre la icona + per subscriure-us a un canal de notícies</string>
<string name="blogs_rss_feeds_manage_error">S\'ha produït un problema en actualitzar els vostres canals de notícies. Torneu-ho a provar més endavant.</string>
<!--Settings Profile Picture-->
<!--Settings Display-->
<string name="pref_language_title">Llengua i regió</string>
<string name="pref_language_changed">L\'efecte d\'aquest canvi només l\'apreciareu després de reiniciar Briar. Si us plau, tanqueu la sessió i reinicieu Briar.</string>

View File

@@ -129,6 +129,7 @@
<string name="send">Senden</string>
<string name="allow">Erlauben</string>
<string name="open">Öffnen</string>
<string name="change">Ändern</string>
<string name="no_data">Keine Daten</string>
<string name="ellipsis"></string>
<string name="text_too_long">Der eingegebene Text ist zu lang</string>
@@ -151,7 +152,6 @@
<string name="image_attach_error_invalid_mime_type">Nicht unterstütztes Bildformat: %s</string>
<string name="set_contact_alias">Kontaktnamen ändern</string>
<string name="set_contact_alias_hint">Name des Kontakts</string>
<string name="change">Ändern</string>
<string name="delete_all_messages">Alle Nachrichten löschen</string>
<string name="dialog_title_delete_all_messages">Löschen der Nachrichten bestätigen</string>
<string name="dialog_message_delete_all_messages">Bist du sicher, dass du alle Nachrichten löschen willst?</string>
@@ -177,7 +177,7 @@
<string name="dialog_title_no_image_support">Bilder nicht verfügbar</string>
<string name="dialog_message_no_image_support">Der Briar deines Kontakts unterstützt noch keine Bildanhänge. Sobald die Aktualisierung abgeschlossen ist, siehst du ein anderes Symbol.</string>
<string name="dialog_title_image_support">Du kannst nun Bilder an diesen Kontakt senden</string>
<string name="dialog_message_image_support">Tippe auf das Symbol, um Bilder anzuhängen.</string>
<string name="dialog_message_image_support">Tippe auf dieses Symbol, um Bilder anzuhängen.</string>
<string name="messaging_too_many_attachments_toast">Nur die ersten %d Bilder werden übertragen werden</string>
<!--Adding Contacts-->
<string name="add_contact_title">Kontakt in der Nähe hinzufügen</string>
@@ -424,6 +424,11 @@
<string name="blogs_rss_feeds_manage_delete_error">Der Feed konnte nicht gelöscht werden!</string>
<string name="blogs_rss_feeds_manage_empty_state">Keine RSS-Feeds vorhanden\n\nTippe auf das + Symbol, um einen Feed zu importieren</string>
<string name="blogs_rss_feeds_manage_error">Es gab ein Problem beim Laden deiner Feeds. Bitte versuche es später erneut.</string>
<!--Settings Profile Picture-->
<string name="change_profile_picture">Tippe, um dein Profilbild zu ändern</string>
<string name="dialog_confirm_profile_picture_title">Profilbild ändern</string>
<string name="dialog_confirm_profile_picture_remark">Nur deine Kontakte können dein Profilbild sehen</string>
<string name="change_profile_picture_failed_message">Es tut uns leid, aber beim Aktualisieren deines Profilbildes ist ein Fehler aufgetreten</string>
<!--Settings Display-->
<string name="pref_language_title">Sprache &amp; Region</string>
<string name="pref_language_changed">Diese Einstellung wird beim Neustart von Briar wirksam. Bitte melde dich ab und starte Briar neu.</string>
@@ -552,7 +557,9 @@
<!--Screen Filters & Tapjacking-->
<string name="screen_filter_title">Bildschirmüberlagerung erkannt</string>
<string name="screen_filter_body">Eine andere App überlagert Briar. Um deine Sicherheit zu gewährleisten, reagiert Briar in diesem Fall nicht auf deine Eingaben.\n\nDie folgenden Apps könnten überlagern:\n\n%1$s</string>
<string name="screen_filter_body_api_30">Eine andere App überlagert Briar. Um deine Sicherheit zu gewährleisten, reagiert Briar in diesem Fall nicht auf deine Eingaben.\n\nÜberprüfe die unten aufgeführten Apps, um die betreffende App zu finden.</string>
<string name="screen_filter_allow">Erlaube diesen Apps die Bildschirmüberlagerung</string>
<string name="screen_filter_review_apps">Apps überprüfen</string>
<!--Permission Requests-->
<string name="permission_camera_title">Berechtigung Kamera</string>
<string name="permission_camera_request_body">Um den QR-Code zu scannen, benötigt Briar Zugriff auf die Kamera.</string>

View File

@@ -129,6 +129,7 @@
<string name="send">Enviar</string>
<string name="allow">Permitir</string>
<string name="open">Abrir</string>
<string name="change">Cambiar</string>
<string name="no_data">Sin datos</string>
<string name="ellipsis"></string>
<string name="text_too_long">El texto ingresado es demasiado largo</string>
@@ -151,7 +152,6 @@
<string name="image_attach_error_invalid_mime_type">Formato de imagen no admitido: %s</string>
<string name="set_contact_alias">Cambiar nombre del contacto</string>
<string name="set_contact_alias_hint">Nombre del contacto</string>
<string name="change">Cambiar</string>
<string name="delete_all_messages">Eliminar todos los mensajes</string>
<string name="dialog_title_delete_all_messages">Confirmar la eliminación del mensaje</string>
<string name="dialog_message_delete_all_messages">¿Estás seguro de que deseas eliminar todos los mensajes?</string>
@@ -424,6 +424,11 @@
<string name="blogs_rss_feeds_manage_delete_error">¡El canal no pudo ser eliminado!</string>
<string name="blogs_rss_feeds_manage_empty_state">No hay canales RSS que mostrar\n\nGolpea el icono + para importar uno</string>
<string name="blogs_rss_feeds_manage_error">Hubo un problema cargando tus canales RSS. Por favor, prueba más tarde.</string>
<!--Settings Profile Picture-->
<string name="change_profile_picture">Pulsar para cambiar la imagen de tu perfil</string>
<string name="dialog_confirm_profile_picture_title">Cambiar imagen de perfil</string>
<string name="dialog_confirm_profile_picture_remark">Solo tus contactos pueden ver la imagen de tu perfil</string>
<string name="change_profile_picture_failed_message">Lo sentimos, pero algo falló mientras se estaba actualizando la imagen de tu perfil</string>
<!--Settings Display-->
<string name="pref_language_title">Lenguaje &amp; región</string>
<string name="pref_language_changed">Esta configuración se hará efectiva cuando reinicies Briar. Por favor, cerrar sesión y reiniciar Briar.</string>

View File

@@ -105,6 +105,7 @@
<string name="send">Bidali</string>
<string name="allow">Baimendu</string>
<string name="open">Ireki</string>
<string name="change">Aldatu</string>
<string name="no_data">Daturik ez</string>
<string name="ellipsis"></string>
<string name="text_too_long">Sartutako testua luzeegia da</string>
@@ -127,7 +128,6 @@
<string name="image_attach_error_invalid_mime_type">Onartu gabeko irudi formatua: %s</string>
<string name="set_contact_alias">Aldatu kontaktuaren izena</string>
<string name="set_contact_alias_hint">Kontaktuaren izena</string>
<string name="change">Aldatu</string>
<string name="delete_all_messages">Ezabatu mezu guztiak</string>
<string name="dialog_title_delete_all_messages">Baieztatu mezuak ezabatzea</string>
<string name="dialog_message_delete_all_messages">Ziur mezu guztiak ezabatu nahi dituzula?</string>
@@ -400,6 +400,7 @@
<string name="blogs_rss_feeds_manage_delete_error">Ezin izan da jarioa ezabatu!</string>
<string name="blogs_rss_feeds_manage_empty_state">Ez dago erakusteko RSS jariorik\n\nSakatu + ikonoa jario bat inportatzeko</string>
<string name="blogs_rss_feeds_manage_error">Arazo bat egon da zure jarioak kargatzean. Saiatu berriro geroago.</string>
<!--Settings Profile Picture-->
<!--Settings Display-->
<string name="pref_language_title">Hizkuntza eta eskualdea</string>
<string name="pref_language_changed">Ezarpen hau Briar berrabiaraztean jarriko da indarrean. Amaitu saioa eta berrabiarazi Briar.</string>

View File

@@ -132,6 +132,7 @@
<string name="send">ارسال</string>
<string name="allow">اجازه دادن</string>
<string name="open">باز کردن</string>
<string name="change">تغییر</string>
<string name="no_data">داده ای موجود نمی باشد</string>
<string name="ellipsis"></string>
<string name="text_too_long">متن وارد شده بیش از حد طولانی می باشد</string>
@@ -154,7 +155,6 @@
<string name="image_attach_error_invalid_mime_type">فرمت تصویر پشتیبانی نمی‌شود: %s</string>
<string name="set_contact_alias">تغییر نام مخاطب</string>
<string name="set_contact_alias_hint">نام مخاطب</string>
<string name="change">تغییر</string>
<string name="delete_all_messages">حذف تمام پیام ها</string>
<string name="dialog_title_delete_all_messages">تایید حذف پیام</string>
<string name="dialog_message_delete_all_messages">آیا از حذف تمام پیام‌ ها اطمینان دارید؟</string>
@@ -461,6 +461,7 @@
برای وارد کردن خوراک روی آیکون + ضربه بزنید</string>
<string name="blogs_rss_feeds_manage_error">مشکلی با بارگذاری فیدهای شما وجود داشت. لطفا بعدا امتحان کنید.</string>
<!--Settings Profile Picture-->
<!--Settings Display-->
<string name="pref_language_title">زبان و منطقه</string>
<string name="pref_language_changed">این تنظیمات زمانی که Briar (برایر) را ری استارت کنید تاثیر خود را می گذارند. لطفا خارج شوید و Briar (برایر) را دوباره راه اندازی کنید.</string>

Some files were not shown because too many files have changed in this diff Show More