|
@@ -21,13 +21,17 @@ import android.accounts.Account;
|
|
import android.accounts.AccountManager;
|
|
import android.accounts.AccountManager;
|
|
import android.accounts.AccountManagerCallback;
|
|
import android.accounts.AccountManagerCallback;
|
|
import android.accounts.AccountManagerFuture;
|
|
import android.accounts.AccountManagerFuture;
|
|
|
|
+import android.content.ComponentName;
|
|
|
|
+import android.content.Context;
|
|
import android.content.Intent;
|
|
import android.content.Intent;
|
|
|
|
+import android.content.ServiceConnection;
|
|
import android.content.SharedPreferences;
|
|
import android.content.SharedPreferences;
|
|
import android.content.pm.PackageInfo;
|
|
import android.content.pm.PackageInfo;
|
|
import android.content.pm.PackageManager.NameNotFoundException;
|
|
import android.content.pm.PackageManager.NameNotFoundException;
|
|
import android.net.Uri;
|
|
import android.net.Uri;
|
|
import android.os.Bundle;
|
|
import android.os.Bundle;
|
|
import android.os.Handler;
|
|
import android.os.Handler;
|
|
|
|
+import android.os.IBinder;
|
|
import android.preference.CheckBoxPreference;
|
|
import android.preference.CheckBoxPreference;
|
|
import android.preference.Preference;
|
|
import android.preference.Preference;
|
|
import android.preference.Preference.OnPreferenceChangeListener;
|
|
import android.preference.Preference.OnPreferenceChangeListener;
|
|
@@ -50,9 +54,14 @@ import com.owncloud.android.MainApp;
|
|
import com.owncloud.android.R;
|
|
import com.owncloud.android.R;
|
|
import com.owncloud.android.authentication.AccountUtils;
|
|
import com.owncloud.android.authentication.AccountUtils;
|
|
import com.owncloud.android.authentication.AuthenticatorActivity;
|
|
import com.owncloud.android.authentication.AuthenticatorActivity;
|
|
|
|
+import com.owncloud.android.datamodel.FileDataStorageManager;
|
|
import com.owncloud.android.datamodel.OCFile;
|
|
import com.owncloud.android.datamodel.OCFile;
|
|
import com.owncloud.android.db.DbHandler;
|
|
import com.owncloud.android.db.DbHandler;
|
|
|
|
+import com.owncloud.android.files.FileOperationsHelper;
|
|
|
|
+import com.owncloud.android.files.services.FileDownloader;
|
|
|
|
+import com.owncloud.android.files.services.FileUploader;
|
|
import com.owncloud.android.lib.common.utils.Log_OC;
|
|
import com.owncloud.android.lib.common.utils.Log_OC;
|
|
|
|
+import com.owncloud.android.services.OperationsService;
|
|
import com.owncloud.android.ui.RadioButtonPreference;
|
|
import com.owncloud.android.ui.RadioButtonPreference;
|
|
import com.owncloud.android.utils.DisplayUtils;
|
|
import com.owncloud.android.utils.DisplayUtils;
|
|
|
|
|
|
@@ -63,7 +72,8 @@ import com.owncloud.android.utils.DisplayUtils;
|
|
* @author Bartek Przybylski
|
|
* @author Bartek Przybylski
|
|
* @author David A. Velasco
|
|
* @author David A. Velasco
|
|
*/
|
|
*/
|
|
-public class Preferences extends SherlockPreferenceActivity implements AccountManagerCallback<Boolean> {
|
|
|
|
|
|
+public class Preferences extends SherlockPreferenceActivity
|
|
|
|
+ implements AccountManagerCallback<Boolean>, ComponentsGetter {
|
|
|
|
|
|
private static final String TAG = "OwnCloudPreferences";
|
|
private static final String TAG = "OwnCloudPreferences";
|
|
|
|
|
|
@@ -88,6 +98,9 @@ public class Preferences extends SherlockPreferenceActivity implements AccountMa
|
|
private Preference mPrefInstantVideoUploadPathWiFi;
|
|
private Preference mPrefInstantVideoUploadPathWiFi;
|
|
private String mUploadVideoPath;
|
|
private String mUploadVideoPath;
|
|
|
|
|
|
|
|
+ protected FileDownloader.FileDownloaderBinder mDownloaderBinder = null;
|
|
|
|
+ protected FileUploader.FileUploaderBinder mUploaderBinder = null;
|
|
|
|
+ private ServiceConnection mDownloadServiceConnection, mUploadServiceConnection = null;
|
|
|
|
|
|
@SuppressWarnings("deprecation")
|
|
@SuppressWarnings("deprecation")
|
|
@Override
|
|
@Override
|
|
@@ -199,13 +212,13 @@ public class Preferences extends SherlockPreferenceActivity implements AccountMa
|
|
String username = currentAccount.name.substring(0, currentAccount.name.lastIndexOf('@'));
|
|
String username = currentAccount.name.substring(0, currentAccount.name.lastIndexOf('@'));
|
|
|
|
|
|
String recommendSubject = String.format(getString(R.string.recommend_subject), appName);
|
|
String recommendSubject = String.format(getString(R.string.recommend_subject), appName);
|
|
- String recommendText = String.format(getString(R.string.recommend_text), appName, downloadUrl, username);
|
|
|
|
|
|
+ String recommendText = String.format(getString(R.string.recommend_text),
|
|
|
|
+ appName, downloadUrl, username);
|
|
|
|
|
|
intent.putExtra(Intent.EXTRA_SUBJECT, recommendSubject);
|
|
intent.putExtra(Intent.EXTRA_SUBJECT, recommendSubject);
|
|
intent.putExtra(Intent.EXTRA_TEXT, recommendText);
|
|
intent.putExtra(Intent.EXTRA_TEXT, recommendText);
|
|
startActivity(intent);
|
|
startActivity(intent);
|
|
|
|
|
|
-
|
|
|
|
return(true);
|
|
return(true);
|
|
|
|
|
|
}
|
|
}
|
|
@@ -337,6 +350,18 @@ public class Preferences extends SherlockPreferenceActivity implements AccountMa
|
|
loadInstantUploadPath();
|
|
loadInstantUploadPath();
|
|
loadInstantUploadVideoPath();
|
|
loadInstantUploadVideoPath();
|
|
|
|
|
|
|
|
+ /* ComponentsGetter */
|
|
|
|
+ mDownloadServiceConnection = newTransferenceServiceConnection();
|
|
|
|
+ if (mDownloadServiceConnection != null) {
|
|
|
|
+ bindService(new Intent(this, FileDownloader.class), mDownloadServiceConnection,
|
|
|
|
+ Context.BIND_AUTO_CREATE);
|
|
|
|
+ }
|
|
|
|
+ mUploadServiceConnection = newTransferenceServiceConnection();
|
|
|
|
+ if (mUploadServiceConnection != null) {
|
|
|
|
+ bindService(new Intent(this, FileUploader.class), mUploadServiceConnection,
|
|
|
|
+ Context.BIND_AUTO_CREATE);
|
|
|
|
+ }
|
|
|
|
+
|
|
}
|
|
}
|
|
|
|
|
|
private void toggleInstantPictureOptions(Boolean value){
|
|
private void toggleInstantPictureOptions(Boolean value){
|
|
@@ -402,6 +427,7 @@ public class Preferences extends SherlockPreferenceActivity implements AccountMa
|
|
|
|
|
|
// Remove account
|
|
// Remove account
|
|
am.removeAccount(a, this, mHandler);
|
|
am.removeAccount(a, this, mHandler);
|
|
|
|
+ Log_OC.d(TAG, "Remove an account " + a.name);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -412,6 +438,13 @@ public class Preferences extends SherlockPreferenceActivity implements AccountMa
|
|
@Override
|
|
@Override
|
|
public void run(AccountManagerFuture<Boolean> future) {
|
|
public void run(AccountManagerFuture<Boolean> future) {
|
|
if (future.isDone()) {
|
|
if (future.isDone()) {
|
|
|
|
+ // after remove account
|
|
|
|
+ Account account = new Account(mAccountName, MainApp.getAccountType());
|
|
|
|
+ if (!AccountUtils.exists(account, MainApp.getAppContext())) {
|
|
|
|
+ // Cancel tranfers
|
|
|
|
+ mUploaderBinder.cancel(account);
|
|
|
|
+ }
|
|
|
|
+
|
|
Account a = AccountUtils.getCurrentOwnCloudAccount(this);
|
|
Account a = AccountUtils.getCurrentOwnCloudAccount(this);
|
|
String accountName = "";
|
|
String accountName = "";
|
|
if (a == null) {
|
|
if (a == null) {
|
|
@@ -494,6 +527,16 @@ public class Preferences extends SherlockPreferenceActivity implements AccountMa
|
|
@Override
|
|
@Override
|
|
protected void onDestroy() {
|
|
protected void onDestroy() {
|
|
mDbHandler.close();
|
|
mDbHandler.close();
|
|
|
|
+
|
|
|
|
+ if (mDownloadServiceConnection != null) {
|
|
|
|
+ unbindService(mDownloadServiceConnection);
|
|
|
|
+ mDownloadServiceConnection = null;
|
|
|
|
+ }
|
|
|
|
+ if (mUploadServiceConnection != null) {
|
|
|
|
+ unbindService(mUploadServiceConnection);
|
|
|
|
+ mUploadServiceConnection = null;
|
|
|
|
+ }
|
|
|
|
+
|
|
super.onDestroy();
|
|
super.onDestroy();
|
|
}
|
|
}
|
|
|
|
|
|
@@ -637,4 +680,65 @@ public class Preferences extends SherlockPreferenceActivity implements AccountMa
|
|
editor.putString("instant_video_upload_path", mUploadVideoPath);
|
|
editor.putString("instant_video_upload_path", mUploadVideoPath);
|
|
editor.commit();
|
|
editor.commit();
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ // Methods for ComponetsGetter
|
|
|
|
+ @Override
|
|
|
|
+ public FileDownloader.FileDownloaderBinder getFileDownloaderBinder() {
|
|
|
|
+ return mDownloaderBinder;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public FileUploader.FileUploaderBinder getFileUploaderBinder() {
|
|
|
|
+ return mUploaderBinder;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public OperationsService.OperationsServiceBinder getOperationsServiceBinder() {
|
|
|
|
+ return null;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public FileDataStorageManager getStorageManager() {
|
|
|
|
+ return null;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public FileOperationsHelper getFileOperationsHelper() {
|
|
|
|
+ return null;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ protected ServiceConnection newTransferenceServiceConnection() {
|
|
|
|
+ return new PreferencesServiceConnection();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /** Defines callbacks for service binding, passed to bindService() */
|
|
|
|
+ private class PreferencesServiceConnection implements ServiceConnection {
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void onServiceConnected(ComponentName component, IBinder service) {
|
|
|
|
+
|
|
|
|
+ if (component.equals(new ComponentName(Preferences.this, FileDownloader.class))) {
|
|
|
|
+ mDownloaderBinder = (FileDownloader.FileDownloaderBinder) service;
|
|
|
|
+
|
|
|
|
+ } else if (component.equals(new ComponentName(Preferences.this, FileUploader.class))) {
|
|
|
|
+ Log_OC.d(TAG, "Upload service connected");
|
|
|
|
+ mUploaderBinder = (FileUploader.FileUploaderBinder) service;
|
|
|
|
+ } else {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void onServiceDisconnected(ComponentName component) {
|
|
|
|
+ if (component.equals(new ComponentName(Preferences.this, FileDownloader.class))) {
|
|
|
|
+ Log_OC.d(TAG, "Download service suddenly disconnected");
|
|
|
|
+ mDownloaderBinder = null;
|
|
|
|
+ } else if (component.equals(new ComponentName(Preferences.this, FileUploader.class))) {
|
|
|
|
+ Log_OC.d(TAG, "Upload service suddenly disconnected");
|
|
|
|
+ mUploaderBinder = null;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ };
|
|
}
|
|
}
|