Search in sources :

Example 6 with TextInfoWidget

use of net.osmand.plus.views.mapwidgets.TextInfoWidget in project Osmand by osmandapp.

the class OsmandMonitoringPlugin method createMonitoringControl.

/**
 * creates (if it wasn't created previously) the control to be added on a MapInfoLayer that shows a monitoring state (recorded/stopped)
 */
private TextInfoWidget createMonitoringControl(final MapActivity map) {
    monitoringControl = new TextInfoWidget(map) {

        long lastUpdateTime;

        @Override
        public boolean updateInfo(DrawSettings drawSettings) {
            if (isSaving) {
                setText(map.getString(R.string.shared_string_save), "");
                setIcons(R.drawable.widget_monitoring_rec_big_day, R.drawable.widget_monitoring_rec_big_night);
                return true;
            }
            String txt = map.getString(R.string.monitoring_control_start);
            String subtxt = null;
            int dn;
            int d;
            long last = lastUpdateTime;
            final boolean globalRecord = settings.SAVE_GLOBAL_TRACK_TO_GPX.get();
            final boolean isRecording = app.getSavingTrackHelper().getIsRecording();
            float dist = app.getSavingTrackHelper().getDistance();
            // make sure widget always shows recorded track distance if unsaved track exists
            if (dist > 0) {
                last = app.getSavingTrackHelper().getLastTimeUpdated();
                String ds = OsmAndFormatter.getFormattedDistance(dist, map.getMyApplication());
                int ls = ds.lastIndexOf(' ');
                if (ls == -1) {
                    txt = ds;
                } else {
                    txt = ds.substring(0, ls);
                    subtxt = ds.substring(ls + 1);
                }
            }
            final boolean liveMonitoringEnabled = liveMonitoringHelper.isLiveMonitoringEnabled();
            if (globalRecord) {
                // indicates global recording (+background recording)
                if (liveMonitoringEnabled) {
                    dn = R.drawable.widget_live_monitoring_rec_big_night;
                    d = R.drawable.widget_live_monitoring_rec_big_day;
                } else {
                    dn = R.drawable.widget_monitoring_rec_big_night;
                    d = R.drawable.widget_monitoring_rec_big_day;
                }
            } else if (isRecording) {
                // indicates (profile-based, configured in settings) recording (looks like is only active during nav in follow mode)
                if (liveMonitoringEnabled) {
                    dn = R.drawable.widget_live_monitoring_rec_small_night;
                    d = R.drawable.widget_live_monitoring_rec_small_day;
                } else {
                    dn = R.drawable.widget_monitoring_rec_small_night;
                    d = R.drawable.widget_monitoring_rec_small_day;
                }
            } else {
                dn = R.drawable.widget_monitoring_rec_inactive_night;
                d = R.drawable.widget_monitoring_rec_inactive_day;
            }
            setText(txt, subtxt);
            setIcons(d, dn);
            if ((last != lastUpdateTime) && (globalRecord || isRecording)) {
                lastUpdateTime = last;
                // blink implementation with 2 indicator states (global logging + profile/navigation logging)
                if (liveMonitoringEnabled) {
                    dn = R.drawable.widget_live_monitoring_rec_small_night;
                    d = R.drawable.widget_live_monitoring_rec_small_day;
                } else {
                    dn = R.drawable.widget_monitoring_rec_small_night;
                    d = R.drawable.widget_monitoring_rec_small_day;
                }
                setIcons(d, dn);
                map.getMyApplication().runInUIThread(new Runnable() {

                    @Override
                    public void run() {
                        int dn;
                        int d;
                        if (globalRecord) {
                            if (liveMonitoringEnabled) {
                                dn = R.drawable.widget_live_monitoring_rec_big_night;
                                d = R.drawable.widget_live_monitoring_rec_big_day;
                            } else {
                                dn = R.drawable.widget_monitoring_rec_big_night;
                                d = R.drawable.widget_monitoring_rec_big_day;
                            }
                        } else {
                            if (liveMonitoringEnabled) {
                                dn = R.drawable.widget_live_monitoring_rec_small_night;
                                d = R.drawable.widget_live_monitoring_rec_small_day;
                            } else {
                                dn = R.drawable.widget_monitoring_rec_small_night;
                                d = R.drawable.widget_monitoring_rec_small_day;
                            }
                        }
                        setIcons(d, dn);
                    }
                }, 500);
            }
            return true;
        }
    };
    monitoringControl.updateInfo(null);
    // monitoringControl.addView(child);
    monitoringControl.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            controlDialog(map, true);
        }
    });
    return monitoringControl;
}
Also used : TextInfoWidget(net.osmand.plus.views.mapwidgets.TextInfoWidget) OsmAndTaskRunnable(net.osmand.plus.OsmAndTaskManager.OsmAndTaskRunnable) OsmandMapTileView(net.osmand.plus.views.OsmandMapTileView) View(android.view.View) TextView(android.widget.TextView) DrawSettings(net.osmand.plus.views.OsmandMapLayer.DrawSettings)

