X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/4c50eb4d2dd1fba177d743315ae52223430db8cb..901b6ac61e4a84d281e86b4989aa099801b28de7:/src/com/owncloud/android/ui/activity/ConflictsResolveActivity.java diff --git a/src/com/owncloud/android/ui/activity/ConflictsResolveActivity.java b/src/com/owncloud/android/ui/activity/ConflictsResolveActivity.java index 8f008e74..fbbc5dff 100644 --- a/src/com/owncloud/android/ui/activity/ConflictsResolveActivity.java +++ b/src/com/owncloud/android/ui/activity/ConflictsResolveActivity.java @@ -1,10 +1,10 @@ /* ownCloud Android client application * Copyright (C) 2012 Bartek Przybylski + * Copyright (C) 2012-2013 ownCloud Inc. * * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. + * it under the terms of the GNU General Public License version 2, + * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -18,53 +18,38 @@ package com.owncloud.android.ui.activity; -import com.actionbarsherlock.app.SherlockFragmentActivity; +import com.actionbarsherlock.app.ActionBar; import com.owncloud.android.datamodel.OCFile; import com.owncloud.android.files.services.FileUploader; import com.owncloud.android.ui.dialog.ConflictsResolveDialog; import com.owncloud.android.ui.dialog.ConflictsResolveDialog.Decision; import com.owncloud.android.ui.dialog.ConflictsResolveDialog.OnConflictDecisionMadeListener; +import com.owncloud.android.utils.DisplayUtils; +import com.owncloud.android.utils.Log_OC; -import android.accounts.Account; import android.content.Intent; import android.os.Bundle; -import android.util.Log; /** * Wrapper activity which will be launched if keep-in-sync file will be modified by external * application. * * @author Bartek Przybylski - * + * @author David A. Velasco */ -public class ConflictsResolveActivity extends SherlockFragmentActivity implements OnConflictDecisionMadeListener { - - public static final String EXTRA_FILE = "FILE"; - public static final String EXTRA_ACCOUNT = "ACCOUNT"; +public class ConflictsResolveActivity extends FileActivity implements OnConflictDecisionMadeListener { private String TAG = ConflictsResolveActivity.class.getSimpleName(); - //private String mRemotePath; - - //private String mLocalPath; - - private OCFile mFile; - private Account mOCAccount; - @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - - //mRemotePath = getIntent().getStringExtra("remotepath"); - //mLocalPath = getIntent().getStringExtra("localpath"); - mFile = getIntent().getParcelableExtra(EXTRA_FILE); - mOCAccount = getIntent().getParcelableExtra(EXTRA_ACCOUNT); - ConflictsResolveDialog d = ConflictsResolveDialog.newInstance(mFile.getRemotePath(), this); - d.showDialog(this); + ActionBar actionBar = getSupportActionBar(); + actionBar.setIcon(DisplayUtils.getSeasonalIconId()); } @Override - public void ConflictDecisionMade(Decision decision) { + public void conflictDecisionMade(Decision decision) { Intent i = new Intent(getApplicationContext(), FileUploader.class); switch (decision) { @@ -73,19 +58,47 @@ public class ConflictsResolveActivity extends SherlockFragmentActivity implement return; case OVERWRITE: i.putExtra(FileUploader.KEY_FORCE_OVERWRITE, true); - case KEEP_BOTH: // fallthrough + break; + case KEEP_BOTH: + i.putExtra(FileUploader.KEY_LOCAL_BEHAVIOUR, FileUploader.LOCAL_BEHAVIOUR_MOVE); break; default: - Log.wtf(TAG, "Unhandled conflict decision " + decision); + Log_OC.wtf(TAG, "Unhandled conflict decision " + decision); return; } - i.putExtra(FileUploader.KEY_ACCOUNT, mOCAccount); - //i.putExtra(FileUploader.KEY_REMOTE_FILE, mRemotePath); - //i.putExtra(FileUploader.KEY_LOCAL_FILE, mLocalPath); - i.putExtra(FileUploader.KEY_FILE, mFile); + i.putExtra(FileUploader.KEY_ACCOUNT, getAccount()); + i.putExtra(FileUploader.KEY_FILE, getFile()); i.putExtra(FileUploader.KEY_UPLOAD_TYPE, FileUploader.UPLOAD_SINGLE_FILE); startService(i); finish(); } + + @Override + protected void onAccountSet(boolean stateWasRecovered) { + super.onAccountSet(stateWasRecovered); + if (getAccount() != null) { + OCFile file = getFile(); + if (getFile() == null) { + Log_OC.e(TAG, "No conflictive file received"); + finish(); + } else { + /// Check whether the 'main' OCFile handled by the Activity is contained in the current Account + file = getStorageManager().getFileByPath(file.getRemotePath()); // file = null if not in the current Account + if (file != null) { + setFile(file); + ConflictsResolveDialog d = ConflictsResolveDialog.newInstance(file.getRemotePath(), this); + d.showDialog(this); + + } else { + // account was changed to a different one - just finish + finish(); + } + } + + } else { + finish(); + } + + } }