Skip to content

Commit

Permalink
Merge branch 'r4.5'
Browse files Browse the repository at this point in the history
  • Loading branch information
Chumva committed Jul 31, 2023
2 parents 0b85d33 + 921e711 commit 54ab6d9
Show file tree
Hide file tree
Showing 5 changed files with 85 additions and 69 deletions.
22 changes: 0 additions & 22 deletions OsmAnd/src/net/osmand/plus/myplaces/MyPlacesActivity.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package net.osmand.plus.myplaces;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.MenuItem;
Expand All @@ -12,23 +11,19 @@
import androidx.viewpager.widget.ViewPager;
import androidx.viewpager.widget.ViewPager.SimpleOnPageChangeListener;

import net.osmand.PlatformUtil;
import net.osmand.data.PointDescription;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.R;
import net.osmand.plus.activities.MapActivity;
import net.osmand.plus.activities.TabActivity;
import net.osmand.plus.backup.ui.BackupAuthorizationFragment;
import net.osmand.plus.importfiles.ImportHelper;
import net.osmand.plus.myplaces.favorites.dialogs.FavoritesTreeFragment;
import net.osmand.plus.myplaces.favorites.dialogs.FragmentStateHolder;
import net.osmand.plus.myplaces.tracks.dialogs.AvailableTracksFragment;
import net.osmand.plus.plugins.PluginsHelper;
import net.osmand.plus.settings.backend.OsmandSettings;
import net.osmand.plus.views.controls.PagerSlidingTabStrip;

import org.apache.commons.logging.Log;