Example 7 with TextInfoWidget

use of net.osmand.plus.views.mapwidgets.TextInfoWidget in project Osmand by osmandapp.

the class OsmandAidlApi method registerAddMapWidgetReceiver.

private void registerAddMapWidgetReceiver(final MapActivity mapActivity) {
    addMapWidgetReceiver = new BroadcastReceiver() {

        @Override
        public void onReceive(Context context, Intent intent) {
            String widgetId = intent.getStringExtra(AIDL_OBJECT_ID);
            if (widgetId != null) {
                AMapWidget widget = widgets.get(widgetId);
                if (widget != null) {
                    MapInfoLayer layer = mapActivity.getMapLayers().getMapInfoLayer();
                    if (layer != null) {
                        TextInfoWidget control = createWidgetControl(mapActivity, widgetId);
                        widgetControls.put(widgetId, control);
                        int menuIconId = getDrawableId(widget.getMenuIconName());
                        MapWidgetRegInfo widgetInfo = layer.registerSideWidget(control, menuIconId, widget.getMenuTitle(), "aidl_widget_" + widgetId, false, widget.getOrder());
                        if (!mapActivity.getMapLayers().getMapWidgetRegistry().isVisible(widgetInfo.key)) {
                            mapActivity.getMapLayers().getMapWidgetRegistry().setVisibility(widgetInfo, true, false);
                        }
                        layer.recreateControls();
                    }
                }
            }
        }
    };
    mapActivity.registerReceiver(addMapWidgetReceiver, new IntentFilter(AIDL_ADD_MAP_WIDGET));
}
Also used : Context(android.content.Context) TextInfoWidget(net.osmand.plus.views.mapwidgets.TextInfoWidget) IntentFilter(android.content.IntentFilter) MapWidgetRegInfo(net.osmand.plus.views.mapwidgets.MapWidgetRegistry.MapWidgetRegInfo) MapInfoLayer(net.osmand.plus.views.MapInfoLayer) Intent(android.content.Intent) BroadcastReceiver(android.content.BroadcastReceiver) AMapWidget(net.osmand.aidl.mapwidget.AMapWidget)

Example 8 with TextInfoWidget

use of net.osmand.plus.views.mapwidgets.TextInfoWidget in project Osmand by osmandapp.

the class OsmandAidlApi method registerWidgetControls.

public void registerWidgetControls(MapActivity mapActivity) {
    for (AMapWidget widget : widgets.values()) {
        MapInfoLayer layer = mapActivity.getMapLayers().getMapInfoLayer();
        if (layer != null) {
            TextInfoWidget control = createWidgetControl(mapActivity, widget.getId());
            widgetControls.put(widget.getId(), control);
            int menuIconId = getDrawableId(widget.getMenuIconName());
            MapWidgetRegInfo widgetInfo = layer.registerSideWidget(control, menuIconId, widget.getMenuTitle(), "aidl_widget_" + widget.getId(), false, widget.getOrder());
            if (!mapActivity.getMapLayers().getMapWidgetRegistry().isVisible(widgetInfo.key)) {
                mapActivity.getMapLayers().getMapWidgetRegistry().setVisibility(widgetInfo, true, false);
            }
        }
    }
}
Also used : TextInfoWidget(net.osmand.plus.views.mapwidgets.TextInfoWidget) MapWidgetRegInfo(net.osmand.plus.views.mapwidgets.MapWidgetRegistry.MapWidgetRegInfo) MapInfoLayer(net.osmand.plus.views.MapInfoLayer) AMapWidget(net.osmand.aidl.mapwidget.AMapWidget) FavouritePoint(net.osmand.data.FavouritePoint) AMapPoint(net.osmand.aidl.maplayer.point.AMapPoint)

