Merge branch 'develop' into remove_folder_size_info

This commit is contained in:
masensio 2014-02-24 13:37:48 +01:00
commit c8fc9cfa70
23 changed files with 211 additions and 64 deletions

2
.gitmodules vendored
View file

@ -3,4 +3,4 @@
url = git://github.com/JakeWharton/ActionBarSherlock.git
[submodule "owncloud-android-library"]
path = owncloud-android-library
url = git@github.com:owncloud/android-library.git
url = git://github.com/owncloud/android-library.git

View file

@ -18,8 +18,8 @@
along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<manifest package="com.owncloud.android"
android:versionCode="105003"
android:versionName="1.5.3" xmlns:android="http://schemas.android.com/apk/res/android">
android:versionCode="105004"
android:versionName="1.5.4" xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
@ -80,12 +80,10 @@
<category android:name="android.intent.category.DEFAULT" >
</category>
<data android:mimeType="*/*" android:scheme="content">
<data android:mimeType="*/*" >
</data>
<data android:mimeType="*/*" android:scheme="file">
</data>
</intent-filter>
</intent-filter>
</activity>
<activity
android:name=".ui.activity.Preferences"
@ -183,6 +181,11 @@
</receiver>
<service android:name=".files.services.FileObserverService"/>
<activity
android:name=".ui.activity.CopyToClipboardActivity"
android:label="@string/copy_link"
android:icon="@drawable/copy_link" />
</application>
</manifest>

View file

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.owncloud.android.workaround.accounts"
android:versionCode="0100012"
android:versionName="1.0.12" >
android:versionCode="0100013"
android:versionName="1.0.13" >
<uses-sdk
android:minSdkVersion="16"

@ -1 +1 @@
Subproject commit 1df8349e216bd264b9e4e48f32b4c839ef973870
Subproject commit cd4414a7bda686c84e1ca75dd10bcbf9b3f57f83

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

View file

@ -57,6 +57,7 @@
<string name="filedetails_sync_file">Värskenda faili</string>
<string name="filedetails_renamed_in_upload_msg">Fail nimetati üleslaadimise käigus ümber %1$ </string>
<string name="action_share_file">Jaga linki</string>
<string name="action_unshare_file">Tühista lingi jagamine</string>
<string name="common_yes">Jah</string>
<string name="common_no">Ei</string>
<string name="common_ok">OK</string>
@ -233,6 +234,8 @@
<string name="failed_upload_retry_do_nothing_text">ära tee midagi, sa pole võrku ühendatud koheseks üleslaadimiseks</string>
<string name="failed_upload_failure_text">Veateade:</string>
<string name="failed_upload_quota_exceeded_text">Palun kontrolli oma serveri seadeid, võib-olla on mahulimiit ületatud.</string>
<string name="share_link_file_no_exist">Antud faili või kausta ei saa jagada. Tee kindlaks, et see on olemas</string>
<string name="share_link_file_error">Faili või kausta jagamisel esines viga</string>
<string name="unshare_link_file_no_exist">Antud faili või kausta jagamist pole võimalik tühistada</string>
<string name="unshare_link_file_error">Faili või kausta jagamise tühistamisel esines viga</string>
</resources>

View file

@ -237,5 +237,6 @@
<string name="share_link_no_support_share_api">Souporaba je na strežniku onemogočena. Možnost lahko spreminjajo le uporabniki s skrbniškimi dovoljenji.</string>
<string name="share_link_file_no_exist">Ni mogoče omogočiti souporabe te datoteke ali mape. Prepričajte se, da obstaja ...</string>
<string name="share_link_file_error">Prišlo je do napake med poskusom omogočanja souporabe te datoteke ali mape</string>
<string name="unshare_link_file_no_exist">Ni mogoče prekiniti souporabe te datoteke ali mape, ker ne obstaja.</string>
<string name="unshare_link_file_error">Prišlo je do napake med poskusom odstranjevanja souporabe te datoteke ali mape</string>
</resources>

View file

