summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAdnan Begovic <adnan@cyngn.com>2016-01-14 17:20:43 -0800
committerMichael Bestas <mkbestas@lineageos.org>2019-09-15 01:37:54 +0300
commit391fdac7a669eabffa3bcb6cc1d6882c4ea359d5 (patch)
treee40f9774b3dd45a19c11619f15c64f2e5038d517 /src
parent723c2e4bd5b45588c52d5d2642400301c58652af (diff)
downloadandroid_packages_apps_Messaging-391fdac7a669eabffa3bcb6cc1d6882c4ea359d5.tar.gz
android_packages_apps_Messaging-391fdac7a669eabffa3bcb6cc1d6882c4ea359d5.tar.bz2
android_packages_apps_Messaging-391fdac7a669eabffa3bcb6cc1d6882c4ea359d5.zip
Messaging: Implement option for swipe right to delete.
Squashed commit of the following: Author: Adnan Begovic <adnan@cyngn.com> Date: Thu Jan 14 17:20:43 2016 -0800 Messaging: Implement option for swipe to delete. No one wants to swipe to archive, that's stupid. Change-Id: Ia8f0fc675582ef343311e60b755e284322f25102 Author: chengzhi.hou <chengzhi.hou@ck-telecom.com> Date: Wed Feb 24 20:01:17 2016 +0800 Messaging: Swipe right to delete conversation Change "swipe delete" to "swipe right delete", so SwipeArchive and SwipeDelete can exist at the same time. Change-Id: Id66167c2e749f8ab0ee917e0138027c7404b8c90 Author: Michael Bestas <mikeioannina@cyanogenmod.org> Date: Tue Mar 1 02:27:16 2016 +0200 Improve swipe to delete strings Change-Id: I180d09a6680084d9fd87c6dafd56db18ca5a580a Author: Joey Rizzoli <joey@cyanogenmoditalia.it> Date: Mon Oct 17 16:32:25 2016 +0200 Messaging: show snackbar instead of toast when deleting conversation more consistency with archive action Change-Id: I06129850860a2a51c10ade65fb87c9f37a0c2bfa Signed-off-by: Joey Rizzoli <joey@cyanogenmoditalia.it> Change-Id: Ia8f0fc675582ef343311e60b755e284322f25102
Diffstat (limited to 'src')
-rw-r--r--src/com/android/messaging/datamodel/action/BugleActionToasts.java1
-rw-r--r--src/com/android/messaging/ui/appsettings/ApplicationSettingsActivity.java7
-rw-r--r--src/com/android/messaging/ui/conversationlist/ConversationListItemView.java25
-rw-r--r--src/com/android/messaging/ui/conversationlist/ConversationListSwipeHelper.java8
-rw-r--r--src/com/android/messaging/util/UiUtils.java10
-rw-r--r--src/org/lineageos/messaging/util/PrefsUtils.java42
6 files changed, 86 insertions, 7 deletions
diff --git a/src/com/android/messaging/datamodel/action/BugleActionToasts.java b/src/com/android/messaging/datamodel/action/BugleActionToasts.java
index f60facd..17d15f2 100644
--- a/src/com/android/messaging/datamodel/action/BugleActionToasts.java
+++ b/src/com/android/messaging/datamodel/action/BugleActionToasts.java
@@ -114,7 +114,6 @@ public class BugleActionToasts {
}
public static void onConversationDeleted() {
- showToast(R.string.conversation_deleted);
}
private static void showToast(final int messageResId) {
diff --git a/src/com/android/messaging/ui/appsettings/ApplicationSettingsActivity.java b/src/com/android/messaging/ui/appsettings/ApplicationSettingsActivity.java
index d7abe85..1d67308 100644
--- a/src/com/android/messaging/ui/appsettings/ApplicationSettingsActivity.java
+++ b/src/com/android/messaging/ui/appsettings/ApplicationSettingsActivity.java
@@ -28,6 +28,7 @@ import android.preference.Preference;
import android.preference.PreferenceFragment;
import android.preference.PreferenceScreen;
import android.preference.RingtonePreference;
+import android.preference.SwitchPreference;
import android.preference.TwoStatePreference;
import android.provider.Settings;
import androidx.core.app.NavUtils;
@@ -97,6 +98,8 @@ public class ApplicationSettingsActivity extends BugleActionBarActivity {
private String mSmsEnabledPrefKey;
private Preference mSmsEnabledPreference;
private boolean mIsSmsPreferenceClicked;
+ private String mSwipeRightToDeleteConversationkey;
+ private SwitchPreference mSwipeRightToDeleteConversationPreference;
public ApplicationSettingsFragment() {
// Required empty constructor
@@ -121,6 +124,10 @@ public class ApplicationSettingsActivity extends BugleActionBarActivity {
mSmsDisabledPreference = findPreference(mSmsDisabledPrefKey);
mSmsEnabledPrefKey = getString(R.string.sms_enabled_pref_key);
mSmsEnabledPreference = findPreference(mSmsEnabledPrefKey);
+ mSwipeRightToDeleteConversationkey = getString(
+ R.string.swipe_right_deletes_conversation_key);
+ mSwipeRightToDeleteConversationPreference =
+ (SwitchPreference) findPreference(mSwipeRightToDeleteConversationkey);
mIsSmsPreferenceClicked = false;
final SharedPreferences prefs = getPreferenceScreen().getSharedPreferences();
diff --git a/src/com/android/messaging/ui/conversationlist/ConversationListItemView.java b/src/com/android/messaging/ui/conversationlist/ConversationListItemView.java
index b22ccfc..de036fc 100644
--- a/src/com/android/messaging/ui/conversationlist/ConversationListItemView.java
+++ b/src/com/android/messaging/ui/conversationlist/ConversationListItemView.java
@@ -58,6 +58,7 @@ import com.android.messaging.util.PhoneUtils;
import com.android.messaging.util.Typefaces;
import com.android.messaging.util.UiUtils;
import com.android.messaging.util.UriUtil;
+import org.lineageos.messaging.util.PrefsUtils;
import java.util.List;
@@ -75,6 +76,8 @@ public class ConversationListItemView extends FrameLayout implements OnClickList
private static String sPlusOneString;
private static String sPlusNString;
+ private static final int SWIPE_DIRECTION_RIGHT = 2;
+
public interface HostInterface {
boolean isConversationSelected(final String conversationId);
void onConversationClicked(final ConversationListItemData conversationListItemData,
@@ -502,6 +505,18 @@ public class ConversationListItemView extends FrameLayout implements OnClickList
final int notificationBellVisiblity = mData.getNotificationEnabled() ? GONE : VISIBLE;
mNotificationBellView.setVisibility(notificationBellVisiblity);
+
+ if (PrefsUtils.isSwipeRightToDeleteEnabled()) {
+ mCrossSwipeArchiveLeftImageView.setImageDrawable(getResources()
+ .getDrawable(R.drawable.ic_delete_small_dark));
+ mCrossSwipeArchiveRightImageView.setImageDrawable(getResources()
+ .getDrawable(R.drawable.ic_archive_small_dark));
+ } else {
+ mCrossSwipeArchiveLeftImageView.setImageDrawable(getResources()
+ .getDrawable(R.drawable.ic_archive_small_dark));
+ mCrossSwipeArchiveRightImageView.setImageDrawable(getResources()
+ .getDrawable(R.drawable.ic_archive_small_dark));
+ }
}
public boolean isSwipeAnimatable() {
@@ -535,10 +550,16 @@ public class ConversationListItemView extends FrameLayout implements OnClickList
}
}
- public void onSwipeComplete() {
+ public void onSwipeComplete(int swipeDirection) {
final String conversationId = mData.getConversationId();
+ if (PrefsUtils.isSwipeRightToDeleteEnabled()
+ && swipeDirection == ConversationListSwipeHelper.SWIPE_DIRECTION_RIGHT) {
+ mData.deleteConversation();
+ UiUtils.showSnackBar(getContext(), getRootView(),
+ getResources().getString(R.string.conversation_deleted));
+ return;
+ }
UpdateConversationArchiveStatusAction.archiveConversation(conversationId);
-
final Runnable undoRunnable = new Runnable() {
@Override
public void run() {
diff --git a/src/com/android/messaging/ui/conversationlist/ConversationListSwipeHelper.java b/src/com/android/messaging/ui/conversationlist/ConversationListSwipeHelper.java
index e5859a6..8b8ed0c 100644
--- a/src/com/android/messaging/ui/conversationlist/ConversationListSwipeHelper.java
+++ b/src/com/android/messaging/ui/conversationlist/ConversationListSwipeHelper.java
@@ -44,9 +44,9 @@ public class ConversationListSwipeHelper implements OnItemTouchListener {
private static final float PERCENTAGE_OF_WIDTH_TO_DISMISS = 0.4f;
private static final float FLING_PERCENTAGE_OF_WIDTH_TO_DISMISS = 0.05f;
- private static final int SWIPE_DIRECTION_NONE = 0;
- private static final int SWIPE_DIRECTION_LEFT = 1;
- private static final int SWIPE_DIRECTION_RIGHT = 2;
+ public static final int SWIPE_DIRECTION_NONE = 0;
+ public static final int SWIPE_DIRECTION_LEFT = 1;
+ public static final int SWIPE_DIRECTION_RIGHT = 2;
private final RecyclerView mRecyclerView;
private final long mDefaultRestoreAnimationDuration;
@@ -269,7 +269,7 @@ public class ConversationListSwipeHelper implements OnItemTouchListener {
private void onSwipeGestureEnd(final ConversationListItemView itemView,
final int swipeDirection) {
if (swipeDirection == SWIPE_DIRECTION_RIGHT || swipeDirection == SWIPE_DIRECTION_LEFT) {
- itemView.onSwipeComplete();
+ itemView.onSwipeComplete(swipeDirection);
}
// Balances out onSwipeGestureStart.
diff --git a/src/com/android/messaging/util/UiUtils.java b/src/com/android/messaging/util/UiUtils.java
index 6e0c16e..17c877f 100644
--- a/src/com/android/messaging/util/UiUtils.java
+++ b/src/com/android/messaging/util/UiUtils.java
@@ -132,6 +132,16 @@ public class UiUtils {
null /* placement */);
}
+ public static void showSnackBar(final Context context, @NonNull final View parentView,
+ final String message) {
+ Assert.notNull(context);
+ Assert.isTrue(!TextUtils.isEmpty(message));
+ SnackBarManager.get()
+ .newBuilder(parentView)
+ .setText(message)
+ .show();
+ }
+
public static void showSnackBarWithCustomAction(final Context context,
@NonNull final View parentView,
@NonNull final String message,
diff --git a/src/org/lineageos/messaging/util/PrefsUtils.java b/src/org/lineageos/messaging/util/PrefsUtils.java
new file mode 100644
index 0000000..fa08af4
--- /dev/null
+++ b/src/org/lineageos/messaging/util/PrefsUtils.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2016 The CyanogenMod Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.lineageos.messaging.util;
+
+import android.content.Context;
+import com.android.messaging.Factory;
+import com.android.messaging.R;
+import com.android.messaging.util.BuglePrefs;
+
+public class PrefsUtils {
+ private PrefsUtils() {
+ //Don't instantiate
+ }
+
+ /**
+ * Returns whether or not swipe to dismiss in the ConversationListFragment deletes
+ * the conversation rather than archiving it.
+ * @return hopefully true
+ */
+ public static boolean isSwipeRightToDeleteEnabled() {
+ final BuglePrefs prefs = BuglePrefs.getApplicationPrefs();
+ final Context context = Factory.get().getApplicationContext();
+ final String prefKey = context.getString(R.string.swipe_right_deletes_conversation_key);
+ final boolean defaultValue = context.getResources().getBoolean(
+ R.bool.swipe_right_deletes_conversation_default);
+ return prefs.getBoolean(prefKey, defaultValue);
+ }
+}