diff --git a/app/build.gradle b/app/build.gradle index a7b05f11f..ae8a7a053 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -221,7 +221,11 @@ android { 'proguard/proguard-ez-vcard.pro', 'proguard/proguard.pro' testProguardFiles 'proguard/proguard-automation.pro' + + // Uncomment for testing this build type without signing. + // signingConfig signingConfigs.debug } + debug { minifyEnabled false diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 2569434a2..024d2704f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -179,14 +179,6 @@ - - - - , ListView.OnItemClickListener - { - - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle bundle) { - return inflater.inflate(R.layout.blocked_contacts_fragment, container, false); - } - - @Override - public void onCreate(Bundle bundle) { - super.onCreate(bundle); - setListAdapter(new BlockedContactAdapter(getActivity(), GlideApp.with(this), null)); - getLoaderManager().initLoader(0, null, this); - } - - @Override - public void onActivityCreated(Bundle bundle) { - super.onActivityCreated(bundle); - getListView().setOnItemClickListener(this); - } - - @Override - public @NonNull Loader onCreateLoader(int id, Bundle args) { - return new BlockedContactsLoader(getActivity()); - } - - @Override - public void onLoadFinished(@NonNull Loader loader, Cursor data) { - if (getListAdapter() != null) { - ((CursorAdapter) getListAdapter()).changeCursor(data); - } - } - - @Override - public void onLoaderReset(@NonNull Loader loader) { - if (getListAdapter() != null) { - ((CursorAdapter) getListAdapter()).changeCursor(null); - } - } - - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - Recipient recipient = ((BlockedContactListItem)view).getRecipient(); - Intent intent = new Intent(getActivity(), RecipientPreferenceActivity.class); - intent.putExtra(RecipientPreferenceActivity.ADDRESS_EXTRA, recipient.getAddress()); - - startActivity(intent); - } - - private static class BlockedContactAdapter extends CursorAdapter { - - private final GlideRequests glideRequests; - - BlockedContactAdapter(@NonNull Context context, @NonNull GlideRequests glideRequests, @Nullable Cursor c) { - super(context, c); - this.glideRequests = glideRequests; - } - - @Override - public View newView(Context context, Cursor cursor, ViewGroup parent) { - return LayoutInflater.from(context) - .inflate(R.layout.blocked_contact_list_item, parent, false); - } - - @Override - public void bindView(View view, Context context, Cursor cursor) { - String address = cursor.getString(1); - Recipient recipient = Recipient.from(context, Address.fromSerialized(address), true); - - ((BlockedContactListItem) view).set(glideRequests, recipient); - } - } - - } - -} diff --git a/app/src/main/java/org/thoughtcrime/securesms/ContactSelectionActivity.java b/app/src/main/java/org/thoughtcrime/securesms/ContactSelectionActivity.java deleted file mode 100644 index 31f079b72..000000000 --- a/app/src/main/java/org/thoughtcrime/securesms/ContactSelectionActivity.java +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Copyright (C) 2015 Open Whisper Systems - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.thoughtcrime.securesms; - -import android.os.Bundle; -import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; - -import org.thoughtcrime.securesms.components.ContactFilterToolbar; -import org.thoughtcrime.securesms.loki.fragments.ContactSelectionListFragment; -import org.thoughtcrime.securesms.loki.fragments.ContactSelectionListLoader.DisplayMode; -import org.thoughtcrime.securesms.util.DynamicLanguage; -import org.thoughtcrime.securesms.util.DynamicNoActionBarTheme; -import org.thoughtcrime.securesms.util.DynamicTheme; -import org.thoughtcrime.securesms.util.ViewUtil; - -import network.loki.messenger.R; - -/** - * Base activity container for selecting a list of contacts. - * - * @author Moxie Marlinspike - * - */ -public abstract class ContactSelectionActivity extends PassphraseRequiredActionBarActivity - implements SwipeRefreshLayout.OnRefreshListener, - ContactSelectionListFragment.OnContactSelectedListener -{ - private static final String TAG = ContactSelectionActivity.class.getSimpleName(); - - private final DynamicTheme dynamicTheme = new DynamicNoActionBarTheme(); - private final DynamicLanguage dynamicLanguage = new DynamicLanguage(); - - protected ContactSelectionListFragment contactsFragment; - - private ContactFilterToolbar toolbar; - - @Override - protected void onPreCreate() { - dynamicTheme.onCreate(this); - dynamicLanguage.onCreate(this); - } - - @Override - protected void onCreate(Bundle icicle, boolean ready) { - if (!getIntent().hasExtra(ContactSelectionListFragment.DISPLAY_MODE)) { - getIntent().putExtra(ContactSelectionListFragment.DISPLAY_MODE, DisplayMode.FLAG_ALL); - } - - setContentView(R.layout.contact_selection_activity); - - initializeToolbar(); - initializeResources(); - initializeSearch(); - } - - @Override - public void onResume() { - super.onResume(); - dynamicTheme.onResume(this); - dynamicLanguage.onResume(this); - } - - protected ContactFilterToolbar getToolbar() { - return toolbar; - } - - private void initializeToolbar() { - this.toolbar = ViewUtil.findById(this, R.id.toolbar); - setSupportActionBar(toolbar); - - assert getSupportActionBar() != null; - getSupportActionBar().setDisplayHomeAsUpEnabled(false); - getSupportActionBar().setDisplayShowTitleEnabled(false); - getSupportActionBar().setIcon(null); - getSupportActionBar().setLogo(null); - } - - private void initializeResources() { - contactsFragment = (ContactSelectionListFragment) getSupportFragmentManager().findFragmentById(R.id.contact_selection_list_fragment); - contactsFragment.setOnContactSelectedListener(this); - contactsFragment.setOnRefreshListener(this); - } - - private void initializeSearch() { - toolbar.setOnFilterChangedListener(filter -> contactsFragment.setQueryFilter(filter)); - } - - @Override - public void onRefresh() { } - - @Override - public void onContactSelected(String number) {} - - @Override - public void onContactDeselected(String number) {} -} diff --git a/app/src/main/java/org/thoughtcrime/securesms/GroupCreateActivity.java b/app/src/main/java/org/thoughtcrime/securesms/GroupCreateActivity.java deleted file mode 100644 index ef044140d..000000000 --- a/app/src/main/java/org/thoughtcrime/securesms/GroupCreateActivity.java +++ /dev/null @@ -1,605 +0,0 @@ -/* - * Copyright (C) 2014 Open Whisper Systems - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package org.thoughtcrime.securesms; - -import android.app.Activity; -import android.content.Intent; -import android.graphics.Bitmap; -import android.net.Uri; -import android.os.AsyncTask; -import android.os.Bundle; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import android.text.TextUtils; -import android.view.Menu; -import android.view.MenuInflater; -import android.view.MenuItem; -import android.view.View; -import android.widget.EditText; -import android.widget.ImageView; -import android.widget.ListView; -import android.widget.TextView; -import android.widget.Toast; - -import com.bumptech.glide.load.engine.DiskCacheStrategy; -import com.bumptech.glide.request.target.SimpleTarget; -import com.bumptech.glide.request.transition.Transition; - -import org.thoughtcrime.securesms.avatar.AvatarSelection; -import org.thoughtcrime.securesms.components.PushRecipientsPanel; -import org.thoughtcrime.securesms.components.PushRecipientsPanel.RecipientsPanelChangedListener; -import org.thoughtcrime.securesms.contacts.RecipientsEditor; -import org.thoughtcrime.securesms.contacts.avatars.ContactColors; -import org.thoughtcrime.securesms.contacts.avatars.ResourceContactPhoto; -import org.thoughtcrime.securesms.conversation.ConversationActivity; -import org.thoughtcrime.securesms.database.Address; -import org.thoughtcrime.securesms.database.DatabaseFactory; -import org.thoughtcrime.securesms.database.GroupDatabase; -import org.thoughtcrime.securesms.database.GroupDatabase.GroupRecord; -import org.thoughtcrime.securesms.database.RecipientDatabase; -import org.thoughtcrime.securesms.database.ThreadDatabase; -import org.thoughtcrime.securesms.groups.GroupManager; -import org.thoughtcrime.securesms.groups.GroupManager.GroupActionResult; -import org.thoughtcrime.securesms.logging.Log; -import org.thoughtcrime.securesms.loki.fragments.ContactSelectionListFragment; -import org.thoughtcrime.securesms.loki.fragments.ContactSelectionListLoader.DisplayMode; -import org.thoughtcrime.securesms.mms.GlideApp; -import org.thoughtcrime.securesms.recipients.Recipient; -import org.thoughtcrime.securesms.util.BitmapUtil; -import org.thoughtcrime.securesms.util.DynamicLanguage; -import org.thoughtcrime.securesms.util.DynamicTheme; -import org.thoughtcrime.securesms.util.SelectedRecipientsAdapter; -import org.thoughtcrime.securesms.util.SelectedRecipientsAdapter.OnRecipientDeletedListener; -import org.thoughtcrime.securesms.util.TextSecurePreferences; -import org.thoughtcrime.securesms.util.ViewUtil; -import org.thoughtcrime.securesms.util.task.ProgressDialogAsyncTask; -import org.session.libsignal.libsignal.util.guava.Optional; -import org.session.libsignal.service.api.util.InvalidNumberException; - -import java.io.File; -import java.util.Collection; -import java.util.Collections; -import java.util.HashSet; -import java.util.LinkedList; -import java.util.List; -import java.util.Set; - -import network.loki.messenger.R; - -/** - * Activity to create and update groups - * - * @author Jake McGinty - */ -public class GroupCreateActivity extends PassphraseRequiredActionBarActivity - implements OnRecipientDeletedListener, - RecipientsPanelChangedListener -{ - - private final static String TAG = GroupCreateActivity.class.getSimpleName(); - - public static final String GROUP_ADDRESS_EXTRA = "group_recipient"; - public static final String GROUP_THREAD_EXTRA = "group_thread"; - - private final DynamicTheme dynamicTheme = new DynamicTheme(); - private final DynamicLanguage dynamicLanguage = new DynamicLanguage(); - - private static final int PICK_CONTACT = 1; - public static final int AVATAR_SIZE = 210; - - private EditText groupName; - private ListView lv; - private ImageView avatar; - private TextView creatingText; - private Bitmap avatarBmp; - - @NonNull private Optional groupToUpdate = Optional.absent(); - - @Override - protected void onPreCreate() { - dynamicTheme.onCreate(this); - dynamicLanguage.onCreate(this); - } - - @Override - protected void onCreate(Bundle state, boolean ready) { - setContentView(R.layout.group_create_activity); - //noinspection ConstantConditions - getSupportActionBar().setDisplayHomeAsUpEnabled(true); - initializeResources(); - initializeExistingGroup(); - } - - @Override - public void onResume() { - super.onResume(); - dynamicTheme.onResume(this); - dynamicLanguage.onResume(this); - updateViewState(); - } - - private boolean isSignalGroup() { - return TextSecurePreferences.isPushRegistered(this) && !getAdapter().hasNonPushMembers(); - } - - private void disableSignalGroupViews(int reasonResId) { - View pushDisabled = findViewById(R.id.push_disabled); - pushDisabled.setVisibility(View.VISIBLE); - ((TextView) findViewById(R.id.push_disabled_reason)).setText(reasonResId); - avatar.setEnabled(false); - groupName.setEnabled(false); - } - - private void enableSignalGroupViews() { - findViewById(R.id.push_disabled).setVisibility(View.GONE); - avatar.setEnabled(true); - groupName.setEnabled(true); - } - - @SuppressWarnings("ConstantConditions") - private void updateViewState() { - if (!TextSecurePreferences.isPushRegistered(this)) { - disableSignalGroupViews(R.string.GroupCreateActivity_youre_not_registered_for_signal); - getSupportActionBar().setTitle(R.string.GroupCreateActivity_actionbar_mms_title); - } else if (getAdapter().hasNonPushMembers()) { - disableSignalGroupViews(R.string.GroupCreateActivity_contacts_dont_support_push); - getSupportActionBar().setTitle(R.string.GroupCreateActivity_actionbar_mms_title); - } else { - enableSignalGroupViews(); - getSupportActionBar().setTitle(groupToUpdate.isPresent() - ? R.string.GroupCreateActivity_actionbar_edit_title - : R.string.GroupCreateActivity_actionbar_title); - } - } - - private static boolean isActiveInDirectory(Recipient recipient) { - return recipient.resolve().getRegistered() == RecipientDatabase.RegisteredState.REGISTERED; - } - - private void addSelectedContacts(@NonNull Recipient... recipients) { - new AddMembersTask(this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, recipients); - } - - private void addSelectedContacts(@NonNull Collection recipients) { - addSelectedContacts(recipients.toArray(new Recipient[recipients.size()])); - } - - private void initializeResources() { - RecipientsEditor recipientsEditor = ViewUtil.findById(this, R.id.recipients_text); - PushRecipientsPanel recipientsPanel = ViewUtil.findById(this, R.id.recipients); - lv = ViewUtil.findById(this, R.id.selected_contacts_list); - avatar = ViewUtil.findById(this, R.id.avatar); - groupName = ViewUtil.findById(this, R.id.group_name); - creatingText = ViewUtil.findById(this, R.id.creating_group_text); - SelectedRecipientsAdapter adapter = new SelectedRecipientsAdapter(this); - adapter.setOnRecipientDeletedListener(this); - lv.setAdapter(adapter); - recipientsEditor.setHint(R.string.recipients_panel__add_members); - recipientsPanel.setPanelChangeListener(this); - findViewById(R.id.contacts_button).setOnClickListener(new AddRecipientButtonListener()); - avatar.setImageDrawable(new ResourceContactPhoto(R.drawable.ic_group_white_24dp).asDrawable(this, ContactColors.UNKNOWN_COLOR.toConversationColor(this))); - avatar.setOnClickListener(view -> AvatarSelection.startAvatarSelection(this, false, false)); - } - - private void initializeExistingGroup() { - final Address groupAddress = getIntent().getParcelableExtra(GROUP_ADDRESS_EXTRA); - - if (groupAddress != null) { - new FillExistingGroupInfoAsyncTask(this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, groupAddress.toGroupString()); - } - } - - @Override - public boolean onPrepareOptionsMenu(Menu menu) { - MenuInflater inflater = this.getMenuInflater(); - menu.clear(); - - inflater.inflate(R.menu.menu_apply, menu); - super.onPrepareOptionsMenu(menu); - return true; - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - super.onOptionsItemSelected(item); - switch (item.getItemId()) { - case android.R.id.home: - finish(); - return true; - case R.id.applyButton: - if (groupToUpdate.isPresent()) handleGroupUpdate(); - else handleGroupCreate(); - return true; - } - - return false; - } - - @Override - public void onRecipientDeleted(Recipient recipient) { - getAdapter().remove(recipient); - updateViewState(); - } - - @Override - public void onRecipientsPanelUpdate(List recipients) { - if (recipients != null && !recipients.isEmpty()) addSelectedContacts(recipients); - } - - private void handleGroupCreate() { - if (getAdapter().getCount() < 1) { - Log.i(TAG, getString(R.string.GroupCreateActivity_contacts_no_members)); - Toast.makeText(getApplicationContext(), R.string.GroupCreateActivity_contacts_no_members, Toast.LENGTH_SHORT).show(); - return; - } - if (isSignalGroup()) { - Recipient local = Recipient.from(this, Address.fromSerialized(TextSecurePreferences.getLocalNumber(this)), false); - new CreateSignalGroupTask(this, avatarBmp, getGroupName(), getAdapter().getRecipients(), Collections.singleton(local)).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); - } else { - new CreateMmsGroupTask(this, getAdapter().getRecipients()).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); - } - } - - private void handleGroupUpdate() { - new UpdateSignalGroupTask(this, groupToUpdate.get().id, avatarBmp, - getGroupName(), getAdapter().getRecipients(), groupToUpdate.get().admins).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); - } - - private void handleOpenConversation(long threadId, Recipient recipient) { - Intent intent = new Intent(this, ConversationActivity.class); - intent.putExtra(ConversationActivity.THREAD_ID_EXTRA, threadId); - intent.putExtra(ConversationActivity.DISTRIBUTION_TYPE_EXTRA, ThreadDatabase.DistributionTypes.DEFAULT); - intent.putExtra(ConversationActivity.ADDRESS_EXTRA, recipient.getAddress()); - startActivity(intent); - finish(); - } - - private SelectedRecipientsAdapter getAdapter() { - return (SelectedRecipientsAdapter)lv.getAdapter(); - } - - private @Nullable String getGroupName() { - return groupName.getText() != null ? groupName.getText().toString() : null; - } - - @Override - public void onActivityResult(int reqCode, int resultCode, final Intent data) { - super.onActivityResult(reqCode, resultCode, data); - Uri outputFile = Uri.fromFile(new File(getCacheDir(), "cropped")); - - if (data == null || resultCode != Activity.RESULT_OK) - return; - - switch (reqCode) { - case PICK_CONTACT: - List selected = data.getStringArrayListExtra("contacts"); - - for (String contact : selected) { - Address address = Address.fromExternal(this, contact); - Recipient recipient = Recipient.from(this, address, false); - - addSelectedContacts(recipient); - } - break; - - case AvatarSelection.REQUEST_CODE_AVATAR: - AvatarSelection.circularCropImage(this, data.getData(), outputFile, R.string.CropImageActivity_group_avatar); - break; - case AvatarSelection.REQUEST_CODE_CROP_IMAGE: - final Uri resultUri = AvatarSelection.getResultUri(data); - GlideApp.with(this) - .asBitmap() - .load(resultUri) - .skipMemoryCache(true) - .diskCacheStrategy(DiskCacheStrategy.NONE) - .centerCrop() - .override(AVATAR_SIZE, AVATAR_SIZE) - .into(new SimpleTarget() { - @Override - public void onResourceReady(@NonNull Bitmap resource, Transition transition) { - setAvatar(resultUri, resource); - } - }); - } - } - - private class AddRecipientButtonListener implements View.OnClickListener { - @Override - public void onClick(View v) { - Intent intent = new Intent(GroupCreateActivity.this, PushContactSelectionActivity.class); - intent.putExtra(ContactSelectionListFragment.DISPLAY_MODE, DisplayMode.FLAG_CONTACTS); - startActivityForResult(intent, PICK_CONTACT); - } - } - - private static class CreateMmsGroupTask extends AsyncTask { - private final GroupCreateActivity activity; - private final Set members; - - public CreateMmsGroupTask(GroupCreateActivity activity, Set members) { - this.activity = activity; - this.members = members; - } - - @Override - protected GroupActionResult doInBackground(Void... avoid) { - List
memberAddresses = new LinkedList<>(); - - for (Recipient recipient : members) { - memberAddresses.add(recipient.getAddress()); - } - Address local = Address.fromSerialized(TextSecurePreferences.getLocalNumber(activity)); - memberAddresses.add(local); - - String groupId = DatabaseFactory.getGroupDatabase(activity).getOrCreateGroupForMembers(memberAddresses, true, Collections.singletonList(local)); - Recipient groupRecipient = Recipient.from(activity, Address.fromSerialized(groupId), true); - long threadId = DatabaseFactory.getThreadDatabase(activity).getOrCreateThreadIdFor(groupRecipient, ThreadDatabase.DistributionTypes.DEFAULT); - - return new GroupActionResult(groupRecipient, threadId); - } - - @Override - protected void onPostExecute(GroupActionResult result) { - activity.handleOpenConversation(result.getThreadId(), result.getGroupRecipient()); - } - - @Override - protected void onProgressUpdate(Void... values) { - super.onProgressUpdate(values); - } - } - - private abstract static class SignalGroupTask extends AsyncTask> { - - protected GroupCreateActivity activity; - protected Bitmap avatar; - protected Set members; - protected String name; - protected Set admins; - - public SignalGroupTask(GroupCreateActivity activity, - Bitmap avatar, - String name, - Set members, - Set admins) - { - this.activity = activity; - this.avatar = avatar; - this.name = name; - this.members = members; - this.admins = admins; - } - - @Override - protected void onPreExecute() { - activity.findViewById(R.id.group_details_layout).setVisibility(View.GONE); - activity.findViewById(R.id.creating_group_layout).setVisibility(View.VISIBLE); - activity.findViewById(R.id.applyButton).setVisibility(View.GONE); - final int titleResId = activity.groupToUpdate.isPresent() - ? R.string.GroupCreateActivity_updating_group - : R.string.GroupCreateActivity_creating_group; - activity.creatingText.setText(activity.getString(titleResId, activity.getGroupName())); - } - - @Override - protected void onPostExecute(Optional groupActionResultOptional) { - if (activity.isFinishing()) return; - activity.findViewById(R.id.group_details_layout).setVisibility(View.VISIBLE); - activity.findViewById(R.id.creating_group_layout).setVisibility(View.GONE); - activity.findViewById(R.id.applyButton).setVisibility(View.VISIBLE); - } - } - - private static class CreateSignalGroupTask extends SignalGroupTask { - public CreateSignalGroupTask(GroupCreateActivity activity, Bitmap avatar, String name, Set members, Set admins) { - super(activity, avatar, name, members, admins); - } - - @Override - protected Optional doInBackground(Void... aVoid) { - return Optional.of(GroupManager.createGroup(activity, members, avatar, name, false, admins)); - } - - @Override - protected void onPostExecute(Optional result) { - if (result.isPresent() && result.get().getThreadId() > -1) { - if (!activity.isFinishing()) { - activity.handleOpenConversation(result.get().getThreadId(), result.get().getGroupRecipient()); - } - } else { - super.onPostExecute(result); - Toast.makeText(activity.getApplicationContext(), - R.string.GroupCreateActivity_contacts_invalid_number, Toast.LENGTH_LONG).show(); - } - } - } - - private static class UpdateSignalGroupTask extends SignalGroupTask { - private String groupId; - - public UpdateSignalGroupTask(GroupCreateActivity activity, String groupId, - Bitmap avatar, String name, Set members, Set admins) - { - super(activity, avatar, name, members, admins); - this.groupId = groupId; - } - - @Override - protected Optional doInBackground(Void... aVoid) { - try { - return Optional.of(GroupManager.updateGroup(activity, groupId, members, avatar, name, admins)); - } catch (InvalidNumberException e) { - return Optional.absent(); - } - } - - @Override - protected void onPostExecute(Optional result) { - if (result.isPresent() && result.get().getThreadId() > -1) { - if (!activity.isFinishing()) { - Intent intent = activity.getIntent(); - intent.putExtra(GROUP_THREAD_EXTRA, result.get().getThreadId()); - intent.putExtra(GROUP_ADDRESS_EXTRA, result.get().getGroupRecipient().getAddress()); - activity.setResult(RESULT_OK, intent); - activity.finish(); - } - } else { - super.onPostExecute(result); - Toast.makeText(activity.getApplicationContext(), - R.string.GroupCreateActivity_contacts_invalid_number, Toast.LENGTH_LONG).show(); - } - } - } - - private static class AddMembersTask extends AsyncTask> { - static class Result { - Optional recipient; - boolean isPush; - String reason; - - public Result(@Nullable Recipient recipient, boolean isPush, @Nullable String reason) { - this.recipient = Optional.fromNullable(recipient); - this.isPush = isPush; - this.reason = reason; - } - } - - private GroupCreateActivity activity; - private boolean failIfNotPush; - - public AddMembersTask(@NonNull GroupCreateActivity activity) { - this.activity = activity; - this.failIfNotPush = activity.groupToUpdate.isPresent(); - } - - @Override - protected List doInBackground(Recipient... recipients) { - final List results = new LinkedList<>(); - - for (Recipient recipient : recipients) { - boolean isPush = isActiveInDirectory(recipient); - - if (failIfNotPush && !isPush && !recipient.getAddress().isPhone()) { - results.add(new Result(null, false, activity.getString(R.string.GroupCreateActivity_cannot_add_non_push_to_existing_group, - recipient.toShortString()))); - } else if (TextUtils.equals(TextSecurePreferences.getLocalNumber(activity), recipient.getAddress().serialize())) { - results.add(new Result(null, false, activity.getString(R.string.GroupCreateActivity_youre_already_in_the_group))); - } else { - results.add(new Result(recipient, isPush, null)); - } - } - return results; - } - - @Override - protected void onPostExecute(List results) { - if (activity.isFinishing()) return; - - for (Result result : results) { - if (result.recipient.isPresent()) { - activity.getAdapter().add(result.recipient.get(), result.isPush); - } else { - Toast.makeText(activity, result.reason, Toast.LENGTH_SHORT).show(); - } - } - activity.updateViewState(); - } - } - - private static class FillExistingGroupInfoAsyncTask extends ProgressDialogAsyncTask> { - private GroupCreateActivity activity; - - public FillExistingGroupInfoAsyncTask(GroupCreateActivity activity) { - super(activity, - R.string.GroupCreateActivity_loading_group_details, - R.string.please_wait); - this.activity = activity; - } - - @Override - protected Optional doInBackground(String... groupIds) { - final GroupDatabase db = DatabaseFactory.getGroupDatabase(activity); - final List recipients = db.getGroupMembers(groupIds[0], false); - final Optional group = db.getGroup(groupIds[0]); - final Set existingContacts = new HashSet<>(recipients.size()); - existingContacts.addAll(recipients); - - if (group.isPresent()) { - List
adminList = group.get().getAdmins(); - final Set admins = new HashSet<>(adminList.size()); - for (Address admin : adminList) { - admins.add(Recipient.from(getContext(), admin, false)); - } - return Optional.of(new GroupData(groupIds[0], - existingContacts, - BitmapUtil.fromByteArray(group.get().getAvatar()), - group.get().getAvatar(), - group.get().getTitle(), - admins)); - } else { - return Optional.absent(); - } - } - - @Override - protected void onPostExecute(Optional group) { - super.onPostExecute(group); - - if (group.isPresent() && !activity.isFinishing()) { - activity.groupToUpdate = group; - - activity.groupName.setText(group.get().name); - if (group.get().avatarBmp != null) { - activity.setAvatar(group.get().avatarBytes, group.get().avatarBmp); - } - SelectedRecipientsAdapter adapter = new SelectedRecipientsAdapter(activity, group.get().recipients); - adapter.setOnRecipientDeletedListener(activity); - activity.lv.setAdapter(adapter); - activity.updateViewState(); - } - } - } - - private void setAvatar(T model, Bitmap bitmap) { - avatarBmp = bitmap; - GlideApp.with(this) - .load(model) - .circleCrop() - .skipMemoryCache(true) - .diskCacheStrategy(DiskCacheStrategy.NONE) - .into(avatar); - } - - private static class GroupData { - String id; - Set recipients; - Bitmap avatarBmp; - byte[] avatarBytes; - String name; - Set admins; - - public GroupData(String id, Set recipients, Bitmap avatarBmp, byte[] avatarBytes, String name, Set admins) { - this.id = id; - this.recipients = recipients; - this.avatarBmp = avatarBmp; - this.avatarBytes = avatarBytes; - this.name = name; - this.admins = admins; - } - } -} diff --git a/app/src/main/java/org/thoughtcrime/securesms/PromptMmsActivity.java b/app/src/main/java/org/thoughtcrime/securesms/PromptMmsActivity.java deleted file mode 100644 index cd1edabdb..000000000 --- a/app/src/main/java/org/thoughtcrime/securesms/PromptMmsActivity.java +++ /dev/null @@ -1,33 +0,0 @@ -package org.thoughtcrime.securesms; - -import android.content.Intent; -import android.os.Bundle; -import android.widget.Button; - -import org.thoughtcrime.securesms.preferences.MmsPreferencesActivity; - -import network.loki.messenger.R; - -public class PromptMmsActivity extends PassphraseRequiredActionBarActivity { - - @Override - protected void onCreate(Bundle bundle, boolean ready) { - setContentView(R.layout.prompt_apn_activity); - initializeResources(); - } - - private void initializeResources() { - Button okButton = findViewById(R.id.ok_button); - Button cancelButton = findViewById(R.id.cancel_button); - - okButton.setOnClickListener(v -> { - Intent intent = new Intent(PromptMmsActivity.this, MmsPreferencesActivity.class); - intent.putExtras(PromptMmsActivity.this.getIntent().getExtras()); - startActivity(intent); - finish(); - }); - - cancelButton.setOnClickListener(v -> finish()); - } - -} diff --git a/app/src/main/java/org/thoughtcrime/securesms/PushContactSelectionActivity.java b/app/src/main/java/org/thoughtcrime/securesms/PushContactSelectionActivity.java deleted file mode 100644 index 9dff2a69c..000000000 --- a/app/src/main/java/org/thoughtcrime/securesms/PushContactSelectionActivity.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright (C) 2011 Whisper Systems - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.thoughtcrime.securesms; - -import android.content.Intent; -import android.os.Bundle; - -import org.thoughtcrime.securesms.loki.fragments.ContactSelectionListFragment; - -import java.util.ArrayList; -import java.util.List; - -import network.loki.messenger.R; - -/** - * Activity container for selecting a list of contacts. - * - * @author Moxie Marlinspike - * - */ -public class PushContactSelectionActivity extends ContactSelectionActivity { - - @SuppressWarnings("unused") - private final static String TAG = PushContactSelectionActivity.class.getSimpleName(); - - @Override - protected void onCreate(Bundle icicle, boolean ready) { - getIntent().putExtra(ContactSelectionListFragment.MULTI_SELECT, true); - super.onCreate(icicle, ready); - - getToolbar().setNavigationIcon(R.drawable.ic_check_white_24dp); - getToolbar().setNavigationOnClickListener(v -> { - Intent resultIntent = getIntent(); - List selectedContacts = contactsFragment.getSelectedContacts(); - - if (selectedContacts != null) { - resultIntent.putStringArrayListExtra("contacts", new ArrayList<>(selectedContacts)); - } - - setResult(RESULT_OK, resultIntent); - finish(); - }); - } -} diff --git a/app/src/main/java/org/thoughtcrime/securesms/RecipientPreferenceActivity.java b/app/src/main/java/org/thoughtcrime/securesms/RecipientPreferenceActivity.java index 6da037275..262987353 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/RecipientPreferenceActivity.java +++ b/app/src/main/java/org/thoughtcrime/securesms/RecipientPreferenceActivity.java @@ -1,7 +1,6 @@ package org.thoughtcrime.securesms; import android.annotation.SuppressLint; -import android.content.ActivityNotFoundException; import android.content.Context; import android.content.Intent; import android.database.Cursor; @@ -13,19 +12,6 @@ import android.os.AsyncTask; import android.os.Build; import android.os.Bundle; import android.provider.Settings; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import com.google.android.material.appbar.CollapsingToolbarLayout; -import androidx.fragment.app.Fragment; -import androidx.loader.app.LoaderManager; -import androidx.loader.content.Loader; -import androidx.core.view.ViewCompat; -import androidx.appcompat.app.AlertDialog; -import androidx.preference.CheckBoxPreference; -import androidx.preference.ListPreference; -import androidx.preference.Preference; -import androidx.preference.PreferenceCategory; -import androidx.appcompat.widget.Toolbar; import android.telephony.PhoneNumberUtils; import android.util.Pair; import android.view.MenuItem; @@ -35,8 +21,23 @@ import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; -import com.bumptech.glide.load.engine.DiskCacheStrategy; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.appcompat.app.AlertDialog; +import androidx.appcompat.widget.Toolbar; +import androidx.core.view.ViewCompat; +import androidx.fragment.app.Fragment; +import androidx.loader.app.LoaderManager; +import androidx.loader.content.Loader; +import androidx.preference.CheckBoxPreference; +import androidx.preference.ListPreference; +import androidx.preference.Preference; +import androidx.preference.PreferenceCategory; +import com.bumptech.glide.load.engine.DiskCacheStrategy; +import com.google.android.material.appbar.CollapsingToolbarLayout; + +import org.session.libsignal.libsignal.util.guava.Optional; import org.thoughtcrime.securesms.color.MaterialColor; import org.thoughtcrime.securesms.color.MaterialColors; import org.thoughtcrime.securesms.components.SwitchPreferenceCompat; @@ -65,12 +66,9 @@ import org.thoughtcrime.securesms.notifications.NotificationChannels; import org.thoughtcrime.securesms.permissions.Permissions; import org.thoughtcrime.securesms.preferences.CorrectedPreferenceFragment; import org.thoughtcrime.securesms.preferences.widgets.ColorPickerPreference; -import org.thoughtcrime.securesms.preferences.widgets.ContactPreference; import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.recipients.RecipientModifiedListener; import org.thoughtcrime.securesms.sms.MessageSender; -import org.thoughtcrime.securesms.util.CommunicationActions; -import org.thoughtcrime.securesms.util.Dialogs; import org.thoughtcrime.securesms.util.DynamicLanguage; import org.thoughtcrime.securesms.util.DynamicNoActionBarTheme; import org.thoughtcrime.securesms.util.DynamicTheme; @@ -80,7 +78,6 @@ import org.thoughtcrime.securesms.util.TextSecurePreferences; import org.thoughtcrime.securesms.util.Util; import org.thoughtcrime.securesms.util.ViewUtil; import org.thoughtcrime.securesms.util.concurrent.ListenableFuture; -import org.session.libsignal.libsignal.util.guava.Optional; import java.util.concurrent.ExecutionException; @@ -92,17 +89,12 @@ public class RecipientPreferenceActivity extends PassphraseRequiredActionBarActi private static final String TAG = RecipientPreferenceActivity.class.getSimpleName(); public static final String ADDRESS_EXTRA = "recipient_address"; - // public static final String CAN_HAVE_SAFETY_NUMBER_EXTRA = "can_have_safety_number"; private static final String PREFERENCE_MUTED = "pref_key_recipient_mute"; private static final String PREFERENCE_MESSAGE_TONE = "pref_key_recipient_ringtone"; - // private static final String PREFERENCE_CALL_TONE = "pref_key_recipient_call_ringtone"; private static final String PREFERENCE_MESSAGE_VIBRATE = "pref_key_recipient_vibrate"; - // private static final String PREFERENCE_CALL_VIBRATE = "pref_key_recipient_call_vibrate"; - // private static final String PREFERENCE_BLOCK = "pref_key_recipient_block"; private static final String PREFERENCE_COLOR = "pref_key_recipient_color"; private static final String PREFERENCE_IDENTITY = "pref_key_recipient_identity"; - // private static final String PREFERENCE_ABOUT = "pref_key_number"; private static final String PREFERENCE_CUSTOM_NOTIFICATIONS = "pref_key_recipient_custom_notifications"; private final DynamicTheme dynamicTheme = new DynamicNoActionBarTheme(); @@ -262,8 +254,9 @@ public class RecipientPreferenceActivity extends PassphraseRequiredActionBarActi extends CorrectedPreferenceFragment implements RecipientModifiedListener { + private static final int REQ_CODE_CHANGE_MESSAGE_NOTIFICATION_TONE = 9920; + private Recipient recipient; - private boolean canHaveSafetyNumber; @Override public void onCreate(Bundle icicle) { @@ -272,11 +265,6 @@ public class RecipientPreferenceActivity extends PassphraseRequiredActionBarActi initializeRecipients(); - /* - this.canHaveSafetyNumber = getActivity().getIntent() - .getBooleanExtra(RecipientPreferenceActivity.CAN_HAVE_SAFETY_NUMBER_EXTRA, false); - */ - Preference customNotificationsPref = this.findPreference(PREFERENCE_CUSTOM_NOTIFICATIONS); if (NotificationChannels.supported()) { @@ -304,33 +292,15 @@ public class RecipientPreferenceActivity extends PassphraseRequiredActionBarActi } this.findPreference(PREFERENCE_MESSAGE_TONE) - .setOnPreferenceChangeListener(new RingtoneChangeListener(false)); + .setOnPreferenceChangeListener(new RingtoneChangeListener()); this.findPreference(PREFERENCE_MESSAGE_TONE) - .setOnPreferenceClickListener(new RingtoneClickedListener(false)); - /* - this.findPreference(PREFERENCE_CALL_TONE) - .setOnPreferenceChangeListener(new RingtoneChangeListener(true)); - this.findPreference(PREFERENCE_CALL_TONE) - .setOnPreferenceClickListener(new RingtoneClickedListener(true)); - */ + .setOnPreferenceClickListener(new RingtoneClickedListener()); this.findPreference(PREFERENCE_MESSAGE_VIBRATE) - .setOnPreferenceChangeListener(new VibrateChangeListener(false)); - /* - this.findPreference(PREFERENCE_CALL_VIBRATE) - .setOnPreferenceChangeListener(new VibrateChangeListener(true)); - */ + .setOnPreferenceChangeListener(new VibrateChangeListener()); this.findPreference(PREFERENCE_MUTED) .setOnPreferenceClickListener(new MuteClickedListener()); - /* - this.findPreference(PREFERENCE_BLOCK) - .setOnPreferenceClickListener(new BlockClickedListener()); - */ this.findPreference(PREFERENCE_COLOR) .setOnPreferenceChangeListener(new ColorChangeListener()); - /* - ((ContactPreference)this.findPreference(PREFERENCE_ABOUT)) - .setListener(new AboutNumberClickedListener()); - */ } @Override @@ -341,6 +311,7 @@ public class RecipientPreferenceActivity extends PassphraseRequiredActionBarActi @Override public void onRequestPermissionsResult(int requestCode, @NonNull String permissions[], @NonNull int[] grantResults) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults); Permissions.onRequestPermissionsResult(this, requestCode, permissions, grantResults); } @@ -358,14 +329,17 @@ public class RecipientPreferenceActivity extends PassphraseRequiredActionBarActi @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { - if (requestCode == 1 && resultCode == RESULT_OK && data != null) { - Uri uri = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI); + super.onActivityResult(requestCode, resultCode, data); - findPreference(PREFERENCE_MESSAGE_TONE).getOnPreferenceChangeListener().onPreferenceChange(findPreference(PREFERENCE_MESSAGE_TONE), uri); - } else if (requestCode == 2 && resultCode == RESULT_OK && data != null) { - Uri uri = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI); + switch (requestCode) { + case REQ_CODE_CHANGE_MESSAGE_NOTIFICATION_TONE: { + if (resultCode == RESULT_OK && data != null) { + Uri uri = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI); - // findPreference(PREFERENCE_CALL_TONE).getOnPreferenceChangeListener().onPreferenceChange(findPreference(PREFERENCE_CALL_TONE), uri); + findPreference(PREFERENCE_MESSAGE_TONE).getOnPreferenceChangeListener().onPreferenceChange(findPreference(PREFERENCE_MESSAGE_TONE), uri); + } + break; + } } } @@ -378,33 +352,24 @@ public class RecipientPreferenceActivity extends PassphraseRequiredActionBarActi CheckBoxPreference mutePreference = (CheckBoxPreference) this.findPreference(PREFERENCE_MUTED); Preference customPreference = this.findPreference(PREFERENCE_CUSTOM_NOTIFICATIONS); Preference ringtoneMessagePreference = this.findPreference(PREFERENCE_MESSAGE_TONE); - // Preference ringtoneCallPreference = this.findPreference(PREFERENCE_CALL_TONE); ListPreference vibrateMessagePreference = (ListPreference) this.findPreference(PREFERENCE_MESSAGE_VIBRATE); - // ListPreference vibrateCallPreference = (ListPreference) this.findPreference(PREFERENCE_CALL_VIBRATE); ColorPickerPreference colorPreference = (ColorPickerPreference) this.findPreference(PREFERENCE_COLOR); - // Preference blockPreference = this.findPreference(PREFERENCE_BLOCK); Preference identityPreference = this.findPreference(PREFERENCE_IDENTITY); PreferenceCategory callCategory = (PreferenceCategory)this.findPreference("call_settings"); PreferenceCategory aboutCategory = (PreferenceCategory)this.findPreference("about"); PreferenceCategory aboutDivider = (PreferenceCategory)this.findPreference("about_divider"); - // ContactPreference aboutPreference = (ContactPreference)this.findPreference(PREFERENCE_ABOUT); PreferenceCategory privacyCategory = (PreferenceCategory) this.findPreference("privacy_settings"); PreferenceCategory divider = (PreferenceCategory) this.findPreference("divider"); mutePreference.setChecked(recipient.isMuted()); ringtoneMessagePreference.setSummary(ringtoneMessagePreference.isEnabled() ? getRingtoneSummary(getContext(), recipient.getMessageRingtone()) : ""); - // ringtoneCallPreference.setSummary(getRingtoneSummary(getContext(), recipient.getCallRingtone())); Pair vibrateMessageSummary = getVibrateSummary(getContext(), recipient.getMessageVibrate()); - Pair vibrateCallSummary = getVibrateSummary(getContext(), recipient.getCallVibrate()); vibrateMessagePreference.setSummary(vibrateMessagePreference.isEnabled() ? vibrateMessageSummary.first : ""); vibrateMessagePreference.setValueIndex(vibrateMessageSummary.second); - // vibrateCallPreference.setSummary(vibrateCallSummary.first); - // vibrateCallPreference.setValueIndex(vibrateCallSummary.second); - if (recipient.isLocalNumber()) { mutePreference.setVisible(false); customPreference.setVisible(false); @@ -428,26 +393,12 @@ public class RecipientPreferenceActivity extends PassphraseRequiredActionBarActi colorPreference.setColors(MaterialColors.CONVERSATION_PALETTE.asConversationColorArray(getActivity())); colorPreference.setColor(recipient.getColor().toActionBarColor(getActivity())); - /* - aboutPreference.setTitle(formatAddress(recipient.getAddress())); - aboutPreference.setSummary(recipient.getCustomLabel()); - aboutPreference.setSecure(recipient.getRegistered() == RecipientDatabase.RegisteredState.REGISTERED); - */ - - /* - if (recipient.isBlocked()) blockPreference.setTitle(R.string.RecipientPreferenceActivity_unblock); - else blockPreference.setTitle(R.string.RecipientPreferenceActivity_block); - */ - IdentityUtil.getRemoteIdentityKey(getActivity(), recipient).addListener(new ListenableFuture.Listener>() { @Override public void onSuccess(Optional result) { if (result.isPresent()) { if (identityPreference != null) identityPreference.setOnPreferenceClickListener(new IdentityClickedListener(result.get())); if (identityPreference != null) identityPreference.setEnabled(true); - } else if (canHaveSafetyNumber) { - if (identityPreference != null) identityPreference.setSummary(R.string.RecipientPreferenceActivity_available_once_a_message_has_been_sent_or_received); - if (identityPreference != null) identityPreference.setEnabled(false); } else { if (identityPreference != null) getPreferenceScreen().removePreference(identityPreference); } @@ -461,12 +412,6 @@ public class RecipientPreferenceActivity extends PassphraseRequiredActionBarActi } } - private @NonNull String formatAddress(@NonNull Address address) { - if (address.isPhone()) return PhoneNumberUtils.formatNumber(address.toPhoneString()); - else if (address.isEmail()) return address.toEmailString(); - else return ""; - } - private @NonNull String getRingtoneSummary(@NonNull Context context, @Nullable Uri ringtone) { if (ringtone == null) { return context.getString(R.string.preferences__default); @@ -504,22 +449,12 @@ public class RecipientPreferenceActivity extends PassphraseRequiredActionBarActi private class RingtoneChangeListener implements Preference.OnPreferenceChangeListener { - private final boolean calls; - - RingtoneChangeListener(boolean calls) { - this.calls = calls; - } - @Override public boolean onPreferenceChange(Preference preference, Object newValue) { final Context context = preference.getContext(); - Uri value = (Uri)newValue; - - Uri defaultValue; - - if (calls) defaultValue = TextSecurePreferences.getCallNotificationRingtone(context); - else defaultValue = TextSecurePreferences.getNotificationRingtone(context); + Uri value = (Uri)newValue; + Uri defaultValue = TextSecurePreferences.getNotificationRingtone(context); if (defaultValue.equals(value)) value = null; else if (value == null) value = Uri.EMPTY; @@ -528,12 +463,8 @@ public class RecipientPreferenceActivity extends PassphraseRequiredActionBarActi new AsyncTask() { @Override protected Void doInBackground(Uri... params) { - if (calls) { - DatabaseFactory.getRecipientDatabase(context).setCallRingtone(recipient, params[0]); - } else { - DatabaseFactory.getRecipientDatabase(context).setMessageRingtone(recipient, params[0]); - NotificationChannels.updateMessageRingtone(context, recipient, params[0]); - } + DatabaseFactory.getRecipientDatabase(context).setMessageRingtone(recipient, params[0]); + NotificationChannels.updateMessageRingtone(context, recipient, params[0]); return null; } }.executeOnExecutor(AsyncTask.SERIAL_EXECUTOR, value); @@ -544,24 +475,10 @@ public class RecipientPreferenceActivity extends PassphraseRequiredActionBarActi private class RingtoneClickedListener implements Preference.OnPreferenceClickListener { - private final boolean calls; - - RingtoneClickedListener(boolean calls) { - this.calls = calls; - } - @Override public boolean onPreferenceClick(Preference preference) { - Uri current; - Uri defaultUri; - - if (calls) { - current = recipient.getCallRingtone(); - defaultUri = TextSecurePreferences.getCallNotificationRingtone(getContext()); - } else { - current = recipient.getMessageRingtone(); - defaultUri = TextSecurePreferences.getNotificationRingtone(getContext()); - } + Uri current = recipient.getMessageRingtone(); + Uri defaultUri = TextSecurePreferences.getNotificationRingtone(getContext()); if (current == null) current = Settings.System.DEFAULT_NOTIFICATION_URI; else if (current.toString().isEmpty()) current = null; @@ -570,10 +487,10 @@ public class RecipientPreferenceActivity extends PassphraseRequiredActionBarActi intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_SILENT, true); intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_DEFAULT, true); intent.putExtra(RingtoneManager.EXTRA_RINGTONE_DEFAULT_URI, defaultUri); - intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, calls ? RingtoneManager.TYPE_RINGTONE : RingtoneManager.TYPE_NOTIFICATION); + intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_NOTIFICATION); intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, current); - startActivityForResult(intent, calls ? 2 : 1); + startActivityForResult(intent, REQ_CODE_CHANGE_MESSAGE_NOTIFICATION_TONE); return true; } @@ -581,12 +498,6 @@ public class RecipientPreferenceActivity extends PassphraseRequiredActionBarActi private class VibrateChangeListener implements Preference.OnPreferenceChangeListener { - private final boolean call; - - VibrateChangeListener(boolean call) { - this.call = call; - } - @Override public boolean onPreferenceChange(Preference preference, Object newValue) { int value = Integer.parseInt((String) newValue); @@ -596,13 +507,8 @@ public class RecipientPreferenceActivity extends PassphraseRequiredActionBarActi new AsyncTask() { @Override protected Void doInBackground(Void... params) { - if (call) { - DatabaseFactory.getRecipientDatabase(context).setCallVibrate(recipient, vibrateState); - } - else { - DatabaseFactory.getRecipientDatabase(context).setMessageVibrate(recipient, vibrateState); - NotificationChannels.updateMessageVibrate(context, recipient, vibrateState); - } + DatabaseFactory.getRecipientDatabase(context).setMessageVibrate(recipient, vibrateState); + NotificationChannels.updateMessageVibrate(context, recipient, vibrateState); return null; } }.executeOnExecutor(AsyncTask.SERIAL_EXECUTOR); @@ -698,106 +604,6 @@ public class RecipientPreferenceActivity extends PassphraseRequiredActionBarActi } } - private class BlockClickedListener implements Preference.OnPreferenceClickListener { - @Override - public boolean onPreferenceClick(Preference preference) { - if (recipient.isBlocked()) handleUnblock(preference.getContext()); - else handleBlock(preference.getContext()); - - return true; - } - - private void handleBlock(@NonNull final Context context) { - new AsyncTask>() { - - @Override - protected Pair doInBackground(Void... voids) { - int titleRes = R.string.RecipientPreferenceActivity_block_this_contact_question; - int bodyRes = R.string.RecipientPreferenceActivity_you_will_no_longer_receive_messages_and_calls_from_this_contact; - - if (recipient.isGroupRecipient()) { - bodyRes = R.string.RecipientPreferenceActivity_block_and_leave_group_description; - - if (recipient.isGroupRecipient() && DatabaseFactory.getGroupDatabase(context).isActive(recipient.getAddress().toGroupString())) { - titleRes = R.string.RecipientPreferenceActivity_block_and_leave_group; - } else { - titleRes = R.string.RecipientPreferenceActivity_block_group; - } - } - - return new Pair<>(titleRes, bodyRes); - } - - @Override - protected void onPostExecute(Pair titleAndBody) { - new AlertDialog.Builder(context) - .setTitle(titleAndBody.first) - .setMessage(titleAndBody.second) - .setCancelable(true) - .setNegativeButton(android.R.string.cancel, null) - .setPositiveButton(R.string.RecipientPreferenceActivity_block, (dialog, which) -> { - setBlocked(context, recipient, true); - }).show(); - } - }.execute(); - } - - private void handleUnblock(@NonNull Context context) { - int titleRes = R.string.RecipientPreferenceActivity_unblock_this_contact_question; - int bodyRes = R.string.RecipientPreferenceActivity_you_will_once_again_be_able_to_receive_messages_and_calls_from_this_contact; - - if (recipient.isGroupRecipient()) { - titleRes = R.string.RecipientPreferenceActivity_unblock_this_group_question; - bodyRes = R.string.RecipientPreferenceActivity_unblock_this_group_description; - } - - new AlertDialog.Builder(context) - .setTitle(titleRes) - .setMessage(bodyRes) - .setCancelable(true) - .setNegativeButton(android.R.string.cancel, null) - .setPositiveButton(R.string.RecipientPreferenceActivity_unblock, (dialog, which) -> setBlocked(context, recipient, false)).show(); - } - - private void setBlocked(@NonNull final Context context, final Recipient recipient, final boolean blocked) { - new AsyncTask() { - @Override - protected Void doInBackground(Void... params) { - DatabaseFactory.getRecipientDatabase(context) - .setBlocked(recipient, blocked); - - if (recipient.isGroupRecipient() && DatabaseFactory.getGroupDatabase(context).isActive(recipient.getAddress().toGroupString())) { - long threadId = DatabaseFactory.getThreadDatabase(context).getOrCreateThreadIdFor(recipient); - Optional leaveMessage = GroupUtil.createGroupLeaveMessage(context, recipient); - - if (threadId != -1 && leaveMessage.isPresent()) { - MessageSender.send(context, leaveMessage.get(), threadId, false, null); - - GroupDatabase groupDatabase = DatabaseFactory.getGroupDatabase(context); - String groupId = recipient.getAddress().toGroupString(); - groupDatabase.setActive(groupId, false); - groupDatabase.removeMember(groupId, Address.fromSerialized(TextSecurePreferences.getLocalNumber(context))); - } else { - Log.w(TAG, "Failed to leave group. Can't block."); - Toast.makeText(context, R.string.RecipientPreferenceActivity_error_leaving_group, Toast.LENGTH_LONG).show(); - } - } - - if (blocked && (recipient.resolve().isSystemContact() || recipient.resolve().isProfileSharing())) { - ApplicationContext.getInstance(context) - .getJobManager() - .add(new RotateProfileKeyJob()); - } - - ApplicationContext.getInstance(context) - .getJobManager() - .add(new MultiDeviceBlockedUpdateJob()); - return null; - } - }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); - } - } - private class CustomNotificationsChangedListener implements Preference.OnPreferenceChangeListener { @Override diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/ContactFilterToolbar.java b/app/src/main/java/org/thoughtcrime/securesms/components/ContactFilterToolbar.java deleted file mode 100644 index 8ae8e555f..000000000 --- a/app/src/main/java/org/thoughtcrime/securesms/components/ContactFilterToolbar.java +++ /dev/null @@ -1,159 +0,0 @@ -package org.thoughtcrime.securesms.components; - -import android.content.Context; -import android.graphics.Rect; -import androidx.appcompat.widget.Toolbar; -import android.text.Editable; -import android.text.InputType; -import android.text.TextWatcher; -import android.util.AttributeSet; -import android.view.TouchDelegate; -import android.view.View; -import android.widget.EditText; -import android.widget.ImageView; -import android.widget.LinearLayout; - -import network.loki.messenger.R; -import org.thoughtcrime.securesms.util.ViewUtil; - -public class ContactFilterToolbar extends Toolbar { - private OnFilterChangedListener listener; - - private EditText searchText; - private AnimatingToggle toggle; -// private ImageView keyboardToggle; -// private ImageView dialpadToggle; - private ImageView clearToggle; - private LinearLayout toggleContainer; - - public ContactFilterToolbar(Context context) { - this(context, null); - } - - public ContactFilterToolbar(Context context, AttributeSet attrs) { - this(context, attrs, R.attr.toolbarStyle); - } - - public ContactFilterToolbar(Context context, AttributeSet attrs, int defStyleAttr) { - super(context, attrs, defStyleAttr); - inflate(context, R.layout.contact_filter_toolbar, this); - - this.searchText = ViewUtil.findById(this, R.id.search_view); - this.toggle = ViewUtil.findById(this, R.id.button_toggle); -// this.keyboardToggle = ViewUtil.findById(this, R.id.search_keyboard); -// this.dialpadToggle = ViewUtil.findById(this, R.id.search_dialpad); - this.clearToggle = ViewUtil.findById(this, R.id.search_clear); - this.toggleContainer = ViewUtil.findById(this, R.id.toggle_container); - -// this.keyboardToggle.setOnClickListener(new View.OnClickListener() { -// @Override -// public void onClick(View v) { -// searchText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PERSON_NAME); -// ServiceUtil.getInputMethodManager(getContext()).showSoftInput(searchText, 0); -// displayTogglingView(dialpadToggle); -// } -// }); - -// this.dialpadToggle.setOnClickListener(new View.OnClickListener() { -// @Override -// public void onClick(View v) { -// searchText.setInputType(InputType.TYPE_CLASS_PHONE); -// ServiceUtil.getInputMethodManager(getContext()).showSoftInput(searchText, 0); -// displayTogglingView(keyboardToggle); -// } -// }); - - this.clearToggle.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - searchText.setText(""); - -// if (SearchUtil.isTextInput(searchText)) displayTogglingView(dialpadToggle); -// else displayTogglingView(keyboardToggle); - } - }); - - this.searchText.addTextChangedListener(new TextWatcher() { - @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { - - } - - @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { - - } - - @Override - public void afterTextChanged(Editable s) { - if (!SearchUtil.isEmpty(searchText)) displayTogglingView(clearToggle); - else displayTogglingView(null); -// else if (SearchUtil.isTextInput(searchText)) displayTogglingView(dialpadToggle); -// else if (SearchUtil.isPhoneInput(searchText)) displayTogglingView(keyboardToggle); - notifyListener(); - } - }); - - setLogo(null); - setContentInsetStartWithNavigation(0); - displayTogglingView(null); -// expandTapArea(toggleContainer, dialpadToggle); - } - - public void clear() { - searchText.setText(""); - notifyListener(); - } - - public void setOnFilterChangedListener(OnFilterChangedListener listener) { - this.listener = listener; - } - - private void notifyListener() { - if (listener != null) listener.onFilterChanged(searchText.getText().toString()); - } - - private void displayTogglingView(View view) { - toggle.display(view); - if (view != null) { - expandTapArea(toggleContainer, view); - } - } - - private void expandTapArea(final View container, final View child) { - final int padding = getResources().getDimensionPixelSize(R.dimen.contact_selection_actions_tap_area); - - container.post(new Runnable() { - @Override - public void run() { - Rect rect = new Rect(); - child.getHitRect(rect); - - rect.top -= padding; - rect.left -= padding; - rect.right += padding; - rect.bottom += padding; - - container.setTouchDelegate(new TouchDelegate(rect, child)); - } - }); - } - - private static class SearchUtil { - static boolean isTextInput(EditText editText) { - return (editText.getInputType() & InputType.TYPE_MASK_CLASS) == InputType.TYPE_CLASS_TEXT; - } - - static boolean isPhoneInput(EditText editText) { - return (editText.getInputType() & InputType.TYPE_MASK_CLASS) == InputType.TYPE_CLASS_PHONE; - } - - public static boolean isEmpty(EditText editText) { - return editText.getText().length() <= 0; - } - } - - public interface OnFilterChangedListener { - void onFilterChanged(String filter); - } -} diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationActivity.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationActivity.java index ed62cbc9b..d9b22ced3 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationActivity.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationActivity.java @@ -85,12 +85,10 @@ import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; import org.thoughtcrime.securesms.ApplicationContext; import org.thoughtcrime.securesms.ExpirationDialog; -import org.thoughtcrime.securesms.GroupCreateActivity; import org.thoughtcrime.securesms.GroupMembersDialog; import org.thoughtcrime.securesms.MediaOverviewActivity; import org.thoughtcrime.securesms.MuteDialog; import org.thoughtcrime.securesms.PassphraseRequiredActionBarActivity; -import org.thoughtcrime.securesms.PromptMmsActivity; import org.thoughtcrime.securesms.ShortcutLauncherActivity; import org.thoughtcrime.securesms.TransportOption; import org.thoughtcrime.securesms.VerifyIdentityActivity; @@ -184,7 +182,6 @@ import org.thoughtcrime.securesms.mms.StickerSlide; import org.thoughtcrime.securesms.mms.TextSlide; import org.thoughtcrime.securesms.mms.VideoSlide; import org.thoughtcrime.securesms.notifications.MarkReadReceiver; -import org.thoughtcrime.securesms.notifications.NotificationChannels; import org.thoughtcrime.securesms.permissions.Permissions; import org.thoughtcrime.securesms.profiles.GroupShareProfileView; import org.thoughtcrime.securesms.providers.BlobProvider; @@ -281,12 +278,12 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity public static final String LAST_SEEN_EXTRA = "last_seen"; public static final String STARTING_POSITION_EXTRA = "starting_position"; - private static final int PICK_GALLERY = 1; +// private static final int PICK_GALLERY = 1; private static final int PICK_DOCUMENT = 2; private static final int PICK_AUDIO = 3; private static final int PICK_CONTACT = 4; private static final int GET_CONTACT_DETAILS = 5; - private static final int GROUP_EDIT = 6; +// private static final int GROUP_EDIT = 6; private static final int TAKE_PHOTO = 7; private static final int ADD_CONTACT = 8; private static final int PICK_LOCATION = 9; @@ -337,7 +334,7 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity private long threadId; private int distributionType; private boolean archived; - private boolean isSecureText; + private boolean isSecureText; //TODO AC: Refaactor these field, as they are not required anyumore. private boolean isDefaultSms = false; private boolean isMmsEnabled = false; private boolean isSecurityInitialized = false; @@ -624,16 +621,6 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity case GET_CONTACT_DETAILS: sendSharedContact(data.getParcelableArrayListExtra(ContactShareEditActivity.KEY_CONTACTS)); break; - case GROUP_EDIT: - recipient = Recipient.from(this, data.getParcelableExtra(GroupCreateActivity.GROUP_ADDRESS_EXTRA), true); - recipient.addListener(this); - updateTitleTextView(recipient); - updateProfilePicture(); - updateSubtitleTextView(); - NotificationChannels.updateContactChannelName(this, recipient); - updateInputUI(recipient, isSecureText, isDefaultSms); - supportInvalidateOptionsMenu(); - break; case TAKE_PHOTO: if (attachmentManager.getCaptureUri() != null) { setMedia(attachmentManager.getCaptureUri(), MediaType.IMAGE); @@ -907,6 +894,7 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults); Permissions.onRequestPermissionsResult(this, requestCode, permissions, grantResults); } @@ -1258,20 +1246,9 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity keyboardHeight); } attachmentTypeSelector.show(this, attachButton); - } else { - handleManualMmsRequired(); } } - private void handleManualMmsRequired() { - Toast.makeText(this, R.string.MmsDownloader_error_reading_mms_settings, Toast.LENGTH_LONG).show(); - - Bundle extras = getIntent().getExtras(); - Intent intent = new Intent(this, PromptMmsActivity.class); - if (extras != null) intent.putExtras(extras); - startActivity(intent); - } - private void handleUnverifiedRecipients() { List unverifiedRecipients = identityRecords.getUnverifiedRecipients(this); List unverifiedRecords = identityRecords.getUnverifiedRecords(); @@ -2297,9 +2274,7 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity Log.i(TAG, "isManual Selection: " + sendButton.isManualSelection()); Log.i(TAG, "forceSms: " + forceSms); - if ((recipient.isMmsGroupRecipient() || recipient.getAddress().isEmail()) && !isMmsEnabled) { - handleManualMmsRequired(); - } else if (!forceSms && identityRecords.isUnverified()) { + if (!forceSms && identityRecords.isUnverified()) { handleUnverifiedRecipients(); }/* else if (!forceSms && identityRecords.isUntrusted()) { handleUntrustedRecipients(); diff --git a/app/src/main/java/org/thoughtcrime/securesms/preferences/AppProtectionPreferenceFragment.java b/app/src/main/java/org/thoughtcrime/securesms/preferences/AppProtectionPreferenceFragment.java index da47f6444..5b10b50d8 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/preferences/AppProtectionPreferenceFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/preferences/AppProtectionPreferenceFragment.java @@ -5,25 +5,22 @@ import android.app.KeyguardManager; import android.content.Context; import android.content.Intent; import android.os.Bundle; +import android.widget.Toast; + import androidx.annotation.Nullable; import androidx.appcompat.app.AlertDialog; import androidx.preference.CheckBoxPreference; import androidx.preference.Preference; -import android.widget.Toast; +import org.session.libsignal.service.api.SignalServiceAccountManager; import org.thoughtcrime.securesms.ApplicationContext; -import org.thoughtcrime.securesms.BlockedContactsActivity; import org.thoughtcrime.securesms.PassphraseChangeActivity; import org.thoughtcrime.securesms.components.SwitchPreferenceCompat; import org.thoughtcrime.securesms.crypto.MasterSecretUtil; import org.thoughtcrime.securesms.dependencies.InjectableType; import org.thoughtcrime.securesms.jobs.MultiDeviceConfigurationUpdateJob; -import org.thoughtcrime.securesms.jobs.RefreshAttributesJob; -import org.thoughtcrime.securesms.lock.RegistrationLockDialog; import org.thoughtcrime.securesms.service.KeyCachingService; -import org.thoughtcrime.securesms.util.CommunicationActions; import org.thoughtcrime.securesms.util.TextSecurePreferences; -import org.session.libsignal.service.api.SignalServiceAccountManager; import java.util.concurrent.TimeUnit; @@ -34,9 +31,6 @@ import network.loki.messenger.R; public class AppProtectionPreferenceFragment extends CorrectedPreferenceFragment implements InjectableType { -// private static final String PREFERENCE_CATEGORY_BLOCKED = "preference_category_blocked"; -// private static final String PREFERENCE_UNIDENTIFIED_LEARN_MORE = "pref_unidentified_learn_more"; - private CheckBoxPreference disablePassphrase; @Inject @@ -54,7 +48,6 @@ public class AppProtectionPreferenceFragment extends CorrectedPreferenceFragment disablePassphrase = (CheckBoxPreference) this.findPreference("pref_enable_passphrase_temporary"); -// this.findPreference(TextSecurePreferences.REGISTRATION_LOCK_PREF).setOnPreferenceClickListener(new AccountLockClickListener()); this.findPreference(TextSecurePreferences.SCREEN_LOCK).setOnPreferenceChangeListener(new ScreenLockListener()); this.findPreference(TextSecurePreferences.SCREEN_LOCK_TIMEOUT).setOnPreferenceClickListener(new ScreenLockTimeoutListener()); @@ -63,10 +56,6 @@ public class AppProtectionPreferenceFragment extends CorrectedPreferenceFragment this.findPreference(TextSecurePreferences.READ_RECEIPTS_PREF).setOnPreferenceChangeListener(new ReadReceiptToggleListener()); this.findPreference(TextSecurePreferences.TYPING_INDICATORS).setOnPreferenceChangeListener(new TypingIndicatorsToggleListener()); this.findPreference(TextSecurePreferences.LINK_PREVIEWS).setOnPreferenceChangeListener(new LinkPreviewToggleListener()); -// this.findPreference(PREFERENCE_CATEGORY_BLOCKED).setOnPreferenceClickListener(new BlockedContactsClickListener()); -// this.findPreference(TextSecurePreferences.SHOW_UNIDENTIFIED_DELIVERY_INDICATORS).setOnPreferenceChangeListener(new ShowUnidentifiedDeliveryIndicatorsChangedListener()); -// this.findPreference(TextSecurePreferences.UNIVERSAL_UNIDENTIFIED_ACCESS).setOnPreferenceChangeListener(new UniversalUnidentifiedAccessChangedListener()); -// this.findPreference(PREFERENCE_UNIDENTIFIED_LEARN_MORE).setOnPreferenceClickListener(new UnidentifiedLearnMoreClickListener()); disablePassphrase.setOnPreferenceChangeListener(new DisablePassphraseClickListener()); initializeVisibility(); @@ -154,28 +143,6 @@ public class AppProtectionPreferenceFragment extends CorrectedPreferenceFragment } } - private class AccountLockClickListener implements Preference.OnPreferenceClickListener { - @Override - public boolean onPreferenceClick(Preference preference) { - if (((SwitchPreferenceCompat)preference).isChecked()) { - RegistrationLockDialog.showRegistrationUnlockPrompt(getContext(), (SwitchPreferenceCompat)preference, accountManager); - } else { - RegistrationLockDialog.showRegistrationLockPrompt(getContext(), (SwitchPreferenceCompat)preference, accountManager); - } - - return true; - } - } - - private class BlockedContactsClickListener implements Preference.OnPreferenceClickListener { - @Override - public boolean onPreferenceClick(Preference preference) { - Intent intent = new Intent(getActivity(), BlockedContactsActivity.class); - startActivity(intent); - return true; - } - } - private class ReadReceiptToggleListener implements Preference.OnPreferenceChangeListener { @Override public boolean onPreferenceChange(Preference preference, Object newValue) { @@ -266,8 +233,6 @@ public class AppProtectionPreferenceFragment extends CorrectedPreferenceFragment } } - // Derecated - private class ChangePassphraseClickListener implements Preference.OnPreferenceClickListener { @Override public boolean onPreferenceClick(Preference preference) { @@ -333,37 +298,4 @@ public class AppProtectionPreferenceFragment extends CorrectedPreferenceFragment return false; } } - - private class ShowUnidentifiedDeliveryIndicatorsChangedListener implements Preference.OnPreferenceChangeListener { - @Override - public boolean onPreferenceChange(Preference preference, Object newValue) { - boolean enabled = (boolean) newValue; - ApplicationContext.getInstance(getContext()) - .getJobManager() - .add(new MultiDeviceConfigurationUpdateJob(TextSecurePreferences.isReadReceiptsEnabled(getContext()), - TextSecurePreferences.isTypingIndicatorsEnabled(getContext()), - enabled, - TextSecurePreferences.isLinkPreviewsEnabled(getContext()))); - - return true; - } - } - - private class UniversalUnidentifiedAccessChangedListener implements Preference.OnPreferenceChangeListener { - @Override - public boolean onPreferenceChange(Preference preference, Object o) { - ApplicationContext.getInstance(getContext()) - .getJobManager() - .add(new RefreshAttributesJob()); - return true; - } - } - - private class UnidentifiedLearnMoreClickListener implements Preference.OnPreferenceClickListener { - @Override - public boolean onPreferenceClick(Preference preference) { - CommunicationActions.openBrowserLink(preference.getContext(), "https://signal.org/blog/sealed-sender/"); - return true; - } - } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/preferences/AppearancePreferenceFragment.java b/app/src/main/java/org/thoughtcrime/securesms/preferences/AppearancePreferenceFragment.java deleted file mode 100644 index 8266b86ab..000000000 --- a/app/src/main/java/org/thoughtcrime/securesms/preferences/AppearancePreferenceFragment.java +++ /dev/null @@ -1,65 +0,0 @@ -package org.thoughtcrime.securesms.preferences; - -import android.content.Context; -import android.os.Bundle; -import androidx.annotation.Nullable; -import androidx.preference.ListPreference; - -import org.thoughtcrime.securesms.ApplicationPreferencesActivity; -import network.loki.messenger.R; -import org.thoughtcrime.securesms.util.TextSecurePreferences; - -import java.util.Arrays; - -public class AppearancePreferenceFragment extends ListSummaryPreferenceFragment { - - @Override - public void onCreate(Bundle paramBundle) { - super.onCreate(paramBundle); - - this.findPreference(TextSecurePreferences.THEME_PREF).setOnPreferenceChangeListener(new ListSummaryListener()); - this.findPreference(TextSecurePreferences.LANGUAGE_PREF).setOnPreferenceChangeListener(new ListSummaryListener()); - initializeListSummary((ListPreference)findPreference(TextSecurePreferences.THEME_PREF)); - initializeListSummary((ListPreference)findPreference(TextSecurePreferences.LANGUAGE_PREF)); - } - - @Override - public void onCreatePreferences(@Nullable Bundle savedInstanceState, String rootKey) { - addPreferencesFromResource(R.xml.preferences_appearance); - } - - @Override - public void onStart() { - super.onStart(); - getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener((ApplicationPreferencesActivity)getActivity()); - } - - @Override - public void onResume() { - super.onResume(); - ((ApplicationPreferencesActivity) getActivity()).getSupportActionBar().setTitle(R.string.preferences__appearance); - } - - @Override - public void onStop() { - super.onStop(); - getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener((ApplicationPreferencesActivity) getActivity()); - } - - public static CharSequence getSummary(Context context) { - String[] languageEntries = context.getResources().getStringArray(R.array.language_entries); - String[] languageEntryValues = context.getResources().getStringArray(R.array.language_values); - String[] themeEntries = context.getResources().getStringArray(R.array.pref_theme_entries); - String[] themeEntryValues = context.getResources().getStringArray(R.array.pref_theme_values); - - int langIndex = Arrays.asList(languageEntryValues).indexOf(TextSecurePreferences.getLanguage(context)); - int themeIndex = Arrays.asList(themeEntryValues).indexOf(TextSecurePreferences.getTheme(context)); - - if (langIndex == -1) langIndex = 0; - if (themeIndex == -1) themeIndex = 0; - - return context.getString(R.string.ApplicationPreferencesActivity_appearance_summary, - themeEntries[themeIndex], - languageEntries[langIndex]); - } -} diff --git a/app/src/main/java/org/thoughtcrime/securesms/preferences/BlockedContactListItem.java b/app/src/main/java/org/thoughtcrime/securesms/preferences/BlockedContactListItem.java deleted file mode 100644 index 6ae0518b9..000000000 --- a/app/src/main/java/org/thoughtcrime/securesms/preferences/BlockedContactListItem.java +++ /dev/null @@ -1,64 +0,0 @@ -package org.thoughtcrime.securesms.preferences; - -import android.content.Context; -import androidx.annotation.NonNull; -import android.util.AttributeSet; -import android.widget.RelativeLayout; -import android.widget.TextView; - -import network.loki.messenger.R; -import org.thoughtcrime.securesms.components.AvatarImageView; -import org.thoughtcrime.securesms.mms.GlideRequests; -import org.thoughtcrime.securesms.recipients.Recipient; -import org.thoughtcrime.securesms.recipients.RecipientModifiedListener; -import org.thoughtcrime.securesms.util.Util; - -public class BlockedContactListItem extends RelativeLayout implements RecipientModifiedListener { - - private AvatarImageView contactPhotoImage; - private TextView nameView; - private GlideRequests glideRequests; - private Recipient recipient; - - public BlockedContactListItem(Context context) { - super(context); - } - - public BlockedContactListItem(Context context, AttributeSet attrs) { - super(context, attrs); - } - - public BlockedContactListItem(Context context, AttributeSet attrs, int defStyleAttr) { - super(context, attrs, defStyleAttr); - } - - @Override - public void onFinishInflate() { - super.onFinishInflate(); - this.contactPhotoImage = findViewById(R.id.contact_photo_image); - this.nameView = findViewById(R.id.name); - } - - public void set(@NonNull GlideRequests glideRequests, @NonNull Recipient recipients) { - this.glideRequests = glideRequests; - this.recipient = recipients; - - onModified(recipients); - recipients.addListener(this); - } - - @Override - public void onModified(final Recipient recipients) { - final AvatarImageView contactPhotoImage = this.contactPhotoImage; - final TextView nameView = this.nameView; - - Util.runOnMain(() -> { - contactPhotoImage.setAvatar(glideRequests, recipients, false); - nameView.setText(recipients.toShortString()); - }); - } - - public Recipient getRecipient() { - return recipient; - } -} diff --git a/app/src/main/java/org/thoughtcrime/securesms/preferences/MmsPreferencesActivity.java b/app/src/main/java/org/thoughtcrime/securesms/preferences/MmsPreferencesActivity.java deleted file mode 100644 index d0e4d944e..000000000 --- a/app/src/main/java/org/thoughtcrime/securesms/preferences/MmsPreferencesActivity.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright (C) 2011 Whisper Systems - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.thoughtcrime.securesms.preferences; - -import android.os.Bundle; -import androidx.fragment.app.Fragment; -import androidx.fragment.app.FragmentManager; -import androidx.fragment.app.FragmentTransaction; -import android.view.MenuItem; - -import org.thoughtcrime.securesms.PassphraseRequiredActionBarActivity; -import org.thoughtcrime.securesms.util.DynamicLanguage; -import org.thoughtcrime.securesms.util.DynamicTheme; - -public class MmsPreferencesActivity extends PassphraseRequiredActionBarActivity { - - private final DynamicTheme dynamicTheme = new DynamicTheme(); - private final DynamicLanguage dynamicLanguage = new DynamicLanguage(); - - @Override - protected void onPreCreate() { - dynamicTheme.onCreate(this); - dynamicLanguage.onCreate(this); - } - - @Override - protected void onCreate(Bundle icicle, boolean ready) { - assert getSupportActionBar() != null; - this.getSupportActionBar().setDisplayHomeAsUpEnabled(true); - - Fragment fragment = new MmsPreferencesFragment(); - FragmentManager fragmentManager = getSupportFragmentManager(); - FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); - fragmentTransaction.replace(android.R.id.content, fragment); - fragmentTransaction.commit(); - - } - - @Override - public void onResume() { - super.onResume(); - dynamicTheme.onResume(this); - dynamicLanguage.onResume(this); - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case android.R.id.home: - finish(); - return true; - } - - return false; - } - - @Override - public void onBackPressed() { - super.onBackPressed(); - } - -} diff --git a/app/src/main/java/org/thoughtcrime/securesms/preferences/MmsPreferencesFragment.java b/app/src/main/java/org/thoughtcrime/securesms/preferences/MmsPreferencesFragment.java deleted file mode 100644 index 70a2c5b3a..000000000 --- a/app/src/main/java/org/thoughtcrime/securesms/preferences/MmsPreferencesFragment.java +++ /dev/null @@ -1,103 +0,0 @@ -/** - * Copyright (C) 2014 Open Whisper Systems - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.thoughtcrime.securesms.preferences; - -import android.content.Context; -import android.os.AsyncTask; -import android.os.Bundle; -import androidx.annotation.Nullable; - -import org.thoughtcrime.securesms.PassphraseRequiredActionBarActivity; -import network.loki.messenger.R; -import org.thoughtcrime.securesms.components.CustomDefaultPreference; -import org.thoughtcrime.securesms.database.ApnDatabase; -import org.thoughtcrime.securesms.logging.Log; -import org.thoughtcrime.securesms.mms.LegacyMmsConnection; -import org.thoughtcrime.securesms.util.TelephonyUtil; -import org.thoughtcrime.securesms.util.TextSecurePreferences; - -import java.io.IOException; - - -public class MmsPreferencesFragment extends CorrectedPreferenceFragment { - - private static final String TAG = MmsPreferencesFragment.class.getSimpleName(); - - @Override - public void onCreate(Bundle paramBundle) { - super.onCreate(paramBundle); - - ((PassphraseRequiredActionBarActivity) getActivity()).getSupportActionBar() - .setTitle(R.string.preferences__advanced_mms_access_point_names); - } - - @Override - public void onCreatePreferences(@Nullable Bundle savedInstanceState, String rootKey) { - addPreferencesFromResource(R.xml.preferences_manual_mms); - } - - @Override - public void onResume() { - super.onResume(); - new LoadApnDefaultsTask().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); - } - - private class LoadApnDefaultsTask extends AsyncTask { - - @Override - protected LegacyMmsConnection.Apn doInBackground(Void... params) { - try { - Context context = getActivity(); - - if (context != null) { - return ApnDatabase.getInstance(context) - .getDefaultApnParameters(TelephonyUtil.getMccMnc(context), - TelephonyUtil.getApn(context)); - } - } catch (IOException e) { - Log.w(TAG, e); - } - - return null; - } - - @Override - protected void onPostExecute(LegacyMmsConnection.Apn apnDefaults) { - ((CustomDefaultPreference)findPreference(TextSecurePreferences.MMSC_HOST_PREF)) - .setValidator(new CustomDefaultPreference.CustomDefaultPreferenceDialogFragmentCompat.UriValidator()) - .setDefaultValue(apnDefaults.getMmsc()); - - ((CustomDefaultPreference)findPreference(TextSecurePreferences.MMSC_PROXY_HOST_PREF)) - .setValidator(new CustomDefaultPreference.CustomDefaultPreferenceDialogFragmentCompat.HostnameValidator()) - .setDefaultValue(apnDefaults.getProxy()); - - ((CustomDefaultPreference)findPreference(TextSecurePreferences.MMSC_PROXY_PORT_PREF)) - .setValidator(new CustomDefaultPreference.CustomDefaultPreferenceDialogFragmentCompat.PortValidator()) - .setDefaultValue(apnDefaults.getPort()); - - ((CustomDefaultPreference)findPreference(TextSecurePreferences.MMSC_USERNAME_PREF)) - .setDefaultValue(apnDefaults.getPort()); - - ((CustomDefaultPreference)findPreference(TextSecurePreferences.MMSC_PASSWORD_PREF)) - .setDefaultValue(apnDefaults.getPassword()); - - ((CustomDefaultPreference)findPreference(TextSecurePreferences.MMS_USER_AGENT)) - .setDefaultValue(LegacyMmsConnection.USER_AGENT); - } - } - -} diff --git a/app/src/main/java/org/thoughtcrime/securesms/preferences/NotificationsPreferenceFragment.java b/app/src/main/java/org/thoughtcrime/securesms/preferences/NotificationsPreferenceFragment.java index 179d3c35f..7f1a862b2 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/preferences/NotificationsPreferenceFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/preferences/NotificationsPreferenceFragment.java @@ -64,10 +64,6 @@ public class NotificationsPreferenceFragment extends ListSummaryPreferenceFragme .setOnPreferenceChangeListener(new NotificationPrivacyListener()); this.findPreference(TextSecurePreferences.NOTIFICATION_PRIORITY_PREF) .setOnPreferenceChangeListener(new ListSummaryListener()); - /* - this.findPreference(TextSecurePreferences.CALL_RINGTONE_PREF) - .setOnPreferenceChangeListener(new RingtoneSummaryListener()); - */ this.findPreference(TextSecurePreferences.VIBRATE_PREF) .setOnPreferenceChangeListener((preference, newValue) -> { NotificationChannels.updateMessageVibrate(getContext(), (boolean) newValue); @@ -90,24 +86,6 @@ public class NotificationsPreferenceFragment extends ListSummaryPreferenceFragme return true; }); - /* - this.findPreference(TextSecurePreferences.CALL_RINGTONE_PREF) - .setOnPreferenceClickListener(preference -> { - Uri current = TextSecurePreferences.getCallNotificationRingtone(getContext()); - - Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER); - intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_DEFAULT, true); - intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_SILENT, true); - intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_RINGTONE); - intent.putExtra(RingtoneManager.EXTRA_RINGTONE_DEFAULT_URI, Settings.System.DEFAULT_RINGTONE_URI); - intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, current); - - startActivityForResult(intent, 2); - - return true; - }); - */ - initializeListSummary((ListPreference) findPreference(TextSecurePreferences.LED_COLOR_PREF)); initializeListSummary((ListPreference) findPreference(TextSecurePreferences.REPEAT_ALERTS_PREF)); initializeListSummary((ListPreference) findPreference(TextSecurePreferences.NOTIFICATION_PRIVACY_PREF)); @@ -126,9 +104,7 @@ public class NotificationsPreferenceFragment extends ListSummaryPreferenceFragme } initializeRingtoneSummary(findPreference(TextSecurePreferences.RINGTONE_PREF)); -// initializeCallRingtoneSummary(findPreference(TextSecurePreferences.CALL_RINGTONE_PREF)); initializeMessageVibrateSummary((SwitchPreferenceCompat)findPreference(TextSecurePreferences.VIBRATE_PREF)); -// initializeCallVibrateSummary((SwitchPreferenceCompat)findPreference(TextSecurePreferences.CALL_VIBRATE_PREF)); } @Override @@ -154,12 +130,6 @@ public class NotificationsPreferenceFragment extends ListSummaryPreferenceFragme } else if (requestCode == 2 && resultCode == RESULT_OK && data != null) { Uri uri = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI); - if (Settings.System.DEFAULT_RINGTONE_URI.equals(uri)) { - TextSecurePreferences.removeCallNotificationRingtone(getContext()); - } else { - TextSecurePreferences.setCallNotificationRingtone(getContext(), uri != null ? uri.toString() : Uri.EMPTY.toString()); - } - // initializeCallRingtoneSummary(findPreference(TextSecurePreferences.CALL_RINGTONE_PREF)); } } @@ -190,21 +160,10 @@ public class NotificationsPreferenceFragment extends ListSummaryPreferenceFragme listener.onPreferenceChange(pref, uri); } - private void initializeCallRingtoneSummary(Preference pref) { - RingtoneSummaryListener listener = (RingtoneSummaryListener) pref.getOnPreferenceChangeListener(); - Uri uri = TextSecurePreferences.getCallNotificationRingtone(getContext()); - - listener.onPreferenceChange(pref, uri); - } - private void initializeMessageVibrateSummary(SwitchPreferenceCompat pref) { pref.setChecked(TextSecurePreferences.isNotificationVibrateEnabled(getContext())); } - private void initializeCallVibrateSummary(SwitchPreferenceCompat pref) { - pref.setChecked(TextSecurePreferences.isCallNotificationVibrateEnabled(getContext())); - } - public static CharSequence getSummary(Context context) { final int onCapsResId = R.string.ApplicationPreferencesActivity_On; final int offCapsResId = R.string.ApplicationPreferencesActivity_Off; diff --git a/app/src/main/java/org/thoughtcrime/securesms/preferences/SmsMmsPreferenceFragment.java b/app/src/main/java/org/thoughtcrime/securesms/preferences/SmsMmsPreferenceFragment.java deleted file mode 100644 index 3681c6e7e..000000000 --- a/app/src/main/java/org/thoughtcrime/securesms/preferences/SmsMmsPreferenceFragment.java +++ /dev/null @@ -1,118 +0,0 @@ -package org.thoughtcrime.securesms.preferences; - -import android.content.Context; -import android.content.Intent; -import android.os.Build.VERSION; -import android.os.Build.VERSION_CODES; -import android.os.Bundle; -import android.provider.Settings; -import android.provider.Telephony; -import androidx.annotation.Nullable; -import androidx.fragment.app.Fragment; -import androidx.fragment.app.FragmentManager; -import androidx.fragment.app.FragmentTransaction; -import androidx.preference.Preference; -import androidx.preference.PreferenceScreen; - -import org.thoughtcrime.securesms.ApplicationPreferencesActivity; -import network.loki.messenger.R; -import org.thoughtcrime.securesms.util.TextSecurePreferences; -import org.thoughtcrime.securesms.util.Util; - -public class SmsMmsPreferenceFragment extends CorrectedPreferenceFragment { - private static final String KITKAT_DEFAULT_PREF = "pref_set_default"; - private static final String MMS_PREF = "pref_mms_preferences"; - - @Override - public void onCreate(Bundle paramBundle) { - super.onCreate(paramBundle); - - - this.findPreference(MMS_PREF) - .setOnPreferenceClickListener(new ApnPreferencesClickListener()); - - initializePlatformSpecificOptions(); - } - - @Override - public void onCreatePreferences(@Nullable Bundle savedInstanceState, String rootKey) { - addPreferencesFromResource(R.xml.preferences_sms_mms); - } - - @Override - public void onResume() { - super.onResume(); - ((ApplicationPreferencesActivity) getActivity()).getSupportActionBar().setTitle(R.string.preferences__sms_mms); - - initializeDefaultPreference(); - } - - private void initializePlatformSpecificOptions() { - PreferenceScreen preferenceScreen = getPreferenceScreen(); - Preference defaultPreference = findPreference(KITKAT_DEFAULT_PREF); - Preference allSmsPreference = findPreference(TextSecurePreferences.ALL_SMS_PREF); - Preference allMmsPreference = findPreference(TextSecurePreferences.ALL_MMS_PREF); - Preference manualMmsPreference = findPreference(MMS_PREF); - - if (VERSION.SDK_INT >= VERSION_CODES.KITKAT) { - if (allSmsPreference != null) preferenceScreen.removePreference(allSmsPreference); - if (allMmsPreference != null) preferenceScreen.removePreference(allMmsPreference); - } else if (defaultPreference != null) { - preferenceScreen.removePreference(defaultPreference); - } - - if (VERSION.SDK_INT >= VERSION_CODES.LOLLIPOP && manualMmsPreference != null) { - preferenceScreen.removePreference(manualMmsPreference); - } - } - - private void initializeDefaultPreference() { - if (VERSION.SDK_INT < VERSION_CODES.KITKAT) return; - - Preference defaultPreference = findPreference(KITKAT_DEFAULT_PREF); - if (Util.isDefaultSmsProvider(getActivity())) { - if (VERSION.SDK_INT < VERSION_CODES.M) defaultPreference.setIntent(new Intent(Settings.ACTION_WIRELESS_SETTINGS)); - if (VERSION.SDK_INT < VERSION_CODES.N) defaultPreference.setIntent(new Intent(Settings.ACTION_SETTINGS)); - else defaultPreference.setIntent(new Intent(Settings.ACTION_MANAGE_DEFAULT_APPS_SETTINGS)); - - defaultPreference.setTitle(getString(R.string.ApplicationPreferencesActivity_sms_enabled)); - defaultPreference.setSummary(getString(R.string.ApplicationPreferencesActivity_touch_to_change_your_default_sms_app)); - } else { - Intent intent = new Intent(Telephony.Sms.Intents.ACTION_CHANGE_DEFAULT); - intent.putExtra(Telephony.Sms.Intents.EXTRA_PACKAGE_NAME, getActivity().getPackageName()); - defaultPreference.setIntent(intent); - defaultPreference.setTitle(getString(R.string.ApplicationPreferencesActivity_sms_disabled)); - defaultPreference.setSummary(getString(R.string.ApplicationPreferencesActivity_touch_to_make_signal_your_default_sms_app)); - } - } - - private class ApnPreferencesClickListener implements Preference.OnPreferenceClickListener { - - @Override - public boolean onPreferenceClick(Preference preference) { - Fragment fragment = new MmsPreferencesFragment(); - FragmentManager fragmentManager = getActivity().getSupportFragmentManager(); - FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); - fragmentTransaction.replace(android.R.id.content, fragment); - fragmentTransaction.addToBackStack(null); - fragmentTransaction.commit(); - - return true; - } - } - - public static CharSequence getSummary(Context context) { - final String on = context.getString(R.string.ApplicationPreferencesActivity_on); - final String onCaps = context.getString(R.string.ApplicationPreferencesActivity_On); - final String off = context.getString(R.string.ApplicationPreferencesActivity_off); - final String offCaps = context.getString(R.string.ApplicationPreferencesActivity_Off); - final int smsMmsSummaryResId = R.string.ApplicationPreferencesActivity_sms_mms_summary; - - boolean postKitkatSMS = Util.isDefaultSmsProvider(context); - boolean preKitkatSMS = TextSecurePreferences.isInterceptAllSmsEnabled(context); - boolean preKitkatMMS = TextSecurePreferences.isInterceptAllMmsEnabled(context); - - if (postKitkatSMS) return onCaps; - else return offCaps; - } -} diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/TextSecurePreferences.java b/app/src/main/java/org/thoughtcrime/securesms/util/TextSecurePreferences.java index c48511040..3cb9521d9 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/TextSecurePreferences.java +++ b/app/src/main/java/org/thoughtcrime/securesms/util/TextSecurePreferences.java @@ -139,10 +139,6 @@ public class TextSecurePreferences { private static final String ATTACHMENT_UNENCRYPTED_SECRET = "pref_attachment_unencrypted_secret"; private static final String NEEDS_SQLCIPHER_MIGRATION = "pref_needs_sql_cipher_migration"; - public static final String CALL_NOTIFICATIONS_PREF = "pref_call_notifications"; - public static final String CALL_RINGTONE_PREF = "pref_call_ringtone"; - public static final String CALL_VIBRATE_PREF = "pref_call_vibrate"; - private static final String NEXT_PRE_KEY_ID = "pref_next_pre_key_id"; private static final String ACTIVE_SIGNED_PRE_KEY_ID = "pref_active_signed_pre_key_id"; private static final String NEXT_SIGNED_PRE_KEY_ID = "pref_next_signed_pre_key_id"; @@ -972,10 +968,6 @@ public class TextSecurePreferences { return getBooleanPreference(context, NOTIFICATION_PREF, true); } - public static boolean isCallNotificationsEnabled(Context context) { - return getBooleanPreference(context, CALL_NOTIFICATIONS_PREF, true); - } - public static @NonNull Uri getNotificationRingtone(Context context) { String result = getStringPreference(context, RINGTONE_PREF, Settings.System.DEFAULT_NOTIFICATION_URI.toString()); @@ -986,32 +978,14 @@ public class TextSecurePreferences { return Uri.parse(result); } - public static @NonNull Uri getCallNotificationRingtone(Context context) { - String result = getStringPreference(context, CALL_RINGTONE_PREF, Settings.System.DEFAULT_RINGTONE_URI.toString()); - - if (result != null && result.startsWith("file:")) { - result = Settings.System.DEFAULT_RINGTONE_URI.toString(); - } - - return Uri.parse(result); - } - public static void removeNotificationRingtone(Context context) { removePreference(context, RINGTONE_PREF); } - public static void removeCallNotificationRingtone(Context context) { - removePreference(context, CALL_RINGTONE_PREF); - } - public static void setNotificationRingtone(Context context, String ringtone) { setStringPreference(context, RINGTONE_PREF, ringtone); } - public static void setCallNotificationRingtone(Context context, String ringtone) { - setStringPreference(context, CALL_RINGTONE_PREF, ringtone); - } - public static void setNotificationVibrateEnabled(Context context, boolean enabled) { setBooleanPreference(context, VIBRATE_PREF, enabled); } @@ -1020,16 +994,6 @@ public class TextSecurePreferences { return getBooleanPreference(context, VIBRATE_PREF, true); } - public static boolean isCallNotificationVibrateEnabled(Context context) { - boolean defaultValue = true; - - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - defaultValue = (Settings.System.getInt(context.getContentResolver(), Settings.System.VIBRATE_WHEN_RINGING, 1) == 1); - } - - return getBooleanPreference(context, CALL_VIBRATE_PREF, defaultValue); - } - public static String getNotificationLedColor(Context context) { return getStringPreference(context, LED_COLOR_PREF, "blue"); } diff --git a/app/src/main/res/layout/blocked_contact_list_item.xml b/app/src/main/res/layout/blocked_contact_list_item.xml deleted file mode 100644 index 2a83568a1..000000000 --- a/app/src/main/res/layout/blocked_contact_list_item.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - - diff --git a/app/src/main/res/layout/blocked_contacts_fragment.xml b/app/src/main/res/layout/blocked_contacts_fragment.xml deleted file mode 100644 index 49ccc82aa..000000000 --- a/app/src/main/res/layout/blocked_contacts_fragment.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/contact_filter_toolbar.xml b/app/src/main/res/layout/contact_filter_toolbar.xml deleted file mode 100644 index f6615b762..000000000 --- a/app/src/main/res/layout/contact_filter_toolbar.xml +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/layout/contact_selection_activity.xml b/app/src/main/res/layout/contact_selection_activity.xml deleted file mode 100644 index 38762aab7..000000000 --- a/app/src/main/res/layout/contact_selection_activity.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/group_create_activity.xml b/app/src/main/res/layout/group_create_activity.xml deleted file mode 100644 index 9ac6b33bd..000000000 --- a/app/src/main/res/layout/group_create_activity.xml +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/layout/invite_activity.xml b/app/src/main/res/layout/invite_activity.xml deleted file mode 100644 index e7f574cca..000000000 --- a/app/src/main/res/layout/invite_activity.xml +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - - - - - - - - - -