From: masensio Date: Mon, 24 Feb 2014 12:16:57 +0000 (+0100) Subject: Merge branch 'master' into develop X-Git-Tag: oc-android-1.5.5~35 X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/commitdiff_plain/271078a4039f3c674462f929bc97528901e41e64?ds=inline;hp=-c Merge branch 'master' into develop --- 271078a4039f3c674462f929bc97528901e41e64 diff --combined owncloud-android-library index 1df8349e,b3ac14f5..cd4414a7 --- a/owncloud-android-library +++ b/owncloud-android-library @@@ -1,1 -1,1 +1,1 @@@ - Subproject commit 1df8349e216bd264b9e4e48f32b4c839ef973870 -Subproject commit b3ac14f575da5100eecff00de744d9330b668f66 ++Subproject commit cd4414a7bda686c84e1ca75dd10bcbf9b3f57f83 diff --combined res/values/strings.xml index bd672b27,6b58ea8d..b59e987c --- a/res/values/strings.xml +++ b/res/values/strings.xml @@@ -11,7 -11,7 +11,7 @@@ Create directory Settings Details - + Send General More Accounts @@@ -100,7 -100,7 +100,7 @@@ Contents of %1$d files could not be sync\'ed (%2$d conflicts) Some local files were forgotten %1$d files out of the %2$s directory could not be copied into - As of version 1.3.16, files uploaded from this device are copied into the local %1$s folder to prevent data loss when a single file is synced with multiple accounts.\n\nDue to this change, all files uploaded in previous versions of this app were copied into the %2$s folder. However, an error prevented the completion of this operation during account synchronization. You may either leave the file(s) as is and remove the link to %3$s, or move the file(s) into the %1$s directory and retain the link to %4$s.\n\nListed below are the local file(s), and the the remote file(s) in %5$s they were linked to. + As of version 1.3.16, files uploaded from this device are copied into the local %1$s folder to prevent data loss when a single file is synced with multiple accounts.\n\nDue to this change, all files uploaded in previous versions of this app were copied into the %2$s folder. However, an error prevented the completion of this operation during account synchronization. You may either leave the file(s) as is and remove the link to %3$s, or move the file(s) into the %1$s directory and retain the link to %4$s.\n\nListed below are the local file(s), and the remote file(s) in %5$s they were linked to. Folder %1$s does not exist anymore "Move all" "All files were moved" @@@ -252,4 -252,7 +252,7 @@@ An error occurred while trying to share this file or folder Unable to unshare this file or folder. It does not exist. An error occurred while trying to unshare this file or folder + + Copy link + Copied to clipboard diff --combined src/com/owncloud/android/authentication/AuthenticatorActivity.java index 65b94c4f,61e31b44..b59ac6e7 --- a/src/com/owncloud/android/authentication/AuthenticatorActivity.java +++ b/src/com/owncloud/android/authentication/AuthenticatorActivity.java @@@ -36,7 -36,6 +36,6 @@@ import android.support.v4.app.Fragment import android.text.Editable; import android.text.InputType; import android.text.TextWatcher; - import android.util.Log; import android.view.KeyEvent; import android.view.MotionEvent; import android.view.View; @@@ -54,25 -53,25 +53,25 @@@ import com.actionbarsherlock.app.Sherlo import com.owncloud.android.MainApp; import com.owncloud.android.R; import com.owncloud.android.authentication.SsoWebViewClient.SsoWebViewClientListener; -import com.owncloud.android.lib.accounts.AccountTypeUtils; -import com.owncloud.android.lib.accounts.OwnCloudAccount; -import com.owncloud.android.lib.network.OwnCloudClientFactory; -import com.owncloud.android.lib.network.OwnCloudClient; +import com.owncloud.android.lib.common.accounts.AccountTypeUtils; +import com.owncloud.android.lib.common.accounts.AccountUtils.Constants; +import com.owncloud.android.lib.common.OwnCloudClientFactory; +import com.owncloud.android.lib.common.OwnCloudClient; import com.owncloud.android.operations.OAuth2GetAccessToken; -import com.owncloud.android.lib.operations.common.OnRemoteOperationListener; -import com.owncloud.android.lib.operations.remote.OwnCloudServerCheckOperation; -import com.owncloud.android.lib.operations.common.RemoteOperation; -import com.owncloud.android.lib.operations.common.RemoteOperationResult; -import com.owncloud.android.lib.operations.common.RemoteOperationResult.ResultCode; -import com.owncloud.android.lib.operations.remote.ExistenceCheckRemoteOperation; -import com.owncloud.android.lib.operations.remote.GetUserNameRemoteOperation; +import com.owncloud.android.lib.common.operations.OnRemoteOperationListener; +import com.owncloud.android.lib.resources.status.GetRemoteStatusOperation; +import com.owncloud.android.lib.common.operations.RemoteOperation; +import com.owncloud.android.lib.common.operations.RemoteOperationResult; +import com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCode; +import com.owncloud.android.lib.resources.files.ExistenceCheckRemoteOperation; +import com.owncloud.android.lib.resources.users.GetRemoteUserNameOperation; import com.owncloud.android.ui.dialog.SamlWebViewDialog; import com.owncloud.android.ui.dialog.SslValidatorDialog; import com.owncloud.android.ui.dialog.SslValidatorDialog.OnSslValidatorListener; import com.owncloud.android.utils.Log_OC; -import com.owncloud.android.lib.utils.OwnCloudVersion; +import com.owncloud.android.lib.resources.status.OwnCloudVersion; /** * This Activity is used to add an ownCloud account to the App @@@ -95,6 -94,7 +94,7 @@@ implements OnRemoteOperationListener, private static final String KEY_AUTH_MESSAGE_TEXT = "AUTH_MESSAGE_TEXT"; private static final String KEY_HOST_URL_TEXT = "HOST_URL_TEXT"; private static final String KEY_OC_VERSION = "OC_VERSION"; + private static final String KEY_OC_VERSION_STRING = "OC_VERSION_STRING"; private static final String KEY_ACCOUNT = "ACCOUNT"; private static final String KEY_SERVER_VALID = "SERVER_VALID"; private static final String KEY_SERVER_CHECKED = "SERVER_CHECKED"; @@@ -106,7 -106,7 +106,7 @@@ private static final String KEY_AUTH_STATUS_TEXT = "AUTH_STATUS_TEXT"; private static final String KEY_AUTH_STATUS_ICON = "AUTH_STATUS_ICON"; private static final String KEY_REFRESH_BUTTON_ENABLED = "KEY_REFRESH_BUTTON_ENABLED"; -- private static final String KEY_IS_SHARED_SUPPORTED = "KEY_IS_SHARE_SUPPORTED"; ++ //private static final String KEY_IS_SHARED_SUPPORTED = "KEY_IS_SHARE_SUPPORTED"; private static final String AUTH_ON = "on"; private static final String AUTH_OFF = "off"; @@@ -124,7 -124,6 +124,6 @@@ private String mHostBaseUrl; private OwnCloudVersion mDiscoveredVersion; - private boolean mIsSharedSupported; private String mAuthMessageText; private int mAuthMessageVisibility, mServerStatusText, mServerStatusIcon; @@@ -134,7 -133,7 +133,7 @@@ private final Handler mHandler = new Handler(); private Thread mOperationThread; - private OwnCloudServerCheckOperation mOcServerChkOperation; + private GetRemoteStatusOperation mOcServerChkOperation; private ExistenceCheckRemoteOperation mAuthCheckOperation; private RemoteOperationResult mLastSslUntrustedServerResult; @@@ -235,20 -234,19 +234,19 @@@ mServerIsChecked = false; mIsSslConn = false; mAuthStatusText = mAuthStatusIcon = 0; - mIsSharedSupported = false; /// retrieve extras from intent mAccount = getIntent().getExtras().getParcelable(EXTRA_ACCOUNT); -- if (mAccount != null) { - String ocVersion = mAccountMgr.getUserData(mAccount, OwnCloudAccount.Constants.KEY_OC_VERSION); - String ocVersionString = mAccountMgr.getUserData(mAccount, OwnCloudAccount.Constants.KEY_OC_VERSION_STRING); ++ if (mAccount != null) { + String ocVersion = mAccountMgr.getUserData(mAccount, Constants.KEY_OC_VERSION); ++ String ocVersionString = mAccountMgr.getUserData(mAccount, Constants.KEY_OC_VERSION_STRING); if (ocVersion != null) { - mDiscoveredVersion = new OwnCloudVersion(ocVersion); + mDiscoveredVersion = new OwnCloudVersion(ocVersion, ocVersionString); } - mHostBaseUrl = normalizeUrl(mAccountMgr.getUserData(mAccount, OwnCloudAccount.Constants.KEY_OC_BASE_URL)); + mHostBaseUrl = normalizeUrl(mAccountMgr.getUserData(mAccount, Constants.KEY_OC_BASE_URL)); mHostUrlInput.setText(mHostBaseUrl); String userName = mAccount.name.substring(0, mAccount.name.lastIndexOf('@')); -- mUsernameInput.setText(userName); - mIsSharedSupported = Boolean.getBoolean(mAccountMgr.getUserData(mAccount, Constants.KEY_SUPPORTS_SHARE_API)); ++ mUsernameInput.setText(userName); } initAuthorizationMethod(); // checks intent and setup.xml to determine mCurrentAuthorizationMethod @@@ -276,9 -274,9 +274,9 @@@ /// server data String ocVersion = savedInstanceState.getString(KEY_OC_VERSION); - mIsSharedSupported = savedInstanceState.getBoolean(KEY_IS_SHARED_SUPPORTED, false); + String ocVersionString = savedInstanceState.getString(KEY_OC_VERSION_STRING); if (ocVersion != null) { - mDiscoveredVersion = new OwnCloudVersion(ocVersion); + mDiscoveredVersion = new OwnCloudVersion(ocVersion, ocVersionString); } mHostBaseUrl = savedInstanceState.getString(KEY_HOST_URL_TEXT); @@@ -400,8 -398,8 +398,8 @@@ if (mAuthTokenType == null) { if (mAccount != null) { /// same authentication method than the one used to create the account to update - oAuthRequired = (mAccountMgr.getUserData(mAccount, OwnCloudAccount.Constants.KEY_SUPPORTS_OAUTH2) != null); - samlWebSsoRequired = (mAccountMgr.getUserData(mAccount, OwnCloudAccount.Constants.KEY_SUPPORTS_SAML_WEB_SSO) != null); + oAuthRequired = (mAccountMgr.getUserData(mAccount, Constants.KEY_SUPPORTS_OAUTH2) != null); + samlWebSsoRequired = (mAccountMgr.getUserData(mAccount, Constants.KEY_SUPPORTS_SAML_WEB_SSO) != null); } else { /// use the one set in setup.xml @@@ -453,10 -451,10 +451,10 @@@ /// server data if (mDiscoveredVersion != null) { - outState.putString(KEY_OC_VERSION, mDiscoveredVersion.toString()); + outState.putString(KEY_OC_VERSION, mDiscoveredVersion.getVersion()); + outState.putString(KEY_OC_VERSION_STRING, mDiscoveredVersion.getVersionString()); } outState.putString(KEY_HOST_URL_TEXT, mHostBaseUrl); - outState.putBoolean(KEY_IS_SHARED_SUPPORTED, mIsSharedSupported); /// account data, if updating if (mAccount != null) { @@@ -591,7 -589,6 +589,6 @@@ mServerIsValid = false; mServerIsChecked = false; - mIsSharedSupported = false; mOkButton.setEnabled(false); mDiscoveredVersion = null; hideRefreshButton(); @@@ -599,7 -596,7 +596,7 @@@ mServerStatusText = R.string.auth_testing_connection; mServerStatusIcon = R.drawable.progress_small; showServerStatus(); - mOcServerChkOperation = new OwnCloudServerCheckOperation(uri, this); + mOcServerChkOperation = new GetRemoteStatusOperation(uri, this); OwnCloudClient client = OwnCloudClientFactory.createOwnCloudClient(Uri.parse(uri), this, true); mOperationThread = mOcServerChkOperation.execute(client, this, mHandler); } else { @@@ -789,8 -786,8 +786,8 @@@ @Override public void onRemoteOperationFinish(RemoteOperation operation, RemoteOperationResult result) { - if (operation instanceof OwnCloudServerCheckOperation) { - onOcServerCheckFinish((OwnCloudServerCheckOperation) operation, result); + if (operation instanceof GetRemoteStatusOperation) { + onOcServerCheckFinish((GetRemoteStatusOperation) operation, result); } else if (operation instanceof OAuth2GetAccessToken) { onGetOAuthAccessTokenFinish((OAuth2GetAccessToken)operation, result); @@@ -802,14 -799,14 +799,14 @@@ } else { onAuthorizationCheckFinish((ExistenceCheckRemoteOperation)operation, result); } - } else if (operation instanceof GetUserNameRemoteOperation) { - onGetUserNameFinish((GetUserNameRemoteOperation) operation, result); + } else if (operation instanceof GetRemoteUserNameOperation) { + onGetUserNameFinish((GetRemoteUserNameOperation) operation, result); } } - private void onGetUserNameFinish(GetUserNameRemoteOperation operation, RemoteOperationResult result) { + private void onGetUserNameFinish(GetRemoteUserNameOperation operation, RemoteOperationResult result) { if (result.isSuccess()) { boolean success = false; String username = operation.getUserName(); @@@ -876,7 -873,7 +873,7 @@@ * @param operation Server check performed. * @param result Result of the check. */ - private void onOcServerCheckFinish(OwnCloudServerCheckOperation operation, RemoteOperationResult result) { + private void onOcServerCheckFinish(GetRemoteStatusOperation operation, RemoteOperationResult result) { if (operation.equals(mOcServerChkOperation)) { /// save result state mServerIsChecked = true; @@@ -906,9 -903,6 +903,6 @@@ /// allow or not the user try to access the server mOkButton.setEnabled(mServerIsValid); - /// retrieve if is supported the Share API - mIsSharedSupported = operation.isSharedSupported(); - } // else nothing ; only the last check operation is considered; // multiple can be triggered if the user amends a URL before a previous check can be triggered } @@@ -1298,14 -1292,14 +1292,15 @@@ if (isOAuth || isSaml) { mAccountMgr.setAuthToken(mAccount, mAuthTokenType, mAuthToken); } -- /// add user data to the new account; TODO probably can be done in the last parameter addAccountExplicitly, or in KEY_USERDATA - mAccountMgr.setUserData(mAccount, Constants.KEY_OC_VERSION, mDiscoveredVersion.toString()); - mAccountMgr.setUserData(mAccount, OwnCloudAccount.Constants.KEY_OC_VERSION, mDiscoveredVersion.getVersion()); - mAccountMgr.setUserData(mAccount, OwnCloudAccount.Constants.KEY_OC_VERSION_STRING, mDiscoveredVersion.getVersionString()); - mAccountMgr.setUserData(mAccount, OwnCloudAccount.Constants.KEY_OC_BASE_URL, mHostBaseUrl); ++ /// add user data to the new account; TODO probably can be done in the last parameter addAccountExplicitly, or in KEY_USERDATA ++ mAccountMgr.setUserData(mAccount, Constants.KEY_OC_VERSION, mDiscoveredVersion.getVersion()); ++ mAccountMgr.setUserData(mAccount, Constants.KEY_OC_VERSION_STRING, mDiscoveredVersion.getVersionString()); + mAccountMgr.setUserData(mAccount, Constants.KEY_OC_BASE_URL, mHostBaseUrl); - mAccountMgr.setUserData(mAccount, Constants.KEY_SUPPORTS_SHARE_API, Boolean.toString(mIsSharedSupported)); ++ if (isSaml) { - mAccountMgr.setUserData(mAccount, OwnCloudAccount.Constants.KEY_SUPPORTS_SAML_WEB_SSO, "TRUE"); + mAccountMgr.setUserData(mAccount, Constants.KEY_SUPPORTS_SAML_WEB_SSO, "TRUE"); } else if (isOAuth) { - mAccountMgr.setUserData(mAccount, OwnCloudAccount.Constants.KEY_SUPPORTS_OAUTH2, "TRUE"); + mAccountMgr.setUserData(mAccount, Constants.KEY_SUPPORTS_OAUTH2, "TRUE"); } setAccountAuthenticatorResult(intent.getExtras()); @@@ -1616,7 -1610,7 +1611,7 @@@ if (sessionCookie != null && sessionCookie.length() > 0) { mAuthToken = sessionCookie; - GetUserNameRemoteOperation getUserOperation = new GetUserNameRemoteOperation(); + GetRemoteUserNameOperation getUserOperation = new GetRemoteUserNameOperation(); OwnCloudClient client = OwnCloudClientFactory.createOwnCloudClient(Uri.parse(mHostBaseUrl), getApplicationContext(), true); client.setSsoSessionCookie(mAuthToken); getUserOperation.execute(client, this, mHandler); diff --combined src/com/owncloud/android/datamodel/FileDataStorageManager.java index a65833cd,e18a15b1..5abdd892 --- a/src/com/owncloud/android/datamodel/FileDataStorageManager.java +++ b/src/com/owncloud/android/datamodel/FileDataStorageManager.java @@@ -27,9 -27,9 +27,9 @@@ import java.util.Vector import com.owncloud.android.MainApp; import com.owncloud.android.db.ProviderMeta.ProviderTableMeta; -import com.owncloud.android.lib.operations.common.OCShare; -import com.owncloud.android.lib.operations.common.ShareType; -import com.owncloud.android.lib.utils.FileUtils; +import com.owncloud.android.lib.resources.shares.OCShare; +import com.owncloud.android.lib.resources.shares.ShareType; +import com.owncloud.android.lib.resources.files.FileUtils; import com.owncloud.android.utils.FileStorageUtils; import com.owncloud.android.utils.Log_OC; @@@ -858,8 -858,33 +858,33 @@@ public class FileDataStorageManager return share; } - public OCShare getShareByPath(String path) { - Cursor c = getShareCursorForValue(ProviderTableMeta.OCSHARES_PATH, path); + public OCShare getFirstShareByPathAndType(String path, ShareType type) { + Cursor c = null; + if (getContentResolver() != null) { + c = getContentResolver().query( + ProviderTableMeta.CONTENT_URI_SHARE, + null, + ProviderTableMeta.OCSHARES_PATH + "=? AND " + + ProviderTableMeta.OCSHARES_SHARE_TYPE + "=? AND " + + ProviderTableMeta.OCSHARES_ACCOUNT_OWNER + "=?", + new String[] { path, Integer.toString(type.getValue()), mAccount.name }, + null); + } else { + try { + c = getContentProviderClient().query( + ProviderTableMeta.CONTENT_URI_SHARE, + null, + ProviderTableMeta.OCSHARES_PATH + "=? AND " + + ProviderTableMeta.OCSHARES_SHARE_TYPE + "=? AND " + + ProviderTableMeta.OCSHARES_ACCOUNT_OWNER + "=?", + new String[] { path, Integer.toString(type.getValue()), mAccount.name }, + null); + + } catch (RemoteException e) { + Log_OC.e(TAG, "Could not get file details: " + e.getMessage()); + c = null; + } + } OCShare share = null; if (c.moveToFirst()) { share = createShareInstance(c); diff --combined src/com/owncloud/android/files/FileOperationsHelper.java index 1ddbd4ab,c14d84dc..8843897c --- a/src/com/owncloud/android/files/FileOperationsHelper.java +++ b/src/com/owncloud/android/files/FileOperationsHelper.java @@@ -28,11 -28,12 +28,13 @@@ import android.widget.Toast import com.owncloud.android.R; import com.owncloud.android.datamodel.OCFile; -import com.owncloud.android.lib.accounts.OwnCloudAccount; -import com.owncloud.android.lib.network.webdav.WebdavUtils; -import com.owncloud.android.lib.utils.OwnCloudVersion; ++ +import com.owncloud.android.lib.common.accounts.AccountUtils.Constants; +import com.owncloud.android.lib.common.network.WebdavUtils; ++import com.owncloud.android.lib.resources.status.OwnCloudVersion; import com.owncloud.android.services.OperationsService; import com.owncloud.android.ui.activity.FileActivity; - import com.owncloud.android.ui.dialog.ActivityChooserDialog; + import com.owncloud.android.ui.dialog.ShareLinkToDialog; import com.owncloud.android.utils.Log_OC; /** @@@ -88,7 -89,7 +90,7 @@@ public class FileOperationsHelper String link = "https://fake.url"; Intent intent = createShareWithLinkIntent(link); String[] packagesToExclude = new String[] { callerActivity.getPackageName() }; - DialogFragment chooserDialog = ActivityChooserDialog.newInstance(intent, packagesToExclude, file); + DialogFragment chooserDialog = ShareLinkToDialog.newInstance(intent, packagesToExclude, file); chooserDialog.show(callerActivity.getSupportFragmentManager(), FTAG_CHOOSER_DIALOG); } else { @@@ -135,7 -136,10 +137,11 @@@ public boolean isSharedSupported(FileActivity callerActivity) { if (callerActivity.getAccount() != null) { AccountManager accountManager = AccountManager.get(callerActivity); - return Boolean.parseBoolean(accountManager.getUserData(callerActivity.getAccount(), Constants.KEY_SUPPORTS_SHARE_API)); - String version = accountManager.getUserData(callerActivity.getAccount(), OwnCloudAccount.Constants.KEY_OC_VERSION); - String versionString = accountManager.getUserData(callerActivity.getAccount(), OwnCloudAccount.Constants.KEY_OC_VERSION_STRING); ++ ++ String version = accountManager.getUserData(callerActivity.getAccount(), Constants.KEY_OC_VERSION); ++ String versionString = accountManager.getUserData(callerActivity.getAccount(), Constants.KEY_OC_VERSION_STRING); + return (new OwnCloudVersion(version, versionString)).isSharedSupported(); + //return Boolean.parseBoolean(accountManager.getUserData(callerActivity.getAccount(), OwnCloudAccount.Constants.KEY_SUPPORTS_SHARE_API)); } return false; } diff --combined src/com/owncloud/android/files/services/FileUploader.java index 6fc33277,0cffa28d..2f963562 --- a/src/com/owncloud/android/files/services/FileUploader.java +++ b/src/com/owncloud/android/files/services/FileUploader.java @@@ -34,19 -34,19 +34,19 @@@ import com.owncloud.android.datamodel.F import com.owncloud.android.datamodel.OCFile; import com.owncloud.android.db.DbHandler; import com.owncloud.android.operations.CreateFolderOperation; -import com.owncloud.android.lib.operations.common.RemoteFile; -import com.owncloud.android.lib.operations.common.RemoteOperation; -import com.owncloud.android.lib.operations.common.RemoteOperationResult; +import com.owncloud.android.lib.resources.files.RemoteFile; +import com.owncloud.android.lib.common.operations.RemoteOperation; +import com.owncloud.android.lib.common.operations.RemoteOperationResult; import com.owncloud.android.operations.UploadFileOperation; -import com.owncloud.android.lib.operations.common.RemoteOperationResult.ResultCode; -import com.owncloud.android.lib.operations.remote.ExistenceCheckRemoteOperation; -import com.owncloud.android.lib.operations.remote.ReadRemoteFileOperation; -import com.owncloud.android.lib.utils.FileUtils; -import com.owncloud.android.lib.utils.OwnCloudVersion; -import com.owncloud.android.lib.network.OnDatatransferProgressListener; -import com.owncloud.android.lib.accounts.OwnCloudAccount; -import com.owncloud.android.lib.network.OwnCloudClientFactory; -import com.owncloud.android.lib.network.OwnCloudClient; +import com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCode; +import com.owncloud.android.lib.resources.files.ExistenceCheckRemoteOperation; +import com.owncloud.android.lib.resources.files.ReadRemoteFileOperation; +import com.owncloud.android.lib.resources.files.FileUtils; +import com.owncloud.android.lib.resources.status.OwnCloudVersion; +import com.owncloud.android.lib.common.accounts.AccountUtils.Constants; +import com.owncloud.android.lib.common.network.OnDatatransferProgressListener; +import com.owncloud.android.lib.common.OwnCloudClientFactory; +import com.owncloud.android.lib.common.OwnCloudClient; import com.owncloud.android.ui.activity.FailedUploadActivity; import com.owncloud.android.ui.activity.FileActivity; import com.owncloud.android.ui.activity.FileDisplayActivity; @@@ -253,7 -253,10 +253,11 @@@ public class FileUploader extends Servi } } - OwnCloudVersion ocv = new OwnCloudVersion(AccountManager.get(this).getUserData(account, Constants.KEY_OC_VERSION)); + AccountManager aMgr = AccountManager.get(this); - String version = aMgr.getUserData(account, OwnCloudAccount.Constants.KEY_OC_VERSION); - String versionString = aMgr.getUserData(account, OwnCloudAccount.Constants.KEY_OC_VERSION_STRING); ++ String version = aMgr.getUserData(account, Constants.KEY_OC_VERSION); ++ String versionString = aMgr.getUserData(account, Constants.KEY_OC_VERSION_STRING); + OwnCloudVersion ocv = new OwnCloudVersion(version, versionString); ++ boolean chunked = FileUploader.chunkedUploadIsSupported(ocv); AbstractList requestedUploads = new Vector(); String uploadKey = null; diff --combined src/com/owncloud/android/operations/SynchronizeFolderOperation.java index ac1acea3,97641c62..5d957071 --- a/src/com/owncloud/android/operations/SynchronizeFolderOperation.java +++ b/src/com/owncloud/android/operations/SynchronizeFolderOperation.java @@@ -37,15 -37,16 +37,18 @@@ import android.content.Intent import com.owncloud.android.datamodel.FileDataStorageManager; import com.owncloud.android.datamodel.OCFile; -import com.owncloud.android.lib.network.OwnCloudClient; -import com.owncloud.android.lib.operations.common.OCShare; -import com.owncloud.android.lib.operations.common.RemoteOperation; -import com.owncloud.android.lib.operations.common.RemoteOperationResult; -import com.owncloud.android.lib.operations.common.RemoteOperationResult.ResultCode; -import com.owncloud.android.lib.operations.remote.GetSharesForFileRemoteOperation; -import com.owncloud.android.lib.operations.remote.ReadRemoteFileOperation; -import com.owncloud.android.lib.operations.remote.ReadRemoteFolderOperation; -import com.owncloud.android.lib.operations.common.RemoteFile; -import com.owncloud.android.lib.utils.FileUtils; ++ +import com.owncloud.android.lib.common.OwnCloudClient; +import com.owncloud.android.lib.resources.shares.OCShare; +import com.owncloud.android.lib.common.operations.RemoteOperation; +import com.owncloud.android.lib.common.operations.RemoteOperationResult; +import com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCode; +import com.owncloud.android.lib.resources.shares.GetRemoteSharesForFileOperation; ++import com.owncloud.android.lib.resources.files.FileUtils; +import com.owncloud.android.lib.resources.files.ReadRemoteFileOperation; +import com.owncloud.android.lib.resources.files.ReadRemoteFolderOperation; +import com.owncloud.android.lib.resources.files.RemoteFile; ++ import com.owncloud.android.syncadapter.FileSyncAdapter; import com.owncloud.android.utils.FileStorageUtils; import com.owncloud.android.utils.Log_OC; @@@ -101,7 -102,7 +104,7 @@@ public class SynchronizeFolderOperatio private boolean mSyncFullAccount; /** 'True' means that Share resources bound to the files into the folder should be refreshed also */ - private boolean mRefreshShares; + private boolean mIsShareSupported; /** 'True' means that the remote folder changed from last synchronization and should be fetched */ private boolean mRemoteFolderChanged; @@@ -122,14 -123,14 +125,14 @@@ public SynchronizeFolderOperation( OCFile folder, long currentSyncTime, boolean syncFullAccount, - boolean refreshShares, + boolean isShareSupported, FileDataStorageManager dataStorageManager, Account account, Context context ) { mLocalFolder = folder; mCurrentSyncTime = currentSyncTime; mSyncFullAccount = syncFullAccount; - mRefreshShares = refreshShares; + mIsShareSupported = isShareSupported; mStorageManager = dataStorageManager; mAccount = account; mContext = context; @@@ -171,6 -172,10 +174,10 @@@ mConflictsFound = 0; mForgottenLocalFiles.clear(); + if (FileUtils.PATH_SEPARATOR.equals(mLocalFolder.getRemotePath()) && !mSyncFullAccount) { + updateOCVersion(client); + } + result = checkForChanges(client); if (result.isSuccess()) { @@@ -185,7 -190,7 +192,7 @@@ sendLocalBroadcast(EVENT_SINGLE_FOLDER_CONTENTS_SYNCED, mLocalFolder.getRemotePath(), result); } - if (result.isSuccess() && mRefreshShares) { + if (result.isSuccess() && mIsShareSupported) { RemoteOperationResult shareResult = refreshSharesForFolder(client); if (shareResult.getCode() != ResultCode.FILE_NOT_FOUND) { result = shareResult; @@@ -200,6 -205,16 +207,16 @@@ } + + private void updateOCVersion(OwnCloudClient client) { + UpdateOCVersionOperation update = new UpdateOCVersionOperation(mAccount, mContext); + RemoteOperationResult result = update.execute(client); + if (result.isSuccess()) { + mIsShareSupported = update.getOCVersion().isSharedSupported(); + } + } + + private RemoteOperationResult checkForChanges(OwnCloudClient client) { mRemoteFolderChanged = false; RemoteOperationResult result = null; @@@ -472,7 -487,7 +489,7 @@@ RemoteOperationResult result = null; // remote request - GetSharesForFileRemoteOperation operation = new GetSharesForFileRemoteOperation(mLocalFolder.getRemotePath(), false, true); + GetRemoteSharesForFileOperation operation = new GetRemoteSharesForFileOperation(mLocalFolder.getRemotePath(), false, true); result = operation.execute(client); if (result.isSuccess()) { diff --combined src/com/owncloud/android/operations/UnshareLinkOperation.java index 218573e0,2471e53c..77ca8227 --- a/src/com/owncloud/android/operations/UnshareLinkOperation.java +++ b/src/com/owncloud/android/operations/UnshareLinkOperation.java @@@ -20,12 -20,13 +20,15 @@@ package com.owncloud.android.operations import android.content.Context; import com.owncloud.android.datamodel.OCFile; -import com.owncloud.android.lib.network.OwnCloudClient; -import com.owncloud.android.lib.operations.common.OCShare; -import com.owncloud.android.lib.operations.common.RemoteOperationResult; -import com.owncloud.android.lib.operations.common.ShareType; -import com.owncloud.android.lib.operations.common.RemoteOperationResult.ResultCode; -import com.owncloud.android.lib.operations.remote.ExistenceCheckRemoteOperation; -import com.owncloud.android.lib.operations.remote.RemoveRemoteShareOperation; ++ +import com.owncloud.android.lib.common.OwnCloudClient; +import com.owncloud.android.lib.common.operations.RemoteOperationResult; +import com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCode; +import com.owncloud.android.lib.resources.files.ExistenceCheckRemoteOperation; +import com.owncloud.android.lib.resources.shares.OCShare; +import com.owncloud.android.lib.resources.shares.RemoveRemoteShareOperation; ++import com.owncloud.android.lib.resources.shares.ShareType; ++ import com.owncloud.android.operations.common.SyncOperation; import com.owncloud.android.utils.Log_OC; @@@ -53,7 -54,7 +56,7 @@@ public class UnshareLinkOperation exten RemoteOperationResult result = null; // Get Share for a file - OCShare share = getStorageManager().getShareByPath(mRemotePath); + OCShare share = getStorageManager().getFirstShareByPathAndType(mRemotePath, ShareType.PUBLIC_LINK); if (share != null) { RemoveRemoteShareOperation operation = new RemoveRemoteShareOperation((int) share.getIdRemoteShared()); diff --combined src/com/owncloud/android/operations/UpdateOCVersionOperation.java index 22fdc934,7fb123af..c878ede4 --- a/src/com/owncloud/android/operations/UpdateOCVersionOperation.java +++ b/src/com/owncloud/android/operations/UpdateOCVersionOperation.java @@@ -23,12 -23,12 +23,12 @@@ import org.json.JSONException import org.json.JSONObject; import com.owncloud.android.authentication.AccountUtils; -import com.owncloud.android.lib.accounts.OwnCloudAccount; -import com.owncloud.android.lib.network.OwnCloudClient; -import com.owncloud.android.lib.operations.common.RemoteOperation; -import com.owncloud.android.lib.operations.common.RemoteOperationResult; -import com.owncloud.android.lib.operations.common.RemoteOperationResult.ResultCode; -import com.owncloud.android.lib.utils.OwnCloudVersion; +import com.owncloud.android.lib.common.OwnCloudClient; +import com.owncloud.android.lib.common.accounts.AccountUtils.Constants; +import com.owncloud.android.lib.common.operations.RemoteOperation; +import com.owncloud.android.lib.common.operations.RemoteOperationResult; +import com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCode; +import com.owncloud.android.lib.resources.status.OwnCloudVersion; import com.owncloud.android.utils.Log_OC; import android.accounts.Account; @@@ -47,18 -47,20 +47,20 @@@ public class UpdateOCVersionOperation e private Account mAccount; private Context mContext; + private OwnCloudVersion mOwnCloudVersion; public UpdateOCVersionOperation(Account account, Context context) { mAccount = account; mContext = context; + mOwnCloudVersion = null; } @Override protected RemoteOperationResult run(OwnCloudClient client) { AccountManager accountMngr = AccountManager.get(mContext); - String statUrl = accountMngr.getUserData(mAccount, OwnCloudAccount.Constants.KEY_OC_BASE_URL); + String statUrl = accountMngr.getUserData(mAccount, Constants.KEY_OC_BASE_URL); statUrl += AccountUtils.STATUS_PATH; RemoteOperationResult result = null; GetMethod get = null; @@@ -74,10 -76,13 +76,15 @@@ if (response != null) { JSONObject json = new JSONObject(response); if (json != null && json.getString("version") != null) { - OwnCloudVersion ocver = new OwnCloudVersion(json.getString("version")); - if (ocver.isVersionValid()) { - accountMngr.setUserData(mAccount, Constants.KEY_OC_VERSION, ocver.toString()); - Log_OC.d(TAG, "Got new OC version " + ocver.toString()); ++ + String version = json.getString("version"); + String versionstring = json.getString("versionstring"); + mOwnCloudVersion = new OwnCloudVersion(version, versionstring); + if (mOwnCloudVersion.isVersionValid()) { - accountMngr.setUserData(mAccount, OwnCloudAccount.Constants.KEY_OC_VERSION, mOwnCloudVersion.getVersion()); - accountMngr.setUserData(mAccount, OwnCloudAccount.Constants.KEY_OC_VERSION_STRING, mOwnCloudVersion.getVersionString()); ++ accountMngr.setUserData(mAccount, Constants.KEY_OC_VERSION, mOwnCloudVersion.getVersion()); ++ accountMngr.setUserData(mAccount, Constants.KEY_OC_VERSION_STRING, mOwnCloudVersion.getVersionString()); + Log_OC.d(TAG, "Got new OC version " + mOwnCloudVersion.toString()); ++ result = new RemoteOperationResult(ResultCode.OK); } else { @@@ -107,4 -112,9 +114,9 @@@ return result; } + + public OwnCloudVersion getOCVersion() { + return mOwnCloudVersion; + } + } diff --combined src/com/owncloud/android/syncadapter/FileSyncAdapter.java index c0b9b0d1,87177c43..349f1370 --- a/src/com/owncloud/android/syncadapter/FileSyncAdapter.java +++ b/src/com/owncloud/android/syncadapter/FileSyncAdapter.java @@@ -30,11 -30,11 +30,11 @@@ import com.owncloud.android.R import com.owncloud.android.authentication.AuthenticatorActivity; import com.owncloud.android.datamodel.FileDataStorageManager; import com.owncloud.android.datamodel.OCFile; -import com.owncloud.android.lib.accounts.OwnCloudAccount; -import com.owncloud.android.lib.operations.common.RemoteOperationResult; +import com.owncloud.android.lib.common.accounts.AccountUtils.Constants; +import com.owncloud.android.lib.common.operations.RemoteOperationResult; import com.owncloud.android.operations.SynchronizeFolderOperation; import com.owncloud.android.operations.UpdateOCVersionOperation; -import com.owncloud.android.lib.operations.common.RemoteOperationResult.ResultCode; +import com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCode; import com.owncloud.android.ui.activity.ErrorsWhileCopyingHandlerActivity; import com.owncloud.android.utils.DisplayUtils; import com.owncloud.android.utils.Log_OC; @@@ -110,7 -110,7 +110,7 @@@ public class FileSyncAdapter extends Ab private SyncResult mSyncResult; /** 'True' means that the server supports the share API */ - private boolean mIsSharedSupported; + private boolean mIsShareSupported; /** @@@ -156,9 -156,6 +156,6 @@@ this.setContentProviderClient(providerClient); this.setStorageManager(new FileDataStorageManager(account, providerClient)); - AccountManager accountManager = getAccountManager(); - mIsSharedSupported = Boolean.parseBoolean(accountManager.getUserData(account, Constants.KEY_SUPPORTS_SHARE_API)); - try { this.initClientForCurrentAccount(); } catch (IOException e) { @@@ -235,6 -232,8 +232,8 @@@ RemoteOperationResult result = update.execute(getClient()); if (!result.isSuccess()) { mLastFailedResult = result; + } else { + mIsShareSupported = update.getOCVersion().isSharedSupported(); } } @@@ -269,7 -268,7 +268,7 @@@ SynchronizeFolderOperation synchFolderOp = new SynchronizeFolderOperation( folder, mCurrentSyncTime, true, - mIsSharedSupported, + mIsShareSupported, getStorageManager(), getAccount(), getContext()