Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 62d27f5c authored by hoffc's avatar hoffc Committed by Linux Build Service Account
Browse files

DeskClock: Fix the issue of duplicate city&timezone pair.

World clock can select the same city&timezone pair multiple times,which
results in duplicate records in cities list.

Change-Id: Idf97e85061b61548a026698bf73269477c3efdc9
CRs-Fixed: 1046190
parent 01b1eea7
Loading
Loading
Loading
Loading
+8 −15
Original line number Diff line number Diff line
@@ -24,13 +24,10 @@ import android.content.SharedPreferences;
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
import android.preference.PreferenceManager;

import com.android.deskclock.LogUtils;
import com.android.deskclock.R;
import com.android.deskclock.Utils;
import com.android.deskclock.data.DataModel.CitySort;
import com.android.deskclock.settings.SettingsActivity;
import com.android.deskclock.worldclock.db.DbCities;
import com.android.deskclock.worldclock.db.DbCity;

import java.util.ArrayList;
import java.util.Collection;
@@ -103,17 +100,6 @@ final class CityModel {
            final List<City> allCities = new ArrayList<>(getCityMap().size());
            allCities.addAll(selected);
            allCities.addAll(getUnselectedCities());

            //add the clock db data to all cities list
            List<DbCity> dbCities = DbCities.getCities(mContext.getContentResolver());
            for (int i = 0; i < dbCities.size(); i++) {
                DbCity dbCity = dbCities.get(i);
                String formatName = dbCity.name.charAt(0) + "=" + dbCity.name;
                LogUtils.d(LogUtils.LOGTAG, "getCities: formatName = " + formatName);
                allCities.add(CityDAO.createCity("UD" + dbCity.id,
                        formatName, dbCity.tz));
            }

            mAllCities = Collections.unmodifiableList(allCities);
        }

@@ -233,7 +219,10 @@ final class CityModel {
    }

    private Map<String, City> getCityMap() {
        if (mCityMap == null) {
            mCityMap = CityDAO.getCities(mContext);
        }

        return mCityMap;
    }

@@ -280,4 +269,8 @@ final class CityModel {
            }
        }
    }

    void cleanCityMap() {
        mCityMap = null;
    }
}
 No newline at end of file
+5 −0
Original line number Diff line number Diff line
@@ -605,4 +605,9 @@ public final class DataModel {
            return mExecuted;
        }
    }

    public void cleanCityMap() {
        enforceMainLooper();
        mCityModel.cleanCityMap();
    }
}
 No newline at end of file
+6 −0
Original line number Diff line number Diff line
@@ -425,6 +425,9 @@ public final class CitySelectionActivity extends BaseActivity
                                // Remove from the list and from the selection
                                mUserSelectedCities.remove(c.getId());

                                //clean cities map, recreate mCityMap
                                DataModel.getDataModel().cleanCityMap();

                                // set the selected cities in order to recreate list content
                                DataModel.getDataModel().setSelectedCities(getSelectedCities());

@@ -714,6 +717,9 @@ public final class CitySelectionActivity extends BaseActivity

        //insert new record to DB
        if (insertNewRecordToClockDB(name, tz)) {
            //clean cities map, recreate mCityMap
            DataModel.getDataModel().cleanCityMap();

            //recreate allCities selectedCities list
            DataModel.getDataModel().setSelectedCities(mCitiesAdapter.getSelectedCities());