mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 958517 - Create a 'Page' menu and move some of the URL context menu actions there r=lucasr
This commit is contained in:
parent
394ed67dc4
commit
2ba8b9636c
@ -34,6 +34,7 @@ import org.mozilla.gecko.util.Clipboard;
|
||||
import org.mozilla.gecko.util.EventDispatcher;
|
||||
import org.mozilla.gecko.util.GamepadUtils;
|
||||
import org.mozilla.gecko.util.HardwareUtils;
|
||||
import org.mozilla.gecko.util.MenuUtils;
|
||||
import org.mozilla.gecko.util.StringUtils;
|
||||
import org.mozilla.gecko.util.ThreadUtils;
|
||||
import org.mozilla.gecko.util.UiAsyncTask;
|
||||
@ -2132,6 +2133,15 @@ abstract public class BrowserApp extends GeckoApp
|
||||
share.setEnabled(false);
|
||||
saveAsPDF.setEnabled(false);
|
||||
findInPage.setEnabled(false);
|
||||
|
||||
// NOTE: Use MenuUtils.safeSetEnabled because some actions might
|
||||
// be on the BrowserToolbar context menu
|
||||
MenuUtils.safeSetEnabled(aMenu, R.id.page, false);
|
||||
MenuUtils.safeSetEnabled(aMenu, R.id.subscribe, false);
|
||||
MenuUtils.safeSetEnabled(aMenu, R.id.add_search_engine, false);
|
||||
MenuUtils.safeSetEnabled(aMenu, R.id.site_settings, false);
|
||||
MenuUtils.safeSetEnabled(aMenu, R.id.add_to_launcher, false);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -2159,6 +2169,14 @@ abstract public class BrowserApp extends GeckoApp
|
||||
share.setEnabled(!(scheme.equals("about") || scheme.equals("chrome") ||
|
||||
scheme.equals("file") || scheme.equals("resource")));
|
||||
|
||||
// NOTE: Use MenuUtils.safeSetEnabled because some actions might
|
||||
// be on the BrowserToolbar context menu
|
||||
MenuUtils.safeSetEnabled(aMenu, R.id.page, !isAboutHome(tab));
|
||||
MenuUtils.safeSetEnabled(aMenu, R.id.subscribe, tab.hasFeeds());
|
||||
MenuUtils.safeSetEnabled(aMenu, R.id.add_search_engine, tab.hasOpenSearch());
|
||||
MenuUtils.safeSetEnabled(aMenu, R.id.site_settings, !isAboutHome(tab));
|
||||
MenuUtils.safeSetEnabled(aMenu, R.id.add_to_launcher, !isAboutHome(tab));
|
||||
|
||||
// Action providers are available only ICS+.
|
||||
if (Build.VERSION.SDK_INT >= 14) {
|
||||
GeckoActionProvider provider = (GeckoActionProvider) share.getActionProvider();
|
||||
@ -2355,6 +2373,13 @@ abstract public class BrowserApp extends GeckoApp
|
||||
return true;
|
||||
}
|
||||
|
||||
// We have a few menu items that can also be in the context menu. If
|
||||
// we have not already handled the item, give the context menu handler
|
||||
// a chance.
|
||||
if (onContextItemSelected(item)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return super.onOptionsItemSelected(item);
|
||||
}
|
||||
|
||||
|
@ -210,6 +210,7 @@ size. -->
|
||||
<!ENTITY save_as_pdf "Save as PDF">
|
||||
<!ENTITY find_in_page "Find in Page">
|
||||
<!ENTITY desktop_mode "Request Desktop Site">
|
||||
<!ENTITY page "Page">
|
||||
<!ENTITY tools "Tools">
|
||||
<!ENTITY new_tab "New Tab">
|
||||
<!ENTITY new_private_tab "New Private Tab">
|
||||
|
@ -52,6 +52,7 @@ gujar.sources += [
|
||||
'util/INIParser.java',
|
||||
'util/INISection.java',
|
||||
'util/JSONUtils.java',
|
||||
'util/MenuUtils.java',
|
||||
'util/NonEvictingLruCache.java',
|
||||
'util/ProxySelector.java',
|
||||
'util/StringUtils.java',
|
||||
|
@ -47,6 +47,28 @@
|
||||
android:title="@string/desktop_mode"
|
||||
android:checkable="true" />
|
||||
|
||||
<item android:id="@+id/page"
|
||||
android:title="@string/page"
|
||||
android:icon="@drawable/ic_menu_tools">
|
||||
|
||||
<menu>
|
||||
|
||||
<item android:id="@+id/subscribe"
|
||||
android:title="@string/contextmenu_subscribe"/>
|
||||
|
||||
<item android:id="@+id/add_search_engine"
|
||||
android:title="@string/contextmenu_add_search_engine"/>
|
||||
|
||||
<item android:id="@+id/site_settings"
|
||||
android:title="@string/contextmenu_site_settings" />
|
||||
|
||||
<item android:id="@+id/add_to_launcher"
|
||||
android:title="@string/contextmenu_add_to_launcher"/>
|
||||
|
||||
</menu>
|
||||
|
||||
</item>
|
||||
|
||||
<item android:id="@+id/tools"
|
||||
android:title="@string/tools"
|
||||
android:icon="@drawable/ic_menu_tools">
|
||||
|
@ -47,6 +47,28 @@
|
||||
android:title="@string/desktop_mode"
|
||||
android:checkable="true" />
|
||||
|
||||
<item android:id="@+id/page"
|
||||
android:title="@string/page"
|
||||
android:icon="@drawable/ic_menu_tools">
|
||||
|
||||
<menu>
|
||||
|
||||
<item android:id="@+id/subscribe"
|
||||
android:title="@string/contextmenu_subscribe"/>
|
||||
|
||||
<item android:id="@+id/add_search_engine"
|
||||
android:title="@string/contextmenu_add_search_engine"/>
|
||||
|
||||
<item android:id="@+id/site_settings"
|
||||
android:title="@string/contextmenu_site_settings" />
|
||||
|
||||
<item android:id="@+id/add_to_launcher"
|
||||
android:title="@string/contextmenu_add_to_launcher"/>
|
||||
|
||||
</menu>
|
||||
|
||||
</item>
|
||||
|
||||
<item android:id="@+id/tools"
|
||||
android:title="@string/tools"
|
||||
android:icon="@drawable/ic_menu_tools">
|
||||
|
@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- This Source Code Form is subject to the terms of the Mozilla Public
|
||||
- License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
|
||||
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
<item android:id="@+id/pasteandgo"
|
||||
android:title="@string/contextmenu_pasteandgo"/>
|
||||
|
||||
<item android:id="@+id/paste"
|
||||
android:title="@string/contextmenu_paste"/>
|
||||
|
||||
<item android:id="@+id/copyurl"
|
||||
android:title="@string/contextmenu_copyurl"/>
|
||||
|
||||
<item android:id="@+id/add_to_launcher"
|
||||
android:title="@string/contextmenu_add_to_launcher"/>
|
||||
|
||||
</menu>
|
@ -47,6 +47,29 @@
|
||||
android:title="@string/desktop_mode"
|
||||
android:checkable="true" />
|
||||
|
||||
|
||||
<item android:id="@+id/page"
|
||||
android:title="@string/page"
|
||||
android:icon="@drawable/ic_menu_tools">
|
||||
|
||||
<menu>
|
||||
|
||||
<item android:id="@+id/subscribe"
|
||||
android:title="@string/contextmenu_subscribe"/>
|
||||
|
||||
<item android:id="@+id/add_search_engine"
|
||||
android:title="@string/contextmenu_add_search_engine"/>
|
||||
|
||||
<item android:id="@+id/site_settings"
|
||||
android:title="@string/contextmenu_site_settings" />
|
||||
|
||||
<item android:id="@+id/add_to_launcher"
|
||||
android:title="@string/contextmenu_add_to_launcher"/>
|
||||
|
||||
</menu>
|
||||
|
||||
</item>
|
||||
|
||||
<item android:id="@+id/tools"
|
||||
android:title="@string/tools"
|
||||
android:icon="@drawable/ic_menu_tools">
|
||||
|
@ -77,6 +77,7 @@
|
||||
<string name="save_as_pdf">&save_as_pdf;</string>
|
||||
<string name="find_in_page">&find_in_page;</string>
|
||||
<string name="desktop_mode">&desktop_mode;</string>
|
||||
<string name="page">&page;</string>
|
||||
<string name="tools">&tools;</string>
|
||||
|
||||
<string name="find_text">&find_text;</string>
|
||||
|
@ -24,6 +24,7 @@ import org.mozilla.gecko.toolbar.ToolbarDisplayLayout.OnTitleChangeListener;
|
||||
import org.mozilla.gecko.toolbar.ToolbarDisplayLayout.UpdateFlags;
|
||||
import org.mozilla.gecko.util.Clipboard;
|
||||
import org.mozilla.gecko.util.HardwareUtils;
|
||||
import org.mozilla.gecko.util.MenuUtils;
|
||||
import org.mozilla.gecko.util.ThreadUtils;
|
||||
import org.mozilla.gecko.util.GeckoEventListener;
|
||||
import org.mozilla.gecko.widget.GeckoImageButton;
|
||||
@ -249,6 +250,9 @@ public class BrowserToolbar extends GeckoRelativeLayout
|
||||
return;
|
||||
}
|
||||
|
||||
// NOTE: Use MenuUtils.safeSetVisible because some actions might
|
||||
// be on the Page menu
|
||||
|
||||
MenuInflater inflater = mActivity.getMenuInflater();
|
||||
inflater.inflate(R.menu.titlebar_contextmenu, menu);
|
||||
|
||||
@ -263,22 +267,22 @@ public class BrowserToolbar extends GeckoRelativeLayout
|
||||
String url = tab.getURL();
|
||||
if (url == null) {
|
||||
menu.findItem(R.id.copyurl).setVisible(false);
|
||||
menu.findItem(R.id.share).setVisible(false);
|
||||
menu.findItem(R.id.add_to_launcher).setVisible(false);
|
||||
MenuUtils.safeSetVisible(menu, R.id.share, false);
|
||||
}
|
||||
|
||||
menu.findItem(R.id.subscribe).setVisible(tab.hasFeeds());
|
||||
menu.findItem(R.id.add_search_engine).setVisible(tab.hasOpenSearch());
|
||||
MenuUtils.safeSetVisible(menu, R.id.subscribe, tab.hasFeeds());
|
||||
MenuUtils.safeSetVisible(menu, R.id.add_search_engine, tab.hasOpenSearch());
|
||||
} else {
|
||||
// if there is no tab, remove anything tab dependent
|
||||
menu.findItem(R.id.copyurl).setVisible(false);
|
||||
menu.findItem(R.id.share).setVisible(false);
|
||||
menu.findItem(R.id.add_to_launcher).setVisible(false);
|
||||
menu.findItem(R.id.subscribe).setVisible(false);
|
||||
menu.findItem(R.id.add_search_engine).setVisible(false);
|
||||
MenuUtils.safeSetVisible(menu, R.id.share, false);
|
||||
MenuUtils.safeSetVisible(menu, R.id.subscribe, false);
|
||||
MenuUtils.safeSetVisible(menu, R.id.add_search_engine, false);
|
||||
}
|
||||
|
||||
menu.findItem(R.id.share).setVisible(!GeckoProfile.get(getContext()).inGuestMode());
|
||||
MenuUtils.safeSetVisible(menu, R.id.share, !GeckoProfile.get(getContext()).inGuestMode());
|
||||
}
|
||||
});
|
||||
|
||||
|
33
mobile/android/base/util/MenuUtils.java
Normal file
33
mobile/android/base/util/MenuUtils.java
Normal file
@ -0,0 +1,33 @@
|
||||
/* -*- Mode: Java; c-basic-offset: 4; tab-width: 20; indent-tabs-mode: nil; -*-
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
package org.mozilla.gecko.util;
|
||||
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
|
||||
public class MenuUtils {
|
||||
/*
|
||||
* This method looks for a menuitem and sets it's visible state, if
|
||||
* it exists.
|
||||
*/
|
||||
public static void safeSetVisible(Menu menu, int id, boolean visible) {
|
||||
MenuItem item = menu.findItem(id);
|
||||
if (item != null) {
|
||||
item.setVisible(visible);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* This method looks for a menuitem and sets it's enabled state, if
|
||||
* it exists.
|
||||
*/
|
||||
public static void safeSetEnabled(Menu menu, int id, boolean enabled) {
|
||||
MenuItem item = menu.findItem(id);
|
||||
if (item != null) {
|
||||
item.setEnabled(enabled);
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user