Merge pull request #10355 from osmandapp/export_fixes
Fix profiles export
This commit is contained in:
commit
ca0c794a71
4 changed files with 43 additions and 15 deletions
|
@ -2313,7 +2313,7 @@ public class OsmandAidlApi {
|
||||||
File exportDir = app.getSettings().getExternalStorageDirectory();
|
File exportDir = app.getSettings().getExternalStorageDirectory();
|
||||||
String fileName = appMode.toHumanString();
|
String fileName = appMode.toHumanString();
|
||||||
SettingsHelper settingsHelper = app.getSettingsHelper();
|
SettingsHelper settingsHelper = app.getSettingsHelper();
|
||||||
settingsItems.addAll(settingsHelper.getFilteredSettingsItems(settingsTypes, false));
|
settingsItems.addAll(settingsHelper.getFilteredSettingsItems(settingsTypes, false, true));
|
||||||
settingsHelper.exportSettings(exportDir, fileName, null, settingsItems, true);
|
settingsHelper.exportSettings(exportDir, fileName, null, settingsItems, true);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -100,7 +100,7 @@ class SettingsImportTask extends BaseLoadAsyncTask<Void, Void, String> {
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
Map<ExportSettingsType, List<?>> allSettingsMap = getSettingsToOperate(pluginIndependentItems, false);
|
Map<ExportSettingsType, List<?>> allSettingsMap = getSettingsToOperate(pluginIndependentItems, false);
|
||||||
List<SettingsItem> settingsList = settingsHelper.getFilteredSettingsItems(allSettingsMap, settingsTypes);
|
List<SettingsItem> settingsList = settingsHelper.getFilteredSettingsItems(allSettingsMap, settingsTypes, false);
|
||||||
settingsHelper.checkDuplicates(file, settingsList, settingsList, getDuplicatesListener(file, replace));
|
settingsHelper.checkDuplicates(file, settingsList, settingsList, getDuplicatesListener(file, replace));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -473,31 +473,31 @@ public class SettingsHelper {
|
||||||
exportSettings(fileDir, fileName, listener, new ArrayList<>(Arrays.asList(items)), exportItemsFiles);
|
exportSettings(fileDir, fileName, listener, new ArrayList<>(Arrays.asList(items)), exportItemsFiles);
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<SettingsItem> getFilteredSettingsItems(List<ExportSettingsType> settingsTypes, boolean globalExport) {
|
public List<SettingsItem> getFilteredSettingsItems(List<ExportSettingsType> settingsTypes, boolean addProfiles, boolean export) {
|
||||||
Map<ExportSettingsType, List<?>> typesMap = new HashMap<>();
|
Map<ExportSettingsType, List<?>> typesMap = new HashMap<>();
|
||||||
typesMap.putAll(getSettingsItems(globalExport));
|
typesMap.putAll(getSettingsItems(addProfiles));
|
||||||
typesMap.putAll(getMyPlacesItems());
|
typesMap.putAll(getMyPlacesItems());
|
||||||
typesMap.putAll(getResourcesItems());
|
typesMap.putAll(getResourcesItems());
|
||||||
|
|
||||||
return getFilteredSettingsItems(typesMap, settingsTypes);
|
return getFilteredSettingsItems(typesMap, settingsTypes, export);
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<SettingsItem> getFilteredSettingsItems(Map<ExportSettingsType, List<?>> allSettingsMap,
|
public List<SettingsItem> getFilteredSettingsItems(Map<ExportSettingsType, List<?>> allSettingsMap,
|
||||||
List<ExportSettingsType> settingsTypes) {
|
List<ExportSettingsType> settingsTypes, boolean export) {
|
||||||
List<SettingsItem> settingsItems = new ArrayList<>();
|
List<SettingsItem> settingsItems = new ArrayList<>();
|
||||||
for (ExportSettingsType settingsType : settingsTypes) {
|
for (ExportSettingsType settingsType : settingsTypes) {
|
||||||
List<?> settingsDataObjects = allSettingsMap.get(settingsType);
|
List<?> settingsDataObjects = allSettingsMap.get(settingsType);
|
||||||
if (settingsDataObjects != null) {
|
if (settingsDataObjects != null) {
|
||||||
settingsItems.addAll(prepareSettingsItems(new ArrayList<>(settingsDataObjects)));
|
settingsItems.addAll(prepareSettingsItems(settingsDataObjects, export));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return settingsItems;
|
return settingsItems;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Map<ExportSettingsCategory, SettingsCategoryItems> getSettingsByCategory(boolean globalExport) {
|
public Map<ExportSettingsCategory, SettingsCategoryItems> getSettingsByCategory(boolean addProfiles) {
|
||||||
Map<ExportSettingsCategory, SettingsCategoryItems> dataList = new LinkedHashMap<>();
|
Map<ExportSettingsCategory, SettingsCategoryItems> dataList = new LinkedHashMap<>();
|
||||||
|
|
||||||
Map<ExportSettingsType, List<?>> settingsItems = getSettingsItems(globalExport);
|
Map<ExportSettingsType, List<?>> settingsItems = getSettingsItems(addProfiles);
|
||||||
Map<ExportSettingsType, List<?>> myPlacesItems = getMyPlacesItems();
|
Map<ExportSettingsType, List<?>> myPlacesItems = getMyPlacesItems();
|
||||||
Map<ExportSettingsType, List<?>> resourcesItems = getResourcesItems();
|
Map<ExportSettingsType, List<?>> resourcesItems = getResourcesItems();
|
||||||
|
|
||||||
|
@ -514,10 +514,10 @@ public class SettingsHelper {
|
||||||
return dataList;
|
return dataList;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Map<ExportSettingsType, List<?>> getSettingsItems(boolean globalExport) {
|
private Map<ExportSettingsType, List<?>> getSettingsItems(boolean addProfiles) {
|
||||||
Map<ExportSettingsType, List<?>> settingsItems = new LinkedHashMap<>();
|
Map<ExportSettingsType, List<?>> settingsItems = new LinkedHashMap<>();
|
||||||
|
|
||||||
if (globalExport) {
|
if (addProfiles) {
|
||||||
List<ApplicationModeBean> appModeBeans = new ArrayList<>();
|
List<ApplicationModeBean> appModeBeans = new ArrayList<>();
|
||||||
for (ApplicationMode mode : ApplicationMode.allPossibleValues()) {
|
for (ApplicationMode mode : ApplicationMode.allPossibleValues()) {
|
||||||
appModeBeans.add(mode.toModeBean());
|
appModeBeans.add(mode.toModeBean());
|
||||||
|
@ -688,7 +688,7 @@ public class SettingsHelper {
|
||||||
return files;
|
return files;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<SettingsItem> prepareSettingsItems(List<? super Object> data) {
|
public List<SettingsItem> prepareSettingsItems(List<?> data, boolean export) {
|
||||||
List<SettingsItem> settingsItems = new ArrayList<>();
|
List<SettingsItem> settingsItems = new ArrayList<>();
|
||||||
List<QuickAction> quickActions = new ArrayList<>();
|
List<QuickAction> quickActions = new ArrayList<>();
|
||||||
List<PoiUIFilter> poiUIFilters = new ArrayList<>();
|
List<PoiUIFilter> poiUIFilters = new ArrayList<>();
|
||||||
|
@ -755,7 +755,14 @@ public class SettingsHelper {
|
||||||
}
|
}
|
||||||
if (!appModeBeans.isEmpty()) {
|
if (!appModeBeans.isEmpty()) {
|
||||||
for (ApplicationModeBean modeBean : appModeBeans) {
|
for (ApplicationModeBean modeBean : appModeBeans) {
|
||||||
settingsItems.add(new ProfileSettingsItem(app, null, modeBean));
|
if (export) {
|
||||||
|
ApplicationMode mode = ApplicationMode.valueOfStringKey(modeBean.stringKey, null);
|
||||||
|
if (mode != null) {
|
||||||
|
settingsItems.add(new ProfileSettingsItem(app, mode));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
settingsItems.add(new ProfileSettingsItem(app, null, modeBean));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!osmNotesPointList.isEmpty()) {
|
if (!osmNotesPointList.isEmpty()) {
|
||||||
|
|
|
@ -24,14 +24,18 @@ import net.osmand.IndexConstants;
|
||||||
import net.osmand.PlatformUtil;
|
import net.osmand.PlatformUtil;
|
||||||
import net.osmand.plus.R;
|
import net.osmand.plus.R;
|
||||||
import net.osmand.plus.settings.backend.ApplicationMode;
|
import net.osmand.plus.settings.backend.ApplicationMode;
|
||||||
|
import net.osmand.plus.settings.backend.ApplicationMode.ApplicationModeBean;
|
||||||
|
import net.osmand.plus.settings.backend.ExportSettingsType;
|
||||||
import net.osmand.plus.settings.backend.backup.FileSettingsItem;
|
import net.osmand.plus.settings.backend.backup.FileSettingsItem;
|
||||||
import net.osmand.plus.settings.backend.backup.SettingsHelper.SettingsExportListener;
|
import net.osmand.plus.settings.backend.backup.SettingsHelper.SettingsExportListener;
|
||||||
import net.osmand.plus.settings.backend.backup.SettingsItem;
|
import net.osmand.plus.settings.backend.backup.SettingsItem;
|
||||||
|
import net.osmand.util.Algorithms;
|
||||||
|
|
||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
@ -73,7 +77,10 @@ public class ExportSettingsFragment extends BaseSettingsListFragment {
|
||||||
progressValue = savedInstanceState.getInt(PROGRESS_VALUE_KEY);
|
progressValue = savedInstanceState.getInt(PROGRESS_VALUE_KEY);
|
||||||
}
|
}
|
||||||
exportMode = true;
|
exportMode = true;
|
||||||
dataList = app.getSettingsHelper().getSettingsByCategory(globalExport);
|
dataList = app.getSettingsHelper().getSettingsByCategory(true);
|
||||||
|
if (!globalExport && savedInstanceState == null) {
|
||||||
|
updateSelectedProfile();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
|
@ -122,6 +129,20 @@ public class ExportSettingsFragment extends BaseSettingsListFragment {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void updateSelectedProfile() {
|
||||||
|
List<Object> profileItems = getItemsForType(ExportSettingsType.PROFILE);
|
||||||
|
if (!Algorithms.isEmpty(profileItems)) {
|
||||||
|
for (Object item : profileItems) {
|
||||||
|
if (item instanceof ApplicationModeBean && appMode.getStringKey().equals(((ApplicationModeBean) item).stringKey)) {
|
||||||
|
List<Object> selectedProfiles = new ArrayList<>();
|
||||||
|
selectedProfiles.add(item);
|
||||||
|
selectedItemsMap.put(ExportSettingsType.PROFILE, selectedProfiles);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void prepareFile() {
|
private void prepareFile() {
|
||||||
if (app != null) {
|
if (app != null) {
|
||||||
exportingStarted = true;
|
exportingStarted = true;
|
||||||
|
@ -129,7 +150,7 @@ public class ExportSettingsFragment extends BaseSettingsListFragment {
|
||||||
showExportProgressDialog();
|
showExportProgressDialog();
|
||||||
File tempDir = FileUtils.getTempDir(app);
|
File tempDir = FileUtils.getTempDir(app);
|
||||||
String fileName = getFileName();
|
String fileName = getFileName();
|
||||||
List<SettingsItem> items = app.getSettingsHelper().prepareSettingsItems(adapter.getData());
|
List<SettingsItem> items = app.getSettingsHelper().prepareSettingsItems(adapter.getData(), true);
|
||||||
progress.setMax(getMaxProgress(items));
|
progress.setMax(getMaxProgress(items));
|
||||||
app.getSettingsHelper().exportSettings(tempDir, fileName, getSettingsExportListener(), items, true);
|
app.getSettingsHelper().exportSettings(tempDir, fileName, getSettingsExportListener(), items, true);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue