Implemented profile color for few dialogs

This commit is contained in:
Nazar 2019-12-27 16:32:56 +02:00
parent 790b10e2ac
commit b295198f8b
10 changed files with 272 additions and 139 deletions

View file

@ -6,46 +6,57 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:paddingLeft="@dimen/context_menu_padding_margin_large"
android:paddingRight="@dimen/context_menu_padding_margin_large"
android:paddingTop="@dimen/context_menu_padding_margin_large"
android:paddingBottom="@dimen/context_menu_padding_margin_large"
android:orientation="vertical">
<TextView
android:textColor="?android:textColorSecondary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/shared_string_name"/>
<EditText
android:id="@+id/Name"
android:textColor="?android:textColorPrimary"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:layout_marginLeft="@dimen/text_margin_small"
android:layout_marginRight="@dimen/text_margin_small"
android:text="">
<requestFocus/>
</EditText>
<TextView
android:textColor="?android:textColorSecondary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:scrollHorizontally="true"
android:layout_marginTop="@dimen/content_padding_half"
android:text="@string/edit_tilesource_choose_existing"/>
<Spinner
android:id="@+id/TileSourceSpinner"
android:textColor="?android:textColorPrimary"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"/>
android:layout_marginLeft="@dimen/text_margin_small"
android:layout_marginRight="@dimen/text_margin_small"/>
<TextView
android:textColor="?android:textColorSecondary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/content_padding_half"
android:text="@string/edit_tilesource_url_to_load"/>
<EditText
android:id="@+id/URLToLoad"
android:textColor="?android:textColorPrimary"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:lines="5"
@ -53,43 +64,52 @@
android:text=""/>
<TextView
android:layout_marginTop="@dimen/content_padding_half"
android:textColor="?android:textColorSecondary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/edit_tilesource_minzoom"/>
<EditText
android:id="@+id/MinZoom"
android:textColor="?android:textColorPrimary"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text=""/>
<TextView
android:layout_marginTop="@dimen/content_padding_half"
android:textColor="?android:textColorSecondary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/edit_tilesource_maxzoom"/>
<EditText
android:id="@+id/MaxZoom"
android:textColor="?android:textColorPrimary"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text=""/>
<TextView
android:layout_marginTop="@dimen/content_padding_half"
android:textColor="?android:textColorSecondary"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="@string/edit_tilesource_expiration_time"/>
<EditText
android:id="@+id/ExpirationTime"
android:textColor="?android:textColorPrimary"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text=""/>
<CheckBox
<android.support.v7.widget.AppCompatCheckBox
android:id="@+id/EllipticMercator"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="5dp"
android:layout_marginTop="@dimen/content_padding_half"
android:text="@string/edit_tilesource_elliptic_tile"/>
</LinearLayout>

View file

