package co.smartreceipts.android.sync.widget.backups;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.DialogFragment;
import com.google.common.base.Preconditions;
import javax.inject.Inject;
import co.smartreceipts.android.R;
import co.smartreceipts.android.activities.NavigationHandler;
import co.smartreceipts.android.sync.BackupProvidersManager;
import co.smartreceipts.android.sync.model.RemoteBackupMetadata;
import dagger.android.support.AndroidSupportInjection;
public class DeleteRemoteBackupDialogFragment extends DialogFragment implements DialogInterface.OnClickListener {
private static final String ARG_BACKUP_METADATA = "arg_backup_metadata";
@Inject
BackupProvidersManager backupProvidersManager;
@Inject
NavigationHandler navigationHandler;
private RemoteBackupMetadata backupMetadata;
public static DeleteRemoteBackupDialogFragment newInstance(@NonNull RemoteBackupMetadata remoteBackupMetadata) {
final DeleteRemoteBackupDialogFragment fragment = new DeleteRemoteBackupDialogFragment();
final Bundle args = new Bundle();
args.putParcelable(ARG_BACKUP_METADATA, remoteBackupMetadata);
fragment.setArguments(args);
return fragment;
}
@Override
public void onAttach(Context context) {
AndroidSupportInjection.inject(this);
super.onAttach(context);
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
backupMetadata = getArguments().getParcelable(ARG_BACKUP_METADATA);
Preconditions.checkNotNull(backupMetadata, "This class requires that a RemoteBackupMetadata instance be provided");
}
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
final AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
builder.setTitle(R.string.dialog_remote_backup_delete_title);
if (backupMetadata.getSyncDeviceId().equals(backupProvidersManager.getDeviceSyncId())) {
builder.setMessage(getString(R.string.dialog_remote_backup_delete_message_this_device));
} else {
builder.setMessage(getString(R.string.dialog_remote_backup_delete_message, backupMetadata.getSyncDeviceName()));
}
builder.setCancelable(true);
builder.setPositiveButton(R.string.dialog_remote_backup_delete_positive, this);
builder.setNegativeButton(android.R.string.cancel, this);
return builder.create();
}
@Override
public void onClick(DialogInterface dialogInterface, int which) {
if (which == DialogInterface.BUTTON_POSITIVE) {
navigationHandler.showDialog(DeleteRemoteBackupProgressDialogFragment.newInstance(backupMetadata));
}
dismiss();
}
}