Added duplication check for favorite points

This commit is contained in:
Denis_Bars 2014-09-29 12:30:38 +03:00
parent f509109a6c
commit 756182924c
2 changed files with 39 additions and 1 deletions

View file

@ -9,6 +9,8 @@
3. All your modified/created strings are in the top of the file (to make easier find what\'s translated).
PLEASE: Have a look at http://code.google.com/p/osmand/wiki/UIConsistency, it may really improve your and our work :-) Thx - Hardy
-->
<string name="fav_point_dublicate">Favorite point name duplicate</string>
<string name="fav_point_dublicate_message">We changed your favorite point name to %1$s to avoid dublicated names.</string>
<string name="text_size_descr">Set the text size on the map.</string>
<string name="text_size">Text size</string>
<string name="traffic_warning_speed_limit">Speed limit</string>

View file

@ -10,6 +10,12 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
import android.app.AlertDialog;
import android.content.ActivityNotFoundException;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
import android.widget.Toast;
import net.osmand.PlatformUtil;
import net.osmand.data.FavouritePoint;
import net.osmand.plus.GPXUtilities.GPXFile;
@ -140,6 +146,10 @@ public class FavouritesDbHelper {
return true;
}
FavoriteGroup group = getOrCreateGroup(p, 0);
//making sure that dublicated names will not occur in favorites
checkDublicates(p);
if (!p.getName().equals("")) {
p.setVisible(group.visible);
p.setColor(group.color);
@ -149,10 +159,36 @@ public class FavouritesDbHelper {
if (saveImmediately) {
saveCurrentPointsIntoFile();
}
return true;
}
private void checkDublicates(FavouritePoint p){
boolean fl = true;
String index = "";
int number = 0;
String name = p.getName();
while (fl){
fl = false;
for (FavouritePoint fp : cachedFavoritePoints){
if (fp.getName().equals(name)){
number++;
index = " (" + number + ")";
name = p.getName() + index;
fl=true;
break;
}
}
}
if (index.length() > 0){
p.setName(name);
AlertDialog.Builder builder = new AlertDialog.Builder(context.getMapActivity());
builder.setTitle(R.string.fav_point_dublicate);
builder.setMessage(context.getString(R.string.fav_point_dublicate_message, name));
builder.setPositiveButton(R.string.default_buttons_ok, null);
builder.show();
}
}
public boolean editFavouriteName(FavouritePoint p, String newName, String category) {
String oldCategory = p.getCategory();