Example 9 with TextInfoWidget

use of net.osmand.plus.views.mapwidgets.TextInfoWidget in project Osmand by osmandapp.

the class MapInfoLayer method registerAllControls.

public void registerAllControls() {
    RouteInfoWidgetsFactory ric = new RouteInfoWidgetsFactory();
    MapInfoWidgetsFactory mic = new MapInfoWidgetsFactory();
    MapMarkersWidgetsFactory mwf = map.getMapLayers().getMapMarkersLayer().getWidgetsFactory();
    OsmandApplication app = view.getApplication();
    lanesControl = ric.createLanesControl(map, view);
    streetNameView = new TopTextView(map.getMyApplication(), map);
    updateStreetName(false, calculateTextState());
    topToolbarView = new TopToolbarView(map);
    updateTopToolbar(false);
    alarmControl = ric.createAlarmInfoControl(app, map);
    alarmControl.setVisibility(false);
    rulerControl = ric.createRulerControl(app, map);
    rulerControl.setVisibility(false);
    // register left stack
    registerSideWidget(null, R.drawable.ic_action_compass, R.string.map_widget_compass, "compass", true, 4);
    NextTurnInfoWidget bigInfoControl = ric.createNextInfoControl(map, app, false);
    registerSideWidget(bigInfoControl, R.drawable.ic_action_next_turn, R.string.map_widget_next_turn, "next_turn", true, 5);
    NextTurnInfoWidget smallInfoControl = ric.createNextInfoControl(map, app, true);
    registerSideWidget(smallInfoControl, R.drawable.ic_action_next_turn, R.string.map_widget_next_turn_small, "next_turn_small", true, 6);
    NextTurnInfoWidget nextNextInfoControl = ric.createNextNextInfoControl(map, app, true);
    registerSideWidget(nextNextInfoControl, R.drawable.ic_action_next_turn, R.string.map_widget_next_next_turn, "next_next_turn", true, 7);
    // register right stack
    // priorityOrder: 10s navigation-related, 20s position-related, 30s recording- and other plugin-related, 40s general device information, 50s debugging-purpose
    TextInfoWidget intermediateDist = ric.createIntermediateDistanceControl(map);
    registerSideWidget(intermediateDist, R.drawable.ic_action_intermediate, R.string.map_widget_intermediate_distance, "intermediate_distance", false, 13);
    TextInfoWidget dist = ric.createDistanceControl(map);
    registerSideWidget(dist, R.drawable.ic_action_target, R.string.map_widget_distance, "distance", false, 14);
    TextInfoWidget time = ric.createTimeControl(map);
    registerSideWidget(time, new TimeControlWidgetState(app), "time", false, 15);
    TextInfoWidget marker = mwf.createMapMarkerControl(map, true);
    registerSideWidget(marker, R.drawable.ic_action_flag_dark, R.string.map_marker_1st, "map_marker_1st", false, 16);
    TextInfoWidget bearing = ric.createBearingControl(map);
    registerSideWidget(bearing, new BearingWidgetState(app), "bearing", false, 17);
    TextInfoWidget marker2nd = mwf.createMapMarkerControl(map, false);
    registerSideWidget(marker2nd, R.drawable.ic_action_flag_dark, R.string.map_marker_2nd, "map_marker_2nd", false, 18);
    TextInfoWidget speed = ric.createSpeedControl(map);
    registerSideWidget(speed, R.drawable.ic_action_speed, R.string.map_widget_speed, "speed", false, 20);
    TextInfoWidget maxspeed = ric.createMaxSpeedControl(map);
    registerSideWidget(maxspeed, R.drawable.ic_action_speed_limit, R.string.map_widget_max_speed, "max_speed", false, 21);
    TextInfoWidget alt = mic.createAltitudeControl(map);
    registerSideWidget(alt, R.drawable.ic_action_altitude, R.string.map_widget_altitude, "altitude", false, 23);
    TextInfoWidget gpsInfo = mic.createGPSInfoControl(map);
    registerSideWidget(gpsInfo, R.drawable.ic_action_gps_info, R.string.map_widget_gps_info, "gps_info", false, 28);
    TextInfoWidget plainTime = ric.createPlainTimeControl(map);
    registerSideWidget(plainTime, R.drawable.ic_action_time, R.string.map_widget_plain_time, "plain_time", false, 41);
    TextInfoWidget battery = ric.createBatteryControl(map);
    registerSideWidget(battery, R.drawable.ic_action_battery, R.string.map_widget_battery, "battery", false, 42);
    TextInfoWidget ruler = mic.createRulerControl(map);
    registerSideWidget(ruler, R.drawable.ic_action_ruler_circle, R.string.map_widget_ruler_control, "ruler", false, 43);
}
Also used : MapMarkersWidgetsFactory(net.osmand.plus.views.mapwidgets.MapMarkersWidgetsFactory) TextInfoWidget(net.osmand.plus.views.mapwidgets.TextInfoWidget) TimeControlWidgetState(net.osmand.plus.views.mapwidgets.RouteInfoWidgetsFactory.TimeControlWidgetState) OsmandApplication(net.osmand.plus.OsmandApplication) MapInfoWidgetsFactory(net.osmand.plus.views.mapwidgets.MapInfoWidgetsFactory) BearingWidgetState(net.osmand.plus.views.mapwidgets.RouteInfoWidgetsFactory.BearingWidgetState) RouteInfoWidgetsFactory(net.osmand.plus.views.mapwidgets.RouteInfoWidgetsFactory) TopTextView(net.osmand.plus.views.mapwidgets.MapInfoWidgetsFactory.TopTextView) TopToolbarView(net.osmand.plus.views.mapwidgets.MapInfoWidgetsFactory.TopToolbarView) NextTurnInfoWidget(net.osmand.plus.views.mapwidgets.NextTurnInfoWidget)

