Merge remote-tracking branch 'origin/master'
This commit is contained in:
commit
d874e6e56d
9 changed files with 239 additions and 1 deletions
130
OsmAnd/res/layout/mapillary_first_dialog.xml
Normal file
130
OsmAnd/res/layout/mapillary_first_dialog.xml
Normal file
|
@ -0,0 +1,130 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<FrameLayout
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="bottom"
|
||||||
|
android:background="?attr/bottom_menu_view_bg"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:clickable="true"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="match_parent">
|
||||||
|
|
||||||
|
<android.support.v7.widget.AppCompatImageView
|
||||||
|
android:id="@+id/titleIconImageView"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="20dp"
|
||||||
|
android:layout_marginLeft="16dp"
|
||||||
|
android:src="@drawable/ic_action_mapillary"
|
||||||
|
android:tint="@color/mapillary_color"/>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="20dp"
|
||||||
|
android:layout_marginLeft="24dp"
|
||||||
|
android:paddingRight="8dp"
|
||||||
|
android:text="@string/mapillary"
|
||||||
|
android:textColor="?android:textColorPrimary"
|
||||||
|
android:textSize="@dimen/dialog_header_text_size"/>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="20dp"
|
||||||
|
android:layout_marginLeft="24dp"
|
||||||
|
android:paddingRight="24dp"
|
||||||
|
android:text="@string/mapillary_descr"
|
||||||
|
android:textColor="?android:textColorPrimary"
|
||||||
|
android:textSize="@dimen/default_list_text_size"/>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="20dp"
|
||||||
|
android:layout_marginLeft="24dp"
|
||||||
|
android:layout_marginRight="16dp"
|
||||||
|
android:layout_marginBottom="10dp"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:paddingRight="24dp"
|
||||||
|
android:text="@string/mapillary_widget"
|
||||||
|
android:textColor="?android:textColorPrimary"
|
||||||
|
android:textSize="@dimen/default_list_text_size"/>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="6dp"
|
||||||
|
android:paddingRight="24dp"
|
||||||
|
android:text="@string/mapillary_widget_descr"
|
||||||
|
android:textColor="?android:textColorSecondary"
|
||||||
|
android:textSize="@dimen/default_sub_text_size"/>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<android.support.v7.widget.SwitchCompat
|
||||||
|
android:id="@+id/widget_switch"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="match_parent"/>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<View
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="1dp"
|
||||||
|
android:layout_marginLeft="24dp"
|
||||||
|
android:background="?attr/dashboard_divider"/>
|
||||||
|
|
||||||
|
<Button
|
||||||
|
android:id="@+id/actionButton"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="36dp"
|
||||||
|
android:layout_marginLeft="16dp"
|
||||||
|
android:layout_marginTop="6dp"
|
||||||
|
android:layout_marginBottom="6dp"
|
||||||
|
android:paddingLeft="8dp"
|
||||||
|
android:paddingRight="8dp"
|
||||||
|
style="@style/Widget.AppCompat.Button.Borderless"
|
||||||
|
android:gravity="left|center_vertical"
|
||||||
|
android:textColor="?attr/contextMenuButtonColor"
|
||||||
|
android:text="@string/shared_string_ok"/>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
</FrameLayout>
|
|
@ -1,6 +1,7 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources>
|
<resources>
|
||||||
|
|
||||||
|
<color name="mapillary_color">#3db878</color>
|
||||||
<color name="buy_button_color">#50ae55</color>
|
<color name="buy_button_color">#50ae55</color>
|
||||||
<color name="buy_button_pressed_color">#b5e5b9</color>
|
<color name="buy_button_pressed_color">#b5e5b9</color>
|
||||||
|
|
||||||
|
|
|
@ -9,6 +9,9 @@
|
||||||
3. All your modified/created strings are in the top of the file (to make easier find what\'s translated).
|
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
|
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="mapillary_widget">Mapillary widget</string>
|
||||||
|
<string name="mapillary_widget_descr">Allow you to quick contribute to Mapillary</string>
|
||||||
|
<string name="mapillary_descr">Online Street-Photos for everyone. Discover places, collaborate, capture the world.</string>
|
||||||
<string name="mapillary">Mapillary</string>
|
<string name="mapillary">Mapillary</string>
|
||||||
<string name="private_access_routing_req">Your destination is located in the area with a private access. Do you want to allow access to the private roads for this trip?</string>
|
<string name="private_access_routing_req">Your destination is located in the area with a private access. Do you want to allow access to the private roads for this trip?</string>
|
||||||
<string name="restart_search">Restart search</string>
|
<string name="restart_search">Restart search</string>
|
||||||
|
|
|
@ -894,6 +894,7 @@ public class OsmandSettings {
|
||||||
public final OsmandPreference<Boolean> SHOW_POI_LABEL = new BooleanPreference("show_poi_label", false).makeGlobal();
|
public final OsmandPreference<Boolean> SHOW_POI_LABEL = new BooleanPreference("show_poi_label", false).makeGlobal();
|
||||||
|
|
||||||
public final OsmandPreference<Boolean> SHOW_MAPILLARY = new BooleanPreference("show_mapillary", false).makeGlobal();
|
public final OsmandPreference<Boolean> SHOW_MAPILLARY = new BooleanPreference("show_mapillary", false).makeGlobal();
|
||||||
|
public final OsmandPreference<Boolean> MAPILLARY_FIRST_DIALOG_SHOWN = new BooleanPreference("mapillary_first_dialog_shown", false).makeGlobal();
|
||||||
|
|
||||||
// this value string is synchronized with settings_pref.xml preference name
|
// this value string is synchronized with settings_pref.xml preference name
|
||||||
public final OsmandPreference<String> PREFERRED_LOCALE = new StringPreference("preferred_locale", "").makeGlobal();
|
public final OsmandPreference<String> PREFERRED_LOCALE = new StringPreference("preferred_locale", "").makeGlobal();
|
||||||
|
|
|
@ -74,6 +74,8 @@ import net.osmand.plus.helpers.WaypointHelper.LocationPointWrapper;
|
||||||
import net.osmand.plus.mapcontextmenu.other.MapRouteInfoMenu;
|
import net.osmand.plus.mapcontextmenu.other.MapRouteInfoMenu;
|
||||||
import net.osmand.plus.mapcontextmenu.other.RoutePreferencesMenu;
|
import net.osmand.plus.mapcontextmenu.other.RoutePreferencesMenu;
|
||||||
import net.osmand.plus.mapcontextmenu.other.RoutePreferencesMenu.LocalRoutingParameter;
|
import net.osmand.plus.mapcontextmenu.other.RoutePreferencesMenu.LocalRoutingParameter;
|
||||||
|
import net.osmand.plus.mapillary.MapillaryPlugin;
|
||||||
|
import net.osmand.plus.mapillary.MapillaryPlugin.MapillaryFirstDialogFragment;
|
||||||
import net.osmand.plus.rastermaps.OsmandRasterMapsPlugin;
|
import net.osmand.plus.rastermaps.OsmandRasterMapsPlugin;
|
||||||
import net.osmand.plus.routing.RoutingHelper;
|
import net.osmand.plus.routing.RoutingHelper;
|
||||||
import net.osmand.plus.routing.RoutingHelper.IRouteInformationListener;
|
import net.osmand.plus.routing.RoutingHelper.IRouteInformationListener;
|
||||||
|
@ -866,6 +868,13 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks, DynamicLis
|
||||||
df.get().onCloseDash();
|
df.get().onCloseDash();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
OsmandSettings settings = getMyApplication().getSettings();
|
||||||
|
if (settings.SHOW_MAPILLARY.get() && !settings.MAPILLARY_FIRST_DIALOG_SHOWN.get()) {
|
||||||
|
MapillaryFirstDialogFragment fragment = new MapillaryFirstDialogFragment();
|
||||||
|
fragment.show(mapActivity.getSupportFragmentManager(), MapillaryFirstDialogFragment.TAG);
|
||||||
|
settings.MAPILLARY_FIRST_DIALOG_SHOWN.set(true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -76,6 +76,7 @@ public class SettingsDevelopmentActivity extends SettingsBaseActivity {
|
||||||
public boolean onPreferenceClick(Preference preference) {
|
public boolean onPreferenceClick(Preference preference) {
|
||||||
getMyApplication().getAppInitializer().resetFirstTimeRun();
|
getMyApplication().getAppInitializer().resetFirstTimeRun();
|
||||||
getMyApplication().getSettings().FIRST_MAP_IS_DOWNLOADED.set(false);
|
getMyApplication().getSettings().FIRST_MAP_IS_DOWNLOADED.set(false);
|
||||||
|
getMyApplication().getSettings().MAPILLARY_FIRST_DIALOG_SHOWN.set(false);
|
||||||
getMyApplication().showToastMessage(R.string.shared_string_ok);
|
getMyApplication().showToastMessage(R.string.shared_string_ok);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,10 +1,18 @@
|
||||||
package net.osmand.plus.mapillary;
|
package net.osmand.plus.mapillary;
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.support.annotation.NonNull;
|
||||||
|
import android.support.v4.app.FragmentActivity;
|
||||||
|
import android.support.v7.widget.SwitchCompat;
|
||||||
|
import android.view.LayoutInflater;
|
||||||
|
import android.view.View;
|
||||||
|
import android.view.ViewGroup;
|
||||||
import android.widget.ArrayAdapter;
|
import android.widget.ArrayAdapter;
|
||||||
|
|
||||||
import net.osmand.map.ITileSource;
|
import net.osmand.map.ITileSource;
|
||||||
import net.osmand.map.TileSourceManager;
|
import net.osmand.map.TileSourceManager;
|
||||||
|
import net.osmand.plus.ApplicationMode;
|
||||||
import net.osmand.plus.ContextMenuAdapter;
|
import net.osmand.plus.ContextMenuAdapter;
|
||||||
import net.osmand.plus.ContextMenuItem;
|
import net.osmand.plus.ContextMenuItem;
|
||||||
import net.osmand.plus.OsmandApplication;
|
import net.osmand.plus.OsmandApplication;
|
||||||
|
@ -13,16 +21,24 @@ import net.osmand.plus.OsmandSettings;
|
||||||
import net.osmand.plus.R;
|
import net.osmand.plus.R;
|
||||||
import net.osmand.plus.activities.MapActivity;
|
import net.osmand.plus.activities.MapActivity;
|
||||||
import net.osmand.plus.activities.MapActivityLayers;
|
import net.osmand.plus.activities.MapActivityLayers;
|
||||||
|
import net.osmand.plus.base.BottomSheetDialogFragment;
|
||||||
|
import net.osmand.plus.views.MapInfoLayer;
|
||||||
import net.osmand.plus.views.MapTileLayer;
|
import net.osmand.plus.views.MapTileLayer;
|
||||||
import net.osmand.plus.views.OsmandMapTileView;
|
import net.osmand.plus.views.OsmandMapTileView;
|
||||||
|
import net.osmand.plus.views.mapwidgets.MapWidgetRegistry.MapWidgetRegInfo;
|
||||||
|
import net.osmand.plus.views.mapwidgets.TextInfoWidget;
|
||||||
import net.osmand.util.Algorithms;
|
import net.osmand.util.Algorithms;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public class MapillaryPlugin extends OsmandPlugin {
|
public class MapillaryPlugin extends OsmandPlugin {
|
||||||
public static final String ID = "osmand.mapillary";
|
public static final String ID = "osmand.mapillary";
|
||||||
private OsmandSettings settings;
|
private OsmandSettings settings;
|
||||||
private OsmandApplication app;
|
private OsmandApplication app;
|
||||||
|
|
||||||
private MapillaryLayer rasterLayer;
|
private MapillaryLayer rasterLayer;
|
||||||
|
private TextInfoWidget mapillaryControl;
|
||||||
|
private MapWidgetRegInfo mapillaryWidgetRegInfo;
|
||||||
|
|
||||||
public MapillaryPlugin(OsmandApplication app) {
|
public MapillaryPlugin(OsmandApplication app) {
|
||||||
this.app = app;
|
this.app = app;
|
||||||
|
@ -57,6 +73,7 @@ public class MapillaryPlugin extends OsmandPlugin {
|
||||||
@Override
|
@Override
|
||||||
public void registerLayers(MapActivity activity) {
|
public void registerLayers(MapActivity activity) {
|
||||||
createLayers();
|
createLayers();
|
||||||
|
registerWidget(activity);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void createLayers() {
|
private void createLayers() {
|
||||||
|
@ -138,4 +155,75 @@ public class MapillaryPlugin extends OsmandPlugin {
|
||||||
.setPosition(11)
|
.setPosition(11)
|
||||||
.createItem());
|
.createItem());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void registerWidget(MapActivity activity) {
|
||||||
|
MapInfoLayer layer = activity.getMapLayers().getMapInfoLayer();
|
||||||
|
mapillaryControl = createMonitoringControl(activity);
|
||||||
|
mapillaryWidgetRegInfo = layer.registerSideWidget(mapillaryControl,
|
||||||
|
R.drawable.ic_action_mapillary, R.string.mapillary, "mapillary", false, 19);
|
||||||
|
layer.recreateControls();
|
||||||
|
}
|
||||||
|
|
||||||
|
private TextInfoWidget createMonitoringControl(final MapActivity map) {
|
||||||
|
mapillaryControl = new TextInfoWidget(map);
|
||||||
|
mapillaryControl.setText(map.getString(R.string.mapillary), "");
|
||||||
|
mapillaryControl.setIcons(R.drawable.widget_mapillary_day, R.drawable.widget_mapillary_night);
|
||||||
|
mapillaryControl.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
// todo open mapillary app
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return mapillaryControl;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setWidgetVisible(MapActivity mapActivity, boolean visible) {
|
||||||
|
if (mapillaryWidgetRegInfo != null) {
|
||||||
|
final List<ApplicationMode> allModes = ApplicationMode.allPossibleValues();
|
||||||
|
for (ApplicationMode mode : allModes) {
|
||||||
|
mapActivity.getMapLayers().getMapWidgetRegistry().setVisibility(mode, mapillaryWidgetRegInfo, visible, false);
|
||||||
|
}
|
||||||
|
MapInfoLayer mil = mapActivity.getMapLayers().getMapInfoLayer();
|
||||||
|
if (mil != null) {
|
||||||
|
mil.recreateControls();
|
||||||
|
}
|
||||||
|
mapActivity.refreshMap();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class MapillaryFirstDialogFragment extends BottomSheetDialogFragment {
|
||||||
|
public static final String TAG = "MapillaryFirstDialogFragment";
|
||||||
|
|
||||||
|
private static final String KEY_SHOW_WIDGET = "key_show_widget";
|
||||||
|
private boolean showWidget = true;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||||
|
if (savedInstanceState != null) {
|
||||||
|
showWidget = savedInstanceState.getBoolean(KEY_SHOW_WIDGET, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
View view = inflater.inflate(R.layout.mapillary_first_dialog, container, false);
|
||||||
|
final SwitchCompat widgetSwitch = (SwitchCompat) view.findViewById(R.id.widget_switch);
|
||||||
|
widgetSwitch.setChecked(showWidget);
|
||||||
|
view.findViewById(R.id.actionButton).setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
FragmentActivity activity = getActivity();
|
||||||
|
MapillaryPlugin plugin = OsmandPlugin.getPlugin(MapillaryPlugin.class);
|
||||||
|
if (plugin != null && activity instanceof MapActivity) {
|
||||||
|
plugin.setWidgetVisible((MapActivity) activity, widgetSwitch.isChecked());
|
||||||
|
}
|
||||||
|
dismiss();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return view;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSaveInstanceState(@NonNull Bundle outState) {
|
||||||
|
outState.putBoolean(KEY_SHOW_WIDGET, showWidget);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -87,10 +87,11 @@ public class MapInfoLayer extends OsmandMapLayer {
|
||||||
recreateControls();
|
recreateControls();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void registerSideWidget(TextInfoWidget widget, int drawableMenu,
|
public MapWidgetRegInfo registerSideWidget(TextInfoWidget widget, int drawableMenu,
|
||||||
int messageId, String key, boolean left, int priorityOrder) {
|
int messageId, String key, boolean left, int priorityOrder) {
|
||||||
MapWidgetRegInfo reg = mapInfoControls.registerSideWidgetInternal(widget, drawableMenu, messageId, key, left, priorityOrder);
|
MapWidgetRegInfo reg = mapInfoControls.registerSideWidgetInternal(widget, drawableMenu, messageId, key, left, priorityOrder);
|
||||||
updateReg(calculateTextState(), reg);
|
updateReg(calculateTextState(), reg);
|
||||||
|
return reg;
|
||||||
}
|
}
|
||||||
|
|
||||||
public MapWidgetRegInfo registerSideWidget(TextInfoWidget widget, int drawableMenu,
|
public MapWidgetRegInfo registerSideWidget(TextInfoWidget widget, int drawableMenu,
|
||||||
|
|
|
@ -240,6 +240,10 @@ public class MapWidgetRegistry {
|
||||||
|
|
||||||
public void setVisibility(MapWidgetRegInfo m, boolean visible, boolean collapsed) {
|
public void setVisibility(MapWidgetRegInfo m, boolean visible, boolean collapsed) {
|
||||||
ApplicationMode mode = settings.APPLICATION_MODE.get();
|
ApplicationMode mode = settings.APPLICATION_MODE.get();
|
||||||
|
setVisibility(mode, m, visible, collapsed);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setVisibility(ApplicationMode mode, MapWidgetRegInfo m, boolean visible, boolean collapsed) {
|
||||||
defineDefaultSettingsElement(mode);
|
defineDefaultSettingsElement(mode);
|
||||||
// clear everything
|
// clear everything
|
||||||
this.visibleElementsFromSettings.get(mode).remove(m.key);
|
this.visibleElementsFromSettings.get(mode).remove(m.key);
|
||||||
|
|
Loading…
Reference in a new issue