use of net.osmand.plus.backup.PrepareBackupResult in project Osmand by osmandapp.
the class ActionButtonViewHolder method bindView.
public void bindView(@NonNull MapActivity mapActivity, @NonNull PrepareBackupResult backup, @Nullable BackupExportListener exportListener, boolean uploadItemsVisible, boolean nightMode) {
OsmandApplication app = (OsmandApplication) itemView.getContext().getApplicationContext();
BackupStatus status = BackupStatus.getBackupStatus(app, backup);
NetworkSettingsHelper settingsHelper = app.getNetworkSettingsHelper();
if (settingsHelper.isBackupExporting()) {
actionButton.setOnClickListener(v -> {
settingsHelper.cancelImport();
settingsHelper.cancelExport();
});
UiUtilities.setupDialogButton(nightMode, actionButton, DialogButtonType.SECONDARY_ACTIVE, R.string.shared_string_cancel);
} else if (status == BackupStatus.MAKE_BACKUP || status == BackupStatus.CONFLICTS) {
actionButton.setOnClickListener(v -> {
try {
BackupInfo info = backup.getBackupInfo();
List<SettingsItem> items = info.itemsToUpload;
if (!items.isEmpty() || !Algorithms.isEmpty(info.filteredFilesToDelete)) {
settingsHelper.exportSettings(BACKUP_ITEMS_KEY, items, info.itemsToDelete, exportListener);
}
} catch (IllegalStateException e) {
log.error(e.getMessage(), e);
}
});
UiUtilities.setupDialogButton(nightMode, actionButton, DialogButtonType.SECONDARY_ACTIVE, R.string.backup_now);
} else if (status == BackupStatus.NO_INTERNET_CONNECTION || status == BackupStatus.ERROR) {
actionButton.setOnClickListener(v -> app.getBackupHelper().prepareBackup());
UiUtilities.setupDialogButton(nightMode, actionButton, DialogButtonType.SECONDARY_ACTIVE, R.string.retry);
} else if (status == BackupStatus.SUBSCRIPTION_EXPIRED) {
actionButton.setOnClickListener(v -> {
if (Version.isInAppPurchaseSupported()) {
OsmAndProPlanFragment.showInstance(mapActivity);
} else {
PromoCodeBottomSheet.showInstance(mapActivity.getSupportFragmentManager());
}
});
UiUtilities.setupDialogButton(nightMode, actionButton, DialogButtonType.SECONDARY_ACTIVE, R.string.renew_subscription);
}
AndroidUiHelper.updateVisibility(divider, uploadItemsVisible);
}
use of net.osmand.plus.backup.PrepareBackupResult in project Osmand by osmandapp.
the class RestoreSettingsFragment method collectAndReadSettings.
private void collectAndReadSettings() {
BackupCollectListener collectListener = new BackupCollectListener() {
@Nullable
private SettingsItem getRestoreItem(@NonNull List<SettingsItem> items, @NonNull RemoteFile remoteFile) {
for (SettingsItem item : items) {
if (BackupHelper.applyItem(item, remoteFile.getType(), remoteFile.getName())) {
return item;
}
}
return null;
}
@Override
public void onBackupCollectFinished(boolean succeed, boolean empty, @NonNull List<SettingsItem> items, @NonNull List<RemoteFile> remoteFiles) {
FragmentActivity activity = getActivity();
if (AndroidUtils.isActivityNotDestroyed(activity)) {
toolbarLayout.setTitle(getString(R.string.restore_from_osmand_cloud));
description.setText(R.string.choose_what_to_restore);
buttonsContainer.setVisibility(View.VISIBLE);
progressBar.setVisibility(View.GONE);
if (succeed) {
PrepareBackupResult backup = app.getBackupHelper().getBackup();
BackupInfo info = backup.getBackupInfo();
Set<SettingsItem> itemsForRestore = new HashSet<>();
if (info != null) {
for (RemoteFile remoteFile : info.filesToDownload) {
SettingsItem restoreItem = getRestoreItem(items, remoteFile);
if (restoreItem != null) {
itemsForRestore.add(restoreItem);
}
}
}
setSettingsItems(new ArrayList<>(itemsForRestore));
dataList = SettingsHelper.getSettingsToOperateByCategory(settingsItems, false, false);
adapter.updateSettingsItems(dataList, selectedItemsMap);
}
}
}
};
try {
settingsHelper.collectSettings(RESTORE_ITEMS_KEY, true, collectListener);
} catch (IllegalStateException e) {
LOG.error(e.getMessage(), e);
}
}
Aggregations