Merge remote-tracking branch 'origin/master'

This commit is contained in:
Weblate 2014-08-22 02:40:26 +02:00
commit e68fcd1539
11 changed files with 127 additions and 45 deletions

View file

@ -9,6 +9,9 @@
3. All your modified/created strings are in the top of the file (to make easier find what\'s translated).
PLEASE: Have a look at http://code.google.com/p/osmand/wiki/UIConsistency, it may really improve your and our work :-) Thx - Hardy
-->
<string name="record_plugin_description">Save your tracks with one button touch on the map screen.
Show settings facilitating to record your trips to local GPX files or online using a web service.</string>
<string name="record_plugin_name">Record your trips</string>
<string name="int_hour">h</string>
<string name="duration">Duration</string>
<string name="distance">Distance</string>
@ -507,9 +510,6 @@
</string>
<string name="monitoring_settings">Logging services</string>
<string name="monitoring_settings_descr">Configure how to record trips</string>
<string name="osmand_monitoring_plugin_description">Enable tracking and navigation in sleep (screen off) mode via periodically waking up the GPS device.
Show settings facilitating to record your trips to local GPX files or online using a web service.</string>
<string name="osmand_monitoring_plugin_name">Logging services</string>
<string name="osmand_background_plugin_description">Show settings to enable tracking and navigation in sleep (screen off) mode via periodically waking up the GPS device.</string>
<string name="contribution_activity">Install version</string>
<string name="choose_osmand_theme_descr">Choose application theme</string>

View file

@ -123,7 +123,9 @@ public class NavigationService extends Service implements LocationListener {
}
public void stopIfNeeded(Context ctx, int usageIntent) {
usedBy -= usageIntent;
if((usedBy & usageIntent) > 0) {
usedBy -= usageIntent;
}
if (usedBy == 0) {
final Intent serviceIntent = new Intent(ctx, NavigationService.class);
ctx.stopService(serviceIntent);

View file

@ -174,4 +174,8 @@ public class OsmAndAppCustomization {
public boolean onDestinationReached() {
return true;
}
public int getWaypointSearchRadius(int searchDeviationRadius, int type) {
return searchDeviationRadius;
}
}

View file

@ -792,6 +792,7 @@ public class OsmandSettings {
public final CommonPreference<Boolean> SAVE_GLOBAL_TRACK_TO_GPX = new BooleanPreference("save_global_track_to_gpx", false).makeGlobal().cache();
public final CommonPreference<Integer> SAVE_GLOBAL_TRACK_INTERVAL = new IntPreference("save_global_track_interval", 5000).makeGlobal().cache();
public final CommonPreference<Boolean> SAVE_GLOBAL_TRACK_REMEMBER = new BooleanPreference("save_global_track_remember", false).makeGlobal().cache();
// this value string is synchronized with settings_pref.xml preference name
public final CommonPreference<Boolean> SAVE_TRACK_TO_GPX = new BooleanPreference("save_track_to_gpx", false).makeProfile().cache();
{

View file

@ -8,7 +8,6 @@ import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import net.osmand.IndexConstants;
import net.osmand.PlatformUtil;
import net.osmand.data.LatLon;
import net.osmand.plus.GPXUtilities;

View file

@ -289,7 +289,7 @@ public class WaypointDialogHelper implements OsmAndLocationListener {
str = ctx.getString(R.string.waypoints);
break;
case WaypointHelper.POI:
str = waypointHelper.getPoiFilter() == null && !checked ? ctx.getString(R.string.poi) : waypointHelper
str = waypointHelper.getPoiFilter() == null || !checked ? ctx.getString(R.string.poi) : waypointHelper
.getPoiFilter().getName();
break;
}

View file

@ -487,7 +487,7 @@ public class WaypointHelper {
PoiFilter pf = getPoiFilter();
if (pf != null) {
final List<Location> locs = route.getImmutableAllLocations();
List<Amenity> amenities = app.getResourceManager().searchAmenitiesOnThePath(locs, searchDeviationRadius,
List<Amenity> amenities = app.getResourceManager().searchAmenitiesOnThePath(locs, getSearchRadius(POI),
pf, new ResultMatcher<Amenity>() {
@Override
@ -512,6 +512,11 @@ public class WaypointHelper {
}
}
}
protected int getSearchRadius(int type) {
return app.getAppCustomization().getWaypointSearchRadius(searchDeviationRadius, type);
}
@ -552,7 +557,7 @@ public class WaypointHelper {
int[] ind = new int[1];
for(LocationPoint p : points) {
float dist = dist(p, immutableAllLocations, ind);
if(dist <= searchDeviationRadius) {
if(dist <= getSearchRadius(type)) {
LocationPointWrapper lpw = new LocationPointWrapper(rt, type, p, dist, ind[0]);
lpw.setAnnounce(announce);
locationPoints.add(lpw);

View file

@ -38,8 +38,12 @@ import android.preference.Preference;
import android.preference.Preference.OnPreferenceClickListener;
import android.preference.PreferenceScreen;
import android.view.View;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.LinearLayout;
import android.widget.SeekBar;
import android.widget.LinearLayout.LayoutParams;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TextView;
@ -50,6 +54,7 @@ public class OsmandMonitoringPlugin extends OsmandPlugin implements MonitoringIn
private BaseMapWidget monitoringControl;
private LiveMonitoringHelper liveMonitoringHelper;
private boolean ADD_BG_TO_ACTION = true;
private boolean isSaving;
public OsmandMonitoringPlugin(OsmandApplication app) {
this.app = app;
@ -76,12 +81,12 @@ public class OsmandMonitoringPlugin extends OsmandPlugin implements MonitoringIn
@Override
public String getDescription() {
return app.getString(R.string.osmand_monitoring_plugin_description);
return app.getString(R.string.record_plugin_description);
}
@Override
public String getName() {
return app.getString(R.string.osmand_monitoring_plugin_name);
return app.getString(R.string.record_plugin_name);
}
@Override
@ -154,6 +159,11 @@ public class OsmandMonitoringPlugin extends OsmandPlugin implements MonitoringIn
long lastUpdateTime;
@Override
public boolean updateInfo(DrawSettings drawSettings) {
if(isSaving){
setText(map.getString(R.string.import_save), "");
setImageDrawable(monitoringBig);
return true;
}
boolean visible = true;
String txt = map.getString(R.string.monitoring_control_start);
String subtxt = null;
@ -227,29 +237,37 @@ public class OsmandMonitoringPlugin extends OsmandPlugin implements MonitoringIn
} else {
items.add(R.string.gpx_monitoring_start);
}
items.add(R.string.save_current_track);
if(app.getSavingTrackHelper().hasDataToSave()) {
items.add(R.string.save_current_track);
}
String[] strings = new String[items.size()];
for(int i =0; i < strings.length; i++) {
strings[i] = app.getString(items.get(i));
}
bld.setItems(strings, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
final int[] holder = new int[] {0};
final Runnable run = new Runnable() {
public void run() {
int which = holder[0];
int item = items.get(which);
if(item == R.string.save_current_track){
app.getTaskManager().runInBackground(new OsmAndTaskRunnable<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
SavingTrackHelper helper = app.getSavingTrackHelper();
helper.saveDataToGpx(app.getAppCustomization().getTracksDir());
helper.close();
isSaving = true;
try {
SavingTrackHelper helper = app.getSavingTrackHelper();
helper.saveDataToGpx(app.getAppCustomization().getTracksDir());
helper.close();
} finally {
isSaving = false;
}
return null;
}
}, (Void) null);
} else if(item == R.string.gpx_monitoring_start) {
startGPXMonitoring();
startGPXMonitoring(map);
} else if(item == R.string.gpx_monitoring_stop) {
settings.SAVE_GLOBAL_TRACK_TO_GPX.set(false);
if (app.getNavigationService() != null) {
@ -264,7 +282,7 @@ public class OsmandMonitoringPlugin extends OsmandPlugin implements MonitoringIn
vs.value = settings.LIVE_MONITORING_INTERVAL.get();
showIntervalChooseDialog(map, app.getString(R.string.live_monitoring_interval) + " : %s",
app.getString(R.string.save_track_to_gpx), SECONDS, MINUTES,
vs, new OnClickListener() {
null, vs, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
settings.LIVE_MONITORING_INTERVAL.set(vs.value);
@ -274,32 +292,55 @@ public class OsmandMonitoringPlugin extends OsmandPlugin implements MonitoringIn
}
monitoringControl.updateInfo(null);
}
private void startGPXMonitoring() {
app.getSavingTrackHelper().startNewSegment();
final ValueHolder<Integer> vs = new ValueHolder<Integer>();
vs.value = settings.SAVE_GLOBAL_TRACK_INTERVAL.get();
showIntervalChooseDialog(map, app.getString(R.string.save_track_interval) + " : %s",
app.getString(R.string.save_track_to_gpx), SECONDS, MINUTES,
vs, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
settings.SAVE_GLOBAL_TRACK_INTERVAL.set(vs.value);
settings.SAVE_GLOBAL_TRACK_TO_GPX.set(true);
if (app.getNavigationService() == null) {
settings.SERVICE_OFF_INTERVAL.set(0);
}
app.startNavigationService(NavigationService.USED_BY_GPX);
}
});
};
if(strings.length == 1) {
run.run();
} else {
bld.setItems(strings, new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
holder[0] = which;
run.run();
}
});
bld.show();
}
}
private void startGPXMonitoring(MapActivity map) {
app.getSavingTrackHelper().startNewSegment();
final ValueHolder<Integer> vs = new ValueHolder<Integer>();
final ValueHolder<Boolean> choice = new ValueHolder<Boolean>();
vs.value = settings.SAVE_GLOBAL_TRACK_INTERVAL.get();
choice.value = settings.SAVE_GLOBAL_TRACK_REMEMBER.get();
final Runnable runnable = new Runnable() {
public void run() {
settings.SAVE_GLOBAL_TRACK_INTERVAL.set(vs.value);
settings.SAVE_GLOBAL_TRACK_TO_GPX.set(true);
settings.SAVE_GLOBAL_TRACK_REMEMBER.set(choice.value);
if (app.getNavigationService() == null) {
settings.SERVICE_OFF_INTERVAL.set(0);
}
app.startNavigationService(NavigationService.USED_BY_GPX);
}
});
bld.show();
};
if(choice.value) {
runnable.run();
} else {
showIntervalChooseDialog(map, app.getString(R.string.save_track_interval) + " : %s",
app.getString(R.string.save_track_to_gpx), SECONDS, MINUTES, choice, vs,
new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
runnable.run();
}
});
}
}
public static void showIntervalChooseDialog(final Context uiCtx, final String patternMsg,
String title, final int[] seconds, final int[] minutes, final ValueHolder<Integer> v, OnClickListener onclick){
String title, final int[] seconds, final int[] minutes, final ValueHolder<Boolean> choice, final ValueHolder<Integer> v, OnClickListener onclick){
Builder dlg = new AlertDialog.Builder(uiCtx);
dlg.setTitle(title);
LinearLayout ll = new LinearLayout(uiCtx);
@ -356,6 +397,23 @@ public class OsmandMonitoringPlugin extends OsmandPlugin implements MonitoringIn
ll.setOrientation(LinearLayout.VERTICAL);
ll.addView(tv);
ll.addView(sp);
if (choice != null) {
final CheckBox cb = new CheckBox(uiCtx);
cb.setText(R.string.remember_choice);
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT,
LayoutParams.WRAP_CONTENT);
lp.setMargins(7, 10, 7, 0);
cb.setLayoutParams(lp);
cb.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
choice.value = isChecked;
}
});
ll.addView(cb);
}
dlg.setView(ll);
dlg.setPositiveButton(R.string.default_buttons_ok, onclick);
dlg.setNegativeButton(R.string.default_buttons_cancel, null);
@ -375,10 +433,11 @@ public class OsmandMonitoringPlugin extends OsmandPlugin implements MonitoringIn
public void onContextMenuClick(int itemId, int pos, boolean isChecked, DialogInterface dialog) {
if (view.getApplication().getNavigationService() == null) {
final ValueHolder<Integer> vs = new ValueHolder<Integer>();
final ValueHolder<Boolean> choice = new ValueHolder<Boolean>();
vs.value = view.getSettings().SERVICE_OFF_INTERVAL.get();
showIntervalChooseDialog(view.getContext(), app.getString(R.string.gps_wakeup_interval),
app.getString(R.string.background_router_service),
SettingsMonitoringActivity.BG_SECONDS, SettingsMonitoringActivity.BG_MINUTES, vs,
SettingsMonitoringActivity.BG_SECONDS, SettingsMonitoringActivity.BG_MINUTES, choice, vs,
new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {

View file

@ -297,7 +297,9 @@ public class SherpafyCustomization extends OsmAndAppCustomization {
public void markStageAsNotCompleted(StageInformation si) {
Integer gi = visitedStagesPref.get();
gi = gi - (1 << si.getOrder());
if((gi & (1 << si.getOrder())) > 0) {
gi = gi - (1 << si.getOrder());
}
visitedStagesPref.set(gi);
}
@ -672,4 +674,11 @@ public class SherpafyCustomization extends OsmAndAppCustomization {
newIntent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
a.startActivityForResult(newIntent, 0);
}
public int getWaypointSearchRadius(int searchDeviationRadius, int type) {
if(type == WaypointHelper.WAYPOINTS) {
return searchDeviationRadius;
}
return searchDeviationRadius;
}
}

View file

@ -119,7 +119,7 @@ public class MapInfoWidgetsFactory {
app.getString(R.string.enable_sleep_mode),
OsmandMonitoringPlugin.SECONDS,
OsmandMonitoringPlugin.MINUTES,
vs, new DialogInterface.OnClickListener() {
null, vs, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
app.getSettings().SERVICE_OFF_INTERVAL.set(vs.value);

View file

@ -53,6 +53,9 @@ public class TextInfoWidget extends BaseMapWidget {
} else {
setContentDescription(subtext);
}
if(this.text != null && this.text.length() > 7) {
this.text = this.text.substring(0, 6) +"..";
}
updateVisibility(text != null);
requestLayout();
invalidate();