Show tooltip for swipe-to-reply.

This commit is contained in:
Greyson Parrelli 2019-09-26 16:37:09 -04:00
parent 1d8e85fcad
commit ee9acf2687
3 changed files with 27 additions and 0 deletions

View File

@ -258,6 +258,8 @@
<string name="ConversationFragment_quoted_message_not_found">Original message not found</string>
<string name="ConversationFragment_quoted_message_no_longer_available">Original message no longer available</string>
<string name="ConversationFragment_failed_to_open_message">Failed to open message</string>
<string name="ConversationFragment_you_can_swipe_to_the_right_reply">You can swipe to the right on any message to quickly reply</string>
<string name="ConversationFragment_you_can_swipe_to_the_left_reply">You can swipe to the left on any message to quickly reply</string>
<!-- ConversationListActivity -->
<string name="ConversationListActivity_there_is_no_browser_installed_on_your_device">There is no browser installed on your device.</string>

View File

@ -63,6 +63,7 @@ import org.thoughtcrime.securesms.R;
import org.thoughtcrime.securesms.ShareActivity;
import org.thoughtcrime.securesms.attachments.Attachment;
import org.thoughtcrime.securesms.components.ConversationTypingView;
import org.thoughtcrime.securesms.components.TooltipPopup;
import org.thoughtcrime.securesms.components.recyclerview.SmoothScrollingLinearLayoutManager;
import org.thoughtcrime.securesms.contactshare.Contact;
import org.thoughtcrime.securesms.contactshare.ContactUtil;
@ -836,6 +837,20 @@ public class ConversationFragment extends Fragment
}
}
private void maybeShowSwipeToReplyTooltip() {
if (!TextSecurePreferences.hasSeenSwipeToReplyTooltip(requireContext())) {
int text = getResources().getConfiguration().getLayoutDirection() == View.LAYOUT_DIRECTION_LTR ? R.string.ConversationFragment_you_can_swipe_to_the_right_reply
: R.string.ConversationFragment_you_can_swipe_to_the_left_reply;
TooltipPopup.forTarget(requireActivity().findViewById(R.id.menu_context_reply))
.setText(text)
.setTextColor(getResources().getColor(R.color.core_white))
.setBackgroundTint(getResources().getColor(R.color.core_blue))
.show(TooltipPopup.POSITION_BELOW);
TextSecurePreferences.setHasSeenSwipeToReplyTooltip(requireContext(), true);
}
}
public interface ConversationFragmentListener {
void setThreadId(long threadId);
void handleReplyMessage(MessageRecord messageRecord);
@ -1150,6 +1165,7 @@ public class ConversationFragment extends Fragment
actionMode.finish();
return true;
case R.id.menu_context_reply:
maybeShowSwipeToReplyTooltip();
handleReplyMessage(getSelectedMessageRecord());
actionMode.finish();
return true;

View File

@ -193,6 +193,8 @@ public class TextSecurePreferences {
private static final String FIRST_INSTALL_VERSION = "pref_first_install_version";
private static final String HAS_SEEN_SWIPE_TO_REPLY = "pref_has_seen_swipe_to_reply";
public static boolean isScreenLockEnabled(@NonNull Context context) {
return getBooleanPreference(context, SCREEN_LOCK, false);
}
@ -1148,6 +1150,13 @@ public class TextSecurePreferences {
return getIntegerPreference(context, FIRST_INSTALL_VERSION, -1);
}
public static boolean hasSeenSwipeToReplyTooltip(Context context) {
return getBooleanPreference(context, HAS_SEEN_SWIPE_TO_REPLY, false);
}
public static void setHasSeenSwipeToReplyTooltip(Context context, boolean value) {
setBooleanPreference(context, HAS_SEEN_SWIPE_TO_REPLY, value);
}
public static void setBooleanPreference(Context context, String key, boolean value) {
PreferenceManager.getDefaultSharedPreferences(context).edit().putBoolean(key, value).apply();