import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.List;
Expand All @@ -38,18 +33,13 @@
*/
public class MyPlacesActivity extends TabActivity {

private static final Log LOG = PlatformUtil.getLog(MyPlacesActivity.class);

public static final int OPEN_GPX_DOCUMENT_REQUEST = 1006;
public static final int IMPORT_FAVOURITES_REQUEST = 1007;

public static final String TAB_ID = "selected_tab_id";

public static final int GPX_TAB = R.string.shared_string_tracks;
public static final int FAV_TAB = R.string.shared_string_my_favorites;

private OsmandSettings settings;
private ImportHelper importHelper;

private ViewPager viewPager;
private List<WeakReference<FragmentStateHolder>> fragmentsStateList = new ArrayList<>();
Expand All @@ -61,7 +51,6 @@ public class MyPlacesActivity extends TabActivity {
public void onCreate(@Nullable Bundle savedInstanceState) {
OsmandApplication app = getMyApplication();
settings = app.getSettings();
importHelper = new ImportHelper(this);
app.applyTheme(this);
super.onCreate(savedInstanceState);

Expand Down Expand Up @@ -95,17 +84,6 @@ public void onCreate(@Nullable Bundle savedInstanceState) {
}
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == IMPORT_FAVOURITES_REQUEST && resultCode == Activity.RESULT_OK) {
if (data != null && data.getData() != null) {
importHelper.handleFavouritesImport(data.getData());
}
} else {
super.onActivityResult(requestCode, resultCode, data);
}
}

private void setTabs(@NonNull List<TabItem> tabItems) {
PagerSlidingTabStrip mSlidingTabLayout = findViewById(R.id.sliding_tabs);
Integer tabId = settings.FAVORITES_TAB.get();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,9 @@
import static net.osmand.plus.OsmAndLocationProvider.OsmAndCompassListener;
import static net.osmand.plus.OsmAndLocationProvider.OsmAndLocationListener;
import static net.osmand.plus.myplaces.MyPlacesActivity.FAV_TAB;
import static net.osmand.plus.myplaces.MyPlacesActivity.IMPORT_FAVOURITES_REQUEST;
import static net.osmand.plus.myplaces.MyPlacesActivity.TAB_ID;
import static net.osmand.plus.widgets.dialogbutton.DialogButtonType.SECONDARY;

import android.app.Activity;
import android.content.Intent;
import android.graphics.PorterDuff;
import android.graphics.Typeface;
Expand Down Expand Up @@ -81,17 +80,19 @@
public class FavoritesTreeFragment extends OsmandExpandableListFragment implements FragmentStateHolder,
OsmAndCompassListener, OsmAndLocationListener, ShareFavoritesListener {

public static final int SEARCH_ID = -1;
public static final int DELETE_ID = 2;
public static final int DELETE_ACTION_ID = 3;
public static final int SHARE_ID = 4;
public static final int SELECT_MAP_MARKERS_ID = 5;
public static final int SELECT_MAP_MARKERS_ACTION_MODE_ID = 6;
public static final int IMPORT_FAVOURITES_ID = 7;
public static final String GROUP_EXPANDED_POSTFIX = "_group_expanded";
private static final int IMPORT_FAVOURITES_REQUEST = 1007;
private static final int SEARCH_ID = -1;
private static final int DELETE_ID = 2;
private static final int DELETE_ACTION_ID = 3;
private static final int SHARE_ID = 4;
private static final int SELECT_MAP_MARKERS_ID = 5;
private static final int SELECT_MAP_MARKERS_ACTION_MODE_ID = 6;
private static final int IMPORT_FAVOURITES_ID = 7;
private static final String GROUP_EXPANDED_POSTFIX = "_group_expanded";

private FavouritesHelper helper;
private FavouritesAdapter favouritesAdapter;
private ImportHelper importHelper;

private boolean selectionMode;
private final LinkedHashMap<String, Set<FavouritePoint>> favoritesSelected = new LinkedHashMap<>();
Expand Down Expand Up @@ -119,6 +120,7 @@ public class FavoritesTreeFragment extends OsmandExpandableListFragment implemen
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
favouritesAdapter = new FavouritesAdapter();
importHelper = new ImportHelper(requireActivity());

helper = app.getFavoritesHelper();
if (helper.isFavoritesLoaded()) {
Expand Down Expand Up @@ -179,10 +181,11 @@ public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
boolean nightMode = !app.getSettings().isLightContent();
View searchView = inflater.inflate(R.layout.search_fav_list_item, listView, false);
searchView.setBackgroundResource(ColorUtilities.getListBgColorId(nightMode));

TextView title = searchView.findViewById(R.id.title);
Drawable searchIcon = app.getUIUtilities().getThemedIcon(R.drawable.ic_action_search_dark);
Drawable searchIcon = getContentIcon(R.drawable.ic_action_search_dark);
AndroidUtils.setCompoundDrawablesWithIntrinsicBounds(title, searchIcon, null, null, null);
searchView.setOnClickListener(v -> FavoritesSearchFragment.showInstance(getActivity(), ""));
searchView.setOnClickListener(v -> FavoritesSearchFragment.showInstance(requireActivity(), ""));
listView.addHeaderView(searchView);
View dividerView = inflater.inflate(R.layout.list_item_divider, null, false);
boolean proAvailable = InAppPurchaseHelper.isOsmAndProAvailable(app);
Expand Down Expand Up @@ -594,6 +597,17 @@ private void importFavourites() {
AndroidUtils.startActivityForResultIfSafe(this, intent, IMPORT_FAVOURITES_REQUEST);
}

@Override
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
if (requestCode == IMPORT_FAVOURITES_REQUEST && resultCode == Activity.RESULT_OK) {
if (data != null && data.getData() != null) {
importHelper.handleFavouritesImport(data.getData());
}
} else {
super.onActivityResult(requestCode, resultCode, data);
}
}

public void shareFavorites(@Nullable FavoriteGroup group) {
ShareFavoritesAsyncTask shareFavoritesTask = new ShareFavoritesAsyncTask(app, group, this);
shareFavoritesTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import androidx.annotation.Nullable;

import net.osmand.IndexConstants;
import net.osmand.Location;
import net.osmand.PlatformUtil;
import net.osmand.data.LatLon;
import net.osmand.gpx.GPXFile;
Expand Down Expand Up @@ -81,9 +82,7 @@ public class SavingTrackHelper extends SQLiteOpenHelper {
private static final String POINT_COL_ICON = "icon";
private static final String POINT_COL_BACKGROUND = "background";

private static final float NO_HEADING = -1.0f;

public static final NumberFormat DECIMAL_FORMAT = new DecimalFormat("#.#", new DecimalFormatSymbols(Locale.US));
private static final NumberFormat DECIMAL_FORMAT = new DecimalFormat("#.#", new DecimalFormatSymbols(Locale.US));


private final OsmandApplication app;
Expand Down Expand Up @@ -386,9 +385,7 @@ private void collectDBTracks(@NonNull SQLiteDatabase db, @NonNull Map<String, GP
pt.speed = query.getDouble(3);
pt.hdop = query.getDouble(4);
pt.time = query.getLong(5);

float heading = query.getFloat(6);
pt.heading = heading == NO_HEADING ? Float.NaN : heading;
pt.heading = query.isNull(6) ? Float.NaN : query.getFloat(6);

Map<String, String> extensions = getPluginsExtensions(query.getString(7));
pt.getExtensionsToWrite().putAll(extensions);
Expand Down Expand Up @@ -480,23 +477,36 @@ private void dropEmptyTracks(@NonNull Map<String, GPXFile> dataTracks) {
public void startNewSegment() {
lastTimeUpdated = 0;
lastPoint = null;
executeInsertTrackQuery(0, 0, 0, 0, 0, System.currentTimeMillis(), NO_HEADING, null);
executeInsertTrackQuery(0, 0, 0, 0, 0, System.currentTimeMillis(), Float.NaN, null);
addTrackPoint(null, true, System.currentTimeMillis());
}

public void updateLocation(net.osmand.Location location, Float heading) {
public void updateLocation(@Nullable Location location, @Nullable Float heading) {
// use because there is a bug on some devices with location.getTime()
long locationTime = System.currentTimeMillis();

OsmandDevelopmentPlugin plugin = PluginsHelper.getEnabledPlugin(OsmandDevelopmentPlugin.class);
boolean writeHeading = plugin != null && plugin.SAVE_HEADING_TO_GPX.get();
heading = heading != null && writeHeading ? MapUtils.normalizeDegrees360(heading) : NO_HEADING;

if (app.getRoutingHelper().isFollowingMode()) {
lastRoutingApplicationMode = settings.getApplicationMode();
} else if (settings.getApplicationMode() == settings.DEFAULT_APPLICATION_MODE.get()) {
lastRoutingApplicationMode = null;
}
boolean record = shouldRecordLocation(location, locationTime);
if (record) {
heading = getAdjustedHeading(heading);

WptPt wptPt = new WptPt(location.getLatitude(), location.getLongitude(), locationTime,
location.getAltitude(), location.getSpeed(), location.getAccuracy(), heading);

String pluginsInfo = getPluginsInfo(location);
Map<String, String> extensions = getPluginsExtensions(pluginsInfo);
wptPt.getExtensionsToWrite().putAll(extensions);

insertData(wptPt, pluginsInfo);
app.getNotificationHelper().refreshNotification(NotificationType.GPX);
}
}

private boolean shouldRecordLocation(@Nullable Location location, long locationTime) {
boolean record = false;
if (location != null && SimulationProvider.isNotSimulatedLocation(location)
&& PluginsHelper.isActive(OsmandMonitoringPlugin.class)) {
Expand All @@ -507,8 +517,8 @@ record = true;
record = true;
}
float minDistance = settings.SAVE_TRACK_MIN_DISTANCE.get();
if (minDistance > 0 && lastPoint != null && MapUtils.getDistance(lastPoint, location.getLatitude(), location.getLongitude()) <
minDistance) {
if (minDistance > 0 && lastPoint != null
&& MapUtils.getDistance(lastPoint, location.getLatitude(), location.getLongitude()) < minDistance) {
record = false;
}
float precision = settings.SAVE_TRACK_PRECISION.get();
Expand All @@ -520,30 +530,30 @@ record = false;
record = false;
}
}
if (record) {
JSONObject json = new JSONObject();
PluginsHelper.attachAdditionalInfoToRecordedTrack(location, json);
return record;
}

boolean writeBearing = plugin != null && plugin.SAVE_BEARING_TO_GPX.get();
if (writeBearing && location.hasBearing()) {
try {
json.put(TRACK_COL_BEARING, DECIMAL_FORMAT.format(location.getBearing()));
} catch (JSONException e) {
log.error(e.getMessage(), e);
}
}
String pluginsInfo = json.length() > 0 ? json.toString() : null;
heading = heading == NO_HEADING ? Float.NaN : heading;
private float getAdjustedHeading(@Nullable Float heading) {
OsmandDevelopmentPlugin plugin = PluginsHelper.getEnabledPlugin(OsmandDevelopmentPlugin.class);
boolean writeHeading = plugin != null && plugin.SAVE_HEADING_TO_GPX.get();
return heading != null && writeHeading ? MapUtils.normalizeDegrees360(heading) : Float.NaN;
}

WptPt wptPt = new WptPt(location.getLatitude(), location.getLongitude(), locationTime,
location.getAltitude(), location.getSpeed(), location.getAccuracy(), heading);
@Nullable
private String getPluginsInfo(@NonNull net.osmand.Location location) {
JSONObject json = new JSONObject();
PluginsHelper.attachAdditionalInfoToRecordedTrack(location, json);

Map<String, String> extensions = getPluginsExtensions(pluginsInfo);
wptPt.getExtensionsToWrite().putAll(extensions);

insertData(wptPt, pluginsInfo);
app.getNotificationHelper().refreshNotification(NotificationType.GPX);
OsmandDevelopmentPlugin plugin = PluginsHelper.getEnabledPlugin(OsmandDevelopmentPlugin.class);
boolean writeBearing = plugin != null && plugin.SAVE_BEARING_TO_GPX.get();
if (writeBearing && location.hasBearing()) {
try {
json.put(TRACK_COL_BEARING, DECIMAL_FORMAT.format(location.getBearing()));
} catch (JSONException e) {
log.error(e.getMessage(), e);
}
}
return json.length() > 0 ? json.toString() : null;
}

private void insertData(@NonNull WptPt wptPt, @Nullable String pluginsInfo) {
Expand Down Expand Up @@ -764,7 +774,7 @@ private void executeInsertTrackQuery(double lat, double lon, double alt, double
rowsMap.put(TRACK_COL_SPEED, speed);
rowsMap.put(TRACK_COL_HDOP, hdop);
rowsMap.put(TRACK_COL_DATE, time);
rowsMap.put(TRACK_COL_HEADING, heading);
rowsMap.put(TRACK_COL_HEADING, Float.isNaN(heading) ? null : heading);
rowsMap.put(TRACK_COL_PLUGINS_INFO, pluginsInfo);
execWithClose(AndroidUtils.createDbInsertQuery(TRACK_NAME, rowsMap.keySet()), rowsMap.values().toArray());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@
import net.osmand.plus.download.LocalIndexHelper;
import net.osmand.plus.download.LocalIndexInfo;
import net.osmand.plus.plugins.OsmandPlugin;
import net.osmand.plus.plugins.PluginsHelper;
import net.osmand.plus.plugins.srtm.SRTMPlugin;
import net.osmand.plus.render.RendererRegistry;
import net.osmand.plus.settings.backend.ApplicationMode;
import net.osmand.plus.settings.backend.OsmandSettings;
Expand Down Expand Up @@ -111,6 +113,15 @@ public void createAdapterItem(@NonNull ContextMenuAdapter adapter,
}
}

@Override
public void registerLayerContextMenuActions(@NonNull ContextMenuAdapter menuAdapter,
@NonNull MapActivity mapActivity,
@NonNull List<RenderingRuleProperty> customRules) {
if (!PluginsHelper.isEnabled(SRTMPlugin.class)) {
createAdapterItem(menuAdapter, mapActivity, customRules);
}
}

private boolean hasDepthMaps() {
boolean readFiles = !app.getResourceManager().isIndexesLoadedOnStart();
LocalIndexHelper helper = new LocalIndexHelper(app);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT;

import android.os.Bundle;
import android.util.TypedValue;
import android.view.Gravity;
import android.view.View;
import android.widget.LinearLayout;
Expand Down Expand Up @@ -82,6 +83,7 @@ public View getCustomRadioButtonView(@NonNull SwitchPreferenceEx preference, boo

TextView textView = view.findViewById(R.id.text);
textView.setText(getSummary(preference, enabled));
textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, getResources().getDimensionPixelSize(R.dimen.default_list_text_size));

int margin = getResources().getDimensionPixelSize(R.dimen.content_padding_small);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(WRAP_CONTENT, WRAP_CONTENT);
Expand Down Expand Up @@ -117,6 +119,7 @@ private void onRadioButtonClick(@NonNull View view, @NonNull SwitchPreferenceEx
}
}
}
dismiss();
}

private void updatePreferenceButtons(boolean checked) {
Expand Down

0 comments on commit 54ab6d9

Please sign in to comment.