Bug 1348716 - Long click to copy URL in custom tabs r=sebastian

If user long click text area of ActionBar(URL or Title), then copy
current URL to clipboard.

MozReview-Commit-ID: EdVoMiX0Gt3

--HG--
extra : rebase_source : eecd78325162bb5c0a41436b90d0e10f5669030c
This commit is contained in:
Julian_Chu 2017-03-21 11:16:28 +08:00
parent 5f07e5577d
commit 351526c469
4 changed files with 36 additions and 2 deletions

View File

@ -124,6 +124,15 @@ public class ActionBarPresenter {
}
}
/**
* To assign a long-click-listener to text area of ActionBar
* @param listener then callback to trigger
*/
public void setTextLongClickListener(View.OnLongClickListener listener) {
mTitleView.setOnLongClickListener(listener);
mUrlView.setOnLongClickListener(listener);
}
/**
* To get primary color of Title of ActionBar
*

View File

@ -19,6 +19,7 @@ import android.support.annotation.ColorInt;
import android.support.annotation.NonNull;
import android.support.annotation.StyleRes;
import android.support.annotation.VisibleForTesting;
import android.support.design.widget.Snackbar;
import android.support.v4.graphics.drawable.DrawableCompat;
import android.support.v4.util.SparseArrayCompat;
import android.support.v4.view.MenuItemCompat;
@ -36,12 +37,14 @@ import android.widget.ProgressBar;
import org.mozilla.gecko.GeckoApp;
import org.mozilla.gecko.R;
import org.mozilla.gecko.SnackbarBuilder;
import org.mozilla.gecko.Tab;
import org.mozilla.gecko.Tabs;
import org.mozilla.gecko.menu.GeckoMenu;
import org.mozilla.gecko.menu.GeckoMenuInflater;
import org.mozilla.gecko.Telemetry;
import org.mozilla.gecko.TelemetryContract;
import org.mozilla.gecko.menu.GeckoMenu;
import org.mozilla.gecko.menu.GeckoMenuInflater;
import org.mozilla.gecko.util.Clipboard;
import org.mozilla.gecko.util.ColorUtil;
import org.mozilla.gecko.widget.GeckoPopupMenu;
@ -91,6 +94,7 @@ public class CustomTabsActivity extends GeckoApp implements Tabs.OnTabsChangedLi
actionBarPresenter = new ActionBarPresenter(actionBar);
actionBarPresenter.displayUrlOnly(getIntent().getDataString());
actionBarPresenter.setBackgroundColor(toolbarColor, getWindow());
actionBarPresenter.setTextLongClickListener(new UrlCopyListener());
actionBar.setDisplayHomeAsUpEnabled(true);
Tabs.registerOnTabsChangedListener(this);
@ -452,4 +456,22 @@ public class CustomTabsActivity extends GeckoApp implements Tabs.OnTabsChangedLi
startActivity(chooserIntent);
}
}
/**
* Listener when user long-click ActionBar to copy URL.
*/
private class UrlCopyListener implements View.OnLongClickListener {
@Override
public boolean onLongClick(View v) {
final String url = Tabs.getInstance().getSelectedTab().getURL();
if (!TextUtils.isEmpty(url)) {
Clipboard.setText(url);
SnackbarBuilder.builder(CustomTabsActivity.this)
.message(R.string.custom_tabs_hint_url_copy)
.duration(Snackbar.LENGTH_SHORT)
.buildAndShow();
}
return true;
}
}
}

View File

@ -286,6 +286,8 @@
default browser from user's preference, such as "Open in Firefox" -->
<!ENTITY custom_tabs_menu_item_open_in "Open in &formatS;">
<!ENTITY custom_tabs_menu_footer "Powered by &brandShortName;">
<!-- Long-click title of CustomTabsActivity will copy URL to clipboard and display this hint -->
<!ENTITY custom_tabs_hint_url_copy "URL copied">
<!-- Localization note (pref_activity_stream): Experimental feature, see https://testpilot.firefox.com/experiments/activity-stream -->
<!ENTITY pref_activity_stream "Activity Stream">

View File

@ -241,6 +241,7 @@
<string name="pref_custom_tabs_summary">&pref_custom_tabs_summary3;</string>
<string name="custom_tabs_menu_item_open_in">&custom_tabs_menu_item_open_in;</string>
<string name="custom_tabs_menu_footer">&custom_tabs_menu_footer;</string>
<string name="custom_tabs_hint_url_copy">&custom_tabs_hint_url_copy;</string>
<string name="pref_activity_stream">&pref_activity_stream;</string>
<string name="pref_activity_stream_summary">&pref_activity_stream_summary;</string>