diff options
author | Adnan Begovic <adnan@cyngn.com> | 2016-01-14 17:20:43 -0800 |
---|---|---|
committer | Michael Bestas <mkbestas@lineageos.org> | 2019-09-15 01:37:54 +0300 |
commit | 391fdac7a669eabffa3bcb6cc1d6882c4ea359d5 (patch) | |
tree | e40f9774b3dd45a19c11619f15c64f2e5038d517 /src | |
parent | 723c2e4bd5b45588c52d5d2642400301c58652af (diff) | |
download | android_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')
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); + } +} |