diff --git a/app/src/main/java/org/thoughtcrime/securesms/BindableConversationItem.java b/app/src/main/java/org/thoughtcrime/securesms/BindableConversationItem.java deleted file mode 100644 index 93313e5270..0000000000 --- a/app/src/main/java/org/thoughtcrime/securesms/BindableConversationItem.java +++ /dev/null @@ -1,39 +0,0 @@ -package org.thoughtcrime.securesms; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - - -import org.thoughtcrime.securesms.database.model.MessageRecord; -import org.thoughtcrime.securesms.database.model.MmsMessageRecord; -import org.thoughtcrime.securesms.mms.GlideRequests; -import org.session.libsignal.utilities.guava.Optional; - -import org.session.libsession.messaging.sending_receiving.link_preview.LinkPreview; -import org.session.libsession.utilities.Address; -import org.session.libsession.utilities.recipients.Recipient; - -import java.util.Locale; -import java.util.Set; - -public interface BindableConversationItem extends Unbindable { - void bind(@NonNull MessageRecord messageRecord, - @NonNull Optional previousMessageRecord, - @NonNull Optional nextMessageRecord, - @NonNull GlideRequests glideRequests, - @NonNull Locale locale, - @NonNull Set batchSelected, - @NonNull Recipient recipients, - @Nullable String searchQuery, - boolean pulseHighlight); - - MessageRecord getMessageRecord(); - - void setEventListener(@Nullable EventListener listener); - - interface EventListener { - void onQuoteClicked(MmsMessageRecord messageRecord); - void onLinkPreviewClicked(@NonNull LinkPreview linkPreview); - void onMoreTextClicked(@NonNull Address conversationAddress, long messageId, boolean isMms); - } -} diff --git a/app/src/main/java/org/thoughtcrime/securesms/MessageDetailsRecipientAdapter.java b/app/src/main/java/org/thoughtcrime/securesms/MessageDetailsRecipientAdapter.java deleted file mode 100644 index ca6cf8f6c8..0000000000 --- a/app/src/main/java/org/thoughtcrime/securesms/MessageDetailsRecipientAdapter.java +++ /dev/null @@ -1,111 +0,0 @@ -package org.thoughtcrime.securesms; - -import android.content.Context; -import android.view.View; -import android.view.ViewGroup; -import android.widget.AbsListView; -import android.widget.BaseAdapter; - -import androidx.annotation.NonNull; - - -import org.thoughtcrime.securesms.database.model.MessageRecord; -import org.thoughtcrime.securesms.contacts.UserView; -import org.thoughtcrime.securesms.mms.GlideRequests; -import org.session.libsession.utilities.recipients.Recipient; -import org.session.libsession.utilities.Conversions; - -import java.security.MessageDigest; -import java.security.NoSuchAlgorithmException; -import java.util.List; - -class MessageDetailsRecipientAdapter extends BaseAdapter implements AbsListView.RecyclerListener { - - private final Context context; - private final GlideRequests glideRequests; - private final MessageRecord record; - private final List members; - private final boolean isPushGroup; - - MessageDetailsRecipientAdapter(@NonNull Context context, @NonNull GlideRequests glideRequests, - @NonNull MessageRecord record, @NonNull List members, - boolean isPushGroup) - { - this.context = context; - this.glideRequests = glideRequests; - this.record = record; - this.isPushGroup = isPushGroup; - this.members = members; - } - - @Override - public int getCount() { - return members.size(); - } - - @Override - public Object getItem(int position) { - return members.get(position); - } - - @Override - public long getItemId(int position) { - try { - return Conversions.byteArrayToLong(MessageDigest.getInstance("SHA1").digest(members.get(position).recipient.getAddress().serialize().getBytes())); - } catch (NoSuchAlgorithmException e) { - throw new AssertionError(e); - } - } - - @Override - public View getView(int position, View convertView, ViewGroup parent) { - UserView result = new UserView(context); - Recipient recipient = members.get(position).getRecipient(); - result.setOpenGroupThreadID(record.getThreadId()); - result.bind(recipient, glideRequests, UserView.ActionIndicator.None, false); - return result; - } - - @Override - public void onMovedToScrapHeap(View view) { - ((UserView)view).unbind(); - } - - - static class RecipientDeliveryStatus { - - enum Status { - UNKNOWN, PENDING, SENT, DELIVERED, READ - } - - private final Recipient recipient; - private final Status deliveryStatus; - private final boolean isUnidentified; - private final long timestamp; - - RecipientDeliveryStatus(Recipient recipient, Status deliveryStatus, boolean isUnidentified, long timestamp) { - this.recipient = recipient; - this.deliveryStatus = deliveryStatus; - this.isUnidentified = isUnidentified; - this.timestamp = timestamp; - } - - Status getDeliveryStatus() { - return deliveryStatus; - } - - boolean isUnidentified() { - return isUnidentified; - } - - public long getTimestamp() { - return timestamp; - } - - public Recipient getRecipient() { - return recipient; - } - - } - -} diff --git a/app/src/main/java/org/thoughtcrime/securesms/Unbindable.java b/app/src/main/java/org/thoughtcrime/securesms/Unbindable.java deleted file mode 100644 index 3dd5cd8cc0..0000000000 --- a/app/src/main/java/org/thoughtcrime/securesms/Unbindable.java +++ /dev/null @@ -1,5 +0,0 @@ -package org.thoughtcrime.securesms; - -public interface Unbindable { - public void unbind(); -} diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/Outliner.java b/app/src/main/java/org/thoughtcrime/securesms/components/Outliner.java deleted file mode 100644 index cb6cfc7abf..0000000000 --- a/app/src/main/java/org/thoughtcrime/securesms/components/Outliner.java +++ /dev/null @@ -1,50 +0,0 @@ -package org.thoughtcrime.securesms.components; - -import android.graphics.Canvas; -import android.graphics.Paint; -import android.graphics.Path; -import android.graphics.RectF; - -import androidx.annotation.ColorInt; - -public class Outliner { - - private final float[] radii = new float[8]; - private final Path corners = new Path(); - private final RectF bounds = new RectF(); - private final Paint outlinePaint = new Paint(); - { - outlinePaint.setStyle(Paint.Style.STROKE); - outlinePaint.setStrokeWidth(1f); - outlinePaint.setAntiAlias(true); - } - - public void setColor(@ColorInt int color) { - outlinePaint.setColor(color); - } - - public void draw(Canvas canvas) { - final float halfStrokeWidth = outlinePaint.getStrokeWidth() / 2; - - bounds.left = halfStrokeWidth; - bounds.top = halfStrokeWidth; - bounds.right = canvas.getWidth() - halfStrokeWidth; - bounds.bottom = canvas.getHeight() - halfStrokeWidth; - - corners.reset(); - corners.addRoundRect(bounds, radii, Path.Direction.CW); - - canvas.drawPath(corners, outlinePaint); - } - - public void setRadius(int radius) { - setRadii(radius, radius, radius, radius); - } - - public void setRadii(int topLeft, int topRight, int bottomRight, int bottomLeft) { - radii[0] = radii[1] = topLeft; - radii[2] = radii[3] = topRight; - radii[4] = radii[5] = bottomRight; - radii[6] = radii[7] = bottomLeft; - } -} diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/emoji/parsing/EmojiPageBitmap.java b/app/src/main/java/org/thoughtcrime/securesms/components/emoji/parsing/EmojiPageBitmap.java deleted file mode 100644 index 3c3a4fa3eb..0000000000 --- a/app/src/main/java/org/thoughtcrime/securesms/components/emoji/parsing/EmojiPageBitmap.java +++ /dev/null @@ -1,107 +0,0 @@ -package org.thoughtcrime.securesms.components.emoji.parsing; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.content.res.AssetManager; -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.os.AsyncTask; -import androidx.annotation.NonNull; -import org.session.libsignal.utilities.Log; - -import org.thoughtcrime.securesms.components.emoji.EmojiPageModel; -import org.thoughtcrime.securesms.util.Stopwatch; - -import org.session.libsession.utilities.ListenableFutureTask; -import org.session.libsession.utilities.Util; - -import java.io.IOException; -import java.io.InputStream; -import java.lang.ref.SoftReference; -import java.util.concurrent.Callable; - -public class EmojiPageBitmap { - - private static final String TAG = EmojiPageBitmap.class.getSimpleName(); - - private final Context context; - private final EmojiPageModel model; - private final float decodeScale; - - private SoftReference bitmapReference; - private ListenableFutureTask task; - - public EmojiPageBitmap(@NonNull Context context, @NonNull EmojiPageModel model, float decodeScale) { - this.context = context.getApplicationContext(); - this.model = model; - this.decodeScale = decodeScale; - } - - @SuppressLint("StaticFieldLeak") - public ListenableFutureTask get() { - Util.assertMainThread(); - - if (bitmapReference != null && bitmapReference.get() != null) { - return new ListenableFutureTask<>(bitmapReference.get()); - } else if (task != null) { - return task; - } else { - Callable callable = () -> { - try { - Log.i(TAG, "loading page " + model.getSpriteUri().toString()); - return loadPage(); - } catch (IOException ioe) { - Log.w(TAG, ioe); - } - return null; - }; - task = new ListenableFutureTask<>(callable); - new AsyncTask() { - @Override protected Void doInBackground(Void... params) { - task.run(); - return null; - } - - @Override protected void onPostExecute(Void aVoid) { - task = null; - } - }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); - } - return task; - } - - private Bitmap loadPage() throws IOException { - if (bitmapReference != null && bitmapReference.get() != null) return bitmapReference.get(); - - - float scale = decodeScale; - AssetManager assetManager = context.getAssets(); - InputStream assetStream = assetManager.open(model.getSpriteUri().toString()); - BitmapFactory.Options options = new BitmapFactory.Options(); - - if (org.thoughtcrime.securesms.util.Util.isLowMemory(context)) { - Log.i(TAG, "Low memory detected. Changing sample size."); - options.inSampleSize = 2; - scale = decodeScale * 2; - } - - Stopwatch stopwatch = new Stopwatch(model.getSpriteUri().toString()); - Bitmap bitmap = BitmapFactory.decodeStream(assetStream, null, options); - stopwatch.split("decode"); - - Bitmap scaledBitmap = Bitmap.createScaledBitmap(bitmap, (int)(bitmap.getWidth() * scale), (int)(bitmap.getHeight() * scale), true); - stopwatch.split("scale"); - stopwatch.stop(TAG); - - bitmapReference = new SoftReference<>(scaledBitmap); - Log.i(TAG, "onPageLoaded(" + model.getSpriteUri().toString() + ") originalByteCount: " + bitmap.getByteCount() - + " scaledByteCount: " + scaledBitmap.getByteCount() - + " scaledSize: " + scaledBitmap.getWidth() + "x" + scaledBitmap.getHeight()); - return scaledBitmap; - } - - @Override - public @NonNull String toString() { - return model.getSpriteUri().toString(); - } -} diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/recyclerview/SmoothScrollingLinearLayoutManager.java b/app/src/main/java/org/thoughtcrime/securesms/components/recyclerview/SmoothScrollingLinearLayoutManager.java deleted file mode 100644 index a1b45ac2ae..0000000000 --- a/app/src/main/java/org/thoughtcrime/securesms/components/recyclerview/SmoothScrollingLinearLayoutManager.java +++ /dev/null @@ -1,31 +0,0 @@ -package org.thoughtcrime.securesms.components.recyclerview; - -import android.content.Context; -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.LinearSmoothScroller; -import android.util.DisplayMetrics; - -public class SmoothScrollingLinearLayoutManager extends LinearLayoutManager { - - public SmoothScrollingLinearLayoutManager(Context context, boolean reverseLayout) { - super(context, LinearLayoutManager.VERTICAL, reverseLayout); - } - - public void smoothScrollToPosition(@NonNull Context context, int position, float millisecondsPerInch) { - final LinearSmoothScroller scroller = new LinearSmoothScroller(context) { - @Override - protected int getVerticalSnapPreference() { - return LinearSmoothScroller.SNAP_TO_END; - } - - @Override - protected float calculateSpeedPerPixel(DisplayMetrics displayMetrics) { - return millisecondsPerInch / displayMetrics.densityDpi; - } - }; - - scroller.setTargetPosition(position); - startSmoothScroll(scroller); - } -} diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/FastCursorRecyclerViewAdapter.java b/app/src/main/java/org/thoughtcrime/securesms/database/FastCursorRecyclerViewAdapter.java deleted file mode 100644 index 4dfe6a20b5..0000000000 --- a/app/src/main/java/org/thoughtcrime/securesms/database/FastCursorRecyclerViewAdapter.java +++ /dev/null @@ -1,110 +0,0 @@ -package org.thoughtcrime.securesms.database; - - -import android.content.Context; -import android.database.Cursor; -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.RecyclerView; - -import java.util.Iterator; -import java.util.LinkedList; -import java.util.List; - -public abstract class FastCursorRecyclerViewAdapter - extends CursorRecyclerViewAdapter -{ - private static final String TAG = FastCursorRecyclerViewAdapter.class.getSimpleName(); - - private final LinkedList fastRecords = new LinkedList<>(); - private final List releasedRecordIds = new LinkedList<>(); - - protected FastCursorRecyclerViewAdapter(Context context, Cursor cursor) { - super(context, cursor); - } - - public void addFastRecord(@NonNull T record) { - fastRecords.addFirst(record); - notifyDataSetChanged(); - } - - public void releaseFastRecord(long id) { - synchronized (releasedRecordIds) { - releasedRecordIds.add(id); - } - } - - protected void cleanFastRecords() { - synchronized (releasedRecordIds) { - Iterator releaseIdIterator = releasedRecordIds.iterator(); - - while (releaseIdIterator.hasNext()) { - long releasedId = releaseIdIterator.next(); - Iterator fastRecordIterator = fastRecords.iterator(); - - while (fastRecordIterator.hasNext()) { - if (isRecordForId(fastRecordIterator.next(), releasedId)) { - fastRecordIterator.remove(); - releaseIdIterator.remove(); - break; - } - } - } - } - } - - protected abstract T getRecordFromCursor(@NonNull Cursor cursor); - protected abstract void onBindItemViewHolder(VH viewHolder, @NonNull T record); - protected abstract long getItemId(@NonNull T record); - protected abstract int getItemViewType(@NonNull T record); - protected abstract boolean isRecordForId(@NonNull T record, long id); - - @Override - public int getItemViewType(@NonNull Cursor cursor) { - T record = getRecordFromCursor(cursor); - return getItemViewType(record); - } - - @Override - public void onBindItemViewHolder(VH viewHolder, @NonNull Cursor cursor) { - T record = getRecordFromCursor(cursor); - onBindItemViewHolder(viewHolder, record); - } - - @Override - public void onBindFastAccessItemViewHolder(VH viewHolder, int position) { - int calculatedPosition = getCalculatedPosition(position); - onBindItemViewHolder(viewHolder, fastRecords.get(calculatedPosition)); - } - - @Override - protected int getFastAccessSize() { - return fastRecords.size(); - } - - protected T getRecordForPositionOrThrow(int position) { - if (isFastAccessPosition(position)) { - return fastRecords.get(getCalculatedPosition(position)); - } else { - Cursor cursor = getCursorAtPositionOrThrow(position); - return getRecordFromCursor(cursor); - } - } - - protected int getFastAccessItemViewType(int position) { - return getItemViewType(fastRecords.get(getCalculatedPosition(position))); - } - - protected boolean isFastAccessPosition(int position) { - position = getCalculatedPosition(position); - return position >= 0 && position < fastRecords.size(); - } - - protected long getFastAccessItemId(int position) { - return getItemId(fastRecords.get(getCalculatedPosition(position))); - } - - private int getCalculatedPosition(int position) { - return hasHeaderView() ? position - 1 : position; - } - -} diff --git a/app/src/main/java/org/thoughtcrime/securesms/preferences/widgets/ContactPreference.java b/app/src/main/java/org/thoughtcrime/securesms/preferences/widgets/ContactPreference.java deleted file mode 100644 index f5417f3e91..0000000000 --- a/app/src/main/java/org/thoughtcrime/securesms/preferences/widgets/ContactPreference.java +++ /dev/null @@ -1,81 +0,0 @@ -package org.thoughtcrime.securesms.preferences.widgets; - - -import android.content.Context; -import android.graphics.PorterDuff; -import androidx.preference.Preference; -import androidx.preference.PreferenceViewHolder; -import android.util.AttributeSet; -import android.view.View; -import android.widget.ImageView; - -import network.loki.messenger.R; - -public class ContactPreference extends Preference { - - private ImageView messageButton; - - private Listener listener; - private boolean secure; - - public ContactPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { - super(context, attrs, defStyleAttr, defStyleRes); - initialize(); - } - - public ContactPreference(Context context, AttributeSet attrs, int defStyleAttr) { - super(context, attrs, defStyleAttr); - initialize(); - } - - public ContactPreference(Context context, AttributeSet attrs) { - super(context, attrs); - initialize(); - } - - public ContactPreference(Context context) { - super(context); - initialize(); - } - - private void initialize() { - setWidgetLayoutResource(R.layout.recipient_preference_contact_widget); - } - - @Override - public void onBindViewHolder(PreferenceViewHolder view) { - super.onBindViewHolder(view); - - this.messageButton = (ImageView) view.findViewById(R.id.message); - - if (listener != null) setListener(listener); - setSecure(secure); - } - - public void setSecure(boolean secure) { - this.secure = secure; - - int color; - - if (secure) { - color = getContext().getResources().getColor(R.color.textsecure_primary); - } else { - color = getContext().getResources().getColor(R.color.grey_600); - } - - if (messageButton != null) messageButton.setColorFilter(color, PorterDuff.Mode.SRC_IN); - } - - public void setListener(Listener listener) { - this.listener = listener; - - if (this.messageButton != null) this.messageButton.setOnClickListener(v -> listener.onMessageClicked()); - } - - public interface Listener { - public void onMessageClicked(); - public void onSecureCallClicked(); - public void onInSecureCallClicked(); - } - -} diff --git a/app/src/main/java/org/thoughtcrime/securesms/preferences/widgets/NotificationSettingsPreference.kt b/app/src/main/java/org/thoughtcrime/securesms/preferences/widgets/NotificationSettingsPreference.kt deleted file mode 100644 index 3c2e72779d..0000000000 --- a/app/src/main/java/org/thoughtcrime/securesms/preferences/widgets/NotificationSettingsPreference.kt +++ /dev/null @@ -1,16 +0,0 @@ -package org.thoughtcrime.securesms.preferences.widgets - -import android.content.Context -import android.util.AttributeSet -import android.widget.FrameLayout - -class NotificationSettingsPreference @JvmOverloads constructor( - context: Context, attrs: AttributeSet? = null -) : FrameLayout(context, attrs) { - - override fun onFinishInflate() { - super.onFinishInflate() - // TODO: if we want do the spans - } - -} \ No newline at end of file diff --git a/app/src/main/java/org/thoughtcrime/securesms/preferences/widgets/ProgressPreference.java b/app/src/main/java/org/thoughtcrime/securesms/preferences/widgets/ProgressPreference.java deleted file mode 100644 index 52a88c5664..0000000000 --- a/app/src/main/java/org/thoughtcrime/securesms/preferences/widgets/ProgressPreference.java +++ /dev/null @@ -1,61 +0,0 @@ -package org.thoughtcrime.securesms.preferences.widgets; - - -import android.content.Context; -import androidx.preference.Preference; -import androidx.preference.PreferenceViewHolder; -import android.util.AttributeSet; -import android.view.View; -import android.widget.TextView; - -import network.loki.messenger.R; - -public class ProgressPreference extends Preference { - - private View container; - private TextView progressText; - - public ProgressPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { - super(context, attrs, defStyleAttr, defStyleRes); - initialize(); - } - - public ProgressPreference(Context context, AttributeSet attrs, int defStyleAttr) { - super(context, attrs, defStyleAttr); - initialize(); - } - - public ProgressPreference(Context context, AttributeSet attrs) { - super(context, attrs); - initialize(); - } - - public ProgressPreference(Context context) { - super(context); - initialize(); - } - - private void initialize() { - setWidgetLayoutResource(R.layout.preference_widget_progress); - } - - @Override - public void onBindViewHolder(PreferenceViewHolder view) { - super.onBindViewHolder(view); - - this.container = view.findViewById(R.id.container); - this.progressText = (TextView) view.findViewById(R.id.progress_text); - - this.container.setVisibility(View.GONE); - } - - public void setProgress(int count) { - container.setVisibility(View.VISIBLE); - progressText.setText(getContext().getString(R.string.ProgressPreference_d_messages_so_far, count)); - } - - public void setProgressVisible(boolean visible) { - container.setVisibility(visible ? View.VISIBLE : View.GONE); - } - -} diff --git a/app/src/main/java/org/thoughtcrime/securesms/reactions/any/ThisMessageEmojiPageModel.java b/app/src/main/java/org/thoughtcrime/securesms/reactions/any/ThisMessageEmojiPageModel.java deleted file mode 100644 index 0e70c41a90..0000000000 --- a/app/src/main/java/org/thoughtcrime/securesms/reactions/any/ThisMessageEmojiPageModel.java +++ /dev/null @@ -1,63 +0,0 @@ -package org.thoughtcrime.securesms.reactions.any; - -import android.net.Uri; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import com.annimon.stream.Stream; - -import org.thoughtcrime.securesms.components.emoji.Emoji; -import org.thoughtcrime.securesms.components.emoji.EmojiPageModel; -import org.thoughtcrime.securesms.components.emoji.RecentEmojiPageModel; - -import java.util.List; - -import network.loki.messenger.R; - -/** - * Contains the Emojis that have been used in reactions for a given message. - */ -class ThisMessageEmojiPageModel implements EmojiPageModel { - - private final List emoji; - - ThisMessageEmojiPageModel(@NonNull List emoji) { - this.emoji = emoji; - } - - @Override - public String getKey() { - return RecentEmojiPageModel.KEY; - } - - @Override - public int getIconAttr() { - return R.attr.emoji_category_recent; - } - - @Override - public @NonNull List getEmoji() { - return emoji; - } - - @Override - public @NonNull List getDisplayEmoji() { - return Stream.of(getEmoji()).map(Emoji::new).toList(); - } - - @Override - public boolean hasSpriteMap() { - return false; - } - - @Override - public @Nullable Uri getSpriteUri() { - return null; - } - - @Override - public boolean isDynamic() { - return true; - } -} diff --git a/app/src/main/java/org/thoughtcrime/securesms/sms/TelephonyServiceState.java b/app/src/main/java/org/thoughtcrime/securesms/sms/TelephonyServiceState.java deleted file mode 100644 index b6cb7e5e2a..0000000000 --- a/app/src/main/java/org/thoughtcrime/securesms/sms/TelephonyServiceState.java +++ /dev/null @@ -1,92 +0,0 @@ -package org.thoughtcrime.securesms.sms; - -import android.content.Context; -import android.os.Looper; -import android.telephony.PhoneStateListener; -import android.telephony.ServiceState; -import android.telephony.TelephonyManager; - -public class TelephonyServiceState { - - public boolean isConnected(Context context) { - ListenThread listenThread = new ListenThread(context); - listenThread.start(); - - return listenThread.get(); - } - - private static class ListenThread extends Thread { - - private final Context context; - - private boolean complete; - private boolean result; - - public ListenThread(Context context) { - this.context = context.getApplicationContext(); - } - - @Override - public void run() { - Looper looper = initializeLooper(); - ListenCallback callback = new ListenCallback(looper); - - TelephonyManager telephonyManager = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE); - telephonyManager.listen(callback, PhoneStateListener.LISTEN_SERVICE_STATE); - - Looper.loop(); - - telephonyManager.listen(callback, PhoneStateListener.LISTEN_NONE); - - set(callback.isConnected()); - } - - private Looper initializeLooper() { - Looper looper = Looper.myLooper(); - - if (looper == null) { - Looper.prepare(); - } - - return Looper.myLooper(); - } - - public synchronized boolean get() { - while (!complete) { - try { - wait(); - } catch (InterruptedException e) { - throw new AssertionError(e); - } - } - - return result; - } - - private synchronized void set(boolean result) { - this.result = result; - this.complete = true; - notifyAll(); - } - } - - private static class ListenCallback extends PhoneStateListener { - - private final Looper looper; - private volatile boolean connected; - - public ListenCallback(Looper looper) { - this.looper = looper; - } - - @Override - public void onServiceStateChanged(ServiceState serviceState) { - this.connected = (serviceState.getState() == ServiceState.STATE_IN_SERVICE); - looper.quit(); - } - - public boolean isConnected() { - return connected; - } - } -} diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/ContextProvider.kt b/app/src/main/java/org/thoughtcrime/securesms/util/ContextProvider.kt deleted file mode 100644 index 4bc8e104dd..0000000000 --- a/app/src/main/java/org/thoughtcrime/securesms/util/ContextProvider.kt +++ /dev/null @@ -1,37 +0,0 @@ -package org.thoughtcrime.securesms.util - -import android.app.Activity -import android.content.Context -import android.content.Intent -import androidx.fragment.app.Fragment - -/** - * A simplified version of [android.content.ContextWrapper], - * but properly supports [startActivityForResult] for the implementations. - */ -interface ContextProvider { - fun getContext(): Context - fun startActivityForResult(intent: Intent, requestCode: Int) -} - -class ActivityContextProvider(private val activity: Activity): ContextProvider { - - override fun getContext(): Context { - return activity - } - - override fun startActivityForResult(intent: Intent, requestCode: Int) { - activity.startActivityForResult(intent, requestCode) - } -} - -class FragmentContextProvider(private val fragment: Fragment): ContextProvider { - - override fun getContext(): Context { - return fragment.requireContext() - } - - override fun startActivityForResult(intent: Intent, requestCode: Int) { - fragment.startActivityForResult(intent, requestCode) - } -} \ No newline at end of file diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/LongClickMovementMethod.java b/app/src/main/java/org/thoughtcrime/securesms/util/LongClickMovementMethod.java deleted file mode 100644 index 82077f474d..0000000000 --- a/app/src/main/java/org/thoughtcrime/securesms/util/LongClickMovementMethod.java +++ /dev/null @@ -1,104 +0,0 @@ -package org.thoughtcrime.securesms.util; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.graphics.Color; -import androidx.core.content.ContextCompat; -import android.text.Layout; -import android.text.Selection; -import android.text.Spannable; -import android.text.method.LinkMovementMethod; -import android.view.GestureDetector; -import android.view.MotionEvent; -import android.view.View; -import android.widget.TextView; - -import network.loki.messenger.R; - -public class LongClickMovementMethod extends LinkMovementMethod { - @SuppressLint("StaticFieldLeak") - private static LongClickMovementMethod sInstance; - - private final GestureDetector gestureDetector; - private View widget; - private LongClickCopySpan currentSpan; - - private LongClickMovementMethod(final Context context) { - gestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() { - @Override - public void onLongPress(MotionEvent e) { - if (currentSpan != null && widget != null) { - currentSpan.onLongClick(widget); - widget = null; - currentSpan = null; - } - } - - @Override - public boolean onSingleTapUp(MotionEvent e) { - if (currentSpan != null && widget != null) { - currentSpan.onClick(widget); - widget = null; - currentSpan = null; - } - return true; - } - }); - } - - @Override - public boolean onTouchEvent(TextView widget, Spannable buffer, MotionEvent event) { - int action = event.getAction(); - - if (action == MotionEvent.ACTION_UP || - action == MotionEvent.ACTION_DOWN) { - int x = (int) event.getX(); - int y = (int) event.getY(); - - x -= widget.getTotalPaddingLeft(); - y -= widget.getTotalPaddingTop(); - - x += widget.getScrollX(); - y += widget.getScrollY(); - - Layout layout = widget.getLayout(); - int line = layout.getLineForVertical(y); - int off = layout.getOffsetForHorizontal(line, x); - - LongClickCopySpan longClickCopySpan[] = buffer.getSpans(off, off, LongClickCopySpan.class); - if (longClickCopySpan.length != 0) { - LongClickCopySpan aSingleSpan = longClickCopySpan[0]; - if (action == MotionEvent.ACTION_DOWN) { - Selection.setSelection(buffer, buffer.getSpanStart(aSingleSpan), - buffer.getSpanEnd(aSingleSpan)); - aSingleSpan.setHighlighted(true, - ContextCompat.getColor(widget.getContext(), R.color.touch_highlight)); - } else { - Selection.removeSelection(buffer); - aSingleSpan.setHighlighted(false, Color.TRANSPARENT); - } - - this.currentSpan = aSingleSpan; - this.widget = widget; - return gestureDetector.onTouchEvent(event); - } - } else if (action == MotionEvent.ACTION_CANCEL) { - // Remove Selections. - LongClickCopySpan[] spans = buffer.getSpans(Selection.getSelectionStart(buffer), - Selection.getSelectionEnd(buffer), LongClickCopySpan.class); - for (LongClickCopySpan aSpan : spans) { - aSpan.setHighlighted(false, Color.TRANSPARENT); - } - Selection.removeSelection(buffer); - return gestureDetector.onTouchEvent(event); - } - return super.onTouchEvent(widget, buffer, event); - } - - public static LongClickMovementMethod getInstance(Context context) { - if (sInstance == null) { - sInstance = new LongClickMovementMethod(context.getApplicationContext()); - } - return sInstance; - } -} \ No newline at end of file diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/WakeLockUtil.java b/app/src/main/java/org/thoughtcrime/securesms/util/WakeLockUtil.java deleted file mode 100644 index bba19f1fc2..0000000000 --- a/app/src/main/java/org/thoughtcrime/securesms/util/WakeLockUtil.java +++ /dev/null @@ -1,54 +0,0 @@ -package org.thoughtcrime.securesms.util; - -import android.content.Context; -import android.os.PowerManager; -import android.os.PowerManager.WakeLock; -import androidx.annotation.NonNull; - -import org.session.libsession.utilities.ServiceUtil; -import org.session.libsignal.utilities.Log; - -public class WakeLockUtil { - - private static final String TAG = WakeLockUtil.class.getSimpleName(); - - /** - * @param tag will be prefixed with "signal:" if it does not already start with it. - */ - public static WakeLock acquire(@NonNull Context context, int lockType, long timeout, @NonNull String tag) { - tag = prefixTag(tag); - try { - PowerManager powerManager = ServiceUtil.getPowerManager(context); - WakeLock wakeLock = powerManager.newWakeLock(lockType, tag); - - wakeLock.acquire(timeout); - Log.d(TAG, "Acquired wakelock with tag: " + tag); - - return wakeLock; - } catch (Exception e) { - Log.w(TAG, "Failed to acquire wakelock with tag: " + tag, e); - return null; - } - } - - /** - * @param tag will be prefixed with "signal:" if it does not already start with it. - */ - public static void release(@NonNull WakeLock wakeLock, @NonNull String tag) { - tag = prefixTag(tag); - try { - if (wakeLock.isHeld()) { - wakeLock.release(); - Log.d(TAG, "Released wakelock with tag: " + tag); - } else { - Log.d(TAG, "Wakelock wasn't held at time of release: " + tag); - } - } catch (Exception e) { - Log.w(TAG, "Failed to release wakelock with tag: " + tag, e); - } - } - - private static String prefixTag(@NonNull String tag) { - return tag.startsWith("signal:") ? tag : "signal:" + tag; - } -} diff --git a/app/src/main/java/org/thoughtcrime/securesms/webrtc/AudioEvent.kt b/app/src/main/java/org/thoughtcrime/securesms/webrtc/AudioEvent.kt deleted file mode 100644 index b01edfb492..0000000000 --- a/app/src/main/java/org/thoughtcrime/securesms/webrtc/AudioEvent.kt +++ /dev/null @@ -1,5 +0,0 @@ -package org.thoughtcrime.securesms.webrtc - -enum class AudioEvent { - -}