diff --git a/.drone.yml b/.drone.yml index 8392235efe..4cb0358c1f 100644 --- a/.drone.yml +++ b/.drone.yml @@ -1,6 +1,6 @@ pipeline: test: - image: nextcloudci/android:android-17 + image: nextcloudci/android:android-18 commands: # uncomment gplay for Gplay, Modified only - sh -c "if [ '$FLAVOUR' != 'Generic' ]; then sed -i '/com.google.*.gms/s/^.*\/\///g' build.gradle; fi" @@ -28,6 +28,17 @@ pipeline: - ANDROID_ABI=armeabi-v7a - LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/:/opt/android-sdk-linux/tools/lib64/gles_mesa/ + lint: + image: nextcloudci/android:android-18 + commands: + # needs gplay + - sed -i '/com.google.*.gms/s/^.*\/\///g' build.gradle + - export BRANCH=$(scripts/lint/getBranchName.sh ${GIT_USERNAME} ${GIT_TOKEN} ${DRONE_PULL_REQUEST}) + - ruby scripts/lint/lint-up.rb ${GIT_USERNAME} ${GIT_TOKEN} $BRANCH + when: + matrix: + FLAVOUR: Modified + matrix: FLAVOUR: - Generic diff --git a/.drone.yml.sig b/.drone.yml.sig new file mode 100644 index 0000000000..07e4da62e0 --- /dev/null +++ b/.drone.yml.sig @@ -0,0 +1 @@ +eyJhbGciOiJIUzI1NiJ9.cGlwZWxpbmU6CiAgdGVzdDoKICAgIGltYWdlOiBuZXh0Y2xvdWRjaS9hbmRyb2lkOmFuZHJvaWQtMTgKICAgIGNvbW1hbmRzOgogICAgICAjIHVuY29tbWVudCBncGxheSBmb3IgR3BsYXksIE1vZGlmaWVkIG9ubHkKICAgICAgLSBzaCAtYyAiaWYgWyAnJEZMQVZPVVInICE9ICdHZW5lcmljJyBdOyB0aGVuIHNlZCAtaSAnL2NvbS5nb29nbGUuKi5nbXMvcy9eLipcL1wvLy9nJyBidWlsZC5ncmFkbGU7IGZpIgoKICAgICAgLSBlY2hvIG5vIHwgYW5kcm9pZCBjcmVhdGUgYXZkIC0tZm9yY2UgLW4gdGVzdCAtdCAkQU5EUk9JRF9UQVJHRVQgLS1hYmkgJEFORFJPSURfQUJJIC1jIDIwTQogICAgICAtIGVtdWxhdG9yIC1hdmQgdGVzdCAtbm8td2luZG93ICYKICAgICAgLSAuL3dhaXRfZm9yX2VtdWxhdG9yLnNoCgogICAgICAjIGJ1aWxkIGFwcCBhbmQgYXNzZW1ibGUgQVBLLCBpbiBkZWJ1ZyBtb2RlCiAgICAgIC0gLi9ncmFkbGV3IGFzc2VtYmxlJHtGTEFWT1VSfQoKICAgICAgIyBydW4gYWxsIHRoZSBpbnN0cnVtZW50ZWQgdGVzdHMgb2YgYXBwIG1vZHVsZSAtIERJU0FCTEVEIHVudGlsIHdlIGdldCBhbiBzdGFibGUgc2V0dXAgZm9yIEVzcHJlc3NvIGluIFRyYXZpcwogICAgICAjIC0gLi9ncmFkbGV3IGNvbm5lY3RlZERlYnVnQW5kcm9pZFRlc3QgLS1pbmZvCgogICAgICAjIGluc3RhbGwgYXBwLCB0aGVuIGFzc2VtYmxlIGFuZCBpbnN0YWxsIGluc3RydW1lbnRlZCB0ZXN0cyBvZiBhcHAgbW9kdWxlCiAgICAgIC0gLi9ncmFkbGV3IDppbnN0YWxsJHtGTEFWT1VSfURlYnVnCiAgICAgIC0gLi9ncmFkbGV3IDppbnN0YWxsJHtGTEFWT1VSfURlYnVnQW5kcm9pZFRlc3QKCiAgICAgICMgcnVuIHNhbXBsZSBpbnN0cnVtZW50ZWQgdW5pdCB0ZXN0CiAgICAgICMgVE9ETyBmYWlscyBiZWNhdXNlIHRlc3QgcnVubmVyIGlzIG5vdCBhdmFpbGFibGUKICAgICAgIy0gYWRiIHNoZWxsIGFtIGluc3RydW1lbnQgLXcgLWUgZGVidWcgZmFsc2UgLWUgY2xhc3MgY29tLm93bmNsb3VkLmFuZHJvaWQuZGF0YW1vZGVsLk9DRmlsZVVuaXRUZXN0IGNvbS5vd25jbG91ZC5hbmRyb2lkLnRlc3QvYW5kcm9pZC5zdXBwb3J0LnRlc3QucnVubmVyLkFuZHJvaWRKVW5pdFJ1bm5lcgoKICAgIGVudmlyb25tZW50OgogICAgICAtIEFORFJPSURfVEFSR0VUPWFuZHJvaWQtMjQKICAgICAgLSBBTkRST0lEX0FCST1hcm1lYWJpLXY3YQogICAgICAtIExEX0xJQlJBUllfUEFUSD0vdXNyL2xpYi94ODZfNjQtbGludXgtZ251Lzovb3B0L2FuZHJvaWQtc2RrLWxpbnV4L3Rvb2xzL2xpYjY0L2dsZXNfbWVzYS8KCiAgbGludDoKICAgICAgaW1hZ2U6IG5leHRjbG91ZGNpL2FuZHJvaWQ6YW5kcm9pZC0xOAogICAgICBjb21tYW5kczoKICAgICAgICAjIG5lZWRzIGdwbGF5CiAgICAgICAgLSBzZWQgLWkgJy9jb20uZ29vZ2xlLiouZ21zL3MvXi4qXC9cLy8vZycgYnVpbGQuZ3JhZGxlCiAgICAgICAgLSBleHBvcnQgQlJBTkNIPSQoc2NyaXB0cy9saW50L2dldEJyYW5jaE5hbWUuc2ggJHtHSVRfVVNFUk5BTUV9ICR7R0lUX1RPS0VOfSAke0RST05FX1BVTExfUkVRVUVTVH0pCiAgICAgICAgLSBydWJ5IHNjcmlwdHMvbGludC9saW50LXVwLnJiICR7R0lUX1VTRVJOQU1FfSAke0dJVF9UT0tFTn0gJEJSQU5DSAogICAgICB3aGVuOgogICAgICAgIG1hdHJpeDoKICAgICAgICAgIEZMQVZPVVI6IE1vZGlmaWVkCgptYXRyaXg6CiAgRkxBVk9VUjoKICAgIC0gR2VuZXJpYwogICAgLSBHcGxheQogICAgLSBNb2RpZmllZAoKYnJhbmNoZXM6IG1hc3Rlcg.BJDcPdoKinGxnz6zT8dBxvwE_DBi9QyzXXnk0LOOdV4 \ No newline at end of file diff --git a/build.gradle b/build.gradle index cf7b8dd07a..6a4b6d1bd4 100644 --- a/build.gradle +++ b/build.gradle @@ -51,10 +51,11 @@ repositories { android { lintOptions { - abortOnError true + abortOnError false lintConfig file("${project.rootDir}/lint.xml") htmlReport true htmlOutput file("$project.buildDir/reports/lint/lint.html") + disable 'MissingTranslation' } dexOptions { @@ -115,10 +116,6 @@ android { targetCompatibility JavaVersion.VERSION_1_7 } - lintOptions { - abortOnError false - } - packagingOptions { exclude 'META-INF/LICENSE.txt' exclude 'META-INF/LICENSE' @@ -182,7 +179,7 @@ dependencies { compile name: 'touch-image-view' compile 'com.android.support:multidex:1.0.1' - compile 'com.github.nextcloud:android-library:1.0.15' + compile 'com.github.nextcloud:android-library:1.0.18' compile "com.android.support:support-v4:${supportLibraryVersion}" compile "com.android.support:design:${supportLibraryVersion}" compile 'com.jakewharton:disklrucache:2.0.2' diff --git a/scripts/lint/getBranchName.sh b/scripts/lint/getBranchName.sh new file mode 100755 index 0000000000..500f29fcff --- /dev/null +++ b/scripts/lint/getBranchName.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +# $1: username, $2: password/token, $3: pull request number + +curl 2>/dev/null -u $1:$2 https://api.github.com/repos/nextcloud/android/pulls/$3 | grep \"ref\": | grep -v master | cut -d"\"" -f4 \ No newline at end of file diff --git a/scripts/lint/lint-results.txt b/scripts/lint/lint-results.txt new file mode 100644 index 0000000000..c6190dcce2 --- /dev/null +++ b/scripts/lint/lint-results.txt @@ -0,0 +1,2 @@ +DO NOT TOUCH; GENERATED BY DRONE + Lint Report: 75 errors and 853 warnings \ No newline at end of file diff --git a/scripts/lint/lint-up.rb b/scripts/lint/lint-up.rb new file mode 100644 index 0000000000..9fdfb26aee --- /dev/null +++ b/scripts/lint/lint-up.rb @@ -0,0 +1,180 @@ +## Script from https://github.com/tir38/android-lint-entropy-reducer at 07.05.2017 +# adapts to drone, use git username / token as parameter + +puts "=================== starting Android Lint Entropy Reducer ====================" + +# get args +git_user, git_token, git_branch = ARGV + +# ======================== SETUP ============================ + +# User name for git commits made by this script. +TRAVIS_GIT_USERNAME = String.new("Drone CI server") + +# File name and relative path of generated Lint report. Must match build.gradle file: +# lintOptions { +# htmlOutput file("[FILE_NAME].html") +# } +LINT_REPORT_FILE = String.new("build/reports/lint/lint.html") + +# File name and relative path of previous results of this script. +PREVIOUS_LINT_RESULTS_FILE=String.new("scripts/lint/lint-results.txt") + +# Flag to evaluate warnings. true = check warnings; false = ignore warnings +CHECK_WARNINGS = true + +# File name and relative path to custom lint rules; Can be null or "". +CUSTOM_LINT_FILE = String.new("") + +# ================ SETUP DONE; DON'T TOUCH ANYTHING BELOW ================ + +require 'fileutils' +require 'pathname' +require 'open3' + +# since we need the xml-simple gem, and we want this script self-contained, let's grab it just when we need it +begin + gem "xml-simple" + rescue LoadError + system("gem install xml-simple") + Gem.clear_paths +end + +require 'xmlsimple' + +# add custom Lint jar +if !CUSTOM_LINT_FILE.nil? && + CUSTOM_LINT_FILE.length > 0 + + ENV["ANDROID_LINT_JARS"] = Dir.pwd + "/" + CUSTOM_LINT_FILE + puts "adding custom lint rules to default set: " + puts ENV["ANDROID_LINT_JARS"] +end + +# run Lint +puts "running Lint..." +system './gradlew clean lint' + +# confirm that Lint ran w/out error +result = $?.to_i +if result != 0 + puts "FAIL: failed to run ./gradlew clean lint" + exit 1 +end + +# find Lint report file +lint_reports = Dir.glob(LINT_REPORT_FILE) +if lint_reports.length == 0 + puts "Lint HTML report not found." + exit 1 +end +lint_report = String.new(lint_reports[0]) + +# find error/warning count string in HTML report +error_warning_string = "" +File.open lint_report do |file| + error_warning_string = file.find { |line| line =~ /[0-9]* errors and [0-9]* warnings/ } +end + +# find number of errors +error_string = error_warning_string.match(/[0-9]* errors/)[0] +current_error_count = error_string.match(/[0-9]*/)[0].to_i +puts "found errors: " + current_error_count.to_s + +# find number of warnings +if CHECK_WARNINGS == true + warning_string = error_warning_string.match(/[0-9]* warnings/)[0] + current_warning_count = warning_string.match(/[0-9]*/)[0].to_i + puts "found warnings: " + current_warning_count.to_s +end + +# get previous error and warning counts from last successful build + +previous_results = false + +previous_lint_reports = Dir.glob(PREVIOUS_LINT_RESULTS_FILE) +if previous_lint_reports.nil? || + previous_lint_reports.length == 0 + + previous_lint_report = File.new(PREVIOUS_LINT_RESULTS_FILE, "w") # create for writing to later +else + previous_lint_report = String.new(previous_lint_reports[0]) + + previous_error_warning_string = "" + File.open previous_lint_report do |file| + previous_error_warning_string = file.find { |line| line =~ /[0-9]* errors and [0-9]* warnings/ } + end + + unless previous_error_warning_string.nil? + previous_results = true + + previous_error_string = previous_error_warning_string.match(/[0-9]* errors/)[0] + previous_error_count = previous_error_string.match(/[0-9]*/)[0].to_i + puts "previous errors: " + previous_error_count.to_s + + if CHECK_WARNINGS == true + previous_warning_string = previous_error_warning_string.match(/[0-9]* warnings/)[0] + previous_warning_count = previous_warning_string.match(/[0-9]*/)[0].to_i + puts "previous warnings: " + previous_warning_count.to_s + end + end +end + +# compare previous error count with current error count +if previous_results == true && + current_error_count > previous_error_count + puts "FAIL: error count increased" + exit 1 +end + +# compare previous warning count with current warning count +if CHECK_WARNINGS == true && + previous_results == true && + current_warning_count > previous_warning_count + + puts "FAIL: warning count increased" + exit 1 +end + +# check if warning and error count stayed the same +if previous_results == true && + current_error_count == previous_error_count && + current_warning_count == previous_warning_count + + puts "SUCCESS: count stayed the same" + exit 0 +end + +# either error count or warning count DECREASED + +# write new results to file (will overwrite existing, or create new) +File.write(previous_lint_report, "DO NOT TOUCH; GENERATED BY DRONE\n" + error_warning_string) + +# push changes to github (if this script is run locally, we don't want to overwrite git username and email, so save temporarily) +previous_git_username, _ = Open3.capture2('git config user.name') +previous_git_username = previous_git_username.strip + +previous_git_email, _ = Open3.capture3('git config user.email') +previous_git_email = previous_git_email.strip + +# update git user name and email for this script +system ("git config --local user.name '" + git_user + "'") +system ("git config --local user.email '.'") # set email blank +system ("git remote rm origin") +system ("git remote add origin https://" + git_user + ":" + git_token + "@github.com/nextcloud/android") + +# add previous Lint result file to git +system ('git add ' + PREVIOUS_LINT_RESULTS_FILE) + +# commit changes; Add "skip ci" so that we don't accidentally trigger another Drone build +system ('git commit -m "Drone: update Lint results to reflect reduced error/warning count [skip ci]" ') + +# push to origin +system ('git push origin HEAD:' + git_branch) + +# restore previous git user name and email +system("git config --local user.name '#{previous_git_username}'") +system("git config --local user.email '#{previous_git_email}'") + +puts "SUCCESS: count was reduced" +exit 0 # success diff --git a/src/main/java/com/owncloud/android/MainApp.java b/src/main/java/com/owncloud/android/MainApp.java index 6aec46118f..d55fe15b31 100644 --- a/src/main/java/com/owncloud/android/MainApp.java +++ b/src/main/java/com/owncloud/android/MainApp.java @@ -112,13 +112,8 @@ public class MainApp extends MultiDexApplication { new ThumbnailsCacheManager.InitDiskCacheTask().execute(); if (BuildConfig.DEBUG) { - - String dataFolder = getDataFolder(); - - // Set folder for store logs - Log_OC.setLogDataFolder(dataFolder); - - Log_OC.startLogging(MainApp.storagePath); + // use app writable dir, no permissions needed + Log_OC.startLogging(getAppContext()); Log_OC.d("Debug", "start logging"); } diff --git a/src/main/java/com/owncloud/android/authentication/AccountUtils.java b/src/main/java/com/owncloud/android/authentication/AccountUtils.java index fe3269087a..998ec5d452 100644 --- a/src/main/java/com/owncloud/android/authentication/AccountUtils.java +++ b/src/main/java/com/owncloud/android/authentication/AccountUtils.java @@ -156,7 +156,7 @@ public class AccountUtils { .getDefaultSharedPreferences(context).edit(); appPrefs.putString("select_oc_account", accountName); - appPrefs.commit(); + appPrefs.apply(); result = true; break; } diff --git a/src/main/java/com/owncloud/android/authentication/AuthenticatorActivity.java b/src/main/java/com/owncloud/android/authentication/AuthenticatorActivity.java index 55cd28b8a7..cd3084d848 100644 --- a/src/main/java/com/owncloud/android/authentication/AuthenticatorActivity.java +++ b/src/main/java/com/owncloud/android/authentication/AuthenticatorActivity.java @@ -563,6 +563,7 @@ public class AuthenticatorActivity extends AccountAuthenticatorActivity @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { + // not used at the moment } @Override @@ -1252,7 +1253,8 @@ public class AuthenticatorActivity extends AccountAuthenticatorActivity } } else { if (!webViewLoginMethod) { - updateStatusIconFailUserName(); + int statusText = result.getCode() == ResultCode.MAINTENANCE_MODE ? R.string.maintenance_mode : R.string.auth_fail_get_user_name; + updateStatusIconFailUserName(statusText); showAuthStatus(); } Log_OC.e(TAG, "Access to user name failed: " + result.getLogMessage()); @@ -1452,6 +1454,9 @@ public class AuthenticatorActivity extends AccountAuthenticatorActivity mServerStatusIcon = R.drawable.ic_lock_open_white; mServerStatusText = R.string.auth_redirect_non_secure_connection_title; break; + case MAINTENANCE_MODE: + mServerStatusText = R.string.maintenance_mode; + break; default: mServerStatusText = 0; mServerStatusIcon = 0; @@ -1541,10 +1546,9 @@ public class AuthenticatorActivity extends AccountAuthenticatorActivity } } - - private void updateStatusIconFailUserName() { + private void updateStatusIconFailUserName(int failedStatusText){ mAuthStatusIcon = R.drawable.ic_alert; - mAuthStatusText = R.string.auth_fail_get_user_name; + mAuthStatusText = failedStatusText; } private void updateServerStatusIconNoRegularAuth() { @@ -1787,7 +1791,7 @@ public class AuthenticatorActivity extends AccountAuthenticatorActivity SharedPreferences.Editor editor = PreferenceManager .getDefaultSharedPreferences(this).edit(); editor.putString("select_oc_account", accountName); - editor.commit(); + editor.apply(); } /// prepare result to return to the Authenticator diff --git a/src/main/java/com/owncloud/android/authentication/PassCodeManager.java b/src/main/java/com/owncloud/android/authentication/PassCodeManager.java index b4b382f1fc..a77014b5ca 100644 --- a/src/main/java/com/owncloud/android/authentication/PassCodeManager.java +++ b/src/main/java/com/owncloud/android/authentication/PassCodeManager.java @@ -60,7 +60,7 @@ public class PassCodeManager { return mPassCodeManagerInstance; } - protected PassCodeManager() {}; + protected PassCodeManager() {} public void onActivityCreated(Activity activity) { if (passCodeIsEnabled() || fingerprintIsEnabled()) { diff --git a/src/main/java/com/owncloud/android/db/OCUpload.java b/src/main/java/com/owncloud/android/db/OCUpload.java index 1029b634e4..0b78af00b2 100644 --- a/src/main/java/com/owncloud/android/db/OCUpload.java +++ b/src/main/java/com/owncloud/android/db/OCUpload.java @@ -393,7 +393,4 @@ public class OCUpload implements Parcelable { } enum CanUploadFileNowStatus {NOW, LATER, FILE_GONE, ERROR} - - ; - } diff --git a/src/main/java/com/owncloud/android/db/PreferenceManager.java b/src/main/java/com/owncloud/android/db/PreferenceManager.java index 78c6402b3c..34e75794e1 100644 --- a/src/main/java/com/owncloud/android/db/PreferenceManager.java +++ b/src/main/java/com/owncloud/android/db/PreferenceManager.java @@ -274,7 +274,7 @@ public abstract class PreferenceManager { private static void saveStringPreferenceNow(Context context, String key, String value) { SharedPreferences.Editor appPreferences = getDefaultSharedPreferences(context.getApplicationContext()).edit(); appPreferences.putString(key, value); - appPreferences.commit(); + appPreferences.apply(); } private static void saveIntPreference(Context context, String key, int value) { diff --git a/src/main/java/com/owncloud/android/db/UploadResult.java b/src/main/java/com/owncloud/android/db/UploadResult.java index 82c587fdaa..eee69fbc3c 100644 --- a/src/main/java/com/owncloud/android/db/UploadResult.java +++ b/src/main/java/com/owncloud/android/db/UploadResult.java @@ -34,7 +34,8 @@ public enum UploadResult { FILE_NOT_FOUND(8), DELAYED_FOR_WIFI(9), SERVICE_INTERRUPTED(10), - DELAYED_FOR_CHARGING(11); + DELAYED_FOR_CHARGING(11), + MAINTENANCE_MODE(12); private final int value; @@ -74,6 +75,8 @@ public enum UploadResult { return SERVICE_INTERRUPTED; case 11: return DELAYED_FOR_CHARGING; + case 12: + return MAINTENANCE_MODE; } return null; } @@ -115,6 +118,8 @@ public enum UploadResult { return FILE_ERROR; } return UNKNOWN; + case MAINTENANCE_MODE: + return MAINTENANCE_MODE; default: return UNKNOWN; } diff --git a/src/main/java/com/owncloud/android/files/FileMenuFilter.java b/src/main/java/com/owncloud/android/files/FileMenuFilter.java index 694f4e94b3..2287eb94a2 100644 --- a/src/main/java/com/owncloud/android/files/FileMenuFilter.java +++ b/src/main/java/com/owncloud/android/files/FileMenuFilter.java @@ -1,4 +1,4 @@ -/** +/* * ownCloud Android client application * * @author David A. Velasco @@ -31,10 +31,11 @@ import com.owncloud.android.files.services.FileUploader.FileUploaderBinder; import com.owncloud.android.lib.resources.status.OCCapability; import com.owncloud.android.services.OperationsService.OperationsServiceBinder; import com.owncloud.android.ui.activity.ComponentsGetter; +import com.owncloud.android.utils.MimeTypeUtil; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collection; +import java.util.Collections; import java.util.Iterator; import java.util.List; @@ -59,8 +60,7 @@ public class FileMenuFilter { * @param cg Accessor to app components, needed to access synchronization services * @param context Android {@link Context}, needed to access build setup resources. */ - public FileMenuFilter(Collection targetFiles, Account account, ComponentsGetter cg, - Context context) { + public FileMenuFilter(Collection targetFiles, Account account, ComponentsGetter cg, Context context) { mFiles = targetFiles; mAccount = account; mComponentsGetter = cg; @@ -75,9 +75,8 @@ public class FileMenuFilter { * @param cg Accessor to app components, needed to access synchronization services * @param context Android {@link Context}, needed to access build setup resources. */ - public FileMenuFilter(OCFile targetFile, Account account, ComponentsGetter cg, - Context context) { - this(Arrays.asList(new OCFile[]{targetFile}), account, cg, context); + public FileMenuFilter(OCFile targetFile, Account account, ComponentsGetter cg, Context context) { + this(Collections.singletonList(targetFile), account, cg, context); } /** @@ -91,8 +90,8 @@ public class FileMenuFilter { hideAll(menu); } else { - List toShow = new ArrayList(); - List toHide = new ArrayList(); + List toShow = new ArrayList<>(); + List toHide = new ArrayList<>(); filter(toShow, toHide); @@ -124,7 +123,6 @@ public class FileMenuFilter { } } - /** * Performs the real filtering, to be applied in the {@link Menu} by the caller methods. * @@ -257,6 +255,12 @@ public class FileMenuFilter { } + // SET PICTURE AS + if (isSingleImage() && !MimeTypeUtil.isSVG(mFiles.iterator().next())) { + toShow.add(R.id.action_set_as_wallpaper); + } else { + toHide.add(R.id.action_set_as_wallpaper); + } } private boolean anyFileSynchronizing() { @@ -312,6 +316,10 @@ public class FileMenuFilter { return isSingleSelection() && !mFiles.iterator().next().isFolder(); } + private boolean isSingleImage() { + return isSingleSelection() && MimeTypeUtil.isImage(mFiles.iterator().next()); + } + private boolean allFiles() { return mFiles != null && !containsFolder(); } diff --git a/src/main/java/com/owncloud/android/files/services/FileDownloader.java b/src/main/java/com/owncloud/android/files/services/FileDownloader.java index eb1065a677..a44cc4be49 100644 --- a/src/main/java/com/owncloud/android/files/services/FileDownloader.java +++ b/src/main/java/com/owncloud/android/files/services/FileDownloader.java @@ -54,6 +54,7 @@ import com.owncloud.android.lib.resources.files.FileUtils; import com.owncloud.android.operations.DownloadFileOperation; import com.owncloud.android.ui.activity.FileActivity; import com.owncloud.android.ui.activity.FileDisplayActivity; +import com.owncloud.android.ui.fragment.OCFileListFragment; import com.owncloud.android.ui.notifications.NotificationUtils; import com.owncloud.android.ui.preview.PreviewImageActivity; import com.owncloud.android.ui.preview.PreviewImageFragment; @@ -174,9 +175,10 @@ public class FileDownloader extends Service } else { final Account account = intent.getParcelableExtra(EXTRA_ACCOUNT); final OCFile file = intent.getParcelableExtra(EXTRA_FILE); + final String behaviour = intent.getStringExtra(OCFileListFragment.DOWNLOAD_BEHAVIOUR); AbstractList requestedDownloads = new Vector(); try { - DownloadFileOperation newDownload = new DownloadFileOperation(account, file); + DownloadFileOperation newDownload = new DownloadFileOperation(account, file, behaviour); newDownload.addDatatransferProgressListener(this); newDownload.addDatatransferProgressListener((FileDownloaderBinder) mBinder); Pair putResult = mPendingDownloads.putIfAbsent( @@ -490,7 +492,7 @@ public class FileDownloader extends Service file.setFileLength((new File(mCurrentDownload.getSavePath()).length())); file.setRemoteId(mCurrentDownload.getFile().getRemoteId()); mStorageManager.saveFile(file); - mStorageManager.triggerMediaScan(file.getStoragePath()); + FileDataStorageManager.triggerMediaScan(file.getStoragePath()); mStorageManager.saveConflict(file, null); } @@ -639,6 +641,7 @@ public class FileDownloader extends Service end.putExtra(ACCOUNT_NAME, download.getAccount().name); end.putExtra(EXTRA_REMOTE_PATH, download.getRemotePath()); end.putExtra(EXTRA_FILE_PATH, download.getSavePath()); + end.putExtra(OCFileListFragment.DOWNLOAD_BEHAVIOUR, download.getBehaviour()); if (unlinkedFromRemotePath != null) { end.putExtra(EXTRA_LINKED_TO_PATH, unlinkedFromRemotePath); } diff --git a/src/main/java/com/owncloud/android/files/services/IndexedForest.java b/src/main/java/com/owncloud/android/files/services/IndexedForest.java index 37b728e50a..a3c051abe6 100644 --- a/src/main/java/com/owncloud/android/files/services/IndexedForest.java +++ b/src/main/java/com/owncloud/android/files/services/IndexedForest.java @@ -61,7 +61,7 @@ public class IndexedForest { public Node getParent() { return mParent; - }; + } public Set> getChildren() { return mChildren; @@ -143,7 +143,7 @@ public class IndexedForest { return new Pair(targetKey, linkedTo); } - }; + } public Pair removePayload(String accountName, String remotePath) { diff --git a/src/main/java/com/owncloud/android/media/MediaControlView.java b/src/main/java/com/owncloud/android/media/MediaControlView.java index a55ebc4a6c..fe9faf5ab6 100644 --- a/src/main/java/com/owncloud/android/media/MediaControlView.java +++ b/src/main/java/com/owncloud/android/media/MediaControlView.java @@ -89,6 +89,7 @@ public class MediaControlView extends FrameLayout /* implements OnLayoutChangeLi @Override public void onFinishInflate() { + super.onFinishInflate(); /* if (mRoot != null) initControllerView(mRoot); diff --git a/src/main/java/com/owncloud/android/media/MediaService.java b/src/main/java/com/owncloud/android/media/MediaService.java index e2850d8356..eb67c18c1c 100644 --- a/src/main/java/com/owncloud/android/media/MediaService.java +++ b/src/main/java/com/owncloud/android/media/MediaService.java @@ -98,9 +98,6 @@ public class MediaService extends Service implements OnCompletionListener, OnPre PAUSED } - ; - - /** Current state */ private State mState = State.STOPPED; diff --git a/src/main/java/com/owncloud/android/operations/DownloadFileOperation.java b/src/main/java/com/owncloud/android/operations/DownloadFileOperation.java index b45cbac855..c796d5c613 100644 --- a/src/main/java/com/owncloud/android/operations/DownloadFileOperation.java +++ b/src/main/java/com/owncloud/android/operations/DownloadFileOperation.java @@ -49,6 +49,7 @@ public class DownloadFileOperation extends RemoteOperation { private Account mAccount; private OCFile mFile; + private String mBehaviour; private Set mDataTransferListeners = new HashSet(); private long mModificationTimestamp = 0; private String mEtag = ""; @@ -56,8 +57,8 @@ public class DownloadFileOperation extends RemoteOperation { private DownloadRemoteFileOperation mDownloadOperation; - - public DownloadFileOperation(Account account, OCFile file) { + + public DownloadFileOperation(Account account, OCFile file, String behaviour) { if (account == null) { throw new IllegalArgumentException("Illegal null account in DownloadFileOperation " + "creation"); @@ -69,6 +70,7 @@ public class DownloadFileOperation extends RemoteOperation { mAccount = account; mFile = file; + mBehaviour = behaviour; } @@ -80,6 +82,10 @@ public class DownloadFileOperation extends RemoteOperation { return mFile; } + public String getBehaviour() { + return mBehaviour; + } + public String getSavePath() { if (mFile.getStoragePath() != null) { File path = new File(mFile.getStoragePath()); // re-downloads should be done over the original file diff --git a/src/main/java/com/owncloud/android/operations/UnshareOperation.java b/src/main/java/com/owncloud/android/operations/UnshareOperation.java index de2f879fd4..585ff6e865 100644 --- a/src/main/java/com/owncloud/android/operations/UnshareOperation.java +++ b/src/main/java/com/owncloud/android/operations/UnshareOperation.java @@ -89,8 +89,8 @@ public class UnshareOperation extends SyncOperation { getStorageManager().saveFile(file); getStorageManager().removeShare(share); - - } else if (!existsFile(client, file.getRemotePath())) { + + } else if (result.getCode() != ResultCode.MAINTENANCE_MODE && !existsFile(client, file.getRemotePath())) { // unshare failed because file was deleted before getStorageManager().removeFile(file, true, true); } diff --git a/src/main/java/com/owncloud/android/operations/UploadFileOperation.java b/src/main/java/com/owncloud/android/operations/UploadFileOperation.java index cc328dad67..10bc08a9fd 100644 --- a/src/main/java/com/owncloud/android/operations/UploadFileOperation.java +++ b/src/main/java/com/owncloud/android/operations/UploadFileOperation.java @@ -2,7 +2,7 @@ * ownCloud Android client application * * @author David A. Velasco - * Copyright (C) 2016 ownCloud Inc. + * Copyright (C) 2016 ownCloud GmbH. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2, @@ -323,6 +323,7 @@ public class UploadFileOperation extends SyncOperation { remoteParentPath = remoteParentPath.endsWith(OCFile.PATH_SEPARATOR) ? remoteParentPath : remoteParentPath + OCFile.PATH_SEPARATOR; result = grantFolderExistence(remoteParentPath, client); + if (!result.isSuccess()) { return result; @@ -370,15 +371,19 @@ public class UploadFileOperation extends SyncOperation { throw new OperationCancelledException(); } + // Get the last modification date of the file from the file system + Long timeStampLong = originalFile.lastModified()/1000; + String timeStamp = timeStampLong.toString(); + /// perform the upload if ( mChunked && (new File(mFile.getStoragePath())).length() > ChunkedUploadRemoteFileOperation.CHUNK_SIZE ) { mUploadOperation = new ChunkedUploadRemoteFileOperation(mContext, mFile.getStoragePath(), - mFile.getRemotePath(), mFile.getMimetype(), mFile.getEtagInConflict()); + mFile.getRemotePath(), mFile.getMimetype(), mFile.getEtagInConflict(), timeStamp); } else { mUploadOperation = new UploadRemoteFileOperation(mFile.getStoragePath(), - mFile.getRemotePath(), mFile.getMimetype(), mFile.getEtagInConflict()); + mFile.getRemotePath(), mFile.getMimetype(), mFile.getEtagInConflict(), timeStamp); } Iterator listener = mDataTransferListeners.iterator(); while (listener.hasNext()) { diff --git a/src/main/java/com/owncloud/android/providers/UsersAndGroupsSearchProvider.java b/src/main/java/com/owncloud/android/providers/UsersAndGroupsSearchProvider.java index 99d991c135..393cf008f1 100644 --- a/src/main/java/com/owncloud/android/providers/UsersAndGroupsSearchProvider.java +++ b/src/main/java/com/owncloud/android/providers/UsersAndGroupsSearchProvider.java @@ -265,6 +265,7 @@ public class UsersAndGroupsSearchProvider extends ContentProvider { // The Toast must be shown in the main thread to grant that will be hidden correctly; otherwise // the thread may die before, an exception will occur, and the message will be left on the screen // until the app dies + Toast.makeText( getContext().getApplicationContext(), ErrorMessageAdapter.getErrorCauseMessage( diff --git a/src/main/java/com/owncloud/android/ui/CustomPopup.java b/src/main/java/com/owncloud/android/ui/CustomPopup.java index 21a3ef1e29..88c7ee2c1c 100644 --- a/src/main/java/com/owncloud/android/ui/CustomPopup.java +++ b/src/main/java/com/owncloud/android/ui/CustomPopup.java @@ -63,9 +63,11 @@ public class CustomPopup { } public void onCreate() { + // not used at the moment } public void onShow() { + // not used at the moment } public void preShow() { diff --git a/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.java b/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.java index 8a1100c9f3..de6ce195dd 100644 --- a/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.java +++ b/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.java @@ -1373,28 +1373,35 @@ public class FileDisplayActivity extends HookActivity public void onReceive(Context context, Intent intent) { try { boolean sameAccount = isSameAccount(intent); - String downloadedRemotePath = - intent.getStringExtra(FileDownloader.EXTRA_REMOTE_PATH); + String downloadedRemotePath = intent.getStringExtra(FileDownloader.EXTRA_REMOTE_PATH); + String downloadBehaviour = intent.getStringExtra(OCFileListFragment.DOWNLOAD_BEHAVIOUR); boolean isDescendant = isDescendant(downloadedRemotePath); if (sameAccount && isDescendant) { - String linkedToRemotePath = - intent.getStringExtra(FileDownloader.EXTRA_LINKED_TO_PATH); + String linkedToRemotePath = intent.getStringExtra(FileDownloader.EXTRA_LINKED_TO_PATH); if (linkedToRemotePath == null || isAscendant(linkedToRemotePath)) { refreshListOfFilesFragment(false); } refreshSecondFragment( intent.getAction(), downloadedRemotePath, - intent.getBooleanExtra(FileDownloader.EXTRA_DOWNLOAD_RESULT, false) - ); + intent.getBooleanExtra(FileDownloader.EXTRA_DOWNLOAD_RESULT, false)); } if (mWaitingToSend != null) { - mWaitingToSend = - getStorageManager().getFileByPath(mWaitingToSend.getRemotePath()); - if (mWaitingToSend.isDown()) { - sendDownloadedFile(); + mWaitingToSend = getStorageManager().getFileByPath(mWaitingToSend.getRemotePath()); + if (mWaitingToSend.isDown() && downloadBehaviour != null) { + switch (downloadBehaviour) { + case OCFileListFragment.DOWNLOAD_SEND: + sendDownloadedFile(); + break; + case OCFileListFragment.DOWNLOAD_SET_AS: + setPictureAs(); + break; + default: + // do nothing + break; + } } } @@ -1872,12 +1879,13 @@ public class FileDisplayActivity extends HookActivity } } - private void requestForDownload(OCFile file) { + private void requestForDownload(OCFile file, String downloadBehaviour) { Account account = getAccount(); if (!mDownloaderBinder.isDownloading(account, mWaitingToPreview)) { Intent i = new Intent(this, FileDownloader.class); i.putExtra(FileDownloader.EXTRA_ACCOUNT, account); i.putExtra(FileDownloader.EXTRA_FILE, file); + i.putExtra(OCFileListFragment.DOWNLOAD_BEHAVIOUR, downloadBehaviour); startService(i); } } @@ -1887,6 +1895,11 @@ public class FileDisplayActivity extends HookActivity mWaitingToSend = null; } + private void setPictureAs() { + getFileOperationsHelper().setPictureAs(mWaitingToSend); + mWaitingToSend = null; + } + /** * Requests the download of the received {@link OCFile} , updates the UI @@ -1895,9 +1908,9 @@ public class FileDisplayActivity extends HookActivity * * @param file {@link OCFile} to download and preview. */ - public void startDownloadForSending(OCFile file) { + public void startDownloadForSending(OCFile file, String downloadBehaviour) { mWaitingToSend = file; - requestForDownload(mWaitingToSend); + requestForDownload(mWaitingToSend, downloadBehaviour); boolean hasSecondFragment = (getSecondFragment() != null); updateFragmentsVisibility(hasSecondFragment); } diff --git a/src/main/java/com/owncloud/android/ui/activity/FolderPickerActivity.java b/src/main/java/com/owncloud/android/ui/activity/FolderPickerActivity.java index bde15e7e96..a28d2664e9 100644 --- a/src/main/java/com/owncloud/android/ui/activity/FolderPickerActivity.java +++ b/src/main/java/com/owncloud/android/ui/activity/FolderPickerActivity.java @@ -104,7 +104,7 @@ public class FolderPickerActivity extends FileActivity implements FileFragment.C caption = getIntent().getStringExtra(EXTRA_ACTION); } else { caption = getString(R.string.default_display_name_for_root_folder); - }; + } getSupportActionBar().setTitle(caption); setIndeterminate(mSyncInProgress); @@ -518,8 +518,6 @@ public class FolderPickerActivity extends FileActivity implements FileFragment.C } } - - /** * Shows the information of the {@link OCFile} received as a * parameter in the second fragment. @@ -528,7 +526,7 @@ public class FolderPickerActivity extends FileActivity implements FileFragment.C */ @Override public void showDetails(OCFile file) { - + // not used at the moment } /** @@ -536,7 +534,7 @@ public class FolderPickerActivity extends FileActivity implements FileFragment.C */ @Override public void onTransferStateChanged(OCFile file, boolean downloading, boolean uploading) { - + // not used at the moment } @Override diff --git a/src/main/java/com/owncloud/android/ui/activity/LogHistoryActivity.java b/src/main/java/com/owncloud/android/ui/activity/LogHistoryActivity.java index f22a55e292..14490a3ba1 100644 --- a/src/main/java/com/owncloud/android/ui/activity/LogHistoryActivity.java +++ b/src/main/java/com/owncloud/android/ui/activity/LogHistoryActivity.java @@ -40,7 +40,6 @@ import com.owncloud.android.R; import com.owncloud.android.lib.common.utils.Log_OC; import com.owncloud.android.ui.dialog.LoadingDialog; import com.owncloud.android.utils.AnalyticsUtils; -import com.owncloud.android.utils.FileStorageUtils; import java.io.BufferedReader; import java.io.File; @@ -64,7 +63,7 @@ public class LogHistoryActivity extends ToolbarActivity { private static final String SCREEN_NAME = "Logs"; - private String mLogPath = FileStorageUtils.getLogPath(); + private String mLogPath = Log_OC.getLogPath(); private File logDIR = null; private String mLogText; @@ -166,11 +165,7 @@ public class LogHistoryActivity extends ToolbarActivity { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) { uris.add(Uri.fromFile(logFile)); } else { - uris.add(FileProvider.getUriForFile( - this, - getString(R.string.file_provider_authority), - logFile - )); + uris.add(FileProvider.getUriForFile(this, getString(R.string.file_provider_authority), logFile)); } } } diff --git a/src/main/java/com/owncloud/android/ui/activity/ParticipateActivity.java b/src/main/java/com/owncloud/android/ui/activity/ParticipateActivity.java index 2dc9232527..7c7558be2e 100644 --- a/src/main/java/com/owncloud/android/ui/activity/ParticipateActivity.java +++ b/src/main/java/com/owncloud/android/ui/activity/ParticipateActivity.java @@ -84,13 +84,12 @@ public class ParticipateActivity extends FileActivity { TextView contributeTranslationView = (TextView) findViewById(R.id.participate_contribute_translate_text); contributeTranslationView.setMovementMethod(LinkMovementMethod.getInstance()); contributeTranslationView.setText(Html.fromHtml( - getString(R.string.participate_contribute_translate_text, - getString(R.string.translation_link) - ))); + getString(R.string.participate_contribute_translate_text, getString(R.string.translation_link)))); TextView contributeGithubView = (TextView) findViewById(R.id.participate_contribute_github_text); contributeGithubView.setMovementMethod(LinkMovementMethod.getInstance()); - contributeGithubView.setText(Html.fromHtml(getString(R.string.participate_contribute_github_text))); + contributeGithubView.setText(Html.fromHtml(getString(R.string.participate_contribute_github_text, + getString(R.string.contributing_link)))); findViewById(R.id.participate_testing_report).setOnClickListener(new View.OnClickListener() { @Override diff --git a/src/main/java/com/owncloud/android/ui/activity/Preferences.java b/src/main/java/com/owncloud/android/ui/activity/Preferences.java index 657ea9a322..fed899a668 100644 --- a/src/main/java/com/owncloud/android/ui/activity/Preferences.java +++ b/src/main/java/com/owncloud/android/ui/activity/Preferences.java @@ -514,6 +514,9 @@ public class Preferences extends PreferenceActivity getPreferenceScreen().removePreference(mPrefInstantUploadCategory); } + // About category + PreferenceCategory preferenceCategoryAbout = (PreferenceCategory) findPreference("about"); + /* About App */ pAboutApp = findPreference("about_app"); if (pAboutApp != null) { @@ -521,6 +524,32 @@ public class Preferences extends PreferenceActivity pAboutApp.setSummary(String.format(getString(R.string.about_version), appVersion)); } + // privacy + boolean privacyEnabled = getResources().getBoolean(R.bool.privacy_enabled); + Preference privacyPreference = findPreference("privacy"); + if (privacyPreference != null) { + if (privacyEnabled) { + privacyPreference.setOnPreferenceClickListener(new OnPreferenceClickListener() { + @Override + public boolean onPreferenceClick(Preference preference) { + String privacyUrl = getString(R.string.privacy_url); + if (privacyUrl.length() > 0) { + Intent externalWebViewIntent = new Intent(getApplicationContext(), ExternalSiteWebView.class); + externalWebViewIntent.putExtra(ExternalSiteWebView.EXTRA_TITLE, + getResources().getString(R.string.privacy)); + externalWebViewIntent.putExtra(ExternalSiteWebView.EXTRA_URL, privacyUrl); + externalWebViewIntent.putExtra(ExternalSiteWebView.EXTRA_SHOW_SIDEBAR, false); + externalWebViewIntent.putExtra(ExternalSiteWebView.EXTRA_MENU_ITEM_ID, -1); + startActivity(externalWebViewIntent); + } + return true; + } + }); + } else { + preferenceCategoryAbout.removePreference(privacyPreference); + } + } + loadExternalSettingLinks(preferenceCategoryMore); loadStoragePath(); @@ -840,7 +869,7 @@ public class Preferences extends PreferenceActivity MainApp.setStoragePath(mStoragePath); SharedPreferences.Editor editor = appPrefs.edit(); editor.putString(PreferenceKeys.STORAGE_PATH, mStoragePath); - editor.commit(); + editor.apply(); String storageDescription = DataStorageProvider.getInstance().getStorageDescriptionByPath(mStoragePath); mPrefStoragePath.setSummary(storageDescription); mPrefStoragePath.setValue(newStoragePath); @@ -866,7 +895,7 @@ public class Preferences extends PreferenceActivity PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); SharedPreferences.Editor editor = appPrefs.edit(); editor.putString(PreferenceKeys.INSTANT_UPLOAD_PATH, mUploadPath); - editor.commit(); + editor.apply(); } /** @@ -887,7 +916,7 @@ public class Preferences extends PreferenceActivity PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); SharedPreferences.Editor editor = appPrefs.edit(); editor.putString(PreferenceKeys.INSTANT_VIDEO_UPLOAD_PATH, mUploadVideoPath); - editor.commit(); + editor.apply(); } @Override diff --git a/src/main/java/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java b/src/main/java/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java index 8d561a776b..535548204a 100755 --- a/src/main/java/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java +++ b/src/main/java/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java @@ -1137,10 +1137,14 @@ public class ReceiveExternalFilesActivity extends FileActivity } @Override - public void onNeutral(String callerTag) {} + public void onNeutral(String callerTag) { + // not used at the moment + } @Override - public void onCancel(String callerTag) {} + public void onCancel(String callerTag) { + // not used at the moment + } } ); errorDialog.show(getSupportFragmentManager(), FTAG_ERROR_FRAGMENT); diff --git a/src/main/java/com/owncloud/android/ui/activity/ShareActivity.java b/src/main/java/com/owncloud/android/ui/activity/ShareActivity.java index 9da89ecde6..933b1e057f 100644 --- a/src/main/java/com/owncloud/android/ui/activity/ShareActivity.java +++ b/src/main/java/com/owncloud/android/ui/activity/ShareActivity.java @@ -38,6 +38,7 @@ import com.owncloud.android.lib.common.operations.RemoteOperationResult; import com.owncloud.android.lib.common.utils.Log_OC; import com.owncloud.android.lib.resources.shares.OCShare; import com.owncloud.android.lib.resources.shares.ShareType; +import com.owncloud.android.lib.resources.status.OwnCloudVersion; import com.owncloud.android.operations.CreateShareViaLinkOperation; import com.owncloud.android.operations.GetSharesForFileOperation; import com.owncloud.android.operations.UnshareOperation; @@ -51,6 +52,7 @@ import com.owncloud.android.ui.fragment.ShareFragmentListener; import com.owncloud.android.utils.ErrorMessageAdapter; import com.owncloud.android.utils.GetShareWithUsersAsyncTask; +import java.util.ArrayList; /** * Activity for sharing files @@ -111,10 +113,19 @@ public class ShareActivity extends FileActivity Uri data = intent.getData(); String dataString = intent.getDataString(); String shareWith = dataString.substring(dataString.lastIndexOf('/') + 1); - doShareWith( - shareWith, - data.getAuthority() - ); + + ArrayList shareeNames = new ArrayList<>(); + for (OCShare share : getStorageManager().getSharesWithForAFile(getFile().getRemotePath(), getAccount().name)) { + shareeNames.add(share.getShareWith()); + } + + if (!shareeNames.contains(shareWith)) { + + doShareWith( + shareWith, + data.getAuthority() + ); + } } else { Log_OC.e(TAG, "Unexpected intent " + intent.toString()); @@ -142,11 +153,19 @@ public class ShareActivity extends FileActivity if (getFile().isSharedWithMe()) { return OCShare.READ_PERMISSION_FLAG; // minimum permissions - } else if (getFile().isFolder()) { - return (isFederated) ? OCShare.FEDERATED_PERMISSIONS_FOR_FOLDER : OCShare.MAXIMUM_PERMISSIONS_FOR_FOLDER; - - } else { // isFile - return (isFederated) ? OCShare.FEDERATED_PERMISSIONS_FOR_FILE : OCShare.MAXIMUM_PERMISSIONS_FOR_FILE; + } else if (isFederated) { + OwnCloudVersion serverVersion = com.owncloud.android.authentication.AccountUtils. + getServerVersion(getAccount()); + if (serverVersion != null && serverVersion.isNotReshareableFederatedSupported()) { + return (getFile().isFolder() ? OCShare.FEDERATED_PERMISSIONS_FOR_FOLDER_AFTER_OC9 : + OCShare.FEDERATED_PERMISSIONS_FOR_FILE_AFTER_OC9); + } else { + return (getFile().isFolder() ? OCShare.FEDERATED_PERMISSIONS_FOR_FOLDER_UP_TO_OC9 : + OCShare.FEDERATED_PERMISSIONS_FOR_FILE_UP_TO_OC9); + } + } else { + return (getFile().isFolder() ? OCShare.MAXIMUM_PERMISSIONS_FOR_FOLDER : + OCShare.MAXIMUM_PERMISSIONS_FOR_FILE); } } diff --git a/src/main/java/com/owncloud/android/ui/activity/StorageMigration.java b/src/main/java/com/owncloud/android/ui/activity/StorageMigration.java index f53d80d9da..76443c1a29 100644 --- a/src/main/java/com/owncloud/android/ui/activity/StorageMigration.java +++ b/src/main/java/com/owncloud/android/ui/activity/StorageMigration.java @@ -296,7 +296,6 @@ public class StorageMigration { protected Integer doInBackground(Void... voids) { publishProgress(R.string.file_migration_preparing); - Log_OC.stopLogging(); boolean[] syncStates = null; try { publishProgress(R.string.file_migration_saving_accounts_configuration); @@ -309,7 +308,6 @@ public class StorageMigration { publishProgress(R.string.file_migration_restoring_accounts_configuration); restoreAccountsSyncStatus(syncStates); } - Log_OC.startLogging(mStorageTarget); return 0; } @@ -338,7 +336,6 @@ public class StorageMigration { @Override protected Integer doInBackground(Void... args) { publishProgress(R.string.file_migration_preparing); - Log_OC.stopLogging(); boolean[] syncState = null; @@ -372,14 +369,12 @@ public class StorageMigration { } catch (MigrationException e) { rollback(); - Log_OC.startLogging(mStorageSource); return e.getResId(); } finally { publishProgress(R.string.file_migration_restoring_accounts_configuration); restoreAccountsSyncStatus(syncState); } - Log_OC.startLogging(mStorageTarget); publishProgress(R.string.file_migration_ok_finished); return 0; diff --git a/src/main/java/com/owncloud/android/ui/activity/UploadListActivity.java b/src/main/java/com/owncloud/android/ui/activity/UploadListActivity.java index 24d4991276..16c7949447 100755 --- a/src/main/java/com/owncloud/android/ui/activity/UploadListActivity.java +++ b/src/main/java/com/owncloud/android/ui/activity/UploadListActivity.java @@ -334,7 +334,7 @@ public class UploadListActivity extends FileActivity implements UploadListFragme mUploaderBinder = null; } } - }; + } /** * Once the file upload has changed its status -> update uploads list view diff --git a/src/main/java/com/owncloud/android/ui/adapter/ExpandableUploadListAdapter.java b/src/main/java/com/owncloud/android/ui/adapter/ExpandableUploadListAdapter.java index cd62412ed8..7f74ac01d3 100755 --- a/src/main/java/com/owncloud/android/ui/adapter/ExpandableUploadListAdapter.java +++ b/src/main/java/com/owncloud/android/ui/adapter/ExpandableUploadListAdapter.java @@ -514,6 +514,7 @@ public class ExpandableUploadListAdapter extends BaseExpandableListAdapter imple * @return Text describing the status of the given upload. */ private String getStatusText(OCUpload upload) { + String status; switch (upload.getUploadStatus()) { @@ -596,6 +597,9 @@ public class ExpandableUploadListAdapter extends BaseExpandableListAdapter imple // should not get here ; status should be UPLOAD_SUCCESS status = mParentActivity.getString(R.string.uploads_view_upload_status_succeeded); break; + case MAINTENANCE_MODE: + status = mParentActivity.getString(R.string.maintenance_mode); + break; default: status = "Naughty devs added a new fail result but no description for the user"; break; diff --git a/src/main/java/com/owncloud/android/ui/dialog/SslValidatorDialog.java b/src/main/java/com/owncloud/android/ui/dialog/SslValidatorDialog.java index 423784ad52..9744f68aef 100644 --- a/src/main/java/com/owncloud/android/ui/dialog/SslValidatorDialog.java +++ b/src/main/java/com/owncloud/android/ui/dialog/SslValidatorDialog.java @@ -82,7 +82,6 @@ public class SslValidatorDialog extends Dialog { * Instances have to be created through static {@link SslValidatorDialog#newInstance}. * * @param context Android context where the dialog will live - * @param e Exception causing the need of prompt the user about the server certificate. * @param listener Object to notice when the server certificate was added to the local certificates store. */ private SslValidatorDialog(Context context, OnSslValidatorListener listener) { diff --git a/src/main/java/com/owncloud/android/ui/fragment/EditShareFragment.java b/src/main/java/com/owncloud/android/ui/fragment/EditShareFragment.java index ec7a946b97..d9f5730a9b 100644 --- a/src/main/java/com/owncloud/android/ui/fragment/EditShareFragment.java +++ b/src/main/java/com/owncloud/android/ui/fragment/EditShareFragment.java @@ -33,6 +33,7 @@ import android.widget.CompoundButton; import android.widget.TextView; import com.owncloud.android.R; +import com.owncloud.android.authentication.AccountUtils; import com.owncloud.android.datamodel.FileDataStorageManager; import com.owncloud.android.datamodel.OCFile; import com.owncloud.android.lib.common.operations.RemoteOperationResult; @@ -40,6 +41,7 @@ import com.owncloud.android.lib.common.utils.Log_OC; import com.owncloud.android.lib.resources.shares.OCShare; import com.owncloud.android.lib.resources.shares.SharePermissionsBuilder; import com.owncloud.android.lib.resources.shares.ShareType; +import com.owncloud.android.lib.resources.status.OwnCloudVersion; import com.owncloud.android.ui.activity.FileActivity; import com.owncloud.android.utils.AnalyticsUtils; @@ -67,6 +69,9 @@ public class EditShareFragment extends Fragment { /** File bound to mShare, received as a parameter in construction time */ private OCFile mFile; + /** Account of the shared file, received as a parameter in construction time */ + private Account mAccount; + /** Listener for changes on privilege checkboxes */ private CompoundButton.OnCheckedChangeListener mOnPrivilegeChangeListener; @@ -99,7 +104,7 @@ public class EditShareFragment extends Fragment { mShare = getArguments().getParcelable(ARG_SHARE); mFile = getArguments().getParcelable(ARG_FILE); /* OC account holding the shared file, received as a parameter in construction time */ - //Account mAccount = getArguments().getParcelable(ARG_ACCOUNT); + mAccount = getArguments().getParcelable(ARG_ACCOUNT); } } @@ -145,34 +150,39 @@ public class EditShareFragment extends Fragment { int sharePermissions = mShare.getPermissions(); boolean isFederated = ShareType.FEDERATED.equals(mShare.getShareType()); - CompoundButton compound; + OwnCloudVersion serverVersion = AccountUtils.getServerVersion(mAccount); + boolean isNotReshareableFederatedSupported = (serverVersion != null && + serverVersion.isNotReshareableFederatedSupported()); - compound = (CompoundButton) editShareView.findViewById(R.id.canShareSwitch); - if(isFederated) { + CompoundButton compound = (CompoundButton) editShareView.findViewById(R.id.canShareSwitch); + + if (isFederated) { compound.setVisibility(View.INVISIBLE); } compound.setChecked((sharePermissions & OCShare.SHARE_PERMISSION_FLAG) > 0); compound = (CompoundButton) editShareView.findViewById(R.id.canEditSwitch); - int anyUpdatePermission = - OCShare.CREATE_PERMISSION_FLAG | - OCShare.UPDATE_PERMISSION_FLAG | - OCShare.DELETE_PERMISSION_FLAG; + int anyUpdatePermission = OCShare.CREATE_PERMISSION_FLAG | OCShare.UPDATE_PERMISSION_FLAG | + OCShare.DELETE_PERMISSION_FLAG; boolean canEdit = (sharePermissions & anyUpdatePermission) > 0; compound.setChecked(canEdit); - if (mFile.isFolder() && !isFederated) { + boolean areEditOptionsAvailable = !isFederated || isNotReshareableFederatedSupported; + + if (mFile.isFolder() && areEditOptionsAvailable) { + /// TODO change areEditOptionsAvailable in order to delete !isFederated + // from checking when iOS is ready compound = (CompoundButton) editShareView.findViewById(R.id.canEditCreateCheckBox); compound.setChecked((sharePermissions & OCShare.CREATE_PERMISSION_FLAG) > 0); - compound.setVisibility(canEdit ? View.VISIBLE : View.GONE); + compound.setVisibility((canEdit) ? View.VISIBLE : View.GONE); compound = (CompoundButton) editShareView.findViewById(R.id.canEditChangeCheckBox); compound.setChecked((sharePermissions & OCShare.UPDATE_PERMISSION_FLAG) > 0); - compound.setVisibility(canEdit ? View.VISIBLE : View.GONE); + compound.setVisibility((canEdit) ? View.VISIBLE : View.GONE); compound = (CompoundButton) editShareView.findViewById(R.id.canEditDeleteCheckBox); compound.setChecked((sharePermissions & OCShare.DELETE_PERMISSION_FLAG) > 0); - compound.setVisibility(canEdit ? View.VISIBLE : View.GONE); + compound.setVisibility((canEdit) ? View.VISIBLE : View.GONE); } setPermissionsListening(editShareView, true); diff --git a/src/main/java/com/owncloud/android/ui/fragment/FileDetailFragment.java b/src/main/java/com/owncloud/android/ui/fragment/FileDetailFragment.java index a13acd3767..2d45417175 100644 --- a/src/main/java/com/owncloud/android/ui/fragment/FileDetailFragment.java +++ b/src/main/java/com/owncloud/android/ui/fragment/FileDetailFragment.java @@ -118,11 +118,10 @@ public class FileDetailFragment extends FileFragment implements OnClickListener @Override public void onActivityCreated(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); + super.onActivityCreated(savedInstanceState); setHasOptionsMenu(true); } - @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { @@ -308,7 +307,8 @@ public class FileDetailFragment extends FileFragment implements OnClickListener // Obtain the file if (!getFile().isDown()) { // Download the file Log_OC.d(TAG, getFile().getRemotePath() + " : File must be downloaded"); - ((FileDisplayActivity) mContainerActivity).startDownloadForSending(getFile()); + ((FileDisplayActivity) mContainerActivity).startDownloadForSending(getFile(), + OCFileListFragment.DOWNLOAD_SEND); } else { mContainerActivity.getFileOperationsHelper().sendDownloadedFile(getFile()); diff --git a/src/main/java/com/owncloud/android/ui/fragment/LocalFileListFragment.java b/src/main/java/com/owncloud/android/ui/fragment/LocalFileListFragment.java index a5f89a4764..1a4561ce3d 100644 --- a/src/main/java/com/owncloud/android/ui/fragment/LocalFileListFragment.java +++ b/src/main/java/com/owncloud/android/ui/fragment/LocalFileListFragment.java @@ -141,7 +141,7 @@ public class LocalFileListFragment extends ExtendedListFragment { } else { /// Click on a file ImageView checkBoxV = (ImageView) v.findViewById(R.id.custom_checkbox); if (checkBoxV != null) { - if (((AbsListView)getListView()).isItemChecked(position)) { + if (getListView().isItemChecked(position)) { checkBoxV.setImageResource(R.drawable.ic_checkbox_marked); } else { checkBoxV.setImageResource(R.drawable.ic_checkbox_blank_outline); @@ -222,7 +222,7 @@ public class LocalFileListFragment extends ExtendedListFragment { } // by now, only files in the same directory will be kept as selected - ((AbsListView)mCurrentListView).clearChoices(); + mCurrentListView.clearChoices(); mAdapter.swapDirectory(directory); if (mDirectory == null || !mDirectory.equals(directory)) { mCurrentListView.setSelection(0); @@ -238,7 +238,7 @@ public class LocalFileListFragment extends ExtendedListFragment { */ public String[] getCheckedFilePaths() { ArrayList result = new ArrayList(); - SparseBooleanArray positions = ((AbsListView)mCurrentListView).getCheckedItemPositions(); + SparseBooleanArray positions = mCurrentListView.getCheckedItemPositions(); if (positions.size() > 0) { for (int i = 0; i < positions.size(); i++) { if (positions.get(positions.keyAt(i)) == true) { @@ -270,7 +270,7 @@ public class LocalFileListFragment extends ExtendedListFragment { * @param select true to select all, false to deselect all */ public void selectAllFiles(boolean select) { - AbsListView listView = (AbsListView) getListView(); + AbsListView listView = getListView(); for (int position = 0; position < listView.getCount(); position++) { File file = (File) mAdapter.getItem(position); if (file.isFile()) { diff --git a/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java b/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java index 7c163687a3..1ee5108675 100644 --- a/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java +++ b/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java @@ -120,6 +120,10 @@ public class OCFileListFragment extends ExtendedListFragment implements OCFileLi public final static String ARG_ALLOW_CONTEXTUAL_ACTIONS = MY_PACKAGE + ".ALLOW_CONTEXTUAL"; public final static String ARG_HIDE_FAB = MY_PACKAGE + ".HIDE_FAB"; + public static final String DOWNLOAD_BEHAVIOUR = "DOWNLOAD_BEHAVIOUR"; + public static final String DOWNLOAD_SEND = "DOWNLOAD_SEND"; + public static final String DOWNLOAD_SET_AS = "DOWNLOAD_SET_AS"; + public static final String SEARCH_EVENT = "SEARCH_EVENT"; private static final String KEY_FILE = MY_PACKAGE + ".extra.FILE"; @@ -867,13 +871,21 @@ public class OCFileListFragment extends ExtendedListFragment implements OCFileLi // Obtain the file if (!singleFile.isDown()) { // Download the file Log_OC.d(TAG, singleFile.getRemotePath() + " : File must be downloaded"); - ((FileDisplayActivity) mContainerActivity).startDownloadForSending(singleFile); - + ((FileDisplayActivity) mContainerActivity).startDownloadForSending(singleFile, DOWNLOAD_SEND); } else { mContainerActivity.getFileOperationsHelper().sendDownloadedFile(singleFile); } return true; } + case R.id.action_set_as_wallpaper: { + if (singleFile.isDown()) { + mContainerActivity.getFileOperationsHelper().setPictureAs(singleFile); + } else { + Log_OC.d(TAG, singleFile.getRemotePath() + " : File must be downloaded"); + ((FileDisplayActivity) mContainerActivity).startDownloadForSending(singleFile, DOWNLOAD_SET_AS); + } + return true; + } } } diff --git a/src/main/java/com/owncloud/android/ui/helpers/FileOperationsHelper.java b/src/main/java/com/owncloud/android/ui/helpers/FileOperationsHelper.java index f49fc4e5e0..3c969afc8e 100755 --- a/src/main/java/com/owncloud/android/ui/helpers/FileOperationsHelper.java +++ b/src/main/java/com/owncloud/android/ui/helpers/FileOperationsHelper.java @@ -1,23 +1,22 @@ /** - * ownCloud Android client application - * - * @author masensio - * @author David A. Velasco - * @author Juan Carlos González Cabrero - * Copyright (C) 2015 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 . + * ownCloud Android client application * + * @author masensio + * @author David A. Velasco + * @author Juan Carlos González Cabrero + * Copyright (C) 2015 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 . */ package com.owncloud.android.ui.helpers; @@ -29,12 +28,14 @@ import android.content.Intent; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.net.Uri; -import android.os.Parcelable; +import android.os.Build; import android.support.annotation.Nullable; import android.support.v4.app.DialogFragment; +import android.support.v4.content.FileProvider; import android.webkit.MimeTypeMap; import android.widget.Toast; +import com.owncloud.android.MainApp; import com.owncloud.android.R; import com.owncloud.android.authentication.AccountUtils; import com.owncloud.android.datamodel.OCFile; @@ -54,6 +55,7 @@ import com.owncloud.android.ui.events.FavoriteEvent; import org.greenrobot.eventbus.EventBus; import java.io.BufferedReader; +import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; @@ -69,7 +71,7 @@ import java.util.regex.Pattern; public class FileOperationsHelper { private static final String TAG = FileOperationsHelper.class.getSimpleName(); - + private static final String FTAG_CHOOSER_DIALOG = "CHOOSER_DIALOG"; protected FileActivity mFileActivity = null; @@ -77,21 +79,21 @@ public class FileOperationsHelper { /// Identifier of operation in progress which result shouldn't be lost private long mWaitingForOpId = Long.MAX_VALUE; - private static final Pattern mPatternUrl = Pattern.compile("^URL=(.+)$"); - private static final Pattern mPatternString = Pattern.compile("(.+)"); + private static final Pattern mPatternUrl = Pattern.compile("^URL=(.+)$"); + private static final Pattern mPatternString = Pattern.compile("(.+)"); public FileOperationsHelper(FileActivity fileActivity) { mFileActivity = fileActivity; } - @Nullable + @Nullable private String getUrlFromFile(String storagePath, Pattern pattern) { String url = null; InputStreamReader fr = null; BufferedReader br = null; try { - fr = new InputStreamReader(new FileInputStream(storagePath), "UTF8"); + fr = new InputStreamReader(new FileInputStream(storagePath), "UTF8"); br = new BufferedReader(fr); String line; @@ -103,7 +105,7 @@ public class FileOperationsHelper { } } } catch (IOException e) { - Log_OC.d(TAG, e.getMessage()); + Log_OC.d(TAG, e.getMessage()); } finally { if (br != null) { try { @@ -122,20 +124,20 @@ public class FileOperationsHelper { } } return url; - } - + } + @Nullable private Intent createIntentFromFile(String storagePath) { String url = null; int lastIndexOfDot = storagePath.lastIndexOf('.'); if (lastIndexOfDot >= 0) { String fileExt = storagePath.substring(lastIndexOfDot + 1); - if (fileExt.equalsIgnoreCase("url") ||fileExt.equalsIgnoreCase("desktop")) { - // Windows internet shortcut file .url - // Ubuntu internet shortcut file .desktop + if (fileExt.equalsIgnoreCase("url") || fileExt.equalsIgnoreCase("desktop")) { + // Windows internet shortcut file .url + // Ubuntu internet shortcut file .desktop url = getUrlFromFile(storagePath, mPatternUrl); } else if (fileExt.equalsIgnoreCase("webloc")) { - // mac internet shortcut file .webloc + // mac internet shortcut file .webloc url = getUrlFromFile(storagePath, mPatternString); } } @@ -163,7 +165,7 @@ public class FileOperationsHelper { } } - if(openFileWithIntent == null) { + if (openFileWithIntent == null) { openFileWithIntent = createIntentFromFile(storagePath); } @@ -180,7 +182,7 @@ public class FileOperationsHelper { List launchables = mFileActivity.getPackageManager(). queryIntentActivities(openFileWithIntent, PackageManager.GET_INTENT_FILTERS); - if(launchables != null && launchables.size() > 0) { + if (launchables != null && launchables.size() > 0) { try { mFileActivity.startActivity( Intent.createChooser( @@ -248,7 +250,7 @@ public class FileOperationsHelper { } } - public void getFileWithLink(OCFile file){ + public void getFileWithLink(OCFile file) { if (isSharedSupported()) { if (file != null) { mFileActivity.showLoadingDialog(mFileActivity.getApplicationContext(). @@ -285,7 +287,7 @@ public class FileOperationsHelper { if (file != null) { // TODO check capability? mFileActivity.showLoadingDialog(mFileActivity.getApplicationContext(). - getString(R.string.wait_a_moment)); + getString(R.string.wait_a_moment)); Intent service = new Intent(mFileActivity, OperationsService.class); service.setAction(OperationsService.ACTION_CREATE_SHARE_WITH_SHAREE); @@ -333,7 +335,7 @@ public class FileOperationsHelper { queueShareIntent(unshareService); } - public void unshareFileWithUserOrGroup(OCFile file, ShareType shareType, String userOrGroup){ + public void unshareFileWithUserOrGroup(OCFile file, ShareType shareType, String userOrGroup) { // Unshare the file: Create the intent Intent unshareService = new Intent(mFileActivity, OperationsService.class); @@ -347,7 +349,7 @@ public class FileOperationsHelper { } - private void queueShareIntent(Intent shareIntent){ + private void queueShareIntent(Intent shareIntent) { if (isSharedSupported()) { // Unshare the file mWaitingForOpId = mFileActivity.getOperationsServiceBinder(). @@ -371,10 +373,10 @@ public class FileOperationsHelper { * * @param file File to share or unshare. */ - public void showShareFile(OCFile file){ + public void showShareFile(OCFile file) { Intent intent = new Intent(mFileActivity, ShareActivity.class); - intent.putExtra(mFileActivity.EXTRA_FILE, (Parcelable) file); - intent.putExtra(mFileActivity.EXTRA_ACCOUNT, mFileActivity.getAccount()); + intent.putExtra(FileActivity.EXTRA_FILE, file); + intent.putExtra(FileActivity.EXTRA_ACCOUNT, mFileActivity.getAccount()); mFileActivity.startActivity(intent); } @@ -478,8 +480,15 @@ public class FileOperationsHelper { if (hideFileListing) { updateShareIntent.putExtra(OperationsService.EXTRA_SHARE_PERMISSIONS, OCShare.CREATE_PERMISSION_FLAG); } else { - updateShareIntent. - putExtra(OperationsService.EXTRA_SHARE_PERMISSIONS, OCShare.FEDERATED_PERMISSIONS_FOR_FOLDER); + OwnCloudVersion serverVersion = AccountUtils.getServerVersion(mFileActivity.getAccount()); + + if (serverVersion != null && serverVersion.isNotReshareableFederatedSupported()) { + updateShareIntent.putExtra(OperationsService.EXTRA_SHARE_PERMISSIONS, + OCShare.FEDERATED_PERMISSIONS_FOR_FOLDER_AFTER_OC9); + } else { + updateShareIntent.putExtra(OperationsService.EXTRA_SHARE_PERMISSIONS, + OCShare.FEDERATED_PERMISSIONS_FOR_FOLDER_UP_TO_OC9); + } } queueShareIntent(updateShareIntent); @@ -502,8 +511,8 @@ public class FileOperationsHelper { // set MimeType sendIntent.setType(file.getMimetype()); sendIntent.putExtra( - Intent.EXTRA_STREAM, - file.getExposedFileUri(mFileActivity) + Intent.EXTRA_STREAM, + file.getExposedFileUri(mFileActivity) ); sendIntent.putExtra(Intent.ACTION_SEND, true); // Send Action @@ -518,18 +527,50 @@ public class FileOperationsHelper { } public void syncFiles(Collection files) { - for (OCFile file: files) { + for (OCFile file : files) { syncFile(file); } } + public void setPictureAs(OCFile file) { + if (file != null) { + if (file.isDown()) { + Context context = MainApp.getAppContext(); + + try { + File externalFile = new File(file.getStoragePath()); + Intent intent = new Intent(Intent.ACTION_ATTACH_DATA); + Uri sendUri; + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); + sendUri = FileProvider.getUriForFile(context, + context.getResources().getString(R.string.file_provider_authority), externalFile); + } else { + sendUri = Uri.fromFile(externalFile); + } + + intent.setDataAndType(sendUri, file.getMimetype()); + intent.putExtra("mimeType", file.getMimetype()); + mFileActivity.startActivityForResult(Intent.createChooser(intent, + mFileActivity.getString(R.string.set_as)), 200); + + } catch (ActivityNotFoundException exception) { + Toast.makeText(context, R.string.picture_set_as_no_app, Toast.LENGTH_LONG).show(); + } + } + } else { + Log_OC.wtf(TAG, "Trying to send a NULL OCFile"); + } + } + /** * Request the synchronization of a file or folder with the OC server, including its contents. * * @param file The file or folder to synchronize */ public void syncFile(OCFile file) { - if (!file.isFolder()){ + if (!file.isFolder()) { Intent intent = new Intent(mFileActivity, OperationsService.class); intent.setAction(OperationsService.ACTION_SYNC_FILE); intent.putExtra(OperationsService.EXTRA_ACCOUNT, mFileActivity.getAccount()); @@ -537,8 +578,8 @@ public class FileOperationsHelper { intent.putExtra(OperationsService.EXTRA_SYNC_FILE_CONTENTS, true); mWaitingForOpId = mFileActivity.getOperationsServiceBinder().queueNewOperation(intent); mFileActivity.showLoadingDialog(mFileActivity.getApplicationContext(). - getString(R.string.wait_a_moment)); - + getString(R.string.wait_a_moment)); + } else { Intent intent = new Intent(mFileActivity, OperationsService.class); intent.setAction(OperationsService.ACTION_SYNC_FOLDER); @@ -551,37 +592,37 @@ public class FileOperationsHelper { public void toggleFavoriteFiles(Collection files, boolean shouldBeFavorite) { List alreadyRightStateList = new ArrayList<>(); - for(OCFile file : files) { - if(file.getIsFavorite() == shouldBeFavorite) { + for (OCFile file : files) { + if (file.getIsFavorite() == shouldBeFavorite) { alreadyRightStateList.add(file); } } files.removeAll(alreadyRightStateList); - for (OCFile file: files) { + for (OCFile file : files) { toggleFavoriteFile(file, shouldBeFavorite); } } public void toggleFavoriteFile(OCFile file, boolean shouldBeFavorite) { - if(file.getIsFavorite() != shouldBeFavorite) { + if (file.getIsFavorite() != shouldBeFavorite) { EventBus.getDefault().post(new FavoriteEvent(file.getRemotePath(), shouldBeFavorite, file.getRemoteId())); } } - public void toogleOfflineFiles(Collection files, boolean isAvailableOffline){ + public void toogleOfflineFiles(Collection files, boolean isAvailableOffline) { List alreadyRightStateList = new ArrayList<>(); - for(OCFile file : files) { - if(file.isAvailableOffline() == isAvailableOffline) { + for (OCFile file : files) { + if (file.isAvailableOffline() == isAvailableOffline) { alreadyRightStateList.add(file); } } files.removeAll(alreadyRightStateList); - for (OCFile file: files) { + for (OCFile file : files) { toggleOfflineFile(file, isAvailableOffline); } } @@ -606,7 +647,7 @@ public class FileOperationsHelper { } } } - + public void renameFile(OCFile file, String newFilename) { // RenameFile Intent service = new Intent(mFileActivity, OperationsService.class); @@ -615,7 +656,7 @@ public class FileOperationsHelper { service.putExtra(OperationsService.EXTRA_REMOTE_PATH, file.getRemotePath()); service.putExtra(OperationsService.EXTRA_NEWNAME, newFilename); mWaitingForOpId = mFileActivity.getOperationsServiceBinder().queueNewOperation(service); - + mFileActivity.showLoadingDialog(mFileActivity.getString(R.string.wait_a_moment)); } @@ -637,7 +678,7 @@ public class FileOperationsHelper { service.putExtra(OperationsService.EXTRA_REMOVE_ONLY_LOCAL, onlyLocalCopy); mWaitingForOpId = mFileActivity.getOperationsServiceBinder().queueNewOperation(service); } - + mFileActivity.showLoadingDialog(mFileActivity.getString(R.string.wait_a_moment)); } @@ -649,8 +690,8 @@ public class FileOperationsHelper { service.putExtra(OperationsService.EXTRA_ACCOUNT, mFileActivity.getAccount()); service.putExtra(OperationsService.EXTRA_REMOTE_PATH, remotePath); service.putExtra(OperationsService.EXTRA_CREATE_FULL_PATH, createFullPath); - mWaitingForOpId = mFileActivity.getOperationsServiceBinder().queueNewOperation(service); - + mWaitingForOpId = mFileActivity.getOperationsServiceBinder().queueNewOperation(service); + mFileActivity.showLoadingDialog(mFileActivity.getString(R.string.wait_a_moment)); } @@ -748,7 +789,7 @@ public class FileOperationsHelper { mWaitingForOpId = mFileActivity.getOperationsServiceBinder().queueNewOperation(service); mFileActivity.showLoadingDialog( - mFileActivity.getString(R.string.wait_checking_credentials) + mFileActivity.getString(R.string.wait_checking_credentials) ); } } diff --git a/src/main/java/com/owncloud/android/ui/notifications/NotificationUtils.java b/src/main/java/com/owncloud/android/ui/notifications/NotificationUtils.java index 9e96cc187e..e61e516453 100644 --- a/src/main/java/com/owncloud/android/ui/notifications/NotificationUtils.java +++ b/src/main/java/com/owncloud/android/ui/notifications/NotificationUtils.java @@ -74,6 +74,4 @@ public class NotificationUtils { }, delayInMillis); } - - } diff --git a/src/main/java/com/owncloud/android/ui/preview/FileDownloadFragment.java b/src/main/java/com/owncloud/android/ui/preview/FileDownloadFragment.java index 419ff5a7b7..6594e6ae57 100644 --- a/src/main/java/com/owncloud/android/ui/preview/FileDownloadFragment.java +++ b/src/main/java/com/owncloud/android/ui/preview/FileDownloadFragment.java @@ -323,15 +323,9 @@ public class FileDownloadFragment extends FileFragment implements OnClickListene } mLastPercent = percent; } - } - public void setError(boolean error) { mError = error; } - - ; - - } diff --git a/src/main/java/com/owncloud/android/ui/preview/PreviewImageActivity.java b/src/main/java/com/owncloud/android/ui/preview/PreviewImageActivity.java index b1bf94f7b6..9badcf7ec3 100644 --- a/src/main/java/com/owncloud/android/ui/preview/PreviewImageActivity.java +++ b/src/main/java/com/owncloud/android/ui/preview/PreviewImageActivity.java @@ -358,6 +358,7 @@ public class PreviewImageActivity extends FileActivity implements */ @Override public void onPageScrollStateChanged(int state) { + // not used at the moment } /** @@ -367,15 +368,14 @@ public class PreviewImageActivity extends FileActivity implements * @param position Position index of the first page currently being displayed. * Page position+1 will be visible if positionOffset is * nonzero. - * * @param positionOffset Value from [0, 1) indicating the offset from the page * at position. * @param positionOffsetPixels Value in pixels indicating the offset from position. */ @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { + // not used at the moment } - /** * Class waiting for broadcast events from the {@link FileDownloader} service. diff --git a/src/main/java/com/owncloud/android/ui/preview/PreviewImageFragment.java b/src/main/java/com/owncloud/android/ui/preview/PreviewImageFragment.java index d1f983831c..7f29676335 100644 --- a/src/main/java/com/owncloud/android/ui/preview/PreviewImageFragment.java +++ b/src/main/java/com/owncloud/android/ui/preview/PreviewImageFragment.java @@ -365,6 +365,10 @@ public class PreviewImageFragment extends FileFragment { mContainerActivity.getFileOperationsHelper().syncFile(getFile()); return true; + case R.id.action_set_as_wallpaper: + mContainerActivity.getFileOperationsHelper().setPictureAs(getFile()); + return true; + default: return super.onOptionsItemSelected(item); } diff --git a/src/main/java/com/owncloud/android/ui/preview/PreviewMediaFragment.java b/src/main/java/com/owncloud/android/ui/preview/PreviewMediaFragment.java index 2a6f9d5f03..70bc38a016 100644 --- a/src/main/java/com/owncloud/android/ui/preview/PreviewMediaFragment.java +++ b/src/main/java/com/owncloud/android/ui/preview/PreviewMediaFragment.java @@ -611,6 +611,7 @@ public class PreviewMediaFragment extends FileFragment implements @Override public void onConfigurationChanged(Configuration newConfig) { + super.onConfigurationChanged(newConfig); Log_OC.v(TAG, "onConfigurationChanged " + this); } diff --git a/src/main/java/com/owncloud/android/ui/preview/PreviewTextFragment.java b/src/main/java/com/owncloud/android/ui/preview/PreviewTextFragment.java index cc92cf453c..0817142059 100644 --- a/src/main/java/com/owncloud/android/ui/preview/PreviewTextFragment.java +++ b/src/main/java/com/owncloud/android/ui/preview/PreviewTextFragment.java @@ -202,6 +202,7 @@ public class PreviewTextFragment extends FileFragment { @Override protected void onPreExecute() { + // not used at the moment } @Override diff --git a/src/main/java/com/owncloud/android/utils/DialogMenuItem.java b/src/main/java/com/owncloud/android/utils/DialogMenuItem.java index cde348b5b0..1b1a0a27d1 100644 --- a/src/main/java/com/owncloud/android/utils/DialogMenuItem.java +++ b/src/main/java/com/owncloud/android/utils/DialogMenuItem.java @@ -191,7 +191,7 @@ public class DialogMenuItem implements MenuItem { @Override public void setShowAsAction(int actionEnum) { - + // not used at the moment } @Override diff --git a/src/main/java/com/owncloud/android/utils/ErrorMessageAdapter.java b/src/main/java/com/owncloud/android/utils/ErrorMessageAdapter.java index 59b3b6de28..faa0b7a133 100644 --- a/src/main/java/com/owncloud/android/utils/ErrorMessageAdapter.java +++ b/src/main/java/com/owncloud/android/utils/ErrorMessageAdapter.java @@ -17,7 +17,6 @@ * along with this program. If not, see . */ - package com.owncloud.android.utils; import android.content.res.Resources; @@ -57,8 +56,8 @@ public class ErrorMessageAdapter { String message = null; - if (!result.isSuccess() && isNetworkError(result.getCode())) { - message = getErrorMessage(result, res); + if (!result.isSuccess() && isCommonError(result.getCode())) { + message = getCommonErrorMessage(result, res); } else if (operation instanceof UploadFileOperation) { @@ -119,6 +118,7 @@ public class ErrorMessageAdapter { // Error --> No permissions message = String.format(res.getString(R.string.forbidden_permissions), res.getString(R.string.forbidden_permissions_delete)); + } else { message = res.getString(R.string.remove_fail_msg); } @@ -158,9 +158,11 @@ public class ErrorMessageAdapter { } else if (result.getCode() == ResultCode.INVALID_CHARACTER_DETECT_IN_SERVER) { message = res.getString(R.string.filename_forbidden_charaters_from_server); + } else { message = res.getString(R.string.create_dir_fail_msg); } + } else if (operation instanceof CreateShareViaLinkOperation || operation instanceof CreateShareWithShareeOperation) { @@ -238,6 +240,7 @@ public class ErrorMessageAdapter { // Show a Message, operation finished without success message = res.getString(R.string.move_file_error); } + } else if (operation instanceof SynchronizeFolderOperation) { if (!result.isSuccess()) { @@ -253,9 +256,11 @@ public class ErrorMessageAdapter { folderPathName); } } + } else if (operation instanceof CopyFileOperation) { if (result.getCode() == ResultCode.FILE_NOT_FOUND) { message = res.getString(R.string.copy_file_not_found); + } else if (result.getCode() == ResultCode.INVALID_COPY_INTO_DESCENDANT) { message = res.getString(R.string.copy_file_invalid_into_descendent); @@ -275,7 +280,7 @@ public class ErrorMessageAdapter { return message; } - private static String getErrorMessage(RemoteOperationResult result, Resources res) { + private static String getCommonErrorMessage(RemoteOperationResult result, Resources res) { String message = null; @@ -295,15 +300,18 @@ public class ErrorMessageAdapter { } else if (result.getCode() == ResultCode.HOST_NOT_AVAILABLE) { message = res.getString(R.string.network_host_not_available); + } else if (result.getCode() == ResultCode.MAINTENANCE_MODE) { + message = res.getString(R.string.maintenance_mode); } } return message; } - private static boolean isNetworkError(RemoteOperationResult.ResultCode code) { + private static boolean isCommonError(RemoteOperationResult.ResultCode code) { return code == ResultCode.WRONG_CONNECTION || code == ResultCode.TIMEOUT || - code == ResultCode.HOST_NOT_AVAILABLE; + code == ResultCode.HOST_NOT_AVAILABLE || + code == ResultCode.MAINTENANCE_MODE; } } diff --git a/src/main/java/com/owncloud/android/utils/FileStorageUtils.java b/src/main/java/com/owncloud/android/utils/FileStorageUtils.java index 173cc704c6..b17b89773b 100644 --- a/src/main/java/com/owncloud/android/utils/FileStorageUtils.java +++ b/src/main/java/com/owncloud/android/utils/FileStorageUtils.java @@ -115,10 +115,6 @@ public class FileStorageUtils { return savePath.getUsableSpace(); } - public static String getLogPath() { - return MainApp.getStoragePath() + File.separator + MainApp.getDataFolder() + File.separator + "log"; - } - /** * Returns the a string like 2016/08/ for the passed date. If date is 0 an empty * string is returned diff --git a/src/main/java/com/owncloud/android/utils/MimeTypeUtil.java b/src/main/java/com/owncloud/android/utils/MimeTypeUtil.java index d52cf1debf..594f4da75d 100644 --- a/src/main/java/com/owncloud/android/utils/MimeTypeUtil.java +++ b/src/main/java/com/owncloud/android/utils/MimeTypeUtil.java @@ -175,6 +175,10 @@ public class MimeTypeUtil { return isImage(extractMimeType(file)); } + public static boolean isSVG(OCFile file) { + return "image/svg+xml".equalsIgnoreCase(file.getMimetype()); + } + /** * @param file the file to be analyzed * @return 'True' if the file contains audio diff --git a/src/main/java/third_parties/michaelOrtiz/TouchImageViewCustom.java b/src/main/java/third_parties/michaelOrtiz/TouchImageViewCustom.java index 1ded0744d9..86fb7922f1 100644 --- a/src/main/java/third_parties/michaelOrtiz/TouchImageViewCustom.java +++ b/src/main/java/third_parties/michaelOrtiz/TouchImageViewCustom.java @@ -64,7 +64,7 @@ public class TouchImageViewCustom extends ImageViewCustom { // private Matrix matrix, prevMatrix; - private static enum State { NONE, DRAG, ZOOM, FLING, ANIMATE_ZOOM }; + private static enum State { NONE, DRAG, ZOOM, FLING, ANIMATE_ZOOM } private State state; private float minScale; diff --git a/src/main/res/layout/contacts_backup_fragment.xml b/src/main/res/layout/contacts_backup_fragment.xml index 6f2518cb16..84f05a78b6 100644 --- a/src/main/res/layout/contacts_backup_fragment.xml +++ b/src/main/res/layout/contacts_backup_fragment.xml @@ -68,7 +68,7 @@ android:layout_height="wrap_content" android:layout_margin="@dimen/standard_margin" android:layout_weight="1" - android:gravity="right" + android:gravity="end" android:text="@string/contacts_preference_backup_never" android:textAppearance="?android:attr/textAppearanceMedium"/> @@ -78,7 +78,6 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="@dimen/standard_margin" - android:onClick="backupContacts" android:text="@string/contacts_backup_button" android:theme="@style/Button.Primary"/> @@ -98,7 +97,6 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="@dimen/standard_margin" - android:onClick="openDate" android:text="@string/contacts_preference_choose_date" android:theme="@style/Button.Primary"/> diff --git a/src/main/res/menu/file_actions_menu.xml b/src/main/res/menu/file_actions_menu.xml index 0b0b5dff53..ad342f8329 100644 --- a/src/main/res/menu/file_actions_menu.xml +++ b/src/main/res/menu/file_actions_menu.xml @@ -118,6 +118,12 @@ app:showAsAction="never" android:showAsAction="never" android:orderInCategory="1" /> + - %1$s aplicación d\'Android + Aplicación %1$s p\'Android versión %1$s - Anovar cuenta + Refrescar cuenta Xubir Conteníu dende otres aplicaciones Ficheros Abrir con - Nueva carpeta + Carpeta nueva Axustes Detalles Unviar Ordenar - Ordenar por + Ordenar per + Ordenar per + A - Z + Z - A + Lo más nuevo + Lo más vieyo + Lo más grande + Lo más pequeño + Tolos ficheros + Ficheros + Aniciu + Favoritos + Semeyes + Nel preséu + Amestao apocayá + Modificao apocayá + Compartío + Vídeos Axustes Xubes - Zarrar + Actividaes + Avisos + %1$s de %2$s usao + Zarrar Abrir Xeneral Más Cuentes - Alministrar cuentes - Contraseña - Xubida de semeya instantánea + Xestionar cuentes + Nun se configuraron buelgues. + Amosar ficheros anubríos + Xuba nel intre de semeyes Xuba nel intre de semeyes feches cola cámara - Xubida de videu nel intre - Xubida nel intre de vídeos grabaos pela cámara + Xuba nel intre de vídeos + Xuba nel intre de vídeos fechos cola cámara Habilitar rexistru Esto úsase pa rexistrar problemes Historial del rexistru - Esto amuesa los rexistros atroxaos + Esto amuesa los rexistros grabaos Desaniciar historial + Sincronizar calendariu & contautos + Configura DAVdroid (v1.3.0+) pa la cuenta actual Ayuda - Recomendar a un collaciu Mensaxes de retroalimentación - Imprint - Recuerdala llocalización compartida - Recuerda la cabera llocalización compartida - - ¡Prueba %1$s nel to teléfonu intelixente! - Prestaríame invitate a usar %1$s nel to smartphone Descárgalo equi: %2$s + ¡Prueba %1$s nel to teléfonu intelixente! + Quiero convidate a usar %1$s nel to teléfonu intelixente.\nBáxalu d\'equí: %2$s Comprobar servidor Direición del sirvidor https://... Nome d\'usuariu Contraseña + ¿Entá nun tienes un sirvidor?\nPrimi equí pa consiguir ún d\'un fornidor Ficheros Coneutar Xubir @@ -56,14 +75,25 @@ Colar Ensin ficheru pa xubir %1$s nun puede xubir un cachu de testu como un ficheru. - Ficheru nun puede xubise %1$s nun ta permitíu lleer un ficheru recibíu - Ficheru pa xubir nun s\'atopó nel so allugamientu . Por favor, compruebe si esiste\'l ficheru. - Hebo un fallu mientres s\'intentaba copiar un ficheru a una carpeta temporal. Por favor, intente unviala de nuevu. + Nun pudo copiase\'l ficheru a una carpeta temporal. Prueba a reunvialu. + Caltener ficheru na carpeta fonte hai segundos - Cargando... - ¡Nun s\'alcontró aplicación pa la triba de ficheru! + Equí nun hai ficheros + Cargando… Nun hai ficheros nesta carpeta. + Ensin resultaos nesta carpeta + Ensin resultaos + Entá nun se compartió nada + Equí amosaránse los ficheros y carpetes que compartas + Ensín vídeos + Ensin semeyes + ¿Quiciabes tea nuna carpeta diferente? + La to gueta nun devolvió ficheros + modificaos nos caberos 7 díes. + La to gueta nun devolvió ficheros amestaos apocayá + La to gueta nun devolvió vídeos. + Nun hai xubes disponibles Carpeta Carpetes Ficheru @@ -75,34 +105,32 @@ Modificáu: Descargar Sincroniza - El ficheru renomóse a %1$s demientres la xuba - Llista de diseños + Renomóse\'l ficheru %1$s na xuba Compartir Non Aceutar Desaniciar xuba - Reintentar xuba + Retentar xuba Encaboxar sincronización Encaboxar Atrás Guardar y colar Fallu - Cargando ... + Cargando… desconocí­u Fallu desconocíu Tocante Camudar contraseña Desaniciar cuenta Crear cuenta - Xubir dende ... + Xubir dende… Nome de la carpeta - Xubiendo ... + Xubiendo… %1$d%% Xubiendo %2$s - Xuba correuta %1$s xubíu Xuba fallida - Nun pudo completase la xuba de %1$s + Nun pudo xubise %1$s Falló la xubida, necesites aniciar sesión de nueves Xubes Actual @@ -119,36 +147,36 @@ Ficheru llocal nun s\'atopó Fallu de permisu Conflictu - Aplicación terminóse + Aplicación finada Fallu desconocíu - Esperando conectividá wifi + Esperando pola coneutividá Wi-Fi Esperando pa xubir - Baxando ... + Baxando… %1$d%% Descargando %2$s - Descarga correuta %1$s descargáu Descarga fallida - La descarga de %1$s nun pudo completase + Nun pudo baxase %1$s Entá non baxáu Descarga fallida, necesites aniciar sesión de nueves Esbillar cuenta Sincronización fallida - La sincronización de %1$s nun pudo completase - Contraseña inválida pa %1$s + Nun pudo completase la sincronización de %1$s + Contraseña incorreuta pa %1$s Conflictos alcontraos Los ficheros %1$d kept-in-sync pueden nun tar sincronizaos Fallu al caltener ficheros sincronizaos. Los conteníos de los ficheros %1$d pueden nun tar sincronizaos (%2$d conflictos) Dexáronse dalgunos ficheros llocales. Los ficheros %1$d fuera de la carpeta %2$s nun puen copiase dientro - Lo mesmo que na versión 1.3.16, los archivos xubíos dende esti preséu copiáronse dientro la carpeta llocal %1$s pa prevenir la perda de datos cuando un ficheru se sincroniza con múltiples cuentes Por mor d\'esti cambéu, tolos ficheros xubíos en versiones previes d\'esta aplicación tán copiaos na carpeta %2$s . Por embargu, un error torgó\'l pieslle de la operación demientres la sincronización de la cuenta. Pues dexar el/los ficheru/os como tán, desaniciar l\'enllaz a %3$s , o mover el/los ficheru/os a la carpeta %1$s y guardar l\'enllaz a %4$s . El llistáu d\'abaxo contién los ficheros llocales y remotos enllazaos en %5$s La carpeta %1$s yá nun esiste Mover too Moviéronse tolos ficheros Nun pudieron movese dalgunos ficheros Llocal: %1$s Remotu: %1$s - Introduz la contraseña + Introduz el to códigu de pasu, por favor + + Introduz el to códigu de pasu La contraseña va ser solicitada cada vegada que s\'anicie l\'aplicación Por favor, vuelvi inxertar la contraseña Desanicia la to contraseña @@ -163,77 +191,76 @@ %1$s reproducción finada Nun s\'atopó nengún ficheru multimedia Nun s\'especificó nenguna cuenta. - El ficheru nun ta nuna cuenta válida + El ficheru nun ye una cuenta válida Códec multimedia non soportáu - El códec multimedia nun ye llexible. - Ficheru multimedia codificáu incorreutamente - Acabóse\'l tiempu intentando reproducir - El ficheru multimedia nun pue tresferise - Ficheru multimedia nun pue reproducise - Fallu de seguridá intentando reproducir %1$s - Fallu d\'entrada intentando reproducir %1$s - Error inesperáu intentando reproducir %1$s + Nun pudo lleese\'l ficheru de medios + El ficheru de medios tien una codificación incorreuta + Escoso\'l tiempu pa reproducir el ficheru + El ficheru de medios nun pue tresmitise + Alcontróse un fallu de seguranza tentando de reproducir %1$s + Fallu d\'entrada entrín se tentaba de reproducir %1$s + Fallu inesperáu entrín se tentaba de reproducir %1$s Botón de rebobináu Botón de reproducción o posa Botón d\'avance rápidu - Garrando autorización... - Intentando aniciar sesión... + Consiguiendo autorización… + Tentado d\'aniciar sesión… Ensin conexón de rede Conexón segura non disponible Conexón afitada Probando conexón Configuración del sirvidor mal fecha - Yá esiste una cuenta col mesmu usuariu y sirvidor nel preséu + Yá esiste nel preséu una cuenta pal mesmu usuariu y sirvidor L\'usuariu inxertáu nun concasa col usuariu d\'esta cuenta ¡Asocedió un fallu desconocíu! - Nun pue atopase\'l sirvidor - Nun s\'atopa la instancia del sirvidor. + Nun pudo alcontrase l\'agospiu + Nun s\'alcontró\'l sirvidor El sirvidor tardó muncho en responder - Formatu de direición de sirvidor incorrectu Falló la inicialización SSL - Nun se pue certificar la identidá del sirvidor SSL + Nun pudo verificase la identidá del sirvidor SSL Versión del sirvidor non reconocida - Nun se pue afitar conexón + Nun pudo afitase la conexón Afitada conexón segura Nome d\'usuariu o contraseña erroneos Autorización ensin ésitu Accesu refugáu pol sirvidor d\'autenticación - Estáu non esperáu; por favor, inxerta la direición del sirvidor otra vegada La to autorización finó. Por favor, autorízala otra vegada Por favor, introduzca la contraseña actual La so sesión finó. Por favor conéutate otra vegada - Coneutando al sirvidor d\'autentificación… + Coneutando col sirvidor d\'autenticación... El sirvidor nun sofita esti métodu/triba d\'autentificación %1$s nun permite cuentes múltiples + El to sirvidor nun ta devolviendo una ID correuta d\'usuariu, por favor contauta con un alministrador Nun pues autentificate nesti sirvidor - La cuenta nun esiste nel preséu aínda - + La cuenta entá nun esiste nel preséu + + Afitar como disponible ensin conexón Desaniciar como disponible ensin conexón + Afitar como favoritu Renomar Desaniciáu - ¿De xuru quies desaniciar %1$s y los sos conteníos? + ¿De xuru que quies desaniciar %1$s? Namái llocal - Desaniciu correutu Fallu nel desaniciu Introduz un nome nuevu - Nun se puede renomar la copia llocal; intenta un nome diferente - Nun se pudo completar el renomáu - El ficheru remotu nun pudo comprobase + Nun pudo dase\'l nome nuevu al sirvidor + Nun pudo comprobase\'l ficheru remotu El conteníu del ficheru yá ta sincronizáu - Nun se puede crear la carpeta + Nun pudo crease la carpeta Caráuteres prohibíos: / \\ < > : \" | ? * El nome del ficheru contién polo menos un carácter non válidu El nome de ficheru nun pue tar baleru - Espera un momentu + Espera un momentu... Comprobación de credenciales almacenaes - Nun s\'esbilló dengún ficheru - Unviar enllaz a ... + Problema inesperáu, por favor esbilla\'l ficheru dende una aplicación diferente + Nun s\'esbillaron ficheros + Unviar enllaz a… Copiando ficheru dende l\'almacenamientu priváu Aniciar sesión con oAuth2 - Coneutando al sirvidor oAuth2… + Coneutando col sirvidor d\'OAuth2 La identidá del sitiu nun pue certificase - El certificáu del sirvidor nun ye de confianza @@ -270,19 +297,27 @@ 2012/05/18 12:23 PM 12:23:45 - Xubir semeyes namái per WiFi - Xubir vídeos namái per WIFI + Xubir namái na Wi-Fi + Xubir namái semeyes na Wi-Fi + Xubir namái vídeos na Wi-Fi + Namái xubir al cargar + Namái xubir al cargar /XubidaNelIntre Conflictu nel ficheru - ¿Qué ficheros quies caltener? Si seleiciones dambes versiones, el ficheru llocal va tener un númberu amestáu al so nome + ¿Qué ficheros quies caltener? Si esbilles dambes versiones, el ficheru llocal tendrá un númberu axuntáu al so nome. Caltener dambos Versión llocal Versión de sirvidor - + + Perdón. Previsualización d\'imaxe - Nun pue amosase esta imaxe + Nun pue amosase la imaxe Nun se pudo copiar %1$s al ficheru llocal %2$s + Carpeta de xuba nel intre + Carpeta llocal + Carpeta remota + Usar socarpetes Nun pue compartise. Por favor, comprueba si\'l ficheru esiste Hebo un fallu mientres s\'intentaba compartir esti ficheru o carpeta Incapaz de dexar de compartir. Por favor, comprueba si\'l ficheru esiste @@ -295,56 +330,81 @@ Copiar enllaz Copiáu al cartafueyu - Nun se recibió dengún testu pa copiar al cartafueyu Error inesperáu intentando copiar al cartafueyu Testu copiáu dende %1$s - Fallu críticu: nun puen facese les operaciones + Fallu críticu: Nun puen facese les operaciones + + Asocedió un fallu na conexón col sirvidor. + Asocedió un fallu entrín s\'esperaba pol sirvidor. Nun pudo completase la operación. + Asocedió un fallu entrín s\'esperaba pol sirvidor. Nun pudo completase la operación. + Nun pudo completase la operación. Sirvidor non disponible - Asocedió un fallu cuando se coneutaba col sirvidor. Nun tienes permisu %s pa renomar esti ficheru pa desaniciar esti ficheru pa compartir esti ficheru - pa nun compartir esti ficheru - p\'actualizar esta cuota + pa dexar de compartir esti ficheru + p\'anovar esta compartición pa crear esti ficheru - pa xubir ficheros a esta carpeta + pa xubir esta carpeta Esti ficheru yá nun ta nel sirvidor + Finar + Tresnando la migración… + Comprobando destín… + Guardando configuración de les cuentes… + Esperando que finen toles sincronizaciones… + Moviendo datos… + Anovando índiz… + Llimpiando… + Restaurando configuración de les cuentes… + Finó + FALLU: Espaciu insuficiente + FALLU: El ficheru de destín nun ye escribible + FALLU: Nun pue lleese\'l códigu fonte + FALLU: Yá esiste\'l to direutoriu de Nextcloud + FALLU: Fallu na migración + FALLU: Falló l\'anovamientu del índiz + + Trocar + Usar + + ¡El direutoriu fonte nun ye lleible! + ¿Entá quies camudar el camín d\'almacenamientu a %1$s?\n\nNota: tendrán de baxase de nueves tolos datos. + Cuentes Amestar cuenta - La conexón segura rediríxese pente una ruta insegura. + Xestionar cuentes + Conexón segura redirixida pente una ruta insegura. Rexistros Unviar historial - Nun s\'atopó nenguna aplicación pa unviar rexistros. Por favor instala una aplicación de corréu electrónicu Aplicación de rexistros d\'Android %1$s - Cargando datos ... + Cargando datos… Necesítase autenticación Contraseña incorreuta Mover - Ensín nada dientro. ¡Pues amestar una carpeta! + Copiar + Equí nun hai nada. Pes amestar una carpeta Esbillar - Nun pue movese. Por favor, comprueba si\'l ficheru esiste - Nun ye posible mover una carpeta dientro de so subcarpeta - El ficheru yá esiste na carpeta destín + Nun pue movese\'l ficheru. Comprueba si esiste, por favor Asocedió un fallu entrín s\'intentaba mover esta carpeta pa mover esti ficheru Nun pue copiáse. Por favor, comprueba si\'l ficheru esiste - Nun ye posible copiar una carpeta diento de so subcarpeta - El ficheru yá esiste na carpeta destín + El ficheru yá ta presente na carpeta destín Asocedió un fallú entrín s\'intentaba copiar esta carpeta o ficheru pa copiar esti ficheru Xubes nel intre Detalles - La sincronización de la carpeta %1$s nun pudo completase + Carpeta Vídeo pa xubes nel intre + La sincronización de la carpeta %1$s nun pudo completase compartíu contigo @@ -366,12 +426,17 @@ %1$d ficheros %1$d ficheros, 1 carpeta %1$d ficheros, %2$d carpetes - Ficheru orixinal será… - Ficheru orixinal será… + El ficheru orixinal sedrá… + El ficheru orixinal sedrá… Copiar ficheru Mover ficheru + Esbillar too + guardáu en carpeta orixinal movíu a la carpeta d\'aplicaciones + Camín d\'almacenamientu + Común + Compartiendo Compartir %1$s Compartir con usuarios y grupos @@ -379,11 +444,10 @@ Amestar usuariu o grupu Compartir enllaz Afitar la data de caducidá - Protexer con contraseña Aseguráu Permitir edición Consiguir enllaz - Compartir con ... + Compartir con… Compartir con %1$s Guetar @@ -391,6 +455,7 @@ Guetar usuarios y grupos %1$s (gropu) %1$s (remotu) + %1$s (corréu) %1$s ( en %2$s ) pue compartir @@ -401,19 +466,72 @@ Dexar de compartir fechu - Reintentar falló Llimpiar falló - Llimpieza con ésitu - Esborrar tolos finalizaos - + Llimpióse Vista de rexella Vista de llista Alministrar espaciu - Axustes, bases de datos y sirvidor de certificaos de los datos %1$s esborraránse dafechu. \n\nLos archivos descargados caltendrase intactos.\n\nEsti procesu puede tardar dalgún tiempu. Llimpiar datos Dalgunos ficheros nun pudieron esborrase. - Ríquense permisos adicionales para xubir & los ficheros descargaos. - El ficheru nun s\'atopó nel sistema de ficheros llocal + Nun s\'alcontró\'l ficheru nel sistema llocal de ficheros + ¿De xuru que quies desaniciar los elementos esbillaos? + ¿De xuru que quies desaniciar los elementos esbillaos y los sos conteníos? + Guetar + Deprendi más + Llanzamientu candidatu + Mover a… + Copiar a… + Escoyer carpeta… + Cargando carpetes… + Nun s\'alcontraron carpetes de medios. + Preferencies pa la xuba automática + Axustes + Cargando actividaes… + Nun s\'alcontraron actividaes. + + Cargando avisos… + Ensin avisos + Nome de ficheru + Triba de ficheru + Tarxeta SD %1$d + Desconozse + + + Qué hai nuevo en Nextcloud + + + Un llar seguru pa tolos tos datos + Accedu, comparti y protexi los tos ficheros en casa y nel trabayu + + Xuba nel intre + Saltar + + Escania\'l to deu, por favor + Nun se reconoz el deu + + + Nome completu + Corréu + Númberu telefónicu + Direición + Sitiu web + Twitter + + Información d\'usuariu + + + Entá nun hai actividá + Asocedió un fallu + Tocante a + + Respaldar contautos + Restaurar contautos + Respaldar agora + Respaldar + enxamás + + Recibióse un avisu nuevu + Zarrar sesión diff --git a/src/main/res/values-cs-rCZ/strings.xml b/src/main/res/values-cs-rCZ/strings.xml index 15ef73bf77..eb2c48e98a 100644 --- a/src/main/res/values-cs-rCZ/strings.xml +++ b/src/main/res/values-cs-rCZ/strings.xml @@ -262,7 +262,8 @@ Váš server nevrací správné přihlašovací ID, kontaktujte prosím svého správce systému Na tomto serveru nelze ověřit V zařízení není zatím nastaven účet - + + Nastavit jako dostupné offline Zrušit nastavení dostupnosti offline Nastavit jako oblíbené @@ -539,9 +540,6 @@ Předběžná verze Předběžná verze nebo také Release Candidate (RC) je stabilní stav připravované, finální verze. Přihlas se jako tester v Play store nebo si najdi a instaluj hodící se verzi z F-Droid pod \"Verze\". Aktivně něčím přispět - Diskutovat na IRC: <a href="%1$s">#nextcloud-mobile</a> - Pomozte ostatním na <a href="%1$s">fóru</a> - <a href="%1$s">Přeložte</a> aplikaci Přesunout do… Kopírovat do… Vybrat adresář… @@ -632,6 +630,4 @@ Přijato nové upozornění Odhlásit se - - - + diff --git a/src/main/res/values-de-rDE/strings.xml b/src/main/res/values-de-rDE/strings.xml index 068e535ace..4e684e0e0c 100644 --- a/src/main/res/values-de-rDE/strings.xml +++ b/src/main/res/values-de-rDE/strings.xml @@ -4,7 +4,7 @@ Version %1$s Konto aktualisieren Hochladen - Inhalt anderer Apps + Content from other apps Dateien Öffnen mit Neuer Ordner @@ -13,7 +13,7 @@ Senden Sortieren Sortiere nach - Sortieren nach + Sortiere nach A - Z Z - A Neueste zuerst @@ -108,7 +108,7 @@ Keine Ergebnisse Noch keine Favoriten vorhanden Noch nichts geteilt - Von dir geteilte Dateien und Ordner werden hier erscheinen + Von Ihnen geteilte Dateien und Ordner werden hier erscheinen Keine Videos Keine Fotos Vielleicht befindet es sich in einem anderen Ordner? @@ -172,7 +172,7 @@ Hochgeladen Fertiggestellt Abgebrochen - pausiert + Pausiert Verbindungsfehler Hochladen wird in Kürze erneut versucht Zugangsdaten falsch @@ -214,7 +214,7 @@ Es steht nicht genügend Speicherplatz zur Verfügung, um die ausgewählten Dateien in das Verzeichnis %1$s zu kopieren. Sollen diese stattdessen verschoben werden? Bitte geben Sie Ihre PIN ein - Bitte PIN eingeben + PIN eingeben Die PIN wird jedes mal beim Start der App abgefragt Bitte Ihre PIN nochmals eingeben PIN entfernen @@ -241,7 +241,7 @@ Ein unerwarteter Fehler ist aufgetreten beim Versuch %1$s wiederzugeben Rückspulknopf Wiedergabe-/Pause Knopf - Vorspul Knopf + Vorspulknopf Genehmigung erhalten … Der Versuch, sich anzumelden … @@ -249,17 +249,17 @@ Sichere Verbindung nicht verfügbar. Verbindung hergestellt Verbindung testen - Fehlerhafte Server Konfiguration + Fehlerhafte Serverkonfiguration Ein Benutzerkonto für den gleichen Benutzer und Server existiert auf diesem Gerät bereits Der eingegebene Benutzer passt nicht zu dem Benutzer dieses Benutzerkontos Ein unbekannter Fehler ist aufgetreten! Konnte den Host nicht finden Server nicht gefunden Der Server braucht zu lange für eine Antwort. - Falsches Adress-Format für den Server - SSL-Initialisierung fehlgeschlagen. + Falsches Adressformat für den Server + SSL-Initialisierung fehlgeschlagen SSL-Server-Identität konnte nicht überprüft werden - Unbekannte Server-Version + Unbekannte Serverversion Verbindung konnte nicht hergestellt werden Sichere Verbindung hergestellt Falscher Benutzername oder Passwort @@ -275,7 +275,8 @@ Ihr Server gibt keine korrekte Benutzer-ID zurück, bitte kontaktieren Sie einen Administrator Kann sich nicht auf diesem Server authentifizieren Das Benutzerkonto ist bis jetzt noch nicht auf dem Gerät vorhanden - + + Als Offline verfügbar markieren Offline verfügbar Markierung entfernen Als Favorit markieren @@ -542,6 +543,8 @@ Die Datei wurde im lokalen Dateisystem nicht gefunden Wollen Sie die ausgewählten Einträge wirklich löschen? Wollen Sie die ausgewählten Einträge und deren Inhalte wirklich löschen? + Server befindet sich im Wartungsmodus + Warte auf das Aufladen des Gerätes Suche Dies ist eine Nextcloud Funktion, bitte updaten. @@ -557,10 +560,10 @@ Vorabversion Eine Vorabversion, auch Release Candidate (RC) genannt, ist ein stabiler Stand der kommenden, finalen Version. Ein Test in der eigenen Umgebung hilft uns diese Stabilität sicherzustellen. Melden Sie sich als Tester im Play Store an oder suchen und installieren Sie die passende Version bei F-Droid unter „Versionen“. Aktiv etwas beitragen - An Chats teilnehmen auf IRC: <a href="%1$s">#nextcloud-mobile</a> - Hilf anderen im <a href="%1$s">Forum</a> - Die App <a href="%1$s">Übersetzen</a> - Zum Überprüfen, Ändern und Schreiben von Quellcode schaue bitte unter <a href=\"https://github.com/nextcloud/android/blob/master/CONTRIBUTING.md\">CONTRIBUTING.md</a> für weitere Details. + An Chats auf IRC teil: <a href=\"%1$s\">#nexcloud-mobile</a> + Helfe anderen im <a href=\\"%1$s\\">Forum</a> + <a href=\\"%1$s\\">Übersetze</a>die App + Prüfen, ändern und schreiben Sie Code. Siehe auch <a href=\"%1$s\">CONTRIBUTING.md<a> für Einzelheiten Verschieben nach… Kopieren nach… Wähle Verzeichnis… @@ -651,6 +654,7 @@ Neue Benachrichtigung erhalten Abmelden + Datenschutz diff --git a/src/main/res/values-de/strings.xml b/src/main/res/values-de/strings.xml index c74b95c668..ef49c573e2 100644 --- a/src/main/res/values-de/strings.xml +++ b/src/main/res/values-de/strings.xml @@ -275,7 +275,8 @@ Dein Server gibt keine korrekte Benutzer-ID zurück, bitte kontaktiere einen Administrator Kann sich nicht auf diesem Server authentifizieren Das Benutzerkonto ist bis jetzt noch nicht auf dem Gerät vorhanden - + + Als Offline verfügbar markieren Offline verfügbar Markierung entfernen Als Favorit markieren @@ -542,6 +543,9 @@ Die Datei wurde im lokalen Dateisystem nicht gefunden Willst Du die ausgewählten Einträge wirklich löschen? Willst Du die ausgewählten Einträge und deren Inhalte wirklich löschen? + Der Server ist im Wartungsmodus + + Warte auf das Aufladen des Gerätes Suche Dies ist eine Nextcloud Funktion, bitte updaten. @@ -557,10 +561,10 @@ Vorabversion Eine Vorabversion, auch Release Candidate (RC) genannt, ist ein stabiler Stand der kommenden, finalen Version. Ein Test in der eigenen Umgebung hilft uns diese Stabilität sicherzustellen. Melden Sie sich als Tester im Play Store an oder suchen und installieren Sie die passende Version bei F-Droid unter „Versionen“. Aktiv etwas beitragen - An Chats teilnehmen auf IRC: <a href="%1$s">#nextcloud-mobile</a> - Hilf anderen im <a href="%1$s">Forum</a> - Die App <a href="%1$s">Übersetzen</a> - Zum Überprüfen, Ändern und Schreiben von Quellcode schaue bitte unter <a href=\"https://github.com/nextcloud/android/blob/master/CONTRIBUTING.md\">CONTRIBUTING.md</a> für weitere Details. + Trete dem Chat auf IRC bei: <a href=\"%1$s\">#nextcloud-mobile</a> + Hilf Anderen im <a href=\"%1$s\">Forum</a> + <a href=\"%1$s\">Übersetze</a> die App + Prüfe, ändere und schreibe Code. Siehe auch <a href=\"%1$s\">CONTRIBUTING.md<a> für Einzelheiten Verschieben nach… Kopieren nach… Wähle Verzeichnis… @@ -651,6 +655,7 @@ Neue Benachrichtigung erhalten Abmelden + Datenschutz diff --git a/src/main/res/values-el/strings.xml b/src/main/res/values-el/strings.xml index cfa6446dcd..8b13948abe 100644 --- a/src/main/res/values-el/strings.xml +++ b/src/main/res/values-el/strings.xml @@ -274,7 +274,8 @@ Ο διακομιστής σας δεν επιστρέφει το σωστό αναγνωριστικό χρήστη, παρακαλούμε επικοινωνήστε τον διαχειριστή Αδυαμία πιστοποίησης με αυτόν το διακομιστή Ο λογαριασμός δεν υπάρχει ακόμα στη συσκευή - + + Ορισμός ως διαθέσιμο εκτός σύνδεσης Αναίρεση ορισμού ως διαθέσιμο εκτός σύνδεσης Ορισμός ως αγαπημένο @@ -556,10 +557,6 @@ Release candidate Η υποψήφια κυκλοφορία (RC) είναι ένα στιγμιότυπο της επερχόμενης έκδοσης και αναμένεται να είναι σταθερή. Η δοκιμή της μεμονωμένης εγκατάστασής σας θα βοηθήσει στην εξασφάλιση αυτού. Εγγραφείτε για δοκιμές στο Play store ή χειροκίνητα αναζητείστε στο τμήμα \"εκδόσεις\" στο F-Droid. Ενεργή συνεισφορά - Συμμετέχετε στη συνομιλία στο IRC: <a href=\"%1$s\">#nextcloud-mobile</a> - Βοηθήστε χρήστες στο <a href=\"%1$s\">forum</a> - <a href=\"%1$s\">Μεταφράστε</a> την εφαρμογή - Συνεισφέρετε ως προγραμματιστής, για περισσότερες λεπτομέρειες δείτε <a href=\"https://github.com/nextcloud/android/blob/master/CONTRIBUTING.md\">CONTRIBUTING.md</a> Μετακίνηση σε… Αντιγραφή σε… Επιλογή φακέλου… @@ -650,6 +647,4 @@ Νέα ενημέρωση ελήφθη Έξοδος - - - + diff --git a/src/main/res/values-en-rGB/strings.xml b/src/main/res/values-en-rGB/strings.xml index 7dcf0e810f..a26926baad 100644 --- a/src/main/res/values-en-rGB/strings.xml +++ b/src/main/res/values-en-rGB/strings.xml @@ -274,7 +274,8 @@ Your server is not returning a correct user ID, please contact an administrator Cannot authenticate to this server Account does not exist on the device yet - + + Set as available offline Unset as available offline Set as favourite @@ -541,6 +542,8 @@ File not found in local file system Do you really want to remove the selected items? Do you really want to remove the selected items and their contents? + Server in maintenance mode + Awaiting charge Search This is a Nextcloud feature, please update. @@ -556,9 +559,6 @@ Release candidate The release candidate (RC) is a snapshot of the upcoming release and is expected to be stable. Testing your individual setup could help ensure this. Sign up for testing on the Play store or manually look in the \"versions\" section on F-Droid. Actively Contribute - Join the chat on IRC: <a href="%1$s">#nextcloud-mobile</a> - Help others on the <a href="%1$s">forum</a> - <a href="%1$s">Translate</a> the app Move to… Copy to… Choose folder… @@ -649,6 +649,7 @@ New notification received Logout + Privacy diff --git a/src/main/res/values-es-rMX/strings.xml b/src/main/res/values-es-rMX/strings.xml index 569e5a4f2a..5c70c833e3 100644 --- a/src/main/res/values-es-rMX/strings.xml +++ b/src/main/res/values-es-rMX/strings.xml @@ -275,7 +275,8 @@ en los últimos 7 días. Su servidor no está regresando un ID de usuario correcto, favor de contactar al adminitrador No es posible autenticarse en este servidor La cuenta aún no existe en el dispositivo - + + Establer como disponible fuera de línea Establecer como disponible en línea Establecer como favorito @@ -542,6 +543,8 @@ en los últimos 7 días. No se encontró el archivo en sistema de archivos local ¿Realmente desea eliminar los elementos seleccionados? ¿Realmente desea eliminar los elementos seleccionados y su contenido? + El servidor se encuentra en modo mantenimiento + Aguardando la regarga del dispositivo Buscar Esta es una característica de Nextcloud, favor de actualizar. @@ -557,10 +560,6 @@ en los últimos 7 días. Candidato a lanzamiento El candidato a lanzamiento (CL) es una foto del más próximo lanzamiento y se espera que sea estable. Las pruebas a su configuración individual podrían ayudarnos a asegurar esto. Regístrese para hacer pruebas en la Play Store o consulte directamente la sección de \"versiones\" en F-Droid. Contribuya activamente - Únase a las conversaciones en IRC: <a href=\"%1$s\">#nextcloud-mobile</a> - Ayude a los demás en el <a href=\"%1$s\">foro</a> - <a href=\"%1$s\">Traduzca</a> la aplicación - Revise, corrija y escriba código, consulte <a href=\"https://github.com/nextcloud/android/blob/master/CONTRIBUTING.md\">CONTRIBUIR.md</a> para más detalles Mover a… Copiar a… Seleccione la carpeta… @@ -651,6 +650,7 @@ en los últimos 7 días. No se han recibido nuevas notificaciones Salir de la sesión + Privacidad diff --git a/src/main/res/values-es/strings.xml b/src/main/res/values-es/strings.xml index 3f9a0ac222..46f3ac382c 100644 --- a/src/main/res/values-es/strings.xml +++ b/src/main/res/values-es/strings.xml @@ -275,7 +275,8 @@ Su servidor no está retornando una identificación de usuario correcta; contacte a un administrador No puede autenticarse a este servidor La cuenta no existe todavía en el dispositivo - + + Marcar el modo disponible a desconectado Desmarcar el modo disponible de desconectado Marque como favorito @@ -557,10 +558,6 @@ Versión a ser liberada La versión a ser liberada (release candidate - RC) es una instantánea de la próxima versión y se espera que sea estable. Probar su configuración individual podría ayudar a asegurar esto. Regístrate para probarla en Play Store o busca manualmente en la sección \"versiones\" de F-Droid. Colabore activamente - Únase a la conversación en IRC: <a href=\"%1$s\">#nextcloud-mobile</a> - Ayude a otros en el foro <a href=\"%1$s\"></a>. - <a href=\"%1$s\">Traducen</a> la app - Revisa, corrige y escribe código, lee <a href=\"https://github.com/nextcloud/android/blob/master/CONTRIBUTING.md\">CONTRIBUTING.md</a> para más detalles Mover a… Copiar a… Elija carpeta… @@ -651,6 +648,4 @@ Nueva notificación recibida Desconectar - - - + diff --git a/src/main/res/values-fr/strings.xml b/src/main/res/values-fr/strings.xml index b8e1137910..d6316736c7 100644 --- a/src/main/res/values-fr/strings.xml +++ b/src/main/res/values-fr/strings.xml @@ -274,7 +274,8 @@ Votre serveur a retourné un identifiant d\'utilisateur incorrect. Veuillez contacter un administrateur Impossible de s\'authentifier sur ce serveur Le compte n\'existe pas encore sur ce périphérique - + + Rendre disponible hors-ligne Ne plus rendre disponible hors-ligne Mettre en favori @@ -541,6 +542,8 @@ Le fichier n\'a pas été trouvé sur le système de fichier local Voulez-vous vraiment supprimer les éléments sélectionnés ? Voulez-vous vraiment supprimer les éléments sélectionnés et leurs contenus ? + Serveur en mode de maintenance + En attente de recharge de l\'appareil Rechercher Il s\'agit d\'une fonctionnalité de Nextcloud ; veuillez mettre à jour.. @@ -556,10 +559,10 @@ Testez la version Release Candidate La version « release candidate » (RC) est un instantanné de la prochaine version et est supposée stable. Le test de votre configuration pourrait nous aider à nous assurer que cette version est entièrement stable. Inscrivez vous pour être testeur sur le Play store ou allez jeter un œil dans la section \"versions\" de F-Droid. Participez activement - Rejoignez la discussion sur IRC <a href=\"%1$s\">#nextcloud-mobile</a>. - Aidez les autres sur le <a href=\"%1$s\">forum</a>. + Rejoingnez la discussion sur le canal IRC : <a href=\"%1$s\">#nextcloud-mobile</a>. + Aidez les autres utilisateurs sur <a href=\"%1$s\">le forum</a>. <a href=\"%1$s\">Traduisez</a> l\'application. - Vous êtes développeur ? Consultez <a href=\"https://github.com/nextcloud/android/blob/master/CONTRIBUTING.md\">CONTRIBUTING.md</a> pour plus d\'informations + Pour contrôler, réviser ou écrire du code, consultez <a href=\"%1$s\">CONTRIBUTING.md<a>. Déplacer vers… Copier vers… Sélectionner le dossier… @@ -650,6 +653,7 @@ Nouvelle notification reçue Se déconnecter + Vie privée diff --git a/src/main/res/values-is/strings.xml b/src/main/res/values-is/strings.xml index c2d1aaff72..c142c4745d 100644 --- a/src/main/res/values-is/strings.xml +++ b/src/main/res/values-is/strings.xml @@ -46,10 +46,10 @@ Fingrafaralás Engin fingraför hafa verið sett inn. Sýna faldar skrár - Hlaða strax inn myndum - Hlaða strax inn myndum teknum á myndavél - Hlaða strax inn myndskeiðum - Hlaða strax inn myndskeiðum teknum á myndavél + Bein innsending á myndum + Senda beint inn myndir sem teknar eru með myndavél + Bein innsending á myndskeiðum + Senda beint inn myndskeið sem tekin eru með myndavél Virkja skráningu í annál Þetta er notað til að skrá vandamál Ferill annálsskráningar @@ -58,23 +58,24 @@ Samstilla dagatal & tengiliði Setja upp DAVdroid (v1.3.0+) fyrir þennan aðgang Ekki var hægt að leysa vistfang þjóns fyrir aðganginn í DAVdroid - Hvorki Google Play né F-Droid appið eru uppsett - Tókst að setja upp samstillingu dagatals og tengiliða + Hvorki F-droid né Google Play eru uppsett + Samstillingar dagatals 1& tengiliða eru uppsettar Hjálp Mæla með við vin Umsögn Prenta Muna staðsetningu sameignar - Muna staðsetningu á síðustu innhleðslu sameignar + Muna staðsetningu síðast notuðu sameignar Prófaðu %1$s á snjallsímanum þínum! - Þér langar til að bjóða þér að nota %1$s á snjallsímanum þínum!\nSæktu það hér: %2$s + Mig langar til að bjóða þér að nota %1$s á snjallsímanum þínum.\nHægt að sækja það hér: %2$s Athuga með þjón Vistfang þjóns https://… Notandanafn Lykilorð - Ertu ekki enn með skýjaþjón?\nSmelltu hér til að fá þér einn frá þjónustuaðila + Ertu ekki enn með skýjaþjón? +Smelltu hér til að fá þér einn frá þjónustuaðila. Skrár Tengjast Senda inn @@ -86,43 +87,42 @@ Engin skrá til að senda inn %1$s getur ekki sent inn textabút sem skrá. Móttekin gögn innihéldu ekki gilda skrá. - Ekki tókst að senda inn skrá + Ekki er hægt að senda þessa skrá inn %1$s hefur ekki heimild til að lesa móttekna skrá - Skráin sem á að senda inn fannst ekki á staðnum sínum. Athugaðu hvort skráin sé til. - Villa kom upp við að afrita þessa skrá í bráðabirgðamöppu. Prófaðu aftur að senda. + Skrá sem valin var til sendingar fannst ekki. Athugaðu hvort skráin sé til Valkostir innsendingar: Flytja skrá í Nextcloud-möppu Halda skrá í upprunamöppu Eyða skrá úr upprunamöppu sek. síðan Engar skrár hér - Sendu inn eitthvað efni eða samstilltu við tækin þín! - Settu einhverjar skrár í eftirlæti eða samstilltu við tækin þín! + Sendu inn eitthvað efni eða samstilltu við tækin þín. + Gerðu eitthvað efni að uppáhaldi eða samstilltu við tækin þín. Skrár og möppur sem þú merkir sem eftirlæti birtast hér - Engar eftirlætisskrár fundust sem samsvara leitarstrengnum þínum! + Leitin skilaði engum eftirlætisskrám Hleð inn… - Engin forrit fundust fyrir skráategund! + Ekkert forrit er uppsett til að meðhöndla þessa tegund skráa. Það eru engar skrár í þessari möppu. Engar niðurstöður í þessari möppu Engar niðurstöður - Engin eftirlæti ennþá + Ekkert er eftirlæti ennþá Engu deilt ennþá Skrár og möppur sem þú deilir birtast hér Engin myndskeið Engar ljósmyndir - Reyna að leita í annarri möppu? - Engar skrár fundust sem breytt hefur verið síðustu 7 daga - Engar skrár fundust sem breytt hefur verið -        síðustu 7 daga! - Engar nýlega viðbættar skrár fundust - Engar nýlega viðbættar skrár fundust sem samsvara leitarstrengnum þínum! - Sendu inn einhverjar myndir eða virkjaðu sjálfvirka innsendingu! - Engar myndir fundust sem samsvara leitarstrengnum þínum! - Sendu inn einhver myndskeið eða virkjaðu sjálfvirka innsendingu! - Engin myndskeið fundust sem samsvara leitarstrengnum þínum! + Er þetta kannski í einhverri annarri möppu? + Fann engar skrár sem breytt hefur verið síðustu 7 daga + Leitin skilaði engum skrám sem breytt + hefur verið síðustu 7 daga + Fann engar nýlega viðbættar skrár + Leitin skilaði engum nýlega viðbættum skrám + Sendu inn einhverjar myndir eða virkjaðu sjálfvirka innsendingu. + Leitin skilaði engum myndum. + Sendu inn einhver myndskeið eða virkjaðu sjálfvirka innsendingu. + Leitin skilaði engum myndskeiðum. Engar innsendingar tiltækar - Sendu inn eitthvað efni eða virkjaðu beina innsendingu! - Sendu inn eitthvað efni eða virkjaðu sjálfvirka innsendingu! + Sendu inn eitthvað efni eða virkjaðu beina innsendingu. + Sendu inn einhverjar myndir eða virkjaðu sjálfvirka innsendingu. mappa möppur skrá @@ -134,14 +134,13 @@ Breytt: Niðurhal Samstilla - Skrá var endurnefnd sem %1$s við innsendingu - Framsetning lista + Skrá endurnefnd sem %1$s við innsendingu Deila Nei Í lagi Fjarlægja innsendingu - Reyna aftur að senda inn + Prófa innsendingu aftur Hætta við samstillingu Hætta við Til baka @@ -161,10 +160,10 @@ Nafn möppu Sendi inn … %1$d%% Sendi inn %2$s - Innsending tókst + Sent inn %1$s sent inn Innsending mistókst - Ekki var hægt að ljúka innsendingu á %1$s + Gat ekki sent inn %1$s Innsending mistókst, þú verður að skrá þig inn aftur Innsendingar Núverandi @@ -181,37 +180,35 @@ Skrá finnst ekki á tækinu Villa í heimildum Árekstur - Forritinu var lokað + Forrit hætti Óþekkt villa - Bíð eftir þráðlausri tengingu + Bíð eftir Wi-Fi tengingu Bíð eftir að senda inn Sæki … %1$d%% Sæki %2$s - Niðurhal tókst + Þegar sótt %1$s niðurhalað Niðurhal mistókst - Ekki var hægt að ljúka niðurhali á %1$s + Gat ekki sótt %1$s Ekki ennþá búið að sækja Niðurhal mistókst, þú verður að skrá þig inn aftur Veldu aðgang Samstilling mistókst Samstilling mistókst, þú verður að skrá þig inn aftur - Ekki var hægt að ljúka samstillingu á %1$s - Ógilt lykilorð fyrir %1$s + Gat ekki lokið samstillingu á %1$s + Rangt lykilorð fyrir %1$s Árekstrar fundust %1$d skrár merktar fyrir samstillingu var ekki hægt að samstilla Skrár merktar fyrir samstillingu mistókust Efni %1$d skráa var ekki hægt að samstilla (%2$d árekstrar) Sumar staðværar skrár gleymdust %1$d skrár úr %2$s möppunni var ekki hægt að afrita í - Frá og með útgáfu 1.3.16, munu skrár sem sendar eru frá þessu tæki verða afritaðar inn í staðværu %1$s möppuna, í þeim tilgangi að koma í veg fyrir gagnatap þegar stök skrá er samstillt við marga notandaaðganga.\n\nVegna þessarar breytingar hafa allar skrár sem sendar hafa verið inn í eldri útgáfum kerfisins verið afritaðar í %2$s möppuna. Hins vegar, núna kom villa í veg fyrir að þessari aðgerð lyki um leið og aðgangar voru samstilltir. Þú getur annað hvort látið skrárnar vera eins og þær eru og fjarlægt tengilinn í %3$s, eða fært skrárnar inn í %1$s möppuna og halda tenglinum í %4$s.\n\nStaðværar skrár eru taldar upp hér fyrir neðan, ásamt þeim fjartengdu skrám í %5$s sem þær voru tengdar við. - Mappan %1$s er ekki lengur til staðar + Mappan %1$ser ekki lengur til Færa allt Allar skrár voru færðar Ekki tókst að færa allar skrár Staðvært: %1$s Fjartengt: %1$s - Það er ekki nægilegt pláss til að afrita völdu skrárnar í %1$s möppuna. Vilt þú kannski færa þær í staðinn? Settu inn lykilkóðann þinn Settu inn lykilkóða @@ -229,15 +226,13 @@ %1$s afspilun lokið Engin margmiðlunarskrá fannst Enginn notandaaðgangur uppgefinn - Skrá er ekki á gildum aðgangi Óstudd margmiðlunarlyklun (codec) - Ekki tókst að lesa margmiðlunarskrá - Margmiðlunarskrá er ekki rétt kóðuð - Féll á tíma við að reyna að spila + Gat ekki lesið margmiðlunarskrána + Margmiðlunarskráin er með ranga kóðun + Tilraun til að spila skrá rann út á tíma Ekki tókst að streyma margmiðlunarskrá - Ekki tókst að spila skrána í meðfylgjandi margmiðlunarspilara - Öryggisvilla kom upp við að reyna að spila %1$s - Inntaksvilla kom upp við að reyna að spila %1$s + Öryggissvilla kom upp við að reyna að spila %1$s + Óvænt villa kom upp við að reyna að spila %1$s Óvænt villa kom upp við að reyna að spila %1$s Spóla-til-baka hnappur Afspilun-eða-hlé hnappur @@ -250,32 +245,31 @@ Tengingu komið á Prófa tengingu Gölluð uppsetning þjóns - Aðgangur fyrir sama notanda og sama þjón er þegar fyrir hendi á tækinu Notandanafnið sem sett var inn samsvarar ekki notanda þessa aðgangs Óþekkt villa kom upp! - Fann ekki hýsilvél - Tilvik þjóns fannst ekki + Gat ekki fundið hýsilvél + Þjónn finnst ekki Þjónninn var of lengi að svara Rangt snið á vistfangi þjóns Mistókst að frumstilla SSL - Gat ekki sannreynt auðkenni SSL-þjóns + Gate ekki sannreynt auðkenni SSL-þjónsins Óþekkjanleg útgáfa af þjóni Gat ekki komið á tengingu Öruggri tengingu komið á Rangt notandanafn eða lykilorð Auðkenning mistókst Aðgangi hafnað af auðkenningarþjóni - Óvænt staða, settu aftur inn vistfang þjónsins + Óvænt ástand, settu aftur inn vistfang þjónsins Heimild þín er útrunnin. Skráðu þig aftur inn. Settu inn núgildandi lykilorð Setan þín er útrunnin. Skráðu þig aftur inn. Tengist við auðkenningarþjón … Þjónninn styður ekki þessa auðkenningaraðferð %1$s styður ekki fjölaðganga - Þjónninn skilar ekki réttu notandaauðkenni, hafðu samband við kerfisstjóra Get ekki auðkennt á þessum þjóni - Aðgangur er ekki ennþá fyrir hendi á tækinu - + Aðgangur er ekki ennþá til á tækinu + + Stilla sem tiltækt án nettengingar Afstilla sem tiltækt án nettengingar Setja í eftirlæti @@ -283,28 +277,27 @@ Endurnefna Fjarlægja Ertu viss um að þú viljir fjarlægja %1$s? - Ertu viss um að þú viljir fjarlægja %1$s og innihald þess? + Ertu viss um að þú viljir fjarlægja %1$s og innihald þessa? Einungis staðvært - Fjarlæging tókst + Fjarlægt Fjarlæging mistókst Settu inn nýtt nafn - Ekki var hægt að endurnefna staðvært afrit; prófaðu annað nafn - Ekki var hægt að ljúka endurnefningu - Ekki var hægt að athuga fjartengda skrá + Gat ekki gefið þjóni nýtt nafn + Gat ekki athugað fjartengda skrá Efni skrár er þegar samstillt - Tókst ekki að búa til möppu + Gat ekki búið til möppu Óleyfilegir stafir: / \\ < > : \" | ? * Skráarheitið inniheldur að minnsta kosti einn ógildan staf Skráarheiti má ekki vera tómt - Bíddu aðeins + Bíddu augnablik… Athuga geymd auðkenni Óvænt vandamál, veldu skrána úr öðru forriti - Engin skrá var valin + Engin skrá valin Senda tengil til … Afrita skrá úr einkageymslu Skrá inn með oAuth2 - Tengist við oAuth2-þjón… + Tengist við OAuth-auðkenningarþjón … Ekki var hægt að sannreyna auðkenni vefsvæðisins - Skilríki þjónsins er ekki treyst @@ -312,7 +305,7 @@ - Skilríki þjónsins er með gildistíma í framtíðinni - Slóðin samsvarar ekki vélarheitinu í skilríkinu Viltu samt treysta þessu skilríki? - Ekki var hægt að vista þetta skilríki + Gat ekki vistað skilríki Nánar Fela Gefið út fyrir: @@ -336,26 +329,26 @@ Þetta er frátökutákn frátökutákn.txt - PNG mynd + PNG-mynd 389 KB 2012/05/18 12:23 EH 12:23:45 - Einungis senda inn um þráðlaus net - Senda inn myndir einungis um þráðlaus net - Senda inn myndskeið einungis um þráðlaus net + Aðeins senda inn á þráðlausu WiFi-neti + Aðeins senda inn myndir á þráðlausu WiFi-neti + Aðeins senda inn myndskeið á þráðlausu WiFi-neti Einungis senda inn þegar verið er að hlaða Einungis senda inn þegar verið er að hlaða /BeinInnsending Árekstur skráa - Ef þú velur báðar útgáfur, þá mun verða bætt tölustaf aftan við heiti skrárinnar á tölvunni. + Hvaða skrám viltu halda? Ef þú velur báðar útgáfur, þá mun verða bætt tölustaf aftan við heiti afrituðu skrárinnar. Halda báðum útgáfu á tölvu útgáfu á þjóni - Leiðinlegt þetta! + Því miður. Forskoðun myndar - Ekki er hægt að birta myndina + Get ekki birt mynd %1$s var ekki hægt að afrita í staðværu %2$s möppuna Mappa fyrir beinar innsendingar @@ -364,7 +357,7 @@ Nota undirmöppur Geyma í undirmöppum byggðum á ári og mánuðum - Því miður, deiling gagna er ekki virk á þjóninum. Hafðu samband við kerfisstjóra. + Deiling er ekki virk á þjóninum þínum. Hafðu samband við kerfisstjóra. Get ekki deilt. Athugaðu hvort skráin sé til Villa kom upp við að reyna að deila þessari skrá eða möppu Get ekki hætt deilingu. Athugaðu hvort skráin sé til @@ -382,52 +375,37 @@ Óvænt villa kom upp við afritun á klippispjald Texti afritaður úr %1$s - Alvarleg villa: get ekki framkvæmt aðgerðir + Alvarleg villa: Ekki hægt að framkvæma aðgerðir - Villa kom upp við að tengjast við þjóninn. - Villa kom upp á meðan beðið var eftir þjóninum; ekki var hægt að ljúka aðgerðinni - Villa kom upp á meðan beðið var eftir þjóninum; ekki var hægt að ljúka aðgerðinni - Ekki var hægt að ljúka aðgerðinni; þjónninn er ekki tiltækur + Villa kom upp við að tengjast þjóninum. + Villa kom upp á meðan beðið var eftir þjóninum. Ekki var hægt að ljúka aðgerðinni + Villa kom upp á meðan beðið var eftir þjóninum. Ekki var hægt að ljúka aðgerðinni Þú hefur ekki heimild %s til að endurnefna þessa skrá til að eyða þessari skrá til að deila þessari skrá til að hætta deilingu á þessari skrá til að uppfæra þessa sameign - til að búa til skrána + til að búa til þessa skrá til að senda inn í þessa möppu Skráin er ekki lengur tiltæk á þjóninum Uppfæri slóð á gagnageymslu Ljúka - Undirbý yfirfærslu… Athuga áfangastað… - Vista aðgangsuppsetningar… - Bíð eftir óloknum samstillingum… Færi gögn… Uppfæri atriðaskrá… Hreinsa… - Endurheimti aðgangsuppsetningar… Lokið - VILLA: Ekki nægilegt pláss - VILLA: Skráin er ekki skrifanleg - VILLA: Skráin er ekki lesanleg VILLA: Nextcloud-mappa er þegar til staðar - VILLA: við yfirfærslu - VILLA: við að uppfæra atriðaskrá - - Gagnamappan er þegar til, hvað skal gera? - Taka yfir - Nota fyrirliggjandi + Skipta út + Nota Notandaaðgangar Bæta við notandaaðgangi Sýsla með notandaaðganga - Öruggri tengingu er endurbeint í gegnum óörugga leið. - - Annálar + Annálar Ferill sendinga - Ekkert forrit fannst til að senda annála. Settu upp eitthvað tölvupóstforrit. %1$s annálar Android-forrita Hleð inn gögnum … @@ -435,19 +413,18 @@ Rangt lykilorð Færa Afrita - Ekkert hér. Þú getur bætt við möppu! + Ekkert hér. Þú getur bætt við möppu. Veldu - Get ekki fært. Athugaðu hvort skráin sé til - Ekki er hægt að færa möppu inn í undirmöppu sína - Skráin er þegar til í úttaksmöppunni + Ekki er hægt að færa möppu inn í eina af undirmöppum sínum + Skráin er þegar til í móttökumöppunni Villa kom upp við að reyna að færa þessa skrá eða möppu til að færa þessa skrá Get ekki afritað. Athugaðu hvort skráin sé til - Ekki er hægt að afrita möppu inn í undirmöppu sína - Skráin er þegar til í úttaksmöppunni + Ekki er hægt að afrita möppu inn í eina af undirmöppum sínum + Skráin er þegar til í móttökumöppunni Villa kom upp við að reyna að afrita þessa skrá eða möppu til að afrita þessa skrá @@ -512,7 +489,6 @@ %1$s (tölvupóstur) %1$s ( á %2$s ) - Því miður, deiling gagna með notendum innan forrita er ekki leyfð í þessari útgáfu þjónsins. \nHafðu samband við kerfisstjóra getur deilt getur breytt búið til @@ -521,50 +497,46 @@ Hætta deilingu lokið - Mistókst að reyna aftur + Ný tilraun mistókst Hreinsun mistókst - Hreinsun tókst - Hreinsa allt klárað + Hreinsað + Hreinsa innsendingar sem er lokið Reitir Listi Sýsla með geymslurými - Stillingar, gagnagrunnur og skilríki þjóna úr gögnum %1$s verður eytt endanlega. \n\nSóttar skrár verða skildar eftir ósnertar.\n\nÞetta ferli getur tekið drjúgan tíma. Hreinsa gögn Ekki tókst að eyða öllum skrám. - Aukinna heimilda er krafist til að geta sent inn og sótt skrár. - Skráin fannst ekki á staðværu skráakerfi + Krafist er viðbótarheimilda til að senda inn og sækja skrár. + Skrá fannst ekki á staðværu skráakerfi Ertu viss um að þú viljir fjarlægja valin atriði? Ertu viss um að þú viljir fjarlægja valin atriði og innihald þeirra? - Bíð eftir að tækið hlaðist + Þjónn í viðhaldsham + + Bíð eftir hleðslu Leita Þetta er Nextcloud-eiginleiki, endilega uppfærðu. Læra meira Sjálfvirk innsending Taka þátt - Hjálpaðu okkur við prófanir - Fannstu villu? Eitthvað er skrýtið? + Hjálpaðu til við prófanir + Fannstu villu? Skringilegheit? Tilkynna um vandamál á Github - Hefurðu áhuga á að hjálpa okkur með næstu útgáfu? + Hefurðu áhuga á að hjálpa til við að prófa næstu útgáfu? Prófaðu þróunarútgáfuna - Þetta innifelur alla nýjust eiginleika og er alveg á jaðri framþróunarinnar. Villur og hnökrar geta komið upp, og ef slíkt gerist skaltu endilega tilkynna um þær til okkar. + Þetta innigeldur alla væntanlega eiginleika og er alveg á jaðrinum hvað varðar stöðugleika, Villur geta komið upp, og ef slíkt gerist, endilega tilkynntu um þær. Forútgáfa - Útgáfukandídatinn (release candidate = RC) er skyndiútgáfa af væntanlegri útgáfu og er ætlað að vera nokkuð stöðug. Þú getur hjálpað til við að tryggja stöðugleikann með því að prófa þína eigin uppsetningu. Skráðu þig í prófanir í Play Store eða handvirkt með því að fara í \"útgáfur\"-hlutann í F-Droid. + Útgáfukandídat (RC) er stöðutaka á væntanlegri útgáfu og er vænst til að hún sé nokkuð stöðug. Með prófun á uppsetningunni þinni værirðu að hjálpa til við að tryggja þann stöðugleika. Skráðu þig til prófana í Play-safninu eða skoðaðu handvirkt í \"útgáfur\" hlutanum á F-Droid. Vertu virkur þáttakandi - Taktu þátt í spjalli á IRC: <a href=\"%1$s\">#nextcloud-mobile</a> - Hjálpaðu öðrum á <a href=\"%1$s\">spjallvefnum</a> - <a href=\"%1$s\">Þýða</a> forritið - Leggðu þitt af mörkum sem forritari, skoðaðu <a href=\"https://github.com/nextcloud/android/blob/master/CONTRIBUTING.md\">CONTRIBUTING.md</a> fyrir nánari upplýsingar Færa í… Afrita í… Veldu möppu… Hleð inn möppum… Engar margmiðlunarmöppur fundust - Kjörstillingar fyrir sjálfvirka innsendingu + Kjörstillingar fyrir sjálfvirkar innsendingar Stillingar - Beinar innsendingar hafa verið algerlega endurhannaðar. Skoðaðu aðalvalmyndina og endurstilltu sjálfvirku innsendingarnar þínar. Við biðjumst samt velvirðingar á þessum óþægindum.\n\nNjóttu hinna nýju og öflugu innsendingareiginleika! Fyrir %1$s %d valið @@ -578,7 +550,6 @@ Engar tilkynningar Athugaðu aftur síðar. - Settu inn skráaheiti og skráagerð fyrir innsendingu Skráarheiti Skráartegund Textabútsskrá(.txt) @@ -609,7 +580,7 @@ Fullt nafn - Tölvupóstfang + Tölvupóstur Símanúmer Heimilisfang Vefsvæði @@ -619,23 +590,23 @@ Engin virkni ennþá - Streymið mun birta atburði á borð við\nviðbætingar, breytingar og deilingar + Þetta streymi mun birta atburði á borð við viðbætingar, breytingar og deilingar Villa átti sér stað Um hugbúnaðinn - Öryggisafrit af tengiliðum + Taka öryggisafrit af tengiliðum + Endurheimta tengiliði Taka öryggisafrit núna Endurheimta síðasta öryggisafrit Endurheimta Taka öryggisafrit Öryggisafrit af tengiliðum Síðasta öryggisafrit - Nauðsynlegt er að hafa lesheimildir fyrir tengiliði - Nauðsynlegt er að hafa skrifheimildir fyrir tengiliði + Nauðsynlegt er að hafa heimild til að lesa tengiliðalista + Nauðsynlegt er að hafa heimild til að breyta tengiliðalista Endurheimta tengiliði Endurheimta valda tengiliði - Veldu notandaaðgang fyrir innflutning - Engar aðgangsheimildir, ekkert flutt inn! + Veldu aðgang til að flytja inn Veldu dagsetningu aldrei Engin skrá fannst @@ -644,6 +615,8 @@ Tók á móti nýrri tilkynningu + Útskráning + Gagnaleynd diff --git a/src/main/res/values-ja-rJP/strings.xml b/src/main/res/values-ja-rJP/strings.xml index f8b2865ae9..aff2449b91 100644 --- a/src/main/res/values-ja-rJP/strings.xml +++ b/src/main/res/values-ja-rJP/strings.xml @@ -436,9 +436,6 @@ 開発バージョンをテスト リリース候補 積極的な貢献 - IRCでチャットに参加してください: <a href=\"%1$s\">#nextcloud-モバイル</a> - <a href=\"%1$s\">フォーラム</a> で他の人を助けてください - アプリを <a href=\"%1$s\">翻訳する</a> …に移動 …にコピー … フォルダーを選択 diff --git a/src/main/res/values-nb-rNO/strings.xml b/src/main/res/values-nb-rNO/strings.xml index 34f23f8ae0..5546ed6c4a 100644 --- a/src/main/res/values-nb-rNO/strings.xml +++ b/src/main/res/values-nb-rNO/strings.xml @@ -275,7 +275,8 @@ Tjeneren din svarer ikke med korrekt bruker-ID, vennligst ta kontakt med en administrator Kan ikke autentisere mot denne tjeneren Kontoen eksisterer ikke på enheten enda - + + Sett som tilgjengelig frakoblet Fjern som tilgjengelig frakoblet Sett som favoritt @@ -542,6 +543,8 @@ Filen ble ikke funnet i lokalt filsystem Vil du virkelig fjerne de valgte elementene? Vil du virkelig fjerne de valgte elementene og dets innhold? + Tjener i vedlikeholdsmodus + Venter på lading av enhet. Søk Dette er en Nextcloud funksjon, vennligst oppdater. @@ -557,9 +560,6 @@ Release candidate Release candidate (RC) er en pakke av den kommende utgaven og er forventet å være stabil. Ved å teste denne med ditt oppsett vil kunne hjelpe oss å sikre dette. Meld deg på for testen i Play butikken eller se i versjonsseksjonen i F-Droid. Bidra aktivt - Delta i chat på IRC: <a href="%1$s">#nextcloud-mobile</a> - Hjelp andre på <a href="%1$s">forumet</a> - <a href="%1$s">Oversette</a> app\'en Flytt til… Kopier til… Velg mappe… @@ -650,6 +650,7 @@ Nytt varsel mottatt Utlogging + Personvern diff --git a/src/main/res/values-nl/strings.xml b/src/main/res/values-nl/strings.xml index 60c60f450c..e5fe453e1c 100644 --- a/src/main/res/values-nl/strings.xml +++ b/src/main/res/values-nl/strings.xml @@ -276,7 +276,8 @@ Kies er eentje van een provider. Je server geeft geen goede userid terug, neem contact op met je beheerder Kan niet autenticeren tegen deze server Account bestaan nog niet op dit apparaat - + + Offline beschikbaar maken Niet langer offline beschikbaar maken Instellen als favoriet @@ -543,6 +544,8 @@ Kies er eentje van een provider. Het bestand is niet te vinden binnen het lokale bestandssysteem. Wil je de geselecteerde objecten echt verwijderen? Wil je de geselecteerde objecten en hun inhoud echt verwijderen? + Server in onderhoudsmodus + Wachten to apparaat wordt opgeladen Zoeken Dit is een Nextcloud-optie, gelieve te updaten. @@ -558,10 +561,12 @@ Kies er eentje van een provider. Release candidate De Release Candidate (RC) is een kopie van de komende release en zou stabiel moeten zijn. Testen van jouw installatie kan ons helpen om dit te bevestigen. Meld je aan om te testen op de Play Store of bekijk handmatig de \"versies\"-sectie op F-Droid. Actief meedoen - Doe mee met de chat op IRC: <a href="%1$s">#nextcloud-mobile</a> - Help andere gebruikers in de <a href="%1$s">forums</a> - <a href="%1$s">Vertaal</a> de app - Review, voeg toe en schrijf code, bekijk <a href=\"https://github.com/nextcloud/android/blob/master/CONTRIBUTING.md\">CONTRIBUTING.md</a> voor details + Bezoek de IRC chat op IRC: <a href=\"%1$s\">#nextcloud-mobile</a> + + Help anderen op het <a href=\"%1$s\">forum</a> + + <a href=\"%1$s\">Vertaal</a> de app + Bekijk, schrijf of pas code aan. Kijk in <a href=\"%1$s\">CONTRIBUTING.md<a> voor meer details Verplaats naar … Kopieer naar … Kies map … @@ -652,6 +657,7 @@ Kies er eentje van een provider. Nieuwe meldingen ontvangen Uitloggen + Privacy diff --git a/src/main/res/values-pl/strings.xml b/src/main/res/values-pl/strings.xml index 9a1a73950f..ec2785a3bd 100644 --- a/src/main/res/values-pl/strings.xml +++ b/src/main/res/values-pl/strings.xml @@ -274,7 +274,8 @@ Twój serwer nie zwraca poprawnego identyfikatora użytkownika. Proszę skontaktuj się z administratorem. Błąd autoryzacji na tym serwerze Konto jeszcze nie istnieje na tym urządzeniu - + + Udostępnij w trybie offline Wyłącz udostępnianie w trybie offline Ustaw jako ulubione @@ -541,6 +542,8 @@ Plik nie został znaleziony w lokalnym systemie plików Czy naprawdę chcesz usunąć zaznaczone elementy? Czy naprawdę chcesz usunąć zaznaczone elementy oraz ich zawartość? + Serwer w trybie konserwacji + Oczekiwanie na ładowanie urządzenia Wyszukaj Ta funkcja jest dostępna w Nextcloud, prosimy wykonać aktualizację @@ -556,10 +559,6 @@ Wydanie kandydujące Release Candidate (RC) jest zarysem nadchodzącego wydania i oczekujemy że będzie stabilne. Testowanie indywidualnej konfiguracji może pomóc, aby to zapewnić. Zapisz się do testowania w sklepie Play lub ręcznie szukaj w sekcji \"wersje\" na F-Droid. Aktywni członkowie projektu - Dołącz do chatu (IRC): <a href="%1$s">#nextcloud-mobile</a> - Pomóż innym na <a href="%1$s">forum</a> - <a href="%1$s">Tłumacz</a> aplikację - Wspomóż nas jako programista, po więcej szczegółów odwiedź <a href=\"https://github.com/nextcloud/android/blob/master/CONTRIBUTING.md\">CONTRIBUTING.md</a> Przenieś do… Skopiuj do… Wybierz folder… @@ -652,6 +651,7 @@ Otrzymano nowe powiadomienie Wyloguj + Prywatność diff --git a/src/main/res/values-pt-rBR/strings.xml b/src/main/res/values-pt-rBR/strings.xml index f09a357808..158dea2ec0 100644 --- a/src/main/res/values-pt-rBR/strings.xml +++ b/src/main/res/values-pt-rBR/strings.xml @@ -275,7 +275,8 @@ Seu servidor não está retornando um ID correto de usuário. Por favor, contacte o administrador Não foi possível obter autenticação neste servidor A conta ainda não existe no dispositivo - + + Definir como disponível offline Definir como não disponível offline Marque como favorito @@ -542,6 +543,8 @@ Arquivo não encontrado no sistema de arquivos local Deseja realmente excluir os itens selecionados? Deseja realmente excluir os itens selecionados e seus conteúdos? + O servidor está em modo de manutenção + Esperando carregar Pesquisar Este é um recurso do Nextcloud. Por favor, atualize. @@ -557,10 +560,6 @@ Candidato a versão O release candidate (RC) é um instantâneo da próxima versão e espera-se que seja estável. Testar sua configuração individual pode ajudar a garantir isso. Inscreva-se para testar na Play Store ou confira a seção \"versões\" no F-Droid. Contribuir ativamente - Participe de uma conversa no IRC: <a href="%1$s">#nextcloud-mobile</a> - Ajude outros no <a href="%1$s">forum</a> - <a href="%1$s">Traduza</a> the app - Revisar, alterar e escrever código, veja <a href=\"https://github.com/nextcloud/android/blob/master/CONTRIBUTING.md\">CONTRIBUTING.md</a> para detalhes Mover para… Copiar para… Escolha a pasta… @@ -651,6 +650,7 @@ Nova notificação recebida Sair + Privacidade diff --git a/src/main/res/values-ru/strings.xml b/src/main/res/values-ru/strings.xml index 516a711011..e5ca3d391d 100644 --- a/src/main/res/values-ru/strings.xml +++ b/src/main/res/values-ru/strings.xml @@ -277,7 +277,8 @@ Сервер не вернул верный пользовательский идентификатор. Пожалуйста, свяжитесь с вашим администратором Не удается авторизоваться на этом сервере Аккаунт ещё не существует на устройстве - + + Сделать доступным автономно Убрать автономную доступность Пометить как избранное @@ -458,7 +459,7 @@ для копирования этого файла Немедленная загрузка - Подробно + Дополнительные Каталог для немедленной загрузки видео Синхронизация каталога %1$s не может быть завершена @@ -529,7 +530,7 @@ Повторить неудавшиеся Очистить неудавшиеся - Очищено + Очистить успешные Очистить завершенные Вид сеткой @@ -544,6 +545,8 @@ Файл не был найден в локальной файловой системе Вы действительно хотите удалить выбранные элементы? Вы действительно хотите удалить выбранные элементы и их содержимое? + Сервер находится в режиме обслуживания + Ожидание зарядки устройства Поиск Это есть в новой версии Nextcloud, пожалуйста обновитесь @@ -559,10 +562,6 @@ Кандидат в релизы Релиз-кандидат (RC) — это текущее состояние готовящегося выпуска, и, ожидается, что он будет стабильным. Проверка с вашими индивидуальными настройками может помочь убедится в этом. Зарегистрируйтесь для тестирования в Google Play или используйте раздел «версии» в каталоге приложений F-Droid. Активное участие - Присоединяйтесь к IRC-чату: <a href=\"%1$s\">#nextcloud-mobile</a> - Помогайте другим на нашем <a href=\"%1$s\">форуме</a> - Участвуйте в <a href=\"%1$s\">переводе</a> приложения - Рецензируйте, изменяйте и пишите код, подробности по ссылке <a href=\"https://github.com/nextcloud/android/blob/master/CONTRIBUTING.md\">CONTRIBUTING.md</a>. Переместить в… Копировать в… Выберите каталог … @@ -655,6 +654,7 @@ Получено новое уведомление Выйти + Конфиденциальность diff --git a/src/main/res/values-sq/strings.xml b/src/main/res/values-sq/strings.xml index 085ef5155b..0a8baf671f 100644 --- a/src/main/res/values-sq/strings.xml +++ b/src/main/res/values-sq/strings.xml @@ -275,7 +275,8 @@ në 7 ditët e fundit. Serveri juaj nuk është duke kthyer një id përdoruesi të saktë, ju lutem kontaktoni një administrator S’kryhet dot identifikimi me këtë server Llogaria s\’ekziston ende te pajisja - + + Caktojeni si të gatshëm jo në linjë Hiqeni si të gatshëm jo në linjë Vendose si të preferuar @@ -557,10 +558,6 @@ në 7 ditët e fundit. Lëshimi i kandidatit Lëshimi i kandidatit (RC) është një fragment i lëshimit të ardhshme dhe pritet të jetë i qëndrueshëm. Testimi i setup-it tuaj individuale mund të ndihmojë për ta siguruar këtë. Regjistrohuni për testimin në Play Store ose manualisht shikoni në seksionin \"versionet\" në F-Droid. Kontribim aktiv - Bashkohu në bisedat në IRC: <a href=\"%1$s\">#nextcloud-mobile</a> - Ndihmo të tjerët në <a href="%1$s">forum</a> - <a href=\"%1$s\">Përktheni</a> aplikacionin - Kontriboni si një zhvillues, shih<a href=\"https://github.com/nextcloud/android/blob/master/CONTRIBUTING.md\">CONTRIBUTING.md</a> për detaje Levizni tek… Kopjojeni tek… Zgjidh dosjen… @@ -651,6 +648,7 @@ në 7 ditët e fundit. Morët njoftime të reja Dilni + Privatësi diff --git a/src/main/res/values-tr/strings.xml b/src/main/res/values-tr/strings.xml index f847d2b8cf..68431c8897 100644 --- a/src/main/res/values-tr/strings.xml +++ b/src/main/res/values-tr/strings.xml @@ -150,7 +150,7 @@ Hata Yükleniyor… bilinmiyor - Bilinmeyen hata + Bilinmeyen sorun Bekliyor Hakkında Parola değiştir @@ -173,16 +173,16 @@ Tamamlandı İptal Edildi Duraklatıldı - Bağlantı hatası + Bağlantı sorunu Yükleme kısa bir süre sonra yeniden denenecek - Kimlik bilgileri hatası - Klasör hatası - Dosya hatası + Kimlik bilgileri sorunu + Klasör sorunu + Dosya sorunu Yerel dosya bulunamadı - İzin hatası + İzin sorunu Çakışma Uygulama sonlandırıldı - Bilinmeyen hata + Bilinmeyen sorun WiFi bağlantısı bekleniyor Yüklenmeyi bekliyor İndiriliyor… @@ -219,7 +219,7 @@ Lütfen parolanızı yeniden yazın Parolanızı kaldırın Parola ile onayı aynı değil - Parola hatalı + Parola yanlış Parola kaldırıldı Parola depolandı @@ -249,20 +249,20 @@ Güvenli bağlantı kullanılamıyor. Bağlantı kuruldu Bağlantı sınanıyor - Sunucu ayarları hatalı + Sunucu ayarları doğru değil Aygıt üzerinde aynı kullanıcı adı ve sunucu için bir hesap zaten var Yazdığınız kullanıcı adı bu hesabın kullanıcı adı ile eşleşmiyor Bilinmeyen bir sorun çıktı! Sunucu adı bulunamadı Sunucu bulunamadı Sunucu çok geç yanıt veriyor - Sunucu adresi biçimi hatalı + Sunucu adresi biçimi yanlış SSL başlatılamadı SSL sunucusunun kimliği doğrulanamadı Sunucu sürümü anlaşılamadı Bağlantı kurulamadı Güvenli bağlantı kuruldu - Kullanıcı adı ya da parola hatalı + Kullanıcı adı ya da parola yanlış Kimlik doğrulanamadı Kimlik doğrulama sunucusu erişime izin vermedi Beklenilmeyen durum; Lütfen sunucu adresini yeniden yazın @@ -275,7 +275,8 @@ Sunucunuz doğru bir kullanıcı kodu döndürmüyor, lütfen bir yönetici ile görüşün Bu sunucuda kimlik doğrulanamadı Aygıt üzerinde henüz bu hesap açılmamış - + + Çevrimdışı kullanılabilir olarak işaretle Çevrimdışı kullanılabilir işaretini kaldır Sık Kullanılanlara Ekle @@ -436,7 +437,7 @@ Veri yükleniyor… Kimlik doğrulaması gerekli - Parola hatalı + Parola yanlış Taşı Kopyala Burada bir şey yok. Bir klasör ekleyebilirsiniz! @@ -542,6 +543,8 @@ Dosya yerel dosya sisteminde bulunamadı Seçilen ögeleri gerçekten silmek istiyor musunuz? Seçilen ögeleri ve içeriklerini gerçekten silmek istiyor musunuz? + Sunucu bakım kipinde + Aygıtın şarj olması bekleniyor Arama Bu bir Nextcloud özelliğidir, lütfen güncelleyin. @@ -553,14 +556,14 @@ Github üzerinden bir sorun bildirin Sonraki sürümü deneyerek bize yardımcı olmak ister misiniz? Geliştirici sürümünü deneyin - Bu sürümde tüm yeni özellikler bulunur ve çok taze olduğundan hata ve sorunlar olabilir. Bir hata ya da soruna rastlarsanız bize iletin. + Bu sürümde tüm yeni özellikler bulunur ve çok taze olduğundan eksikleri olabilir. Bir hata ya da soruna rastlarsanız bize iletin. Yayın adayı Yayın adayı (Release Candidate, RC) yayınlanacak sürümün bir kopyasıdır ve kararlı olması beklenir. Kişisel olarak kullanmanız kararlı olduğundan emin olmamızı sağlar. Denemek için Play Store üzerinden kayıt olun ya da el ile F-Droid üzerindeki \"sürümler\" bölümüne bakın. Etkin Katkıda Bulunun IRC sohbetine katılın: <a href=\"%1$s\">#nextcloud-mobile</a> - <a href=\"%1$s\">forum</a> üzerinde diğer kişilere yardımcı olun - Uygulamayı <a href="%1$s">çevirin</a> - Yazılımcı olarak katkıda bulunun! Ayrıntılı bilgi almak için <a href=\"https://github.com/nextcloud/android/blob/master/CONTRIBUTING.md\">KATKIDA BULUNMA.md</a> sayfasına bakın + <a href=\"%1$s\">Forumda</a> diğer kullanıcılara yardımcı olun + Uygulamayı <a href=\"%1$s\">Çevirin</a> + Kodu gözden geçirin ve katkıda bulunun. Ayrıntılar için <a href=\"%1$s\">CONTRIBUTING.md<a> dosyasına bakın Taşı… Kopyala… Klasör seçin… @@ -651,6 +654,7 @@ Yeni bir bildirim var Oturumu Kapat + Gizlilik diff --git a/src/main/res/values-zh-rCN/strings.xml b/src/main/res/values-zh-rCN/strings.xml index bdb0d1773e..6cf839fbcc 100644 --- a/src/main/res/values-zh-rCN/strings.xml +++ b/src/main/res/values-zh-rCN/strings.xml @@ -64,7 +64,10 @@ 推荐给朋友 反馈 版本说明 - 在您的智能手机上试用 %1$s! + 记住本地共享 + 记住最近的本地共享 + + 在您的智能手机上试用 %1$s! 我想邀请你在智能机上使用%1$s。 从这里下载:%2$s @@ -96,6 +99,7 @@ 几秒前 这里没有文件 + 上传一些内容或与您的设备同步。 把一些文件设为“我喜欢的”或者从设备同步 你标记为“我喜欢的”文件和文件夹会显示在这里 没有找到您搜索的“我喜欢的”。 @@ -114,7 +118,14 @@ 没有搜索到被修改的文件 在最近7天。 没有找到最近添加的文件 + 您的搜索返回没有最近没有添加的文件。 + 上传一些照片或启用自动上传。 + 你的搜索返回没有照片 + 上传一些视频或启动自动上传 + 你的搜索返回没有视频 没有可以上传的 + 上传一些内容或启用即时上传。 + 上传一些内容或启用自动上传。 文件夹 文件夹 文件 @@ -126,11 +137,14 @@ 修改于: 下载 同步 + 文件在上传时重命名为%1$s + 列出的布局 共享 确定 移除上传任务 + 重试上传 取消同步 取消 返回 @@ -150,8 +164,10 @@ 文件夹名称 上传 … %1$d%% 上传 %2$s + 上传 %1$s 上传成功 上传失败 + 无法上传%1$s 上传失败,你需要重新登录 上传 当前 @@ -168,27 +184,36 @@ 本地文件未找到 权限错误 冲突 + 应用程式已终止 未知错误 + 等待Wi-Fi连接 等待上传... 下载中 … %1$d%% 下载中 %2$s + 下载 %1$s 下载成功 下载失败 + 无法下载%1$s 未下载完毕 下载失败,你需要重新登录 选择账户 同步失败 + 同步失败,您需要重新登录 + 无法完成%1$s的同步处理 + %1$s的密码错误 发现冲突 %1$d 文件无法同步 文件同步失败 无法同步 %1$d 文件内容(%2$d 冲突) 某些本地文件已被遗忘 %2$s 目录中的 %1$d 个文件不能被复制到 + 文件夹%1$s不再存在 移动所有 所有文件已被移动 某些文件无法被移动 本地: %1$s 远程:%1$s + 空间不足将阻止将所选文件复制到%1$s文件夹中。 你想把它们移到那里吗? 请输入你的密码 输入您的密码 @@ -206,7 +231,16 @@ %1$s 播放完毕 没有发现播放文件 未提供账号 + 该文件不在有效的帐户 不支持的编码格式 + 无法读取媒体文件 + 媒体文件的编码不正确 + 尝试播放文件超时 + 无法流媒体文件 + 陈旧的媒体播放器无法播放媒体文件 + 尝试播放%1$s时遇到安全错误 + 尝试播放%1$s时输入错误 + 尝试播放%1$s时发生意外错误 后退按钮 播放暂停按钮 快进按钮 @@ -218,21 +252,33 @@ 连接已建立。 测试连接 服务器配置不正确 + 设备上已经存在相同用户和服务器的帐户 输入用户与此帐户的用户不符 发生未知错误! + 找不到主机 + 找不到服务 看起来服务器不太给力 + 服务器地址格式错误 SSL初始化失败 + 无法验证SSL服务器的身份 不可辨识的服务器服务器版本 + 无法建立连接 安全连接已建立 用户名或密码错误 认证不成功 访问被认证服务器拒绝 + 意外状态请重新输入服务器地址 你的授权已经过期。请重新授权。 请输入当前的密码 您的会话超时了,请重新连接 + 连接到身份验证服务器... 服务器不支持这种验证方式 %1$s不支持多个账户 + 您的服务器没有返回正确的用户ID,请与管理员联系 无法连接认证服务器 + 设备上不存在帐户 + + 可以设置离线 不可以设置离线 加入收藏 @@ -240,24 +286,36 @@ 重命名 删除 你确定要删除%1$s? + 你真的要删除%1$s及其内容吗? 仅本地 + 删除 无法完成删除 请输出新的名字 + 本地副本无法重命名,尝试其他名称 + 不能给服务器新的名称 + 无法查看远程文件 文件内容已同步 + 无法创建文件夹 禁用字符: / \\ < > : \" | ? * 文件名中存在至少一个非法字符 文件名不能为空 + 稍等 检查保存的证书 + 意外的问题,请从不同的应用程序选择文件 + 没有选择文件 发送链接给 … 从私有存储中拷贝文件 使用oAuth2登陆 + 连接到OAuth 2服务器... + 站点身份无法验证 - 不受信任的服务器证书 - 服务器证书过期 - 服务器证书时间比当前时间还晚 - 主机名与证书中的记录不匹配 是否信任此证书? + 无法保存证书 详细信息 隐藏 授权给: @@ -281,17 +339,27 @@ 占位符 点位符.txt + PNG 图片 389字节 2012/05/18 下午12:23 12:23:45 + 仅在Wi-Fi下上传 + 仅在Wi-Fi下上传图片 + 仅在Wi-Fi下上传视频 + 仅在充电时上传 + 仅在充电时上传 /实时上传 文件冲突 + 你想保留哪些文件? 如果您选择这两个版本,本地文件将附加一个号码。 保留两者 本地版本 服务器版本 + 抱歉 图片预览 + 无法显示图像 + 无法复制 %1$s 到本地目录 %2$s 实时上传文件夹 本地文件夹 @@ -299,6 +367,7 @@ 使用子文件夹 基于年和月存于子文件夹 + 您的服务器上未启用共享。 请联系您的管理员。 无法共享。请检查文件是否存在 共享文件或目录出错 无法取消共享。请检查文件是否存在 @@ -312,29 +381,60 @@ 复制链接 复制到剪贴板 + 收到没有文字复制到剪贴板 发生未预见的错误当复制到剪贴板 从%1$s复制文本 + 严重错误:无法执行操作 + + 连接到服务器时发生错误。 + 等待服务器时发生错误。 无法完成操作。 + 等待服务器时发生错误。 无法完成操作。 + 无法完成操作。 服务器无法使用 + + 您不允许%s 重命名该文件 删除该文件 共享该文件 取消共享该文件 更新共享 + 创建此文件 + 上传到此文件夹 该文件在服务器上不可用 更新存储路径 完成 + 准备迁移1… 检查目的地… + 保存帐户配置1… + 等待所有同步完成1… 正在转移数据… 更新目录… 清除… + 恢复帐户配置1… 完成 + 错误:空间不足 + 错误:目标文件不可写 + 错误:源文件不可读 错误:Nextcloud目录已经存在 + 错误:迁移过程中失败 + 错误:无法更新索引 + + 数据文件夹已经存在。 选择以下选项之一: + 代替 + 使用 + + 源目录不可读! + 您还想将存储路径更改为%1$s?\ n \ note:所有数据都必须重新下载。 + 账号 添加账号 管理账号 - 日志 + 安全连接通过不安全的路由重定向。 + + 日志 发送历史日志 + 没有应用程序发送发送日志。 请安装电子邮件客户端。 %1$s Android 程序日志 加载数据 … @@ -342,20 +442,27 @@ 错误密码 移动 复制 + 这里是空的 您可以添加一个文件夹。 选择 + 无法移动文件。 请检查是否存在 + 将文件夹移动到其自己的底层文件夹中是不可能的 + 该文件已存在于目标文件夹中 尝试移动该文件或文件夹时发生错误 移动该文件 无法复制文件。请检查文件是否存在 + 将文件夹复制到其自己的底层文件夹中是不可能的 + 该文件已存在于目标文件夹中 尝试复制这个文件或文件夹时发生了错误 复制这个文件 即时上传 详细信息 - %1$s同步未完成。 + 用于即时上传的视频文件夹 + %1$s同步未完成。 已共享 与你 @@ -396,6 +503,7 @@ 添加用户或组 分享链接 设置过期日期 + 用密码保护 安全 允许编辑 隐藏文件列表 @@ -411,6 +519,7 @@ %1$s (邮件) %1$s ( 在 %2$s ) + 升级服务器版本以允许在其客户端之间的用户之间共享。\ n请与您的管理员联系 可共享 可编辑 创建 @@ -419,34 +528,48 @@ 停止共享 完成 + 新尝试失败 清除失败 + 清除 + 清除完成上传 + 网格视图 列表视图 管理空间 + 来自%1$s数据的设置,数据库和服务器证书将被永久删除。 \ n \ n下载的文件将保持不变。\ n \ n此过程可能需要一段时间。 清除数据 某些文件无法删除。 + 上传和下载文件所需的其他权限。 + 在本地文件系统中找不到文件 你是否真的要删除所选的项目? 你是否真的要删除所选的项目和它们的内容? + 服务器处于维护模式 + + 等待收费 搜索 这是一个Nextcloud的特征,请更新 学习更多 自动上传 参加 + 通过测试帮助 + 发现错误?细节? 在GIthub在报告问题 + 在帮助里有兴趣通过测试下一个版本? 检查这个设备的版本 + 这包括所有即将到来的功能,它处于非常流行的边缘。 可能会发生错误/错误,如果及时,请报告您的发现。 发行候选版本 + 发布候选人(RC)是即将发布的快照,预计将稳定。 测试您的个人设置可以帮助确保这一点。 注册在Play商店进行测试,或手动查看F-Droid上的“版本”部分。 活跃的候选版 - 在IRC上加入这个会话: <a href="%1$s">#nextcloud-mobile</a> - 帮助他人在 <a href="%1$s">论坛</a> - <a href="%1$s">翻译</a> 应用程序 转移到… 复制到 选择文件夹… 加载文件夹… 没有发现媒体文件夹 + 自动上传的首选项 设置 + 即时上传已完全重新整理。 从主菜单重新配置您的自动上传。\ n \ n请使用新的的和扩展的自动上传。 为%1$s %d被选择 @@ -459,6 +582,7 @@ 没有提示 请稍后核对 + 输入要上传的文件名和文件类型 文件名 文件类型 片段文本文件(.txt) @@ -474,6 +598,8 @@ 给你所有的数据一个安全的家 + 访问,共享和保护您的文件在家里和工作 + 多用户 联接你所有的云 @@ -487,6 +613,7 @@ 全名 + 邮件 电话号码 地址 网站 @@ -496,22 +623,35 @@ 暂无动态 + 此流将显示\ n添加,更改和共享等事件 发生错误 关于 + 备份联系人 + 恢复联系人 + 立即备份 恢复上次备份 恢复 备份 联系人备份 上次备份 + 需要更改阅读列表的权限 + 需要更改联系人列表的权限 恢复联系人 恢复选中的联系人 + 选择导入帐户 + 没有授权,不能进入 选择时间 永远不 没有文件被发现 + 找不到最后的备份 备份已经排期,稍后将开始 导入已经排期,稍后将开始 收到新提示 - + 退出 + 隐私 + + + diff --git a/src/main/res/values/setup.xml b/src/main/res/values/setup.xml index 643025b648..f5040200c6 100644 --- a/src/main/res/values/setup.xml +++ b/src/main/res/values/setup.xml @@ -27,7 +27,7 @@ true "https://nextcloud.com/providers" - + off off @@ -36,18 +36,18 @@ on true true - true true - false - + true /.Contacts-Backup -1 - + + + true - + @color/nc_blue #006AA3 @@ -84,6 +84,7 @@ false true false + false false @@ -92,11 +93,13 @@ true true true - false + https://help.nextcloud.com/c/feature + true + https://nextcloud.com/privacy + false true true false - https://help.nextcloud.com/c/feature "mailto:" "mailto:android@nextcloud.com" diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index 78265138de..df530ace28 100644 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -276,7 +276,8 @@ Your server is not returning a correct user ID, please contact an administrator Cannot authenticate to this server Account does not exist on the device yet - + + Set as available offline Unset as available offline Set as favorite @@ -482,6 +483,9 @@ %1$d files %1$d files, 1 folder %1$d files, %2$d folders + Set picture as + Set As + Original file will be… Original file will be… Copy file @@ -543,6 +547,8 @@ File not found in local file system Do you really want to remove the selected items? Do you really want to remove the selected items and their contents? + Server in maintenance mode + Awaiting charge Search This is a Nextcloud feature, please update. @@ -558,10 +564,10 @@ Release candidate The release candidate (RC) is a snapshot of the upcoming release and is expected to be stable. Testing your individual setup could help ensure this. Sign up for testing on the Play store or manually look in the \"versions\" section on F-Droid. Actively Contribute - Join the chat on IRC: <a href="%1$s">#nextcloud-mobile</a> - Help others on the <a href="%1$s">forum</a> - <a href="%1$s">Translate</a> the app - Review, amend and write code, see <a href="https://github.com/nextcloud/android/blob/master/CONTRIBUTING.md">CONTRIBUTING.md</a> for details + Join the chat on IRC: <a href=\"%1$s\">#nextcloud-mobile</a> + Help others on the <a href=\"%1$s\">forum</a> + <a href=\"%1$s\">Translate</a> the app + Review, amend and write code, see <a href=\"%1$s\">CONTRIBUTING.md<a> for details Move to… Copy to… Choose folder… @@ -659,6 +665,6 @@ New notification received Logout - - + No app found to set a picture with! + Privacy diff --git a/src/main/res/xml/exposed_filepaths.xml b/src/main/res/xml/exposed_filepaths.xml index c7bc0925d3..9a47df8a0b 100644 --- a/src/main/res/xml/exposed_filepaths.xml +++ b/src/main/res/xml/exposed_filepaths.xml @@ -1,5 +1,8 @@ - + + true - false + + + regular + true "https://nextcloud.com/providers" @@ -34,17 +37,17 @@ true true true - true - - true - - true /.Contacts-Backup 30 + + true + + + @color/nc_blue #006AA3 @@ -81,19 +84,22 @@ true true true + true true - + true true true - false + https://help.nextcloud.com/c/feature + true + https://nextcloud.com/privacy + false true true false - https://help.nextcloud.com/c/feature "mailto:" "mailto:android@nextcloud.com"