@ -8,7 +8,7 @@
<string name ="db_name">ownCloud</string>
<string name ="data_folder">owncloud</string>
<string name ="log_name">Owncloud_</string>
<string name ="default_display_name_for_root_folder">/</string>
<string name ="default_display_name_for_root_folder">ownCloud</string>
<!-- URLs and flags related -->
<string name="server_url"></string>
@ -35,11 +35,11 @@
<bool name="multiaccount_support">true</bool>
<!-- Help, imprint and feedback -->
<bool name="help_enabled">false</bool>
<bool name="help_enabled">true</bool>
<bool name="imprint_enabled">false</bool>
<bool name="recommend_enabled">false</bool>
<bool name="feedback_enabled">false</bool>
<string name="url_help">https://owncloud.com/mobile/help</string>
<bool name="recommend_enabled">true</bool>
<bool name="feedback_enabled">true</bool>
<string name="url_help">http://owncloud.com/mobile/help</string>
<string name="url_imprint"></string>
<string name="mail_recommend">"mailto:"</string>
<string name="mail_feedback">"mailto:apps@owncloud.com"</string>

View file

@ -100,7 +100,7 @@
<string name="sync_fail_in_favourites_content">Contents of %1$d files could not be sync\'ed (%2$d conflicts)</string>
<string name="sync_foreign_files_forgotten_ticker">Some local files were forgotten</string>
<string name="sync_foreign_files_forgotten_content">%1$d files out of the %2$s directory could not be copied into</string>
<string name="sync_foreign_files_forgotten_explanation">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.</string>
<string name="sync_foreign_files_forgotten_explanation">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.</string>
<string name="sync_current_folder_was_removed">Folder %1$s does not exist anymore</string>
<string name="foreign_files_move">"Move all"</string>
<string name="foreign_files_success">"All files were moved"</string>
@ -252,4 +252,7 @@
<string name="share_link_file_error">An error occurred while trying to share this file or folder</string>
<string name="unshare_link_file_no_exist">Unable to unshare this file or folder. It does not exist.</string>
<string name="unshare_link_file_error">An error occurred while trying to unshare this file or folder</string>
<string name="copy_link">Copy link</string>
<string name="clipboard_text_copied">Copied to clipboard</string>
</resources>

View file

@ -36,7 +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;
@ -95,6 +94,7 @@ implements OnRemoteOperationListener, OnSslValidatorListener, OnFocusChangeList
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 @@ implements OnRemoteOperationListener, OnSslValidatorListener, OnFocusChangeList
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 @@ implements OnRemoteOperationListener, OnSslValidatorListener, OnFocusChangeList
private String mHostBaseUrl;
private OwnCloudVersion mDiscoveredVersion;
private boolean mIsSharedSupported;
private String mAuthMessageText;
private int mAuthMessageVisibility, mServerStatusText, mServerStatusIcon;
@ -235,20 +234,19 @@ implements OnRemoteOperationListener, OnSslValidatorListener, OnFocusChangeList
mServerIsChecked = false;
mIsSslConn = false;
mAuthStatusText = mAuthStatusIcon = 0;
mIsSharedSupported = false;
/// retrieve extras from intent
mAccount = getIntent().getExtras().getParcelable(EXTRA_ACCOUNT);
if (mAccount != null) {
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, 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 @@ implements OnRemoteOperationListener, OnSslValidatorListener, OnFocusChangeList
/// 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);
@ -453,10 +451,10 @@ implements OnRemoteOperationListener, OnSslValidatorListener, OnFocusChangeList
/// 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 @@ implements OnRemoteOperationListener, OnSslValidatorListener, OnFocusChangeList
mServerIsValid = false;
mServerIsChecked = false;
mIsSharedSupported = false;
mOkButton.setEnabled(false);
mDiscoveredVersion = null;
hideRefreshButton();
@ -906,9 +903,6 @@ implements OnRemoteOperationListener, OnSslValidatorListener, OnFocusChangeList
/// 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,10 +1292,11 @@ implements OnRemoteOperationListener, OnSslValidatorListener, OnFocusChangeList
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());
/// 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, Constants.KEY_SUPPORTS_SAML_WEB_SSO, "TRUE");
} else if (isOAuth) {

View file

@ -858,8 +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);

View file

@ -28,11 +28,13 @@ import android.widget.Toast;
import com.owncloud.android.R;
import com.owncloud.android.datamodel.OCFile;
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 +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 +137,11 @@ public class FileOperationsHelper {
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(), 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;
}

View file