@ -27,14 +27,14 @@ public class DialogListItemAdapter extends BaseAdapter {
public static DialogListItemAdapter createSingleChoiceAdapter(String[] mData, boolean nightMode, int selected, OsmandApplication app,
@ColorInt int compoundButtonColor, int themeRes, final View.OnClickListener listener) {
return new DialogListItemAdapter(mData, selected, null, nightMode, app,
compoundButtonColor, themeRes, listener, false);
return new DialogListItemAdapter(mData, selected, null, nightMode, app, compoundButtonColor, themeRes, listener, false);
}
public static DialogListItemAdapter createMultiChoiceAdapter(String[] mData, boolean nightMode, boolean checkedItems[], OsmandApplication app,
@ColorInt int compoundButtonColor, int themeRes, final View.OnClickListener listener) {
return new DialogListItemAdapter(mData, INVALID_ID, checkedItems, nightMode, app,
compoundButtonColor, themeRes, listener, true);
return new DialogListItemAdapter(mData, INVALID_ID, checkedItems, nightMode, app, compoundButtonColor, themeRes, listener, true);
}
private DialogListItemAdapter(String[] mData, int selected, boolean[] checkedItems, boolean nightMode, OsmandApplication app,

View file

@ -4,6 +4,7 @@ package net.osmand.plus.activities;
import android.content.DialogInterface;
import android.graphics.drawable.Drawable;
import android.support.annotation.Nullable;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AlertDialog;
import android.support.v7.view.ContextThemeWrapper;
import android.view.View;
@ -22,6 +23,7 @@ import net.osmand.plus.ContextMenuAdapter;
import net.osmand.plus.ContextMenuItem;
import net.osmand.GPXUtilities.GPXFile;
import net.osmand.GPXUtilities.WptPt;
import net.osmand.plus.DialogListItemAdapter;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.OsmandPlugin;
import net.osmand.plus.OsmandSettings;
@ -493,80 +495,85 @@ public class MapActivityLayers {
items[i++] = entry.getValue();
}
builder.setSingleChoiceItems(items, selectedItem, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String layerKey = entriesMapList.get(which).getKey();
switch (layerKey) {
case layerOsmVector:
settings.MAP_ONLINE_DATA.set(false);
updateMapSource(mapView, null);
updateItem(it, adapter, null);
break;
case layerEditInstall:
OsmandRasterMapsPlugin.defineNewEditLayer(activity, new ResultMatcher<TileSourceTemplate>() {
OsmandApplication app = getApplication();
boolean nightMode = isNightMode(app);
int themeRes = getThemeRes(app);
int selectedModeColor = ContextCompat.getColor(app, settings.getApplicationMode().getIconColorInfo().getColor(nightMode));
DialogListItemAdapter dialogAdapter = DialogListItemAdapter.createSingleChoiceAdapter(
items, nightMode, selectedItem, app, selectedModeColor, themeRes, new View.OnClickListener() {
@Override
public void onClick(View v) {
int which = (int) v.getTag();
String layerKey = entriesMapList.get(which).getKey();
switch (layerKey) {
case layerOsmVector:
settings.MAP_ONLINE_DATA.set(false);
updateMapSource(mapView, null);
updateItem(it, adapter, null);
break;
case layerEditInstall:
OsmandRasterMapsPlugin.defineNewEditLayer(activity, new ResultMatcher<TileSourceTemplate>() {
@Override
public boolean publish(TileSourceTemplate object) {
settings.MAP_TILE_SOURCES.set(object.getName());
settings.MAP_ONLINE_DATA.set(true);
if(it != null) {
it.setDescription(object.getName());
}
updateMapSource(mapView, settings.MAP_TILE_SOURCES);
return true;
}
@Override
public boolean isCancelled() {
return false;
}
});
break;
case layerInstallMore:
OsmandRasterMapsPlugin.installMapLayers(activity, new ResultMatcher<TileSourceTemplate>() {
TileSourceTemplate template = null;
int count = 0;
@Override
public boolean publish(TileSourceTemplate object) {
if (object == null) {
if (count == 1) {
settings.MAP_TILE_SOURCES.set(template.getName());
@Override
public boolean publish(TileSourceTemplate object) {
settings.MAP_TILE_SOURCES.set(object.getName());
settings.MAP_ONLINE_DATA.set(true);
updateItem(it, adapter, template.getName());
if(it != null) {
it.setDescription(object.getName());
}
updateMapSource(mapView, settings.MAP_TILE_SOURCES);
} else {
selectMapLayer(mapView, it, adapter);
return true;
}
} else {
count++;
template = object;
}
return false;
}
@Override
public boolean isCancelled() {
return false;
}
});
break;
default:
settings.MAP_TILE_SOURCES.set(layerKey);
settings.MAP_ONLINE_DATA.set(true);
updateItem(it, adapter, layerKey);
updateMapSource(mapView, settings.MAP_TILE_SOURCES);
break;
@Override
public boolean isCancelled() {
return false;
}
});
break;
case layerInstallMore:
OsmandRasterMapsPlugin.installMapLayers(activity, new ResultMatcher<TileSourceTemplate>() {
TileSourceTemplate template = null;
int count = 0;
@Override
public boolean publish(TileSourceTemplate object) {
if (object == null) {
if (count == 1) {
settings.MAP_TILE_SOURCES.set(template.getName());
settings.MAP_ONLINE_DATA.set(true);
updateItem(it, adapter, template.getName());
updateMapSource(mapView, settings.MAP_TILE_SOURCES);
} else {
selectMapLayer(mapView, it, adapter);
}
} else {
count++;
template = object;
}
return false;
}
@Override
public boolean isCancelled() {
return false;
}
});
break;
default:
settings.MAP_TILE_SOURCES.set(layerKey);
settings.MAP_ONLINE_DATA.set(true);
updateItem(it, adapter, layerKey);
updateMapSource(mapView, settings.MAP_TILE_SOURCES);
break;
}
}
}
dialog.dismiss();
}
});
);
builder.setAdapter(dialogAdapter, null);
builder.setNegativeButton(R.string.shared_string_dismiss, null);
builder.show();
dialogAdapter.setDialog(builder.show());
}
private void updateItem(@Nullable ContextMenuItem item,

View file

@ -2,6 +2,7 @@ package net.osmand.plus.activities.actions;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.OsmandSettings;
import net.osmand.plus.R;
import net.osmand.plus.activities.MapActivity;
import net.osmand.plus.views.OsmandMapTileView;
import android.app.Activity;
@ -55,4 +56,12 @@ public class OsmAndAction {
public void showDialog() {
mapActivity.showDialog(getDialogID());
}
public boolean isNightMode() {
return mapActivity.getMyApplication().getDaynightHelper().isNightModeForMapControls();
}
public int getThemeRes() {
return isNightMode() ? R.style.OsmandDarkTheme : R.style.OsmandLightTheme;
}
}

View file

@ -9,13 +9,14 @@ import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AlertDialog;
import android.support.v7.widget.AppCompatCheckBox;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.CheckBox;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
import android.widget.ListView;
@ -24,6 +25,7 @@ import android.widget.Toast;
import net.osmand.AndroidUtils;
import net.osmand.plus.R;
import net.osmand.plus.UiUtilities;
import net.osmand.plus.Version;
import net.osmand.plus.activities.MapActivity;
@ -111,11 +113,16 @@ public class StartGPSStatus extends OsmAndAction {
final int dp12 = AndroidUtils.dpToPx(mapActivity, 12f);
final int dp8 = AndroidUtils.dpToPx(mapActivity, 8f);
lv.setPadding(0, dp8, 0, dp8);
final CheckBox cb = new CheckBox(activity);
final AppCompatCheckBox cb = new AppCompatCheckBox(activity);
cb.setText(R.string.shared_string_remember_my_choice);
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
lp.setMargins(dp24, dp8, dp8, dp24);
cb.setLayoutParams(lp);
cb.setPadding(dp8, 0, 0, 0);
int textColorPrimary = ContextCompat.getColor(activity, isNightMode() ? R.color.text_color_primary_dark : R.color.text_color_primary_light);
int selectedModeColor = ContextCompat.getColor(activity, getSettings().getApplicationMode().getIconColorInfo().getColor(isNightMode()));
cb.setTextColor(textColorPrimary);
UiUtilities.setupCompoundButton(isNightMode(), selectedModeColor, cb);
final int layout = R.layout.list_menu_item_native;
final ArrayAdapter<GpsStatusApps> adapter = new ArrayAdapter<GpsStatusApps>(mapActivity, layout, GpsStatusApps.values()) {

View file

@ -1,12 +1,16 @@
package net.osmand.plus.osmedit;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AlertDialog;
import android.view.ContextThemeWrapper;
import android.view.View;
import android.widget.ArrayAdapter;
import net.osmand.plus.ContextMenuAdapter;
import net.osmand.plus.ContextMenuItem;
import net.osmand.plus.DialogListItemAdapter;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.OsmandPlugin;
import net.osmand.plus.OsmandSettings;
import net.osmand.plus.OsmandSettings.CommonPreference;
@ -31,13 +35,18 @@ public class OsmNotesMenu {
}
private static void createLayersItems(final ContextMenuAdapter adapter, final MapActivity mapActivity) {
final OsmandSettings settings = mapActivity.getMyApplication().getSettings();
final OsmandApplication app = mapActivity.getMyApplication();
final OsmandSettings settings = app.getSettings();
final OsmEditingPlugin plugin = OsmandPlugin.getPlugin(OsmEditingPlugin.class);
if (plugin == null) {
return;
}
final boolean nightMode = isNightMode(app);
final int themeRes = getThemeRes(app);
final int selectedModeColor = ContextCompat.getColor(app, settings.getApplicationMode().getIconColorInfo().getColor(nightMode));
final int osmNotesStringId = R.string.layer_osm_bugs;
final int showZoomLevelStringId = R.string.show_from_zoom_level;
final int showClosedNotesStringId = R.string.show_closed_notes;
@ -60,11 +69,11 @@ public class OsmNotesMenu {
} else if (itemId == showZoomLevelStringId) {
int checked = Arrays.asList(zoomIntValues).indexOf(showOsmBugsZoomPref.get());
new AlertDialog.Builder(mapActivity)
.setTitle(R.string.show_from_zoom_level)
.setSingleChoiceItems(zoomStrings, checked, new DialogInterface.OnClickListener() {
DialogListItemAdapter dialogAdapter = DialogListItemAdapter.createSingleChoiceAdapter(
zoomStrings, nightMode, checked, app, selectedModeColor, themeRes, new View.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
public void onClick(View v) {
int which = (int) v.getTag();
showOsmBugsZoomPref.set(zoomIntValues[which]);
ContextMenuItem item = adapter.getItem(position);
if (item != null) {
@ -72,11 +81,14 @@ public class OsmNotesMenu {
adapter.notifyDataSetChanged();
}
mapActivity.refreshMap();
dialog.dismiss();
}
})
.setNegativeButton(R.string.shared_string_dismiss, null)
.show();
}
);
AlertDialog.Builder b = new AlertDialog.Builder(new ContextThemeWrapper(mapActivity, themeRes))
.setTitle(R.string.show_from_zoom_level)
.setAdapter(dialogAdapter, null)
.setNegativeButton(R.string.shared_string_dismiss, null);
dialogAdapter.setDialog(b.show());
} else if (itemId == showClosedNotesStringId) {
showClosedOsmBugsPref.set(isChecked);
mapActivity.refreshMap();
@ -86,7 +98,6 @@ public class OsmNotesMenu {
};
boolean showOsmBugs = showOsmBugsPref.get();
boolean nightMode = mapActivity.getMyApplication().getDaynightHelper().isNightModeForMapControls();
int toggleIconColorId;
if (showOsmBugs) {
toggleIconColorId = nightMode ? R.color.active_color_primary_dark : R.color.active_color_primary_light;
@ -135,4 +146,15 @@ public class OsmNotesMenu {
}
return res;
}
public static boolean isNightMode(OsmandApplication app) {
if (app == null) {
return false;
}
return app.getDaynightHelper().isNightModeForMapControls();
}
public static int getThemeRes(OsmandApplication app) {
return isNightMode(app) ? R.style.OsmandDarkTheme : R.style.OsmandLightTheme;
}
}

View file

@ -5,7 +5,9 @@ import android.content.DialogInterface;
import android.os.AsyncTask;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AlertDialog;
import android.support.v7.widget.AppCompatCheckBox;
import android.view.ContextThemeWrapper;
import android.view.View;
import android.widget.AdapterView;
@ -26,6 +28,7 @@ import net.osmand.map.TileSourceManager.TileSourceTemplate;
import net.osmand.plus.ContextMenuAdapter;
import net.osmand.plus.ContextMenuAdapter.ItemClickListener;
import net.osmand.plus.ContextMenuItem;
import net.osmand.plus.DialogListItemAdapter;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.OsmandPlugin;
import net.osmand.plus.OsmandSettings;
@ -433,16 +436,22 @@ public class OsmandRasterMapsPlugin extends OsmandPlugin {
names[i] = downloaded.get(i).getName();
}
final boolean[] selected = new boolean[downloaded.size()];
builder.setMultiChoiceItems(names, selected, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
selected[which] = isChecked;
if (entriesMap.containsKey(downloaded.get(which).getName()) && isChecked) {
Toast.makeText(activity, R.string.tile_source_already_installed, Toast.LENGTH_SHORT).show();
boolean nightMode = isNightMode(activity, app);
int themeResId = getThemeRes(activity, app);
int selectedProfileColor = ContextCompat.getColor(app, app.getSettings().getApplicationMode().getIconColorInfo().getColor(nightMode));
DialogListItemAdapter dialogAdapter = DialogListItemAdapter.createMultiChoiceAdapter(names, nightMode, selected, app,
selectedProfileColor, themeResId, new View.OnClickListener() {
@Override
public void onClick(View v) {
int which = (int) v.getTag();
selected[which] = !selected[which];
if (entriesMap.containsKey(downloaded.get(which).getName()) && selected[which]) {
Toast.makeText(activity, R.string.tile_source_already_installed, Toast.LENGTH_SHORT).show();
}
}
}
}
});
);
builder.setAdapter(dialogAdapter, null);
builder.setNegativeButton(R.string.shared_string_cancel, null);
builder.setTitle(R.string.select_tile_source_to_install);
builder.setPositiveButton(R.string.shared_string_apply, new DialogInterface.OnClickListener() {
@ -467,8 +476,7 @@ public class OsmandRasterMapsPlugin extends OsmandPlugin {
}
}
});
builder.show();
dialogAdapter.setDialog(builder.show());
}
};
t.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
@ -478,6 +486,9 @@ public class OsmandRasterMapsPlugin extends OsmandPlugin {
final OsmandApplication app = (OsmandApplication) activity.getApplication();
final OsmandSettings settings = app.getSettings();
final Map<String, String> entriesMap = settings.getTileSourceEntries(false);
boolean nightMode = isNightMode(activity, app);
final int dp8 = AndroidUtils.dpToPx(app, 8f);
int textColorPrimary = ContextCompat.getColor(app, nightMode ? R.color.text_color_primary_dark : R.color.text_color_primary_light);
TileSourceTemplate ts = new TileSourceTemplate("NewMapnik", "http://mapnik.osmand.net/{0}/{1}/{2}.png",
"png", 17, 5, 256, 16, 32000);
final TileSourceTemplate[] result = new TileSourceTemplate[]{ts};
@ -489,7 +500,10 @@ public class OsmandRasterMapsPlugin extends OsmandPlugin {
final EditText minZoom = (EditText) view.findViewById(R.id.MinZoom);
final EditText maxZoom = (EditText) view.findViewById(R.id.MaxZoom);
final EditText expire = (EditText) view.findViewById(R.id.ExpirationTime);
final CheckBox elliptic = (CheckBox) view.findViewById(R.id.EllipticMercator);
final AppCompatCheckBox elliptic = (AppCompatCheckBox) view.findViewById(R.id.EllipticMercator);
elliptic.setTextColor(textColorPrimary);
elliptic.setPadding(dp8, 0, 0, 0);
UiUtilities.setupCompoundButton(app, elliptic, nightMode, true);
updateTileSourceEditView(ts, name, urlToLoad, minZoom, maxZoom, expire, elliptic);
final ArrayList<String> templates = new ArrayList<>(entriesMap.keySet());

View file

@ -4,14 +4,16 @@ import android.app.Activity;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Build;
import android.support.annotation.DrawableRes;
import android.support.annotation.NonNull;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AlertDialog;
import android.support.v7.widget.AppCompatCheckedTextView;
import android.util.TypedValue;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
import net.osmand.CallbackWithObject;
import net.osmand.GPXUtilities;
@ -21,6 +23,7 @@ import net.osmand.data.LatLon;
import net.osmand.plus.ApplicationMode;
import net.osmand.plus.ContextMenuAdapter;
import net.osmand.plus.ContextMenuItem;
import net.osmand.plus.DialogListItemAdapter;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.OsmandSettings;
import net.osmand.plus.R;
@ -144,26 +147,33 @@ public class RoutingOptionsHelper {
entries[k] = mapActivity.getResources().getString(R.string.install_more);
adapter.addItem(itemBuilder.setTitle(entries[k]).createItem());
AlertDialog.Builder bld = new AlertDialog.Builder(mapActivity);
bld.setSingleChoiceItems(entries, selected, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String value = entrieValues[which];
if (MORE_VALUE.equals(value)) {
final Intent intent = new Intent(mapActivity, DownloadActivity.class);
intent.putExtra(DownloadActivity.TAB_TO_OPEN, DownloadActivity.DOWNLOAD_TAB);
intent.putExtra(DownloadActivity.FILTER_CAT, DownloadActivityType.VOICE_FILE.getTag());
mapActivity.startActivity(intent);
} else {
if (callback != null) {
callback.processResult(value);
boolean nightMode = isNightMode(app);
Context themedContext = UiUtilities.getThemedContext(mapActivity, nightMode);
int themeRes = getThemeRes(app);
ApplicationMode selectedAppMode = app.getRoutingHelper().getAppMode();
int selectedModeColor = ContextCompat.getColor(app, selectedAppMode.getIconColorInfo().getColor(nightMode));
DialogListItemAdapter dialogAdapter = DialogListItemAdapter.createSingleChoiceAdapter(
entries, nightMode, selected, app, selectedModeColor, themeRes, new View.OnClickListener() {
@Override
public void onClick(View v) {
int which = (int) v.getTag();
String value = entrieValues[which];
if (MORE_VALUE.equals(value)) {
final Intent intent = new Intent(mapActivity, DownloadActivity.class);
intent.putExtra(DownloadActivity.TAB_TO_OPEN, DownloadActivity.DOWNLOAD_TAB);
intent.putExtra(DownloadActivity.FILTER_CAT, DownloadActivityType.VOICE_FILE.getTag());
mapActivity.startActivity(intent);
} else {
if (callback != null) {
callback.processResult(value);
}
}
}
}
dialog.dismiss();
}
});
bld.show();
);
AlertDialog.Builder bld = new AlertDialog.Builder(themedContext);
bld.setAdapter(dialogAdapter, null);
dialogAdapter.setDialog(bld.show());
}
public String getVoiceProviderName(Context ctx, String value) {
@ -315,8 +325,10 @@ public class RoutingOptionsHelper {
selectedIndex = 0;
}
final boolean nightMode = app.getDaynightHelper().isNightModeForMapControls();
final boolean nightMode = isNightMode(app);
Context themedContext = UiUtilities.getThemedContext(mapActivity, nightMode);
ApplicationMode selectedAppMode = app.getRoutingHelper().getAppMode();
final int selectedModeColor = ContextCompat.getColor(app, selectedAppMode.getIconColorInfo().getColor(nightMode));
AlertDialog.Builder builder = new AlertDialog.Builder(themedContext);
final int layout = R.layout.list_menu_item_native_singlechoice;
@ -330,9 +342,12 @@ public class RoutingOptionsHelper {
v = UiUtilities.getInflater(mapActivity, nightMode).inflate(layout, parent, false);
}
final ContextMenuItem item = adapter.getItem(position);
TextView tv = (TextView) v.findViewById(R.id.text1);
AppCompatCheckedTextView tv = (AppCompatCheckedTextView) v.findViewById(R.id.text1);
tv.setText(item.getTitle());
tv.setTextSize(TypedValue.COMPLEX_UNIT_SP, 16f);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
UiUtilities.setupCompoundButtonDrawable(app, nightMode, selectedModeColor, tv.getCheckMarkDrawable());
}
return v;
}
@ -590,6 +605,17 @@ public class RoutingOptionsHelper {
return parameter;
}
public boolean isNightMode(OsmandApplication app) {
if (app == null) {
return false;
}
return app.getDaynightHelper().isNightModeForMapControls();
}
public int getThemeRes(OsmandApplication app) {
return isNightMode(app) ? R.style.OsmandDarkTheme : R.style.OsmandLightTheme;
}
public static class LocalRoutingParameter {

View file

@ -37,7 +37,7 @@ public class ContourLinesMenu {
if (plugin != null && !plugin.isActive() && !plugin.needsInstallation()) {
OsmandPlugin.enablePlugin(mapActivity, mapActivity.getMyApplication(), plugin, true);
}
boolean nightMode = mapActivity.getMyApplication().getDaynightHelper().isNightModeForMapControls();
boolean nightMode = isNightMode(mapActivity.getMyApplication());
ContextMenuAdapter adapter = new ContextMenuAdapter();
adapter.setDefaultLayoutId(R.layout.list_item_icon_and_menu);
adapter.setProfileDependent(true);
@ -329,6 +329,13 @@ public class ContourLinesMenu {
}
}
}
public static boolean isNightMode(OsmandApplication app) {
if (app == null) {
return false;
}
return app.getDaynightHelper().isNightModeForMapControls();
}
public static void closeDashboard(MapActivity mapActivity) {
mapActivity.getDashboard().hideDashboard(false);

View file

@ -4,7 +4,9 @@ import android.app.Activity;
import android.content.Context;
import android.content.DialogInterface;
import android.support.annotation.NonNull;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AlertDialog;
import android.view.ContextThemeWrapper;
import android.view.View;
import android.widget.ArrayAdapter;
@ -13,6 +15,7 @@ import net.osmand.data.LatLon;
import net.osmand.plus.ApplicationMode;
import net.osmand.plus.ContextMenuAdapter;
import net.osmand.plus.ContextMenuItem;
import net.osmand.plus.DialogListItemAdapter;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.OsmandPlugin;
import net.osmand.plus.OsmandSettings;
@ -359,7 +362,9 @@ public class SRTMPlugin extends OsmandPlugin {
final Runnable callback) {
final String propertyDescr = SettingsActivity.getStringPropertyDescription(activity,
p.getAttrName(), p.getName());
AlertDialog.Builder b = new AlertDialog.Builder(activity);
boolean nightMode = isNightMode(activity, app);
int themeRes = getThemeRes(activity, app);
AlertDialog.Builder b = new AlertDialog.Builder(new ContextThemeWrapper(activity, themeRes));
b.setTitle(propertyDescr);
List<String> possibleValuesList = new ArrayList<>(Arrays.asList(p.getPossibleValues()));
@ -382,18 +387,22 @@ public class SRTMPlugin extends OsmandPlugin {
possibleValues[j]);
}
b.setSingleChoiceItems(possibleValuesString, i, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if (which == 0) {
pref.set("");
} else {
pref.set(possibleValues[which - 1]);
int selectedModeColor = ContextCompat.getColor(app, settings.getApplicationMode().getIconColorInfo().getColor(nightMode));
DialogListItemAdapter dialogAdapter = DialogListItemAdapter.createSingleChoiceAdapter(
possibleValuesString, nightMode, i, app, selectedModeColor, themeRes, new View.OnClickListener() {
@Override
public void onClick(View v) {
int which = (int) v.getTag();
if (which == 0) {
pref.set("");
} else {
pref.set(possibleValues[which - 1]);
}
refreshMapComplete(activity);
}
}
refreshMapComplete(activity);
dialog.dismiss();
}
});
);
b.setNegativeButton(R.string.shared_string_dismiss, null);
b.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
@ -403,7 +412,8 @@ public class SRTMPlugin extends OsmandPlugin {
}
}
});
b.show();
b.setAdapter(dialogAdapter, null);
dialogAdapter.setDialog(b.show());
}
@Override
@ -420,4 +430,15 @@ public class SRTMPlugin extends OsmandPlugin {
activity.updateMapSettings();
activity.getMapView().refreshMap(true);
}
private static boolean isNightMode(Activity activity, OsmandApplication app) {
if (activity == null || app == null) {
return false;
}
return activity instanceof MapActivity ? app.getDaynightHelper().isNightModeForMapControls() : !app.getSettings().isLightContent();
}
private static int getThemeRes(Activity activity, OsmandApplication app) {
return isNightMode(activity, app) ? R.style.OsmandDarkTheme : R.style.OsmandLightTheme;
}
}