use of net.osmand.plus.settings.fragments.BaseSettingsFragment.SettingsScreenType in project Osmand by osmandapp.
the class PluginInfoFragment method onCreateView.
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
app = requireMyApplication();
plugin = getPluginFromArgs();
if (plugin == null) {
return null;
}
Context context = requireContext();
nightMode = !app.getSettings().isLightContent();
LayoutInflater themedInflater = UiUtilities.getInflater(context, nightMode);
mainView = themedInflater.inflate(R.layout.plugin, container, false);
AndroidUtils.addStatusBarPadding21v(context, mainView);
TextView toolbarTitle = mainView.findViewById(R.id.toolbar_title);
toolbarTitle.setText(plugin.getName());
ImageView closeButton = mainView.findViewById(R.id.close_button);
closeButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Activity activity = getMyActivity();
if (activity != null) {
activity.onBackPressed();
}
}
});
UiUtilities.rotateImageByLayoutDirection(closeButton);
Drawable pluginImage = plugin.getAssetResourceImage();
if (pluginImage != null) {
ImageView img = mainView.findViewById(R.id.plugin_image);
img.setImageDrawable(pluginImage);
} else {
mainView.findViewById(R.id.plugin_image_placeholder).setVisibility(View.VISIBLE);
}
TextView descriptionView = mainView.findViewById(R.id.plugin_description);
descriptionView.setText(plugin.getDescription());
int linkTextColorId = nightMode ? R.color.ctx_menu_bottom_view_url_color_dark : R.color.ctx_menu_bottom_view_url_color_light;
int linkTextColor = ContextCompat.getColor(context, linkTextColorId);
descriptionView.setLinkTextColor(linkTextColor);
descriptionView.setMovementMethod(LinkMovementMethod.getInstance());
AndroidUtils.removeLinkUnderline(descriptionView);
Button settingsButton = mainView.findViewById(R.id.plugin_settings);
settingsButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
FragmentActivity activity = getActivity();
if (activity != null) {
SettingsScreenType settingsScreenType = plugin.getSettingsScreenType();
if (settingsScreenType != null) {
Bundle args = new Bundle();
args.putBoolean(PLUGIN_INFO, true);
BaseSettingsFragment.showInstance(activity, settingsScreenType, null, args, null);
}
}
}
});
CompoundButton enableDisableButton = mainView.findViewById(R.id.plugin_enable_disable);
enableDisableButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (plugin.isEnabled() != isChecked) {
if (OsmandPlugin.enablePlugin(getActivity(), app, plugin, isChecked)) {
updateState();
Fragment target = getTargetFragment();
if (target instanceof PluginStateListener) {
((PluginStateListener) target).onPluginStateChanged(plugin);
}
}
}
}
});
Button getButton = mainView.findViewById(R.id.plugin_get);
getButton.setText(plugin.isPaid() ? R.string.get_plugin : R.string.shared_string_install);
getButton.setOnClickListener(v -> {
FragmentActivity activity = getActivity();
if (activity != null) {
OsmAndFeature feature = null;
if (plugin instanceof SRTMPlugin) {
feature = OsmAndFeature.TERRAIN;
} else if (plugin instanceof WikipediaPlugin) {
feature = OsmAndFeature.WIKIPEDIA;
} else {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(plugin.getInstallURL()));
AndroidUtils.startActivityIfSafe(activity, intent);
}
if (feature != null) {
ChoosePlanFragment.showInstance(activity, feature);
}
}
});
updateState();
return mainView;
}
use of net.osmand.plus.settings.fragments.BaseSettingsFragment.SettingsScreenType in project Osmand by osmandapp.
the class PluginsFragment method showOptionsMenu.
private void showOptionsMenu(View view, final OsmandPlugin plugin) {
final PopupMenu optionsMenu = new PopupMenu(view.getContext(), view);
MenuItem enableDisableItem = optionsMenu.getMenu().add(plugin.isEnabled() ? R.string.shared_string_disable : R.string.shared_string_enable);
enableDisableItem.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
enableDisablePlugin(plugin);
optionsMenu.dismiss();
return true;
}
});
final SettingsScreenType settingsScreenType = plugin.getSettingsScreenType();
if (settingsScreenType != null && plugin.isActive()) {
MenuItem settingsItem = optionsMenu.getMenu().add(R.string.shared_string_settings);
settingsItem.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
FragmentActivity activity = getActivity();
if (activity != null) {
BaseSettingsFragment.showInstance(activity, settingsScreenType);
}
optionsMenu.dismiss();
return true;
}
});
}
if (plugin instanceof CustomOsmandPlugin) {
MenuItem settingsItem = optionsMenu.getMenu().add(R.string.shared_string_delete);
settingsItem.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
showDeletePluginDialog((CustomOsmandPlugin) plugin);
optionsMenu.dismiss();
return true;
}
});
}
optionsMenu.show();
}
use of net.osmand.plus.settings.fragments.BaseSettingsFragment.SettingsScreenType in project Osmand by osmandapp.
the class IntentHelper method parseContentIntent.
public void parseContentIntent() {
final Intent intent = mapActivity.getIntent();
if (intent != null) {
if (Intent.ACTION_VIEW.equals(intent.getAction())) {
final Uri data = intent.getData();
if (data != null) {
final String scheme = data.getScheme();
if ("file".equals(scheme)) {
final String path = data.getPath();
if (path != null) {
mapActivity.getImportHelper().handleFileImport(data, new File(path).getName(), intent.getExtras(), true);
}
clearIntent(intent);
} else if ("content".equals(scheme)) {
mapActivity.getImportHelper().handleContentImport(data, intent.getExtras(), true);
clearIntent(intent);
} else if ("google.navigation".equals(scheme) || "osmand.navigation".equals(scheme)) {
parseNavigationIntent(intent);
} else if ("osmand.api".equals(scheme)) {
ExternalApiHelper apiHelper = new ExternalApiHelper(mapActivity);
Intent result = apiHelper.processApiRequest(intent);
mapActivity.setResult(apiHelper.getResultCode(), result);
result.setAction(null);
mapActivity.setIntent(result);
if (apiHelper.needFinish()) {
mapActivity.finish();
}
} else if (LauncherShortcutsHelper.INTENT_SCHEME.equals(scheme)) {
app.getLauncherShortcutsHelper().parseIntent(mapActivity, intent);
clearIntent(intent);
}
}
}
if (intent.hasExtra(MapMarkersDialogFragment.OPEN_MAP_MARKERS_GROUPS)) {
Bundle openMapMarkersGroupsExtra = intent.getBundleExtra(MapMarkersDialogFragment.OPEN_MAP_MARKERS_GROUPS);
if (openMapMarkersGroupsExtra != null) {
MapMarkersDialogFragment.showInstance(mapActivity, openMapMarkersGroupsExtra.getString(MapMarkersGroup.MARKERS_SYNC_GROUP_ID));
}
mapActivity.setIntent(null);
}
if (intent.hasExtra(BaseSettingsFragment.OPEN_SETTINGS)) {
String appMode = intent.getStringExtra(BaseSettingsFragment.APP_MODE_KEY);
String settingsTypeName = intent.getStringExtra(BaseSettingsFragment.OPEN_SETTINGS);
if (!Algorithms.isEmpty(settingsTypeName)) {
try {
SettingsScreenType screenType = SettingsScreenType.valueOf(settingsTypeName);
BaseSettingsFragment.showInstance(mapActivity, screenType, ApplicationMode.valueOfStringKey(appMode, null));
} catch (IllegalArgumentException e) {
LOG.error("error", e);
}
}
mapActivity.setIntent(null);
}
if (intent.hasExtra(PluginsFragment.OPEN_PLUGINS)) {
boolean openPlugins = intent.getBooleanExtra(PluginsFragment.OPEN_PLUGINS, false);
if (openPlugins) {
PluginsFragment.showInstance(mapActivity.getSupportFragmentManager());
}
mapActivity.setIntent(null);
}
if (intent.hasExtra(BaseSettingsFragment.OPEN_CONFIG_ON_MAP)) {
switch(intent.getStringExtra(BaseSettingsFragment.OPEN_CONFIG_ON_MAP)) {
case BaseSettingsFragment.MAP_CONFIG:
mapActivity.getDashboard().setDashboardVisibility(true, DashboardType.CONFIGURE_MAP, null);
break;
case BaseSettingsFragment.SCREEN_CONFIG:
mapActivity.getDashboard().setDashboardVisibility(true, DashboardType.CONFIGURE_SCREEN, null);
break;
}
mapActivity.setIntent(null);
}
if (intent.hasExtra(TrackMenuFragment.OPEN_TRACK_MENU)) {
String path = intent.getStringExtra(TRACK_FILE_NAME);
String name = intent.getStringExtra(RETURN_SCREEN_NAME);
String tabName = intent.getStringExtra(OPEN_TAB_NAME);
boolean currentRecording = intent.getBooleanExtra(CURRENT_RECORDING, false);
TrackMenuFragment.showInstance(mapActivity, path, currentRecording, name, null, tabName);
mapActivity.setIntent(null);
}
if (intent.getExtras() != null) {
Bundle extras = intent.getExtras();
if (extras.containsKey(ChoosePlanFragment.OPEN_CHOOSE_PLAN)) {
String featureValue = extras.getString(ChoosePlanFragment.CHOOSE_PLAN_FEATURE);
if (!Algorithms.isEmpty(featureValue)) {
try {
OsmAndFeature feature = OsmAndFeature.valueOf(featureValue);
if (feature == OsmAndFeature.ANDROID_AUTO) {
if (!InAppPurchaseHelper.isAndroidAutoAvailable(app)) {
ChoosePlanFragment.showInstance(mapActivity, feature);
}
} else {
ChoosePlanFragment.showInstance(mapActivity, feature);
}
} catch (Exception e) {
LOG.error(e.getMessage(), e);
}
}
}
clearIntent(intent);
}
}
}
Aggregations