@ -22,6 +22,7 @@ import java.io.File;
import java.util.HashMap;
import java.util.Map;
import com.owncloud.android.MainApp;
import com.owncloud.android.datamodel.FileDataStorageManager;
import com.owncloud.android.datamodel.OCFile;
import com.owncloud.android.db.ProviderMeta.ProviderTableMeta;
@ -141,7 +142,7 @@ public class FileObserverService extends Service {
null);
if (c == null || !c.moveToFirst()) return;
AccountManager acm = AccountManager.get(this);
Account[] accounts = acm.getAccounts();
Account[] accounts = acm.getAccountsByType(MainApp.getAccountType());
do {
Account account = null;
for (Account a : accounts)

View file

@ -253,7 +253,11 @@ public class FileUploader extends Service implements OnDatatransferProgressListe
}
}
OwnCloudVersion ocv = new OwnCloudVersion(AccountManager.get(this).getUserData(account, Constants.KEY_OC_VERSION));
AccountManager aMgr = AccountManager.get(this);
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<String> requestedUploads = new Vector<String>();
String uploadKey = null;

View file

@ -37,15 +37,18 @@ import android.content.Intent;
import com.owncloud.android.datamodel.FileDataStorageManager;
import com.owncloud.android.datamodel.OCFile;
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 +104,7 @@ public class SynchronizeFolderOperation extends RemoteOperation {
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 +125,14 @@ public class SynchronizeFolderOperation extends RemoteOperation {
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 +174,10 @@ public class SynchronizeFolderOperation extends RemoteOperation {
mConflictsFound = 0;
mForgottenLocalFiles.clear();
if (FileUtils.PATH_SEPARATOR.equals(mLocalFolder.getRemotePath()) && !mSyncFullAccount) {
updateOCVersion(client);
}
result = checkForChanges(client);
if (result.isSuccess()) {
@ -185,7 +192,7 @@ public class SynchronizeFolderOperation extends RemoteOperation {
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 +207,16 @@ public class SynchronizeFolderOperation extends RemoteOperation {
}
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;

View file

@ -20,12 +20,15 @@ package com.owncloud.android.operations;
import android.content.Context;
import com.owncloud.android.datamodel.OCFile;
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 +56,7 @@ public class UnshareLinkOperation extends SyncOperation {
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());

View file

@ -47,11 +47,13 @@ public class UpdateOCVersionOperation extends RemoteOperation {
private Account mAccount;
private Context mContext;
private OwnCloudVersion mOwnCloudVersion;
public UpdateOCVersionOperation(Account account, Context context) {
mAccount = account;
mContext = context;
mOwnCloudVersion = null;
}
@ -74,10 +76,15 @@ public class UpdateOCVersionOperation extends RemoteOperation {
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, 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 +114,9 @@ public class UpdateOCVersionOperation extends RemoteOperation {
return result;
}
public OwnCloudVersion getOCVersion() {
return mOwnCloudVersion;
}
}

View file

@ -110,7 +110,7 @@ public class FileSyncAdapter extends AbstractOwnCloudSyncAdapter {
private SyncResult mSyncResult;
/** 'True' means that the server supports the share API */
private boolean mIsSharedSupported;
private boolean mIsShareSupported;
/**
@ -156,9 +156,6 @@ public class FileSyncAdapter extends AbstractOwnCloudSyncAdapter {
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 @@ public class FileSyncAdapter extends AbstractOwnCloudSyncAdapter {
RemoteOperationResult result = update.execute(getClient());
if (!result.isSuccess()) {
mLastFailedResult = result;
} else {
mIsShareSupported = update.getOCVersion().isSharedSupported();
}
}
@ -269,7 +268,7 @@ public class FileSyncAdapter extends AbstractOwnCloudSyncAdapter {
SynchronizeFolderOperation synchFolderOp = new SynchronizeFolderOperation( folder,
mCurrentSyncTime,
true,
mIsSharedSupported,
mIsShareSupported,
getStorageManager(),
getAccount(),
getContext()

View file

@ -0,0 +1,66 @@
/* ownCloud Android client application
* Copyright (C) 2012-2014 ownCloud Inc.
*
* This program is free software: you can redistribute it and/or modify
* 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
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
package com.owncloud.android.ui.activity;
import com.owncloud.android.R;
import android.app.Activity;
import android.content.ClipData;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.text.ClipboardManager;
import android.widget.Toast;
/**
* Activity copying the text of the received Intent into the system clibpoard.
*
* @author David A. Velasco
*/
@SuppressWarnings("deprecation")
public class CopyToClipboardActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// get the clipboard system service
ClipboardManager clipboardManager = (ClipboardManager) this.getSystemService(CLIPBOARD_SERVICE);
// get the text to copy into the clipboard
Intent intent = getIntent();
CharSequence text = intent.getCharSequenceExtra(Intent.EXTRA_TEXT);
// and put the text the clipboard
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.HONEYCOMB) {
// API level >= 11 -> modern Clipboard
ClipData clip = ClipData.newPlainText("ownCloud was here", text);
((android.content.ClipboardManager)clipboardManager).setPrimaryClip(clip);
} else {
// API level >= 11 -> legacy Clipboard
clipboardManager.setText(text);
}
// alert the user that the text is in the clipboard and we're done
Toast.makeText(this, R.string.clipboard_text_copied, Toast.LENGTH_SHORT).show();
finish();
}
}

View file

@ -43,6 +43,7 @@ import com.actionbarsherlock.app.SherlockDialogFragment;
import com.owncloud.android.R;
import com.owncloud.android.datamodel.OCFile;
import com.owncloud.android.files.FileOperationsHelper;
import com.owncloud.android.ui.activity.CopyToClipboardActivity;
import com.owncloud.android.ui.activity.FileActivity;
import com.owncloud.android.utils.Log_OC;
@ -52,19 +53,19 @@ import com.owncloud.android.utils.Log_OC;
*
* @author David A. Velasco
*/
public class ActivityChooserDialog extends SherlockDialogFragment {
public class ShareLinkToDialog extends SherlockDialogFragment {
private final static String TAG = ActivityChooserDialog.class.getSimpleName();
private final static String ARG_INTENT = ActivityChooserDialog.class.getSimpleName() + ".ARG_INTENT";
private final static String ARG_PACKAGES_TO_EXCLUDE = ActivityChooserDialog.class.getSimpleName() + ".ARG_PACKAGES_TO_EXCLUDE";
private final static String ARG_FILE_TO_SHARE = ActivityChooserDialog.class.getSimpleName() + ".FILE_TO_SHARE";
private final static String TAG = ShareLinkToDialog.class.getSimpleName();
private final static String ARG_INTENT = ShareLinkToDialog.class.getSimpleName() + ".ARG_INTENT";
private final static String ARG_PACKAGES_TO_EXCLUDE = ShareLinkToDialog.class.getSimpleName() + ".ARG_PACKAGES_TO_EXCLUDE";
private final static String ARG_FILE_TO_SHARE = ShareLinkToDialog.class.getSimpleName() + ".FILE_TO_SHARE";
private ActivityAdapter mAdapter;
private OCFile mFile;
private Intent mIntent;
public static ActivityChooserDialog newInstance(Intent intent, String[] packagesToExclude, OCFile fileToShare) {
ActivityChooserDialog f = new ActivityChooserDialog();
public static ShareLinkToDialog newInstance(Intent intent, String[] packagesToExclude, OCFile fileToShare) {
ShareLinkToDialog f = new ShareLinkToDialog();
Bundle args = new Bundle();
args.putParcelable(ARG_INTENT, intent);
args.putStringArray(ARG_PACKAGES_TO_EXCLUDE, packagesToExclude);
@ -73,7 +74,7 @@ public class ActivityChooserDialog extends SherlockDialogFragment {
return f;
}
public ActivityChooserDialog() {
public ShareLinkToDialog() {
super();
Log_OC.d(TAG, "constructor");
}
@ -95,6 +96,14 @@ public class ActivityChooserDialog extends SherlockDialogFragment {
it.remove();
}
}
// add activity for copy to clipboard
Intent copyToClipboardIntent = new Intent(getSherlockActivity(), CopyToClipboardActivity.class);
List<ResolveInfo> copyToClipboard = pm.queryIntentActivities(copyToClipboardIntent, 0);
if (!copyToClipboard.isEmpty()) {
activities.add(copyToClipboard.get(0));
}
Collections.sort(activities, new ResolveInfo.DisplayNameComparator(pm));
mAdapter = new ActivityAdapter(getSherlockActivity(), pm, activities);