Fix find name duplicates

This commit is contained in:
Dima-1 2019-12-23 12:29:17 +02:00
parent 2497dc1640
commit 9d04815a66

View file

@ -58,10 +58,11 @@ public class ProfileAppearanceFragment extends BaseSettingsFragment {
private static final String SELECT_ICON = "select_icon"; private static final String SELECT_ICON = "select_icon";
private static final String COLOR_ITEMS = "color_items"; private static final String COLOR_ITEMS = "color_items";
private static final String ICON_ITEMS = "icon_items"; private static final String ICON_ITEMS = "icon_items";
private static final String SELECT_MAP_ICON = "select_map_icon"; // private static final String SELECT_MAP_ICON = "select_map_icon";
private static final String SELECT_NAV_ICON = "select_nav_icon"; // private static final String SELECT_NAV_ICON = "select_nav_icon";
public static final String PROFILE_NAME_KEY = "profile_name_key"; public static final String PROFILE_NAME_KEY = "profile_name_key";
public static final String PROFILE_STRINGKEY_KEY = "profile_stringkey_key";
public static final String PROFILE_ICON_RES_KEY = "profile_icon_res_key"; public static final String PROFILE_ICON_RES_KEY = "profile_icon_res_key";
public static final String PROFILE_COLOR_KEY = "profile_color_key"; public static final String PROFILE_COLOR_KEY = "profile_color_key";
public static final String PROFILE_PARENT_KEY = "profile_parent_key"; public static final String PROFILE_PARENT_KEY = "profile_parent_key";
@ -73,7 +74,6 @@ public class ProfileAppearanceFragment extends BaseSettingsFragment {
private EditText profileName; private EditText profileName;
private FlowLayout colorItems; private FlowLayout colorItems;
private FlowLayout iconItems; private FlowLayout iconItems;
private boolean isNewProfile = false;
@Override @Override
public void onCreate(Bundle savedInstanceState) { public void onCreate(Bundle savedInstanceState) {
@ -91,14 +91,13 @@ public class ProfileAppearanceFragment extends BaseSettingsFragment {
} }
} }
if (baseModeForNewProfile != null) { if (baseModeForNewProfile != null) {
profile.stringKey = baseModeForNewProfile.getStringKey(); profile.stringKey = baseModeForNewProfile.getStringKey() + "_" + System.currentTimeMillis();
profile.parent = baseModeForNewProfile; profile.parent = baseModeForNewProfile;
profile.name = baseModeForNewProfile.toHumanString(getContext()); profile.name = baseModeForNewProfile.toHumanString(getContext());
profile.color = baseModeForNewProfile.getIconColorInfo(); profile.color = baseModeForNewProfile.getIconColorInfo();
profile.iconRes = baseModeForNewProfile.getIconRes(); profile.iconRes = baseModeForNewProfile.getIconRes();
profile.routingProfile = baseModeForNewProfile.getRoutingProfile(); profile.routingProfile = baseModeForNewProfile.getRoutingProfile();
profile.routeService = baseModeForNewProfile.getRouteService(); profile.routeService = baseModeForNewProfile.getRouteService();
isNewProfile = true;
} else { } else {
profile.stringKey = getSelectedAppMode().getStringKey(); profile.stringKey = getSelectedAppMode().getStringKey();
profile.parent = getSelectedAppMode().getParent(); profile.parent = getSelectedAppMode().getParent();
@ -185,6 +184,7 @@ public class ProfileAppearanceFragment extends BaseSettingsFragment {
private void saveState(Bundle outState) { private void saveState(Bundle outState) {
outState.putString(PROFILE_NAME_KEY, changedProfile.name); outState.putString(PROFILE_NAME_KEY, changedProfile.name);
outState.putString(PROFILE_STRINGKEY_KEY, changedProfile.stringKey);
outState.putInt(PROFILE_ICON_RES_KEY, changedProfile.iconRes); outState.putInt(PROFILE_ICON_RES_KEY, changedProfile.iconRes);
outState.putSerializable(PROFILE_COLOR_KEY, changedProfile.color); outState.putSerializable(PROFILE_COLOR_KEY, changedProfile.color);
if (changedProfile.parent != null) { if (changedProfile.parent != null) {
@ -194,10 +194,11 @@ public class ProfileAppearanceFragment extends BaseSettingsFragment {
private void restoreState(Bundle savedInstanceState) { private void restoreState(Bundle savedInstanceState) {
changedProfile.name = savedInstanceState.getString(PROFILE_NAME_KEY); changedProfile.name = savedInstanceState.getString(PROFILE_NAME_KEY);
changedProfile.stringKey = savedInstanceState.getString(PROFILE_STRINGKEY_KEY);
changedProfile.iconRes = savedInstanceState.getInt(PROFILE_ICON_RES_KEY); changedProfile.iconRes = savedInstanceState.getInt(PROFILE_ICON_RES_KEY);
changedProfile.color = (ApplicationMode.ProfileIconColors) savedInstanceState.getSerializable(PROFILE_COLOR_KEY); changedProfile.color = (ApplicationMode.ProfileIconColors) savedInstanceState.getSerializable(PROFILE_COLOR_KEY);
String stringKey = savedInstanceState.getString(PROFILE_PARENT_KEY); String parentStringKey = savedInstanceState.getString(PROFILE_PARENT_KEY);
changedProfile.parent = ApplicationMode.valueOfStringKey(stringKey, null); changedProfile.parent = ApplicationMode.valueOfStringKey(parentStringKey, null);
} }
@Override @Override
@ -452,13 +453,8 @@ public class ProfileAppearanceFragment extends BaseSettingsFragment {
return false; return false;
} }
String customStringKey = profile.stringKey;
if (isNewProfile) {
customStringKey = profile.stringKey + "_" + System.currentTimeMillis();
}
ApplicationMode.ApplicationModeBuilder builder = ApplicationMode ApplicationMode.ApplicationModeBuilder builder = ApplicationMode
.createCustomMode(changedProfile.parent, changedProfile.name.trim(), customStringKey) .createCustomMode(changedProfile.parent, changedProfile.name.trim(), changedProfile.stringKey)
.icon(app, ApplicationMode.ProfileIcons.getResStringByResId(changedProfile.iconRes)) .icon(app, ApplicationMode.ProfileIcons.getResStringByResId(changedProfile.iconRes))
.setRouteService(changedProfile.routeService) .setRouteService(changedProfile.routeService)
.setRoutingProfile(changedProfile.routingProfile) .setRoutingProfile(changedProfile.routingProfile)
@ -472,8 +468,8 @@ public class ProfileAppearanceFragment extends BaseSettingsFragment {
private boolean hasNameDuplicate() { private boolean hasNameDuplicate() {
for (ApplicationMode m : ApplicationMode.allPossibleValues()) { for (ApplicationMode m : ApplicationMode.allPossibleValues()) {
if (m.toHumanString(app).equals(changedProfile.name) if (m.toHumanString(app).equals(changedProfile.name) &&
&& (m.getStringKey().equals(profile.stringKey) && isNewProfile)) { !m.getStringKey().equals(profile.stringKey)) {
return true; return true;
} }
} }