Aggregations

TextInfoWidget (net.osmand.plus.views.mapwidgets.TextInfoWidget)9 View (android.view.View)4 MapInfoLayer (net.osmand.plus.views.MapInfoLayer)4 OsmandMapTileView (net.osmand.plus.views.OsmandMapTileView)4 AMapWidget (net.osmand.aidl.mapwidget.AMapWidget)3 DrawSettings (net.osmand.plus.views.OsmandMapLayer.DrawSettings)3 BroadcastReceiver (android.content.BroadcastReceiver)2 Context (android.content.Context)2 Intent (android.content.Intent)2 IntentFilter (android.content.IntentFilter)2 TextView (android.widget.TextView)2 AMapPoint (net.osmand.aidl.maplayer.point.AMapPoint)2 FavouritePoint (net.osmand.data.FavouritePoint)2 MapWidgetRegInfo (net.osmand.plus.views.mapwidgets.MapWidgetRegistry.MapWidgetRegInfo)2 LatLon (net.osmand.data.LatLon)1 OsmAndTaskRunnable (net.osmand.plus.OsmAndTaskManager.OsmAndTaskRunnable)1 OsmandApplication (net.osmand.plus.OsmandApplication)1 AnimateDraggingMapThread (net.osmand.plus.views.AnimateDraggingMapThread)1 MapInfoWidgetsFactory (net.osmand.plus.views.mapwidgets.MapInfoWidgetsFactory)1 TopTextView (net.osmand.plus.views.mapwidgets.MapInfoWidgetsFactory.TopTextView)1