From e5894f3272398236b422083d44cb80d75d407b31 Mon Sep 17 00:00:00 2001 From: Dmitriy Prodchenko Date: Mon, 20 Apr 2015 17:36:59 +0300 Subject: [PATCH 01/32] Test --- OsmAnd/res/drawable-xxhdpi/map_target_point.png | Bin 0 -> 2427 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 OsmAnd/res/drawable-xxhdpi/map_target_point.png diff --git a/OsmAnd/res/drawable-xxhdpi/map_target_point.png b/OsmAnd/res/drawable-xxhdpi/map_target_point.png new file mode 100644 index 0000000000000000000000000000000000000000..f48d52c6ef91d17d1e2967942c79d356fa722cb0 GIT binary patch literal 2427 zcmaJ@dpMM78=tb46-DVVwbk2@rt8BTFw8JnW{j~J>ljKhW?p87IWz||3P~!b%Cs8Q zr7edgL(%56ms&|gV`o!qD=L4T0W zjNjh|y1-z1R_wqKaR|+uz~FOj>2p4|GOhq(!(cA1G69_t1B!u2Fq+LHBF5?)5CEG= zL7fW#MqfP*d0hJnV|1CDrGj04UQ?`RERAsdBuLSfN1XgtBej)2Aj zpFRW>O~{NQ_>(E0VnG%W!4iuF1QbdtmD)<}Z27`y6b6sSqtI9s7Hb1}*ofkJV!F(R zC$d;jAcG=?kS!3i`8;4wksisHh=~X&)4xjK3O>v7M4#FOH4G)A3s4wa^jt{`jx^f; zcjabFP=zD=P^JpG7$l(*s|G7f}@)q*%6J!csSzRFc=Se zJcWXzklk?5*3JQo_E_MO`3wmcP&dCY?`U86-I5< zlQh=qwoPo12TcY4aq;{_iLdJWiA>3Np(<14R#@59vJ}aLd$~*cnFnEE4Iy7~`c;%S zx2+4|mN+{>=VsT4+V)dF?0T{F3hH>bWMZk#ta|Oi3{Qla20qmBqxbF4yPV8qk$L2Ydqq*zuPli2g?ao@&q1QFZ zJ%ml>gkRs&Qd51|FvZxV;mKFa1DE$mdW(l|U7O?#Eb@mD$Fr}k^kJ4=6o-+cYN>FM`P_Z9uwVcSk!k_J0R)ys$9>FUO- zc<|iZtSuD=H`l0?Mgaq!nU;Dj%!+~R8xQa&ynR}i)|5(CZV8|HrL9)}*4PgufRcUJ8Q8KN| zbI=YMn@{4F`dk8j`cBbdK@~qQ4)~(IbY*@z>}EmaU~k22WmeSDGEMqbaI)F8X!r2| zO!m&Ck&J5=K7;+QtRu5}P7!__3t_P`kE*)eRCV$1$~s~;x$dZsz&|xdg{!sYM2fn- z-*kAH!H}rnNy?pcPIgW2LC0koe;NgJ*4;0(fAnQE(wxvGtv2$K9rL+SK>xP66Lr^_ zllnSc{_io*B?K!}er;16FYUBearW^U)wELFjRljPv- z>#KQr7tj3BSmKwn%P%hc`fkdjyxEJ}JABoRzL)oL=;aBixBylrc4x_>wffAWteEq@ z=eBC}pGV-12xe+^bc!cM#Grgr#c^|XlsQQ&2NNhI`wowU`8SMDbx4Eja_k!UV?Ev6 z3;=FJWpDy+YmH;nKO2-Zj5?JRU;jp{;1SSJ3o|n{Y#0vkhMao^?F?s zq|#M##)3y{m9ribL#snpjfc`*HKk8~`oX`M(7g8|RVz^jkKJmh`cPoc+5FaSW1SlN z;Ve}<7Ff|6?NYtw?f(25FRLYenziuwW4J04?#`R{72SbJ52U}=lm*pCrV}bhtGN|< jMPui<-a71?2ACeq!)cj8zlnT$?m6V;;X}Ua9+C1N Date: Fri, 24 Jul 2015 11:56:38 +0300 Subject: [PATCH 02/32] Notification with buttons --- .../net/osmand/plus/NavigationService.java | 152 ++++++++++-------- .../plus/myplaces/AvailableGPXFragment.java | 141 ++++++++-------- 2 files changed, 157 insertions(+), 136 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/NavigationService.java b/OsmAnd/src/net/osmand/plus/NavigationService.java index f338d32513..6a40a0c383 100644 --- a/OsmAnd/src/net/osmand/plus/NavigationService.java +++ b/OsmAnd/src/net/osmand/plus/NavigationService.java @@ -1,10 +1,6 @@ package net.osmand.plus; -import net.osmand.PlatformUtil; -import net.osmand.access.AccessibleToast; -import net.osmand.plus.osmo.OsMoPlugin; import android.app.AlarmManager; -import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; import android.app.Service; @@ -27,33 +23,42 @@ import android.support.v7.app.NotificationCompat; import android.util.Log; import android.widget.Toast; +import net.osmand.PlatformUtil; +import net.osmand.access.AccessibleToast; +import net.osmand.plus.activities.MapActivity; +import net.osmand.plus.monitoring.OsmandMonitoringPlugin; +import net.osmand.plus.osmo.OsMoPlugin; + public class NavigationService extends Service implements LocationListener { public static class NavigationServiceBinder extends Binder { - + } + // global id don't conflict with others private final static int NOTIFICATION_SERVICE_ID = 5; - public final static String OSMAND_STOP_SERVICE_ACTION = "OSMAND_STOP_SERVICE_ACTION"; //$NON-NLS-1$ + public final static String OSMAND_STOP_SERVICE_ACTION = "OSMAND_STOP_SERVICE_ACTION"; //$NON-NLS-1$ + public final static String OSMAND_SAVE_SERVICE_ACTION = "OSMAND_SAVE_SERVICE_ACTION"; public static int USED_BY_NAVIGATION = 1; public static int USED_BY_GPX = 2; public static int USED_BY_LIVE = 4; - public final static String USAGE_INTENT = "SERVICE_USED_BY"; - + public final static String USAGE_INTENT = "SERVICE_USED_BY"; + private NavigationServiceBinder binder = new NavigationServiceBinder(); - + private int serviceOffInterval; private String serviceOffProvider; private int serviceError; - + private OsmandSettings settings; - + private Handler handler; private static WakeLock lockStatic; private PendingIntent pendingIntent; private BroadcastReceiver broadcastReceiver; + private BroadcastReceiver saveBroadcastReceiver; private int usedBy = 0; private OsmAndLocationProvider locationProvider; @@ -61,7 +66,7 @@ public class NavigationService extends Service implements LocationListener { public IBinder onBind(Intent intent) { return binder; } - + protected synchronized static PowerManager.WakeLock getLock(Context context) { if (lockStatic == null) { PowerManager mgr = (PowerManager) context.getSystemService(Context.POWER_SERVICE); @@ -73,29 +78,29 @@ public class NavigationService extends Service implements LocationListener { protected Handler getHandler() { return handler; } - + public int getServiceError() { return serviceError; } - + public int getServiceOffInterval() { return serviceOffInterval; } - + public String getServiceOffProvider() { return serviceOffProvider; } - + public boolean isUsed() { return usedBy != 0; } - + public void addUsageIntent(int usageIntent) { usedBy |= usageIntent; } - + public void stopIfNeeded(Context ctx, int usageIntent) { - if((usedBy & usageIntent) > 0) { + if ((usedBy & usageIntent) > 0) { usedBy -= usageIntent; } @@ -114,7 +119,7 @@ public class NavigationService extends Service implements LocationListener { ctx.stopService(serviceIntent); } } - + @Override public int onStartCommand(Intent intent, int flags, int startId) { handler = new Handler(); @@ -135,13 +140,13 @@ public class NavigationService extends Service implements LocationListener { serviceError = Math.max(serviceError, 30 * 1000); // 3. not more than serviceOffInterval serviceError = Math.min(serviceError, serviceOffInterval); - - + + locationProvider = app.getLocationProvider(); app.setNavigationService(this); - - // requesting - if(isContinuous()){ + + // requesting + if (isContinuous()) { // request location updates LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE); try { @@ -155,11 +160,11 @@ public class NavigationService extends Service implements LocationListener { pendingIntent = PendingIntent.getBroadcast(this, 0, new Intent(this, OnNavigationServiceAlarmReceiver.class), PendingIntent.FLAG_UPDATE_CURRENT); alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() + 500, serviceOffInterval, pendingIntent); } - + // registering icon at top level // Leave icon visible even for navigation for proper display // if (!startedForNavigation) { - showNotificationInStatusBar(app); + showNotificationInStatusBar(app); // } return START_REDELIVER_INTENT; } @@ -168,35 +173,40 @@ public class NavigationService extends Service implements LocationListener { broadcastReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { - if(settings.SAVE_GLOBAL_TRACK_TO_GPX.get()) { + if (settings.SAVE_GLOBAL_TRACK_TO_GPX.get()) { settings.SAVE_GLOBAL_TRACK_TO_GPX.set(false); } OsMoPlugin plugin = OsmandPlugin.getEnabledPlugin(OsMoPlugin.class); - if(plugin != null) { - if(plugin.getTracker().isEnabledTracker()) { + if (plugin != null) { + if (plugin.getTracker().isEnabledTracker()) { plugin.getTracker().disableTracker(); } - } + } NavigationService.this.stopSelf(); } }; registerReceiver(broadcastReceiver, new IntentFilter(OSMAND_STOP_SERVICE_ACTION)); - - - Intent notificationIntent = new Intent(OSMAND_STOP_SERVICE_ACTION); + saveBroadcastReceiver = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + final OsmandMonitoringPlugin plugin = OsmandPlugin + .getEnabledPlugin(OsmandMonitoringPlugin.class); + plugin.saveCurrentTrack(); + } + }; + registerReceiver(saveBroadcastReceiver, new IntentFilter(OSMAND_SAVE_SERVICE_ACTION)); //Show currently active wake-up interval int soi = settings.SERVICE_OFF_INTERVAL.get(); - String nt = getString(R.string.service_stop_background_service) + ". " + getString(R.string.gps_wake_up_timer) + ": "; + String nt = getString(R.string.service_stop_background_service) + ". " + getString(R.string.gps_wake_up_timer) + ": "; if (soi == 0) { nt = nt + getString(R.string.int_continuosly); } else if (soi <= 90000) { - nt = nt + Integer.toString(soi/1000) + " " + getString(R.string.int_seconds); + nt = nt + Integer.toString(soi / 1000) + " " + getString(R.string.int_seconds); } else { - nt = nt + Integer.toString(soi/1000/60) + " " + getString(R.string.int_min); + nt = nt + Integer.toString(soi / 1000 / 60) + " " + getString(R.string.int_min); } - PendingIntent broadcast = PendingIntent.getBroadcast(this, 0, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT); // Notification notification = new Notification(R.drawable.bgs_icon, "", //$NON-NLS-1$ // System.currentTimeMillis()); // @@ -204,35 +214,51 @@ public class NavigationService extends Service implements LocationListener { // broadcast); // notification.flags = Notification.FLAG_NO_CLEAR; // startForeground(NOTIFICATION_SERVICE_ID, notification); - - final Builder noti = new NotificationCompat.Builder( - this).setContentTitle(Version.getAppName(cl)) - .setContentText(getString(R.string.osmand_service)).setSmallIcon(R.drawable.bgs_icon) -// .setLargeIcon(Helpers.getBitmap(R.drawable.mirakel, getBaseContext())) - .setContentIntent(broadcast).setOngoing(true); - startForeground(NOTIFICATION_SERVICE_ID, noti.build()); + + String stop = getResources().getString(R.string.shared_string_control_stop); + Intent stopIntent = new Intent(OSMAND_STOP_SERVICE_ACTION); + PendingIntent stopPendingIntent = PendingIntent.getBroadcast(this, 0, stopIntent, + PendingIntent.FLAG_UPDATE_CURRENT); + String pause = getResources().getString(R.string.shared_string_save); + Intent saveIntent = new Intent(OSMAND_SAVE_SERVICE_ACTION); + PendingIntent savePendingIntent = PendingIntent.getBroadcast(this, 0, saveIntent, + PendingIntent.FLAG_UPDATE_CURRENT); + Intent contentIntent = new Intent(this, MapActivity.class); + PendingIntent contentPendingIntent = PendingIntent.getActivity(this, 0, contentIntent, + PendingIntent.FLAG_UPDATE_CURRENT); + + final Builder notificationBuilder = new NotificationCompat.Builder( + this).setContentTitle(Version.getAppName(cl)) + .setContentText(getString(R.string.osmand_service)) + .setSmallIcon(R.drawable.bgs_icon) +// .setLargeIcon(Helpers.getBitmap(R.drawable.mirakel, getBaseContext())) + .setContentIntent(contentPendingIntent) + .setOngoing(true) + .addAction(R.drawable.ic_action_rec_stop, stop, stopPendingIntent) + .addAction(R.drawable.ic_action_save, pause, savePendingIntent); + startForeground(NOTIFICATION_SERVICE_ID, notificationBuilder.build()); } - + @Override public void onCreate() { super.onCreate(); // initializing variables } - - private boolean isContinuous(){ + + private boolean isContinuous() { return serviceOffInterval == 0; } - - + + @Override public void onDestroy() { super.onDestroy(); - ((OsmandApplication)getApplication()).setNavigationService(null); + ((OsmandApplication) getApplication()).setNavigationService(null); usedBy = 0; // remove updates LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE); locationManager.removeUpdates(this); - + if (!isContinuous()) { WakeLock lock = getLock(this); if (lock.isHeld()) { @@ -253,15 +279,19 @@ public class NavigationService extends Service implements LocationListener { unregisterReceiver(broadcastReceiver); broadcastReceiver = null; } + if (saveBroadcastReceiver != null) { + unregisterReceiver(saveBroadcastReceiver); + saveBroadcastReceiver = null; + } stopForeground(Boolean.TRUE); } @Override public void onLocationChanged(Location l) { - if(l != null && !settings.MAP_ACTIVITY_ENABLED.get()){ - net.osmand.Location location = OsmAndLocationProvider.convertLocation(l,(OsmandApplication) getApplication()); - if(!isContinuous()){ + if (l != null && !settings.MAP_ACTIVITY_ENABLED.get()) { + net.osmand.Location location = OsmAndLocationProvider.convertLocation(l, (OsmandApplication) getApplication()); + if (!isContinuous()) { // unregister listener and wait next time LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE); locationManager.removeUpdates(this); @@ -272,7 +302,7 @@ public class NavigationService extends Service implements LocationListener { } locationProvider.setLocationFromService(location, isContinuous()); } - + } @Override @@ -281,21 +311,19 @@ public class NavigationService extends Service implements LocationListener { } - @Override public void onProviderEnabled(String provider) { } - @Override public void onStatusChanged(String provider, int status, Bundle extras) { } - + @Override public void onTaskRemoved(Intent rootIntent) { - if (((OsmandApplication) getApplication()).getNavigationService() != null && - ((OsmandApplication) getApplication()).getSettings().DISABLE_RECORDING_ONCE_APP_KILLED.get()) { + if (((OsmandApplication) getApplication()).getNavigationService() != null && + ((OsmandApplication) getApplication()).getSettings().DISABLE_RECORDING_ONCE_APP_KILLED.get()) { OsMoPlugin plugin = OsmandPlugin.getEnabledPlugin(OsMoPlugin.class); if (plugin != null) { if (plugin.getTracker().isEnabledTracker()) { @@ -305,6 +333,4 @@ public class NavigationService extends Service implements LocationListener { NavigationService.this.stopSelf(); } } - - } diff --git a/OsmAnd/src/net/osmand/plus/myplaces/AvailableGPXFragment.java b/OsmAnd/src/net/osmand/plus/myplaces/AvailableGPXFragment.java index 7eb2dc3c2d..c7739f4a15 100644 --- a/OsmAnd/src/net/osmand/plus/myplaces/AvailableGPXFragment.java +++ b/OsmAnd/src/net/osmand/plus/myplaces/AvailableGPXFragment.java @@ -1,47 +1,5 @@ package net.osmand.plus.myplaces; -import java.io.File; -import java.text.Collator; -import java.text.DateFormat; -import java.text.MessageFormat; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Date; -import java.util.HashSet; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Locale; -import java.util.Map; -import java.util.Set; - -import net.osmand.IndexConstants; -import net.osmand.access.AccessibleToast; -import net.osmand.plus.ContextMenuAdapter; -import net.osmand.plus.ContextMenuAdapter.OnContextMenuClick; -import net.osmand.plus.GPXUtilities; -import net.osmand.plus.GPXUtilities.GPXFile; -import net.osmand.plus.GPXUtilities.GPXTrackAnalysis; -import net.osmand.plus.GPXUtilities.WptPt; -import net.osmand.plus.GpxSelectionHelper; -import net.osmand.plus.GpxSelectionHelper.SelectedGpxFile; -import net.osmand.plus.IconsCache; -import net.osmand.plus.OsmAndFormatter; -import net.osmand.plus.OsmandApplication; -import net.osmand.plus.OsmandPlugin; -import net.osmand.plus.OsmandSettings; -import net.osmand.plus.R; -import net.osmand.plus.activities.MapActivity; -import net.osmand.plus.activities.OsmandActionBarActivity; -import net.osmand.plus.activities.OsmandBaseExpandableListAdapter; -import net.osmand.plus.activities.OsmandExpandableListFragment; -import net.osmand.plus.activities.SavingTrackHelper; -import net.osmand.plus.activities.TrackActivity; -import net.osmand.plus.dialogs.DirectionsDialogs; -import net.osmand.plus.download.LocalIndexesFragment; -import net.osmand.plus.helpers.AndroidUiHelper; -import net.osmand.plus.monitoring.OsmandMonitoringPlugin; -import net.osmand.plus.osmedit.OsmEditingPlugin; -import net.osmand.util.Algorithms; import android.app.Activity; import android.app.AlertDialog; import android.app.AlertDialog.Builder; @@ -75,6 +33,49 @@ import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; +import net.osmand.IndexConstants; +import net.osmand.access.AccessibleToast; +import net.osmand.plus.ContextMenuAdapter; +import net.osmand.plus.ContextMenuAdapter.OnContextMenuClick; +import net.osmand.plus.GPXUtilities; +import net.osmand.plus.GPXUtilities.GPXFile; +import net.osmand.plus.GPXUtilities.GPXTrackAnalysis; +import net.osmand.plus.GPXUtilities.WptPt; +import net.osmand.plus.GpxSelectionHelper; +import net.osmand.plus.GpxSelectionHelper.SelectedGpxFile; +import net.osmand.plus.IconsCache; +import net.osmand.plus.OsmAndFormatter; +import net.osmand.plus.OsmandApplication; +import net.osmand.plus.OsmandPlugin; +import net.osmand.plus.OsmandSettings; +import net.osmand.plus.R; +import net.osmand.plus.activities.MapActivity; +import net.osmand.plus.activities.OsmandActionBarActivity; +import net.osmand.plus.activities.OsmandBaseExpandableListAdapter; +import net.osmand.plus.activities.OsmandExpandableListFragment; +import net.osmand.plus.activities.SavingTrackHelper; +import net.osmand.plus.activities.TrackActivity; +import net.osmand.plus.dialogs.DirectionsDialogs; +import net.osmand.plus.download.LocalIndexesFragment; +import net.osmand.plus.helpers.AndroidUiHelper; +import net.osmand.plus.monitoring.OsmandMonitoringPlugin; +import net.osmand.plus.osmedit.OsmEditingPlugin; +import net.osmand.util.Algorithms; + +import java.io.File; +import java.text.Collator; +import java.text.DateFormat; +import java.text.MessageFormat; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Date; +import java.util.HashSet; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Set; + public class AvailableGPXFragment extends OsmandExpandableListFragment { public static final int SEARCH_ID = -1; @@ -115,7 +116,7 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment { public void run() { if (getView() != null && updateEnable) { updateCurrentTrack(getView(), getActivity(), app); - if(selectedGpxHelper.getSelectedCurrentRecordingTrack() != null) { + if (selectedGpxHelper.getSelectedCurrentRecordingTrack() != null) { allGpxAdapter.notifyDataSetChanged(); } startHandler(); @@ -139,7 +140,7 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment { allGpxAdapter.notifyDataSetChanged(); } updateCurrentTrack(); - + updateEnable = true; startHandler(); } @@ -152,14 +153,14 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment { operationTask.cancel(true); } } - + public void updateCurrentTrack() { if (OsmandPlugin.getEnabledPlugin(OsmandMonitoringPlugin.class) == null) { return; } updateCurrentTrack(getView(), getActivity(), app); final CheckBox checkbox = (CheckBox) getView().findViewById(R.id.check_local_index); - checkbox.setVisibility(selectionMode && showOnMapMode? View.VISIBLE : View.GONE); + checkbox.setVisibility(selectionMode && showOnMapMode ? View.VISIBLE : View.GONE); if (selectionMode && showOnMapMode) { checkbox.setChecked(selectedItems.contains(currentRecording)); checkbox.setOnClickListener(new View.OnClickListener() { @@ -187,7 +188,7 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment { } final boolean isRecording = app.getSettings().SAVE_GLOBAL_TRACK_TO_GPX.get(); ImageButton stop = ((ImageButton) v.findViewById(R.id.stop)); - if(isRecording) { + if (isRecording) { stop.setImageDrawable(app.getIconsCache().getContentIcon(R.drawable.ic_action_rec_stop)); } else { stop.setImageDrawable(app.getIconsCache().getIcon(R.drawable.ic_action_rec_start, R.color.recording_color)); @@ -210,15 +211,9 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment { save.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - Runnable run = new Runnable() { - @Override - public void run() { - final OsmandMonitoringPlugin plugin = OsmandPlugin - .getEnabledPlugin(OsmandMonitoringPlugin.class); - plugin.saveCurrentTrack(); - } - }; - run.run(); + final OsmandMonitoringPlugin plugin = OsmandPlugin + .getEnabledPlugin(OsmandMonitoringPlugin.class); + plugin.saveCurrentTrack(); } }); if (sth.getPoints() > 0 || sth.getDistance() > 0) { @@ -265,11 +260,11 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment { return v; } - + public static void openTrack(Activity a, final File f) { Intent newIntent = new Intent(a, ((OsmandApplication) a.getApplication()).getAppCustomization().getTrackActivity()); // causes wrong position caching: newIntent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); - if(f == null) { + if (f == null) { newIntent.putExtra(TrackActivity.CURRENT_RECORDING, true); } else { newIntent.putExtra(TrackActivity.TRACK_FILE_NAME, f.getAbsolutePath()); @@ -435,7 +430,7 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment { private void openShowOnMapMode() { enableSelectionMode(true); - showOnMapMode = true; + showOnMapMode = true; selectedItems.clear(); final Set originalSelectedItems = allGpxAdapter.getSelectedGpx(); selectedItems.addAll(originalSelectedItems); @@ -487,7 +482,7 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment { } public void openSelectionMode(final int actionResId, int darkIcon, int lightIcon, - final DialogInterface.OnClickListener listener) { + final DialogInterface.OnClickListener listener) { final int actionIconId = !isLightActionBar() ? darkIcon : lightIcon; String value = app.getString(actionResId); if (value.endsWith("...")) { @@ -617,7 +612,7 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment { if (getActivity() != null) { ((OsmandActionBarActivity) getActivity()).setSupportProgressBarIndeterminateVisibility(false); } - if (allGpxAdapter.getGroupCount() > 0 && + if (allGpxAdapter.getGroupCount() > 0 && allGpxAdapter.isShowingSelection()) { getExpandableListView().expandGroup(0); } @@ -643,7 +638,7 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment { } private void loadGPXFolder(File mapPath, List result, LoadGpxTask loadTask, List progress, - String gpxSubfolder) { + String gpxSubfolder) { for (File gpxFile : listFilesSorted(mapPath)) { if (gpxFile.isDirectory()) { String sub = gpxSubfolder.length() == 0 ? gpxFile.getName() : gpxSubfolder + "/" @@ -682,7 +677,7 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment { public GpxIndexesAdapter(Context ctx) { warningColor = ctx.getResources().getColor(R.color.color_warning); - TypedArray ta = ctx.getTheme().obtainStyledAttributes(new int[] { android.R.attr.textColorPrimary }); + TypedArray ta = ctx.getTheme().obtainStyledAttributes(new int[]{android.R.attr.textColorPrimary}); defaultColor = ta.getColor(0, ctx.getResources().getColor(R.color.color_unknown)); ta.recycle(); } @@ -766,7 +761,7 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment { @Override public View getChildView(final int groupPosition, final int childPosition, boolean isLastChild, - View convertView, ViewGroup parent) { + View convertView, ViewGroup parent) { View v = convertView; final GpxInfo child = getChild(groupPosition, childPosition); if (v == null) { @@ -816,9 +811,9 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment { checkItem.setVisibility(View.GONE); } - + final boolean isChecked; - if(child.currentlyRecordingTrack) { + if (child.currentlyRecordingTrack) { isChecked = selectedGpxHelper.getSelectedCurrentRecordingTrack() != null; } else { final SelectedGpxFile selectedGpxFile = selectedGpxHelper.getSelectedFileByName(child.getFileName()); @@ -896,7 +891,7 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment { @Override public String getGroup(int groupPosition) { - if(isSelectedGroup(groupPosition)) { + if (isSelectedGroup(groupPosition)) { return app.getString(R.string.shared_string_selected); } return category.get(getGroupPosition(groupPosition)); @@ -1085,7 +1080,7 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment { protected String doInBackground(GpxInfo... params) { for (GpxInfo info : params) { if (!isCancelled()) { - if(!info.currentlyRecordingTrack) { + if (!info.currentlyRecordingTrack) { info.setGpx(GPXUtilities.loadGPXFile(app, info.file)); } publishProgress(info); @@ -1183,7 +1178,7 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment { if (!selectionMode) { Intent newIntent = new Intent(getActivity(), getMyApplication().getAppCustomization().getTrackActivity()); // causes wrong position caching: newIntent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); - if(item.currentlyRecordingTrack) { + if (item.currentlyRecordingTrack) { newIntent.putExtra(TrackActivity.CURRENT_RECORDING, true); } else { newIntent.putExtra(TrackActivity.TRACK_FILE_NAME, item.file.getAbsolutePath()); @@ -1298,7 +1293,7 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment { } else { viewName.setTypeface(Typeface.DEFAULT, Typeface.NORMAL); } - SelectedGpxFile sgpx = child.currentlyRecordingTrack ? selectedGpxHelper.getSelectedCurrentRecordingTrack() : + SelectedGpxFile sgpx = child.currentlyRecordingTrack ? selectedGpxHelper.getSelectedCurrentRecordingTrack() : selectedGpxHelper.getSelectedFileByName(child.getFileName()); GPXTrackAnalysis analysis = null; if (sgpx != null) { @@ -1314,7 +1309,7 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment { String size = ""; if (child.getSize() >= 0) { if (child.getSize() > 100) { - size = formatMb.format(new Object[] { (float) child.getSize() / (1 << 10) }); + size = formatMb.format(new Object[]{(float) child.getSize() / (1 << 10)}); } else { size = child.getSize() + " kB"; } @@ -1346,14 +1341,14 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment { // if (analysis.totalDistanceMoving != 0) { // distance.setText(OsmAndFormatter.getFormattedDistance(analysis.totalDistanceMoving, app)); // } else { - distance.setText(OsmAndFormatter.getFormattedDistance(analysis.totalDistance, app)); + distance.setText(OsmAndFormatter.getFormattedDistance(analysis.totalDistance, app)); // } if (analysis.isTimeSpecified()) { // if (analysis.isTimeMoving()) { // time.setText(Algorithms.formatDuration((int) (analysis.timeMoving / 1000)) + ""); // } else { - time.setText(Algorithms.formatDuration((int) (analysis.timeSpan / 1000)) + ""); + time.setText(Algorithms.formatDuration((int) (analysis.timeSpan / 1000)) + ""); // } } else { time.setText(""); From aa036c0ed6dbbe5118fc53ba5b7b892dd2e2ab0c Mon Sep 17 00:00:00 2001 From: GaidamakUA Date: Fri, 24 Jul 2015 12:09:50 +0300 Subject: [PATCH 03/32] Add bookmark dialog: Category suggestion on 0 characters added. --- OsmAnd/res/layout/favorite_edit_dialog.xml | 5 +-- .../plus/widgets/AutoCompleteTextViewEx.java | 41 +++++++++++++++++++ 2 files changed, 43 insertions(+), 3 deletions(-) create mode 100644 OsmAnd/src/net/osmand/plus/widgets/AutoCompleteTextViewEx.java diff --git a/OsmAnd/res/layout/favorite_edit_dialog.xml b/OsmAnd/res/layout/favorite_edit_dialog.xml index c591527713..e080008d5a 100644 --- a/OsmAnd/res/layout/favorite_edit_dialog.xml +++ b/OsmAnd/res/layout/favorite_edit_dialog.xml @@ -31,11 +31,10 @@ android:layout_marginTop="@dimen/dialog_elements_vertical_margin" android:text="@string/favourites_edit_dialog_category"/> - + android:layout_height="wrap_content"/> Date: Mon, 27 Jul 2015 20:58:10 +0300 Subject: [PATCH 04/32] Fixing issue #1486. Incorrect parsing of double parentheses. Now double parentheses are simply removed. --- OsmAnd-java/build.gradle | 2 + .../net/osmand/util/GeoPointParserUtil.java | 11 ++- .../activities/search/GeoIntentActivity.java | 68 ++++++++++--------- 3 files changed, 47 insertions(+), 34 deletions(-) diff --git a/OsmAnd-java/build.gradle b/OsmAnd-java/build.gradle index 55d9132bfb..d20b813fee 100644 --- a/OsmAnd-java/build.gradle +++ b/OsmAnd-java/build.gradle @@ -1,4 +1,6 @@ apply plugin: 'java' +apply plugin:'application' +mainClassName = "net.osmand.util.GeoPointParserUtil" sourceSets { main { diff --git a/OsmAnd-java/src/net/osmand/util/GeoPointParserUtil.java b/OsmAnd-java/src/net/osmand/util/GeoPointParserUtil.java index 8d684d1dba..9d42289be8 100644 --- a/OsmAnd-java/src/net/osmand/util/GeoPointParserUtil.java +++ b/OsmAnd-java/src/net/osmand/util/GeoPointParserUtil.java @@ -3,7 +3,6 @@ package net.osmand.util; import java.net.URI; import java.net.URLDecoder; import java.net.URLEncoder; -import java.util.HashMap; import java.util.HashSet; import java.util.LinkedHashMap; import java.util.Locale; @@ -465,6 +464,13 @@ public class GeoPointParserUtil { actual = GeoPointParserUtil.parse(url); assertGeoPoint(actual, new GeoParsedPoint(dlat, dlon, z)); + // http://maps.google.com/maps?lci=com.google.latitudepublicupdates&ll=34.99393%2C-106.61568&q=34.99393%2C-106.61568 + z = GeoParsedPoint.NO_ZOOM; + url = "http://maps.google.com/maps?lci=com.google.latitudepublicupdates&ll=55.8063697%2C25.3749485&q=55.8063697%2C25.3749485((55.8063670%2C%2025.3749488))"; + System.out.println("url: " + url); + actual = GeoPointParserUtil.parse(url); + assertGeoPoint(actual, new GeoParsedPoint(55.8063697, 25.3749485, z)); + // https://www.google.com/maps/place/34%C2%B059'38.1%22N+106%C2%B036'56.5%22W/@34.99393,-106.61568,17z/data=!3m1!4b1!4m2!3m1!1s0x0:0x0 z = 17; url = "https://www.google.com/maps/place/34%C2%B059'38.1%22N+106%C2%B036'56.5%22W/@" + dlat + "," + dlon + "," + z + "z/data=!3m1!4b1!4m2!3m1!1s0x0:0x0"; @@ -785,7 +791,8 @@ public class GeoPointParserUtil { uri = URI.create(uriString.replaceAll("\\s+", "+") .replaceAll("%20", "+") .replaceAll("%2C", ",") - .replaceAll("\\|", ";")); + .replaceAll("\\|", ";") + .replaceAll("\\(\\(\\S+\\)\\)", "")); } catch (IllegalArgumentException e) { return null; } diff --git a/OsmAnd/src/net/osmand/plus/activities/search/GeoIntentActivity.java b/OsmAnd/src/net/osmand/plus/activities/search/GeoIntentActivity.java index 930f8b312a..039aa5de61 100644 --- a/OsmAnd/src/net/osmand/plus/activities/search/GeoIntentActivity.java +++ b/OsmAnd/src/net/osmand/plus/activities/search/GeoIntentActivity.java @@ -1,36 +1,5 @@ package net.osmand.plus.activities.search; -import android.widget.*; -import gnu.trove.map.hash.TLongObjectHashMap; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.Iterator; -import java.util.List; - -import net.osmand.ResultMatcher; -import net.osmand.access.AccessibleToast; -import net.osmand.data.Amenity; -import net.osmand.data.City; -import net.osmand.data.LatLon; -import net.osmand.data.MapObject; -import net.osmand.data.PointDescription; -import net.osmand.data.Street; -import net.osmand.plus.AppInitializer; -import net.osmand.plus.OsmAndFormatter; -import net.osmand.plus.OsmandApplication; -import net.osmand.plus.OsmandSettings; -import net.osmand.plus.R; -import net.osmand.plus.AppInitializer.AppInitializeListener; -import net.osmand.plus.AppInitializer.InitEvents; -import net.osmand.plus.activities.MapActivity; -import net.osmand.plus.activities.OsmandListActivity; -import net.osmand.plus.resources.RegionAddressRepository; -import net.osmand.plus.resources.ResourceManager; -import net.osmand.util.GeoPointParserUtil; -import net.osmand.util.MapUtils; -import android.app.Dialog; import android.app.ProgressDialog; import android.content.DialogInterface; import android.content.DialogInterface.OnCancelListener; @@ -41,9 +10,44 @@ import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.AdapterView; +import android.widget.ArrayAdapter; +import android.widget.TextView; +import android.widget.Toast; + +import net.osmand.ResultMatcher; +import net.osmand.access.AccessibleToast; +import net.osmand.data.Amenity; +import net.osmand.data.City; +import net.osmand.data.LatLon; +import net.osmand.data.MapObject; +import net.osmand.data.PointDescription; +import net.osmand.data.Street; +import net.osmand.plus.AppInitializer; +import net.osmand.plus.AppInitializer.AppInitializeListener; +import net.osmand.plus.AppInitializer.InitEvents; +import net.osmand.plus.OsmAndFormatter; +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.activities.OsmandListActivity; +import net.osmand.plus.resources.RegionAddressRepository; +import net.osmand.plus.resources.ResourceManager; +import net.osmand.util.GeoPointParserUtil; +import net.osmand.util.MapUtils; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.Iterator; +import java.util.List; + +import gnu.trove.map.hash.TLongObjectHashMap; public class GeoIntentActivity extends OsmandListActivity { + private static final String TAG = "GeoIntentActivity"; private ProgressDialog progressDlg; private LatLon location; @@ -206,7 +210,7 @@ public class GeoIntentActivity extends OsmandListActivity { * geo:0,0?q=34.99,-106.61(Treasure)
* geo:0,0?q=1600+Amphitheatre+Parkway%2C+CA
* - * @param data + * @param uri * The intent uri * @return */ From 28577ba244eca906822ac536fc5d51443a8a9a3c Mon Sep 17 00:00:00 2001 From: GaidamakUA Date: Mon, 27 Jul 2015 23:18:25 +0300 Subject: [PATCH 05/32] Removed hardcoded values --- OsmAnd-java/src/net/osmand/util/GeoPointParserUtil.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/OsmAnd-java/src/net/osmand/util/GeoPointParserUtil.java b/OsmAnd-java/src/net/osmand/util/GeoPointParserUtil.java index 9d42289be8..d81d1194e2 100644 --- a/OsmAnd-java/src/net/osmand/util/GeoPointParserUtil.java +++ b/OsmAnd-java/src/net/osmand/util/GeoPointParserUtil.java @@ -466,10 +466,11 @@ public class GeoPointParserUtil { // http://maps.google.com/maps?lci=com.google.latitudepublicupdates&ll=34.99393%2C-106.61568&q=34.99393%2C-106.61568 z = GeoParsedPoint.NO_ZOOM; - url = "http://maps.google.com/maps?lci=com.google.latitudepublicupdates&ll=55.8063697%2C25.3749485&q=55.8063697%2C25.3749485((55.8063670%2C%2025.3749488))"; + url = "http://maps.google.com/maps?lci=com.google.latitudepublicupdates&ll=" + dlat + +"%2C" + dlon + "&q=" + dlat + "%2C" + dlon + "((" + dlat + "%2C%20" + dlon + "))"; System.out.println("url: " + url); actual = GeoPointParserUtil.parse(url); - assertGeoPoint(actual, new GeoParsedPoint(55.8063697, 25.3749485, z)); + assertGeoPoint(actual, new GeoParsedPoint(dlat, dlon, z)); // https://www.google.com/maps/place/34%C2%B059'38.1%22N+106%C2%B036'56.5%22W/@34.99393,-106.61568,17z/data=!3m1!4b1!4m2!3m1!1s0x0:0x0 z = 17; From ec63970bdebdf350205abcc99f4a765d3235d46d Mon Sep 17 00:00:00 2001 From: GaidamakUA Date: Mon, 27 Jul 2015 23:30:10 +0300 Subject: [PATCH 06/32] Removed unnecessary tag --- .../src/net/osmand/plus/activities/search/GeoIntentActivity.java | 1 - 1 file changed, 1 deletion(-) diff --git a/OsmAnd/src/net/osmand/plus/activities/search/GeoIntentActivity.java b/OsmAnd/src/net/osmand/plus/activities/search/GeoIntentActivity.java index 039aa5de61..2a01901c09 100644 --- a/OsmAnd/src/net/osmand/plus/activities/search/GeoIntentActivity.java +++ b/OsmAnd/src/net/osmand/plus/activities/search/GeoIntentActivity.java @@ -47,7 +47,6 @@ import gnu.trove.map.hash.TLongObjectHashMap; public class GeoIntentActivity extends OsmandListActivity { - private static final String TAG = "GeoIntentActivity"; private ProgressDialog progressDlg; private LatLon location; From 362aecfc7a5d7b2bc0298548fa1bd6898d2e3bf2 Mon Sep 17 00:00:00 2001 From: GaidamakUA Date: Tue, 28 Jul 2015 12:18:12 +0300 Subject: [PATCH 07/32] Saving of WebView state --- .../osmand/plus/activities/HelpActivity.java | 88 +++++++++++-------- 1 file changed, 52 insertions(+), 36 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/activities/HelpActivity.java b/OsmAnd/src/net/osmand/plus/activities/HelpActivity.java index 4cf17dc157..ed1cea4efb 100644 --- a/OsmAnd/src/net/osmand/plus/activities/HelpActivity.java +++ b/OsmAnd/src/net/osmand/plus/activities/HelpActivity.java @@ -1,21 +1,27 @@ package net.osmand.plus.activities; +import android.annotation.SuppressLint; +import android.content.pm.ActivityInfo; +import android.os.Build; +import android.os.Bundle; +import android.support.v4.view.MenuItemCompat; +import android.support.v7.widget.Toolbar; +import android.view.Menu; +import android.view.MenuItem; +import android.view.MotionEvent; +import android.view.View; +import android.view.Window; +import android.webkit.WebView; +import android.webkit.WebViewClient; + +import net.osmand.plus.OsmandApplication; +import net.osmand.plus.R; +import net.osmand.plus.helpers.AndroidUiHelper; + import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; -import android.annotation.SuppressLint; -import android.content.pm.ActivityInfo; -import android.os.Build; -import android.support.v4.view.MenuItemCompat; -import android.support.v7.widget.Toolbar; -import android.view.*; -import net.osmand.plus.OsmandApplication; -import net.osmand.plus.R; -import net.osmand.plus.helpers.AndroidUiHelper; -import android.os.Bundle; -import android.webkit.WebView; -import android.webkit.WebViewClient; public class HelpActivity extends OsmandActionBarActivity { @@ -27,7 +33,7 @@ public class HelpActivity extends OsmandActionBarActivity { private static final int BACK = 2; private static final int FORWARD = 3; private static final int CLOSE = 4; - private WebView wv; + private WebView mWebView; @SuppressLint("NewApi") @Override @@ -53,38 +59,48 @@ public class HelpActivity extends OsmandActionBarActivity { } getSupportActionBar().setTitle(title); setContentView(R.layout.help_activity); - wv = (WebView) findViewById(R.id.webView); - wv.setFocusable(true); - wv.setFocusableInTouchMode(true); - wv.requestFocus(View.FOCUS_DOWN); - wv.setOnTouchListener(new View.OnTouchListener() { + mWebView = (WebView) findViewById(R.id.webView); + mWebView.setFocusable(true); + mWebView.setFocusableInTouchMode(true); + mWebView.requestFocus(View.FOCUS_DOWN); + mWebView.setOnTouchListener(new View.OnTouchListener() { @Override - public boolean onTouch(View v, MotionEvent event) { + public boolean onTouch(View view, MotionEvent event) { switch (event.getAction()) { - case MotionEvent.ACTION_DOWN: - case MotionEvent.ACTION_UP: - if (!v.hasFocus()) { - v.requestFocus(); - } - break; + case MotionEvent.ACTION_DOWN: + case MotionEvent.ACTION_UP: + if (!view.hasFocus()) { + view.requestFocus(); + } + break; } return false; } }); - - wv.setWebViewClient(new WebViewClient() { - + + mWebView.setWebViewClient(new WebViewClient() { + @Override public void onPageFinished(WebView view, String url) { - wv.requestFocus(View.FOCUS_DOWN); + mWebView.requestFocus(View.FOCUS_DOWN); } - + @Override public void onLoadResource(WebView view, String url) { super.onLoadResource(view, url); } }); - wv.loadUrl(FILE_ANDROID_ASSET_HELP + url); + if (savedInstanceState != null) { + mWebView.restoreState(savedInstanceState); + } else { + mWebView.loadUrl(FILE_ANDROID_ASSET_HELP + url); + } + } + + @Override + protected void onSaveInstanceState(Bundle outState) { + mWebView.saveState(outState); + super.onSaveInstanceState(outState); } public String readContent(String url) throws IOException { @@ -133,16 +149,16 @@ public class HelpActivity extends OsmandActionBarActivity { finish(); return true; case HOME: - wv.loadUrl(FILE_ANDROID_ASSET_HELP + "index.html"); + mWebView.loadUrl(FILE_ANDROID_ASSET_HELP + "index.html"); return true; case BACK: - if(wv.canGoBack()) { - wv.goBack(); + if(mWebView.canGoBack()) { + mWebView.goBack(); } return true; case FORWARD: - if(wv.canGoForward()) { - wv.goForward(); + if(mWebView.canGoForward()) { + mWebView.goForward(); } return true; case CLOSE: From 97754ea50c8389af4fc40d82e4bf6813e58ebc7d Mon Sep 17 00:00:00 2001 From: GaidamakUA Date: Tue, 28 Jul 2015 14:03:19 +0300 Subject: [PATCH 08/32] issue #1500, POI dialog fix --- .../osmedit/EditingPOIDialogProvider.java | 460 +++++++++--------- 1 file changed, 229 insertions(+), 231 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/osmedit/EditingPOIDialogProvider.java b/OsmAnd/src/net/osmand/plus/osmedit/EditingPOIDialogProvider.java index 88e1c32a0b..3ba7302529 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/EditingPOIDialogProvider.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/EditingPOIDialogProvider.java @@ -29,14 +29,13 @@ import android.widget.TableLayout; import android.widget.TableRow; import android.widget.TextView; import android.widget.Toast; + import net.osmand.access.AccessibleToast; import net.osmand.data.Amenity; import net.osmand.osm.MapPoiTypes; -import net.osmand.osm.MapRenderingTypes; import net.osmand.osm.PoiCategory; import net.osmand.osm.PoiType; import net.osmand.osm.edit.EntityInfo; -import net.osmand.osm.edit.EntityParser; import net.osmand.osm.edit.Node; import net.osmand.osm.edit.OSMSettings.OSMTagKey; import net.osmand.plus.OsmAndFormatter; @@ -62,7 +61,7 @@ import java.util.Set; import java.util.TreeSet; public class EditingPOIDialogProvider implements DialogProvider { - + private final Activity activity; private final OsmEditingPlugin plugin; private OpenstreetmapUtil openstreetmapUtil; @@ -86,7 +85,7 @@ public class EditingPOIDialogProvider implements DialogProvider { public static final int DIALOG_PLUGIN = 600; private static final int DIALOG_CREATE_POI = DIALOG_PLUGIN + 0; private static final int DIALOG_EDIT_POI = DIALOG_PLUGIN + 1; - protected static final int DIALOG_SUB_CATEGORIES = DIALOG_PLUGIN + 2; + protected static final int DIALOG_SUB_CATEGORIES = DIALOG_PLUGIN + 2; protected static final int DIALOG_POI_TYPES = DIALOG_PLUGIN + 3; private static final int DIALOG_DELETE_POI = DIALOG_PLUGIN + 4; private static final int DIALOG_OPENING_HOURS = DIALOG_PLUGIN + 5; @@ -99,12 +98,12 @@ public class EditingPOIDialogProvider implements DialogProvider { private MapPoiTypes poiTypes; private boolean isLocalEdit; private Map allTranslatedSubTypes; - + public EditingPOIDialogProvider(MapActivity uiContext, OsmEditingPlugin plugin) { this.activity = uiContext; this.plugin = plugin; - + } private void prepareProvider() { @@ -121,10 +120,10 @@ public class EditingPOIDialogProvider implements DialogProvider { } else { isLocalEdit = false; this.openstreetmapUtil = new OpenstreetmapRemoteUtil(activity); - this.openstreetmapUtilToLoad = openstreetmapUtil; + this.openstreetmapUtilToLoad = openstreetmapUtil; } } - + public void showEditDialog(final Amenity editA){ prepareProvider(); new AsyncTask() { @@ -133,7 +132,7 @@ public class EditingPOIDialogProvider implements DialogProvider { protected Node doInBackground(Void... params) { return openstreetmapUtilToLoad.loadNode(editA); } - + protected void onPostExecute(Node n) { if(n != null){ showPOIDialog(DIALOG_EDIT_POI, n, editA); @@ -141,43 +140,43 @@ public class EditingPOIDialogProvider implements DialogProvider { AccessibleToast.makeText(activity, activity.getString(R.string.poi_error_poi_not_found), Toast.LENGTH_SHORT).show(); } }; - + }.execute(new Void[0]); } - + public void showCreateDialog(double latitude, double longitude){ prepareProvider(); Node n = new Node(latitude, longitude, -1); showPOIDialog(DIALOG_CREATE_POI, n, null); } - private void showPOIDialog(int dialogID, Node n, Amenity a) { - Amenity am; - if(a == null) { - am = new Amenity(); - am.setType(poiTypes.getOtherPoiCategory()); - am.setSubType(""); - am.setAdditionalInfo(OSMTagKey.OPENING_HOURS.getValue(), ""); + private void showPOIDialog(int dialogID, Node node, Amenity amenity) { + Amenity localAmenity; + if(amenity == null) { + localAmenity = new Amenity(); + localAmenity.setType(poiTypes.getOtherPoiCategory()); + localAmenity.setSubType(""); + localAmenity.setAdditionalInfo(OSMTagKey.OPENING_HOURS.getValue(), ""); } else { - am = new Amenity(); - am.copyNames(a); - am.setType(a.getType()); - am.setSubType(a.getSubType()); - am.setAdditionalInfo(a.getAdditionalInfo()); + localAmenity = new Amenity(); + localAmenity.copyNames(amenity); + localAmenity.setType(amenity.getType()); + localAmenity.setSubType(amenity.getSubType()); + localAmenity.setAdditionalInfo(amenity.getAdditionalInfo()); } -// Amenity a = EntityParser.parseAmenity(n, n.getTags(), type, subType, MapRenderingTypes.getDefault()); - dialogBundle.putSerializable(KEY_AMENITY, a); - dialogBundle.putSerializable(KEY_AMENITY_NODE, n); +// Amenity amenity = EntityParser.parseAmenity(node, node.getTags(), type, subType, MapRenderingTypes.getDefault()); + dialogBundle.putSerializable(KEY_AMENITY, localAmenity); + dialogBundle.putSerializable(KEY_AMENITY_NODE, node); createPOIDialog(dialogID, dialogBundle).show(); } - + public void showDeleteDialog(final Amenity a){ prepareProvider(); new AsyncTask() { protected Node doInBackground(Void[] params) { return openstreetmapUtil.loadNode(a); }; - + protected void onPostExecute(Node n) { if(n == null){ AccessibleToast.makeText(activity, activity.getResources().getString(R.string.poi_error_poi_not_found), Toast.LENGTH_LONG).show(); @@ -189,13 +188,13 @@ public class EditingPOIDialogProvider implements DialogProvider { }; }.execute(new Void[0]); } - + private void prepareDeleteDialog(Dialog dlg, Bundle args) { Amenity a = (Amenity) args.getSerializable(KEY_AMENITY); - dlg.setTitle(MessageFormat.format(this.activity.getResources().getString(R.string.poi_remove_confirm_template), + dlg.setTitle(MessageFormat.format(this.activity.getResources().getString(R.string.poi_remove_confirm_template), OsmAndFormatter.getPoiStringWithoutType(a, settings.MAP_PREFERRED_LOCALE.get()))); } - + private Dialog createDeleteDialog(final Bundle args) { Builder builder = new AlertDialog.Builder(activity); builder.setTitle(R.string.poi_remove_title); @@ -222,20 +221,20 @@ public class EditingPOIDialogProvider implements DialogProvider { String c = comment.getText().toString(); commitNode(OsmPoint.Action.DELETE, n, openstreetmapUtil.getEntityInfo(), c, closeChangeset == null ? false : closeChangeset.isSelected(), new Runnable() { - @Override - public void run() { - if (isLocalEdit) { - AccessibleToast.makeText( - activity,R.string.osm_changes_added_to_local_edits, - Toast.LENGTH_LONG).show(); - } else { - AccessibleToast.makeText(activity, R.string.poi_remove_success, Toast.LENGTH_LONG).show(); - } - if(activity instanceof MapActivity){ - ((MapActivity) activity).getMapView().refreshMap(true); - } - } - }); + @Override + public void run() { + if (isLocalEdit) { + AccessibleToast.makeText( + activity,R.string.osm_changes_added_to_local_edits, + Toast.LENGTH_LONG).show(); + } else { + AccessibleToast.makeText(activity, R.string.poi_remove_success, Toast.LENGTH_LONG).show(); + } + if(activity instanceof MapActivity){ + ((MapActivity) activity).getMapView().refreshMap(true); + } + } + }); } }); return builder.create(); @@ -260,28 +259,28 @@ public class EditingPOIDialogProvider implements DialogProvider { layout.setVisibility(View.GONE); updateType(a); } - + private void addTagValueRow(final Node n, final TableLayout layout, String tg, String vl) { - final TableRow newTagRow = new TableRow(activity); - TableRow.LayoutParams tlp = new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT); - tlp.leftMargin = 5; - tlp.gravity = Gravity.CENTER_HORIZONTAL | Gravity.BOTTOM; - newTagRow.setLayoutParams(tlp); + final TableRow newTagRow = new TableRow(activity); + TableRow.LayoutParams tlp = new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT); + tlp.leftMargin = 5; + tlp.gravity = Gravity.CENTER_HORIZONTAL | Gravity.BOTTOM; + newTagRow.setLayoutParams(tlp); - final AutoCompleteTextView tag = new AutoCompleteTextView(activity); - final AutoCompleteTextView value = new AutoCompleteTextView(activity); - final Button delete = new Button(activity); - - tag.setDropDownWidth(ViewGroup.LayoutParams.MATCH_PARENT); - value.setDropDownWidth(ViewGroup.LayoutParams.MATCH_PARENT); - tag.setLayoutParams(tlp); - if(tg != null) { - tag.setText(tg); - } else { - tag.setHint("Tag"); - } + final AutoCompleteTextView tag = new AutoCompleteTextView(activity); + final AutoCompleteTextView value = new AutoCompleteTextView(activity); + final Button delete = new Button(activity); - final Set tagKeys = new TreeSet(); + tag.setDropDownWidth(ViewGroup.LayoutParams.MATCH_PARENT); + value.setDropDownWidth(ViewGroup.LayoutParams.MATCH_PARENT); + tag.setLayoutParams(tlp); + if(tg != null) { + tag.setText(tg); + } else { + tag.setHint("Tag"); + } + + final Set tagKeys = new TreeSet(); for (OSMTagKey t : OSMTagKey.values()) { if ((t != OSMTagKey.NAME) && (t != OSMTagKey.OPENING_HOURS) && (t != OSMTagKey.PHONE) && (t != OSMTagKey.WEBSITE)) { @@ -289,9 +288,9 @@ public class EditingPOIDialogProvider implements DialogProvider { } } ArrayAdapter adapter = new ArrayAdapter(activity, R.layout.list_textview, tagKeys.toArray()); - tag.setAdapter(adapter); - tag.setThreshold(1); - tag.setOnClickListener(new View.OnClickListener() { + tag.setAdapter(adapter); + tag.setThreshold(1); + tag.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Builder builder = new AlertDialog.Builder(activity); @@ -301,31 +300,31 @@ public class EditingPOIDialogProvider implements DialogProvider { public void onClick(DialogInterface dialog, int which) { tag.setText(tags[which]); } - - }); + + }); builder.create(); builder.show(); } - }); - tlp = new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.FILL_PARENT); - tlp.leftMargin = 5; - tlp.gravity = Gravity.CENTER_HORIZONTAL | Gravity.BOTTOM; - value.setLayoutParams(tlp); - if(vl != null) { - value.setText(vl); - } else { - value.setHint("Value"); - } - Set subCategories = new LinkedHashSet(); - // could be osm values + }); + tlp = new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.FILL_PARENT); + tlp.leftMargin = 5; + tlp.gravity = Gravity.CENTER_HORIZONTAL | Gravity.BOTTOM; + value.setLayoutParams(tlp); + if(vl != null) { + value.setText(vl); + } else { + value.setHint("Value"); + } + Set subCategories = new LinkedHashSet(); + // could be osm values // for (String s : poiTypes.getAllTranslatedNames().keySet()) { // if (!subCategories.contains(s)) { // subCategories.add(s); // } // } ; - ArrayAdapter valueAdapter = new ArrayAdapter(activity, R.layout.list_textview, subCategories.toArray()); - value.setThreshold(1); - value.setAdapter(valueAdapter); + ArrayAdapter valueAdapter = new ArrayAdapter(activity, R.layout.list_textview, subCategories.toArray()); + value.setThreshold(1); + value.setAdapter(valueAdapter); value.addTextChangedListener(new TextWatcher() { @Override public void afterTextChanged(Editable s) { @@ -343,26 +342,26 @@ public class EditingPOIDialogProvider implements DialogProvider { public void onTextChanged(CharSequence s, int start, int before, int count) { } }); - tlp = new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT); - tlp.gravity = Gravity.CENTER_HORIZONTAL | Gravity.BOTTOM; - tlp.rightMargin = 5; - delete.setLayoutParams(tlp); - delete.setText("X"); - delete.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - layout.removeView(newTagRow); - layout.invalidate(); - n.removeTag(tag.getText().toString()); - } - }); - newTagRow.addView(tag); - newTagRow.addView(value); - newTagRow.addView(delete); - layout.addView(newTagRow); - layout.invalidate(); + tlp = new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT); + tlp.gravity = Gravity.CENTER_HORIZONTAL | Gravity.BOTTOM; + tlp.rightMargin = 5; + delete.setLayoutParams(tlp); + delete.setText("X"); + delete.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + layout.removeView(newTagRow); + layout.invalidate(); + n.removeTag(tag.getText().toString()); + } + }); + newTagRow.addView(tag); + newTagRow.addView(value); + newTagRow.addView(delete); + layout.addView(newTagRow); + layout.invalidate(); } - + private Builder createPOIDialog(final int dialogID, Bundle args) { final View view = activity.getLayoutInflater().inflate(R.layout.editing_poi, null); final Builder dlg = new Builder(activity); @@ -377,7 +376,7 @@ public class EditingPOIDialogProvider implements DialogProvider { } //dlg.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);; - + nameText = ((EditText)view.findViewById(R.id.Name)); openingHours = ((EditText)view.findViewById(R.id.OpeningHours)); typeText = ((AutoCompleteTextView)view.findViewById(R.id.Type)); @@ -405,64 +404,64 @@ public class EditingPOIDialogProvider implements DialogProvider { }); linkToOsmDoc.setMovementMethod(LinkMovementMethod.getInstance()); - final Amenity a = (Amenity) args.getSerializable(KEY_AMENITY); - final Node n = (Node) args.getSerializable(KEY_AMENITY_NODE); + final Amenity amenity = (Amenity) args.getSerializable(KEY_AMENITY); + final Node node = (Node) args.getSerializable(KEY_AMENITY_NODE); dlg.setNegativeButton(R.string.shared_string_cancel, null); dlg.setPositiveButton( isLocalEdit ? R.string.shared_string_save : - R.string.default_buttons_commit, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - Resources resources = view.getResources(); - final String msg = n.getId() == -1 ? resources.getString(R.string.poi_action_add) : resources - .getString(R.string.poi_action_change); - OsmPoint.Action action = n.getId() == -1 ? OsmPoint.Action.CREATE : OsmPoint.Action.MODIFY; - String subType = typeText.getText().toString().trim().toLowerCase(); - if (allTranslatedSubTypes.get(subType) != null) { - PoiType pt = allTranslatedSubTypes.get(subType); - n.putTag(pt.getOsmTag(), pt.getOsmValue()); - if (pt.getOsmTag2() != null) { - n.putTag(pt.getOsmTag2(), pt.getOsmValue2()); - } - } else { - n.putTag(a.getType().getDefaultTag(), subType); - } - String name = nameText.getText().toString(); - if(name.length() > 0) { - n.putTag(OSMTagKey.NAME.getValue(), name); - } - if (openingHours.getText().toString().length() == 0) { - n.removeTag(OSMTagKey.OPENING_HOURS.getValue()); - } else { - n.putTag(OSMTagKey.OPENING_HOURS.getValue(), openingHours.getText().toString()); - } - String website = websiteText.getText().toString(); - if (website.length() > 0 ){ - n.putTag(OSMTagKey.WEBSITE.getValue(),website); - } else { - n.removeTag(OSMTagKey.WEBSITE.getValue()); - } - String phone = phoneText.getText().toString(); - if (phone.length() > 0 ){ - n.putTag(OSMTagKey.PHONE.getValue(),phone); - } else { - n.removeTag(OSMTagKey.PHONE.getValue()); - } - String str = streetNameText.getText().toString(); - if (str .length() > 0 ){ - n.putTag(OSMTagKey.ADDR_STREET.getValue(),str); - } else { - n.removeTag(OSMTagKey.ADDR_STREET.getValue()); - } - String hno = hnoText.getText().toString(); - if (hno .length() > 0 ){ - n.putTag(OSMTagKey.ADDR_HOUSE_NUMBER.getValue(),hno); - } else { - n.removeTag(OSMTagKey.ADDR_HOUSE_NUMBER.getValue()); - } - commitNode(action, n, openstreetmapUtil.getEntityInfo(), commentText.getText().toString(), closeChange.isSelected(), - new Runnable() { - @Override + R.string.default_buttons_commit, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + Resources resources = view.getResources(); + final String msg = node.getId() == -1 ? resources.getString(R.string.poi_action_add) : resources + .getString(R.string.poi_action_change); + OsmPoint.Action action = node.getId() == -1 ? OsmPoint.Action.CREATE : OsmPoint.Action.MODIFY; + String subType = typeText.getText().toString().trim().toLowerCase(); + if (allTranslatedSubTypes.get(subType) != null) { + PoiType pt = allTranslatedSubTypes.get(subType); + node.putTag(pt.getOsmTag(), pt.getOsmValue()); + if (pt.getOsmTag2() != null) { + node.putTag(pt.getOsmTag2(), pt.getOsmValue2()); + } + } else { + node.putTag(amenity.getType().getDefaultTag(), subType); + } + String name = nameText.getText().toString(); + if(name.length() > 0) { + node.putTag(OSMTagKey.NAME.getValue(), name); + } + if (openingHours.getText().toString().length() == 0) { + node.removeTag(OSMTagKey.OPENING_HOURS.getValue()); + } else { + node.putTag(OSMTagKey.OPENING_HOURS.getValue(), openingHours.getText().toString()); + } + String website = websiteText.getText().toString(); + if (website.length() > 0 ){ + node.putTag(OSMTagKey.WEBSITE.getValue(), website); + } else { + node.removeTag(OSMTagKey.WEBSITE.getValue()); + } + String phone = phoneText.getText().toString(); + if (phone.length() > 0 ){ + node.putTag(OSMTagKey.PHONE.getValue(), phone); + } else { + node.removeTag(OSMTagKey.PHONE.getValue()); + } + String str = streetNameText.getText().toString(); + if (str .length() > 0 ){ + node.putTag(OSMTagKey.ADDR_STREET.getValue(), str); + } else { + node.removeTag(OSMTagKey.ADDR_STREET.getValue()); + } + String hno = hnoText.getText().toString(); + if (hno .length() > 0 ){ + node.putTag(OSMTagKey.ADDR_HOUSE_NUMBER.getValue(), hno); + } else { + node.removeTag(OSMTagKey.ADDR_HOUSE_NUMBER.getValue()); + } + commitNode(action, node, openstreetmapUtil.getEntityInfo(), commentText.getText().toString(), closeChange.isSelected(), + new Runnable() { + @Override public void run() { if (isLocalEdit) { AccessibleToast.makeText( @@ -481,15 +480,15 @@ public class EditingPOIDialogProvider implements DialogProvider { } activity.removeDialog(dialogID); } - }); - } - }); + }); + } + }); preparePOIDialog(view, args); - attachListeners(view, a, n); - updateOsmTagValue(a); + attachListeners(view, amenity, node); + updateOsmTagValue(amenity); return dlg; } - + private void updateOsmTagValue(final Amenity a) { String subType = typeText.getText().toString().trim().toLowerCase(); String s = "OSM "; @@ -556,9 +555,9 @@ public class EditingPOIDialogProvider implements DialogProvider { activity.showDialog(DIALOG_POI_TYPES); } }); - + final Button advancedModeButton = ((Button)dlg.findViewById(R.id.advancedMode)); - advancedModeButton.setOnClickListener(new View.OnClickListener() { + advancedModeButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { final TableLayout layout = ((TableLayout) dlg.findViewById(R.id.advancedModeTable)); @@ -591,7 +590,7 @@ public class EditingPOIDialogProvider implements DialogProvider { } } }); - + } private void showSubCategory(Amenity a) { @@ -628,19 +627,19 @@ public class EditingPOIDialogProvider implements DialogProvider { subCategories.put(Algorithms.capitalizeFirstLetterAndLowercase(s.getKey()), s.getValue()); } } - ArrayAdapter adapter = new ArrayAdapter(activity, R.layout.list_textview, + ArrayAdapter adapter = new ArrayAdapter(activity, R.layout.list_textview, subCategories.keySet().toArray()); typeText.setAdapter(adapter); return subCategories; } - + private void updateType(Amenity a){ typeText.setText(a.getSubType()); typeButton.setText(a.getType().getTranslation()); updateSubTypesAdapter(a.getType()); updateOsmTagValue(a); } - + private Dialog createOpenHoursDlg(){ OpeningHours time = OpeningHoursParser.parseOpenedHours(openingHours.getText().toString()); @@ -648,7 +647,7 @@ public class EditingPOIDialogProvider implements DialogProvider { AccessibleToast.makeText(activity, activity.getString(R.string.opening_hours_not_supported), Toast.LENGTH_LONG).show(); return null; } - + List simple = null; if(time != null){ simple = new ArrayList(); @@ -661,7 +660,7 @@ public class EditingPOIDialogProvider implements DialogProvider { } } } - + Builder builder = new AlertDialog.Builder(activity); final OpeningHoursView v = new OpeningHoursView(activity); builder.setView(v.createOpeningHoursEditView(simple)); @@ -681,11 +680,11 @@ public class EditingPOIDialogProvider implements DialogProvider { }); return builder.create(); } - - + + public void commitNode(final OsmPoint.Action action, final Node n, final EntityInfo info, final String comment, - final boolean closeChangeSet, - final Runnable successAction) { + final boolean closeChangeSet, + final Runnable successAction) { if (info == null && OsmPoint.Action.CREATE != action) { AccessibleToast.makeText(activity, activity.getResources().getString(R.string.poi_error_info_not_loaded), Toast.LENGTH_LONG).show(); return; @@ -717,60 +716,60 @@ public class EditingPOIDialogProvider implements DialogProvider { public Dialog onCreateDialog(int id) { Bundle args = dialogBundle; switch (id) { - case DIALOG_DELETE_POI: - return createDeleteDialog(args); - case DIALOG_SUB_CATEGORIES: { - Builder builder = new AlertDialog.Builder(activity); - final Amenity a = (Amenity) args.getSerializable(KEY_AMENITY); - final Map allTranslatedNames = poiTypes.getAllTranslatedNames(a.getType(), true); - final String[] subCats = allTranslatedNames.keySet().toArray(new String[0]); - builder.setItems(subCats, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - PoiType poiType = allTranslatedNames.get(subCats[which]); - typeText.setText(subCats[which]); - activity.removeDialog(DIALOG_SUB_CATEGORIES); - } - }); - builder.setOnCancelListener(new DialogInterface.OnCancelListener() { - @Override - public void onCancel(DialogInterface dialog) { - activity.removeDialog(DIALOG_SUB_CATEGORIES); - } - }); - return builder.create(); - } - case DIALOG_POI_TYPES: { - final Amenity a = (Amenity) args.getSerializable(KEY_AMENITY); - Builder builder = new AlertDialog.Builder(activity); - final List categories = poiTypes.getCategories(false); - String[] vals = new String[categories.size()]; - for (int i = 0; i < vals.length; i++) { - vals[i] = categories.get(i).getTranslation(); - } - builder.setItems(vals, new Dialog.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - PoiCategory aType = categories.get(which); - if (aType != a.getType()) { - a.setType(aType); - a.setSubType(""); //$NON-NLS-1$ - updateType(a); + case DIALOG_DELETE_POI: + return createDeleteDialog(args); + case DIALOG_SUB_CATEGORIES: { + Builder builder = new AlertDialog.Builder(activity); + final Amenity a = (Amenity) args.getSerializable(KEY_AMENITY); + final Map allTranslatedNames = poiTypes.getAllTranslatedNames(a.getType(), true); + final String[] subCats = allTranslatedNames.keySet().toArray(new String[0]); + builder.setItems(subCats, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + PoiType poiType = allTranslatedNames.get(subCats[which]); + typeText.setText(subCats[which]); + activity.removeDialog(DIALOG_SUB_CATEGORIES); } - activity.removeDialog(DIALOG_POI_TYPES); + }); + builder.setOnCancelListener(new DialogInterface.OnCancelListener() { + @Override + public void onCancel(DialogInterface dialog) { + activity.removeDialog(DIALOG_SUB_CATEGORIES); + } + }); + return builder.create(); + } + case DIALOG_POI_TYPES: { + final Amenity a = (Amenity) args.getSerializable(KEY_AMENITY); + Builder builder = new AlertDialog.Builder(activity); + final List categories = poiTypes.getCategories(false); + String[] vals = new String[categories.size()]; + for (int i = 0; i < vals.length; i++) { + vals[i] = categories.get(i).getTranslation(); } - }); - builder.setOnCancelListener(new DialogInterface.OnCancelListener() { - @Override - public void onCancel(DialogInterface dialog) { - activity.removeDialog(DIALOG_POI_TYPES); - } - }); - return builder.create(); - } - case DIALOG_OPENING_HOURS: { - return createOpenHoursDlg(); - } + builder.setItems(vals, new Dialog.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + PoiCategory aType = categories.get(which); + if (aType != a.getType()) { + a.setType(aType); + a.setSubType(""); //$NON-NLS-1$ + updateType(a); + } + activity.removeDialog(DIALOG_POI_TYPES); + } + }); + builder.setOnCancelListener(new DialogInterface.OnCancelListener() { + @Override + public void onCancel(DialogInterface dialog) { + activity.removeDialog(DIALOG_POI_TYPES); + } + }); + return builder.create(); + } + case DIALOG_OPENING_HOURS: { + return createOpenHoursDlg(); + } } return null; } @@ -786,5 +785,4 @@ public class EditingPOIDialogProvider implements DialogProvider { } } -} - +} \ No newline at end of file From c4fe5ab88a60d28b2d8375aaff3ea1e969fc703d Mon Sep 17 00:00:00 2001 From: GaidamakUA Date: Tue, 28 Jul 2015 19:10:29 +0300 Subject: [PATCH 09/32] Menu button for favourites items. For better use experience: issue #1340 --- OsmAnd/res/layout/favorites_list_item.xml | 44 ++++--- .../activities/FavoritesListFragment.java | 121 ++++++++++-------- .../activities/FavoritesTreeFragment.java | 86 ++++++++----- .../osmand/plus/dialogs/FavoriteDialogs.java | 38 +++--- .../views/controls/MapRouteInfoControl.java | 40 +++--- 5 files changed, 185 insertions(+), 144 deletions(-) diff --git a/OsmAnd/res/layout/favorites_list_item.xml b/OsmAnd/res/layout/favorites_list_item.xml index 662079eecf..56ff8df90f 100644 --- a/OsmAnd/res/layout/favorites_list_item.xml +++ b/OsmAnd/res/layout/favorites_list_item.xml @@ -1,42 +1,43 @@ - + android:orientation="vertical"> + android:background="?attr/dashboard_divider" + android:visibility="gone"/> + android:paddingLeft="@dimen/list_content_padding"> + tools:visibility="visible"/> + android:layout_marginRight="@dimen/favorites_icon_right_margin"/> + android:paddingRight="@dimen/list_content_padding"> + tools:text="@string/lorem_ipsum"/> + android:orientation="horizontal"> + android:layout_gravity="center_vertical" + android:src="@drawable/ic_destination_arrow_white"/> + tools:text="100500 km"/> + android:src="@drawable/ic_small_group"/> + android:textSize="@dimen/default_sub_text_size"/> @@ -99,18 +100,19 @@ android:layout_width="@dimen/list_item_height" android:layout_height="@dimen/list_item_height" android:layout_gravity="center_vertical" - android:visibility="invisible" android:layout_marginLeft="@dimen/dashFavIconMargin" android:background="?attr/dashboard_button" - android:src="@drawable/ic_action_test_light" /> + android:src="@drawable/ic_action_test_light" + android:visibility="invisible"/> + + android:src="@drawable/ic_overflow_menu_white" + android:visibility="gone"/> \ No newline at end of file diff --git a/OsmAnd/src/net/osmand/plus/activities/FavoritesListFragment.java b/OsmAnd/src/net/osmand/plus/activities/FavoritesListFragment.java index 9e96736153..450211f447 100644 --- a/OsmAnd/src/net/osmand/plus/activities/FavoritesListFragment.java +++ b/OsmAnd/src/net/osmand/plus/activities/FavoritesListFragment.java @@ -3,8 +3,20 @@ */ package net.osmand.plus.activities; -import java.util.Comparator; -import java.util.List; +import android.app.Activity; +import android.content.Intent; +import android.support.v7.widget.PopupMenu; +import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ArrayAdapter; +import android.widget.CheckBox; +import android.widget.ImageButton; +import android.widget.ImageView; +import android.widget.ListView; +import android.widget.TextView; import net.osmand.data.FavouritePoint; import net.osmand.data.LatLon; @@ -18,24 +30,10 @@ import net.osmand.plus.base.FavoriteImageDrawable; import net.osmand.plus.dashboard.DashLocationFragment; import net.osmand.plus.dialogs.DirectionsDialogs; import net.osmand.util.MapUtils; -import android.app.Activity; -import android.content.Intent; -import android.support.v4.app.ListFragment; -import android.support.v7.widget.PopupMenu; -import android.view.LayoutInflater; -import android.view.Menu; -import android.view.MenuInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ArrayAdapter; -import android.widget.CheckBox; -import android.widget.ImageView; -import android.widget.ListView; -import android.widget.TextView; -/** - * - */ +import java.util.Comparator; +import java.util.List; + public class FavoritesListFragment extends OsmAndListFragment implements SearchActivityChild, OsmAndCompassListener { public static final String SELECT_FAVORITE_POINT_INTENT_KEY = "SELECT_FAVORITE_POINT_INTENT_KEY"; @@ -46,15 +44,27 @@ public class FavoritesListFragment extends OsmAndListFragment implements SearchA private boolean selectFavoriteMode; private OsmandSettings settings; private boolean compassRegistered; - + @Override public void onAttach(Activity activity) { super.onAttach(activity); + Intent intent = activity.getIntent(); + if (intent != null) { + selectFavoriteMode = intent.hasExtra(SELECT_FAVORITE_POINT_INTENT_KEY); + if (intent.hasExtra(SearchActivity.SEARCH_LAT) && intent.hasExtra(SearchActivity.SEARCH_LON)) { + double lat = intent.getDoubleExtra(SearchActivity.SEARCH_LAT, 0); + double lon = intent.getDoubleExtra(SearchActivity.SEARCH_LON, 0); + if (lat != 0 || lon != 0) { + favouritesAdapter.location = new LatLon(lat, lon); + } + } + } settings = ((OsmandApplication) getApplication()).getSettings(); OsmandApplication app = (OsmandApplication) getApplication(); - favouritesAdapter = new FavouritesAdapter(activity, app.getFavorites().getFavouritePoints()); + favouritesAdapter = new FavouritesAdapter(activity, app.getFavorites().getFavouritePoints(), + !selectFavoriteMode); setListAdapter(favouritesAdapter); setHasOptionsMenu(true); } @@ -66,17 +76,6 @@ public class FavoritesListFragment extends OsmAndListFragment implements SearchA @Override public void onResume() { super.onResume(); - Intent intent = getActivity().getIntent(); - if (intent != null) { - selectFavoriteMode = intent.hasExtra(SELECT_FAVORITE_POINT_INTENT_KEY); - if (intent.hasExtra(SearchActivity.SEARCH_LAT) && intent.hasExtra(SearchActivity.SEARCH_LON)) { - double lat = intent.getDoubleExtra(SearchActivity.SEARCH_LAT, 0); - double lon = intent.getDoubleExtra(SearchActivity.SEARCH_LON, 0); - if (lat != 0 || lon != 0) { - favouritesAdapter.location = new LatLon(lat, lon); - } - } - } if (favouritesAdapter.location == null && getActivity() instanceof SearchActivity) { favouritesAdapter.location = ((SearchActivity) getActivity()).getSearchPoint(); @@ -104,9 +103,9 @@ public class FavoritesListFragment extends OsmAndListFragment implements SearchA if (favouritesAdapter != null) { favouritesAdapter.updateLocation(l); } - + } - + @Override public void onPause() { super.onPause(); @@ -133,11 +132,7 @@ public class FavoritesListFragment extends OsmAndListFragment implements SearchA if (!isSelectFavoriteMode()) { FavouritePoint point = favouritesAdapter.getItem(position); - LatLon location = new LatLon(point.getLatitude(), point.getLongitude()); - final PopupMenu optionsMenu = new PopupMenu(getActivity(), v); - DirectionsDialogs.createDirectionActionsPopUpMenu(optionsMenu, location, point, point.getPointDescription(), settings.getLastKnownMapZoom(), - getActivity(), true, false); - optionsMenu.show(); + showItemPopupOptionsMenu(point, getActivity(), v); } else { Intent intent = getActivity().getIntent(); intent.putExtra(SELECT_FAVORITE_POINT_INTENT_KEY, favouritesAdapter.getItem(position)); @@ -153,6 +148,15 @@ public class FavoritesListFragment extends OsmAndListFragment implements SearchA private boolean searchAroundLocation; private int screenOrientation; private Float heading; + private boolean shoudShowMenuButton; + + public FavouritesAdapter(Activity activity, List list, + boolean shoudShowMenuButton) { + super(activity, R.layout.favorites_list_item, list); + this.activity = activity; + this.app = ((OsmandApplication) activity.getApplication()); + this.shoudShowMenuButton = shoudShowMenuButton; + } public LatLon getLocation() { return location; @@ -179,12 +183,6 @@ public class FavoritesListFragment extends OsmAndListFragment implements SearchA }); } - public FavouritesAdapter(Activity activity, List list) { - super(activity, R.layout.favorites_list_item, list); - this.activity = activity; - this.app = ((OsmandApplication) activity.getApplication()); - } - public String getName(FavouritePoint model) { return model.getName(); } @@ -193,7 +191,7 @@ public class FavoritesListFragment extends OsmAndListFragment implements SearchA public View getView(int position, View convertView, ViewGroup parent) { View row = convertView; if (row == null) { - LayoutInflater inflater = activity.getLayoutInflater(); + LayoutInflater inflater = activity.getLayoutInflater(); // favourite dank row = inflater.inflate(R.layout.favorites_list_item, parent, false); } @@ -204,6 +202,19 @@ public class FavoritesListFragment extends OsmAndListFragment implements SearchA ImageView giImage= (ImageView)row.findViewById(R.id.group_image); direction.setVisibility(View.VISIBLE); final FavouritePoint favorite = getItem(position); + if (shoudShowMenuButton) { + ImageButton options = (ImageButton) row.findViewById(R.id.options); + options.setFocusable(false); + options.setImageDrawable(((OsmandApplication) activity.getApplication()) + .getIconsCache().getContentIcon(R.drawable.ic_overflow_menu_white)); + options.setVisibility(View.VISIBLE); + options.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + showItemPopupOptionsMenu(favorite, activity, v); + } + }); + } if (!favorite.getCategory().isEmpty()) { giImage.setVisibility(View.VISIBLE); giImage.setImageDrawable(app.getIconsCache().getContentIcon(R.drawable.ic_small_group)); @@ -213,9 +224,9 @@ public class FavoritesListFragment extends OsmAndListFragment implements SearchA ((TextView) row.findViewById(R.id.group_name)).setText(favorite.getCategory()); icon.setImageDrawable(FavoriteImageDrawable.getOrCreate(activity, favorite.getColor(), 0)); - DashLocationFragment.updateLocationView(!searchAroundLocation, location, heading, direction, distanceText, + DashLocationFragment.updateLocationView(!searchAroundLocation, location, heading, direction, distanceText, favorite.getLatitude(), favorite.getLongitude(), screenOrientation, app, activity); - + name.setText(getName(favorite)); final CheckBox ch = (CheckBox) row.findViewById(R.id.check_item); icon.setVisibility(View.VISIBLE); @@ -231,14 +242,24 @@ public class FavoritesListFragment extends OsmAndListFragment implements SearchA @Override public void updateCompassValue(float value) { - // 99 in next line used to one-time initalize arrows (with reference vs. fixed-north direction) on non-compass + // 99 in next line used to one-time initialize arrows (with reference vs. fixed-north direction) on non-compass // devices float lastHeading = favouritesAdapter.heading != null ? favouritesAdapter.heading : 99; favouritesAdapter.heading = value; - if (favouritesAdapter.heading != null && Math.abs(MapUtils.degreesDiff(lastHeading, favouritesAdapter.heading)) > 5) { + if (Math.abs(MapUtils.degreesDiff(lastHeading, favouritesAdapter.heading)) > 5) { favouritesAdapter.notifyDataSetChanged(); } else { favouritesAdapter.heading = lastHeading; } } + + public static void showItemPopupOptionsMenu(FavouritePoint point, Activity activity, View view) { + LatLon location = new LatLon(point.getLatitude(), point.getLongitude()); + final PopupMenu optionsMenu = new PopupMenu(activity, view); + DirectionsDialogs.createDirectionActionsPopUpMenu(optionsMenu, location, + point, point.getPointDescription(), + ((OsmandApplication) activity.getApplication()).getSettings().getLastKnownMapZoom(), + activity, true, false); + optionsMenu.show(); + } } diff --git a/OsmAnd/src/net/osmand/plus/activities/FavoritesTreeFragment.java b/OsmAnd/src/net/osmand/plus/activities/FavoritesTreeFragment.java index 21cb9c48c5..a1c7299300 100644 --- a/OsmAnd/src/net/osmand/plus/activities/FavoritesTreeFragment.java +++ b/OsmAnd/src/net/osmand/plus/activities/FavoritesTreeFragment.java @@ -36,11 +36,11 @@ import android.widget.ImageView; import android.widget.Spinner; import android.widget.TextView; import android.widget.Toast; + import net.osmand.access.AccessibleToast; import net.osmand.data.FavouritePoint; import net.osmand.data.LatLon; import net.osmand.data.PointDescription; -import net.osmand.plus.ContextMenuAdapter; import net.osmand.plus.FavouritesDbHelper; import net.osmand.plus.FavouritesDbHelper.FavoriteGroup; import net.osmand.plus.GPXUtilities; @@ -53,8 +53,8 @@ import net.osmand.plus.R; import net.osmand.plus.TargetPointsHelper; import net.osmand.plus.base.FavoriteImageDrawable; import net.osmand.plus.dialogs.DirectionsDialogs; -import net.osmand.plus.helpers.ColorDialogs; import net.osmand.plus.helpers.AndroidUiHelper; +import net.osmand.plus.helpers.ColorDialogs; import net.osmand.plus.myplaces.FavoritesActivity; import net.osmand.util.MapUtils; @@ -183,39 +183,7 @@ public class FavoritesTreeFragment extends OsmandExpandableListFragment { updateSelectionMode(actionMode); } else { final FavouritePoint point = (FavouritePoint) favouritesAdapter.getChild(groupPosition, childPosition); - final OsmandSettings settings = getMyApplication().getSettings(); - LatLon location = new LatLon(point.getLatitude(), point.getLongitude()); - final PopupMenu optionsMenu = new PopupMenu(getActivity(), v); - DirectionsDialogs.createDirectionActionsPopUpMenu(optionsMenu, location, point, - new PointDescription(PointDescription.POINT_TYPE_FAVORITE, point.getName()), settings.getLastKnownMapZoom(), - getActivity(), true, false); - - MenuItem item = optionsMenu.getMenu().add(R.string.favourites_context_menu_edit) - .setIcon(iconsCache.getContentIcon(R.drawable.ic_action_edit_dark)); - item.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() { - @Override - public boolean onMenuItemClick(MenuItem item) { - editPoint(getActivity(), point, new Runnable() { - public void run() { - favouritesAdapter.synchronizeGroups(); - } - }); - return true; - } - }); - - item = optionsMenu.getMenu().add(R.string.favourites_context_menu_delete) - .setIcon(iconsCache.getContentIcon(R.drawable.ic_action_delete_dark)); - item.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() { - @Override - public boolean onMenuItemClick(MenuItem item) { - deletePoint(point); - - return true; - } - }); - - optionsMenu.show(); + showItemPopupOptionsMenu(point, v); } return true; } @@ -792,8 +760,19 @@ public class FavoritesTreeFragment extends OsmandExpandableListFragment { TextView name = (TextView) row.findViewById(R.id.favourite_label); TextView distanceText = (TextView) row.findViewById(R.id.distance); ImageView icon = (ImageView) row.findViewById(R.id.favourite_icon); + ImageView options = (ImageView) row.findViewById(R.id.options); + options.setFocusable(false); + options.setImageDrawable(getMyApplication().getIconsCache() + .getContentIcon(R.drawable.ic_overflow_menu_white)); + options.setVisibility(View.VISIBLE); final FavouritePoint model = (FavouritePoint) getChild(groupPosition, childPosition); row.setTag(model); + options.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + showItemPopupOptionsMenu(model, v); + } + }); icon.setImageDrawable(FavoriteImageDrawable.getOrCreate(getActivity(), model.getColor(), 0)); LatLon lastKnownMapLocation = getMyApplication().getSettings().getLastKnownMapLocation(); int dist = (int) (MapUtils.getDistance(model.getLatitude(), model.getLongitude(), @@ -895,4 +874,41 @@ public class FavoritesTreeFragment extends OsmandExpandableListFragment { } } } + + public void showItemPopupOptionsMenu(final FavouritePoint point, final View view) { + final OsmandSettings settings = getMyApplication().getSettings(); + LatLon location = new LatLon(point.getLatitude(), point.getLongitude()); + final PopupMenu optionsMenu = new PopupMenu(getActivity(), view); + DirectionsDialogs.createDirectionActionsPopUpMenu(optionsMenu, location, point, + new PointDescription(PointDescription.POINT_TYPE_FAVORITE, point.getName()), + settings.getLastKnownMapZoom(), + getActivity(), true, false); + + MenuItem item = optionsMenu.getMenu().add(R.string.favourites_context_menu_edit) + .setIcon(getMyApplication().getIconsCache().getContentIcon(R.drawable.ic_action_edit_dark)); + item.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() { + @Override + public boolean onMenuItemClick(MenuItem item) { + editPoint(getActivity(), point, new Runnable() { + public void run() { + favouritesAdapter.synchronizeGroups(); + } + }); + return true; + } + }); + + item = optionsMenu.getMenu().add(R.string.favourites_context_menu_delete) + .setIcon(getMyApplication().getIconsCache().getContentIcon(R.drawable.ic_action_delete_dark)); + item.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() { + @Override + public boolean onMenuItemClick(MenuItem item) { + deletePoint(point); + + return true; + } + }); + + optionsMenu.show(); + } } diff --git a/OsmAnd/src/net/osmand/plus/dialogs/FavoriteDialogs.java b/OsmAnd/src/net/osmand/plus/dialogs/FavoriteDialogs.java index b32f2dfbdd..a593fa55ed 100644 --- a/OsmAnd/src/net/osmand/plus/dialogs/FavoriteDialogs.java +++ b/OsmAnd/src/net/osmand/plus/dialogs/FavoriteDialogs.java @@ -1,22 +1,5 @@ package net.osmand.plus.dialogs; -import java.text.Collator; -import java.text.MessageFormat; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.List; - -import net.osmand.AndroidUtils; -import net.osmand.access.AccessibleToast; -import net.osmand.data.FavouritePoint; -import net.osmand.data.PointDescription; -import net.osmand.plus.FavouritesDbHelper; -import net.osmand.plus.FavouritesDbHelper.FavoriteGroup; -import net.osmand.plus.OsmandApplication; -import net.osmand.plus.R; -import net.osmand.plus.activities.FavoritesListFragment.FavouritesAdapter; -import net.osmand.plus.activities.MapActivity; -import net.osmand.util.MapUtils; import android.app.Activity; import android.app.AlertDialog; import android.app.AlertDialog.Builder; @@ -36,6 +19,24 @@ import android.widget.EditText; import android.widget.ListView; import android.widget.Toast; +import net.osmand.AndroidUtils; +import net.osmand.access.AccessibleToast; +import net.osmand.data.FavouritePoint; +import net.osmand.data.PointDescription; +import net.osmand.plus.FavouritesDbHelper; +import net.osmand.plus.FavouritesDbHelper.FavoriteGroup; +import net.osmand.plus.OsmandApplication; +import net.osmand.plus.R; +import net.osmand.plus.activities.FavoritesListFragment.FavouritesAdapter; +import net.osmand.plus.activities.MapActivity; +import net.osmand.util.MapUtils; + +import java.text.Collator; +import java.text.MessageFormat; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; + public class FavoriteDialogs { public static final String KEY_FAVORITE = "favorite"; @@ -43,7 +44,8 @@ public class FavoriteDialogs { final FavouritesDbHelper helper = ((OsmandApplication) activity.getApplication()).getFavorites(); final List points = new ArrayList(helper.getFavouritePoints()); final FavouritesAdapter favouritesAdapter = new FavouritesAdapter(activity, - ((OsmandApplication) activity.getApplication()).getFavorites().getFavouritePoints()); + ((OsmandApplication) activity.getApplication()).getFavorites().getFavouritePoints(), + false); final Dialog[] dlgHolder = new Dialog[1]; OnItemClickListener click = new AdapterView.OnItemClickListener() { diff --git a/OsmAnd/src/net/osmand/plus/views/controls/MapRouteInfoControl.java b/OsmAnd/src/net/osmand/plus/views/controls/MapRouteInfoControl.java index 293edcae52..432dcb30c2 100644 --- a/OsmAnd/src/net/osmand/plus/views/controls/MapRouteInfoControl.java +++ b/OsmAnd/src/net/osmand/plus/views/controls/MapRouteInfoControl.java @@ -1,9 +1,19 @@ package net.osmand.plus.views.controls; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; +import android.app.Dialog; +import android.content.DialogInterface; +import android.content.DialogInterface.OnDismissListener; +import android.content.Intent; +import android.graphics.PointF; +import android.view.View; +import android.view.ViewGroup; +import android.widget.AdapterView; +import android.widget.AdapterView.OnItemClickListener; +import android.widget.ArrayAdapter; +import android.widget.Button; +import android.widget.ImageView; +import android.widget.Spinner; +import android.widget.TextView; import net.osmand.ValueHolder; import net.osmand.data.FavouritePoint; @@ -24,7 +34,6 @@ import net.osmand.plus.activities.MapActivity; import net.osmand.plus.activities.ShowRouteInfoActivity; import net.osmand.plus.activities.actions.AppModeDialog; import net.osmand.plus.activities.search.SearchAddressActivity; -import net.osmand.plus.activities.search.SearchAddressFragment; import net.osmand.plus.development.OsmandDevelopmentPlugin; import net.osmand.plus.dialogs.FavoriteDialogs; import net.osmand.plus.routing.RouteDirectionInfo; @@ -34,20 +43,11 @@ import net.osmand.plus.views.ContextMenuLayer; import net.osmand.plus.views.MapControlsLayer; import net.osmand.plus.views.OsmandMapTileView; import net.osmand.plus.views.controls.MapRoutePreferencesControl.RoutePrepareDialog; -import android.app.Dialog; -import android.content.DialogInterface; -import android.content.DialogInterface.OnDismissListener; -import android.content.Intent; -import android.graphics.PointF; -import android.view.View; -import android.view.ViewGroup; -import android.widget.AdapterView; -import android.widget.AdapterView.OnItemClickListener; -import android.widget.ArrayAdapter; -import android.widget.Button; -import android.widget.ImageView; -import android.widget.Spinner; -import android.widget.TextView; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; public class MapRouteInfoControl implements IRouteInformationListener { public static int directionInfo = -1; @@ -268,7 +268,7 @@ public class MapRouteInfoControl implements IRouteInformationListener { protected void selectFavorite(final View parentView, final boolean target) { final FavouritesAdapter favouritesAdapter = new FavouritesAdapter(mapActivity, mapActivity.getMyApplication() - .getFavorites().getFavouritePoints()); + .getFavorites().getFavouritePoints(), false); Dialog[] dlgHolder = new Dialog[1]; OnItemClickListener click = getOnClickListener(target, favouritesAdapter, dlgHolder); OnDismissListener dismissListener = new DialogInterface.OnDismissListener() { From 96b95a2908a608868b270e1fd9a3337dcef47a48 Mon Sep 17 00:00:00 2001 From: GaidamakUA Date: Thu, 30 Jul 2015 12:37:26 +0300 Subject: [PATCH 10/32] Created dialog as a visual representation of unsuccessful upload of OSM edit operation. Issue #1291 --- OsmAnd/res/layout/osm_edit_list_item.xml | 32 ++ OsmAnd/res/values/strings.xml | 5 + .../plus/osmedit/DashOsmEditsFragment.java | 86 +++--- .../plus/osmedit/OpenstreetmapPoint.java | 4 +- .../plus/osmedit/OpenstreetmapRemoteUtil.java | 42 ++- .../plus/osmedit/OsmBugsRemoteUtil.java | 77 +++-- .../osmedit/OsmEditUploadListenerHelper.java | 289 ++++++++++++++++++ .../osmand/plus/osmedit/OsmEditsFragment.java | 113 +++---- .../plus/osmedit/OsmEditsUploadListener.java | 8 +- .../osmand/plus/osmedit/OsmNotesPoint.java | 4 +- .../src/net/osmand/plus/osmedit/OsmPoint.java | 3 +- .../UploadOpenstreetmapPointAsyncTask.java | 61 ++-- 12 files changed, 505 insertions(+), 219 deletions(-) create mode 100644 OsmAnd/res/layout/osm_edit_list_item.xml create mode 100644 OsmAnd/src/net/osmand/plus/osmedit/OsmEditUploadListenerHelper.java diff --git a/OsmAnd/res/layout/osm_edit_list_item.xml b/OsmAnd/res/layout/osm_edit_list_item.xml new file mode 100644 index 0000000000..a6c7d94a5a --- /dev/null +++ b/OsmAnd/res/layout/osm_edit_list_item.xml @@ -0,0 +1,32 @@ + + + + + + + + diff --git a/OsmAnd/res/values/strings.xml b/OsmAnd/res/values/strings.xml index 7811d7fe8b..4635962bfb 100644 --- a/OsmAnd/res/values/strings.xml +++ b/OsmAnd/res/values/strings.xml @@ -2221,4 +2221,9 @@ Afghanistan, Albania, Algeria, Andorra, Angola, Anguilla, Antigua and Barbuda, A Please give OsmAnd a score on Google Play Tell us why. Please tell us what would you want to change in this app. + Failed to upload + Delete change + Successfully uploaded {0}/{1} + Try again + Error: {0} diff --git a/OsmAnd/src/net/osmand/plus/osmedit/DashOsmEditsFragment.java b/OsmAnd/src/net/osmand/plus/osmedit/DashOsmEditsFragment.java index ee1876d123..9a65ef373b 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/DashOsmEditsFragment.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/DashOsmEditsFragment.java @@ -1,16 +1,5 @@ package net.osmand.plus.osmedit; -import java.text.MessageFormat; -import java.util.ArrayList; -import java.util.List; - -import net.osmand.access.AccessibleToast; -import net.osmand.data.PointDescription; -import net.osmand.plus.OsmandPlugin; -import net.osmand.plus.ProgressImplementation; -import net.osmand.plus.R; -import net.osmand.plus.activities.MapActivity; -import net.osmand.plus.dashboard.DashBaseFragment; import android.app.AlertDialog; import android.app.ProgressDialog; import android.content.DialogInterface; @@ -22,13 +11,23 @@ import android.widget.Button; import android.widget.ImageButton; import android.widget.LinearLayout; import android.widget.TextView; -import android.widget.Toast; + +import net.osmand.data.PointDescription; +import net.osmand.plus.OsmandPlugin; +import net.osmand.plus.ProgressImplementation; +import net.osmand.plus.R; +import net.osmand.plus.activities.MapActivity; +import net.osmand.plus.dashboard.DashBaseFragment; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; /** * Created by Denis * on 20.01.2015. */ -public class DashOsmEditsFragment extends DashBaseFragment implements OsmEditsUploadListener { +public class DashOsmEditsFragment extends DashBaseFragment { public static final String TAG = "DASH_OSM_EDITS_FRAGMENT"; OsmEditingPlugin plugin; @@ -59,19 +58,19 @@ public class DashOsmEditsFragment extends DashBaseFragment implements OsmEditsUp if (plugin == null) { plugin = OsmandPlugin.getEnabledPlugin(OsmEditingPlugin.class); } - setupEditings(); + setupEditings(); } - + private void setupEditings() { View mainView = getView(); - if (plugin == null){ + if (plugin == null) { mainView.setVisibility(View.GONE); return; } ArrayList dataPoints = new ArrayList<>(); getOsmPoints(dataPoints); - if (dataPoints.size() == 0){ + if (dataPoints.size() == 0) { mainView.setVisibility(View.GONE); return; } else { @@ -114,7 +113,7 @@ public class DashOsmEditsFragment extends DashBaseFragment implements OsmEditsUp } } - private void uploadItem(final OsmPoint point){ + private void uploadItem(final OsmPoint point) { AlertDialog.Builder b = new AlertDialog.Builder(getActivity()); b.setMessage(getString(R.string.local_osm_changes_upload_all_confirm, 1)); b.setPositiveButton(R.string.shared_string_yes, new DialogInterface.OnClickListener() { @@ -129,13 +128,31 @@ public class DashOsmEditsFragment extends DashBaseFragment implements OsmEditsUp private void showProgressDialog(OsmPoint point) { OpenstreetmapRemoteUtil remotepoi = new OpenstreetmapRemoteUtil(getActivity()); - OsmPoint[] toUpload = new OsmPoint[] { point }; + OsmPoint[] toUpload = new OsmPoint[]{point}; OsmBugsRemoteUtil remotebug = new OsmBugsRemoteUtil(getMyApplication()); ProgressDialog dialog = ProgressImplementation.createProgressDialog(getActivity(), getString(R.string.uploading), getString(R.string.local_openstreetmap_uploading), ProgressDialog.STYLE_HORIZONTAL).getDialog(); + OsmEditsUploadListener listener = new OsmEditUploadListenerHelper(getActivity(), + getString(R.string.local_openstreetmap_were_uploaded)) { + @Override + public void uploadUpdated(OsmPoint point) { + super.uploadUpdated(point); + if (!DashOsmEditsFragment.this.isDetached()) { + onOpenDash(); + } + } + + @Override + public void uploadEnded(Map loadErrorsMap) { + super.uploadEnded(loadErrorsMap); + if (!DashOsmEditsFragment.this.isDetached()) { + onOpenDash(); + } + } + }; UploadOpenstreetmapPointAsyncTask uploadTask = new UploadOpenstreetmapPointAsyncTask(dialog, - DashOsmEditsFragment.this, plugin, remotepoi, remotebug, toUpload.length); + listener, plugin, remotepoi, remotebug, toUpload.length); uploadTask.execute(toUpload); dialog.show(); } @@ -143,9 +160,9 @@ public class DashOsmEditsFragment extends DashBaseFragment implements OsmEditsUp private void getOsmPoints(ArrayList dataPoints) { List l1 = plugin.getDBPOI().getOpenstreetmapPoints(); List l2 = plugin.getDBBug().getOsmbugsPoints(); - if (l1.isEmpty()){ + if (l1.isEmpty()) { int i = 0; - for(OsmPoint point : l2){ + for (OsmPoint point : l2) { if (i > 2) { break; } @@ -154,7 +171,7 @@ public class DashOsmEditsFragment extends DashBaseFragment implements OsmEditsUp } } else if (l2.isEmpty()) { int i = 0; - for(OsmPoint point : l1){ + for (OsmPoint point : l1) { if (i > 2) { break; } @@ -164,30 +181,11 @@ public class DashOsmEditsFragment extends DashBaseFragment implements OsmEditsUp } else { dataPoints.add(l1.get(0)); dataPoints.add(l2.get(0)); - if (l1.size() > 1){ + if (l1.size() > 1) { dataPoints.add(l1.get(1)); - } else if (l2.size() > 1){ + } else if (l2.size() > 1) { dataPoints.add(l2.get(1)); } } } - - @Override - public void uploadUpdated(OsmPoint point) { - if (!this.isDetached()){ - onOpenDash(); - } - } - - @Override - public void uploadEnded(Integer result) { - if (result != null) { - AccessibleToast.makeText(getActivity(), - MessageFormat.format(getString(R.string.local_openstreetmap_were_uploaded), result), Toast.LENGTH_LONG) - .show(); - } - if (!this.isDetached()){ - onOpenDash(); - } - } } diff --git a/OsmAnd/src/net/osmand/plus/osmedit/OpenstreetmapPoint.java b/OsmAnd/src/net/osmand/plus/osmedit/OpenstreetmapPoint.java index f16233db5c..b757b22d41 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/OpenstreetmapPoint.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/OpenstreetmapPoint.java @@ -1,11 +1,9 @@ package net.osmand.plus.osmedit; -import java.io.Serializable; - import net.osmand.osm.edit.Node; import net.osmand.osm.edit.OSMSettings.OSMTagKey; -public class OpenstreetmapPoint extends OsmPoint implements Serializable { +public class OpenstreetmapPoint extends OsmPoint { private static final long serialVersionUID = 729654300829771467L; private Node entity; private String comment; diff --git a/OsmAnd/src/net/osmand/plus/osmedit/OpenstreetmapRemoteUtil.java b/OsmAnd/src/net/osmand/plus/osmedit/OpenstreetmapRemoteUtil.java index 8e8a90ff47..d77e0852db 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/OpenstreetmapRemoteUtil.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/OpenstreetmapRemoteUtil.java @@ -1,20 +1,8 @@ package net.osmand.plus.osmedit; -import java.io.BufferedReader; -import java.io.BufferedWriter; -import java.io.ByteArrayInputStream; -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.OutputStream; -import java.io.OutputStreamWriter; -import java.io.StringWriter; -import java.net.HttpURLConnection; -import java.net.MalformedURLException; -import java.text.MessageFormat; -import java.util.LinkedHashMap; -import java.util.Map; +import android.content.Context; +import android.util.Xml; +import android.widget.Toast; import net.osmand.PlatformUtil; import net.osmand.access.AccessibleToast; @@ -37,9 +25,21 @@ import org.apache.commons.logging.Log; import org.xml.sax.SAXException; import org.xmlpull.v1.XmlSerializer; -import android.content.Context; -import android.util.Xml; -import android.widget.Toast; +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.ByteArrayInputStream; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.OutputStream; +import java.io.OutputStreamWriter; +import java.io.StringWriter; +import java.net.HttpURLConnection; +import java.net.MalformedURLException; +import java.text.MessageFormat; +import java.util.LinkedHashMap; +import java.util.Map; public class OpenstreetmapRemoteUtil implements OpenstreetmapUtil { @@ -335,11 +335,7 @@ public class OpenstreetmapRemoteUtil implements OpenstreetmapUtil { return entityInfo; } - } catch (IOException e) { - log.error("Loading node failed " + nodeId, e); //$NON-NLS-1$ - AccessibleToast.makeText(ctx, ctx.getResources().getString(R.string.shared_string_io_error), - Toast.LENGTH_LONG).show(); - } catch (SAXException e) { + } catch (IOException | SAXException e) { log.error("Loading node failed " + nodeId, e); //$NON-NLS-1$ AccessibleToast.makeText(ctx, ctx.getResources().getString(R.string.shared_string_io_error), Toast.LENGTH_LONG).show(); diff --git a/OsmAnd/src/net/osmand/plus/osmedit/OsmBugsRemoteUtil.java b/OsmAnd/src/net/osmand/plus/osmedit/OsmBugsRemoteUtil.java index 13876ebce9..5dd010e487 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/OsmBugsRemoteUtil.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/OsmBugsRemoteUtil.java @@ -1,14 +1,5 @@ package net.osmand.plus.osmedit; -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.net.HttpURLConnection; -import java.net.MalformedURLException; -import java.net.URL; -import java.net.URLEncoder; - import net.osmand.PlatformUtil; import net.osmand.osm.io.Base64; import net.osmand.osm.io.NetworkUtils; @@ -19,36 +10,42 @@ import net.osmand.plus.Version; import org.apache.commons.logging.Log; +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.net.HttpURLConnection; +import java.net.MalformedURLException; +import java.net.URLEncoder; + public class OsmBugsRemoteUtil implements OsmBugsUtil { private static final Log log = PlatformUtil.getLog(OsmBugsRemoteUtil.class); - - static String getNotesApi() - { + + static String getNotesApi() { final int deviceApiVersion = android.os.Build.VERSION.SDK_INT; - + String RETURN_API; - + if (deviceApiVersion >= android.os.Build.VERSION_CODES.GINGERBREAD) { RETURN_API = "https://api.openstreetmap.org/api/0.6/notes"; - } - else { + } else { RETURN_API = "http://api.openstreetmap.org/api/0.6/notes"; } - + return RETURN_API; } private OsmandApplication app; private OsmandSettings settings; - + public OsmBugsRemoteUtil(OsmandApplication app) { this.app = app; settings = app.getSettings(); } @Override - public String createNewBug(double latitude, double longitude, String text, String author){ + public String createNewBug(double latitude, double longitude, String text, String author) { StringBuilder b = new StringBuilder(); b.append(getNotesApi()).append("?"); //$NON-NLS-1$ b.append("lat=").append(latitude); //$NON-NLS-1$ @@ -58,21 +55,21 @@ public class OsmBugsRemoteUtil implements OsmBugsUtil { } @Override - public String addingComment(long id, String text, String author){ + public String addingComment(long id, String text, String author) { StringBuilder b = new StringBuilder(); - b.append(getNotesApi()).append("/"); + b.append(getNotesApi()).append("/"); b.append(id); //$NON-NLS-1$ b.append("/comment?text=").append(URLEncoder.encode(text)); //$NON-NLS-1$ return editingPOI(b.toString(), "POST", "adding comment"); //$NON-NLS-1$ } @Override - public String closingBug(long id, String text, String author){ + public String closingBug(long id, String text, String author) { StringBuilder b = new StringBuilder(); - b.append(getNotesApi()).append("/"); + b.append(getNotesApi()).append("/"); b.append(id); //$NON-NLS-1$ b.append("/close?text=").append(URLEncoder.encode(text)); //$NON-NLS-1$ - return editingPOI(b.toString(), "POST", "close bug") ; //$NON-NLS-1$ + return editingPOI(b.toString(), "POST", "close bug"); //$NON-NLS-1$ } private String editingPOI(String url, String requestMethod, String userOperation) { @@ -104,26 +101,24 @@ public class OsmBugsRemoteUtil implements OsmBugsUtil { boolean ok = connection.getResponseCode() == HttpURLConnection.HTTP_OK; log.info(msg); //$NON-NLS-1$ // populate return fields. - + StringBuilder responseBody = new StringBuilder(); - if (true) { - responseBody.setLength(0); - InputStream i = connection.getInputStream(); - if (i != null) { - BufferedReader in = new BufferedReader(new InputStreamReader(i, "UTF-8"), 256); //$NON-NLS-1$ - String s; - boolean f = true; - while ((s = in.readLine()) != null) { - if (!f) { - responseBody.append("\n"); //$NON-NLS-1$ - } else { - f = false; - } - responseBody.append(s); + responseBody.setLength(0); + InputStream i = connection.getInputStream(); + if (i != null) { + BufferedReader in = new BufferedReader(new InputStreamReader(i, "UTF-8"), 256); //$NON-NLS-1$ + String s; + boolean f = true; + while ((s = in.readLine()) != null) { + if (!f) { + responseBody.append("\n"); //$NON-NLS-1$ + } else { + f = false; } + responseBody.append(s); } - log.info("Response : " + responseBody); //$NON-NLS-1$ } + log.info("Response : " + responseBody); //$NON-NLS-1$ connection.disconnect(); if (!ok) { return msg + "\n" + responseBody; @@ -138,7 +133,7 @@ public class OsmBugsRemoteUtil implements OsmBugsUtil { return e.getMessage() + ""; } catch (IOException e) { log.error(userOperation + " " + app.getString(R.string.failed_op), e); //$NON-NLS-1$ - return e.getMessage() + ""; + return e.getMessage() + " link unavailable"; } return null; } diff --git a/OsmAnd/src/net/osmand/plus/osmedit/OsmEditUploadListenerHelper.java b/OsmAnd/src/net/osmand/plus/osmedit/OsmEditUploadListenerHelper.java new file mode 100644 index 0000000000..ff04a465a2 --- /dev/null +++ b/OsmAnd/src/net/osmand/plus/osmedit/OsmEditUploadListenerHelper.java @@ -0,0 +1,289 @@ +package net.osmand.plus.osmedit; + +import android.app.Activity; +import android.app.Dialog; +import android.app.ProgressDialog; +import android.content.DialogInterface; +import android.content.res.Resources; +import android.os.Bundle; +import android.support.annotation.MainThread; +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; +import android.support.v4.app.DialogFragment; +import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentActivity; +import android.support.v7.app.AlertDialog; +import android.text.TextUtils; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ArrayAdapter; +import android.widget.ImageView; +import android.widget.TextView; +import android.widget.Toast; + +import net.osmand.access.AccessibleToast; +import net.osmand.plus.IconsCache; +import net.osmand.plus.OsmandApplication; +import net.osmand.plus.OsmandPlugin; +import net.osmand.plus.ProgressImplementation; +import net.osmand.plus.R; + +import java.text.MessageFormat; +import java.util.ArrayList; +import java.util.Map; + +public class OsmEditUploadListenerHelper implements OsmEditsUploadListener { + public static final String TAG = "OsmEditUploadListenerHe"; + private final FragmentActivity activity; + private final String numberFormat; + + public OsmEditUploadListenerHelper(FragmentActivity activity, String numberFormat) { + this.activity = activity; + this.numberFormat = numberFormat; + } + + @Override + public void uploadUpdated(OsmPoint point) { + } + + @MainThread + @Override + public void uploadEnded(Map loadErrorsMap) { + int uploaded = 0; + int pointsNum = loadErrorsMap.keySet().size(); + for (OsmPoint point : loadErrorsMap.keySet()) { + if (loadErrorsMap.get(point) == null) { + uploaded++; + } + } + if (uploaded == pointsNum) { + AccessibleToast.makeText(activity, + MessageFormat.format(numberFormat, uploaded), + Toast.LENGTH_LONG) + .show(); + } else if (pointsNum == 1) { + Log.v(TAG, "in if1"); + OsmPoint point = loadErrorsMap.keySet().iterator().next(); + String message = loadErrorsMap.get(point); + DialogFragment dialogFragment = + UploadingErrorDialogFragment.getInstance(message, point); + dialogFragment.show(activity.getSupportFragmentManager(), "error_loading"); + } else { + Log.v(TAG, "in if2"); + String[] pointNames = new String[loadErrorsMap.keySet().size()]; + boolean[] hasErrors = new boolean[loadErrorsMap.keySet().size()]; + ArrayList pointsWithErrors = new ArrayList<>(); + int i = 0; + for (OsmPoint point : loadErrorsMap.keySet()) { + pointNames[i] = point.getGroup() == OsmPoint.Group.BUG ? + ((OsmNotesPoint) point).getText() : + ((OpenstreetmapPoint) point).getName(); + pointNames[i] = TextUtils.isEmpty(pointNames[i]) ? + "id:" + point.getId() : pointNames[i]; + hasErrors[i] = loadErrorsMap.get(point) != null; + if (hasErrors[i]) { + pointsWithErrors.add(point); + } + i++; + } + UploadingMultipleErrorDialogFragment dialogFragment = + UploadingMultipleErrorDialogFragment.getInstance(pointNames, hasErrors); + dialogFragment.setPointsToUpload( + pointsWithErrors.toArray(new OsmPoint[pointsWithErrors.size()])); + dialogFragment.show(activity.getSupportFragmentManager(), "multiple_error_loading"); + + } + } + + private static void showUploadItemsProgressDialog(Fragment fragment, OsmPoint[] toUpload) { + FragmentActivity activity = fragment.getActivity(); + OsmEditingPlugin plugin = OsmandPlugin.getEnabledPlugin(OsmEditingPlugin.class); + OpenstreetmapRemoteUtil remotepoi = new OpenstreetmapRemoteUtil(activity); + OsmBugsRemoteUtil remotebug = new OsmBugsRemoteUtil((OsmandApplication) activity.getApplication()); + + OsmEditUploadListenerHelper helper = new OsmEditUploadListenerHelper(activity, + activity.getResources().getString(R.string.local_openstreetmap_were_uploaded)); + + Resources resources = activity.getResources(); + ProgressDialog dialog = ProgressImplementation.createProgressDialog( + activity, + resources.getString(R.string.uploading), + resources.getString(R.string.local_openstreetmap_uploading), + ProgressDialog.STYLE_HORIZONTAL).getDialog(); + UploadOpenstreetmapPointAsyncTask uploadTask = new UploadOpenstreetmapPointAsyncTask( + dialog, helper, plugin, remotepoi, remotebug, toUpload.length); + uploadTask.execute(toUpload); + + dialog.show(); + } + + public static final class UploadingErrorDialogFragment extends DialogFragment { + private static final String ERROR_MESSAGE = "error_message"; + private static final String POINT = "point"; + + @NonNull + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + Bundle argument = getArguments(); + String errorMessage = argument.getString(ERROR_MESSAGE); + final OsmPoint point = (OsmPoint) argument.getSerializable(POINT); + AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); + builder.setTitle(getResources().getString(R.string.failed_to_upload)) + .setMessage(MessageFormat.format( + getResources().getString(R.string.error_message_pattern), errorMessage)) + .setPositiveButton(R.string.shared_string_ok, null) + .setNeutralButton(getResources().getString(R.string.delete_change), + new DialogInterface.OnClickListener() { + public void onClick(@Nullable DialogInterface dialog, int id) { + OsmEditingPlugin plugin = + OsmandPlugin.getEnabledPlugin(OsmEditingPlugin.class); + if (point.getGroup() == OsmPoint.Group.BUG) { + plugin.getDBBug().deleteAllBugModifications( + (OsmNotesPoint) point); + } else if (point.getGroup() == OsmPoint.Group.POI) { + plugin.getDBPOI().deletePOI((OpenstreetmapPoint) point); + } + } + }); + return builder.create(); + } + + public static UploadingErrorDialogFragment getInstance(String errorMessage, + OsmPoint point) { + UploadingErrorDialogFragment fragment = new UploadingErrorDialogFragment(); + Bundle bundle = new Bundle(); + bundle.putString(ERROR_MESSAGE, errorMessage); + bundle.putSerializable(POINT, point); + fragment.setArguments(bundle); + return fragment; + } + } + + public static final class UploadingMultipleErrorDialogFragment extends DialogFragment { + private static final String HAS_ERROR = "has_error"; + private static final String POINT_NAMES = "point_names"; + + OsmPoint[] points; + + @NonNull + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + Bundle arguments = getArguments(); + String[] pointNames = arguments.getStringArray(POINT_NAMES); + boolean[] hasErrors = arguments.getBooleanArray(HAS_ERROR); + int successfulUploads = 0; + for (boolean hasError : hasErrors) { + if (!hasError) { + successfulUploads++; + } + } + PointsWithErrorsAdapter adapter = + PointsWithErrorsAdapter.createInstance(getActivity(), pointNames, hasErrors); + AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); + builder.setTitle(MessageFormat.format(getResources() + .getString(R.string.successfully_uploaded_pattern), + successfulUploads, hasErrors.length)) + .setAdapter(adapter, null) + .setPositiveButton(R.string.shared_string_ok, null) + .setNeutralButton(getResources().getString(R.string.try_again), + new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + OsmEditUploadListenerHelper + .showUploadItemsProgressDialog( + UploadingMultipleErrorDialogFragment.this, + points); + } + }); + return builder.create(); + } + + public void setPointsToUpload(OsmPoint[] points) { + this.points = points; + } + + public static UploadingMultipleErrorDialogFragment getInstance(String[] pointNames, + boolean[] hasError) { + if (pointNames.length != hasError.length) { + throw new IllegalArgumentException("pointNames and hasError arrays " + + "must me of equal length"); + } + UploadingMultipleErrorDialogFragment fragment = + new UploadingMultipleErrorDialogFragment(); + Bundle bundle = new Bundle(); + bundle.putStringArray(POINT_NAMES, pointNames); + bundle.putBooleanArray(HAS_ERROR, hasError); + fragment.setArguments(bundle); + return fragment; + } + } + + private static final class PointWithPotentialError { + String point; + boolean hasError; + + public PointWithPotentialError(String point, boolean hasError) { + this.point = point; + this.hasError = hasError; + } + } + + private static final class PointsWithErrorsAdapter extends ArrayAdapter { + private final int layoutResourceId; + PointWithPotentialError[] data; + Activity context; + + private PointsWithErrorsAdapter(Activity context, int layoutResourceId, + PointWithPotentialError[] objects) { + super(context, layoutResourceId, objects); + data = objects; + this.context = context; + this.layoutResourceId = layoutResourceId; + } + + @Override + public View getView(int position, View convertView, @NonNull ViewGroup parent) { + View row = convertView; + PointHolder holder = null; + + if (row == null) { + LayoutInflater inflater = context.getLayoutInflater(); + row = inflater.inflate(layoutResourceId, parent, false); + + holder = new PointHolder(); + holder.checkedUncheckedImageView = (ImageView) row.findViewById(R.id.iconImageView); + holder.pointNameTextView = (TextView) row.findViewById(R.id.nameTextView); + + row.setTag(holder); + } else { + holder = (PointHolder) row.getTag(); + } + + PointWithPotentialError pointWrapper = data[position]; + holder.pointNameTextView.setText(pointWrapper.point); + IconsCache cache = ((OsmandApplication) context.getApplication()).getIconsCache(); + holder.checkedUncheckedImageView.setImageDrawable(pointWrapper.hasError ? + cache.getContentIcon(R.drawable.ic_action_remove_dark) : + cache.getContentIcon(R.drawable.ic_action_done)); + + return row; + } + + public static PointsWithErrorsAdapter createInstance(Activity activity, + String[] pointNames, + boolean[] hasError) { + PointWithPotentialError[] array = new PointWithPotentialError[pointNames.length]; + for (int i = 0; i < pointNames.length; i++) { + array[i] = new PointWithPotentialError(pointNames[i], hasError[i]); + } + return new PointsWithErrorsAdapter(activity, R.layout.osm_edit_list_item, array); + } + + private static class PointHolder { + TextView pointNameTextView; + ImageView checkedUncheckedImageView; + } + } +} diff --git a/OsmAnd/src/net/osmand/plus/osmedit/OsmEditsFragment.java b/OsmAnd/src/net/osmand/plus/osmedit/OsmEditsFragment.java index a3f2c652f8..895478b50f 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/OsmEditsFragment.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/OsmEditsFragment.java @@ -1,12 +1,29 @@ package net.osmand.plus.osmedit; -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.text.MessageFormat; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; +import android.app.AlertDialog; +import android.app.ProgressDialog; +import android.content.DialogInterface; +import android.content.Intent; +import android.net.Uri; +import android.os.AsyncTask; +import android.os.Bundle; +import android.support.v4.view.MenuItemCompat; +import android.support.v7.view.ActionMode; +import android.support.v7.widget.PopupMenu; +import android.util.Xml; +import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; +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.ImageView; +import android.widget.TextView; +import android.widget.Toast; import net.osmand.access.AccessibleToast; import net.osmand.data.PointDescription; @@ -25,37 +42,18 @@ import net.osmand.plus.myplaces.FavoritesActivity; import org.xmlpull.v1.XmlSerializer; -import android.app.AlertDialog; -import android.app.ProgressDialog; -import android.content.DialogInterface; -import android.content.Intent; -import android.net.Uri; -import android.os.AsyncTask; -import android.os.Bundle; -import android.support.v4.view.MenuItemCompat; -import android.support.v7.app.ActionBarActivity; -import android.support.v7.view.ActionMode; -import android.support.v7.widget.PopupMenu; -import android.util.Xml; -import android.view.LayoutInflater; -import android.view.Menu; -import android.view.MenuInflater; -import android.view.MenuItem; -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.ImageView; -import android.widget.TextView; -import android.widget.Toast; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; /** * Created by Denis * on 06.03.2015. */ -public class OsmEditsFragment extends OsmAndListFragment implements OsmEditsUploadListener { +public class OsmEditsFragment extends OsmAndListFragment { OsmEditingPlugin plugin; private ArrayList dataPoints; private OsmEditsAdapter listAdapter; @@ -100,17 +98,17 @@ public class OsmEditsFragment extends OsmAndListFragment implements OsmEditsUplo return view; } - private void selectAll(){ - for(int i =0 ;i < listAdapter.getCount(); i++){ + private void selectAll() { + for (int i = 0; i < listAdapter.getCount(); i++) { OsmPoint point = listAdapter.getItem(i); - if (!osmEditsSelected.contains(point)){ + if (!osmEditsSelected.contains(point)) { osmEditsSelected.add(point); } } listAdapter.notifyDataSetInvalidated(); } - private void deselectAll(){ + private void deselectAll() { osmEditsSelected.clear(); listAdapter.notifyDataSetInvalidated(); } @@ -199,8 +197,8 @@ public class OsmEditsFragment extends OsmAndListFragment implements OsmEditsUplo }); } - private void enterSelectionMode(int type){ - switch (type){ + private void enterSelectionMode(int type) { + switch (type) { case MODE_DELETE: enterDeleteMode(); break; @@ -256,10 +254,10 @@ public class OsmEditsFragment extends OsmAndListFragment implements OsmEditsUplo refreshSelectAll(); } - private void updateSelectionTitle(ActionMode m){ - if(osmEditsSelected.size() > 0) { + private void updateSelectionTitle(ActionMode m) { + if (osmEditsSelected.size() > 0) { m.setTitle(osmEditsSelected.size() + " " + getMyApplication().getString(R.string.shared_string_selected_lowercase)); - } else{ + } else { m.setTitle(""); } } @@ -282,8 +280,8 @@ public class OsmEditsFragment extends OsmAndListFragment implements OsmEditsUplo private void enableSelectionMode(boolean selectionMode) { this.selectionMode = selectionMode; - getView().findViewById(R.id.select_all).setVisibility(selectionMode? View.VISIBLE : View.GONE); - ((FavoritesActivity)getActivity()).setToolbarVisibility(!selectionMode); + getView().findViewById(R.id.select_all).setVisibility(selectionMode ? View.VISIBLE : View.GONE); + ((FavoritesActivity) getActivity()).setToolbarVisibility(!selectionMode); } public OsmandActionBarActivity getActionBarActivity() { @@ -389,7 +387,7 @@ public class OsmEditsFragment extends OsmAndListFragment implements OsmEditsUplo final CheckBox ch = (CheckBox) v.findViewById(R.id.check_local_index); View options = v.findViewById(R.id.options); - if(selectionMode) { + if (selectionMode) { options.setVisibility(View.GONE); ch.setVisibility(View.VISIBLE); ch.setChecked(osmEditsSelected.contains(child)); @@ -482,7 +480,7 @@ public class OsmEditsFragment extends OsmAndListFragment implements OsmEditsUplo return (OsmandApplication) getActivity().getApplication(); } - private void uploadItems(final OsmPoint[] items){ + private void uploadItems(final OsmPoint[] items) { AlertDialog.Builder b = new AlertDialog.Builder(getActivity()); b.setMessage(getString(R.string.local_osm_changes_upload_all_confirm, items.length)); b.setPositiveButton(R.string.shared_string_yes, new DialogInterface.OnClickListener() { @@ -502,8 +500,10 @@ public class OsmEditsFragment extends OsmAndListFragment implements OsmEditsUplo getString(R.string.uploading), getString(R.string.local_openstreetmap_uploading), ProgressDialog.STYLE_HORIZONTAL).getDialog(); - UploadOpenstreetmapPointAsyncTask uploadTask = new UploadOpenstreetmapPointAsyncTask(dialog, this, plugin, remotepoi, - remotebug, toUpload.length); + OsmEditsUploadListener listener = new OsmEditUploadListenerHelper(getActivity(), + getString(R.string.local_openstreetmap_were_uploaded)); + UploadOpenstreetmapPointAsyncTask uploadTask = new UploadOpenstreetmapPointAsyncTask( + dialog, listener, plugin, remotepoi, remotebug, toUpload.length); uploadTask.execute(toUpload); dialog.show(); @@ -614,21 +614,6 @@ public class OsmEditsFragment extends OsmAndListFragment implements OsmEditsUplo } } - @Override - public void uploadUpdated(OsmPoint point) { - listAdapter.delete(point); - } - - @Override - public void uploadEnded(Integer result) { - listAdapter.notifyDataSetChanged(); - if (result != null) { - AccessibleToast.makeText(getActivity(), - MessageFormat.format(getString(R.string.local_openstreetmap_were_uploaded), result), Toast.LENGTH_LONG) - .show(); - } - } - private void showOnMap(OsmPoint osmPoint) { boolean isOsmPoint = osmPoint instanceof OpenstreetmapPoint; String type = osmPoint.getGroup() == OsmPoint.Group.POI ? PointDescription.POINT_TYPE_POI : PointDescription.POINT_TYPE_OSM_BUG; @@ -637,6 +622,4 @@ public class OsmEditsFragment extends OsmAndListFragment implements OsmEditsUplo new PointDescription(type, name), true, osmPoint); //$NON-NLS-1$ MapActivity.launchMapActivityMoveToTop(getActivity()); } - - } diff --git a/OsmAnd/src/net/osmand/plus/osmedit/OsmEditsUploadListener.java b/OsmAnd/src/net/osmand/plus/osmedit/OsmEditsUploadListener.java index 2edf57a300..f84d5c765e 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/OsmEditsUploadListener.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/OsmEditsUploadListener.java @@ -1,12 +1,12 @@ package net.osmand.plus.osmedit; +import java.util.Map; + /** * Created by Denis * on 11.03.2015. */ public interface OsmEditsUploadListener { - - public void uploadUpdated(OsmPoint point); - - public void uploadEnded(Integer result); + void uploadUpdated(OsmPoint point); + void uploadEnded(Map loadErrorsMap); } diff --git a/OsmAnd/src/net/osmand/plus/osmedit/OsmNotesPoint.java b/OsmAnd/src/net/osmand/plus/osmedit/OsmNotesPoint.java index 0904419ff6..da72273750 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/OsmNotesPoint.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/OsmNotesPoint.java @@ -1,8 +1,6 @@ package net.osmand.plus.osmedit; -import java.io.Serializable; - -public class OsmNotesPoint extends OsmPoint implements Serializable { +public class OsmNotesPoint extends OsmPoint { private static final long serialVersionUID = 729654300829771468L; private long id; diff --git a/OsmAnd/src/net/osmand/plus/osmedit/OsmPoint.java b/OsmAnd/src/net/osmand/plus/osmedit/OsmPoint.java index 6b83d5e669..958d69e059 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/OsmPoint.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/OsmPoint.java @@ -1,9 +1,10 @@ package net.osmand.plus.osmedit; +import java.io.Serializable; import java.util.HashMap; import java.util.Map; -public abstract class OsmPoint { +public abstract class OsmPoint implements Serializable { public static enum Group {BUG, POI}; diff --git a/OsmAnd/src/net/osmand/plus/osmedit/UploadOpenstreetmapPointAsyncTask.java b/OsmAnd/src/net/osmand/plus/osmedit/UploadOpenstreetmapPointAsyncTask.java index be3756f9bd..f513892f31 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/UploadOpenstreetmapPointAsyncTask.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/UploadOpenstreetmapPointAsyncTask.java @@ -3,47 +3,44 @@ package net.osmand.plus.osmedit; import android.app.ProgressDialog; import android.content.DialogInterface; import android.os.AsyncTask; -import android.support.v4.app.Fragment; import net.osmand.osm.edit.EntityInfo; import net.osmand.osm.edit.Node; +import java.util.HashMap; +import java.util.Map; + /** * Created by Denis * on 11.03.2015. */ -public class UploadOpenstreetmapPointAsyncTask extends AsyncTask { - +public class UploadOpenstreetmapPointAsyncTask + extends AsyncTask> { private ProgressDialog progress; - private OpenstreetmapRemoteUtil remotepoi; - private OsmBugsRemoteUtil remotebug; - - private int listSize = 0; - private boolean interruptUploading = false; - - private Fragment ctx; - + private OsmEditsUploadListener listener; private OsmEditingPlugin plugin; - public UploadOpenstreetmapPointAsyncTask(ProgressDialog progress,Fragment ctx, - OsmEditingPlugin plugin, - OpenstreetmapRemoteUtil remotepoi, OsmBugsRemoteUtil remotebug, + public UploadOpenstreetmapPointAsyncTask(ProgressDialog progress, + OsmEditsUploadListener listener, + OsmEditingPlugin plugin, + OpenstreetmapRemoteUtil remotepoi, + OsmBugsRemoteUtil remotebug, int listSize) { this.progress = progress; this.plugin = plugin; this.remotepoi = remotepoi; this.remotebug = remotebug; this.listSize = listSize; - this.ctx = ctx; + this.listener = listener; } @Override - protected Integer doInBackground(OsmPoint... points) { - int uploaded = 0; + protected Map doInBackground(OsmPoint... points) { + Map loadErrorsMap = new HashMap<>(); for (OsmPoint point : points) { if (interruptUploading) @@ -57,31 +54,29 @@ public class UploadOpenstreetmapPointAsyncTask extends AsyncTask loadErrorsMap) { progress.dismiss(); - if (ctx instanceof OsmEditsUploadListener){ - ((OsmEditsUploadListener)ctx).uploadEnded(result); - } + listener.uploadEnded(loadErrorsMap); } public void setInterruptUploading(boolean b) { @@ -113,10 +106,8 @@ public class UploadOpenstreetmapPointAsyncTask extends AsyncTask Date: Thu, 30 Jul 2015 21:25:05 +0300 Subject: [PATCH 11/32] Fix for null pointer exception --- ...tenerHelper.java => OsmEditsUploadListenerHelper.java} | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) rename OsmAnd/src/net/osmand/plus/osmedit/{OsmEditUploadListenerHelper.java => OsmEditsUploadListenerHelper.java} (97%) diff --git a/OsmAnd/src/net/osmand/plus/osmedit/OsmEditUploadListenerHelper.java b/OsmAnd/src/net/osmand/plus/osmedit/OsmEditsUploadListenerHelper.java similarity index 97% rename from OsmAnd/src/net/osmand/plus/osmedit/OsmEditUploadListenerHelper.java rename to OsmAnd/src/net/osmand/plus/osmedit/OsmEditsUploadListenerHelper.java index ff04a465a2..0564a06b8f 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/OsmEditUploadListenerHelper.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/OsmEditsUploadListenerHelper.java @@ -34,12 +34,12 @@ import java.text.MessageFormat; import java.util.ArrayList; import java.util.Map; -public class OsmEditUploadListenerHelper implements OsmEditsUploadListener { +public class OsmEditsUploadListenerHelper implements OsmEditsUploadListener { public static final String TAG = "OsmEditUploadListenerHe"; private final FragmentActivity activity; private final String numberFormat; - public OsmEditUploadListenerHelper(FragmentActivity activity, String numberFormat) { + public OsmEditsUploadListenerHelper(FragmentActivity activity, String numberFormat) { this.activity = activity; this.numberFormat = numberFormat; } @@ -103,7 +103,7 @@ public class OsmEditUploadListenerHelper implements OsmEditsUploadListener { OpenstreetmapRemoteUtil remotepoi = new OpenstreetmapRemoteUtil(activity); OsmBugsRemoteUtil remotebug = new OsmBugsRemoteUtil((OsmandApplication) activity.getApplication()); - OsmEditUploadListenerHelper helper = new OsmEditUploadListenerHelper(activity, + OsmEditsUploadListenerHelper helper = new OsmEditsUploadListenerHelper(activity, activity.getResources().getString(R.string.local_openstreetmap_were_uploaded)); Resources resources = activity.getResources(); @@ -191,7 +191,7 @@ public class OsmEditUploadListenerHelper implements OsmEditsUploadListener { new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { - OsmEditUploadListenerHelper + OsmEditsUploadListenerHelper .showUploadItemsProgressDialog( UploadingMultipleErrorDialogFragment.this, points); From af569a00cc3c369afbf845b359bc046cecbbcac9 Mon Sep 17 00:00:00 2001 From: GaidamakUA Date: Thu, 30 Jul 2015 21:32:09 +0300 Subject: [PATCH 12/32] Fix for null pointer exception --- .../plus/osmedit/DashOsmEditsFragment.java | 2 +- .../osmand/plus/osmedit/OsmEditsFragment.java | 2 +- .../osmedit/OsmEditsUploadListenerHelper.java | 54 +++++++++---------- 3 files changed, 27 insertions(+), 31 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/osmedit/DashOsmEditsFragment.java b/OsmAnd/src/net/osmand/plus/osmedit/DashOsmEditsFragment.java index 9a65ef373b..4c2cc7f19a 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/DashOsmEditsFragment.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/DashOsmEditsFragment.java @@ -133,7 +133,7 @@ public class DashOsmEditsFragment extends DashBaseFragment { ProgressDialog dialog = ProgressImplementation.createProgressDialog(getActivity(), getString(R.string.uploading), getString(R.string.local_openstreetmap_uploading), ProgressDialog.STYLE_HORIZONTAL).getDialog(); - OsmEditsUploadListener listener = new OsmEditUploadListenerHelper(getActivity(), + OsmEditsUploadListener listener = new OsmEditsUploadListenerHelper(getActivity(), getString(R.string.local_openstreetmap_were_uploaded)) { @Override public void uploadUpdated(OsmPoint point) { diff --git a/OsmAnd/src/net/osmand/plus/osmedit/OsmEditsFragment.java b/OsmAnd/src/net/osmand/plus/osmedit/OsmEditsFragment.java index 895478b50f..07713a50b2 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/OsmEditsFragment.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/OsmEditsFragment.java @@ -500,7 +500,7 @@ public class OsmEditsFragment extends OsmAndListFragment { getString(R.string.uploading), getString(R.string.local_openstreetmap_uploading), ProgressDialog.STYLE_HORIZONTAL).getDialog(); - OsmEditsUploadListener listener = new OsmEditUploadListenerHelper(getActivity(), + OsmEditsUploadListener listener = new OsmEditsUploadListenerHelper(getActivity(), getString(R.string.local_openstreetmap_were_uploaded)); UploadOpenstreetmapPointAsyncTask uploadTask = new UploadOpenstreetmapPointAsyncTask( dialog, listener, plugin, remotepoi, remotebug, toUpload.length); diff --git a/OsmAnd/src/net/osmand/plus/osmedit/OsmEditsUploadListenerHelper.java b/OsmAnd/src/net/osmand/plus/osmedit/OsmEditsUploadListenerHelper.java index 0564a06b8f..9210c5e2fe 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/OsmEditsUploadListenerHelper.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/OsmEditsUploadListenerHelper.java @@ -71,27 +71,8 @@ public class OsmEditsUploadListenerHelper implements OsmEditsUploadListener { UploadingErrorDialogFragment.getInstance(message, point); dialogFragment.show(activity.getSupportFragmentManager(), "error_loading"); } else { - Log.v(TAG, "in if2"); - String[] pointNames = new String[loadErrorsMap.keySet().size()]; - boolean[] hasErrors = new boolean[loadErrorsMap.keySet().size()]; - ArrayList pointsWithErrors = new ArrayList<>(); - int i = 0; - for (OsmPoint point : loadErrorsMap.keySet()) { - pointNames[i] = point.getGroup() == OsmPoint.Group.BUG ? - ((OsmNotesPoint) point).getText() : - ((OpenstreetmapPoint) point).getName(); - pointNames[i] = TextUtils.isEmpty(pointNames[i]) ? - "id:" + point.getId() : pointNames[i]; - hasErrors[i] = loadErrorsMap.get(point) != null; - if (hasErrors[i]) { - pointsWithErrors.add(point); - } - i++; - } UploadingMultipleErrorDialogFragment dialogFragment = - UploadingMultipleErrorDialogFragment.getInstance(pointNames, hasErrors); - dialogFragment.setPointsToUpload( - pointsWithErrors.toArray(new OsmPoint[pointsWithErrors.size()])); + UploadingMultipleErrorDialogFragment.createInstance(loadErrorsMap); dialogFragment.show(activity.getSupportFragmentManager(), "multiple_error_loading"); } @@ -164,8 +145,7 @@ public class OsmEditsUploadListenerHelper implements OsmEditsUploadListener { public static final class UploadingMultipleErrorDialogFragment extends DialogFragment { private static final String HAS_ERROR = "has_error"; private static final String POINT_NAMES = "point_names"; - - OsmPoint[] points; + private static final String POINTS_WITH_ERRORS = "points_with_errors"; @NonNull @Override @@ -173,6 +153,7 @@ public class OsmEditsUploadListenerHelper implements OsmEditsUploadListener { Bundle arguments = getArguments(); String[] pointNames = arguments.getStringArray(POINT_NAMES); boolean[] hasErrors = arguments.getBooleanArray(HAS_ERROR); + final OsmPoint[] points = (OsmPoint[]) arguments.getSerializable(POINTS_WITH_ERRORS); int successfulUploads = 0; for (boolean hasError : hasErrors) { if (!hasError) { @@ -200,21 +181,36 @@ public class OsmEditsUploadListenerHelper implements OsmEditsUploadListener { return builder.create(); } - public void setPointsToUpload(OsmPoint[] points) { - this.points = points; - } + public static UploadingMultipleErrorDialogFragment createInstance( + Map loadErrorsMap) { + String[] pointNames = new String[loadErrorsMap.keySet().size()]; + boolean[] hasErrors = new boolean[loadErrorsMap.keySet().size()]; + ArrayList pointsWithErrors = new ArrayList<>(); + int i = 0; + for (OsmPoint point : loadErrorsMap.keySet()) { + pointNames[i] = point.getGroup() == OsmPoint.Group.BUG ? + ((OsmNotesPoint) point).getText() : + ((OpenstreetmapPoint) point).getName(); + pointNames[i] = TextUtils.isEmpty(pointNames[i]) ? + "id:" + point.getId() : pointNames[i]; + hasErrors[i] = loadErrorsMap.get(point) != null; + if (hasErrors[i]) { + pointsWithErrors.add(point); + } + i++; + } - public static UploadingMultipleErrorDialogFragment getInstance(String[] pointNames, - boolean[] hasError) { - if (pointNames.length != hasError.length) { + if (pointNames.length != hasErrors.length) { throw new IllegalArgumentException("pointNames and hasError arrays " + "must me of equal length"); } UploadingMultipleErrorDialogFragment fragment = new UploadingMultipleErrorDialogFragment(); Bundle bundle = new Bundle(); + bundle.putSerializable(POINTS_WITH_ERRORS, + pointsWithErrors.toArray(new OsmPoint[pointsWithErrors.size()])); bundle.putStringArray(POINT_NAMES, pointNames); - bundle.putBooleanArray(HAS_ERROR, hasError); + bundle.putBooleanArray(HAS_ERROR, hasErrors); fragment.setArguments(bundle); return fragment; } From 1aa945dd09180d6aa706d9c3bbd284e9dad79499 Mon Sep 17 00:00:00 2001 From: GaidamakUA Date: Mon, 3 Aug 2015 15:09:54 +0300 Subject: [PATCH 13/32] Unused classes deleted --- OsmAnd/res/layout/dashboard.xml | 109 ------------------ .../plus/dashboard/NotifyingScrollView.java | 45 -------- 2 files changed, 154 deletions(-) delete mode 100644 OsmAnd/res/layout/dashboard.xml delete mode 100644 OsmAnd/src/net/osmand/plus/dashboard/NotifyingScrollView.java diff --git a/OsmAnd/res/layout/dashboard.xml b/OsmAnd/res/layout/dashboard.xml deleted file mode 100644 index f9a47129c9..0000000000 --- a/OsmAnd/res/layout/dashboard.xml +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/OsmAnd/src/net/osmand/plus/dashboard/NotifyingScrollView.java b/OsmAnd/src/net/osmand/plus/dashboard/NotifyingScrollView.java deleted file mode 100644 index 7c772dc00f..0000000000 --- a/OsmAnd/src/net/osmand/plus/dashboard/NotifyingScrollView.java +++ /dev/null @@ -1,45 +0,0 @@ -package net.osmand.plus.dashboard; - -import android.content.Context; -import android.util.AttributeSet; -import android.widget.ScrollView; - -/** - * @author Cyril Mottier - */ -public class NotifyingScrollView extends ScrollView { - - /** - * @author Cyril Mottier - */ - public interface OnScrollChangedListener { - void onScrollChanged(ScrollView who, int l, int t, int oldl, int oldt); - } - - private OnScrollChangedListener mOnScrollChangedListener; - - public NotifyingScrollView(Context context) { - super(context); - } - - public NotifyingScrollView(Context context, AttributeSet attrs) { - super(context, attrs); - } - - public NotifyingScrollView(Context context, AttributeSet attrs, int defStyle) { - super(context, attrs, defStyle); - } - - @Override - protected void onScrollChanged(int l, int t, int oldl, int oldt) { - super.onScrollChanged(l, t, oldl, oldt); - if (mOnScrollChangedListener != null) { - mOnScrollChangedListener.onScrollChanged(this, l, t, oldl, oldt); - } - } - - public void setOnScrollChangedListener(OnScrollChangedListener listener) { - mOnScrollChangedListener = listener; - } - -} From 9effde18c81cefc9dc4b4fbdcda31e3ea760bacd Mon Sep 17 00:00:00 2001 From: GaidamakUA Date: Tue, 4 Aug 2015 10:31:53 +0300 Subject: [PATCH 14/32] Dash swipe implementation --- OsmAnd/build.gradle | 5 +- .../activities/SettingsGeneralActivity.java | 57 ++-- .../DashAudioVideoNotesFragment.java | 21 +- .../plus/dashboard/DashBaseFragment.java | 138 ++++++++-- .../dashboard/DashChooseAppDirFragment.java | 56 ++-- .../plus/dashboard/DashErrorFragment.java | 19 +- .../plus/dashboard/DashFavoritesFragment.java | 29 ++- .../plus/dashboard/DashFirstTimeFragment.java | 3 +- .../dashboard/DashNavigationFragment.java | 19 +- .../plus/dashboard/DashPluginsFragment.java | 21 +- .../plus/dashboard/DashRateUsFragment.java | 2 +- .../plus/dashboard/DashRecentsFragment.java | 33 +-- .../plus/dashboard/DashSearchFragment.java | 2 +- .../plus/dashboard/DashUpdatesFragment.java | 27 +- .../plus/dashboard/DashWaypointsFragment.java | 35 ++- .../osmand/plus/dashboard/DashboardOnMap.java | 36 ++- .../development/DashSimulateFragment.java | 13 +- .../plus/monitoring/DashTrackFragment.java | 36 ++- .../plus/osmedit/DashOsmEditsFragment.java | 2 +- .../osmand/plus/osmo/DashOsMoFragment.java | 39 +-- .../parkingpoint/DashParkingFragment.java | 21 +- .../tools/SwipeDismissTouchListener.java | 243 ++++++++++++++++++ 22 files changed, 606 insertions(+), 251 deletions(-) create mode 100644 OsmAnd/src/net/osmand/plus/widgets/tools/SwipeDismissTouchListener.java diff --git a/OsmAnd/build.gradle b/OsmAnd/build.gradle index 854dddaf58..f7d2ca58f0 100644 --- a/OsmAnd/build.gradle +++ b/OsmAnd/build.gradle @@ -301,7 +301,7 @@ repositories { dependencies { compile project(path: ":OsmAnd-java", configuration: "android") - compile project(":eclipse-compile:appcompat") +// compile project(":eclipse-compile:appcompat") compile fileTree( dir: "libs", include: ["*.jar"], @@ -311,11 +311,12 @@ dependencies { "OsmAndCore_android.jar", "OsmAndCore_wrapper.jar"]) // compile "com.github.ksoichiro:android-observablescrollview:1.5.0" - // compile "com.android.support:appcompat-v7:21.0.3" + compile "com.android.support:appcompat-v7:22.2.1" // compile "com.github.shell-software:fab:1.0.5" legacyCompile "net.osmand:OsmAndCore_android:0.1-SNAPSHOT@jar" qtcoredebugCompile "net.osmand:OsmAndCore_androidNativeDebug:0.1-SNAPSHOT@aar" qtcoredebugCompile "net.osmand:OsmAndCore_android:0.1-SNAPSHOT@aar" qtcoreCompile "net.osmand:OsmAndCore_androidNativeRelease:0.1-SNAPSHOT@aar" qtcoreCompile "net.osmand:OsmAndCore_android:0.1-SNAPSHOT@aar" + compile 'com.android.support:design:22.2.1' } diff --git a/OsmAnd/src/net/osmand/plus/activities/SettingsGeneralActivity.java b/OsmAnd/src/net/osmand/plus/activities/SettingsGeneralActivity.java index 85bf75c72b..75df197183 100644 --- a/OsmAnd/src/net/osmand/plus/activities/SettingsGeneralActivity.java +++ b/OsmAnd/src/net/osmand/plus/activities/SettingsGeneralActivity.java @@ -1,33 +1,6 @@ package net.osmand.plus.activities; -import java.io.File; -import java.util.ArrayList; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; - -import net.osmand.IProgress; -import net.osmand.IndexConstants; -import net.osmand.access.AccessibleToast; -import net.osmand.osm.io.NetworkUtils; -import net.osmand.plus.ApplicationMode; -import net.osmand.plus.OsmandApplication; -import net.osmand.plus.OsmandSettings; -import net.osmand.plus.OsmandSettings.DrivingRegion; -import net.osmand.plus.OsmandSettings.MetricsConstants; -import net.osmand.plus.R; -import net.osmand.plus.Version; -import net.osmand.plus.dashboard.DashChooseAppDirFragment; -import net.osmand.plus.dashboard.DashChooseAppDirFragment.ChooseAppDirFragment; -import net.osmand.plus.dashboard.DashChooseAppDirFragment.MoveFilesToDifferentDirectory; -import net.osmand.plus.dialogs.ConfigureMapMenu; -import net.osmand.plus.download.DownloadActivity; -import net.osmand.plus.download.DownloadActivityType; -import net.osmand.plus.helpers.FileNameTranslationHelper; -import net.osmand.plus.render.NativeOsmandLibrary; -import net.osmand.plus.voice.CommandPlayer; -import net.osmand.render.RenderingRulesStorage; import android.app.AlertDialog; import android.app.AlertDialog.Builder; import android.app.Dialog; @@ -52,6 +25,34 @@ import android.widget.EditText; import android.widget.LinearLayout; import android.widget.Toast; +import net.osmand.IProgress; +import net.osmand.IndexConstants; +import net.osmand.access.AccessibleToast; +import net.osmand.osm.io.NetworkUtils; +import net.osmand.plus.ApplicationMode; +import net.osmand.plus.OsmandApplication; +import net.osmand.plus.OsmandSettings; +import net.osmand.plus.OsmandSettings.DrivingRegion; +import net.osmand.plus.OsmandSettings.MetricsConstants; +import net.osmand.plus.R; +import net.osmand.plus.Version; +import net.osmand.plus.dashboard.DashChooseAppDirFragment; +import net.osmand.plus.dashboard.DashChooseAppDirFragment.ChooseAppDirFragment; +import net.osmand.plus.dashboard.DashChooseAppDirFragment.MoveFilesToDifferentDirectory; +import net.osmand.plus.dialogs.ConfigureMapMenu; +import net.osmand.plus.download.DownloadActivity; +import net.osmand.plus.download.DownloadActivityType; +import net.osmand.plus.helpers.FileNameTranslationHelper; +import net.osmand.plus.render.NativeOsmandLibrary; +import net.osmand.plus.voice.CommandPlayer; +import net.osmand.render.RenderingRulesStorage; + +import java.io.File; +import java.util.ArrayList; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Set; + public class SettingsGeneralActivity extends SettingsBaseActivity { @@ -339,7 +340,7 @@ public class SettingsGeneralActivity extends SettingsBaseActivity { private void showAppDirDialogV19() { Builder bld = new AlertDialog.Builder(this); ChooseAppDirFragment frg = new DashChooseAppDirFragment.ChooseAppDirFragment(this, (Dialog) null); - bld.setView(frg.initView(getLayoutInflater(), null)); + bld.setView(frg.initView(getLayoutInflater(), null, null)); AlertDialog dlg = bld.show(); frg.setDialog(dlg); } diff --git a/OsmAnd/src/net/osmand/plus/audionotes/DashAudioVideoNotesFragment.java b/OsmAnd/src/net/osmand/plus/audionotes/DashAudioVideoNotesFragment.java index 6bc8486a51..a7b0a1043a 100644 --- a/OsmAnd/src/net/osmand/plus/audionotes/DashAudioVideoNotesFragment.java +++ b/OsmAnd/src/net/osmand/plus/audionotes/DashAudioVideoNotesFragment.java @@ -1,14 +1,5 @@ package net.osmand.plus.audionotes; -import java.util.ArrayList; -import java.util.List; - -import net.osmand.data.PointDescription; -import net.osmand.plus.OsmandApplication; -import net.osmand.plus.OsmandPlugin; -import net.osmand.plus.R; -import net.osmand.plus.activities.MapActivity; -import net.osmand.plus.dashboard.DashBaseFragment; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.support.annotation.Nullable; @@ -19,6 +10,16 @@ import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; +import net.osmand.data.PointDescription; +import net.osmand.plus.OsmandApplication; +import net.osmand.plus.OsmandPlugin; +import net.osmand.plus.R; +import net.osmand.plus.activities.MapActivity; +import net.osmand.plus.dashboard.DashBaseFragment; + +import java.util.ArrayList; +import java.util.List; + /** * Created by Denis * on 15.12.2014. @@ -30,7 +31,7 @@ public class DashAudioVideoNotesFragment extends DashBaseFragment { AudioVideoNotesPlugin plugin; @Override - public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + public View initView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { plugin = OsmandPlugin.getEnabledPlugin(AudioVideoNotesPlugin.class); View view = getActivity().getLayoutInflater().inflate(R.layout.dash_common_fragment, container, false); ((TextView) view.findViewById(R.id.fav_text)).setText(R.string.map_widget_av_notes); diff --git a/OsmAnd/src/net/osmand/plus/dashboard/DashBaseFragment.java b/OsmAnd/src/net/osmand/plus/dashboard/DashBaseFragment.java index b9afdd5e72..13f1f1c984 100644 --- a/OsmAnd/src/net/osmand/plus/dashboard/DashBaseFragment.java +++ b/OsmAnd/src/net/osmand/plus/dashboard/DashBaseFragment.java @@ -1,69 +1,127 @@ package net.osmand.plus.dashboard; +import android.app.Activity; +import android.content.Intent; +import android.location.Location; +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.design.widget.Snackbar; +import android.support.v4.app.Fragment; +import android.support.v4.view.ViewCompat; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + import net.osmand.plus.OsmAndAppCustomization; import net.osmand.plus.OsmandApplication; import net.osmand.plus.activities.MapActivity; -import android.app.Activity; -import android.content.Intent; -import android.location.Location; -import android.support.v4.app.Fragment; +import net.osmand.plus.widgets.tools.SwipeDismissTouchListener; /** * Created by Denis on 24.11.2014. */ public abstract class DashBaseFragment extends Fragment { - protected DashboardOnMap dashboard; - public OsmandApplication getMyApplication(){ - if (getActivity() == null){ + public interface DismissListener { + void onDismiss(); + } + + public OsmandApplication getMyApplication() { + if (getActivity() == null) { return null; } return (OsmandApplication) getActivity().getApplication(); } - + @Override public void onAttach(Activity activity) { super.onAttach(activity); - if(activity instanceof MapActivity) { + if (activity instanceof MapActivity) { dashboard = ((MapActivity) activity).getDashboard(); dashboard.onAttach(this); } } - - public abstract void onOpenDash() ; - + + @Nullable + @Override + final public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, + @Nullable Bundle savedInstanceState) { + View childView = initView(inflater, container, savedInstanceState); + if (isDismissAllowed()) { + childView.setOnTouchListener(new SwipeDismissTouchListener(childView, null, + new SwipeDismissTouchListener.DismissCallbacks() { + @Override + public boolean canDismiss(Object token) { + return true; + } + + @Override + public void onDismiss(View view, Object token, boolean isSwipeRight) { + if (isSwipeRight) { + getDismissCallback().onDismiss(); + } else { + // TODO show settings card + } + } + })); + if (getDismissCallback() == null) { + defaultDismissListener = new DefaultDismissListener(getParentView(), dashboard, getTag(), + childView); + } + } + return childView; + } + + public abstract View initView(LayoutInflater inflater, @Nullable ViewGroup container, + @Nullable Bundle savedInstanceState); + + public DismissListener getDismissCallback() { + return defaultDismissListener; + } + + public boolean isDismissAllowed() { + return true; + } + + @Override + public boolean getUserVisibleHint() { + return super.getUserVisibleHint(); + } + + public abstract void onOpenDash(); + public void onCloseDash() { } - + @Override public final void onPause() { // use on close super.onPause(); onCloseDash(); } - + public void closeDashboard() { dashboard.hideDashboard(false); } - + @Override public final void onResume() { // use on open update super.onResume(); - if(dashboard != null && dashboard.isVisible() && getView() != null) { + if (dashboard != null && dashboard.isVisible() && getView() != null) { onOpenDash(); } } - - + + public void onLocationCompassChanged(Location l, double compassValue) { } - + @Override public void onDetach() { super.onDetach(); - if(dashboard != null) { + if (dashboard != null) { dashboard.onDetach(this); dashboard = null; } @@ -78,4 +136,44 @@ public abstract class DashBaseFragment extends Fragment { activity.startActivity(favorites); } + protected View getParentView() { + return dashboard.getParentView(); + } + + private DismissListener defaultDismissListener; + + private static class DefaultDismissListener implements DismissListener { + private View parentView; + private DashboardOnMap dashboardOnMap; + private String fragmentTag; + private View fragmentView; + + public DefaultDismissListener(View parentView, DashboardOnMap dashboardOnMap, + String fragmentTag, View fragmentView) { + this.parentView = parentView; + this.dashboardOnMap = dashboardOnMap; + this.fragmentTag = fragmentTag; + this.fragmentView = fragmentView; + } + + @Override + public void onDismiss() { + dashboardOnMap.hideFragmentByTag(fragmentTag); + Snackbar.make(parentView, "Card was hidden", Snackbar.LENGTH_LONG) + .setAction("UNDO", new View.OnClickListener() { + @Override + public void onClick(View view) { + DefaultDismissListener.this.onUndo(); + } + }) + .show(); + + } + + public void onUndo() { + dashboardOnMap.unblacklistFragmentClass(fragmentTag); + ViewCompat.setTranslationX(fragmentView, 0); + ViewCompat.setAlpha(fragmentView, 1); + } + } } diff --git a/OsmAnd/src/net/osmand/plus/dashboard/DashChooseAppDirFragment.java b/OsmAnd/src/net/osmand/plus/dashboard/DashChooseAppDirFragment.java index 237a3474c3..ecfc8c06d6 100644 --- a/OsmAnd/src/net/osmand/plus/dashboard/DashChooseAppDirFragment.java +++ b/OsmAnd/src/net/osmand/plus/dashboard/DashChooseAppDirFragment.java @@ -1,26 +1,5 @@ package net.osmand.plus.dashboard; -import gnu.trove.list.array.TIntArrayList; - -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.text.MessageFormat; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Locale; - -import net.osmand.IndexConstants; -import net.osmand.ValueHolder; -import net.osmand.access.AccessibleToast; -import net.osmand.plus.OsmandApplication; -import net.osmand.plus.OsmandSettings; -import net.osmand.plus.ProgressImplementation; -import net.osmand.plus.R; -import net.osmand.util.Algorithms; import android.annotation.TargetApi; import android.app.Activity; import android.app.AlertDialog; @@ -45,8 +24,28 @@ import android.widget.LinearLayout; import android.widget.TextView; import android.widget.Toast; -/** - */ +import net.osmand.IndexConstants; +import net.osmand.ValueHolder; +import net.osmand.access.AccessibleToast; +import net.osmand.plus.OsmandApplication; +import net.osmand.plus.OsmandSettings; +import net.osmand.plus.ProgressImplementation; +import net.osmand.plus.R; +import net.osmand.util.Algorithms; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.text.MessageFormat; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Locale; + +import gnu.trove.list.array.TIntArrayList; + public class DashChooseAppDirFragment extends DashBaseFragment { public static final String TAG = "DASH_CHOOSE_APP_DIR_FRAGMENT"; @@ -62,14 +61,12 @@ public class DashChooseAppDirFragment extends DashBaseFragment { @Override public void onOpenDash() { } - @Override - public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { - return fragment.initView(inflater, container); + public View initView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + return fragment.initView(inflater, container, savedInstanceState); } - - + public static boolean isDashNeeded(OsmandSettings settings) { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) { return false; @@ -156,7 +153,8 @@ public class DashChooseAppDirFragment extends DashBaseFragment { copyMapsBtn.setVisibility(copyFiles ? View.VISIBLE : View.GONE); } - public View initView(LayoutInflater inflater, ViewGroup container) { + public View initView(LayoutInflater inflater, ViewGroup container, + @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.dash_storage_type_fragment, container, false); settings = getMyApplication().getSettings(); locationPath = (TextView) view.findViewById(R.id.location_path); diff --git a/OsmAnd/src/net/osmand/plus/dashboard/DashErrorFragment.java b/OsmAnd/src/net/osmand/plus/dashboard/DashErrorFragment.java index d32cfc2a5e..e9ab9ea291 100644 --- a/OsmAnd/src/net/osmand/plus/dashboard/DashErrorFragment.java +++ b/OsmAnd/src/net/osmand/plus/dashboard/DashErrorFragment.java @@ -1,13 +1,5 @@ package net.osmand.plus.dashboard; -import java.io.File; -import java.text.MessageFormat; - -import net.osmand.plus.OsmandApplication; -import net.osmand.plus.R; -import net.osmand.plus.Version; -import net.osmand.plus.activities.OsmandActionBarActivity; -import net.osmand.plus.helpers.FontCache; import android.content.Intent; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; @@ -22,6 +14,15 @@ import android.widget.Button; import android.widget.ImageView; import android.widget.TextView; +import net.osmand.plus.OsmandApplication; +import net.osmand.plus.R; +import net.osmand.plus.Version; +import net.osmand.plus.activities.OsmandActionBarActivity; +import net.osmand.plus.helpers.FontCache; + +import java.io.File; +import java.text.MessageFormat; + /** * Created by Denis * on 02.12.14. @@ -31,7 +32,7 @@ public class DashErrorFragment extends DashBaseFragment { public static final String TAG = "DASH_ERROR_FRAGMENT"; @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + public View initView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = getActivity().getLayoutInflater().inflate(R.layout.dash_error_fragment, container, false); String msg = MessageFormat.format(getString(R.string.previous_run_crashed), OsmandApplication.EXCEPTION_PATH); Typeface typeface = FontCache.getRobotoMedium(getActivity()); diff --git a/OsmAnd/src/net/osmand/plus/dashboard/DashFavoritesFragment.java b/OsmAnd/src/net/osmand/plus/dashboard/DashFavoritesFragment.java index 92fd7dc223..359cc4ab3b 100644 --- a/OsmAnd/src/net/osmand/plus/dashboard/DashFavoritesFragment.java +++ b/OsmAnd/src/net/osmand/plus/dashboard/DashFavoritesFragment.java @@ -1,9 +1,14 @@ package net.osmand.plus.dashboard; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; -import java.util.List; +import android.graphics.Typeface; +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.TextView; import net.osmand.data.FavouritePoint; import net.osmand.data.LatLon; @@ -15,15 +20,11 @@ import net.osmand.plus.base.FavoriteImageDrawable; import net.osmand.plus.dialogs.DirectionsDialogs; import net.osmand.plus.myplaces.FavoritesActivity; import net.osmand.util.MapUtils; -import android.graphics.Typeface; -import android.os.Bundle; -import android.support.annotation.Nullable; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.LinearLayout; -import android.widget.TextView; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; /** * Created by Denis @@ -34,7 +35,7 @@ public class DashFavoritesFragment extends DashLocationFragment { List points = new ArrayList(); @Override - public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + public View initView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = getActivity().getLayoutInflater().inflate(R.layout.dash_common_fragment, container, false); (view.findViewById(R.id.show_all)).setOnClickListener(new View.OnClickListener() { @Override diff --git a/OsmAnd/src/net/osmand/plus/dashboard/DashFirstTimeFragment.java b/OsmAnd/src/net/osmand/plus/dashboard/DashFirstTimeFragment.java index 7b3de5235f..ad1b331261 100644 --- a/OsmAnd/src/net/osmand/plus/dashboard/DashFirstTimeFragment.java +++ b/OsmAnd/src/net/osmand/plus/dashboard/DashFirstTimeFragment.java @@ -13,7 +13,6 @@ import android.widget.TextView; import net.osmand.plus.OsmandSettings; import net.osmand.plus.R; -import net.osmand.plus.activities.MapActivity; import net.osmand.plus.download.DownloadActivity; /** @@ -31,7 +30,7 @@ public class DashFirstTimeFragment extends DashBaseFragment { } @Override - public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + public View initView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = getActivity().getLayoutInflater().inflate(R.layout.dash_first_time, container, false); view.findViewById(R.id.select_region).setOnClickListener(new View.OnClickListener() { diff --git a/OsmAnd/src/net/osmand/plus/dashboard/DashNavigationFragment.java b/OsmAnd/src/net/osmand/plus/dashboard/DashNavigationFragment.java index f9967bd4e4..f4589b2328 100644 --- a/OsmAnd/src/net/osmand/plus/dashboard/DashNavigationFragment.java +++ b/OsmAnd/src/net/osmand/plus/dashboard/DashNavigationFragment.java @@ -1,13 +1,5 @@ package net.osmand.plus.dashboard; -import java.util.ArrayList; -import java.util.List; - -import net.osmand.plus.R; -import net.osmand.plus.TargetPointsHelper.TargetPoint; -import net.osmand.plus.activities.MapActivity; -import net.osmand.plus.activities.ShowRouteInfoActivity; -import net.osmand.plus.routing.RoutingHelper; import android.app.AlertDialog; import android.content.DialogInterface; import android.content.Intent; @@ -21,6 +13,15 @@ import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; +import net.osmand.plus.R; +import net.osmand.plus.TargetPointsHelper.TargetPoint; +import net.osmand.plus.activities.MapActivity; +import net.osmand.plus.activities.ShowRouteInfoActivity; +import net.osmand.plus.routing.RoutingHelper; + +import java.util.ArrayList; +import java.util.List; + /** */ public class DashNavigationFragment extends DashBaseFragment { @@ -28,7 +29,7 @@ public class DashNavigationFragment extends DashBaseFragment { List points = new ArrayList(); @Override - public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + public View initView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = getActivity().getLayoutInflater().inflate(R.layout.dash_common_fragment, container, false); ((TextView) view.findViewById(R.id.fav_text)).setText(R.string.current_route); ((TextView)view.findViewById(R.id.show_all)).setText(R.string.info_button); diff --git a/OsmAnd/src/net/osmand/plus/dashboard/DashPluginsFragment.java b/OsmAnd/src/net/osmand/plus/dashboard/DashPluginsFragment.java index 5e243474b0..9b40fb51b7 100644 --- a/OsmAnd/src/net/osmand/plus/dashboard/DashPluginsFragment.java +++ b/OsmAnd/src/net/osmand/plus/dashboard/DashPluginsFragment.java @@ -1,14 +1,5 @@ package net.osmand.plus.dashboard; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Iterator; -import java.util.List; - -import net.osmand.plus.OsmandPlugin; -import net.osmand.plus.R; -import net.osmand.plus.activities.PluginActivity; -import net.osmand.plus.development.OsmandDevelopmentPlugin; import android.content.Intent; import android.content.res.TypedArray; import android.net.Uri; @@ -23,6 +14,16 @@ import android.widget.ImageButton; import android.widget.LinearLayout; import android.widget.TextView; +import net.osmand.plus.OsmandPlugin; +import net.osmand.plus.R; +import net.osmand.plus.activities.PluginActivity; +import net.osmand.plus.development.OsmandDevelopmentPlugin; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.Iterator; +import java.util.List; + /** * Created by Denis * on 21.11.2014. @@ -55,7 +56,7 @@ public class DashPluginsFragment extends DashBaseFragment { } @Override - public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + public View initView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.dash_common_fragment, container, false); TextView header = ((TextView) view.findViewById(R.id.fav_text)); header.setText(R.string.prefs_plugins); diff --git a/OsmAnd/src/net/osmand/plus/dashboard/DashRateUsFragment.java b/OsmAnd/src/net/osmand/plus/dashboard/DashRateUsFragment.java index 3b044cae48..290af35eb1 100644 --- a/OsmAnd/src/net/osmand/plus/dashboard/DashRateUsFragment.java +++ b/OsmAnd/src/net/osmand/plus/dashboard/DashRateUsFragment.java @@ -37,7 +37,7 @@ public class DashRateUsFragment extends DashBaseFragment { } @Override - public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + public View initView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = getActivity().getLayoutInflater().inflate(R.layout.dash_rate_us_fragment, container, false); TextView header = (TextView) view.findViewById(R.id.header); TextView subheader = (TextView) view.findViewById(R.id.subheader); diff --git a/OsmAnd/src/net/osmand/plus/dashboard/DashRecentsFragment.java b/OsmAnd/src/net/osmand/plus/dashboard/DashRecentsFragment.java index dfe883f8c2..3a3403f574 100644 --- a/OsmAnd/src/net/osmand/plus/dashboard/DashRecentsFragment.java +++ b/OsmAnd/src/net/osmand/plus/dashboard/DashRecentsFragment.java @@ -1,7 +1,15 @@ package net.osmand.plus.dashboard; -import java.util.ArrayList; -import java.util.List; +import android.app.Activity; +import android.content.Intent; +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.TextView; import net.osmand.data.LatLon; import net.osmand.plus.OsmAndAppCustomization; @@ -11,22 +19,11 @@ import net.osmand.plus.activities.MapActivity; import net.osmand.plus.activities.search.SearchActivity; import net.osmand.plus.activities.search.SearchHistoryFragment; import net.osmand.plus.dialogs.DirectionsDialogs; -import net.osmand.plus.helpers.FontCache; import net.osmand.plus.helpers.SearchHistoryHelper; import net.osmand.plus.helpers.SearchHistoryHelper.HistoryEntry; -import net.osmand.util.Algorithms; -import android.app.Activity; -import android.content.Intent; -import android.graphics.Typeface; -import android.os.Bundle; -import android.support.annotation.Nullable; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.Button; -import android.widget.ImageView; -import android.widget.LinearLayout; -import android.widget.TextView; + +import java.util.ArrayList; +import java.util.List; /** * Created by Denis on 24.11.2014. @@ -38,7 +35,7 @@ public class DashRecentsFragment extends DashLocationFragment { List points = new ArrayList(); @Override - public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + public View initView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = getActivity().getLayoutInflater().inflate(R.layout.dash_common_fragment, container, false); ((TextView)view.findViewById(R.id.fav_text)).setText(R.string.shared_string_history); (view.findViewById(R.id.show_all)).setOnClickListener(new View.OnClickListener() { @@ -113,6 +110,4 @@ public class DashRecentsFragment extends DashLocationFragment { } this.distances = distances; } - - } diff --git a/OsmAnd/src/net/osmand/plus/dashboard/DashSearchFragment.java b/OsmAnd/src/net/osmand/plus/dashboard/DashSearchFragment.java index e62f0635ef..4162c05f6d 100644 --- a/OsmAnd/src/net/osmand/plus/dashboard/DashSearchFragment.java +++ b/OsmAnd/src/net/osmand/plus/dashboard/DashSearchFragment.java @@ -26,7 +26,7 @@ public class DashSearchFragment extends DashBaseFragment { public static final String TAG = "DASH_SEARCH_FRAGMENT"; @Override - public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + public View initView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = getActivity().getLayoutInflater().inflate(R.layout.dash_search_fragment, container, false); setupButtons(view); Typeface typeface = FontCache.getRobotoMedium(getActivity()); diff --git a/OsmAnd/src/net/osmand/plus/dashboard/DashUpdatesFragment.java b/OsmAnd/src/net/osmand/plus/dashboard/DashUpdatesFragment.java index 6905c3c319..33200ce95d 100644 --- a/OsmAnd/src/net/osmand/plus/dashboard/DashUpdatesFragment.java +++ b/OsmAnd/src/net/osmand/plus/dashboard/DashUpdatesFragment.java @@ -1,17 +1,5 @@ package net.osmand.plus.dashboard; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; -import java.util.List; - -import net.osmand.plus.R; -import net.osmand.plus.base.BasicProgressAsyncTask; -import net.osmand.plus.download.BaseDownloadActivity; -import net.osmand.plus.download.DownloadActivity; -import net.osmand.plus.download.IndexItem; -import net.osmand.plus.helpers.DatabaseHelper; -import net.osmand.plus.helpers.FontCache; import android.content.Intent; import android.graphics.Typeface; import android.os.AsyncTask; @@ -27,6 +15,19 @@ import android.widget.LinearLayout; import android.widget.ProgressBar; import android.widget.TextView; +import net.osmand.plus.R; +import net.osmand.plus.base.BasicProgressAsyncTask; +import net.osmand.plus.download.BaseDownloadActivity; +import net.osmand.plus.download.DownloadActivity; +import net.osmand.plus.download.IndexItem; +import net.osmand.plus.helpers.DatabaseHelper; +import net.osmand.plus.helpers.FontCache; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; + /** * Created by Denis on 21.11.2014. */ @@ -42,7 +43,7 @@ public class DashUpdatesFragment extends DashBaseFragment { private ImageButton cancelButton; @Override - public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + public View initView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = getActivity().getLayoutInflater().inflate(R.layout.dash_updates_fragment, container, false); Typeface typeface = FontCache.getRobotoMedium(getActivity()); ((TextView) view.findViewById(R.id.header)).setTypeface(typeface); diff --git a/OsmAnd/src/net/osmand/plus/dashboard/DashWaypointsFragment.java b/OsmAnd/src/net/osmand/plus/dashboard/DashWaypointsFragment.java index f490aa4cd2..cb8b7a9f0d 100644 --- a/OsmAnd/src/net/osmand/plus/dashboard/DashWaypointsFragment.java +++ b/OsmAnd/src/net/osmand/plus/dashboard/DashWaypointsFragment.java @@ -1,20 +1,5 @@ package net.osmand.plus.dashboard; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -import net.osmand.data.LatLon; -import net.osmand.data.PointDescription; -import net.osmand.plus.R; -import net.osmand.plus.TargetPointsHelper; -import net.osmand.plus.TargetPointsHelper.TargetPoint; -import net.osmand.plus.activities.MapActivity; -import net.osmand.plus.dashboard.DashboardOnMap.DashboardType; -import net.osmand.plus.dialogs.DirectionsDialogs; -import net.osmand.plus.helpers.WaypointDialogHelper; -import net.osmand.plus.helpers.WaypointHelper; -import net.osmand.plus.helpers.WaypointHelper.LocationPointWrapper; import android.app.AlertDialog; import android.app.AlertDialog.Builder; import android.content.DialogInterface; @@ -31,6 +16,22 @@ import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; +import net.osmand.data.LatLon; +import net.osmand.data.PointDescription; +import net.osmand.plus.R; +import net.osmand.plus.TargetPointsHelper; +import net.osmand.plus.TargetPointsHelper.TargetPoint; +import net.osmand.plus.activities.MapActivity; +import net.osmand.plus.dashboard.DashboardOnMap.DashboardType; +import net.osmand.plus.dialogs.DirectionsDialogs; +import net.osmand.plus.helpers.WaypointDialogHelper; +import net.osmand.plus.helpers.WaypointHelper; +import net.osmand.plus.helpers.WaypointHelper.LocationPointWrapper; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + /** */ public class DashWaypointsFragment extends DashLocationFragment { @@ -39,7 +40,7 @@ public class DashWaypointsFragment extends DashLocationFragment { private static boolean SHOW_ALL; @Override - public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + public View initView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = getActivity().getLayoutInflater().inflate(R.layout.dash_common_fragment, container, false); ((TextView) view.findViewById(R.id.fav_text)).setText(getString(R.string.waypoints)); @@ -265,6 +266,4 @@ public class DashWaypointsFragment extends DashLocationFragment { }); optionsMenu.show(); } - - } diff --git a/OsmAnd/src/net/osmand/plus/dashboard/DashboardOnMap.java b/OsmAnd/src/net/osmand/plus/dashboard/DashboardOnMap.java index 63eed258f7..8594aef6f9 100644 --- a/OsmAnd/src/net/osmand/plus/dashboard/DashboardOnMap.java +++ b/OsmAnd/src/net/osmand/plus/dashboard/DashboardOnMap.java @@ -117,7 +117,6 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks { LIST_MENU, DASHBOARD } - public DashboardOnMap(MapActivity ma) { this.mapActivity = ma; @@ -125,7 +124,7 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks { public void createDashboardView() { - baseColor = mapActivity.getResources().getColor(R.color.osmand_orange) & 0x00ffffff; + baseColor = mapActivity.getResources().getColor(R.color.osmand_orange) & 0x00ffffff; waypointDialogHelper = new WaypointDialogHelper(mapActivity); landscape = !AndroidUiHelper.isOrientationPortrait(mapActivity); dashboardView = (FrameLayout) mapActivity.findViewById(R.id.dashboard); @@ -583,10 +582,10 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks { private void scheduleDownloadButtonCheck() { mapActivity.getMyApplication().runInUIThread(new Runnable() { - + @Override public void run() { - if(isVisible()) { + if (isVisible()) { updateDownloadBtn(); } } @@ -688,20 +687,23 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks { - private void showFragment(FragmentManager manager, FragmentTransaction fragmentTransaction, - String tag, Class cl, boolean cond) { + private void showFragment(final FragmentManager manager, + final FragmentTransaction fragmentTransaction, + final String tag, + final Class cl, + final boolean condition) { try { Fragment frag = manager.findFragmentByTag(tag); if (manager.findFragmentByTag(tag) == null ) { - if(cond) { + if(condition) { T ni = cl.newInstance(); fragmentTransaction.add(R.id.content, ni, tag); } } else { - if(!cond) { + if(!condition) { fragmentTransaction.remove(manager.findFragmentByTag(tag)); } else if(frag instanceof DashBaseFragment){ - if(((DashBaseFragment) frag).getView() != null) { + if(frag.getView() != null) { ((DashBaseFragment) frag).onOpenDash(); } } @@ -929,7 +931,21 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks { return null; } + public void hideFragmentByTag(String tag) { + FragmentManager manager = mapActivity.getSupportFragmentManager(); + FragmentTransaction transaction = manager.beginTransaction(); + Fragment frag = manager.findFragmentByTag(tag); + transaction.hide(frag).commit(); + } - + public void unblacklistFragmentClass(String tag) { + FragmentManager manager = mapActivity.getSupportFragmentManager(); + FragmentTransaction transaction = manager.beginTransaction(); + Fragment frag = manager.findFragmentByTag(tag); + transaction.show(frag).commit(); + } + View getParentView() { + return dashboardView; + } } diff --git a/OsmAnd/src/net/osmand/plus/development/DashSimulateFragment.java b/OsmAnd/src/net/osmand/plus/development/DashSimulateFragment.java index 32e12f88bd..55f3dff10f 100644 --- a/OsmAnd/src/net/osmand/plus/development/DashSimulateFragment.java +++ b/OsmAnd/src/net/osmand/plus/development/DashSimulateFragment.java @@ -1,11 +1,5 @@ package net.osmand.plus.development; -import net.osmand.plus.OsmAndLocationProvider; -import net.osmand.plus.R; -import net.osmand.plus.activities.MapActivity; -import net.osmand.plus.dashboard.DashBaseFragment; -import net.osmand.plus.helpers.FontCache; -import android.graphics.Typeface; import android.os.Bundle; import android.support.annotation.Nullable; import android.view.LayoutInflater; @@ -17,6 +11,11 @@ import android.widget.ImageButton; import android.widget.LinearLayout; import android.widget.TextView; +import net.osmand.plus.OsmAndLocationProvider; +import net.osmand.plus.R; +import net.osmand.plus.activities.MapActivity; +import net.osmand.plus.dashboard.DashBaseFragment; + /** */ public class DashSimulateFragment extends DashBaseFragment { @@ -36,7 +35,7 @@ public class DashSimulateFragment extends DashBaseFragment { } @Override - public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + public View initView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = getActivity().getLayoutInflater().inflate(R.layout.dash_common_fragment, container, false); TextView header = (TextView) view.findViewById(R.id.fav_text); header.setText(R.string.simulate_your_location); diff --git a/OsmAnd/src/net/osmand/plus/monitoring/DashTrackFragment.java b/OsmAnd/src/net/osmand/plus/monitoring/DashTrackFragment.java index 5039514482..d6bd672edc 100644 --- a/OsmAnd/src/net/osmand/plus/monitoring/DashTrackFragment.java +++ b/OsmAnd/src/net/osmand/plus/monitoring/DashTrackFragment.java @@ -1,15 +1,23 @@ package net.osmand.plus.monitoring; -import java.io.File; -import java.util.ArrayList; -import java.util.List; +import android.app.Activity; +import android.content.Intent; +import android.os.Bundle; +import android.os.Handler; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageButton; +import android.widget.LinearLayout; +import android.widget.TextView; +import android.widget.Toast; import net.osmand.IndexConstants; import net.osmand.access.AccessibleToast; import net.osmand.plus.GPXUtilities; import net.osmand.plus.GPXUtilities.GPXFile; -import net.osmand.plus.GpxSelectionHelper.SelectedGpxFile; import net.osmand.plus.GpxSelectionHelper; +import net.osmand.plus.GpxSelectionHelper.SelectedGpxFile; import net.osmand.plus.OsmAndAppCustomization; import net.osmand.plus.OsmandApplication; import net.osmand.plus.OsmandPlugin; @@ -17,23 +25,13 @@ import net.osmand.plus.OsmandSettings; import net.osmand.plus.R; import net.osmand.plus.activities.MapActivity; import net.osmand.plus.dashboard.DashBaseFragment; -import net.osmand.plus.helpers.FontCache; import net.osmand.plus.helpers.GpxUiHelper; import net.osmand.plus.myplaces.AvailableGPXFragment; import net.osmand.plus.myplaces.FavoritesActivity; -import android.app.Activity; -import android.content.Intent; -import android.graphics.Typeface; -import android.os.Bundle; -import android.os.Handler; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.Button; -import android.widget.ImageButton; -import android.widget.LinearLayout; -import android.widget.TextView; -import android.widget.Toast; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; /** * Created by Denis @@ -46,7 +44,7 @@ public class DashTrackFragment extends DashBaseFragment { private boolean updateEnable; @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + public View initView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = getActivity().getLayoutInflater().inflate(R.layout.dash_common_fragment, container, false); TextView header = (TextView) view.findViewById(R.id.fav_text); header.setText(R.string.shared_string_my_tracks); diff --git a/OsmAnd/src/net/osmand/plus/osmedit/DashOsmEditsFragment.java b/OsmAnd/src/net/osmand/plus/osmedit/DashOsmEditsFragment.java index 4c2cc7f19a..39e2be1463 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/DashOsmEditsFragment.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/DashOsmEditsFragment.java @@ -33,7 +33,7 @@ public class DashOsmEditsFragment extends DashBaseFragment { OsmEditingPlugin plugin; @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + public View initView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { plugin = OsmandPlugin.getEnabledPlugin(OsmEditingPlugin.class); View view = getActivity().getLayoutInflater().inflate(R.layout.dash_common_fragment, container, false); diff --git a/OsmAnd/src/net/osmand/plus/osmo/DashOsMoFragment.java b/OsmAnd/src/net/osmand/plus/osmo/DashOsMoFragment.java index daa10cdff7..a9ad606b50 100644 --- a/OsmAnd/src/net/osmand/plus/osmo/DashOsMoFragment.java +++ b/OsmAnd/src/net/osmand/plus/osmo/DashOsMoFragment.java @@ -1,23 +1,5 @@ package net.osmand.plus.osmo; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; -import java.util.Iterator; -import java.util.List; - -import net.osmand.Location; -import net.osmand.data.LatLon; -import net.osmand.data.PointDescription; -import net.osmand.plus.IconsCache; -import net.osmand.plus.NavigationService; -import net.osmand.plus.OsmandApplication; -import net.osmand.plus.OsmandPlugin; -import net.osmand.plus.R; -import net.osmand.plus.activities.MapActivity; -import net.osmand.plus.dashboard.DashLocationFragment; -import net.osmand.plus.osmo.OsMoGroupsStorage.OsMoDevice; -import net.osmand.util.MapUtils; import android.content.Intent; import android.graphics.drawable.Drawable; import android.os.Bundle; @@ -33,6 +15,25 @@ import android.widget.LinearLayout; import android.widget.TextView; import android.widget.Toast; +import net.osmand.Location; +import net.osmand.data.LatLon; +import net.osmand.data.PointDescription; +import net.osmand.plus.IconsCache; +import net.osmand.plus.NavigationService; +import net.osmand.plus.OsmandApplication; +import net.osmand.plus.OsmandPlugin; +import net.osmand.plus.R; +import net.osmand.plus.activities.MapActivity; +import net.osmand.plus.dashboard.DashLocationFragment; +import net.osmand.plus.osmo.OsMoGroupsStorage.OsMoDevice; +import net.osmand.util.MapUtils; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.Iterator; +import java.util.List; + /** * Created by Denis * on 20.01.2015. @@ -53,7 +54,7 @@ public class DashOsMoFragment extends DashLocationFragment implements OsMoGroups } @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + public View initView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { plugin = OsmandPlugin.getEnabledPlugin(OsMoPlugin.class); View view = getActivity().getLayoutInflater().inflate(R.layout.dash_osmo_fragment, container, false); diff --git a/OsmAnd/src/net/osmand/plus/parkingpoint/DashParkingFragment.java b/OsmAnd/src/net/osmand/plus/parkingpoint/DashParkingFragment.java index fb76528a39..d757ac54dc 100644 --- a/OsmAnd/src/net/osmand/plus/parkingpoint/DashParkingFragment.java +++ b/OsmAnd/src/net/osmand/plus/parkingpoint/DashParkingFragment.java @@ -1,14 +1,5 @@ package net.osmand.plus.parkingpoint; -import java.util.Calendar; - -import net.osmand.data.LatLon; -import net.osmand.data.PointDescription; -import net.osmand.plus.OsmandPlugin; -import net.osmand.plus.R; -import net.osmand.plus.activities.MapActivity; -import net.osmand.plus.dashboard.DashLocationFragment; -import net.osmand.plus.helpers.FontCache; import android.app.AlertDialog; import android.content.DialogInterface; import android.graphics.Color; @@ -21,6 +12,16 @@ import android.widget.Button; import android.widget.ImageView; import android.widget.TextView; +import net.osmand.data.LatLon; +import net.osmand.data.PointDescription; +import net.osmand.plus.OsmandPlugin; +import net.osmand.plus.R; +import net.osmand.plus.activities.MapActivity; +import net.osmand.plus.dashboard.DashLocationFragment; +import net.osmand.plus.helpers.FontCache; + +import java.util.Calendar; + /** * Created by Denis on * 26.01.2015. @@ -30,7 +31,7 @@ public class DashParkingFragment extends DashLocationFragment { ParkingPositionPlugin plugin; @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + public View initView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = getActivity().getLayoutInflater().inflate(R.layout.dash_parking_fragment, container, false); Typeface typeface = FontCache.getRobotoMedium(getActivity()); Button remove = (Button) view.findViewById(R.id.remove_tag); diff --git a/OsmAnd/src/net/osmand/plus/widgets/tools/SwipeDismissTouchListener.java b/OsmAnd/src/net/osmand/plus/widgets/tools/SwipeDismissTouchListener.java new file mode 100644 index 0000000000..c5518b6b05 --- /dev/null +++ b/OsmAnd/src/net/osmand/plus/widgets/tools/SwipeDismissTouchListener.java @@ -0,0 +1,243 @@ +package net.osmand.plus.widgets.tools; + +import android.app.ListActivity; +import android.app.ListFragment; +import android.support.v4.view.ViewCompat; +import android.support.v4.view.ViewPropertyAnimatorListener; +import android.view.MotionEvent; +import android.view.VelocityTracker; +import android.view.View; +import android.view.ViewConfiguration; +import android.widget.AdapterView; +import android.widget.ListView; + +/** + * A {@link View.OnTouchListener} that makes any {@link View} dismissable when the + * user swipes (drags her finger) horizontally across the view. + *

+ *

For {@link ListView} list items that don't manage their own touch events + * (i.e. you're using + * {@link ListView#setOnItemClickListener(AdapterView.OnItemClickListener)} + * or an equivalent listener on {@link ListActivity} or + * {@link ListFragment}.

+ *

+ *

Example usage:

+ *

+ *

+ * view.setOnTouchListener(new SwipeDismissTouchListener(
+ *         view,
+ *         null, // Optional token/cookie object
+ *         new SwipeDismissTouchListener.OnDismissCallback() {
+ *             public void onDismiss(View view, Object token) {
+ *                 parent.removeView(view);
+ *             }
+ *         }));
+ * 
+ *

+ *

This class Requires API level 12 or later due to use of {@link + * android.view.ViewPropertyAnimator}.

+ */ +public class SwipeDismissTouchListener implements View.OnTouchListener { + // Cached ViewConfiguration and system-wide constant values + private int mSlop; + private int mMinFlingVelocity; + private int mMaxFlingVelocity; + private long mAnimationTime; + + // Fixed properties + private View mView; + private DismissCallbacks mCallbacks; + private int mViewWidth = 1; // 1 and not 0 to prevent dividing by zero + + // Transient properties + private float mDownX; + private float mDownY; + private boolean mSwiping; + private int mSwipingSlop; + private Object mToken; + private VelocityTracker mVelocityTracker; + private float mTranslationX; + + /** + * The callback interface used by {@link SwipeDismissTouchListener} to inform its client + * about a successful dismissal of the view for which it was created. + */ + public interface DismissCallbacks { + /** + * Called to determine whether the view can be dismissed. + */ + boolean canDismiss(Object token); + + /** + * Called when the user has indicated they she would like to dismiss the view. + * + * @param view The originating {@link View} to be dismissed. + * @param token The optional token passed to this object's constructor. + * @param isSwipeRight Is swiping performed from right to left? + */ + void onDismiss(View view, Object token, boolean isSwipeRight); + } + + /** + * Constructs a new swipe-to-dismiss touch listener for the given view. + * + * @param view The view to make dismissable. + * @param token An optional token/cookie object to be passed through to the callback. + * @param callbacks The callback to trigger when the user has indicated that she would like to + * dismiss this view. + */ + public SwipeDismissTouchListener(View view, Object token, DismissCallbacks callbacks) { + ViewConfiguration vc = ViewConfiguration.get(view.getContext()); + mSlop = vc.getScaledTouchSlop(); + mMinFlingVelocity = vc.getScaledMinimumFlingVelocity() * 16; + mMaxFlingVelocity = vc.getScaledMaximumFlingVelocity(); + mAnimationTime = view.getContext().getResources().getInteger( + android.R.integer.config_shortAnimTime); + mView = view; + mToken = token; + mCallbacks = callbacks; + } + + @Override + public boolean onTouch(View view, MotionEvent motionEvent) { + // offset because the view is translated during swipe + motionEvent.offsetLocation(mTranslationX, 0); + + if (mViewWidth < 2) { + mViewWidth = mView.getWidth(); + } + + switch (motionEvent.getActionMasked()) { + case MotionEvent.ACTION_DOWN: { + // TODO: ensure this is a finger, and set a flag + mDownX = motionEvent.getRawX(); + mDownY = motionEvent.getRawY(); + if (mCallbacks.canDismiss(mToken)) { + mVelocityTracker = VelocityTracker.obtain(); + mVelocityTracker.addMovement(motionEvent); + } + return true; + } + + case MotionEvent.ACTION_UP: { + if (mVelocityTracker == null) { + break; + } + + float deltaX = motionEvent.getRawX() - mDownX; + mVelocityTracker.addMovement(motionEvent); + mVelocityTracker.computeCurrentVelocity(1000); + float velocityX = mVelocityTracker.getXVelocity(); + float absVelocityX = Math.abs(velocityX); + float absVelocityY = Math.abs(mVelocityTracker.getYVelocity()); + boolean dismiss = false; + boolean dismissRight = false; + if (Math.abs(deltaX) > mViewWidth / 2 && mSwiping) { + dismiss = true; + dismissRight = deltaX > 0; + } else if (mMinFlingVelocity <= absVelocityX && absVelocityX <= mMaxFlingVelocity + && absVelocityY < absVelocityX + && absVelocityY < absVelocityX && mSwiping) { + // dismiss only if flinging in the same direction as dragging + dismiss = (velocityX < 0) == (deltaX < 0); + dismissRight = mVelocityTracker.getXVelocity() > 0; + } + if (dismiss) { + // dismiss + final boolean finalDismissRight = dismissRight; + ViewCompat.animate(mView) + .translationX(dismissRight ? mViewWidth : -mViewWidth) + .alpha(0) + .setDuration(mAnimationTime) + .setListener(new ViewPropertyAnimatorListener() { + @Override + public void onAnimationStart(View view) { + + } + + @Override + public void onAnimationEnd(View view) { + performDismiss(finalDismissRight); + } + + @Override + public void onAnimationCancel(View view) { + + } + }); + } else if (mSwiping) { + // cancel + ViewCompat.animate(mView) + .translationX(0) + .alpha(1) + .setDuration(mAnimationTime) + .setListener(null); + } + mVelocityTracker.recycle(); + mVelocityTracker = null; + mTranslationX = 0; + mDownX = 0; + mDownY = 0; + mSwiping = false; + break; + } + + case MotionEvent.ACTION_CANCEL: { + if (mVelocityTracker == null) { + break; + } + + ViewCompat.animate(mView) + .translationX(0) + .alpha(1) + .setDuration(mAnimationTime) + .setListener(null); + mVelocityTracker.recycle(); + mVelocityTracker = null; + mTranslationX = 0; + mDownX = 0; + mDownY = 0; + mSwiping = false; + break; + } + + case MotionEvent.ACTION_MOVE: { + if (mVelocityTracker == null) { + break; + } + + mVelocityTracker.addMovement(motionEvent); + float deltaX = motionEvent.getRawX() - mDownX; + float deltaY = motionEvent.getRawY() - mDownY; + if (Math.abs(deltaX) > mSlop && Math.abs(deltaY) < Math.abs(deltaX) / 2) { + mSwiping = true; + mSwipingSlop = (deltaX > 0 ? mSlop : -mSlop); + mView.getParent().requestDisallowInterceptTouchEvent(true); + + // Cancel listview's touch + MotionEvent cancelEvent = MotionEvent.obtain(motionEvent); + cancelEvent.setAction(MotionEvent.ACTION_CANCEL | + (motionEvent.getActionIndex() << + MotionEvent.ACTION_POINTER_INDEX_SHIFT)); + mView.onTouchEvent(cancelEvent); + cancelEvent.recycle(); + } + + if (mSwiping) { + mTranslationX = deltaX; + ViewCompat.setTranslationX(mView, deltaX - mSwipingSlop); + // TODO: use an ease-out interpolator or such + ViewCompat.setAlpha(mView, Math.max(0f, Math.min(1f, + 1f - 2f * Math.abs(deltaX) / mViewWidth))); + return true; + } + break; + } + } + return false; + } + + private void performDismiss(boolean isSwipingRight) { + mCallbacks.onDismiss(mView, mToken, isSwipingRight); + } +} \ No newline at end of file From 459256f77c5e1addd258be86babe36fcfa524a5d Mon Sep 17 00:00:00 2001 From: GaidamakUA Date: Tue, 4 Aug 2015 15:56:49 +0300 Subject: [PATCH 15/32] Gradle SDK manager plugin --- build.gradle | 3 +++ 1 file changed, 3 insertions(+) diff --git a/build.gradle b/build.gradle index 73a4bc4761..c492d0fbec 100644 --- a/build.gradle +++ b/build.gradle @@ -4,9 +4,12 @@ buildscript { } dependencies { classpath 'com.android.tools.build:gradle:1.1.0' + classpath 'com.jakewharton.sdkmanager:gradle-plugin:0.12.+' } } +apply plugin: 'android-sdk-manager' + allprojects { repositories { mavenCentral() From d823b72871ad14a81049ea7c629c8824a53ee167 Mon Sep 17 00:00:00 2001 From: GaidamakUA Date: Tue, 4 Aug 2015 20:50:20 +0300 Subject: [PATCH 16/32] Google repositary independent build --- OsmAnd/build.gradle | 6 +- OsmAnd/project.properties | 1 + .../drawable-xxhdpi/map_target_point.png.orig | Bin 2427 -> 0 bytes build.gradle | 3 - design/.gitignore | 1 + design/build.gradle | 25 ++ design/libs/android-support-design.jar | Bin 0 -> 212540 bytes design/proguard-rules.pro | 17 ++ .../support/design/ApplicationTest.java | 13 + design/src/main/AndroidManifest.xml | 5 + design/src/main/res/anim/fab_in.xml | 30 ++ design/src/main/res/anim/fab_out.xml | 30 ++ design/src/main/res/anim/snackbar_in.xml | 20 ++ design/src/main/res/anim/snackbar_out.xml | 20 ++ .../src/main/res/drawable/fab_background.xml | 21 ++ .../main/res/drawable/snackbar_background.xml | 22 ++ .../res/layout-sw600dp/layout_snackbar.xml | 23 ++ .../res/layout/design_navigation_item.xml | 26 ++ .../layout/design_navigation_item_header.xml | 21 ++ .../design_navigation_item_separator.xml | 25 ++ .../design_navigation_item_subheader.xml | 25 ++ .../res/layout/design_navigation_menu.xml | 25 ++ .../src/main/res/layout/layout_snackbar.xml | 23 ++ .../res/layout/layout_snackbar_include.xml | 49 ++++ .../src/main/res/layout/layout_tab_icon.xml | 21 ++ .../src/main/res/layout/layout_tab_text.xml | 23 ++ design/src/main/res/values-land/styles.xml | 25 ++ design/src/main/res/values-sw600dp/config.xml | 22 ++ design/src/main/res/values-sw600dp/dimens.xml | 29 ++ design/src/main/res/values-sw600dp/styles.xml | 25 ++ design/src/main/res/values-v21/dimens.xml | 19 ++ design/src/main/res/values/attrs.xml | 260 ++++++++++++++++++ design/src/main/res/values/colors.xml | 40 +++ design/src/main/res/values/config.xml | 22 ++ design/src/main/res/values/dimens.xml | 56 ++++ design/src/main/res/values/ids.xml | 22 ++ design/src/main/res/values/strings.xml | 21 ++ design/src/main/res/values/styles.xml | 116 ++++++++ .../appcompat/libs/android-support-v4.jar | Bin 1184450 -> 1184670 bytes .../libs/android-support-v7-appcompat.jar | Bin 586330 -> 586153 bytes .../appcompat/res/values-v21/styles_base.xml | 3 + .../appcompat/res/values/styles.xml | 4 +- .../appcompat/res/values/themes_base.xml | 2 +- import-summary.txt | 35 +++ settings.gradle | 2 +- 45 files changed, 1167 insertions(+), 11 deletions(-) delete mode 100644 OsmAnd/res/drawable-xxhdpi/map_target_point.png.orig create mode 100644 design/.gitignore create mode 100644 design/build.gradle create mode 100644 design/libs/android-support-design.jar create mode 100644 design/proguard-rules.pro create mode 100644 design/src/androidTest/java/android/support/design/ApplicationTest.java create mode 100644 design/src/main/AndroidManifest.xml create mode 100644 design/src/main/res/anim/fab_in.xml create mode 100644 design/src/main/res/anim/fab_out.xml create mode 100644 design/src/main/res/anim/snackbar_in.xml create mode 100644 design/src/main/res/anim/snackbar_out.xml create mode 100644 design/src/main/res/drawable/fab_background.xml create mode 100644 design/src/main/res/drawable/snackbar_background.xml create mode 100644 design/src/main/res/layout-sw600dp/layout_snackbar.xml create mode 100644 design/src/main/res/layout/design_navigation_item.xml create mode 100644 design/src/main/res/layout/design_navigation_item_header.xml create mode 100644 design/src/main/res/layout/design_navigation_item_separator.xml create mode 100644 design/src/main/res/layout/design_navigation_item_subheader.xml create mode 100644 design/src/main/res/layout/design_navigation_menu.xml create mode 100644 design/src/main/res/layout/layout_snackbar.xml create mode 100644 design/src/main/res/layout/layout_snackbar_include.xml create mode 100644 design/src/main/res/layout/layout_tab_icon.xml create mode 100644 design/src/main/res/layout/layout_tab_text.xml create mode 100644 design/src/main/res/values-land/styles.xml create mode 100644 design/src/main/res/values-sw600dp/config.xml create mode 100644 design/src/main/res/values-sw600dp/dimens.xml create mode 100644 design/src/main/res/values-sw600dp/styles.xml create mode 100644 design/src/main/res/values-v21/dimens.xml create mode 100644 design/src/main/res/values/attrs.xml create mode 100644 design/src/main/res/values/colors.xml create mode 100644 design/src/main/res/values/config.xml create mode 100644 design/src/main/res/values/dimens.xml create mode 100644 design/src/main/res/values/ids.xml create mode 100644 design/src/main/res/values/strings.xml create mode 100644 design/src/main/res/values/styles.xml create mode 100644 import-summary.txt diff --git a/OsmAnd/build.gradle b/OsmAnd/build.gradle index f7d2ca58f0..f3d76c6c27 100644 --- a/OsmAnd/build.gradle +++ b/OsmAnd/build.gradle @@ -301,7 +301,7 @@ repositories { dependencies { compile project(path: ":OsmAnd-java", configuration: "android") -// compile project(":eclipse-compile:appcompat") + compile project(":design") compile fileTree( dir: "libs", include: ["*.jar"], @@ -311,12 +311,12 @@ dependencies { "OsmAndCore_android.jar", "OsmAndCore_wrapper.jar"]) // compile "com.github.ksoichiro:android-observablescrollview:1.5.0" - compile "com.android.support:appcompat-v7:22.2.1" +// compile "com.android.support:appcompat-v7:22.2.1" // compile "com.github.shell-software:fab:1.0.5" legacyCompile "net.osmand:OsmAndCore_android:0.1-SNAPSHOT@jar" qtcoredebugCompile "net.osmand:OsmAndCore_androidNativeDebug:0.1-SNAPSHOT@aar" qtcoredebugCompile "net.osmand:OsmAndCore_android:0.1-SNAPSHOT@aar" qtcoreCompile "net.osmand:OsmAndCore_androidNativeRelease:0.1-SNAPSHOT@aar" qtcoreCompile "net.osmand:OsmAndCore_android:0.1-SNAPSHOT@aar" - compile 'com.android.support:design:22.2.1' +// compile 'com.android.support:design:22.2.1' } diff --git a/OsmAnd/project.properties b/OsmAnd/project.properties index fd62b55da2..734c18df89 100644 --- a/OsmAnd/project.properties +++ b/OsmAnd/project.properties @@ -13,3 +13,4 @@ split.density=false target=android-21 dex.force.jumbo=true android.library.reference.1=../eclipse-compile/appcompat +android.library.reference.2=../design diff --git a/OsmAnd/res/drawable-xxhdpi/map_target_point.png.orig b/OsmAnd/res/drawable-xxhdpi/map_target_point.png.orig deleted file mode 100644 index f48d52c6ef91d17d1e2967942c79d356fa722cb0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2427 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Ⓢ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 Fundamentals + */ +public class ApplicationTest extends ApplicationTestCase { + public ApplicationTest() { + super(Application.class); + } +} \ No newline at end of file diff --git a/design/src/main/AndroidManifest.xml b/design/src/main/AndroidManifest.xml new file mode 100644 index 0000000000..012c7bf894 --- /dev/null +++ b/design/src/main/AndroidManifest.xml @@ -0,0 +1,5 @@ + + + + diff --git a/design/src/main/res/anim/fab_in.xml b/design/src/main/res/anim/fab_in.xml new file mode 100644 index 0000000000..294050f549 --- /dev/null +++ b/design/src/main/res/anim/fab_in.xml @@ -0,0 +1,30 @@ + + + + + + + + + + diff --git a/design/src/main/res/anim/fab_out.xml b/design/src/main/res/anim/fab_out.xml new file mode 100644 index 0000000000..0f80a9ab0b --- /dev/null +++ b/design/src/main/res/anim/fab_out.xml @@ -0,0 +1,30 @@ + + + + + + + + + + diff --git a/design/src/main/res/anim/snackbar_in.xml b/design/src/main/res/anim/snackbar_in.xml new file mode 100644 index 0000000000..a40524c2bd --- /dev/null +++ b/design/src/main/res/anim/snackbar_in.xml @@ -0,0 +1,20 @@ + + + + diff --git a/design/src/main/res/anim/snackbar_out.xml b/design/src/main/res/anim/snackbar_out.xml new file mode 100644 index 0000000000..eb55cc0e5e --- /dev/null +++ b/design/src/main/res/anim/snackbar_out.xml @@ -0,0 +1,20 @@ + + + + \ No newline at end of file diff --git a/design/src/main/res/drawable/fab_background.xml b/design/src/main/res/drawable/fab_background.xml new file mode 100644 index 0000000000..43afd5c9ac --- /dev/null +++ b/design/src/main/res/drawable/fab_background.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file diff --git a/design/src/main/res/drawable/snackbar_background.xml b/design/src/main/res/drawable/snackbar_background.xml new file mode 100644 index 0000000000..739b516713 --- /dev/null +++ b/design/src/main/res/drawable/snackbar_background.xml @@ -0,0 +1,22 @@ + + + + + + + \ No newline at end of file diff --git a/design/src/main/res/layout-sw600dp/layout_snackbar.xml b/design/src/main/res/layout-sw600dp/layout_snackbar.xml new file mode 100644 index 0000000000..b68395ab65 --- /dev/null +++ b/design/src/main/res/layout-sw600dp/layout_snackbar.xml @@ -0,0 +1,23 @@ + + + + \ No newline at end of file diff --git a/design/src/main/res/layout/design_navigation_item.xml b/design/src/main/res/layout/design_navigation_item.xml new file mode 100644 index 0000000000..59ee05c95d --- /dev/null +++ b/design/src/main/res/layout/design_navigation_item.xml @@ -0,0 +1,26 @@ + + + diff --git a/design/src/main/res/layout/design_navigation_item_header.xml b/design/src/main/res/layout/design_navigation_item_header.xml new file mode 100644 index 0000000000..988600766c --- /dev/null +++ b/design/src/main/res/layout/design_navigation_item_header.xml @@ -0,0 +1,21 @@ + + + diff --git a/design/src/main/res/layout/design_navigation_item_separator.xml b/design/src/main/res/layout/design_navigation_item_separator.xml new file mode 100644 index 0000000000..938a3fbdd2 --- /dev/null +++ b/design/src/main/res/layout/design_navigation_item_separator.xml @@ -0,0 +1,25 @@ + + + + + + + diff --git a/design/src/main/res/layout/design_navigation_item_subheader.xml b/design/src/main/res/layout/design_navigation_item_subheader.xml new file mode 100644 index 0000000000..707ec6aea3 --- /dev/null +++ b/design/src/main/res/layout/design_navigation_item_subheader.xml @@ -0,0 +1,25 @@ + + + diff --git a/design/src/main/res/layout/design_navigation_menu.xml b/design/src/main/res/layout/design_navigation_menu.xml new file mode 100644 index 0000000000..a40f2eb536 --- /dev/null +++ b/design/src/main/res/layout/design_navigation_menu.xml @@ -0,0 +1,25 @@ + + + diff --git a/design/src/main/res/layout/layout_snackbar.xml b/design/src/main/res/layout/layout_snackbar.xml new file mode 100644 index 0000000000..604aafc037 --- /dev/null +++ b/design/src/main/res/layout/layout_snackbar.xml @@ -0,0 +1,23 @@ + + + + \ No newline at end of file diff --git a/design/src/main/res/layout/layout_snackbar_include.xml b/design/src/main/res/layout/layout_snackbar_include.xml new file mode 100644 index 0000000000..0cf2002d88 --- /dev/null +++ b/design/src/main/res/layout/layout_snackbar_include.xml @@ -0,0 +1,49 @@ + + + + + + + + + + \ No newline at end of file diff --git a/design/src/main/res/layout/layout_tab_icon.xml b/design/src/main/res/layout/layout_tab_icon.xml new file mode 100644 index 0000000000..6464d1fcd2 --- /dev/null +++ b/design/src/main/res/layout/layout_tab_icon.xml @@ -0,0 +1,21 @@ + + + + \ No newline at end of file diff --git a/design/src/main/res/layout/layout_tab_text.xml b/design/src/main/res/layout/layout_tab_text.xml new file mode 100644 index 0000000000..a83bb3d107 --- /dev/null +++ b/design/src/main/res/layout/layout_tab_text.xml @@ -0,0 +1,23 @@ + + + + \ No newline at end of file diff --git a/design/src/main/res/values-land/styles.xml b/design/src/main/res/values-land/styles.xml new file mode 100644 index 0000000000..622a5e361e --- /dev/null +++ b/design/src/main/res/values-land/styles.xml @@ -0,0 +1,25 @@ + + + + + + + + diff --git a/design/src/main/res/values-sw600dp/config.xml b/design/src/main/res/values-sw600dp/config.xml new file mode 100644 index 0000000000..baac13bf28 --- /dev/null +++ b/design/src/main/res/values-sw600dp/config.xml @@ -0,0 +1,22 @@ + + + + + + 1 + + \ No newline at end of file diff --git a/design/src/main/res/values-sw600dp/dimens.xml b/design/src/main/res/values-sw600dp/dimens.xml new file mode 100644 index 0000000000..37c3ff5a29 --- /dev/null +++ b/design/src/main/res/values-sw600dp/dimens.xml @@ -0,0 +1,29 @@ + + + + + + 160dp + + 320dp + 576dp + @dimen/snackbar_padding_vertical + 24dp + 2dp + 0dp + + \ No newline at end of file diff --git a/design/src/main/res/values-sw600dp/styles.xml b/design/src/main/res/values-sw600dp/styles.xml new file mode 100644 index 0000000000..622a5e361e --- /dev/null +++ b/design/src/main/res/values-sw600dp/styles.xml @@ -0,0 +1,25 @@ + + + + + + + + diff --git a/design/src/main/res/values-v21/dimens.xml b/design/src/main/res/values-v21/dimens.xml new file mode 100644 index 0000000000..2a67937bb1 --- /dev/null +++ b/design/src/main/res/values-v21/dimens.xml @@ -0,0 +1,19 @@ + + + + 24dp + diff --git a/design/src/main/res/values/attrs.xml b/design/src/main/res/values/attrs.xml new file mode 100644 index 0000000000..e4c1bf02c8 --- /dev/null +++ b/design/src/main/res/values/attrs.xml @@ -0,0 +1,260 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/design/src/main/res/values/colors.xml b/design/src/main/res/values/colors.xml new file mode 100644 index 0000000000..216ad79930 --- /dev/null +++ b/design/src/main/res/values/colors.xml @@ -0,0 +1,40 @@ + + + + + + + #2EFFFFFF + + #1AFFFFFF + + #0F000000 + + #0A000000 + + + #44000000 + + #14000000 + + @android:color/transparent + + #FFDD2C00 + + #323232 + + \ No newline at end of file diff --git a/design/src/main/res/values/config.xml b/design/src/main/res/values/config.xml new file mode 100644 index 0000000000..2ff276a217 --- /dev/null +++ b/design/src/main/res/values/config.xml @@ -0,0 +1,22 @@ + + + + + + 2 + + \ No newline at end of file diff --git a/design/src/main/res/values/dimens.xml b/design/src/main/res/values/dimens.xml new file mode 100644 index 0000000000..45e83e6088 --- /dev/null +++ b/design/src/main/res/values/dimens.xml @@ -0,0 +1,56 @@ + + + + + 8dp + 6dp + 24dp + 56dp + 40dp + 0.5dp + + 320dp + 12dp + 32dp + 24dp + 8dp + 0dp + 8dp + + 72dp + 264dp + + -1px + -1px + 2dp + 0dp + + 12dp + 14dp + 24dp + + + 0dp + + 128dp + + 14sp + + 4dp + + diff --git a/design/src/main/res/values/ids.xml b/design/src/main/res/values/ids.xml new file mode 100644 index 0000000000..91acfd033f --- /dev/null +++ b/design/src/main/res/values/ids.xml @@ -0,0 +1,22 @@ + + + + + + + + diff --git a/design/src/main/res/values/strings.xml b/design/src/main/res/values/strings.xml new file mode 100644 index 0000000000..4c02de1609 --- /dev/null +++ b/design/src/main/res/values/strings.xml @@ -0,0 +1,21 @@ + + + + + android.support.design.widget.AppBarLayout$ScrollingViewBehavior + + diff --git a/design/src/main/res/values/styles.xml b/design/src/main/res/values/styles.xml new file mode 100644 index 0000000000..067846c0b1 --- /dev/null +++ b/design/src/main/res/values/styles.xml @@ -0,0 +1,116 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/eclipse-compile/appcompat/libs/android-support-v4.jar b/eclipse-compile/appcompat/libs/android-support-v4.jar index e74b0d77d2b7466340e3e8aef2877dbbc3f28598..7b78bb8ee86de34f9f1a61d7cbcec44123793ff7 100644 GIT binary patch delta 86866 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 z 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œwtvU4PxGde|OjJK=8eQpZVRzi7OxUc(IfxMC&P%#9a1}uqvAXJ@Khl zYWD%^^y|d}x`s~Y3KEmu=i|ZrJN(SW{p=Znx^_06)bVQDmU#FujiHP9nJe1sC4%3a zg~JE?+eXVKYTIL_0&2uRT`Vh2F5)vZ(G?}g11K~@ZNnA`m1eh1{(^@|oy rnJcJHOOMV&WT5r)q_n=$85Zst?}zBc$LEagjBU{?zCK9{ocQnmn!2H9 diff --git a/eclipse-compile/appcompat/libs/android-support-v7-appcompat.jar b/eclipse-compile/appcompat/libs/android-support-v7-appcompat.jar index b9dca8a7890a66210d84d6012d4681c10f457355..830a4936a6bafd840f83da208def2f0353d62e97 100644 GIT binary patch delta 70417 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

HI140qOsUdCw7t=j^8Ei~_LK(Nn&4 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 N?ta(;2?Tr6{tqX8=;{Cf diff --git a/eclipse-compile/appcompat/res/values-v21/styles_base.xml b/eclipse-compile/appcompat/res/values-v21/styles_base.xml index 173a01c5d5..241cb04c59 100644 --- a/eclipse-compile/appcompat/res/values-v21/styles_base.xml +++ b/eclipse-compile/appcompat/res/values-v21/styles_base.xml @@ -71,6 +71,7 @@ + @@ -173,6 +174,8 @@ + - + + + diff --git a/eclipse-compile/design/res/values-sw600dp/config.xml b/eclipse-compile/design/res/values-sw600dp/config.xml new file mode 100644 index 0000000000..baac13bf28 --- /dev/null +++ b/eclipse-compile/design/res/values-sw600dp/config.xml @@ -0,0 +1,22 @@ + + + + + + 1 + + \ No newline at end of file diff --git a/eclipse-compile/design/res/values-sw600dp/dimens.xml b/eclipse-compile/design/res/values-sw600dp/dimens.xml new file mode 100644 index 0000000000..37c3ff5a29 --- /dev/null +++ b/eclipse-compile/design/res/values-sw600dp/dimens.xml @@ -0,0 +1,29 @@ + + + + + + 160dp + + 320dp + 576dp + @dimen/snackbar_padding_vertical + 24dp + 2dp + 0dp + + \ No newline at end of file diff --git a/eclipse-compile/design/res/values-sw600dp/styles.xml b/eclipse-compile/design/res/values-sw600dp/styles.xml new file mode 100644 index 0000000000..622a5e361e --- /dev/null +++ b/eclipse-compile/design/res/values-sw600dp/styles.xml @@ -0,0 +1,25 @@ + + + + + + + + diff --git a/eclipse-compile/design/res/values-v21/dimens.xml b/eclipse-compile/design/res/values-v21/dimens.xml new file mode 100644 index 0000000000..2a67937bb1 --- /dev/null +++ b/eclipse-compile/design/res/values-v21/dimens.xml @@ -0,0 +1,19 @@ + + + + 24dp + diff --git a/eclipse-compile/design/res/values/attrs.xml b/eclipse-compile/design/res/values/attrs.xml new file mode 100644 index 0000000000..e4c1bf02c8 --- /dev/null +++ b/eclipse-compile/design/res/values/attrs.xml @@ -0,0 +1,260 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/eclipse-compile/design/res/values/colors.xml b/eclipse-compile/design/res/values/colors.xml new file mode 100644 index 0000000000..216ad79930 --- /dev/null +++ b/eclipse-compile/design/res/values/colors.xml @@ -0,0 +1,40 @@ + + + + + + + #2EFFFFFF + + #1AFFFFFF + + #0F000000 + + #0A000000 + + + #44000000 + + #14000000 + + @android:color/transparent + + #FFDD2C00 + + #323232 + + \ No newline at end of file diff --git a/eclipse-compile/design/res/values/config.xml b/eclipse-compile/design/res/values/config.xml new file mode 100644 index 0000000000..2ff276a217 --- /dev/null +++ b/eclipse-compile/design/res/values/config.xml @@ -0,0 +1,22 @@ + + + + + + 2 + + \ No newline at end of file diff --git a/eclipse-compile/design/res/values/dimens.xml b/eclipse-compile/design/res/values/dimens.xml new file mode 100644 index 0000000000..45e83e6088 --- /dev/null +++ b/eclipse-compile/design/res/values/dimens.xml @@ -0,0 +1,56 @@ + + + + + 8dp + 6dp + 24dp + 56dp + 40dp + 0.5dp + + 320dp + 12dp + 32dp + 24dp + 8dp + 0dp + 8dp + + 72dp + 264dp + + -1px + -1px + 2dp + 0dp + + 12dp + 14dp + 24dp + + + 0dp + + 128dp + + 14sp + + 4dp + + diff --git a/eclipse-compile/design/res/values/ids.xml b/eclipse-compile/design/res/values/ids.xml new file mode 100644 index 0000000000..91acfd033f --- /dev/null +++ b/eclipse-compile/design/res/values/ids.xml @@ -0,0 +1,22 @@ + + + + + + + + diff --git a/eclipse-compile/design/res/values/strings.xml b/eclipse-compile/design/res/values/strings.xml new file mode 100644 index 0000000000..4c02de1609 --- /dev/null +++ b/eclipse-compile/design/res/values/strings.xml @@ -0,0 +1,21 @@ + + + + + android.support.design.widget.AppBarLayout$ScrollingViewBehavior + + diff --git a/eclipse-compile/design/res/values/styles.xml b/eclipse-compile/design/res/values/styles.xml new file mode 100644 index 0000000000..067846c0b1 --- /dev/null +++ b/eclipse-compile/design/res/values/styles.xml @@ -0,0 +1,116 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/settings.gradle b/settings.gradle index f3187f5fa4..0bf8c486e5 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,4 +1,4 @@ -include ':OsmAnd-java', ':design' +include ':OsmAnd-java', ':eclipse-compile:design' include ':OsmAnd' include ':eclipse-compile:appcompat' include ':plugins:OsmAnd-AddressPlugin' From cce3a39b42e8e927f82502646bd1c884a0ba0238 Mon Sep 17 00:00:00 2001 From: GaidamakUA Date: Thu, 6 Aug 2015 10:55:21 +0300 Subject: [PATCH 24/32] DashPluginsFragment indentation fix --- .../plus/dashboard/DashPluginsFragment.java | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/dashboard/DashPluginsFragment.java b/OsmAnd/src/net/osmand/plus/dashboard/DashPluginsFragment.java index 9b40fb51b7..65b5cba298 100644 --- a/OsmAnd/src/net/osmand/plus/dashboard/DashPluginsFragment.java +++ b/OsmAnd/src/net/osmand/plus/dashboard/DashPluginsFragment.java @@ -35,12 +35,12 @@ public class DashPluginsFragment extends DashBaseFragment { private View.OnClickListener getListener(final OsmandPlugin plugin) { return new View.OnClickListener() { - @Override - public void onClick(View view) { - startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(plugin.getInstallURL()))); - closeDashboard(); - } - }; + @Override + public void onClick(View view) { + startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(plugin.getInstallURL()))); + closeDashboard(); + } + }; } private final View.OnClickListener pluginDetailsListener(final OsmandPlugin plugin) { @@ -85,7 +85,7 @@ public class DashPluginsFragment extends DashBaseFragment { private void addPluginsToLimit(Iterator it, int l) { - while(plugins.size() < l && it.hasNext()) { + while (plugins.size() < l && it.hasNext()) { OsmandPlugin plugin = it.next(); if (plugin instanceof OsmandDevelopmentPlugin) { continue; @@ -104,7 +104,7 @@ public class DashPluginsFragment extends DashBaseFragment { inflatePluginView(inflater, pluginsContainer, p); } } - + private void updatePluginState(View pluginView, OsmandPlugin plugin) { CompoundButton enableDisableButton = (CompoundButton) pluginView.findViewById(R.id.plugin_enable_disable); Button getButton = (Button) pluginView.findViewById(R.id.get_plugin); @@ -124,7 +124,7 @@ public class DashPluginsFragment extends DashBaseFragment { logoView.setBackgroundResource(R.drawable.bg_plugin_logo_enabled); } else { TypedArray attributes = getActivity().getTheme().obtainStyledAttributes( - new int[] { R.attr.bg_plugin_logo_disabled }); + new int[]{R.attr.bg_plugin_logo_disabled}); logoView.setBackgroundDrawable(attributes.getDrawable(0)); attributes.recycle(); } From e009aa597235f00dcc6bb446399140d476e08231 Mon Sep 17 00:00:00 2001 From: GaidamakUA Date: Fri, 7 Aug 2015 12:19:31 +0300 Subject: [PATCH 25/32] Settings fragment added and DashboardOnMap refactoring. Review needed. --- .../layout/dashboard_settings_dialog_item.xml | 22 ++ OsmAnd/res/values/strings.xml | 1 + .../plus/dashboard/DashBaseFragment.java | 4 +- .../dashboard/DashChooseAppDirFragment.java | 10 - .../dashboard/DashNavigationFragment.java | 5 - .../plus/dashboard/DashRateUsFragment.java | 109 +++--- .../osmand/plus/dashboard/DashboardOnMap.java | 358 ++++++++++-------- .../dashboard/tools/DashFragmentData.java | 24 ++ .../DashboardSettingsDialogFragment.java | 109 ++++++ .../dashboard/tools/TransactionBuilder.java | 74 ++++ .../development/DashSimulateFragment.java | 3 - 11 files changed, 489 insertions(+), 230 deletions(-) create mode 100644 OsmAnd/res/layout/dashboard_settings_dialog_item.xml create mode 100644 OsmAnd/src/net/osmand/plus/dashboard/tools/DashFragmentData.java create mode 100644 OsmAnd/src/net/osmand/plus/dashboard/tools/DashboardSettingsDialogFragment.java create mode 100644 OsmAnd/src/net/osmand/plus/dashboard/tools/TransactionBuilder.java diff --git a/OsmAnd/res/layout/dashboard_settings_dialog_item.xml b/OsmAnd/res/layout/dashboard_settings_dialog_item.xml new file mode 100644 index 0000000000..2acc87ad74 --- /dev/null +++ b/OsmAnd/res/layout/dashboard_settings_dialog_item.xml @@ -0,0 +1,22 @@ + + + + + + + + diff --git a/OsmAnd/res/values/strings.xml b/OsmAnd/res/values/strings.xml index 4635962bfb..b208d84947 100644 --- a/OsmAnd/res/values/strings.xml +++ b/OsmAnd/res/values/strings.xml @@ -2226,4 +2226,5 @@ Afghanistan, Albania, Algeria, Andorra, Angola, Anguilla, Antigua and Barbuda, A Successfully uploaded {0}/{1} Try again Error: {0} + Dashboard options diff --git a/OsmAnd/src/net/osmand/plus/dashboard/DashBaseFragment.java b/OsmAnd/src/net/osmand/plus/dashboard/DashBaseFragment.java index 894db9aee8..31ba8506c8 100644 --- a/OsmAnd/src/net/osmand/plus/dashboard/DashBaseFragment.java +++ b/OsmAnd/src/net/osmand/plus/dashboard/DashBaseFragment.java @@ -174,7 +174,9 @@ public abstract class DashBaseFragment extends Fragment { @Override public void onDismiss() { - dashboardOnMap.hideFragmentByTag(fragmentTag); + dashboardOnMap.blacklistFragmentByTag(fragmentTag); + ViewCompat.setTranslationX(fragmentView, 0); + ViewCompat.setAlpha(fragmentView, 1); Snackbar.make(parentView, "Card was hidden", Snackbar.LENGTH_LONG) .setAction("UNDO", new View.OnClickListener() { @Override diff --git a/OsmAnd/src/net/osmand/plus/dashboard/DashChooseAppDirFragment.java b/OsmAnd/src/net/osmand/plus/dashboard/DashChooseAppDirFragment.java index ecfc8c06d6..7cc15c2974 100644 --- a/OsmAnd/src/net/osmand/plus/dashboard/DashChooseAppDirFragment.java +++ b/OsmAnd/src/net/osmand/plus/dashboard/DashChooseAppDirFragment.java @@ -66,14 +66,6 @@ public class DashChooseAppDirFragment extends DashBaseFragment { public View initView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { return fragment.initView(inflater, container, savedInstanceState); } - - public static boolean isDashNeeded(OsmandSettings settings) { - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) { - return false; - } - return !settings.isExternalStorageDirectorySpecifiedV19(); - } - public static class ChooseAppDirFragment { public static final int VERSION_DEFAULTLOCATION_CHANGED = 19; @@ -121,8 +113,6 @@ public class DashChooseAppDirFragment extends DashBaseFragment { locationPath.setText(R.string.storage_directory_multiuser); } else if (type == OsmandSettings.EXTERNAL_STORAGE_TYPE_SPECIFIED) { locationPath.setText(R.string.storage_directory_manual); - } else if (type == OsmandSettings.EXTERNAL_STORAGE_TYPE_SPECIFIED) { - locationPath.setText(R.string.storage_directory_manual); } locationDesc.setText(selectedFile.getAbsolutePath() + " \u2022 " + getFreeSpace(selectedFile)); boolean copyFiles = !currentAppFile.getAbsolutePath().equals(selectedFile.getAbsolutePath()) && !mapsCopied; diff --git a/OsmAnd/src/net/osmand/plus/dashboard/DashNavigationFragment.java b/OsmAnd/src/net/osmand/plus/dashboard/DashNavigationFragment.java index f4589b2328..dff915aca2 100644 --- a/OsmAnd/src/net/osmand/plus/dashboard/DashNavigationFragment.java +++ b/OsmAnd/src/net/osmand/plus/dashboard/DashNavigationFragment.java @@ -14,19 +14,14 @@ import android.widget.LinearLayout; import android.widget.TextView; import net.osmand.plus.R; -import net.osmand.plus.TargetPointsHelper.TargetPoint; import net.osmand.plus.activities.MapActivity; import net.osmand.plus.activities.ShowRouteInfoActivity; import net.osmand.plus.routing.RoutingHelper; -import java.util.ArrayList; -import java.util.List; - /** */ public class DashNavigationFragment extends DashBaseFragment { public static final String TAG = "DASH_NAVIGATION_FRAGMENT"; - List points = new ArrayList(); @Override public View initView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { diff --git a/OsmAnd/src/net/osmand/plus/dashboard/DashRateUsFragment.java b/OsmAnd/src/net/osmand/plus/dashboard/DashRateUsFragment.java index 290af35eb1..a9a47d8fc2 100644 --- a/OsmAnd/src/net/osmand/plus/dashboard/DashRateUsFragment.java +++ b/OsmAnd/src/net/osmand/plus/dashboard/DashRateUsFragment.java @@ -14,6 +14,7 @@ import android.widget.TextView; import net.osmand.plus.OsmandSettings; import net.osmand.plus.R; +import net.osmand.plus.activities.MapActivity; import java.util.Calendar; @@ -50,60 +51,62 @@ public class DashRateUsFragment extends DashBaseFragment { return view; } - public static boolean shouldShow(OsmandSettings settings) { - if(!settings.LAST_DISPLAY_TIME.isSet()) { - settings.LAST_DISPLAY_TIME.set(System.currentTimeMillis()); - } - DashRateUsFragment.settings = settings; - long lastDisplayTimeInMillis = settings.LAST_DISPLAY_TIME.get(); - int numberOfApplicationRuns = settings.NUMBER_OF_APPLICATION_STARTS.get(); - RateUsState state = settings.RATE_US_STATE.get(); + public static boolean shouldShow(OsmandSettings settings) { + if(!settings.LAST_DISPLAY_TIME.isSet()) { + settings.LAST_DISPLAY_TIME.set(System.currentTimeMillis()); + } + DashRateUsFragment.settings = settings; + long lastDisplayTimeInMillis = settings.LAST_DISPLAY_TIME.get(); + int numberOfApplicationRuns = settings.NUMBER_OF_APPLICATION_STARTS.get(); + RateUsState state = settings.RATE_US_STATE.get(); - Calendar modifiedTime = Calendar.getInstance(); - Calendar lastDisplayTime = Calendar.getInstance(); - lastDisplayTime.setTimeInMillis(lastDisplayTimeInMillis); + Calendar modifiedTime = Calendar.getInstance(); + Calendar lastDisplayTime = Calendar.getInstance(); + lastDisplayTime.setTimeInMillis(lastDisplayTimeInMillis); - int bannerFreeRuns = 0; + int bannerFreeRuns = 0; - Log.v(TAG, "state=" + state + "; lastDisplayTimeInMillis=" + lastDisplayTimeInMillis - + "; numberOfApplicationRuns=" + numberOfApplicationRuns); + Log.v(TAG, "state=" + state + "; lastDisplayTimeInMillis=" + lastDisplayTimeInMillis + + "; numberOfApplicationRuns=" + numberOfApplicationRuns); - switch (state) { - case LIKED: - return false; - case INITIAL_STATE: - break; - case IGNORED: - modifiedTime.add(Calendar.WEEK_OF_YEAR, -1); - bannerFreeRuns = 5; - break; - case DISLIKED_WITH_MESSAGE: - modifiedTime.add(Calendar.MONTH, -3); - bannerFreeRuns = 3; - break; - case DISLIKED_WITHOUT_MESSAGE: - modifiedTime.add(Calendar.MONTH, -2); - break; - default: - throw new IllegalStateException("Unexpected state:" + state); - } + boolean toReturn = false; - if (state != RateUsState.INITIAL_STATE) { - if (modifiedTime.after(lastDisplayTime) && numberOfApplicationRuns >= bannerFreeRuns) { - settings.RATE_US_STATE.set(RateUsState.INITIAL_STATE); - modifiedTime = Calendar.getInstance(); - } else { - return false; - } - } - // Initial state now - modifiedTime.add(Calendar.HOUR, -72); - bannerFreeRuns = 3; - if (modifiedTime.after(lastDisplayTime) && numberOfApplicationRuns >= bannerFreeRuns) { - return true; - } - return false; - } + switch (state) { + case LIKED: + return false; + case INITIAL_STATE: + break; + case IGNORED: + modifiedTime.add(Calendar.WEEK_OF_YEAR, -1); + bannerFreeRuns = 5; + break; + case DISLIKED_WITH_MESSAGE: + modifiedTime.add(Calendar.MONTH, -3); + bannerFreeRuns = 3; + break; + case DISLIKED_WITHOUT_MESSAGE: + modifiedTime.add(Calendar.MONTH, -2); + break; + default: + throw new IllegalStateException("Unexpected state:" + state); + } + + if (state != RateUsState.INITIAL_STATE) { + if (modifiedTime.after(lastDisplayTime) && numberOfApplicationRuns >= bannerFreeRuns) { + settings.RATE_US_STATE.set(RateUsState.INITIAL_STATE); + modifiedTime = Calendar.getInstance(); + } else { + return false; + } + } + // Initial state now + modifiedTime.add(Calendar.HOUR, -72); + bannerFreeRuns = 3; + if (modifiedTime.after(lastDisplayTime) && numberOfApplicationRuns >= bannerFreeRuns) { + toReturn = true; + } + return toReturn; + } public class PositiveButtonListener implements View.OnClickListener { private TextView header; @@ -211,4 +214,12 @@ public class DashRateUsFragment extends DashBaseFragment { DISLIKED_WITH_MESSAGE, DISLIKED_WITHOUT_MESSAGE } + + public static class RateUsShouldShow extends DashboardOnMap.SettingsShouldShow { + @Override + public boolean shouldShow(OsmandSettings settings, MapActivity activity, String tag) { + return DashRateUsFragment.shouldShow(settings) + && super.shouldShow(settings, activity, tag); + } + } } diff --git a/OsmAnd/src/net/osmand/plus/dashboard/DashboardOnMap.java b/OsmAnd/src/net/osmand/plus/dashboard/DashboardOnMap.java index 8594aef6f9..6ca7d151da 100644 --- a/OsmAnd/src/net/osmand/plus/dashboard/DashboardOnMap.java +++ b/OsmAnd/src/net/osmand/plus/dashboard/DashboardOnMap.java @@ -1,8 +1,6 @@ package net.osmand.plus.dashboard; - import android.annotation.SuppressLint; -import android.app.Activity; import android.content.Context; import android.content.Intent; import android.graphics.drawable.Drawable; @@ -12,6 +10,7 @@ import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; import android.support.v7.widget.Toolbar; import android.util.DisplayMetrics; +import android.util.Log; import android.view.Gravity; import android.view.View; import android.view.animation.Animation; @@ -42,10 +41,14 @@ import net.osmand.plus.ContextMenuAdapter.OnRowItemClick; import net.osmand.plus.IconsCache; import net.osmand.plus.OsmandApplication; import net.osmand.plus.OsmandPlugin; +import net.osmand.plus.OsmandSettings; import net.osmand.plus.R; import net.osmand.plus.activities.IntermediatePointsDialog; import net.osmand.plus.activities.MapActivity; import net.osmand.plus.audionotes.DashAudioVideoNotesFragment; +import net.osmand.plus.dashboard.tools.DashFragmentData; +import net.osmand.plus.dashboard.tools.DashboardSettingsDialogFragment; +import net.osmand.plus.dashboard.tools.TransactionBuilder; import net.osmand.plus.development.DashSimulateFragment; import net.osmand.plus.development.OsmandDevelopmentPlugin; import net.osmand.plus.dialogs.ConfigureMapMenu; @@ -71,17 +74,45 @@ import java.util.List; */ public class DashboardOnMap implements ObservableScrollViewCallbacks { + private static final String TAG = "DashboardOnMap"; public static boolean staticVisible = false; public static DashboardType staticVisibleType = DashboardType.DASHBOARD; - + public static final String SHOULD_SHOW = "should_show"; + + private static final DashFragmentData.ShouldShowFunction rateUsShouldShow = new DashRateUsFragment.RateUsShouldShow(); + private static final DefaultShouldShow defaultShouldShow = new DefaultShouldShow(); + private static final DefaultShouldShow errorShouldShow = new ErrorShouldShow(); + private static final DefaultShouldShow firstTimeShouldShow = new FirstTimeShouldShow(); + private static final DefaultShouldShow simulateShouldShow = new SimulateShouldShow(); + private static final DashFragmentData.ShouldShowFunction chooseAppDirShouldShow = new ChooseAppDirShouldShow(); + + private static final DashFragmentData[] fragmentsData = new DashFragmentData[]{ + new DashFragmentData(DashRateUsFragment.TAG, DashRateUsFragment.class, "Rate us", rateUsShouldShow), + new DashFragmentData(DashFirstTimeFragment.TAG, DashFirstTimeFragment.class, "First time", firstTimeShouldShow), + new DashFragmentData(DashChooseAppDirFragment.TAG, DashChooseAppDirFragment.class, "Choose app dir", chooseAppDirShouldShow), + new DashFragmentData(DashErrorFragment.TAG, DashErrorFragment.class, "Error", errorShouldShow), + new DashFragmentData(DashNavigationFragment.TAG, DashNavigationFragment.class, "Navigation", defaultShouldShow), + new DashFragmentData(DashParkingFragment.TAG, DashParkingFragment.class, "Parking", defaultShouldShow), + new DashFragmentData(DashWaypointsFragment.TAG, DashWaypointsFragment.class, "Waypoints", defaultShouldShow), + new DashFragmentData(DashSearchFragment.TAG, DashSearchFragment.class, "Search", defaultShouldShow), + new DashFragmentData(DashRecentsFragment.TAG, DashRecentsFragment.class, "Recent places", defaultShouldShow), + new DashFragmentData(DashFavoritesFragment.TAG, DashFavoritesFragment.class, "Favourites", defaultShouldShow), + new DashFragmentData(DashAudioVideoNotesFragment.TAG, DashAudioVideoNotesFragment.class, "Notes", defaultShouldShow), + new DashFragmentData(DashTrackFragment.TAG, DashTrackFragment.class, "Track", defaultShouldShow), + new DashFragmentData(DashOsMoFragment.TAG, DashOsMoFragment.class, "OsMo", defaultShouldShow), + new DashFragmentData(DashOsmEditsFragment.TAG, DashOsmEditsFragment.class, "OsmEdits", defaultShouldShow), + new DashFragmentData(DashPluginsFragment.TAG, DashPluginsFragment.class, "Plugins", defaultShouldShow), + new DashFragmentData(DashSimulateFragment.TAG, DashSimulateFragment.class, "Simulate", simulateShouldShow), + }; + private MapActivity mapActivity; private ImageView actionButton; private FrameLayout dashboardView; - + private ArrayAdapter listAdapter; private OnItemClickListener listAdapterOnClickListener; - + private boolean visible = false; private DashboardType visibleType; private DashboardType previousVisibleType; @@ -102,12 +133,12 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks { private boolean portrait; int baseColor; - + private WaypointDialogHelper waypointDialogHelper; - private final int[] running = new int[] { -1 }; + private final int[] running = new int[]{-1}; private List deletedPoints = new ArrayList(); private Drawable gradientToolbar; - + public enum DashboardType { WAYPOINTS, WAYPOINTS_FLAT, @@ -115,7 +146,7 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks { CONFIGURE_SCREEN, CONFIGURE_MAP, LIST_MENU, - DASHBOARD + DASHBOARD } public DashboardOnMap(MapActivity ma) { @@ -166,6 +197,7 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks { private void updateListBackgroundHeight() { + if (listBackgroundView == null || listBackgroundView.getHeight() > 0) { return; } @@ -185,17 +217,16 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks { } } - private void updateToolbarActions() { TextView tv = (TextView) dashboardView.findViewById(R.id.toolbar_text); tv.setText(""); boolean waypointsVisible = visibleType == DashboardType.WAYPOINTS || visibleType == DashboardType.WAYPOINTS_FLAT; boolean waypointsEdit = visibleType == DashboardType.WAYPOINTS_EDIT; - if (waypointsVisible || waypointsEdit){ + if (waypointsVisible || waypointsEdit) { tv.setText(R.string.waypoints); - } else if(visibleType == DashboardType.CONFIGURE_MAP){ + } else if (visibleType == DashboardType.CONFIGURE_MAP) { tv.setText(R.string.configure_map); - } else if(visibleType == DashboardType.CONFIGURE_SCREEN){ + } else if (visibleType == DashboardType.CONFIGURE_SCREEN) { tv.setText(R.string.layer_map_appearance); } ImageView edit = (ImageView) dashboardView.findViewById(R.id.toolbar_edit); @@ -206,8 +237,8 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks { ok.setVisibility(View.GONE); ImageView flat = (ImageView) dashboardView.findViewById(R.id.toolbar_flat); flat.setVisibility(View.GONE); - ImageView settings = (ImageView) dashboardView.findViewById(R.id.toolbar_settings); - settings.setVisibility(View.GONE); + ImageView settingsButton = (ImageView) dashboardView.findViewById(R.id.toolbar_settings); + settingsButton.setVisibility(View.GONE); ImageView configureScreen = (ImageView) dashboardView.findViewById(R.id.toolbar_configure_screen); configureScreen.setVisibility(View.GONE); IconsCache iconsCache = mapActivity.getMyApplication().getIconsCache(); @@ -215,15 +246,15 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks { lst.setVisibility(View.GONE); ImageView back = (ImageView) dashboardView.findViewById(R.id.toolbar_back); back.setImageDrawable( - ((OsmandApplication)getMyApplication()).getIconsCache().getIcon(R.drawable.abc_ic_ab_back_mtrl_am_alpha)); + ((OsmandApplication) getMyApplication()).getIconsCache().getIcon(R.drawable.abc_ic_ab_back_mtrl_am_alpha)); back.setOnClickListener(new View.OnClickListener() { - + @Override public void onClick(View v) { backPressed(); } }); - + if (waypointsVisible && getMyApplication().getWaypointHelper().getAllPoints().size() > 0) { if (mapActivity.getMyApplication().getTargetPointsHelper().getIntermediatePoints().size() > 0) { sort.setVisibility(View.VISIBLE); @@ -241,7 +272,7 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks { @Override public void onClick(View v) { - setDashboardVisibility(true, DashboardType.WAYPOINTS_EDIT); + setDashboardVisibility(true, DashboardType.WAYPOINTS_EDIT); } }); if (getMyApplication().getWaypointHelper().isRouteCalculated()) { @@ -258,8 +289,8 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks { } }); } - } - if(waypointsEdit) { + } + if (waypointsEdit) { ok.setVisibility(View.VISIBLE); ok.setOnClickListener(new View.OnClickListener() { @@ -271,25 +302,22 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks { }); } if (visibleType == DashboardType.DASHBOARD || visibleType == DashboardType.LIST_MENU) { - configureScreen.setVisibility(View.VISIBLE); - configureScreen.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - setDashboardVisibility(true, DashboardType.CONFIGURE_SCREEN); - } - }); - - + configureScreen.setVisibility(View.VISIBLE); + configureScreen.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + setDashboardVisibility(true, DashboardType.CONFIGURE_SCREEN); + } + }); - settings.setVisibility(View.VISIBLE); - settings.setOnClickListener(new View.OnClickListener() { + + settingsButton.setVisibility(View.VISIBLE); + settingsButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - Class sta = mapActivity.getMyApplication().getAppCustomization() - .getSettingsActivity(); - hideDashboard(false); - mapActivity.startActivity(new Intent(mapActivity, sta)); + new DashboardSettingsDialogFragment().show( + mapActivity.getSupportFragmentManager(), "dashboard_settings"); } }); lst.setVisibility(View.VISIBLE); @@ -317,16 +345,16 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks { int btnSize = (int) mapActivity.getResources().getDimension(R.dimen.map_button_size); int topPad = (int) mapActivity.getResources().getDimension(R.dimen.dashboard_map_top_padding); FrameLayout.LayoutParams params = new FrameLayout.LayoutParams( - btnSize,btnSize - ); + btnSize, btnSize + ); int marginRight = btnSize / 4; - params.setMargins(0, landscape ? 0 : topPad - 2 * btnSize, + params.setMargins(0, landscape ? 0 : topPad - 2 * btnSize, marginRight, landscape ? marginRight : 0); params.gravity = landscape ? Gravity.BOTTOM | Gravity.RIGHT : Gravity.TOP | Gravity.RIGHT; actionButton.setLayoutParams(params); actionButton.setScaleType(ScaleType.CENTER); actionButton.setImageDrawable(mapActivity.getResources().getDrawable(R.drawable.map_my_location)); - + actionButton.setBackgroundDrawable(mapActivity.getResources().getDrawable(R.drawable.btn_circle_blue)); hideActionButton(); actionButton.setOnClickListener(new View.OnClickListener() { @@ -341,50 +369,50 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks { } }); } - + private void hideActionButton() { - actionButton.setVisibility(View.GONE); + actionButton.setVisibility(View.GONE); } - public static int convertPixelsToDp(float dp, Context context){ + public static int convertPixelsToDp(float dp, Context context) { DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics(); return Math.round(dp * (displayMetrics.xdpi / DisplayMetrics.DENSITY_DEFAULT)); } - + public net.osmand.Location getMyLocation() { return myLocation; } - + public LatLon getMapViewLocation() { return mapViewLocation; } - + public float getHeading() { return heading; } - + public float getMapRotation() { return mapRotation; } - + public boolean isMapLinkedToLocation() { return mapLinkedToLocation; } - + protected OsmandApplication getMyApplication() { return mapActivity.getMyApplication(); } - + public ArrayAdapter getListAdapter() { return listAdapter; } - + public OnItemClickListener getListAdapterOnClickListener() { return listAdapterOnClickListener; } - + public void hideDashboard() { setDashboardVisibility(false, visibleType); } @@ -399,12 +427,12 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks { setDashboardVisibility(visible, type, this.visible ? visibleType : null, animation); } - public void refreshDashboardFragments(){ + public void refreshDashboardFragments() { addOrUpdateDashboardFragments(); } public void setDashboardVisibility(boolean visible, DashboardType type, DashboardType prevItem, boolean animation) { - if(visible == this.visible && type == visibleType) { + if (visible == this.visible && type == visibleType) { return; } this.previousVisibleType = prevItem; @@ -420,7 +448,7 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks { myLocation = mapActivity.getMyApplication().getLocationProvider().getLastKnownLocation(); mapActivity.getMapViewTrackingUtilities().setDashboard(this); dashboardView.setVisibility(View.VISIBLE); - if(isActionButtonVisible()) { + if (isActionButtonVisible()) { actionButton.setVisibility(View.VISIBLE); } else { hideActionButton(); @@ -428,7 +456,7 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks { updateDownloadBtn(); View listViewLayout = dashboardView.findViewById(R.id.dash_list_view_layout); ScrollView scrollView = (ScrollView) dashboardView.findViewById(R.id.main_scroll); - if(visibleType == DashboardType.DASHBOARD) { + if (visibleType == DashboardType.DASHBOARD) { addOrUpdateDashboardFragments(); scrollView.setVisibility(View.VISIBLE); scrollView.scrollTo(0, 0); @@ -440,7 +468,7 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks { if (listView instanceof ObservableListView) { onScrollChanged(((ObservableListView) listView).getScrollY(), false, false); } - if(refresh) { + if (refresh) { refreshContent(false); } else { updateListAdapter(); @@ -449,7 +477,7 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks { } mapActivity.findViewById(R.id.toolbar_back).setVisibility(isBackButtonVisible() ? View.VISIBLE : View.GONE); mapActivity.findViewById(R.id.MapHudButtonsOverlay).setVisibility(View.INVISIBLE); - + updateToolbarActions(); //fabButton.showFloatingActionButton(); open(dashboardView.findViewById(R.id.animateContent), animation); @@ -464,7 +492,7 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks { df.get().onCloseDash(); } } - + } } @@ -487,9 +515,9 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks { } else { if (DashboardType.CONFIGURE_SCREEN == visibleType) { cm = mapActivity.getMapLayers().getMapWidgetRegistry().getViewConfigureMenuAdapter(mapActivity); - } else if(DashboardType.CONFIGURE_MAP == visibleType) { + } else if (DashboardType.CONFIGURE_MAP == visibleType) { cm = new ConfigureMapMenu().createListAdapter(mapActivity); - } else if(DashboardType.LIST_MENU == visibleType) { + } else if (DashboardType.LIST_MENU == visibleType) { cm = mapActivity.getMapActions().createMainOptionsMenu(); } if (cm != null) { @@ -497,16 +525,16 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks { } } } - + public void updateListAdapter(ContextMenuAdapter cm) { final ArrayAdapter listAdapter = cm.createListAdapter(mapActivity, getMyApplication().getSettings() .isLightContent()); OnItemClickListener listener = getOptionsMenuOnClickListener(cm, listAdapter); - updateListAdapter(listAdapter, listener); + updateListAdapter(listAdapter, listener); } - + public void refreshContent(boolean force) { - if(visibleType == DashboardType.WAYPOINTS || force) { + if (visibleType == DashboardType.WAYPOINTS || force) { updateListAdapter(); } else { listAdapter.notifyDataSetChanged(); @@ -515,15 +543,15 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks { private OnItemClickListener getOptionsMenuOnClickListener(final ContextMenuAdapter cm, - final ArrayAdapter listAdapter) { + final ArrayAdapter listAdapter) { return new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView parent, View view, int which, long id) { OnContextMenuClick click = cm.getClickAdapter(which); - if(click instanceof OnRowItemClick) { + if (click instanceof OnRowItemClick) { boolean cl = ((OnRowItemClick) click).onRowItemClick(listAdapter, view, cm.getElementId(which), which); - if(cl) { + if (cl) { hideDashboard(); } } else if (click != null) { @@ -595,7 +623,7 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks { public void navigationAction() { RoutingHelper routingHelper = mapActivity.getRoutingHelper(); - if(!routingHelper.isFollowingMode() && !routingHelper.isRoutePlanningMode()) { + if (!routingHelper.isFollowingMode() && !routingHelper.isRoutePlanningMode()) { mapActivity.getMapActions().enterRoutePlanningMode(null, null, false); } else { mapActivity.getRoutingHelper().setRoutePlanningMode(true); @@ -621,7 +649,7 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks { } private void hide(View view, boolean animation) { - if(!animation) { + if (!animation) { dashboardView.setVisibility(View.GONE); } else { TranslateAnimation animate = new TranslateAnimation(0, -mapActivity.findViewById(R.id.MapHudButtonsOverlay) @@ -649,69 +677,14 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks { } view.setVisibility(View.GONE); } - + private void addOrUpdateDashboardFragments() { - boolean firstTime = getMyApplication().getAppInitializer().isFirstTime(mapActivity); -// boolean showCards = mapActivity.getMyApplication().getSettings().USE_DASHBOARD_INSTEAD_OF_DRAWER.get(); - boolean showCards = !firstTime; - - FragmentManager manager = mapActivity.getSupportFragmentManager(); - FragmentTransaction fragmentTransaction = manager.beginTransaction(); - - showFragment(manager, fragmentTransaction, DashRateUsFragment.TAG, DashRateUsFragment.class, - DashRateUsFragment.shouldShow(getMyApplication().getSettings())); - showFragment(manager, fragmentTransaction, DashFirstTimeFragment.TAG, DashFirstTimeFragment.class, firstTime); - showFragment(manager, fragmentTransaction, DashChooseAppDirFragment.TAG, DashChooseAppDirFragment.class, - DashChooseAppDirFragment.isDashNeeded(getMyApplication().getSettings())); - - showFragment(manager, fragmentTransaction, DashErrorFragment.TAG, DashErrorFragment.class, - mapActivity.getMyApplication().getAppInitializer().checkPreviousRunsForExceptions(mapActivity) && showCards); - showFragment(manager, fragmentTransaction, DashNavigationFragment.TAG, DashNavigationFragment.class, showCards); - showFragment(manager, fragmentTransaction, DashParkingFragment.TAG, DashParkingFragment.class, showCards); - showFragment(manager, fragmentTransaction, DashWaypointsFragment.TAG, DashWaypointsFragment.class, showCards); - showFragment(manager, fragmentTransaction, DashSearchFragment.TAG, DashSearchFragment.class, showCards); - showFragment(manager, fragmentTransaction, DashRecentsFragment.TAG, DashRecentsFragment.class, showCards); - showFragment(manager, fragmentTransaction, DashFavoritesFragment.TAG, DashFavoritesFragment.class, showCards); - showFragment(manager, fragmentTransaction, DashAudioVideoNotesFragment.TAG, DashAudioVideoNotesFragment.class, showCards); - showFragment(manager, fragmentTransaction, DashTrackFragment.TAG, DashTrackFragment.class, showCards); - showFragment(manager, fragmentTransaction, DashOsMoFragment.TAG, DashOsMoFragment.class, showCards); - showFragment(manager, fragmentTransaction, DashOsmEditsFragment.TAG, DashOsmEditsFragment.class, showCards); -// showFragment(manager, fragmentTransaction, DashUpdatesFragment.TAG, DashUpdatesFragment.class, showCards); - showFragment(manager, fragmentTransaction, DashPluginsFragment.TAG, DashPluginsFragment.class, showCards); - showFragment(manager, fragmentTransaction, DashSimulateFragment.TAG, DashSimulateFragment.class, - OsmandPlugin.getEnabledPlugin(OsmandDevelopmentPlugin.class) != null && showCards); - - fragmentTransaction.commit(); - } - - - - private void showFragment(final FragmentManager manager, - final FragmentTransaction fragmentTransaction, - final String tag, - final Class cl, - final boolean condition) { - try { - Fragment frag = manager.findFragmentByTag(tag); - if (manager.findFragmentByTag(tag) == null ) { - if(condition) { - T ni = cl.newInstance(); - fragmentTransaction.add(R.id.content, ni, tag); - } - } else { - if(!condition) { - fragmentTransaction.remove(manager.findFragmentByTag(tag)); - } else if(frag instanceof DashBaseFragment){ - if(frag.getView() != null) { - ((DashBaseFragment) frag).onOpenDash(); - } - } - } - } catch (Exception e) { - getMyApplication().showToastMessage("Error showing dashboard " + tag); - e.printStackTrace(); - } + Log.v(TAG, "addOrUpdateDashboardFragments(" + ")"); + OsmandSettings settings = getMyApplication().getSettings(); + TransactionBuilder builder = + new TransactionBuilder(mapActivity.getSupportFragmentManager(), settings, mapActivity); + builder.addFragmentsData(fragmentsData).getFragmentTransaction().commit(); } public boolean isVisible() { @@ -720,18 +693,18 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks { public void onDetach(DashBaseFragment dashBaseFragment) { Iterator> it = fragList.iterator(); - while(it.hasNext()) { + while (it.hasNext()) { WeakReference wr = it.next(); - if(wr.get() == dashBaseFragment) { + if (wr.get() == dashBaseFragment) { it.remove(); } } } - - - public void updateLocation(final boolean centerChanged, final boolean locationChanged, final boolean compassChanged){ - if(inLocationUpdate) { - return ; + + + public void updateLocation(final boolean centerChanged, final boolean locationChanged, final boolean compassChanged) { + if (inLocationUpdate) { + return; } inLocationUpdate = true; mapActivity.runOnUiThread(new Runnable() { @@ -740,28 +713,28 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks { inLocationUpdate = false; for (WeakReference df : fragList) { if (df.get() instanceof DashLocationFragment) { - ((DashLocationFragment)df.get()).updateLocation(centerChanged, locationChanged, compassChanged); + ((DashLocationFragment) df.get()).updateLocation(centerChanged, locationChanged, compassChanged); } - } + } } }); - + } - + public void updateMyLocation(net.osmand.Location location) { myLocation = location; updateLocation(false, true, false); } - + public void updateCompassValue(double heading) { this.heading = (float) heading; updateLocation(false, false, true); } public void onAttach(DashBaseFragment dashBaseFragment) { - fragList.add(new WeakReference(dashBaseFragment)); + fragList.add(new WeakReference<>(dashBaseFragment)); } - + public void requestLayout() { dashboardView.requestLayout(); } @@ -786,7 +759,7 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks { private void backPressed() { - if(previousVisibleType != visibleType && previousVisibleType != null) { + if (previousVisibleType != visibleType && previousVisibleType != null) { visibleType = null; setDashboardVisibility(true, previousVisibleType); } else { @@ -799,7 +772,7 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks { public void onScrollChanged(int scrollY, boolean firstScroll, boolean dragging) { // Translate list background if (portrait) { - if(listBackgroundView != null) { + if (listBackgroundView != null) { setTranslationY(listBackgroundView, Math.max(0, -scrollY + mFlexibleSpaceImageHeight)); } } @@ -813,13 +786,13 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks { private boolean isActionButtonVisible() { return visibleType == DashboardType.DASHBOARD || visibleType == DashboardType.LIST_MENU || visibleType == DashboardType.CONFIGURE_SCREEN; } - + private boolean isBackButtonVisible() { return !(visibleType == DashboardType.DASHBOARD || visibleType == DashboardType.LIST_MENU); } private void updateTopButton(int scrollY) { - + if (actionButton != null && portrait && isActionButtonVisible()) { double scale = mapActivity.getResources().getDisplayMetrics().density; int originalPosition = mFlexibleSpaceImageHeight - (int) (80 * scale); @@ -857,13 +830,13 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks { } } } - + private void updateListAdapter(ArrayAdapter listAdapter, OnItemClickListener listener) { this.listAdapter = listAdapter; this.listAdapterOnClickListener = listener; if (this.listView != null) { listView.setAdapter(listAdapter); - if(!portrait) { + if (!portrait) { listView.setOnItemClickListener(this.listAdapterOnClickListener); } else if (this.listAdapterOnClickListener != null) { listView.setOnItemClickListener(new OnItemClickListener() { @@ -884,23 +857,23 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { v.setTranslationY(y); } else { - TranslateAnimation anim = new TranslateAnimation(0, 0, y, y); - anim.setFillAfter(true); - anim.setDuration(0); - v.startAnimation(anim); + TranslateAnimation anim = new TranslateAnimation(0, 0, y, y); + anim.setFillAfter(true); + anim.setDuration(0); + v.startAnimation(anim); } } - + @SuppressLint("NewApi") private void setAlpha(View v, int alpha, int clr) { // if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { // v.setAlpha(alpha/255.f); // } else { - int colr = (((int) alpha ) << 24) | clr; - v.setBackgroundColor(colr); + int colr = (((int) alpha) << 24) | clr; + v.setBackgroundColor(colr); // } } - + @Override public void onDownMotionEvent() { } @@ -922,20 +895,23 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks { public T getFragmentByClass(Class class1) { - for(WeakReference f: fragList) { + for (WeakReference f : fragList) { DashBaseFragment b = f.get(); - if(b != null && !b.isDetached() && class1.isInstance(b)) { + if (b != null && !b.isDetached() && class1.isInstance(b)) { return (T) b; } } return null; } - public void hideFragmentByTag(String tag) { + public void blacklistFragmentByTag(String tag) { FragmentManager manager = mapActivity.getSupportFragmentManager(); FragmentTransaction transaction = manager.beginTransaction(); Fragment frag = manager.findFragmentByTag(tag); transaction.hide(frag).commit(); + + getMyApplication().getSettings().registerBooleanPreference(SHOULD_SHOW + tag, true) + .makeGlobal().set(false); } public void unblacklistFragmentClass(String tag) { @@ -943,9 +919,67 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks { FragmentTransaction transaction = manager.beginTransaction(); Fragment frag = manager.findFragmentByTag(tag); transaction.show(frag).commit(); + + getMyApplication().getSettings().registerBooleanPreference(SHOULD_SHOW + tag, true) + .makeGlobal().set(true); } View getParentView() { return dashboardView; } + + public DashFragmentData[] getFragmentsData() { + return fragmentsData; + } + + public static class SettingsShouldShow implements DashFragmentData.ShouldShowFunction { + @Override + public boolean shouldShow(OsmandSettings settings, MapActivity activity, String tag) { + Log.v(TAG, "shouldShow(" + "settings=" + settings + ", activity=" + activity + ", tag=" + tag + ")"); + boolean shouldShow = settings.registerBooleanPreference(SHOULD_SHOW + tag, true) + .makeGlobal().get(); + Log.v(TAG, "shouldShow=" + shouldShow); + return shouldShow; + } + } + public static class DefaultShouldShow extends SettingsShouldShow { + @Override + public boolean shouldShow(OsmandSettings settings, MapActivity activity, String tag) { + return !activity.getMyApplication().getAppInitializer().isFirstTime(activity) + && super.shouldShow(settings, activity, tag); + } + } + + private static class ErrorShouldShow extends DefaultShouldShow { + @Override + public boolean shouldShow(OsmandSettings settings, MapActivity activity, String tag) { + return super.shouldShow(settings, activity, tag) && activity.getMyApplication() + .getAppInitializer().checkPreviousRunsForExceptions(activity); + } + } + + private static class FirstTimeShouldShow extends DefaultShouldShow { + @Override + public boolean shouldShow(OsmandSettings settings, MapActivity activity, String tag) { + return !super.shouldShow(settings, activity, tag); + } + } + + private static class SimulateShouldShow extends DefaultShouldShow { + @Override + public boolean shouldShow(OsmandSettings settings, MapActivity activity, String tag) { + return super.shouldShow(settings, activity, tag) + && OsmandPlugin.getEnabledPlugin(OsmandDevelopmentPlugin.class) != null; + } + } + + private static class ChooseAppDirShouldShow extends SettingsShouldShow { + public boolean shouldShow(OsmandSettings settings, MapActivity activity, String tag) { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) { + return false; + } + return !settings.isExternalStorageDirectorySpecifiedV19() + && super.shouldShow(settings, activity, tag); + } + } } diff --git a/OsmAnd/src/net/osmand/plus/dashboard/tools/DashFragmentData.java b/OsmAnd/src/net/osmand/plus/dashboard/tools/DashFragmentData.java new file mode 100644 index 0000000000..e935c79503 --- /dev/null +++ b/OsmAnd/src/net/osmand/plus/dashboard/tools/DashFragmentData.java @@ -0,0 +1,24 @@ +package net.osmand.plus.dashboard.tools; + +import net.osmand.plus.OsmandSettings; +import net.osmand.plus.activities.MapActivity; +import net.osmand.plus.dashboard.DashBaseFragment; + +public final class DashFragmentData { + public final String tag; + public final Class fragmentClass; + public final String title; + public final ShouldShowFunction shouldShowFunction; + + public DashFragmentData(String tag, Class fragmentClass, + String title, ShouldShowFunction shouldShowFunction) { + this.tag = tag; + this.fragmentClass = fragmentClass; + this.title = title; + this.shouldShowFunction = shouldShowFunction; + } + + public interface ShouldShowFunction { + boolean shouldShow(OsmandSettings settings, MapActivity activity, String tag); + } +} diff --git a/OsmAnd/src/net/osmand/plus/dashboard/tools/DashboardSettingsDialogFragment.java b/OsmAnd/src/net/osmand/plus/dashboard/tools/DashboardSettingsDialogFragment.java new file mode 100644 index 0000000000..698fe4f51f --- /dev/null +++ b/OsmAnd/src/net/osmand/plus/dashboard/tools/DashboardSettingsDialogFragment.java @@ -0,0 +1,109 @@ +package net.osmand.plus.dashboard.tools; + +import android.app.Activity; +import android.app.AlertDialog; +import android.app.Dialog; +import android.content.Context; +import android.content.DialogInterface; +import android.os.Bundle; +import android.support.annotation.NonNull; +import android.support.v4.app.DialogFragment; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ArrayAdapter; +import android.widget.CompoundButton; +import android.widget.TextView; + +import net.osmand.plus.OsmandSettings; +import net.osmand.plus.R; +import net.osmand.plus.activities.MapActivity; +import net.osmand.plus.dashboard.DashboardOnMap; + +public class DashboardSettingsDialogFragment extends DialogFragment { + private MapActivity mapActivity; + private DashFragmentData[] fragmentsData; + + @Override + public void onAttach(Activity activity) { + super.onAttach(activity); + mapActivity = (MapActivity) activity; + fragmentsData = mapActivity.getDashboard().getFragmentsData(); + } + + @NonNull + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); + final OsmandSettings settings = mapActivity.getMyApplication().getSettings(); + final DashFragmentAdapter adapter = + new DashFragmentAdapter(getActivity(), fragmentsData, + settings); + builder.setTitle(R.string.dahboard_options_dialog_title) + .setAdapter(adapter, null) + .setPositiveButton(R.string.shared_string_ok, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int type) { + boolean[] shouldShow = adapter.getCheckedItems(); + for (int i = 0; i < shouldShow.length; i++) { + settings.registerBooleanPreference( + DashboardOnMap.SHOULD_SHOW + fragmentsData[i].tag, true) + .makeGlobal().set(shouldShow[i]); + } + mapActivity.getDashboard().refreshDashboardFragments(); + } + }); + final AlertDialog dialog = builder.create(); + return dialog; + } + + private static class DashFragmentAdapter extends ArrayAdapter { + private final boolean[] checkedItems; + + public DashFragmentAdapter(Context context, DashFragmentData[] objects, OsmandSettings settings) { + super(context, 0, objects); + checkedItems = new boolean[objects.length]; + for (int i = 0; i < objects.length; i++) { + checkedItems[i] = settings.registerBooleanPreference( + DashboardOnMap.SHOULD_SHOW + objects[i].tag, true).makeGlobal().get(); + } + } + + @Override + public View getView(final int position, View convertView, ViewGroup parent) { + DashFragmentData dashFragmentData = getItem(position); + DashViewHolder viewHolder; + if (convertView == null) { + viewHolder = new DashViewHolder(); + convertView = LayoutInflater.from(getContext()).inflate( + R.layout.dashboard_settings_dialog_item, parent, false); + viewHolder.textView = (TextView) convertView.findViewById(R.id.text); + viewHolder.compoundButton = (CompoundButton) convertView.findViewById(R.id.check_item); + viewHolder.compoundButton.setOnCheckedChangeListener( + new CompoundButton.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(CompoundButton compoundButton, boolean b) { + Integer position = (Integer) compoundButton.getTag(); + checkedItems[position] = b; + } + }); + } else { + viewHolder = (DashViewHolder) convertView.getTag(); + } + viewHolder.compoundButton.setTag(position); + viewHolder.compoundButton.setChecked(checkedItems[position]); + viewHolder.textView.setText(dashFragmentData.title); + convertView.setTag(viewHolder); + return convertView; + } + + public boolean[] getCheckedItems() { + return checkedItems; + } + + private class DashViewHolder { + TextView textView; + CompoundButton compoundButton; + } + } +} diff --git a/OsmAnd/src/net/osmand/plus/dashboard/tools/TransactionBuilder.java b/OsmAnd/src/net/osmand/plus/dashboard/tools/TransactionBuilder.java new file mode 100644 index 0000000000..f75031f0f0 --- /dev/null +++ b/OsmAnd/src/net/osmand/plus/dashboard/tools/TransactionBuilder.java @@ -0,0 +1,74 @@ +package net.osmand.plus.dashboard.tools; + +import android.support.v4.app.FragmentManager; +import android.support.v4.app.FragmentTransaction; +import android.util.Log; + +import net.osmand.plus.OsmandSettings; +import net.osmand.plus.R; +import net.osmand.plus.activities.MapActivity; +import net.osmand.plus.dashboard.DashBaseFragment; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +/** + * Created by GaidamakUA on 8/6/15. + */ +public final class TransactionBuilder { + private static final String TAG = "TransactionBuilder"; + private FragmentManager manager; + private List fragments = new ArrayList<>(); + private OsmandSettings settings; + private MapActivity mapActivity; + + public TransactionBuilder(FragmentManager manager, OsmandSettings settings, + MapActivity mapActivity) { + this.manager = manager; + this.settings = settings; + this.mapActivity = mapActivity; + } + + public TransactionBuilder addFragmentsData(DashFragmentData... dashFragmentsData) { + fragments.addAll(Arrays.asList(dashFragmentsData)); + return this; + } + + public FragmentTransaction getFragmentTransaction() { + Log.v(TAG, "getFragmentTransaction(" + ")"); + FragmentTransaction fragmentTransaction = manager.beginTransaction(); + for (DashFragmentData dashFragmentData : fragments) { + DashBaseFragment fragment = + (DashBaseFragment) manager.findFragmentByTag(dashFragmentData.tag); + if (manager.findFragmentByTag(dashFragmentData.tag) == null) { + if (dashFragmentData.shouldShowFunction.shouldShow(settings, mapActivity, dashFragmentData.tag)) { + DashBaseFragment newInstance = null; + try { + newInstance = dashFragmentData.fragmentClass.newInstance(); + // XXX hardcoded value + fragmentTransaction.add(R.id.content, newInstance, dashFragmentData.tag); + } catch (InstantiationException e) { + Log.v(TAG, ""); + mapActivity.getMyApplication() + .showToastMessage("Error showing dashboard " + dashFragmentData.tag); + } catch (IllegalAccessException e) { + Log.v(TAG, ""); + mapActivity.getMyApplication() + .showToastMessage("Error showing dashboard " + dashFragmentData.tag); + } + } + } else { + if (!dashFragmentData.shouldShowFunction.shouldShow(settings, mapActivity, dashFragmentData.tag)) { + fragmentTransaction.remove(manager.findFragmentByTag(dashFragmentData.tag)); + } else if (fragment.getView() != null) { + if (fragment.isHidden()) { + fragmentTransaction.show(fragment); + } + fragment.onOpenDash(); + } + } + } + return fragmentTransaction; + } +} diff --git a/OsmAnd/src/net/osmand/plus/development/DashSimulateFragment.java b/OsmAnd/src/net/osmand/plus/development/DashSimulateFragment.java index 55f3dff10f..7c07a037f8 100644 --- a/OsmAnd/src/net/osmand/plus/development/DashSimulateFragment.java +++ b/OsmAnd/src/net/osmand/plus/development/DashSimulateFragment.java @@ -16,8 +16,6 @@ import net.osmand.plus.R; import net.osmand.plus.activities.MapActivity; import net.osmand.plus.dashboard.DashBaseFragment; -/** - */ public class DashSimulateFragment extends DashBaseFragment { public static final String TAG = "DASH_SIMULATE_FRAGMENT"; @@ -61,5 +59,4 @@ public class DashSimulateFragment extends DashBaseFragment { return view; } - } From 574ba29ac14812c86e54750a7787494793427286 Mon Sep 17 00:00:00 2001 From: GaidamakUA Date: Fri, 7 Aug 2015 17:29:11 +0300 Subject: [PATCH 26/32] Fixed visual representation of settings dialog. Small fixes. First iteration of custom deletion logic. --- .../layout/dashboard_settings_dialog_item.xml | 7 +- OsmAnd/res/layout/dashboard_toolbar.xml | 6 +- OsmAnd/res/values/strings.xml | 2 + .../plus/dashboard/DashBaseFragment.java | 11 ++-- .../plus/dashboard/DashErrorFragment.java | 51 +++++++++++++- .../plus/dashboard/DashRateUsFragment.java | 66 +++++++++++++++++-- .../osmand/plus/dashboard/DashboardOnMap.java | 54 ++++++++------- .../dashboard/tools/DashFragmentData.java | 12 ++++ .../DashboardSettingsDialogFragment.java | 49 +++++++++++--- 9 files changed, 205 insertions(+), 53 deletions(-) diff --git a/OsmAnd/res/layout/dashboard_settings_dialog_item.xml b/OsmAnd/res/layout/dashboard_settings_dialog_item.xml index 2acc87ad74..420abf88d7 100644 --- a/OsmAnd/res/layout/dashboard_settings_dialog_item.xml +++ b/OsmAnd/res/layout/dashboard_settings_dialog_item.xml @@ -5,12 +5,17 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="@dimen/list_header_height" + android:paddingLeft="@dimen/dialog_content_margin" + android:paddingRight="@dimen/dialog_content_margin" android:orientation="horizontal"> - + - + - + \ No newline at end of file diff --git a/OsmAnd/res/values/strings.xml b/OsmAnd/res/values/strings.xml index b208d84947..99d824111c 100644 --- a/OsmAnd/res/values/strings.xml +++ b/OsmAnd/res/values/strings.xml @@ -2227,4 +2227,6 @@ Afghanistan, Albania, Algeria, Andorra, Angola, Anguilla, Antigua and Barbuda, A Try again Error: {0} Dashboard options + Card was hidden + UNDO diff --git a/OsmAnd/src/net/osmand/plus/dashboard/DashBaseFragment.java b/OsmAnd/src/net/osmand/plus/dashboard/DashBaseFragment.java index 31ba8506c8..5d582069a1 100644 --- a/OsmAnd/src/net/osmand/plus/dashboard/DashBaseFragment.java +++ b/OsmAnd/src/net/osmand/plus/dashboard/DashBaseFragment.java @@ -15,6 +15,7 @@ import android.widget.FrameLayout; import net.osmand.plus.OsmAndAppCustomization; import net.osmand.plus.OsmandApplication; +import net.osmand.plus.R; import net.osmand.plus.activities.MapActivity; import net.osmand.plus.widgets.InterceptorFrameLayout; import net.osmand.plus.widgets.tools.SwipeDismissTouchListener; @@ -73,8 +74,6 @@ public abstract class DashBaseFragment extends Fragment { public void onDismiss(View view, Object token, boolean isSwipeRight) { if (isSwipeRight) { getDismissCallback().onDismiss(); - } else { - // TODO show settings card } } }); @@ -158,7 +157,7 @@ public abstract class DashBaseFragment extends Fragment { private DismissListener defaultDismissListener; - private static class DefaultDismissListener implements DismissListener { + public static class DefaultDismissListener implements DismissListener { private View parentView; private DashboardOnMap dashboardOnMap; private String fragmentTag; @@ -177,15 +176,15 @@ public abstract class DashBaseFragment extends Fragment { dashboardOnMap.blacklistFragmentByTag(fragmentTag); ViewCompat.setTranslationX(fragmentView, 0); ViewCompat.setAlpha(fragmentView, 1); - Snackbar.make(parentView, "Card was hidden", Snackbar.LENGTH_LONG) - .setAction("UNDO", new View.OnClickListener() { + Snackbar.make(parentView, dashboardOnMap.getMyApplication().getResources() + .getString(R.string.shared_string_card_was_hidden), Snackbar.LENGTH_LONG) + .setAction(R.string.shared_string_undo, new View.OnClickListener() { @Override public void onClick(View view) { DefaultDismissListener.this.onUndo(); } }) .show(); - } public void onUndo() { diff --git a/OsmAnd/src/net/osmand/plus/dashboard/DashErrorFragment.java b/OsmAnd/src/net/osmand/plus/dashboard/DashErrorFragment.java index e9ab9ea291..9ce91ffe28 100644 --- a/OsmAnd/src/net/osmand/plus/dashboard/DashErrorFragment.java +++ b/OsmAnd/src/net/osmand/plus/dashboard/DashErrorFragment.java @@ -7,6 +7,8 @@ import android.graphics.Typeface; import android.net.Uri; import android.os.Build; import android.os.Bundle; +import android.support.design.widget.Snackbar; +import android.support.v4.view.ViewCompat; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -14,6 +16,7 @@ import android.widget.Button; import android.widget.ImageView; import android.widget.TextView; +import net.osmand.PlatformUtil; import net.osmand.plus.OsmandApplication; import net.osmand.plus.R; import net.osmand.plus.Version; @@ -31,6 +34,8 @@ public class DashErrorFragment extends DashBaseFragment { public static final String TAG = "DASH_ERROR_FRAGMENT"; + private DismissListener dismissCallback; + @Override public View initView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = getActivity().getLayoutInflater().inflate(R.layout.dash_error_fragment, container, false); @@ -47,7 +52,7 @@ public class DashErrorFragment extends DashBaseFragment { @Override public void onClick(View view) { Intent intent = new Intent(Intent.ACTION_SEND); - intent.putExtra(Intent.EXTRA_EMAIL, new String[] { "crash@osmand.net" }); //$NON-NLS-1$ + intent.putExtra(Intent.EXTRA_EMAIL, new String[]{"crash@osmand.net"}); //$NON-NLS-1$ File file = getMyApplication().getAppPath(OsmandApplication.EXCEPTION_PATH); intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file)); intent.setType("vnd.android.cursor.dir/email"); //$NON-NLS-1$ @@ -67,6 +72,7 @@ public class DashErrorFragment extends DashBaseFragment { text.append("\nApk Version : ").append(info.versionName).append(" ").append(info.versionCode); //$NON-NLS-1$ //$NON-NLS-2$ } } catch (PackageManager.NameNotFoundException e) { + PlatformUtil.getLog(DashErrorFragment.class).error("", e); } intent.putExtra(Intent.EXTRA_TEXT, text.toString()); startActivity(Intent.createChooser(intent, getString(R.string.send_report))); @@ -85,10 +91,53 @@ public class DashErrorFragment extends DashBaseFragment { } } }); + dismissCallback = new ErrorDismissListener(getParentView(), dashboard, TAG, view); return view; } @Override public void onOpenDash() { } + + @Override + public DismissListener getDismissCallback() { + return dismissCallback; + } + + private static class ErrorDismissListener implements DismissListener { + private View parentView; + private DashboardOnMap dashboardOnMap; + private String fragmentTag; + private View fragmentView; + + public ErrorDismissListener(View parentView, DashboardOnMap dashboardOnMap, + String fragmentTag, View fragmentView) { + this.parentView = parentView; + this.dashboardOnMap = dashboardOnMap; + this.fragmentTag = fragmentTag; + this.fragmentView = fragmentView; + } + + @Override + public void onDismiss() { + dashboardOnMap.hideFragmentByTag(fragmentTag); + ViewCompat.setTranslationX(fragmentView, 0); + ViewCompat.setAlpha(fragmentView, 1); + Snackbar.make(parentView, dashboardOnMap.getMyApplication().getResources() + .getString(R.string.shared_string_card_was_hidden), Snackbar.LENGTH_LONG) + .setAction(R.string.shared_string_undo, new View.OnClickListener() { + @Override + public void onClick(View view) { + ErrorDismissListener.this.onUndo(); + } + }) + .show(); + } + + public void onUndo() { + dashboardOnMap.unhideFragmentByTag(fragmentTag); + ViewCompat.setTranslationX(fragmentView, 0); + ViewCompat.setAlpha(fragmentView, 1); + } + } } diff --git a/OsmAnd/src/net/osmand/plus/dashboard/DashRateUsFragment.java b/OsmAnd/src/net/osmand/plus/dashboard/DashRateUsFragment.java index a9a47d8fc2..74cfe6fc7b 100644 --- a/OsmAnd/src/net/osmand/plus/dashboard/DashRateUsFragment.java +++ b/OsmAnd/src/net/osmand/plus/dashboard/DashRateUsFragment.java @@ -5,6 +5,8 @@ import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.support.annotation.Nullable; +import android.support.design.widget.Snackbar; +import android.support.v4.view.ViewCompat; import android.util.Log; import android.view.LayoutInflater; import android.view.View; @@ -24,14 +26,13 @@ import java.util.Calendar; */ public class DashRateUsFragment extends DashBaseFragment { public static final String TAG = "DASH_RATE_US_FRAGMENT"; - // TODO move to resources public static final String EMAIL = "support@osmand.net"; // Imported in shouldShow method private static OsmandSettings settings; private FragmentState state = FragmentState.INITIAL_STATE; - + private RateUsDismissListener mRateUsDismissListener; @Override public void onOpenDash() { @@ -48,6 +49,7 @@ public class DashRateUsFragment extends DashBaseFragment { new PositiveButtonListener(header, subheader, positiveButton, negativeButton)); negativeButton.setOnClickListener( new NegativeButtonListener(header, subheader, positiveButton, negativeButton)); + mRateUsDismissListener = new RateUsDismissListener(getParentView(), dashboard, TAG, view, settings); return view; } @@ -102,13 +104,15 @@ public class DashRateUsFragment extends DashBaseFragment { // Initial state now modifiedTime.add(Calendar.HOUR, -72); bannerFreeRuns = 3; - if (modifiedTime.after(lastDisplayTime) && numberOfApplicationRuns >= bannerFreeRuns) { - toReturn = true; - } - return toReturn; + return modifiedTime.after(lastDisplayTime) && numberOfApplicationRuns >= bannerFreeRuns; } - public class PositiveButtonListener implements View.OnClickListener { + @Override + public DismissListener getDismissCallback() { + return mRateUsDismissListener; + } + + public class PositiveButtonListener implements View.OnClickListener { private TextView header; private TextView subheader; private Button positiveButton; @@ -222,4 +226,52 @@ public class DashRateUsFragment extends DashBaseFragment { && super.shouldShow(settings, activity, tag); } } + + private static class RateUsDismissListener implements DismissListener { + private View parentView; + private DashboardOnMap dashboardOnMap; + private String fragmentTag; + private View fragmentView; + private OsmandSettings settings; + private int exNumberOfRuns; + private long exLastDisplayTime; + public RateUsDismissListener(View parentView, DashboardOnMap dashboardOnMap, + String fragmentTag, View fragmentView, OsmandSettings settings) { + this.parentView = parentView; + this.dashboardOnMap = dashboardOnMap; + this.fragmentTag = fragmentTag; + this.fragmentView = fragmentView; + this.settings = settings; + } + + @Override + public void onDismiss() { + dashboardOnMap.hideFragmentByTag(fragmentTag); + ViewCompat.setTranslationX(fragmentView, 0); + ViewCompat.setAlpha(fragmentView, 1); + Snackbar.make(parentView, dashboardOnMap.getMyApplication().getResources() + .getString(R.string.shared_string_card_was_hidden), Snackbar.LENGTH_LONG) + .setAction(R.string.shared_string_undo, new View.OnClickListener() { + @Override + public void onClick(View view) { + RateUsDismissListener.this.onUndo(exNumberOfRuns, exLastDisplayTime); + } + }) + .show(); + settings.RATE_US_STATE.set(RateUsState.IGNORED); + exNumberOfRuns = settings.NUMBER_OF_APPLICATION_STARTS.get(); + settings.NUMBER_OF_APPLICATION_STARTS.set(0); + exLastDisplayTime = settings.LAST_DISPLAY_TIME.get(); + settings.LAST_DISPLAY_TIME.set(System.currentTimeMillis()); + } + + public void onUndo(int numberOfRuns, long lastDisplayTime) { + dashboardOnMap.unhideFragmentByTag(fragmentTag); + ViewCompat.setTranslationX(fragmentView, 0); + ViewCompat.setAlpha(fragmentView, 1); + settings.NUMBER_OF_APPLICATION_STARTS.set(numberOfRuns); + settings.LAST_DISPLAY_TIME.set(lastDisplayTime); + + } + } } diff --git a/OsmAnd/src/net/osmand/plus/dashboard/DashboardOnMap.java b/OsmAnd/src/net/osmand/plus/dashboard/DashboardOnMap.java index 6ca7d151da..704e506dc0 100644 --- a/OsmAnd/src/net/osmand/plus/dashboard/DashboardOnMap.java +++ b/OsmAnd/src/net/osmand/plus/dashboard/DashboardOnMap.java @@ -82,15 +82,15 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks { private static final DashFragmentData.ShouldShowFunction rateUsShouldShow = new DashRateUsFragment.RateUsShouldShow(); private static final DefaultShouldShow defaultShouldShow = new DefaultShouldShow(); private static final DefaultShouldShow errorShouldShow = new ErrorShouldShow(); - private static final DefaultShouldShow firstTimeShouldShow = new FirstTimeShouldShow(); + private static final DashFragmentData.ShouldShowFunction firstTimeShouldShow = new FirstTimeShouldShow(); private static final DefaultShouldShow simulateShouldShow = new SimulateShouldShow(); private static final DashFragmentData.ShouldShowFunction chooseAppDirShouldShow = new ChooseAppDirShouldShow(); private static final DashFragmentData[] fragmentsData = new DashFragmentData[]{ - new DashFragmentData(DashRateUsFragment.TAG, DashRateUsFragment.class, "Rate us", rateUsShouldShow), - new DashFragmentData(DashFirstTimeFragment.TAG, DashFirstTimeFragment.class, "First time", firstTimeShouldShow), - new DashFragmentData(DashChooseAppDirFragment.TAG, DashChooseAppDirFragment.class, "Choose app dir", chooseAppDirShouldShow), - new DashFragmentData(DashErrorFragment.TAG, DashErrorFragment.class, "Error", errorShouldShow), + new DashFragmentData(DashRateUsFragment.TAG, DashRateUsFragment.class, "Rate us", rateUsShouldShow, true), + new DashFragmentData(DashFirstTimeFragment.TAG, DashFirstTimeFragment.class, "First time", firstTimeShouldShow, true), + new DashFragmentData(DashChooseAppDirFragment.TAG, DashChooseAppDirFragment.class, "Choose app dir", chooseAppDirShouldShow, true), + new DashFragmentData(DashErrorFragment.TAG, DashErrorFragment.class, "Error", errorShouldShow, true), new DashFragmentData(DashNavigationFragment.TAG, DashNavigationFragment.class, "Navigation", defaultShouldShow), new DashFragmentData(DashParkingFragment.TAG, DashParkingFragment.class, "Parking", defaultShouldShow), new DashFragmentData(DashWaypointsFragment.TAG, DashWaypointsFragment.class, "Waypoints", defaultShouldShow), @@ -117,7 +117,7 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks { private DashboardType visibleType; private DashboardType previousVisibleType; private boolean landscape; - private List> fragList = new LinkedList>(); + private List> fragList = new LinkedList<>(); private net.osmand.Location myLocation; private LatLon mapViewLocation; private float heading; @@ -246,7 +246,7 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks { lst.setVisibility(View.GONE); ImageView back = (ImageView) dashboardView.findViewById(R.id.toolbar_back); back.setImageDrawable( - ((OsmandApplication) getMyApplication()).getIconsCache().getIcon(R.drawable.abc_ic_ab_back_mtrl_am_alpha)); + getMyApplication().getIconsCache().getIcon(R.drawable.abc_ic_ab_back_mtrl_am_alpha)); back.setOnClickListener(new View.OnClickListener() { @Override @@ -466,7 +466,7 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks { scrollView.setVisibility(View.GONE); listViewLayout.setVisibility(View.VISIBLE); if (listView instanceof ObservableListView) { - onScrollChanged(((ObservableListView) listView).getScrollY(), false, false); + onScrollChanged(listView.getScrollY(), false, false); } if (refresh) { refreshContent(false); @@ -600,7 +600,7 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks { hideDashboard(false); final Intent intent = new Intent(mapActivity, mapActivity.getMyApplication().getAppCustomization() .getDownloadIndexActivity()); - intent.putExtra(DownloadActivity.FILTER_KEY, f.toString()); + intent.putExtra(DownloadActivity.FILTER_KEY, f); intent.putExtra(DownloadActivity.TAB_TO_OPEN, DownloadActivity.DOWNLOAD_TAB); mapActivity.startActivity(intent); } @@ -824,9 +824,9 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks { gradientToolbar.setAlpha((int) ((1 - t) * 255)); setAlpha(dashboardView, (int) (t * 128), 0); if (t < 1) { - ((Toolbar) dashboardView.findViewById(R.id.toolbar)).setBackgroundDrawable(gradientToolbar); + dashboardView.findViewById(R.id.toolbar).setBackgroundDrawable(gradientToolbar); } else { - ((Toolbar) dashboardView.findViewById(R.id.toolbar)).setBackgroundColor(0xff000000 | baseColor); + dashboardView.findViewById(R.id.toolbar).setBackgroundColor(0xff000000 | baseColor); } } } @@ -905,23 +905,29 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks { } public void blacklistFragmentByTag(String tag) { - FragmentManager manager = mapActivity.getSupportFragmentManager(); - FragmentTransaction transaction = manager.beginTransaction(); - Fragment frag = manager.findFragmentByTag(tag); - transaction.hide(frag).commit(); - + hideFragmentByTag(tag); getMyApplication().getSettings().registerBooleanPreference(SHOULD_SHOW + tag, true) .makeGlobal().set(false); } + public void hideFragmentByTag(String tag) { + FragmentManager manager = mapActivity.getSupportFragmentManager(); + FragmentTransaction transaction = manager.beginTransaction(); + Fragment frag = manager.findFragmentByTag(tag); + transaction.hide(frag).commit(); + } + public void unblacklistFragmentClass(String tag) { + unhideFragmentByTag(tag); + getMyApplication().getSettings().registerBooleanPreference(SHOULD_SHOW + tag, true) + .makeGlobal().set(true); + } + + public void unhideFragmentByTag(String tag) { FragmentManager manager = mapActivity.getSupportFragmentManager(); FragmentTransaction transaction = manager.beginTransaction(); Fragment frag = manager.findFragmentByTag(tag); transaction.show(frag).commit(); - - getMyApplication().getSettings().registerBooleanPreference(SHOULD_SHOW + tag, true) - .makeGlobal().set(true); } View getParentView() { @@ -935,11 +941,8 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks { public static class SettingsShouldShow implements DashFragmentData.ShouldShowFunction { @Override public boolean shouldShow(OsmandSettings settings, MapActivity activity, String tag) { - Log.v(TAG, "shouldShow(" + "settings=" + settings + ", activity=" + activity + ", tag=" + tag + ")"); - boolean shouldShow = settings.registerBooleanPreference(SHOULD_SHOW + tag, true) + return settings.registerBooleanPreference(SHOULD_SHOW + tag, true) .makeGlobal().get(); - Log.v(TAG, "shouldShow=" + shouldShow); - return shouldShow; } } public static class DefaultShouldShow extends SettingsShouldShow { @@ -958,10 +961,11 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks { } } - private static class FirstTimeShouldShow extends DefaultShouldShow { + private static class FirstTimeShouldShow extends SettingsShouldShow { @Override public boolean shouldShow(OsmandSettings settings, MapActivity activity, String tag) { - return !super.shouldShow(settings, activity, tag); + return activity.getMyApplication().getAppInitializer().isFirstTime(activity) + && super.shouldShow(settings, activity, tag); } } diff --git a/OsmAnd/src/net/osmand/plus/dashboard/tools/DashFragmentData.java b/OsmAnd/src/net/osmand/plus/dashboard/tools/DashFragmentData.java index e935c79503..84224b332f 100644 --- a/OsmAnd/src/net/osmand/plus/dashboard/tools/DashFragmentData.java +++ b/OsmAnd/src/net/osmand/plus/dashboard/tools/DashFragmentData.java @@ -9,6 +9,17 @@ public final class DashFragmentData { public final Class fragmentClass; public final String title; public final ShouldShowFunction shouldShowFunction; + public final boolean customDeletionLogic; + + public DashFragmentData(String tag, Class fragmentClass, + String title, ShouldShowFunction shouldShowFunction, + boolean customDeletionLogic) { + this.tag = tag; + this.fragmentClass = fragmentClass; + this.title = title; + this.shouldShowFunction = shouldShowFunction; + this.customDeletionLogic = customDeletionLogic; + } public DashFragmentData(String tag, Class fragmentClass, String title, ShouldShowFunction shouldShowFunction) { @@ -16,6 +27,7 @@ public final class DashFragmentData { this.fragmentClass = fragmentClass; this.title = title; this.shouldShowFunction = shouldShowFunction; + customDeletionLogic = false; } public interface ShouldShowFunction { diff --git a/OsmAnd/src/net/osmand/plus/dashboard/tools/DashboardSettingsDialogFragment.java b/OsmAnd/src/net/osmand/plus/dashboard/tools/DashboardSettingsDialogFragment.java index 698fe4f51f..7df0fc7d90 100644 --- a/OsmAnd/src/net/osmand/plus/dashboard/tools/DashboardSettingsDialogFragment.java +++ b/OsmAnd/src/net/osmand/plus/dashboard/tools/DashboardSettingsDialogFragment.java @@ -20,15 +20,23 @@ import net.osmand.plus.R; import net.osmand.plus.activities.MapActivity; import net.osmand.plus.dashboard.DashboardOnMap; +import java.util.ArrayList; + public class DashboardSettingsDialogFragment extends DialogFragment { + private static final String CHECKED_ITEMS = "checked_items"; private MapActivity mapActivity; private DashFragmentData[] fragmentsData; + private DashFragmentAdapter adapter; @Override public void onAttach(Activity activity) { super.onAttach(activity); mapActivity = (MapActivity) activity; - fragmentsData = mapActivity.getDashboard().getFragmentsData(); + ArrayList fragmentsList = new ArrayList<>(); + for(DashFragmentData fragmentData : mapActivity.getDashboard().getFragmentsData()) { + if (!fragmentData.customDeletionLogic) fragmentsList.add(fragmentData); + } + fragmentsData = fragmentsList.toArray(new DashFragmentData[fragmentsList.size()]); } @NonNull @@ -36,9 +44,13 @@ public class DashboardSettingsDialogFragment extends DialogFragment { public Dialog onCreateDialog(Bundle savedInstanceState) { AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); final OsmandSettings settings = mapActivity.getMyApplication().getSettings(); - final DashFragmentAdapter adapter = - new DashFragmentAdapter(getActivity(), fragmentsData, - settings); + if (savedInstanceState != null && savedInstanceState.containsKey(CHECKED_ITEMS)) { + adapter = new DashFragmentAdapter(getActivity(), fragmentsData, + savedInstanceState.getBooleanArray(CHECKED_ITEMS)); + } else { + adapter = new DashFragmentAdapter(getActivity(), fragmentsData, + settings); + } builder.setTitle(R.string.dahboard_options_dialog_title) .setAdapter(adapter, null) .setPositiveButton(R.string.shared_string_ok, new DialogInterface.OnClickListener() { @@ -52,14 +64,25 @@ public class DashboardSettingsDialogFragment extends DialogFragment { } mapActivity.getDashboard().refreshDashboardFragments(); } - }); - final AlertDialog dialog = builder.create(); - return dialog; + }) + .setNegativeButton(R.string.shared_string_cancel, null); + return builder.create(); + } + + @Override + public void onSaveInstanceState(Bundle outState) { + outState.putBooleanArray(CHECKED_ITEMS, adapter.getCheckedItems()); + super.onSaveInstanceState(outState); } private static class DashFragmentAdapter extends ArrayAdapter { private final boolean[] checkedItems; + public DashFragmentAdapter(Context context, DashFragmentData[] objects, boolean[] checkedItems) { + super(context, 0, objects); + this.checkedItems = checkedItems; + } + public DashFragmentAdapter(Context context, DashFragmentData[] objects, OsmandSettings settings) { super(context, 0, objects); checkedItems = new boolean[objects.length]; @@ -83,16 +106,21 @@ public class DashboardSettingsDialogFragment extends DialogFragment { new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton compoundButton, boolean b) { - Integer position = (Integer) compoundButton.getTag(); - checkedItems[position] = b; + DashViewHolder localViewHolder = (DashViewHolder) compoundButton.getTag(); + checkedItems[localViewHolder.position] = b; + localViewHolder.textView.setTextColor( + checkedItems[localViewHolder.position] ? 0xFF212121 + : 0xFF8c8c8c); } }); } else { viewHolder = (DashViewHolder) convertView.getTag(); } - viewHolder.compoundButton.setTag(position); + viewHolder.position = position; + viewHolder.compoundButton.setTag(viewHolder); viewHolder.compoundButton.setChecked(checkedItems[position]); viewHolder.textView.setText(dashFragmentData.title); + viewHolder.textView.setTextColor(checkedItems[position] ? 0xFF212121 : 0xFF8c8c8c); convertView.setTag(viewHolder); return convertView; } @@ -104,6 +132,7 @@ public class DashboardSettingsDialogFragment extends DialogFragment { private class DashViewHolder { TextView textView; CompoundButton compoundButton; + int position; } } } From 04b8f0fb7aa59e129f56b3d07d83d71dd6f761c8 Mon Sep 17 00:00:00 2001 From: GaidamakUA Date: Mon, 10 Aug 2015 15:35:36 +0300 Subject: [PATCH 27/32] Removed swipe left. Fixed rate us dismiss listener. --- .../plus/dashboard/DashRateUsFragment.java | 39 ++----------------- .../tools/SwipeDismissTouchListener.java | 4 +- 2 files changed, 5 insertions(+), 38 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/dashboard/DashRateUsFragment.java b/OsmAnd/src/net/osmand/plus/dashboard/DashRateUsFragment.java index 74cfe6fc7b..61de43edfe 100644 --- a/OsmAnd/src/net/osmand/plus/dashboard/DashRateUsFragment.java +++ b/OsmAnd/src/net/osmand/plus/dashboard/DashRateUsFragment.java @@ -5,8 +5,6 @@ import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.support.annotation.Nullable; -import android.support.design.widget.Snackbar; -import android.support.v4.view.ViewCompat; import android.util.Log; import android.view.LayoutInflater; import android.view.View; @@ -49,7 +47,7 @@ public class DashRateUsFragment extends DashBaseFragment { new PositiveButtonListener(header, subheader, positiveButton, negativeButton)); negativeButton.setOnClickListener( new NegativeButtonListener(header, subheader, positiveButton, negativeButton)); - mRateUsDismissListener = new RateUsDismissListener(getParentView(), dashboard, TAG, view, settings); + mRateUsDismissListener = new RateUsDismissListener(dashboard, settings); return view; } @@ -228,50 +226,19 @@ public class DashRateUsFragment extends DashBaseFragment { } private static class RateUsDismissListener implements DismissListener { - private View parentView; private DashboardOnMap dashboardOnMap; - private String fragmentTag; - private View fragmentView; private OsmandSettings settings; - private int exNumberOfRuns; - private long exLastDisplayTime; - public RateUsDismissListener(View parentView, DashboardOnMap dashboardOnMap, - String fragmentTag, View fragmentView, OsmandSettings settings) { - this.parentView = parentView; + public RateUsDismissListener(DashboardOnMap dashboardOnMap, OsmandSettings settings) { this.dashboardOnMap = dashboardOnMap; - this.fragmentTag = fragmentTag; - this.fragmentView = fragmentView; this.settings = settings; } @Override public void onDismiss() { - dashboardOnMap.hideFragmentByTag(fragmentTag); - ViewCompat.setTranslationX(fragmentView, 0); - ViewCompat.setAlpha(fragmentView, 1); - Snackbar.make(parentView, dashboardOnMap.getMyApplication().getResources() - .getString(R.string.shared_string_card_was_hidden), Snackbar.LENGTH_LONG) - .setAction(R.string.shared_string_undo, new View.OnClickListener() { - @Override - public void onClick(View view) { - RateUsDismissListener.this.onUndo(exNumberOfRuns, exLastDisplayTime); - } - }) - .show(); settings.RATE_US_STATE.set(RateUsState.IGNORED); - exNumberOfRuns = settings.NUMBER_OF_APPLICATION_STARTS.get(); settings.NUMBER_OF_APPLICATION_STARTS.set(0); - exLastDisplayTime = settings.LAST_DISPLAY_TIME.get(); settings.LAST_DISPLAY_TIME.set(System.currentTimeMillis()); - } - - public void onUndo(int numberOfRuns, long lastDisplayTime) { - dashboardOnMap.unhideFragmentByTag(fragmentTag); - ViewCompat.setTranslationX(fragmentView, 0); - ViewCompat.setAlpha(fragmentView, 1); - settings.NUMBER_OF_APPLICATION_STARTS.set(numberOfRuns); - settings.LAST_DISPLAY_TIME.set(lastDisplayTime); - + dashboardOnMap.refreshDashboardFragments(); } } } diff --git a/OsmAnd/src/net/osmand/plus/widgets/tools/SwipeDismissTouchListener.java b/OsmAnd/src/net/osmand/plus/widgets/tools/SwipeDismissTouchListener.java index cb3b1910b8..d0b50e20e8 100644 --- a/OsmAnd/src/net/osmand/plus/widgets/tools/SwipeDismissTouchListener.java +++ b/OsmAnd/src/net/osmand/plus/widgets/tools/SwipeDismissTouchListener.java @@ -143,7 +143,7 @@ public class SwipeDismissTouchListener implements View.OnTouchListener { dismiss = (velocityX < 0) == (deltaX < 0); dismissRight = mVelocityTracker.getXVelocity() > 0; } - if (dismiss) { + if (dismiss && dismissRight) { // dismiss final boolean finalDismissRight = dismissRight; ViewCompat.animate(mView) @@ -210,7 +210,7 @@ public class SwipeDismissTouchListener implements View.OnTouchListener { mVelocityTracker.addMovement(motionEvent); float deltaX = motionEvent.getRawX() - mDownX; float deltaY = motionEvent.getRawY() - mDownY; - if (Math.abs(deltaX) > mSlop && Math.abs(deltaY) < Math.abs(deltaX) / 2) { + if (deltaX > mSlop && Math.abs(deltaY) < deltaX / 2) { mSwiping = true; mSwipingSlop = (deltaX > 0 ? mSlop : -mSlop); mView.getParent().requestDisallowInterceptTouchEvent(true); From 1ab18f2893cfa635ed029c5b1f00796409871f6c Mon Sep 17 00:00:00 2001 From: GaidamakUA Date: Tue, 11 Aug 2015 16:46:31 +0300 Subject: [PATCH 28/32] First usage screen implemented. --- OsmAnd/build.gradle | 1 + OsmAnd/res/drawable-xhdpi/bg_first_usage.webp | Bin 0 -> 136844 bytes OsmAnd/res/layout/first_usage_fragment.xml | 91 ++++++++++++++++++ OsmAnd/res/layout/main.xml | 4 + OsmAnd/res/values-af/strings.xml | 2 +- OsmAnd/res/values-ar/strings.xml | 2 +- OsmAnd/res/values-be-rBY/strings.xml | 2 +- OsmAnd/res/values-be/strings.xml | 2 +- OsmAnd/res/values-bg/strings.xml | 2 +- OsmAnd/res/values-ca/strings.xml | 2 +- OsmAnd/res/values-cs/strings.xml | 2 +- OsmAnd/res/values-da/strings.xml | 2 +- OsmAnd/res/values-de/strings.xml | 2 +- OsmAnd/res/values-el/strings.xml | 2 +- OsmAnd/res/values-es-rAR/strings.xml | 2 +- OsmAnd/res/values-es/strings.xml | 2 +- OsmAnd/res/values-eu/strings.xml | 2 +- OsmAnd/res/values-fa/strings.xml | 2 +- OsmAnd/res/values-fi/strings.xml | 2 +- OsmAnd/res/values-fr/strings.xml | 2 +- OsmAnd/res/values-gl/strings.xml | 2 +- OsmAnd/res/values-he/strings.xml | 2 +- OsmAnd/res/values-hr/strings.xml | 2 +- OsmAnd/res/values-hu/strings.xml | 2 +- OsmAnd/res/values-it/strings.xml | 2 +- OsmAnd/res/values-ja/strings.xml | 2 +- OsmAnd/res/values-ka/strings.xml | 2 +- OsmAnd/res/values-ko/strings.xml | 2 +- OsmAnd/res/values-land/dimens.xml | 5 + OsmAnd/res/values-lt/strings.xml | 2 +- OsmAnd/res/values-lv/strings.xml | 2 +- OsmAnd/res/values-mr/strings.xml | 2 +- OsmAnd/res/values-nb/strings.xml | 2 +- OsmAnd/res/values-nl/strings.xml | 2 +- OsmAnd/res/values-pl/strings.xml | 2 +- OsmAnd/res/values-pt-rBR/strings.xml | 2 +- OsmAnd/res/values-pt/strings.xml | 2 +- OsmAnd/res/values-ro/strings.xml | 2 +- OsmAnd/res/values-ru/strings.xml | 2 +- OsmAnd/res/values-sc/strings.xml | 2 +- OsmAnd/res/values-sk/strings.xml | 2 +- OsmAnd/res/values-sl/strings.xml | 2 +- OsmAnd/res/values-sv/strings.xml | 2 +- OsmAnd/res/values-tr/strings.xml | 2 +- OsmAnd/res/values-uk/strings.xml | 2 +- OsmAnd/res/values-vi/strings.xml | 2 +- OsmAnd/res/values-zh-rCN/strings.xml | 2 +- OsmAnd/res/values-zh-rTW/strings.xml | 2 +- OsmAnd/res/values/dimens.xml | 2 + OsmAnd/res/values/strings.xml | 5 +- OsmAnd/res/values/styles.xml | 8 +- .../net/osmand/plus/FirstUsageFragment.java | 74 ++++++++++++++ .../osmand/plus/activities/MapActivity.java | 72 ++++++++------ .../rastermaps/OsmandRasterMapsPlugin.java | 39 ++++---- .../net/osmand/plus/widgets/TextViewEx.java | 5 +- cardview/build.gradle | 22 +++++ cardview/libs/android-support-v7-cardview.jar | Bin 0 -> 17568 bytes cardview/src/main/AndroidManifest.xml | 20 ++++ cardview/src/main/res/values/attrs.xml | 42 ++++++++ cardview/src/main/res/values/colors.xml | 26 +++++ cardview/src/main/res/values/dimens.xml | 25 +++++ cardview/src/main/res/values/styles.xml | 31 ++++++ cardview/src/main/resources/.readme | 2 + import-summary.txt | 16 +-- settings.gradle | 3 +- 65 files changed, 465 insertions(+), 114 deletions(-) create mode 100644 OsmAnd/res/drawable-xhdpi/bg_first_usage.webp create mode 100644 OsmAnd/res/layout/first_usage_fragment.xml create mode 100644 OsmAnd/res/values-land/dimens.xml create mode 100644 OsmAnd/src/net/osmand/plus/FirstUsageFragment.java create mode 100644 cardview/build.gradle create mode 100644 cardview/libs/android-support-v7-cardview.jar create mode 100644 cardview/src/main/AndroidManifest.xml create mode 100644 cardview/src/main/res/values/attrs.xml create mode 100644 cardview/src/main/res/values/colors.xml create mode 100644 cardview/src/main/res/values/dimens.xml create mode 100644 cardview/src/main/res/values/styles.xml create mode 100644 cardview/src/main/resources/.readme diff --git a/OsmAnd/build.gradle b/OsmAnd/build.gradle index 6478ce3521..fed8601e39 100644 --- a/OsmAnd/build.gradle +++ b/OsmAnd/build.gradle @@ -302,6 +302,7 @@ repositories { dependencies { compile project(path: ":OsmAnd-java", configuration: "android") compile project(":eclipse-compile:design") + compile project(":cardview") compile fileTree( dir: "libs", include: ["*.jar"], diff --git a/OsmAnd/res/drawable-xhdpi/bg_first_usage.webp b/OsmAnd/res/drawable-xhdpi/bg_first_usage.webp new file mode 100644 index 0000000000000000000000000000000000000000..4900083e15ecb885cd0759f969293d9262a52e9d GIT binary patch literal 136844 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 z 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ℓWcLNnFA{15dDzjg& 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 + + + + + + + + + + + + + + + + + + + + + + +