Merge remote-tracking branch 'origin/master' into dev

This commit is contained in:
Tobias Kaminsky 2024-09-12 03:39:57 +02:00
commit ad2f7da891
91 changed files with 227 additions and 228 deletions

View file

@ -34,6 +34,7 @@ jobs:
run: | run: |
echo 'Can not approve PRs from forks' echo 'Can not approve PRs from forks'
exit 1 exit 1
- uses: hmarr/auto-approve-action@f0939ea97e9205ef24d872e76833fa908a770363 # v4.0.0 - uses: hmarr/auto-approve-action@f0939ea97e9205ef24d872e76833fa908a770363 # v4.0.0
with: with:
github-token: "${{ secrets.GITHUB_TOKEN }}" github-token: "${{ secrets.GITHUB_TOKEN }}"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.6 KiB

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.1 KiB

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.1 KiB

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

View file

@ -1,9 +1,8 @@
/* /*
* Nextcloud - Android Client * Nextcloud - Android Client
* *
* SPDX-FileCopyrightText: 2020 Tobias Kaminsky <tobias@kaminsky.me> * SPDX-FileCopyrightText: 2024 Alper Ozturk <alper.ozturk@nextcloud.com>
* SPDX-FileCopyrightText: 2020 Nextcloud GmbH * SPDX-License-Identifier: AGPL-3.0-or-later
* SPDX-License-Identifier: AGPL-3.0-or-later OR GPL-2.0-only
*/ */
package com.nextcloud.client.jobs package com.nextcloud.client.jobs
@ -11,6 +10,7 @@ import android.Manifest
import androidx.test.rule.GrantPermissionRule import androidx.test.rule.GrantPermissionRule
import androidx.work.WorkManager import androidx.work.WorkManager
import com.nextcloud.client.core.ClockImpl import com.nextcloud.client.core.ClockImpl
import com.nextcloud.client.preferences.AppPreferences
import com.nextcloud.client.preferences.AppPreferencesImpl import com.nextcloud.client.preferences.AppPreferencesImpl
import com.nextcloud.test.RetryTestRule import com.nextcloud.test.RetryTestRule
import com.owncloud.android.AbstractIT import com.owncloud.android.AbstractIT
@ -20,8 +20,9 @@ import com.owncloud.android.datamodel.OCFile
import com.owncloud.android.operations.DownloadFileOperation import com.owncloud.android.operations.DownloadFileOperation
import ezvcard.Ezvcard import ezvcard.Ezvcard
import ezvcard.VCard import ezvcard.VCard
import junit.framework.Assert.assertEquals import org.junit.Assert.assertEquals
import junit.framework.Assert.assertTrue import org.junit.Assert.assertTrue
import org.junit.Assert.fail
import org.junit.Rule import org.junit.Rule
import org.junit.Test import org.junit.Test
import java.io.BufferedInputStream import java.io.BufferedInputStream
@ -29,15 +30,15 @@ import java.io.File
import java.io.FileInputStream import java.io.FileInputStream
class ContactsBackupIT : AbstractOnServerIT() { class ContactsBackupIT : AbstractOnServerIT() {
val workmanager = WorkManager.getInstance(targetContext) private val workManager = WorkManager.getInstance(targetContext)
val preferences = AppPreferencesImpl.fromContext(targetContext) private val preferences: AppPreferences = AppPreferencesImpl.fromContext(targetContext)
private val backgroundJobManager = BackgroundJobManagerImpl(workmanager, ClockImpl(), preferences) private val backgroundJobManager = BackgroundJobManagerImpl(workManager, ClockImpl(), preferences)
@get:Rule @get:Rule
val writeContactsRule = GrantPermissionRule.grant(Manifest.permission.WRITE_CONTACTS) val writeContactsRule: GrantPermissionRule = GrantPermissionRule.grant(Manifest.permission.WRITE_CONTACTS)
@get:Rule @get:Rule
val readContactsRule = GrantPermissionRule.grant(Manifest.permission.READ_CONTACTS) val readContactsRule: GrantPermissionRule = GrantPermissionRule.grant(Manifest.permission.READ_CONTACTS)
@get:Rule @get:Rule
val retryTestRule = RetryTestRule() // flaky test val retryTestRule = RetryTestRule() // flaky test
@ -46,38 +47,54 @@ class ContactsBackupIT : AbstractOnServerIT() {
@Test @Test
fun importExport() { fun importExport() {
val intArray = IntArray(1) val intArray = intArrayOf(0)
intArray[0] = 0
// import file to local contacts // import file to local contacts
backgroundJobManager.startImmediateContactsImport(null, null, getFile(vcard).absolutePath, intArray) backgroundJobManager.startImmediateContactsImport(null, null, getFile(vcard).absolutePath, intArray)
longSleep()
shortSleep()
// export contact // export contact
backgroundJobManager.startImmediateContactsBackup(user) backgroundJobManager.startImmediateContactsBackup(user)
longSleep() longSleep()
val backupFolder: String = targetContext.resources.getString(R.string.contacts_backup_folder) + val folderPath: String = targetContext.resources.getString(R.string.contacts_backup_folder) +
OCFile.PATH_SEPARATOR OCFile.PATH_SEPARATOR
refreshFolder("/") refreshFolder("/")
longSleep() longSleep()
refreshFolder(backupFolder)
longSleep() longSleep()
val backupOCFile = storageManager.getFolderContent( refreshFolder(folderPath)
storageManager.getFileByDecryptedRemotePath(backupFolder), longSleep()
false longSleep()
)[0]
assertTrue(DownloadFileOperation(user, backupOCFile, AbstractIT.targetContext).execute(client).isSuccess) if (folderPath.isEmpty()) {
fail("folderPath cannot be empty")
}
val folder = fileDataStorageManager.getFileByDecryptedRemotePath(folderPath)
if (folder == null) {
fail("folder cannot be null")
}
val ocFile = storageManager.getFolderContent(folder, false).firstOrNull()
if (ocFile == null) {
fail("ocFile cannot be null")
}
if (ocFile?.storagePath == null) {
fail("ocFile.storagePath cannot be null")
}
assertTrue(DownloadFileOperation(user, ocFile, AbstractIT.targetContext).execute(client).isSuccess)
val file = ocFile?.storagePath?.let { File(it) }
if (file == null) {
fail("file cannot be null")
}
val backupFile = File(backupOCFile.storagePath)
val vcardInputStream = BufferedInputStream(FileInputStream(getFile(vcard))) val vcardInputStream = BufferedInputStream(FileInputStream(getFile(vcard)))
val backupFileInputStream = BufferedInputStream(FileInputStream(backupFile)) val backupFileInputStream = BufferedInputStream(FileInputStream(file))
// verify same // verify same
val originalCards: ArrayList<VCard> = ArrayList() val originalCards: ArrayList<VCard> = ArrayList()
@ -87,6 +104,17 @@ class ContactsBackupIT : AbstractOnServerIT() {
backupCards.addAll(Ezvcard.parse(backupFileInputStream).all()) backupCards.addAll(Ezvcard.parse(backupFileInputStream).all())
assertEquals(originalCards.size, backupCards.size) assertEquals(originalCards.size, backupCards.size)
assertEquals(originalCards[0].formattedName.toString(), backupCards[0].formattedName.toString())
val originalCardFormattedName = originalCards.firstOrNull()?.formattedName
if (originalCardFormattedName == null) {
fail("originalCardFormattedName cannot be null")
}
val backupCardFormattedName = backupCards.firstOrNull()?.formattedName
if (backupCardFormattedName == null) {
fail("backupCardFormattedName cannot be null")
}
assertEquals(originalCardFormattedName.toString(), backupCardFormattedName.toString())
} }
} }

View file

@ -1,10 +0,0 @@
/*
* Nextcloud - Android Client
*
* SPDX-FileCopyrightText: 2022 Tobias Kaminsky <tobias@kaminsky.me>
* SPDX-FileCopyrightText: 2022 Nextcloud GmbH
* SPDX-License-Identifier: AGPL-3.0-or-later OR GPL-2.0-only
*/
package com.owncloud.android.files.services
class LegacyFileUploaderIT : FileUploaderIT()

View file

@ -63,8 +63,8 @@ public class ConflictsResolveActivityIT extends AbstractIT {
ConflictsResolveActivity sut = activityRule.launchActivity(intent); ConflictsResolveActivity sut = activityRule.launchActivity(intent);
ConflictsResolveDialog dialog = ConflictsResolveDialog.newInstance(targetContext, ConflictsResolveDialog dialog = ConflictsResolveDialog.newInstance(targetContext,
existingFile,
newFile, newFile,
existingFile,
UserAccountManagerImpl UserAccountManagerImpl
.fromContext(targetContext) .fromContext(targetContext)
.getUser() .getUser()

View file

@ -390,6 +390,7 @@ public class DialogFragmentIT extends AbstractIT {
DeviceInfo info = new DeviceInfo(); DeviceInfo info = new DeviceInfo();
OCFile ocFile = new OCFile("/test.md"); OCFile ocFile = new OCFile("/test.md");
ocFile.setRemoteId("00000001");
Intent intent = new Intent(targetContext, FileDisplayActivity.class); Intent intent = new Intent(targetContext, FileDisplayActivity.class);
FileDisplayActivity fda = activityRule.launchActivity(intent); FileDisplayActivity fda = activityRule.launchActivity(intent);

View file

@ -35,6 +35,7 @@ class OCFileListFragmentStaticServerIT : AbstractIT() {
val sut = testActivityRule.launchActivity(null) val sut = testActivityRule.launchActivity(null)
OCFile("/1.png").apply { OCFile("/1.png").apply {
remoteId = "00000001"
mimeType = "image/png" mimeType = "image/png"
fileLength = 1024000 fileLength = 1024000
modificationTimestamp = 1188206955000 modificationTimestamp = 1188206955000
@ -43,6 +44,7 @@ class OCFileListFragmentStaticServerIT : AbstractIT() {
} }
OCFile("/image.png").apply { OCFile("/image.png").apply {
remoteId = "00000002"
mimeType = "image/png" mimeType = "image/png"
isPreviewAvailable = false isPreviewAvailable = false
fileLength = 3072000 fileLength = 3072000
@ -53,6 +55,7 @@ class OCFileListFragmentStaticServerIT : AbstractIT() {
} }
OCFile("/live photo.png").apply { OCFile("/live photo.png").apply {
remoteId = "00000003"
mimeType = "image/png" mimeType = "image/png"
isPreviewAvailable = false isPreviewAvailable = false
fileLength = 3072000 fileLength = 3072000
@ -63,6 +66,7 @@ class OCFileListFragmentStaticServerIT : AbstractIT() {
} }
OCFile("/video.mp4").apply { OCFile("/video.mp4").apply {
remoteId = "00000004"
mimeType = "video/mp4" mimeType = "video/mp4"
isPreviewAvailable = false isPreviewAvailable = false
fileLength = 12092000 fileLength = 12092000
@ -96,6 +100,7 @@ class OCFileListFragmentStaticServerIT : AbstractIT() {
val fragment = OCFileListFragment() val fragment = OCFileListFragment()
OCFile("/sharedToUser.jpg").apply { OCFile("/sharedToUser.jpg").apply {
remoteId = "00000001"
parentId = sut.storageManager.getFileByEncryptedRemotePath("/").fileId parentId = sut.storageManager.getFileByEncryptedRemotePath("/").fileId
isSharedWithSharee = true isSharedWithSharee = true
sharees = listOf(ShareeUser("Admin", "Server Admin", ShareType.USER)) sharees = listOf(ShareeUser("Admin", "Server Admin", ShareType.USER))
@ -104,6 +109,7 @@ class OCFileListFragmentStaticServerIT : AbstractIT() {
} }
OCFile("/sharedToGroup.jpg").apply { OCFile("/sharedToGroup.jpg").apply {
remoteId = "00000002"
parentId = sut.storageManager.getFileByEncryptedRemotePath("/").fileId parentId = sut.storageManager.getFileByEncryptedRemotePath("/").fileId
isSharedWithSharee = true isSharedWithSharee = true
sharees = listOf(ShareeUser("group", "Group", ShareType.GROUP)) sharees = listOf(ShareeUser("group", "Group", ShareType.GROUP))
@ -112,6 +118,7 @@ class OCFileListFragmentStaticServerIT : AbstractIT() {
} }
OCFile("/sharedToEmail.jpg").apply { OCFile("/sharedToEmail.jpg").apply {
remoteId = "00000003"
parentId = sut.storageManager.getFileByEncryptedRemotePath("/").fileId parentId = sut.storageManager.getFileByEncryptedRemotePath("/").fileId
isSharedWithSharee = true isSharedWithSharee = true
sharees = listOf(ShareeUser("admin@nextcloud.localhost", "admin@nextcloud.localhost", ShareType.EMAIL)) sharees = listOf(ShareeUser("admin@nextcloud.localhost", "admin@nextcloud.localhost", ShareType.EMAIL))
@ -120,6 +127,7 @@ class OCFileListFragmentStaticServerIT : AbstractIT() {
} }
OCFile("/publicLink.jpg").apply { OCFile("/publicLink.jpg").apply {
remoteId = "00000004"
parentId = sut.storageManager.getFileByEncryptedRemotePath("/").fileId parentId = sut.storageManager.getFileByEncryptedRemotePath("/").fileId
isSharedViaLink = true isSharedViaLink = true
modificationTimestamp = 1000 modificationTimestamp = 1000
@ -127,6 +135,7 @@ class OCFileListFragmentStaticServerIT : AbstractIT() {
} }
OCFile("/sharedToFederatedUser.jpg").apply { OCFile("/sharedToFederatedUser.jpg").apply {
remoteId = "00000005"
parentId = sut.storageManager.getFileByEncryptedRemotePath("/").fileId parentId = sut.storageManager.getFileByEncryptedRemotePath("/").fileId
isSharedWithSharee = true isSharedWithSharee = true
sharees = listOf( sharees = listOf(
@ -137,6 +146,7 @@ class OCFileListFragmentStaticServerIT : AbstractIT() {
} }
OCFile("/sharedToPersonalCircle.jpg").apply { OCFile("/sharedToPersonalCircle.jpg").apply {
remoteId = "00000006"
parentId = sut.storageManager.getFileByEncryptedRemotePath("/").fileId parentId = sut.storageManager.getFileByEncryptedRemotePath("/").fileId
isSharedWithSharee = true isSharedWithSharee = true
sharees = listOf(ShareeUser("circle", "Circle (Personal circle)", ShareType.CIRCLE)) sharees = listOf(ShareeUser("circle", "Circle (Personal circle)", ShareType.CIRCLE))
@ -170,6 +180,7 @@ class OCFileListFragmentStaticServerIT : AbstractIT() {
// } // }
OCFile("/sharedToUserRoom.jpg").apply { OCFile("/sharedToUserRoom.jpg").apply {
remoteId = "00000007"
parentId = sut.storageManager.getFileByEncryptedRemotePath("/").fileId parentId = sut.storageManager.getFileByEncryptedRemotePath("/").fileId
isSharedWithSharee = true isSharedWithSharee = true
sharees = listOf(ShareeUser("Conversation", "Admin", ShareType.ROOM)) sharees = listOf(ShareeUser("Conversation", "Admin", ShareType.ROOM))
@ -178,6 +189,7 @@ class OCFileListFragmentStaticServerIT : AbstractIT() {
} }
OCFile("/sharedToGroupRoom.jpg").apply { OCFile("/sharedToGroupRoom.jpg").apply {
remoteId = "00000008"
parentId = sut.storageManager.getFileByEncryptedRemotePath("/").fileId parentId = sut.storageManager.getFileByEncryptedRemotePath("/").fileId
isSharedWithSharee = true isSharedWithSharee = true
sharees = listOf(ShareeUser("Conversation", "Meeting", ShareType.ROOM)) sharees = listOf(ShareeUser("Conversation", "Meeting", ShareType.ROOM))
@ -186,6 +198,7 @@ class OCFileListFragmentStaticServerIT : AbstractIT() {
} }
OCFile("/sharedToUsers.jpg").apply { OCFile("/sharedToUsers.jpg").apply {
remoteId = "00000009"
parentId = sut.storageManager.getFileByEncryptedRemotePath("/").fileId parentId = sut.storageManager.getFileByEncryptedRemotePath("/").fileId
isSharedWithSharee = true isSharedWithSharee = true
sharees = listOf( sharees = listOf(
@ -198,6 +211,7 @@ class OCFileListFragmentStaticServerIT : AbstractIT() {
} }
OCFile("/notShared.jpg").apply { OCFile("/notShared.jpg").apply {
remoteId = "000000010"
parentId = sut.storageManager.getFileByEncryptedRemotePath("/").fileId parentId = sut.storageManager.getFileByEncryptedRemotePath("/").fileId
modificationTimestamp = 1000 modificationTimestamp = 1000
sut.storageManager.saveFile(this) sut.storageManager.saveFile(this)
@ -232,6 +246,7 @@ class OCFileListFragmentStaticServerIT : AbstractIT() {
val fragment = OCFileListFragment() val fragment = OCFileListFragment()
OCFile("/normal/").apply { OCFile("/normal/").apply {
remoteId = "00000001"
mimeType = MimeType.DIRECTORY mimeType = MimeType.DIRECTORY
modificationTimestamp = 1624003571000 modificationTimestamp = 1624003571000
parentId = sut.storageManager.getFileByEncryptedRemotePath("/").fileId parentId = sut.storageManager.getFileByEncryptedRemotePath("/").fileId
@ -239,6 +254,7 @@ class OCFileListFragmentStaticServerIT : AbstractIT() {
} }
OCFile("/sharedViaLink/").apply { OCFile("/sharedViaLink/").apply {
remoteId = "00000002"
mimeType = MimeType.DIRECTORY mimeType = MimeType.DIRECTORY
isSharedViaLink = true isSharedViaLink = true
modificationTimestamp = 1619003571000 modificationTimestamp = 1619003571000
@ -247,6 +263,7 @@ class OCFileListFragmentStaticServerIT : AbstractIT() {
} }
OCFile("/share/").apply { OCFile("/share/").apply {
remoteId = "00000003"
mimeType = MimeType.DIRECTORY mimeType = MimeType.DIRECTORY
isSharedWithSharee = true isSharedWithSharee = true
modificationTimestamp = 1619303571000 modificationTimestamp = 1619303571000
@ -255,6 +272,7 @@ class OCFileListFragmentStaticServerIT : AbstractIT() {
} }
OCFile("/groupFolder/").apply { OCFile("/groupFolder/").apply {
remoteId = "00000004"
mimeType = MimeType.DIRECTORY mimeType = MimeType.DIRECTORY
modificationTimestamp = 1615003571000 modificationTimestamp = 1615003571000
parentId = sut.storageManager.getFileByEncryptedRemotePath("/").fileId parentId = sut.storageManager.getFileByEncryptedRemotePath("/").fileId
@ -263,6 +281,7 @@ class OCFileListFragmentStaticServerIT : AbstractIT() {
} }
OCFile("/encrypted/").apply { OCFile("/encrypted/").apply {
remoteId = "00000005"
mimeType = MimeType.DIRECTORY mimeType = MimeType.DIRECTORY
isEncrypted = true isEncrypted = true
decryptedRemotePath = "/encrypted/" decryptedRemotePath = "/encrypted/"
@ -272,6 +291,7 @@ class OCFileListFragmentStaticServerIT : AbstractIT() {
} }
OCFile("/locked/").apply { OCFile("/locked/").apply {
remoteId = "00000006"
mimeType = MimeType.DIRECTORY mimeType = MimeType.DIRECTORY
isLocked = true isLocked = true
decryptedRemotePath = "/locked/" decryptedRemotePath = "/locked/"
@ -310,12 +330,15 @@ class OCFileListFragmentStaticServerIT : AbstractIT() {
folder.setFolder() folder.setFolder()
sut.storageManager.saveFile(folder) sut.storageManager.saveFile(folder)
val imageFile = OCFile("/test/image.png") val imageFile = OCFile("/test/image.png").apply {
imageFile.mimeType = "image/png" remoteId = "00000001"
imageFile.fileLength = 1024000 mimeType = "image/png"
imageFile.modificationTimestamp = 1188206955000 fileLength = 1024000
imageFile.parentId = sut.storageManager.getFileByEncryptedRemotePath("/test/").fileId modificationTimestamp = 1188206955000
imageFile.storagePath = getFile("java.md").absolutePath parentId = sut.storageManager.getFileByEncryptedRemotePath("/test/").fileId
storagePath = getFile("java.md").absolutePath
}
sut.storageManager.saveFile(imageFile) sut.storageManager.saveFile(imageFile)
sut.addFragment(fragment) sut.addFragment(fragment)
@ -334,8 +357,11 @@ class OCFileListFragmentStaticServerIT : AbstractIT() {
val activity = testActivityRule.launchActivity(null) val activity = testActivityRule.launchActivity(null)
val sut = OCFileListFragment() val sut = OCFileListFragment()
val folder = OCFile("/test/") val folder = OCFile("/test/").apply {
folder.setFolder() remoteId = "000001"
setFolder()
}
activity.storageManager.saveFile(folder) activity.storageManager.saveFile(folder)
activity.addFragment(sut) activity.addFragment(sut)
@ -357,7 +383,7 @@ class OCFileListFragmentStaticServerIT : AbstractIT() {
testFolder.richWorkspace = "1" testFolder.richWorkspace = "1"
activity.storageManager.saveFile(testFolder) activity.storageManager.saveFile(testFolder)
sut.adapter.setCurrentDirectory(testFolder) sut.adapter.currentDirectory = testFolder
Assert.assertTrue(sut.adapter.shouldShowHeader()) Assert.assertTrue(sut.adapter.shouldShowHeader())
} }
} }

View file

@ -1,64 +0,0 @@
/*
* Nextcloud - Android Client
*
* SPDX-FileCopyrightText: 2020 Tobias Kaminsky <tobias@kaminsky.me>
* SPDX-FileCopyrightText: 2020 Nextcloud GmbH
* SPDX-License-Identifier: AGPL-3.0-or-later OR GPL-2.0-only
*/
package com.owncloud.android.ui.preview;
import com.owncloud.android.AbstractIT;
import com.owncloud.android.datamodel.OCFile;
import com.owncloud.android.ui.activity.FileDisplayActivity;
import com.owncloud.android.utils.MimeTypeUtil;
import com.owncloud.android.utils.ScreenshotTest;
import org.junit.Rule;
import org.junit.Test;
import java.io.File;
import java.io.IOException;
import androidx.test.espresso.intent.rule.IntentsTestRule;
public class PreviewTextFileFragmentTest extends AbstractIT {
@Rule public IntentsTestRule<FileDisplayActivity> activityRule = new IntentsTestRule<>(FileDisplayActivity.class,
true,
false);
@Test
@ScreenshotTest
public void displaySimpleTextFile() throws IOException {
FileDisplayActivity sut = activityRule.launchActivity(null);
shortSleep();
File file = getDummyFile("nonEmpty.txt");
OCFile test = new OCFile("/text.md");
test.setMimeType(MimeTypeUtil.MIMETYPE_TEXT_MARKDOWN);
test.setStoragePath(file.getAbsolutePath());
sut.startTextPreview(test, false);
shortSleep();
screenshot(sut);
}
@Test
@ScreenshotTest
public void displayJavaSnippetFile() throws IOException {
FileDisplayActivity sut = activityRule.launchActivity(null);
shortSleep();
File file = getFile("java.md");
OCFile test = new OCFile("/java.md");
test.setMimeType(MimeTypeUtil.MIMETYPE_TEXT_MARKDOWN);
test.setStoragePath(file.getAbsolutePath());
sut.startTextPreview(test, false);
shortSleep();
screenshot(sut);
}
}

View file

@ -0,0 +1,89 @@
/*
* Nextcloud - Android Client
*
* SPDX-FileCopyrightText: 2024 Alper Ozturk <alper.ozturk@nextcloud.com>
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
package com.owncloud.android.ui.preview
import androidx.annotation.UiThread
import androidx.test.core.app.launchActivity
import androidx.test.espresso.Espresso.onView
import androidx.test.espresso.IdlingRegistry
import androidx.test.espresso.assertion.ViewAssertions.matches
import androidx.test.espresso.matcher.ViewMatchers.isDisplayed
import androidx.test.espresso.matcher.ViewMatchers.isRoot
import com.owncloud.android.AbstractIT
import com.owncloud.android.datamodel.OCFile
import com.owncloud.android.ui.activity.FileDisplayActivity
import com.owncloud.android.utils.EspressoIdlingResource
import com.owncloud.android.utils.MimeTypeUtil
import com.owncloud.android.utils.ScreenshotTest
import org.junit.After
import org.junit.Before
import org.junit.Test
import java.io.IOException
class PreviewTextFileFragmentTest : AbstractIT() {
private val testClassName = "com.owncloud.android.ui.preview.PreviewTextFileFragmentTest"
@Before
fun registerIdlingResource() {
IdlingRegistry.getInstance().register(EspressoIdlingResource.countingIdlingResource)
}
@After
fun unregisterIdlingResource() {
IdlingRegistry.getInstance().unregister(EspressoIdlingResource.countingIdlingResource)
}
@Test
@ScreenshotTest
@UiThread
@Throws(IOException::class)
fun displaySimpleTextFile() {
launchActivity<FileDisplayActivity>().use { scenario ->
scenario.onActivity { sut ->
val test = OCFile("/text.md").apply {
mimeType = MimeTypeUtil.MIMETYPE_TEXT_MARKDOWN
storagePath = getDummyFile("nonEmpty.txt").absolutePath
}
onIdleSync {
EspressoIdlingResource.increment()
sut.startTextPreview(test, true)
EspressoIdlingResource.decrement()
val screenShotName = createName(testClassName + "_" + "displaySimpleTextFile", "")
onView(isRoot()).check(matches(isDisplayed()))
screenshotViaName(sut, screenShotName)
}
}
}
}
@Test
@ScreenshotTest
@UiThread
@Throws(IOException::class)
fun displayJavaSnippetFile() {
launchActivity<FileDisplayActivity>().use { scenario ->
scenario.onActivity { sut ->
val test = OCFile("/java.md").apply {
mimeType = MimeTypeUtil.MIMETYPE_TEXT_MARKDOWN
storagePath = getFile("java.md").absolutePath
}
onIdleSync {
EspressoIdlingResource.increment()
sut.startTextPreview(test, true)
EspressoIdlingResource.decrement()
val screenShotName = createName(testClassName + "_" + "displayJavaSnippetFile", "")
onView(isRoot()).check(matches(isDisplayed()))
screenshotViaName(sut, screenShotName)
}
}
}
}
}

View file

@ -26,6 +26,7 @@ import com.nextcloud.client.jobs.transfer.TransferManager
import com.owncloud.android.R import com.owncloud.android.R
import com.owncloud.android.datamodel.OCFile import com.owncloud.android.datamodel.OCFile
import com.owncloud.android.db.OCUpload import com.owncloud.android.db.OCUpload
import java.util.Locale
class EtmFileTransferFragment : EtmBaseFragment() { class EtmFileTransferFragment : EtmBaseFragment() {
@ -96,7 +97,7 @@ class EtmFileTransferFragment : EtmBaseFragment() {
vh.state.text = transfer.state.toString() vh.state.text = transfer.state.toString()
if (transfer.progress >= 0) { if (transfer.progress >= 0) {
vh.progressEnabled = true vh.progressEnabled = true
vh.progress.text = transfer.progress.toString() vh.progress.text = String.format(Locale.getDefault(), "%d", transfer.progress)
} else { } else {
vh.progressEnabled = false vh.progressEnabled = false
} }

View file

@ -90,28 +90,23 @@ class ConnectivityServiceImpl implements ConnectivityService {
if (cachedValue != null) { if (cachedValue != null) {
return cachedValue; return cachedValue;
} else { } else {
Server server = accountManager.getUser().getServer();
String baseServerAddress = server.getUri().toString();
boolean result; boolean result;
Connectivity c = getConnectivity(); Connectivity c = getConnectivity();
if (c.isConnected() && c.isWifi() && !c.isMetered()) { if (c.isConnected() && c.isWifi() && !c.isMetered() && !baseServerAddress.isEmpty()) {
GetMethod get = requestBuilder.invoke(baseServerAddress + CONNECTIVITY_CHECK_ROUTE);
PlainClient client = clientFactory.createPlainClient();
Server server = accountManager.getUser().getServer(); int status = get.execute(client);
String baseServerAddress = server.getUri().toString();
if (baseServerAddress.isEmpty()) {
result = true;
} else {
GetMethod get = requestBuilder.invoke(baseServerAddress + CONNECTIVITY_CHECK_ROUTE); // Content-Length is not available when using chunked transfer encoding, so check for -1 as well
PlainClient client = clientFactory.createPlainClient(); result = !(status == HttpStatus.SC_NO_CONTENT && get.getResponseContentLength() <= 0);
get.releaseConnection();
int status = get.execute(client); if (result) {
Log_OC.w(TAG, "isInternetWalled(): Failed to GET " + CONNECTIVITY_CHECK_ROUTE + "," +
// Content-Length is not available when using chunked transfer encoding, so check for -1 as well " assuming connectivity is impaired");
result = !(status == HttpStatus.SC_NO_CONTENT && get.getResponseContentLength() <= 0);
get.releaseConnection();
if (result) {
Log_OC.w(TAG, "isInternetWalled(): Failed to GET " + CONNECTIVITY_CHECK_ROUTE + "," +
" assuming connectivity is impaired");
}
} }
} else { } else {
result = !c.isConnected(); result = !c.isConnected();

View file

@ -777,7 +777,7 @@ public class OCFile implements Parcelable, Comparable<OCFile>, ServerFileInterfa
} }
public boolean isRootDirectory() { public boolean isRootDirectory() {
return decryptedRemotePath.equals(ROOT_PATH); return ROOT_PATH.equals(decryptedRemotePath);
} }
public boolean isOfflineOperation() { public boolean isOfflineOperation() {

View file

@ -109,8 +109,6 @@ public class UploadFilesActivity extends DrawerActivity implements LocalFileList
private UploadFilesLayoutBinding binding; private UploadFilesLayoutBinding binding;
private boolean isWithinEncryptedFolder = false; private boolean isWithinEncryptedFolder = false;
@VisibleForTesting
public LocalFileListFragment getFileListFragment() { public LocalFileListFragment getFileListFragment() {
return mFileListFragment; return mFileListFragment;
} }

View file

@ -151,21 +151,21 @@ class ConflictsResolveDialog : DialogFragment(), Injectable {
.setNegativeButton(R.string.common_cancel) { _: DialogInterface?, _: Int -> .setNegativeButton(R.string.common_cancel) { _: DialogInterface?, _: Int ->
listener?.conflictDecisionMade(Decision.CANCEL) listener?.conflictDecisionMade(Decision.CANCEL)
} }
.setTitle(data?.folderName) .setTitle(data?.dialogTitle)
} }
private fun okButtonClick() { private fun okButtonClick() {
binding.run { binding.run {
val isFolderNameNotExists = (data?.folderName == null) val isDialogTitleNotExists = (data?.dialogTitle == null)
val decision = when { val decision = when {
leftCheckbox.isChecked && rightCheckbox.isChecked -> leftCheckbox.isChecked && rightCheckbox.isChecked ->
if (isFolderNameNotExists) Decision.KEEP_BOTH_FOLDER else Decision.KEEP_BOTH if (isDialogTitleNotExists) Decision.KEEP_BOTH_FOLDER else Decision.KEEP_BOTH
leftCheckbox.isChecked -> leftCheckbox.isChecked ->
if (isFolderNameNotExists) Decision.KEEP_OFFLINE_FOLDER else Decision.KEEP_LOCAL if (isDialogTitleNotExists) Decision.KEEP_OFFLINE_FOLDER else Decision.KEEP_LOCAL
rightCheckbox.isChecked -> rightCheckbox.isChecked ->
if (isFolderNameNotExists) Decision.KEEP_SERVER_FOLDER else Decision.KEEP_SERVER if (isDialogTitleNotExists) Decision.KEEP_SERVER_FOLDER else Decision.KEEP_SERVER
else -> null else -> null
} }
@ -179,19 +179,12 @@ class ConflictsResolveDialog : DialogFragment(), Injectable {
data?.let { data?.let {
val (leftData, rightData) = it.checkboxData val (leftData, rightData) = it.checkboxData
folderName.visibility = if (it.folderName == null) { headline.visibility = if (it.headline == null) {
View.GONE View.GONE
} else { } else {
View.VISIBLE View.VISIBLE
} }
folderName.text = it.folderName headline.text = it.headline
title.visibility = if (it.title == null) {
View.GONE
} else {
View.VISIBLE
}
title.text = it.title
description.text = it.description description.text = it.description
@ -340,8 +333,6 @@ class ConflictsResolveDialog : DialogFragment(), Injectable {
rightFile: OCFile, rightFile: OCFile,
context: Context context: Context
): ConflictDialogData { ): ConflictDialogData {
val folderName = null
val leftTitle = context.getString(R.string.prefs_synced_folders_local_path_title) val leftTitle = context.getString(R.string.prefs_synced_folders_local_path_title)
val leftTimestamp = val leftTimestamp =
DisplayUtils.getRelativeTimestamp(context, offlineOperation.createdAt?.times(1000L) ?: 0) DisplayUtils.getRelativeTimestamp(context, offlineOperation.createdAt?.times(1000L) ?: 0)
@ -355,21 +346,17 @@ class ConflictsResolveDialog : DialogFragment(), Injectable {
val title = context.getString(R.string.conflict_folder_headline) val title = context.getString(R.string.conflict_folder_headline)
val description = context.getString(R.string.conflict_message_description_for_folder) val description = context.getString(R.string.conflict_message_description_for_folder)
return ConflictDialogData(folderName, title, description, Pair(leftCheckBoxData, rightCheckBoxData)) return ConflictDialogData(null, title, description, Pair(leftCheckBoxData, rightCheckBoxData))
} }
@JvmStatic @JvmStatic
private fun getFileConflictData(file: File, rightFile: OCFile, context: Context): ConflictDialogData { private fun getFileConflictData(leftFile: File, rightFile: OCFile, context: Context): ConflictDialogData {
val parentFile = File(rightFile.remotePath).parentFile // TODO Path needs to be set it correctly for encrypted folders
val folderName = if (parentFile != null) { val title = rightFile.decryptedRemotePath
String.format(context.getString(R.string.in_folder), parentFile.absolutePath)
} else {
null
}
val leftTitle = context.getString(R.string.conflict_local_file) val leftTitle = context.getString(R.string.conflict_local_file)
val leftTimestamp = DisplayUtils.getRelativeTimestamp(context, file.lastModified()) val leftTimestamp = DisplayUtils.getRelativeTimestamp(context, leftFile.lastModified())
val leftFileSize = DisplayUtils.bytesToHumanReadable(file.length()) val leftFileSize = DisplayUtils.bytesToHumanReadable(leftFile.length())
val leftCheckBoxData = ConflictFileData(leftTitle, leftTimestamp.toString(), leftFileSize) val leftCheckBoxData = ConflictFileData(leftTitle, leftTimestamp.toString(), leftFileSize)
val rightTitle = context.getString(R.string.conflict_server_file) val rightTitle = context.getString(R.string.conflict_server_file)
@ -377,9 +364,9 @@ class ConflictsResolveDialog : DialogFragment(), Injectable {
val rightFileSize = DisplayUtils.bytesToHumanReadable(rightFile.fileLength) val rightFileSize = DisplayUtils.bytesToHumanReadable(rightFile.fileLength)
val rightCheckBoxData = ConflictFileData(rightTitle, rightTimestamp.toString(), rightFileSize) val rightCheckBoxData = ConflictFileData(rightTitle, rightTimestamp.toString(), rightFileSize)
val title = context.getString(R.string.choose_which_file) val headline = context.getString(R.string.choose_which_file)
val description = context.getString(R.string.conflict_message_description) val description = context.getString(R.string.conflict_message_description)
return ConflictDialogData(folderName, title, description, Pair(leftCheckBoxData, rightCheckBoxData)) return ConflictDialogData(title, headline, description, Pair(leftCheckBoxData, rightCheckBoxData))
} }
} }
} }

View file

@ -12,8 +12,8 @@ import android.os.Parcelable
import com.nextcloud.utils.extensions.readParcelableCompat import com.nextcloud.utils.extensions.readParcelableCompat
data class ConflictDialogData( data class ConflictDialogData(
val folderName: String?, val dialogTitle: String?,
val title: String?, val headline: String?,
val description: String, val description: String,
val checkboxData: Pair<ConflictFileData, ConflictFileData> val checkboxData: Pair<ConflictFileData, ConflictFileData>
) : Parcelable { ) : Parcelable {
@ -28,8 +28,8 @@ data class ConflictDialogData(
) )
override fun writeToParcel(parcel: Parcel, flags: Int) { override fun writeToParcel(parcel: Parcel, flags: Int) {
parcel.writeString(folderName) parcel.writeString(dialogTitle)
parcel.writeString(title) parcel.writeString(headline)
parcel.writeString(description) parcel.writeString(description)
parcel.writeParcelable(checkboxData.first, flags) parcel.writeParcelable(checkboxData.first, flags)
parcel.writeParcelable(checkboxData.second, flags) parcel.writeParcelable(checkboxData.second, flags)

View file

@ -212,6 +212,8 @@ public class OCFileListBottomSheetDialog extends BottomSheetDialog implements In
} }
private void filterActionsForOfflineOperations() { private void filterActionsForOfflineOperations() {
if (file == null) return;
if (!file.isOfflineOperation() || file.isRootDirectory()) { if (!file.isOfflineOperation() || file.isRootDirectory()) {
return; return;
} }

View file

@ -17,14 +17,7 @@
android:paddingBottom="@dimen/standard_padding"> android:paddingBottom="@dimen/standard_padding">
<TextView <TextView
android:id="@+id/folder_name" android:id="@+id/headline"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/in_folder"
android:paddingBottom="@dimen/standard_padding" />
<TextView
android:id="@+id/title"
android:layout_marginTop="@dimen/standard_margin" android:layout_marginTop="@dimen/standard_margin"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"

View file

@ -485,7 +485,6 @@
<string name="image_preview_unit_megapixel">%s ميغا بكسل</string> <string name="image_preview_unit_megapixel">%s ميغا بكسل</string>
<string name="image_preview_unit_millimetres">%s مللي</string> <string name="image_preview_unit_millimetres">%s مللي</string>
<string name="image_preview_unit_seconds">%s ثانية</string> <string name="image_preview_unit_seconds">%s ثانية</string>
<string name="in_folder">في مجلد %1$s</string>
<string name="instant_upload_existing">ارفع الملفات الموجودة مسبقاً أيضاً</string> <string name="instant_upload_existing">ارفع الملفات الموجودة مسبقاً أيضاً</string>
<string name="instant_upload_on_charging">ارفع وقت الشحن فقط</string> <string name="instant_upload_on_charging">ارفع وقت الشحن فقط</string>
<string name="instant_upload_path">/InstantUpload</string> <string name="instant_upload_path">/InstantUpload</string>

View file

@ -297,7 +297,6 @@
<string name="image_preview_unit_megapixel">%s MP</string> <string name="image_preview_unit_megapixel">%s MP</string>
<string name="image_preview_unit_millimetres">%s mm</string> <string name="image_preview_unit_millimetres">%s mm</string>
<string name="image_preview_unit_seconds">%s s</string> <string name="image_preview_unit_seconds">%s s</string>
<string name="in_folder">na carpeta %1$s</string>
<string name="instant_upload_on_charging">Namái xubir al cargar</string> <string name="instant_upload_on_charging">Namái xubir al cargar</string>
<string name="instant_upload_path">/XubidaNelIntre</string> <string name="instant_upload_path">/XubidaNelIntre</string>
<string name="invalid_url">La URL ye inválisa</string> <string name="invalid_url">La URL ye inválisa</string>

View file

@ -485,7 +485,6 @@
<string name="image_preview_unit_megapixel">%s MP</string> <string name="image_preview_unit_megapixel">%s MP</string>
<string name="image_preview_unit_millimetres">%s mm</string> <string name="image_preview_unit_millimetres">%s mm</string>
<string name="image_preview_unit_seconds">%s s</string> <string name="image_preview_unit_seconds">%s s</string>
<string name="in_folder">in folder %1$s</string>
<string name="instant_upload_existing">Also upload existing files</string> <string name="instant_upload_existing">Also upload existing files</string>
<string name="instant_upload_on_charging">Only upload when charging</string> <string name="instant_upload_on_charging">Only upload when charging</string>
<string name="instant_upload_path">/InstantUpload</string> <string name="instant_upload_path">/InstantUpload</string>

View file

@ -405,7 +405,6 @@
<string name="icon_for_empty_list">Икона за празен списък</string> <string name="icon_for_empty_list">Икона за празен списък</string>
<string name="icon_of_dashboard_widget">Икона на изпълним модул на табло за управление</string> <string name="icon_of_dashboard_widget">Икона на изпълним модул на табло за управление</string>
<string name="icon_of_widget_entry">Икона на вход на изпълним модул</string> <string name="icon_of_widget_entry">Икона на вход на изпълним модул</string>
<string name="in_folder">в папка %1$s</string>
<string name="instant_upload_existing">Качете и съществуващи файлове</string> <string name="instant_upload_existing">Качете и съществуващи файлове</string>
<string name="instant_upload_on_charging">Качване само при зареждане</string> <string name="instant_upload_on_charging">Качване само при зареждане</string>
<string name="instant_upload_path">/InstantUpload</string> <string name="instant_upload_path">/InstantUpload</string>

View file

@ -398,7 +398,6 @@
<string name="icon_for_empty_list">Icona per a la llista buida</string> <string name="icon_for_empty_list">Icona per a la llista buida</string>
<string name="icon_of_dashboard_widget">Icona del giny del tauler</string> <string name="icon_of_dashboard_widget">Icona del giny del tauler</string>
<string name="icon_of_widget_entry">Icona de l\'entrada del giny</string> <string name="icon_of_widget_entry">Icona de l\'entrada del giny</string>
<string name="in_folder">en la carpeta %1$s</string>
<string name="instant_upload_existing">També pujar fitxers existents</string> <string name="instant_upload_existing">També pujar fitxers existents</string>
<string name="instant_upload_on_charging">Pujada només durant la càrrega de bateria</string> <string name="instant_upload_on_charging">Pujada només durant la càrrega de bateria</string>
<string name="instant_upload_path">/CàrregaInstantània</string> <string name="instant_upload_path">/CàrregaInstantània</string>

View file

@ -449,7 +449,6 @@
<string name="image_preview_unit_megapixel">%s MP</string> <string name="image_preview_unit_megapixel">%s MP</string>
<string name="image_preview_unit_millimetres">%s mm</string> <string name="image_preview_unit_millimetres">%s mm</string>
<string name="image_preview_unit_seconds">%s s</string> <string name="image_preview_unit_seconds">%s s</string>
<string name="in_folder">ve složce %1$s</string>
<string name="instant_upload_existing">Také nahrát už existující soubory</string> <string name="instant_upload_existing">Také nahrát už existující soubory</string>
<string name="instant_upload_on_charging">Nahrávat pouze při nabíjení</string> <string name="instant_upload_on_charging">Nahrávat pouze při nabíjení</string>
<string name="instant_upload_path">/InstantUpload</string> <string name="instant_upload_path">/InstantUpload</string>

View file

@ -439,7 +439,6 @@
<string name="image_preview_unit_megapixel">%s MP</string> <string name="image_preview_unit_megapixel">%s MP</string>
<string name="image_preview_unit_millimetres">%s mm</string> <string name="image_preview_unit_millimetres">%s mm</string>
<string name="image_preview_unit_seconds">%s s</string> <string name="image_preview_unit_seconds">%s s</string>
<string name="in_folder">i mappen %1$s</string>
<string name="instant_upload_existing">Send også eksisterende filer</string> <string name="instant_upload_existing">Send også eksisterende filer</string>
<string name="instant_upload_on_charging">Upload kun under opladning</string> <string name="instant_upload_on_charging">Upload kun under opladning</string>
<string name="instant_upload_path">/Øjeblikkelig upload</string> <string name="instant_upload_path">/Øjeblikkelig upload</string>

View file

@ -485,7 +485,6 @@
<string name="image_preview_unit_megapixel">%s MP</string> <string name="image_preview_unit_megapixel">%s MP</string>
<string name="image_preview_unit_millimetres">%s mm</string> <string name="image_preview_unit_millimetres">%s mm</string>
<string name="image_preview_unit_seconds">%s s</string> <string name="image_preview_unit_seconds">%s s</string>
<string name="in_folder">in Ordner %1$s</string>
<string name="instant_upload_existing">Vorhandene Dateien ebenfalls hochladen</string> <string name="instant_upload_existing">Vorhandene Dateien ebenfalls hochladen</string>
<string name="instant_upload_on_charging">Nur während des Ladens der Batterie hochladen</string> <string name="instant_upload_on_charging">Nur während des Ladens der Batterie hochladen</string>
<string name="instant_upload_path">/SofortUpload</string> <string name="instant_upload_path">/SofortUpload</string>

View file

@ -411,7 +411,6 @@
<string name="icon_of_widget_entry">Εικονίδιο κενού γραφικού στοιχείου</string> <string name="icon_of_widget_entry">Εικονίδιο κενού γραφικού στοιχείου</string>
<string name="image_editor_flip_horizontal">Οριζόντια περιστροφή</string> <string name="image_editor_flip_horizontal">Οριζόντια περιστροφή</string>
<string name="image_editor_flip_vertical">Κάθετη περιστροφή</string> <string name="image_editor_flip_vertical">Κάθετη περιστροφή</string>
<string name="in_folder">Στον φάκελο %1$s</string>
<string name="instant_upload_existing">Μεταφόρτωση, επίσης, υπαρχόντων αρχείων</string> <string name="instant_upload_existing">Μεταφόρτωση, επίσης, υπαρχόντων αρχείων</string>
<string name="instant_upload_on_charging">Μεταφόρτωση μόνο κατά τη διάρκεια φόρτισης</string> <string name="instant_upload_on_charging">Μεταφόρτωση μόνο κατά τη διάρκεια φόρτισης</string>
<string name="instant_upload_path">/InstantUpload</string> <string name="instant_upload_path">/InstantUpload</string>

View file

@ -469,7 +469,6 @@
<string name="image_preview_unit_megapixel">%s MP</string> <string name="image_preview_unit_megapixel">%s MP</string>
<string name="image_preview_unit_millimetres">%s mm</string> <string name="image_preview_unit_millimetres">%s mm</string>
<string name="image_preview_unit_seconds">%s s</string> <string name="image_preview_unit_seconds">%s s</string>
<string name="in_folder">en la carpeta %1$s</string>
<string name="instant_upload_existing">Cargue también archivos existentes</string> <string name="instant_upload_existing">Cargue también archivos existentes</string>
<string name="instant_upload_on_charging">Cargar archivos sólo con el dispositivo conectado a la toma de corriente</string> <string name="instant_upload_on_charging">Cargar archivos sólo con el dispositivo conectado a la toma de corriente</string>
<string name="instant_upload_path">/SubidasInstantáneas</string> <string name="instant_upload_path">/SubidasInstantáneas</string>

View file

@ -412,7 +412,6 @@
<string name="image_editor_rotate_ccw">Girar en sentido antihorario</string> <string name="image_editor_rotate_ccw">Girar en sentido antihorario</string>
<string name="image_editor_rotate_cw">Girar en sentido horario</string> <string name="image_editor_rotate_cw">Girar en sentido horario</string>
<string name="image_editor_unable_to_edit_image">No se puede editar la imagen.</string> <string name="image_editor_unable_to_edit_image">No se puede editar la imagen.</string>
<string name="in_folder">en la carpeta %1$s</string>
<string name="instant_upload_existing">También cargar archivos existentes</string> <string name="instant_upload_existing">También cargar archivos existentes</string>
<string name="instant_upload_on_charging">Cargar archivos sólo con el dispositivo conectado a la toma de corriente</string> <string name="instant_upload_on_charging">Cargar archivos sólo con el dispositivo conectado a la toma de corriente</string>
<string name="instant_upload_path">/Cargas Automáticas</string> <string name="instant_upload_path">/Cargas Automáticas</string>

View file

@ -469,7 +469,6 @@
<string name="image_preview_unit_megapixel">%s MP</string> <string name="image_preview_unit_megapixel">%s MP</string>
<string name="image_preview_unit_millimetres">%s mm</string> <string name="image_preview_unit_millimetres">%s mm</string>
<string name="image_preview_unit_seconds">%s s</string> <string name="image_preview_unit_seconds">%s s</string>
<string name="in_folder">en la carpeta %1$s</string>
<string name="instant_upload_existing">Cargar también archivos existentes</string> <string name="instant_upload_existing">Cargar también archivos existentes</string>
<string name="instant_upload_on_charging">Cargar archivos sólo con el dispositivo conectado a la toma de corriente</string> <string name="instant_upload_on_charging">Cargar archivos sólo con el dispositivo conectado a la toma de corriente</string>
<string name="instant_upload_path">/Cargas Automáticas</string> <string name="instant_upload_path">/Cargas Automáticas</string>

View file

@ -466,7 +466,6 @@
<string name="image_preview_unit_megapixel">%s MP</string> <string name="image_preview_unit_megapixel">%s MP</string>
<string name="image_preview_unit_millimetres">%s mm</string> <string name="image_preview_unit_millimetres">%s mm</string>
<string name="image_preview_unit_seconds">%s s</string> <string name="image_preview_unit_seconds">%s s</string>
<string name="in_folder">en carpeta %1$s</string>
<string name="instant_upload_existing">Subir también archivos existentes</string> <string name="instant_upload_existing">Subir también archivos existentes</string>
<string name="instant_upload_on_charging">Subir solo al cargar batería</string> <string name="instant_upload_on_charging">Subir solo al cargar batería</string>
<string name="instant_upload_path">/SubidaInstantánea</string> <string name="instant_upload_path">/SubidaInstantánea</string>

View file

@ -485,7 +485,6 @@
<string name="image_preview_unit_megapixel">%s MP</string> <string name="image_preview_unit_megapixel">%s MP</string>
<string name="image_preview_unit_millimetres">%s mm</string> <string name="image_preview_unit_millimetres">%s mm</string>
<string name="image_preview_unit_seconds">%s s</string> <string name="image_preview_unit_seconds">%s s</string>
<string name="in_folder">%1$skarpetan</string>
<string name="instant_upload_existing">Existitzen diren fitxategiak ere igo</string> <string name="instant_upload_existing">Existitzen diren fitxategiak ere igo</string>
<string name="instant_upload_on_charging">Igo bakarrik gailua kargatzean</string> <string name="instant_upload_on_charging">Igo bakarrik gailua kargatzean</string>
<string name="instant_upload_path">/InstantUpload</string> <string name="instant_upload_path">/InstantUpload</string>

View file

@ -442,7 +442,6 @@
<string name="image_preview_unit_megapixel">%s مگاپیکسل</string> <string name="image_preview_unit_megapixel">%s مگاپیکسل</string>
<string name="image_preview_unit_millimetres">%s میلی‌متر</string> <string name="image_preview_unit_millimetres">%s میلی‌متر</string>
<string name="image_preview_unit_seconds">%s ثانیه</string> <string name="image_preview_unit_seconds">%s ثانیه</string>
<string name="in_folder">در پوشه %1$s</string>
<string name="instant_upload_existing">فایل های موجود را نیز بارگذاری کنید</string> <string name="instant_upload_existing">فایل های موجود را نیز بارگذاری کنید</string>
<string name="instant_upload_on_charging">فقط هنگامی که گوشی شارژ می شود آپلود کنید</string> <string name="instant_upload_on_charging">فقط هنگامی که گوشی شارژ می شود آپلود کنید</string>
<string name="instant_upload_path">آپلود فوری</string> <string name="instant_upload_path">آپلود فوری</string>

View file

@ -415,7 +415,6 @@
<string name="image_preview_unit_megapixel">%s MP</string> <string name="image_preview_unit_megapixel">%s MP</string>
<string name="image_preview_unit_millimetres">%s mm</string> <string name="image_preview_unit_millimetres">%s mm</string>
<string name="image_preview_unit_seconds">%s s</string> <string name="image_preview_unit_seconds">%s s</string>
<string name="in_folder">kansiossa %1$s</string>
<string name="instant_upload_existing">Siirrä myös olemassaolevat tiedostot palvelimelle</string> <string name="instant_upload_existing">Siirrä myös olemassaolevat tiedostot palvelimelle</string>
<string name="instant_upload_on_charging">Lähetä vain ladattaessa virtaa</string> <string name="instant_upload_on_charging">Lähetä vain ladattaessa virtaa</string>
<string name="instant_upload_path">/InstantUpload</string> <string name="instant_upload_path">/InstantUpload</string>

View file

@ -482,7 +482,6 @@
<string name="image_preview_unit_megapixel">%s MP</string> <string name="image_preview_unit_megapixel">%s MP</string>
<string name="image_preview_unit_millimetres">%s mm</string> <string name="image_preview_unit_millimetres">%s mm</string>
<string name="image_preview_unit_seconds">%s s</string> <string name="image_preview_unit_seconds">%s s</string>
<string name="in_folder">dans le dossier %1$s</string>
<string name="instant_upload_existing">Téléverser aussi les fichiers existants</string> <string name="instant_upload_existing">Téléverser aussi les fichiers existants</string>
<string name="instant_upload_on_charging">Téléverser uniquement lors de la recharge</string> <string name="instant_upload_on_charging">Téléverser uniquement lors de la recharge</string>
<string name="instant_upload_path">/InstantUpload</string> <string name="instant_upload_path">/InstantUpload</string>

View file

@ -485,7 +485,6 @@
<string name="image_preview_unit_megapixel">%s MP</string> <string name="image_preview_unit_megapixel">%s MP</string>
<string name="image_preview_unit_millimetres">%s mm</string> <string name="image_preview_unit_millimetres">%s mm</string>
<string name="image_preview_unit_seconds">%s s</string> <string name="image_preview_unit_seconds">%s s</string>
<string name="in_folder">i bhfillteán %1$s</string>
<string name="instant_upload_existing">Uaslódáil comhaid atá ann cheana féin freisin</string> <string name="instant_upload_existing">Uaslódáil comhaid atá ann cheana féin freisin</string>
<string name="instant_upload_on_charging">Íoslódáil ach amháin nuair a mhuirearú</string> <string name="instant_upload_on_charging">Íoslódáil ach amháin nuair a mhuirearú</string>
<string name="instant_upload_path">/Uaslódáil Meandaracha</string> <string name="instant_upload_path">/Uaslódáil Meandaracha</string>

View file

@ -344,7 +344,6 @@
<string name="hint_password">Facal-faire</string> <string name="hint_password">Facal-faire</string>
<string name="host_not_available">Chan eil am frithealaiche ri làimh</string> <string name="host_not_available">Chan eil am frithealaiche ri làimh</string>
<string name="host_your_own_server">Òstaich am frithealaiche agad fhèin</string> <string name="host_your_own_server">Òstaich am frithealaiche agad fhèin</string>
<string name="in_folder">sa phasgan %1$s</string>
<string name="instant_upload_existing">Luchdaich suas na faidhlichean a tha ann mu thràth cuideachd</string> <string name="instant_upload_existing">Luchdaich suas na faidhlichean a tha ann mu thràth cuideachd</string>
<string name="instant_upload_on_charging">Na luchdaich suas ach nuair a bhios an t-uidheam ga theàirrdseadh</string> <string name="instant_upload_on_charging">Na luchdaich suas ach nuair a bhios an t-uidheam ga theàirrdseadh</string>
<string name="instant_upload_path">/InstantUpload</string> <string name="instant_upload_path">/InstantUpload</string>

View file

@ -485,7 +485,6 @@
<string name="image_preview_unit_megapixel">%s MP</string> <string name="image_preview_unit_megapixel">%s MP</string>
<string name="image_preview_unit_millimetres">%s mm</string> <string name="image_preview_unit_millimetres">%s mm</string>
<string name="image_preview_unit_seconds">%s s</string> <string name="image_preview_unit_seconds">%s s</string>
<string name="in_folder">no cartafol %1$s</string>
<string name="instant_upload_existing">Envíar tamén os ficheiros existentes</string> <string name="instant_upload_existing">Envíar tamén os ficheiros existentes</string>
<string name="instant_upload_on_charging">Enviar só cando estea cargando</string> <string name="instant_upload_on_charging">Enviar só cando estea cargando</string>
<string name="instant_upload_path">/EnvíoInstantáneo</string> <string name="instant_upload_path">/EnvíoInstantáneo</string>

View file

@ -382,7 +382,6 @@
<string name="hint_password">Zaporka</string> <string name="hint_password">Zaporka</string>
<string name="host_not_available">Poslužitelj nije dostupan</string> <string name="host_not_available">Poslužitelj nije dostupan</string>
<string name="host_your_own_server">Postavi vlastiti poslužitelj</string> <string name="host_your_own_server">Postavi vlastiti poslužitelj</string>
<string name="in_folder">u mapi %1$s</string>
<string name="instant_upload_existing">Također otpremi postojeće datoteke</string> <string name="instant_upload_existing">Također otpremi postojeće datoteke</string>
<string name="instant_upload_on_charging">Otpremanje samo tijekom punjenja</string> <string name="instant_upload_on_charging">Otpremanje samo tijekom punjenja</string>
<string name="instant_upload_path">/InstantUpload</string> <string name="instant_upload_path">/InstantUpload</string>

View file

@ -429,7 +429,6 @@
<string name="image_preview_unit_megapixel">%s MP</string> <string name="image_preview_unit_megapixel">%s MP</string>
<string name="image_preview_unit_millimetres">%s mm</string> <string name="image_preview_unit_millimetres">%s mm</string>
<string name="image_preview_unit_seconds">%s s</string> <string name="image_preview_unit_seconds">%s s</string>
<string name="in_folder">%1$s mappában</string>
<string name="instant_upload_existing">A meglévő fájlokat is töltse fel</string> <string name="instant_upload_existing">A meglévő fájlokat is töltse fel</string>
<string name="instant_upload_on_charging">Feltöltés csak töltés közben</string> <string name="instant_upload_on_charging">Feltöltés csak töltés közben</string>
<string name="instant_upload_path">/InstantUpload</string> <string name="instant_upload_path">/InstantUpload</string>

View file

@ -430,7 +430,6 @@ Otomatis unggah hanya bekerja dengan baik apabila Anda mengeluarkan aplikasi ini
<string name="image_editor_unable_to_edit_image">Tidak dapat mengedit gambar.</string> <string name="image_editor_unable_to_edit_image">Tidak dapat mengedit gambar.</string>
<string name="image_preview_filedetails">Detail berkas</string> <string name="image_preview_filedetails">Detail berkas</string>
<string name="image_preview_image_taking_conditions">Kondisi pengambilan gambar</string> <string name="image_preview_image_taking_conditions">Kondisi pengambilan gambar</string>
<string name="in_folder">di folder %1$s</string>
<string name="instant_upload_existing">Juga unggah berkas yang ada</string> <string name="instant_upload_existing">Juga unggah berkas yang ada</string>
<string name="instant_upload_on_charging">Hanya unggah ketika dicas</string> <string name="instant_upload_on_charging">Hanya unggah ketika dicas</string>
<string name="instant_upload_path">/UnggahInstan</string> <string name="instant_upload_path">/UnggahInstan</string>

View file

@ -415,7 +415,6 @@
<string name="image_preview_unit_megapixel">%s MP</string> <string name="image_preview_unit_megapixel">%s MP</string>
<string name="image_preview_unit_millimetres">%s mm</string> <string name="image_preview_unit_millimetres">%s mm</string>
<string name="image_preview_unit_seconds">%s s</string> <string name="image_preview_unit_seconds">%s s</string>
<string name="in_folder">í möppunni %1$s</string>
<string name="instant_upload_existing">Senda líka inn fyrirliggjandi skrár</string> <string name="instant_upload_existing">Senda líka inn fyrirliggjandi skrár</string>
<string name="instant_upload_on_charging">Einungis senda inn þegar verið er að hlaða</string> <string name="instant_upload_on_charging">Einungis senda inn þegar verið er að hlaða</string>
<string name="instant_upload_path">/BeinInnsending</string> <string name="instant_upload_path">/BeinInnsending</string>

View file

@ -447,7 +447,6 @@
<string name="image_preview_unit_megapixel">%s MP</string> <string name="image_preview_unit_megapixel">%s MP</string>
<string name="image_preview_unit_millimetres">%s mm</string> <string name="image_preview_unit_millimetres">%s mm</string>
<string name="image_preview_unit_seconds">%s s</string> <string name="image_preview_unit_seconds">%s s</string>
<string name="in_folder">nella cartella %1$s</string>
<string name="instant_upload_existing">Carica anche i file esistenti</string> <string name="instant_upload_existing">Carica anche i file esistenti</string>
<string name="instant_upload_on_charging">Carica solo durante la ricarica</string> <string name="instant_upload_on_charging">Carica solo durante la ricarica</string>
<string name="instant_upload_path">/InstantUpload</string> <string name="instant_upload_path">/InstantUpload</string>

View file

@ -470,7 +470,6 @@
<string name="image_preview_unit_megapixel">%s MP</string> <string name="image_preview_unit_megapixel">%s MP</string>
<string name="image_preview_unit_millimetres">%s mm</string> <string name="image_preview_unit_millimetres">%s mm</string>
<string name="image_preview_unit_seconds">%s 秒</string> <string name="image_preview_unit_seconds">%s 秒</string>
<string name="in_folder">フォルダー%1$sの中で</string>
<string name="instant_upload_existing">既存のファイルもアップロード</string> <string name="instant_upload_existing">既存のファイルもアップロード</string>
<string name="instant_upload_on_charging">充電中のみアップロード</string> <string name="instant_upload_on_charging">充電中のみアップロード</string>
<string name="instant_upload_path">/InstantUpload</string> <string name="instant_upload_path">/InstantUpload</string>

View file

@ -424,7 +424,6 @@
<string name="image_preview_unit_megapixel">%s MP</string> <string name="image_preview_unit_megapixel">%s MP</string>
<string name="image_preview_unit_millimetres">%s mm</string> <string name="image_preview_unit_millimetres">%s mm</string>
<string name="image_preview_unit_seconds">%s s</string> <string name="image_preview_unit_seconds">%s s</string>
<string name="in_folder">in folder %1$s</string>
<string name="instant_upload_existing">Also upload existing files</string> <string name="instant_upload_existing">Also upload existing files</string>
<string name="instant_upload_on_charging">Only upload when charging</string> <string name="instant_upload_on_charging">Only upload when charging</string>
<string name="instant_upload_path">/InstantUpload</string> <string name="instant_upload_path">/InstantUpload</string>

View file

@ -480,7 +480,6 @@
<string name="image_preview_unit_megapixel">%s MP</string> <string name="image_preview_unit_megapixel">%s MP</string>
<string name="image_preview_unit_millimetres">%s mm</string> <string name="image_preview_unit_millimetres">%s mm</string>
<string name="image_preview_unit_seconds">%s초</string> <string name="image_preview_unit_seconds">%s초</string>
<string name="in_folder">%1$s 폴더 안에</string>
<string name="instant_upload_existing">이미 존재하는 파일도 올리기</string> <string name="instant_upload_existing">이미 존재하는 파일도 올리기</string>
<string name="instant_upload_on_charging">충전 중에만 업로드</string> <string name="instant_upload_on_charging">충전 중에만 업로드</string>
<string name="instant_upload_path">/InstantUpload</string> <string name="instant_upload_path">/InstantUpload</string>

View file

@ -347,7 +347,6 @@
<string name="hint_password">ລະຫັດຜ່ານ</string> <string name="hint_password">ລະຫັດຜ່ານ</string>
<string name="host_not_available">ເຊີເວີບໍ່ວ່າງ</string> <string name="host_not_available">ເຊີເວີບໍ່ວ່າງ</string>
<string name="host_your_own_server">ເຊີເວີຂອງທ່ານເອງ</string> <string name="host_your_own_server">ເຊີເວີຂອງທ່ານເອງ</string>
<string name="in_folder">ໃນໂຟນເດີ %1$s</string>
<string name="instant_upload_existing">ອັບໂຫຼດຟາຍທີ່ມີຢູ່ແລ້ວ</string> <string name="instant_upload_existing">ອັບໂຫຼດຟາຍທີ່ມີຢູ່ແລ້ວ</string>
<string name="instant_upload_on_charging">ພຽງແຕ່ອັບໂຫຼດເທົ່ານັ້ນ</string> <string name="instant_upload_on_charging">ພຽງແຕ່ອັບໂຫຼດເທົ່ານັ້ນ</string>
<string name="instant_upload_path">/ອັບໂຫຼດທັນທີ</string> <string name="instant_upload_path">/ອັບໂຫຼດທັນທີ</string>

View file

@ -376,7 +376,6 @@
<string name="hint_password">Slaptažodis</string> <string name="hint_password">Slaptažodis</string>
<string name="host_not_available">Serveris neprieinamas</string> <string name="host_not_available">Serveris neprieinamas</string>
<string name="host_your_own_server">Administruoti savo serverį</string> <string name="host_your_own_server">Administruoti savo serverį</string>
<string name="in_folder">aplanke %1$s</string>
<string name="instant_upload_existing">Taip pat įkelkite esamus failus</string> <string name="instant_upload_existing">Taip pat įkelkite esamus failus</string>
<string name="instant_upload_on_charging">Įkelti failus tik kai kraunasi</string> <string name="instant_upload_on_charging">Įkelti failus tik kai kraunasi</string>
<string name="instant_upload_path">/InstantUpload</string> <string name="instant_upload_path">/InstantUpload</string>

View file

@ -358,7 +358,6 @@
<string name="hint_password">Лозинка</string> <string name="hint_password">Лозинка</string>
<string name="host_not_available">Серверот не е достапен</string> <string name="host_not_available">Серверот не е достапен</string>
<string name="host_your_own_server">Хостирајте го вашиот сервер</string> <string name="host_your_own_server">Хостирајте го вашиот сервер</string>
<string name="in_folder">во папката %1$s</string>
<string name="instant_upload_existing">Прикачување на постоечките датотеки</string> <string name="instant_upload_existing">Прикачување на постоечките датотеки</string>
<string name="instant_upload_on_charging">Прикачувај само додека се полни</string> <string name="instant_upload_on_charging">Прикачувај само додека се полни</string>
<string name="instant_upload_path">/InstantUpload</string> <string name="instant_upload_path">/InstantUpload</string>

View file

@ -483,7 +483,6 @@
<string name="image_preview_unit_megapixel">%s MP</string> <string name="image_preview_unit_megapixel">%s MP</string>
<string name="image_preview_unit_millimetres">%s mm</string> <string name="image_preview_unit_millimetres">%s mm</string>
<string name="image_preview_unit_seconds">%s s</string> <string name="image_preview_unit_seconds">%s s</string>
<string name="in_folder">i mappen %1$s</string>
<string name="instant_upload_existing">Last også opp eksisterende filer</string> <string name="instant_upload_existing">Last også opp eksisterende filer</string>
<string name="instant_upload_on_charging">Bare last opp under lading</string> <string name="instant_upload_on_charging">Bare last opp under lading</string>
<string name="instant_upload_path">/Direkteopplasting</string> <string name="instant_upload_path">/Direkteopplasting</string>

View file

@ -470,7 +470,6 @@
<string name="image_preview_unit_megapixel">%s MP</string> <string name="image_preview_unit_megapixel">%s MP</string>
<string name="image_preview_unit_millimetres">%s mm</string> <string name="image_preview_unit_millimetres">%s mm</string>
<string name="image_preview_unit_seconds">%s s</string> <string name="image_preview_unit_seconds">%s s</string>
<string name="in_folder">in map %1$s</string>
<string name="instant_upload_existing">Upload ook bestaande bestanden</string> <string name="instant_upload_existing">Upload ook bestaande bestanden</string>
<string name="instant_upload_on_charging">Alleen uploaden bij opladen</string> <string name="instant_upload_on_charging">Alleen uploaden bij opladen</string>
<string name="instant_upload_path">/InstantUpload</string> <string name="instant_upload_path">/InstantUpload</string>

View file

@ -464,7 +464,6 @@
<string name="image_preview_unit_megapixel">%s MP</string> <string name="image_preview_unit_megapixel">%s MP</string>
<string name="image_preview_unit_millimetres">%s mm</string> <string name="image_preview_unit_millimetres">%s mm</string>
<string name="image_preview_unit_seconds">%s s</string> <string name="image_preview_unit_seconds">%s s</string>
<string name="in_folder">w katalogu %1$s</string>
<string name="instant_upload_existing">Wyślij również istniejące pliki</string> <string name="instant_upload_existing">Wyślij również istniejące pliki</string>
<string name="instant_upload_on_charging">Wysyłaj tylko podczas ładowania</string> <string name="instant_upload_on_charging">Wysyłaj tylko podczas ładowania</string>
<string name="instant_upload_path">/InstantUpload</string> <string name="instant_upload_path">/InstantUpload</string>

View file

@ -483,7 +483,6 @@
<string name="image_preview_unit_megapixel">%s MP</string> <string name="image_preview_unit_megapixel">%s MP</string>
<string name="image_preview_unit_millimetres">%s mm</string> <string name="image_preview_unit_millimetres">%s mm</string>
<string name="image_preview_unit_seconds">%s s</string> <string name="image_preview_unit_seconds">%s s</string>
<string name="in_folder">na pasta %1$s</string>
<string name="instant_upload_existing">Enviar arquivos existentes também</string> <string name="instant_upload_existing">Enviar arquivos existentes também</string>
<string name="instant_upload_on_charging">Só enviar quando carregando</string> <string name="instant_upload_on_charging">Só enviar quando carregando</string>
<string name="instant_upload_path">/EnvioAutomático</string> <string name="instant_upload_path">/EnvioAutomático</string>

View file

@ -410,7 +410,6 @@
<string name="image_preview_unit_megapixel">%s MP</string> <string name="image_preview_unit_megapixel">%s MP</string>
<string name="image_preview_unit_millimetres">%s mm</string> <string name="image_preview_unit_millimetres">%s mm</string>
<string name="image_preview_unit_seconds">%s s</string> <string name="image_preview_unit_seconds">%s s</string>
<string name="in_folder">na pasta %1$s</string>
<string name="instant_upload_existing">Também envia ficheiros existentes</string> <string name="instant_upload_existing">Também envia ficheiros existentes</string>
<string name="instant_upload_on_charging">Carregar ficheiros apenas quando o carregador está ligado</string> <string name="instant_upload_on_charging">Carregar ficheiros apenas quando o carregador está ligado</string>
<string name="instant_upload_path">/Envio Instantâneo </string> <string name="instant_upload_path">/Envio Instantâneo </string>

View file

@ -434,7 +434,6 @@
<string name="image_preview_unit_megapixel">%s MP</string> <string name="image_preview_unit_megapixel">%s MP</string>
<string name="image_preview_unit_millimetres">%s mm</string> <string name="image_preview_unit_millimetres">%s mm</string>
<string name="image_preview_unit_seconds">%s s</string> <string name="image_preview_unit_seconds">%s s</string>
<string name="in_folder">în folderul %1$s</string>
<string name="instant_upload_existing">De asemenea încarcă fisiere existente</string> <string name="instant_upload_existing">De asemenea încarcă fisiere existente</string>
<string name="instant_upload_on_charging">Se încarcă numai în timpul alimentării cu curent</string> <string name="instant_upload_on_charging">Se încarcă numai în timpul alimentării cu curent</string>
<string name="instant_upload_path">/Încărcare instantă</string> <string name="instant_upload_path">/Încărcare instantă</string>

View file

@ -486,7 +486,6 @@
<string name="image_preview_unit_megapixel">%s МПкс</string> <string name="image_preview_unit_megapixel">%s МПкс</string>
<string name="image_preview_unit_millimetres">%s мм</string> <string name="image_preview_unit_millimetres">%s мм</string>
<string name="image_preview_unit_seconds">%s с</string> <string name="image_preview_unit_seconds">%s с</string>
<string name="in_folder">в папку %1$s</string>
<string name="instant_upload_existing">Также загрузить существующие файлы</string> <string name="instant_upload_existing">Также загрузить существующие файлы</string>
<string name="instant_upload_on_charging">Только во время зарядки</string> <string name="instant_upload_on_charging">Только во время зарядки</string>
<string name="instant_upload_path">/Автозагрузка</string> <string name="instant_upload_path">/Автозагрузка</string>

View file

@ -362,7 +362,6 @@
<string name="hint_password">Crae</string> <string name="hint_password">Crae</string>
<string name="host_not_available">Su serbidore no est a disponimentu</string> <string name="host_not_available">Su serbidore no est a disponimentu</string>
<string name="host_your_own_server">Retzi su serbidore tuo</string> <string name="host_your_own_server">Retzi su serbidore tuo</string>
<string name="in_folder">in sa cartella %1$s</string>
<string name="instant_upload_existing">Càrriga puru is documentos chi esistint giai</string> <string name="instant_upload_existing">Càrriga puru is documentos chi esistint giai</string>
<string name="instant_upload_on_charging">Càrriga isceti cando est carrighende sa bateria</string> <string name="instant_upload_on_charging">Càrriga isceti cando est carrighende sa bateria</string>
<string name="instant_upload_path">/Carrigamentu istantàneu</string> <string name="instant_upload_path">/Carrigamentu istantàneu</string>

View file

@ -463,7 +463,6 @@
<string name="image_preview_unit_megapixel">%s MP</string> <string name="image_preview_unit_megapixel">%s MP</string>
<string name="image_preview_unit_millimetres">%s mm</string> <string name="image_preview_unit_millimetres">%s mm</string>
<string name="image_preview_unit_seconds">%s s</string> <string name="image_preview_unit_seconds">%s s</string>
<string name="in_folder">v priečinku %1$s</string>
<string name="instant_upload_existing">Nahrať aj existujúce súbory</string> <string name="instant_upload_existing">Nahrať aj existujúce súbory</string>
<string name="instant_upload_on_charging">Nahrať iba počas nabíjania</string> <string name="instant_upload_on_charging">Nahrať iba počas nabíjania</string>
<string name="instant_upload_path">/InstantUpload</string> <string name="instant_upload_path">/InstantUpload</string>

View file

@ -13,6 +13,7 @@
<string name="action_send_share">Pošlji/Omogoči souporabo</string> <string name="action_send_share">Pošlji/Omogoči souporabo</string>
<string name="action_switch_grid_view">Mrežni pogled</string> <string name="action_switch_grid_view">Mrežni pogled</string>
<string name="action_switch_list_view">Seznamski pogled</string> <string name="action_switch_list_view">Seznamski pogled</string>
<string name="actionbar_calendar_contacts_restore">Obnovi stike in koledar</string>
<string name="actionbar_mkdir">Nova mapa</string> <string name="actionbar_mkdir">Nova mapa</string>
<string name="actionbar_move_or_copy">Premakni ali Kopiraj</string> <string name="actionbar_move_or_copy">Premakni ali Kopiraj</string>
<string name="actionbar_open_with">Odpri s programom</string> <string name="actionbar_open_with">Odpri s programom</string>
@ -83,6 +84,7 @@
<string name="avatar">Avatar</string> <string name="avatar">Avatar</string>
<string name="away">Ne spremljam</string> <string name="away">Ne spremljam</string>
<string name="backup_settings">Nastavitve varnostnega kopiranja</string> <string name="backup_settings">Nastavitve varnostnega kopiranja</string>
<string name="backup_title">Varnostna kopija koledarja in stikov</string>
<string name="battery_optimization_close">Zapri</string> <string name="battery_optimization_close">Zapri</string>
<string name="battery_optimization_disable">Onemogoči</string> <string name="battery_optimization_disable">Onemogoči</string>
<string name="battery_optimization_message">Naprava ima najverjetneje omogočeno možnost optimizacije porabe baterije. Program AutoUpload pravilno deluje le, če je izvzet iz nje.</string> <string name="battery_optimization_message">Naprava ima najverjetneje omogočeno možnost optimizacije porabe baterije. Program AutoUpload pravilno deluje le, če je izvzet iz nje.</string>
@ -425,7 +427,6 @@
<string name="image_preview_unit_megapixel">%s MP</string> <string name="image_preview_unit_megapixel">%s MP</string>
<string name="image_preview_unit_millimetres">%s mm</string> <string name="image_preview_unit_millimetres">%s mm</string>
<string name="image_preview_unit_seconds">%s s</string> <string name="image_preview_unit_seconds">%s s</string>
<string name="in_folder">v mapi %1$s</string>
<string name="instant_upload_existing">Pošlji tudi obstoječe datoteke</string> <string name="instant_upload_existing">Pošlji tudi obstoječe datoteke</string>
<string name="instant_upload_on_charging">Usklajuj le med polnjenjem naprave</string> <string name="instant_upload_on_charging">Usklajuj le med polnjenjem naprave</string>
<string name="instant_upload_path">/Hipno nalaganje</string> <string name="instant_upload_path">/Hipno nalaganje</string>
@ -665,6 +666,7 @@
<string name="screenshot_04_accounts_heading">Vsi vaši računi</string> <string name="screenshot_04_accounts_heading">Vsi vaši računi</string>
<string name="screenshot_04_accounts_subline">na enem mestu</string> <string name="screenshot_04_accounts_subline">na enem mestu</string>
<string name="screenshot_05_autoUpload_heading">Samodejno pošiljanje</string> <string name="screenshot_05_autoUpload_heading">Samodejno pošiljanje</string>
<string name="screenshot_06_davdroid_heading">Koledar in stiki</string>
<string name="screenshot_06_davdroid_subline">Uskladi z DAVx5</string> <string name="screenshot_06_davdroid_subline">Uskladi z DAVx5</string>
<string name="search_error">Napaka pridobivanja zadetkov iskanja</string> <string name="search_error">Napaka pridobivanja zadetkov iskanja</string>
<string name="select_all">Izberi vse</string> <string name="select_all">Izberi vse</string>

View file

@ -471,7 +471,6 @@
<string name="image_preview_unit_megapixel">%s MP</string> <string name="image_preview_unit_megapixel">%s MP</string>
<string name="image_preview_unit_millimetres">%s mm</string> <string name="image_preview_unit_millimetres">%s mm</string>
<string name="image_preview_unit_seconds">%s s</string> <string name="image_preview_unit_seconds">%s s</string>
<string name="in_folder">У фолдеру %1$s</string>
<string name="instant_upload_existing">Отпреми и постојеће фајлове</string> <string name="instant_upload_existing">Отпреми и постојеће фајлове</string>
<string name="instant_upload_on_charging">Отпремај само на пуњењу</string> <string name="instant_upload_on_charging">Отпремај само на пуњењу</string>
<string name="instant_upload_path">/InstantUpload</string> <string name="instant_upload_path">/InstantUpload</string>

View file

@ -34,6 +34,7 @@
<string name="add_to_cloud">Lägg till %1$s</string> <string name="add_to_cloud">Lägg till %1$s</string>
<string name="advanced_settings">Avancerade inställningar</string> <string name="advanced_settings">Avancerade inställningar</string>
<string name="allow_resharing">Tillåt dela vidare</string> <string name="allow_resharing">Tillåt dela vidare</string>
<string name="app_config_base_url_title">Bas-URL</string>
<string name="app_config_proxy_host_title">Proxy-värdnamn</string> <string name="app_config_proxy_host_title">Proxy-värdnamn</string>
<string name="app_config_proxy_port_title">Proxyport</string> <string name="app_config_proxy_port_title">Proxyport</string>
<string name="app_widget_description">Visa en widget från dashboard</string> <string name="app_widget_description">Visa en widget från dashboard</string>
@ -484,7 +485,6 @@
<string name="image_preview_unit_megapixel">%s MP</string> <string name="image_preview_unit_megapixel">%s MP</string>
<string name="image_preview_unit_millimetres">%s mm</string> <string name="image_preview_unit_millimetres">%s mm</string>
<string name="image_preview_unit_seconds">%s s</string> <string name="image_preview_unit_seconds">%s s</string>
<string name="in_folder">i mapp %1$s</string>
<string name="instant_upload_existing">Ladda även upp befintliga filer</string> <string name="instant_upload_existing">Ladda även upp befintliga filer</string>
<string name="instant_upload_on_charging">Ladda enbart upp när enheten laddas</string> <string name="instant_upload_on_charging">Ladda enbart upp när enheten laddas</string>
<string name="instant_upload_path">/AutomatiskUppladdning</string> <string name="instant_upload_path">/AutomatiskUppladdning</string>

View file

@ -361,7 +361,6 @@
<string name="image_editor_rotate_ccw">หมุนทวนเข็มนาฬิกา</string> <string name="image_editor_rotate_ccw">หมุนทวนเข็มนาฬิกา</string>
<string name="image_editor_rotate_cw">หมุนตามเข็มนาฬิกา</string> <string name="image_editor_rotate_cw">หมุนตามเข็มนาฬิกา</string>
<string name="image_editor_unable_to_edit_image">ไม่สามารถแก้ไขรูปภาพ</string> <string name="image_editor_unable_to_edit_image">ไม่สามารถแก้ไขรูปภาพ</string>
<string name="in_folder">ในโฟลเดอร์ %1$s</string>
<string name="instant_upload_existing">อัปโหลดไฟล์ที่มีอยู่เดิมด้วย</string> <string name="instant_upload_existing">อัปโหลดไฟล์ที่มีอยู่เดิมด้วย</string>
<string name="instant_upload_on_charging">อัปโหลดขณะชาร์จเท่านั้น</string> <string name="instant_upload_on_charging">อัปโหลดขณะชาร์จเท่านั้น</string>
<string name="instant_upload_path">/อัพโหลดทันที</string> <string name="instant_upload_path">/อัพโหลดทันที</string>

View file

@ -338,7 +338,6 @@
<string name="hint_password">Açarsöz</string> <string name="hint_password">Açarsöz</string>
<string name="host_not_available">Serwer elýeterli däl</string> <string name="host_not_available">Serwer elýeterli däl</string>
<string name="host_your_own_server">Öz serweriňizi ýerleşdiriň</string> <string name="host_your_own_server">Öz serweriňizi ýerleşdiriň</string>
<string name="in_folder">%1$s bukjada</string>
<string name="instant_upload_existing">Bar bolan faýllary hem ýükläň</string> <string name="instant_upload_existing">Bar bolan faýllary hem ýükläň</string>
<string name="instant_upload_on_charging">Diňe zarýad berlende ýükläň</string> <string name="instant_upload_on_charging">Diňe zarýad berlende ýükläň</string>
<string name="instant_upload_path">/ Çaltýüklemek</string> <string name="instant_upload_path">/ Çaltýüklemek</string>

View file

@ -485,7 +485,6 @@
<string name="image_preview_unit_megapixel">%s MP</string> <string name="image_preview_unit_megapixel">%s MP</string>
<string name="image_preview_unit_millimetres">%s mm</string> <string name="image_preview_unit_millimetres">%s mm</string>
<string name="image_preview_unit_seconds">%s s</string> <string name="image_preview_unit_seconds">%s s</string>
<string name="in_folder">%1$s klasöründe</string>
<string name="instant_upload_existing">Var olan dosyalar da yüklensin</string> <string name="instant_upload_existing">Var olan dosyalar da yüklensin</string>
<string name="instant_upload_on_charging">Yalnızca şarj edilirken yüklensin</string> <string name="instant_upload_on_charging">Yalnızca şarj edilirken yüklensin</string>
<string name="instant_upload_path">/AnındaYükle</string> <string name="instant_upload_path">/AnındaYükle</string>

View file

@ -476,7 +476,6 @@
<string name="image_preview_image_taking_conditions">Умови отримання зображення</string> <string name="image_preview_image_taking_conditions">Умови отримання зображення</string>
<string name="image_preview_unit_millimetres">%s мм</string> <string name="image_preview_unit_millimetres">%s мм</string>
<string name="image_preview_unit_seconds">%s с</string> <string name="image_preview_unit_seconds">%s с</string>
<string name="in_folder">в каталозі %1$s</string>
<string name="instant_upload_existing">Також завантажити існуючі файли</string> <string name="instant_upload_existing">Також завантажити існуючі файли</string>
<string name="instant_upload_on_charging">Завантаження тільки під час заряджання</string> <string name="instant_upload_on_charging">Завантаження тільки під час заряджання</string>
<string name="internal_two_way_sync">Внутрішня двостороння синхронізація</string> <string name="internal_two_way_sync">Внутрішня двостороння синхронізація</string>

View file

@ -387,7 +387,6 @@
<string name="hint_password">Mật khẩu</string> <string name="hint_password">Mật khẩu</string>
<string name="host_not_available">Máy chủ không khả dụng</string> <string name="host_not_available">Máy chủ không khả dụng</string>
<string name="host_your_own_server">Host máy chủ của riêng bạn</string> <string name="host_your_own_server">Host máy chủ của riêng bạn</string>
<string name="in_folder">trong thư mục %1$s</string>
<string name="instant_upload_existing">Cũng tải lên các tệp hiện có</string> <string name="instant_upload_existing">Cũng tải lên các tệp hiện có</string>
<string name="instant_upload_on_charging">Chỉ tải lên khi đang sạc pin</string> <string name="instant_upload_on_charging">Chỉ tải lên khi đang sạc pin</string>
<string name="instant_upload_path">/Upload tức thì</string> <string name="instant_upload_path">/Upload tức thì</string>

View file

@ -9,7 +9,7 @@
<string name="account_not_found">找不到账号!</string> <string name="account_not_found">找不到账号!</string>
<string name="action_edit">编辑</string> <string name="action_edit">编辑</string>
<string name="action_empty_notifications">清除所有通知</string> <string name="action_empty_notifications">清除所有通知</string>
<string name="action_empty_trashbin">清空垃圾箱</string> <string name="action_empty_trashbin">清空回收站</string>
<string name="action_send_share">共享</string> <string name="action_send_share">共享</string>
<string name="action_switch_grid_view">网格视图</string> <string name="action_switch_grid_view">网格视图</string>
<string name="action_switch_list_view">列表视图</string> <string name="action_switch_list_view">列表视图</string>
@ -459,7 +459,6 @@
<string name="image_preview_unit_megapixel">%s MP</string> <string name="image_preview_unit_megapixel">%s MP</string>
<string name="image_preview_unit_millimetres">%s mm</string> <string name="image_preview_unit_millimetres">%s mm</string>
<string name="image_preview_unit_seconds">%s s</string> <string name="image_preview_unit_seconds">%s s</string>
<string name="in_folder">在文件夹 %1$s 内 </string>
<string name="instant_upload_existing">同时上传现有文件</string> <string name="instant_upload_existing">同时上传现有文件</string>
<string name="instant_upload_on_charging">仅在充电时上传</string> <string name="instant_upload_on_charging">仅在充电时上传</string>
<string name="instant_upload_path">/实时上传</string> <string name="instant_upload_path">/实时上传</string>

View file

@ -485,7 +485,6 @@
<string name="image_preview_unit_megapixel">%s MP</string> <string name="image_preview_unit_megapixel">%s MP</string>
<string name="image_preview_unit_millimetres">%s mm</string> <string name="image_preview_unit_millimetres">%s mm</string>
<string name="image_preview_unit_seconds">%s s</string> <string name="image_preview_unit_seconds">%s s</string>
<string name="in_folder">在資料夾 %1$s</string>
<string name="instant_upload_existing">一併上傳存在的檔案</string> <string name="instant_upload_existing">一併上傳存在的檔案</string>
<string name="instant_upload_on_charging">只在充電時上傳</string> <string name="instant_upload_on_charging">只在充電時上傳</string>
<string name="instant_upload_path">/InstantUpload</string> <string name="instant_upload_path">/InstantUpload</string>

View file

@ -485,7 +485,6 @@
<string name="image_preview_unit_megapixel">%s MP</string> <string name="image_preview_unit_megapixel">%s MP</string>
<string name="image_preview_unit_millimetres">%s mm</string> <string name="image_preview_unit_millimetres">%s mm</string>
<string name="image_preview_unit_seconds">%s s</string> <string name="image_preview_unit_seconds">%s s</string>
<string name="in_folder">在資料夾 %1$s</string>
<string name="instant_upload_existing">同時上傳既有的檔案</string> <string name="instant_upload_existing">同時上傳既有的檔案</string>
<string name="instant_upload_on_charging">只在充電時上傳</string> <string name="instant_upload_on_charging">只在充電時上傳</string>
<string name="instant_upload_path">/InstantUpload</string> <string name="instant_upload_path">/InstantUpload</string>

View file

@ -1075,7 +1075,6 @@
<string name="drawer_item_gallery">Media</string> <string name="drawer_item_gallery">Media</string>
<string name="player_stop">stop</string> <string name="player_stop">stop</string>
<string name="player_toggle">toggle</string> <string name="player_toggle">toggle</string>
<string name="in_folder">in folder %1$s</string>
<string name="choose_which_file">Choose which file to keep!</string> <string name="choose_which_file">Choose which file to keep!</string>
<string name="wrong_storage_path">Data storage folder does not exist!</string> <string name="wrong_storage_path">Data storage folder does not exist!</string>
<string name="wrong_storage_path_desc">This might be due to a backup restore on another device. Falling back to default. Please check settings to adjust data storage folder.</string> <string name="wrong_storage_path_desc">This might be due to a backup restore on another device. Falling back to default. Please check settings to adjust data storage folder.</string>

View file

@ -293,7 +293,7 @@ class ConnectivityServiceTest {
} }
@Test @Test
fun `check request is not sent when server uri is not set`() { fun `check cache value when server uri is not set`() {
// GIVEN // GIVEN
// network connectivity is present // network connectivity is present
// user has no server URI (empty) // user has no server URI (empty)
@ -307,7 +307,7 @@ class ConnectivityServiceTest {
// THEN // THEN
// connection is walled // connection is walled
// request is not sent // request is not sent
assertTrue("Server should not be accessible", result) assertFalse("Cached value not set", result)
verify(requestBuilder, never()).invoke(any()) verify(requestBuilder, never()).invoke(any())
verify(getRequest, never()).execute(any<PlainClient>()) verify(getRequest, never()).execute(any<PlainClient>())
} }

View file

@ -1,2 +1,2 @@
DO NOT TOUCH; GENERATED BY DRONE DO NOT TOUCH; GENERATED BY DRONE
<span class="mdl-layout-title">Lint Report: 3 errors and 61 warnings</span> <span class="mdl-layout-title">Lint Report: 3 errors and 59 warnings</span>