diff --git a/CLAUDE.md b/CLAUDE.md index 5a3f9599d556..af655de2cc08 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1,165 +1,109 @@ # CLAUDE.md -This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. - -## Development Commands - -### Building -- `./gradlew assembleProDebug` - Build the Pro debug variant -- `./gradlew assembleProDebugAndroidTest` - Build the Pro debug test APK -- `./gradlew assembleLiteDebug` - Build the Lite debug variant -- `./gradlew bundleProRelease` - Build Pro release bundle for Play Store -- `./gradlew bundleLiteRelease` - Build Lite release bundle for Play Store -- `./build-test.sh` - Convenience script to build Pro debug and test APKs - -### Testing -- `./gradlew testProDebugUnitTest` - Run JVM unit tests (no device needed) -- `./gradlew connectedAndroidTest` - Run instrumented tests on connected device -- `fastlane android tests` - Alternative way to run connected tests - -### Linting and formatting -- `./gradlew lintProDebug` - Run Android lint checks (errors fail the build) -- `./gradlew spotlessApply` - Apply formatting (google-java-format AOSP for java, - ktfmt kotlinlang style for kotlin) -- `./gradlew spotlessCheck` - Verify formatting; CI runs this first - -### Deployment -- `fastlane android deployPro` - Deploy Pro version to Google Play internal track -- `fastlane android deployLite` - Deploy Lite version to Google Play internal track - -### Clean -- `./gradlew clean` - Clean build artifacts (includes custom .cxx directory cleanup) - -## Architecture Overview - -### Core Components - -**Document Processing Pipeline:** -- `CoreLoader` - Primary document processor using the native C++ ODR core library -- `RawLoader` - Plain text and other raw file processor -- `OnlineLoader` - Remote document fetcher -- `MetadataLoader` - Document metadata extractor - -**Service Architecture:** -- `LoaderService` - Background service managing all document loading operations -- `LoaderServiceQueue` - Queue management for multiple document loading requests -- Document loaders implement `FileLoaderListener` interface for async communication - -**UI Architecture:** -- `MainActivity` - Main activity with service binding and menu management -- `DocumentFragment` - Primary document display fragment using WebView -- `PageView` - Custom WebView for document rendering -- Action mode callbacks for edit, find, and TTS functionality - -### Build System - -**Multi-flavor Android App:** -- **Lite flavor**: Free version with ads and tracking enabled -- **Pro flavor**: Paid version with ads disabled and tracking disabled - -**Native Dependencies:** -- Uses Conan package manager for C++ dependencies -- The app compiles no native code itself; conan builds odrcore (including its JNI - bindings) and the deployer drops the resulting `.so` files into `jniLibs` -- NDK version 28.2.13676358 required (for conan's cross build, and for the - `libc++_shared.so` that gets shipped alongside `libodr_jni.so`) -- C++20 standard -- `conan` is taken from PATH; override with `-Podr.conanExecutable=...` or `ODR_CONAN`. - Note the conan gradle plugin does not track `app/conanprofile.txt` as a task input, so - after editing it `conanInstall-*` stays UP-TO-DATE and the native libs keep their old - settings - run the conan install by hand to pick the change up locally. - -**Core Library Integration:** -- The JNI interface comes from odrcore itself, both halves out of the one conan package - built with the recipe's `with_jni` option: java classes under `app.opendocument.core` - from `share/java/odr-core-java.jar`, and the matching `libodr_jni.so`. `CoreLoader` is - the only thing wrapping it. -- Taking both from the same package is deliberate and should stay that way - handles +Guidance for Claude Code (claude.ai/code) working in this repository. + +## Commands + +- Build: `./gradlew assembleProDebug` (also `assembleLiteDebug`, `bundleProRelease`, + `bundleLiteRelease`). `./build-test.sh` builds the pro debug app plus its test apk. +- Test: `./gradlew testProDebugUnitTest` (jvm, no device), `./gradlew connectedAndroidTest` + (needs a device or emulator). +- Format and lint: `./gradlew spotlessApply` / `spotlessCheck` (google-java-format AOSP for + java, ktfmt kotlinlang for kotlin) and `./gradlew lintProDebug`. Lint errors fail the + build; CI runs spotless first. +- Deploy: `fastlane android deployPro` / `deployLite` to the Play internal track. +- `./gradlew clean` also clears the `.cxx` directory. + +## Architecture + +A document is loaded by a `FileLoader` on `LoaderService`'s background thread and reported +back through `FileLoaderListener`; `LoaderServiceQueue` holds requests until the service is +bound. `MetadataLoader` caches the file and identifies it, `CoreLoader` renders what odrcore +handles and publishes the html on a local http server, `RawLoader` covers text, csv and +images, and `OnlineLoader` uploads to a web viewer what neither can open. + +`MainActivity` owns the service binding and the action modes (find, tts, edit), and swaps +between two fragments: `LandingFragment` (recent documents, granted folders, settings) and +`DocumentFragment`, which shows the result in `PageView` - a WebView - with `DocumentActions` +over it. + +Source sits under `app/src/main/java/app/opendocument/droid/`: `background/` for the loaders +and stored state, `ui/` for everything on screen, `nonfree/` for analytics, billing and ads. + +## Build + +Two flavors: **lite** is free with ads and tracking, **pro** is paid with neither. The +switch is a `DISABLE_TRACKING` resource bool set per flavor in `app/build.gradle`, which the +`nonfree/` managers read to disable themselves; `app/src/pro/` holds nothing but a manifest. + +Minimum SDK 26, target 36, compile 37 (ahead of target on purpose). AGP 9 / Gradle 9, with +no kotlin plugin applied - AGP brings kotlin itself. Versions live in +`gradle/libs.versions.toml`. R8 and resource shrinking are on for release, the configuration +cache is on, and release signing comes from gradle properties or the environment (see +README) - without them release variants build unsigned rather than failing. + +**The version is the git tag.** `app/build.gradle` derives both `versionName` and +`versionCode` from `-Podr.version` (`v4.8.0` -> `4.8.0` / `40800`, two digits per part, a +part above 99 is an error), and defaults to `0.0.0`. Do not put the attributes back into +`AndroidManifest.xml`: gradle's values win in the merge, so a second copy can only ever +disagree with the tag. + +### Native side + +The app compiles no native code. Conan builds odrcore for armv8, armv7, x86 and x86_64, and +`app/conandeployer.py` drops the `.so` files into `jniLibs/` and the core's assets into +`assets/core`. Needs NDK 28.2.13676358 and C++20. `conan` comes from PATH, overridable with +`-Podr.conanExecutable=...` or `ODR_CONAN`. + +- The conan gradle plugin does not treat `app/conanprofile.txt` as a task input, so after + editing it `conanInstall-*` stays UP-TO-DATE and the native libs silently keep their old + settings. Run the conan install by hand locally. +- **Both halves of the JNI interface come out of the one odrcore package**, built with the + recipe's `with_jni` option: the `app.opendocument.core` classes from + `share/java/odr-core-java.jar` and the matching `libodr_jni.so`. Keep it that way. Handles cross as raw longs and enums as ordinals with no version negotiation, so a separately - versioned java artifact could drift from the `.so`. It also keeps the build free of - credentials, which f-droid and other clean source builders need. `conandeployer.py` - puts the jar in `build/conan//libs` and `app/build.gradle` depends on the armv8 - copy as a file, not through a repository. -- Anything the bindings use must exist on **android API 26**, which is far below what - their `--release 17` compiler accepts. That is a runtime-only failure, on device - (`java.lang.ref.Cleaner` and `List.of` both had to be fixed upstream for this reason) -- **odrcore's cmake needs a JDK on the conan build machine to produce the jar at all.** - Since 6.1 the android branch of `jni/CMakeLists.txt` calls `find_package(Java 11 - COMPONENTS Development)` without `REQUIRED` - so a build with no `JAVA_HOME`/`javac` - in the environment quietly builds `libodr_jni.so` and returns before `add_jar`. It is - not silent for long, `conandeployer.py` then fails with `No such file or directory: - .../share/java/odr-core-java.jar`, but the fix is to give conan a JDK and rebuild the - package (`--build=odrcore/`), not to look for the file. Reported upstream as - opendocument-app/OpenDocument.core#637 -- Supports multiple architectures: armv8, armv7, x86, x86_64 -- Assets deployed to `assets/core` and native libraries to `jniLibs/` via the custom - Conan deployer (`app/conandeployer.py`) - -### Key Directories - -- `app/src/main/java/app/opendocument/droid/background/` - Document processing services -- `app/src/main/java/app/opendocument/droid/ui/` - UI components and activities -- `app/src/main/java/app/opendocument/droid/nonfree/` - Analytics, billing, and ads -- `app/src/main/assets/` - HTML templates and fonts for document rendering - -### Dependencies - -**Core Android:** -- AndroidX libraries (AppCompat, Core, Material, WebKit) -- Google Play Services (Ads, Review, User Messaging Platform) - -**Document Processing:** -- Custom ODR core library via Conan - -**Testing:** -- Espresso for UI testing -- JUnit for unit testing -- Test APKs require connected device/emulator - -### Configuration Notes - -- Minimum SDK: 26, Target SDK: 36, Compile SDK: 37 (ahead of target on purpose) -- AGP 9 / Gradle 9, versions live in `gradle/libs.versions.toml` -- R8/ProGuard enabled for release builds with resource shrinking -- Configuration cache enabled for parallel Conan installs -- Release signing credentials come from gradle properties or environment variables (see - README); without them release variants build unsigned rather than failing -- The version is the git tag, not a number in the tree. `AndroidManifest.xml` carries no - `versionCode`/`versionName`; `app/build.gradle` derives both from `-Podr.version` - (`v4.8.0` -> name `4.8.0`, code `40800`, two digits per part, parts above 99 are an - error), and a build handed no version is `0.0.0`. Do not put the attributes back in the - manifest: gradle's values win in the merged manifest, so a second copy can only ever - disagree with the tag. The release workflow passes the tag it ran on; a dispatched run - passes its `version` input - -### Package names - -`namespace` (`app.opendocument.droid`) and `applicationId` (`at.tomtasche.reader`, plus -the `.pro` suffix) differ on purpose - do not "fix" the mismatch: - -- `namespace` is only the java/kotlin package plus `R`/`BuildConfig`, and is free to - rename. Nothing native is bound to it anymore - the JNI symbols live in odrcore's own - `app.opendocument.core` package, which the app does not rename - so the keeps in - `proguard-rules.txt` are about that package, not this one. -- `applicationId` is the identity on Play and F-Droid and can never change: Play has no - rename path, so a new one is a new listing that existing installs never update to. - Store-facing renaming goes through the listing title in `fastlane/metadata/`. -- The component names in `AndroidManifest.xml` (`MainActivity` and the `CATCH_ALL` / - `STRICT_CATCH` aliases) also still read `at.tomtasche.reader.*` on purpose. The OS - persists those strings for pinned launcher icons and for "always open .odt with this - app", so they survive as `activity-alias` entries pointing at the relocated activity. - The `ComponentName` strings in `MainActivity` must keep matching them. -- Anything reading `getPackageName()` at runtime (the FileProvider authority in - `AndroidFileCache`, the SharedPreferences name in `MainActivity`) follows - `applicationId` and must stay that way, or existing users lose their saved prefs. + versioned java artifact could drift from the `.so` - and depending on the jar as a file + rather than through a repository keeps the build credential free, which f-droid and other + clean source builders need. `CoreLoader` is the only thing wrapping any of it. +- Anything the bindings use must exist on **API 26**, far below what their `--release 17` + compiler accepts. It fails only at runtime, on device: `java.lang.ref.Cleaner` and + `List.of` both had to be fixed upstream for this. +- **odrcore's cmake needs a JDK on the conan build machine to produce the jar at all.** Since + 6.1 its `jni/CMakeLists.txt` calls `find_package(Java 11 COMPONENTS Development)` without + `REQUIRED`, so a build with no `JAVA_HOME`/`javac` quietly returns before `add_jar` and + `conandeployer.py` then fails on the missing `share/java/odr-core-java.jar`. Give conan a + JDK and rebuild the package (`--build=odrcore/`) rather than hunting for the file. + Reported upstream as opendocument-app/OpenDocument.core#637 + +## Rules that are easy to break + +### The package names differ on purpose + +`namespace` is `app.opendocument.droid`, `applicationId` is `at.tomtasche.reader` (plus a +`.pro` suffix). Do not "fix" the mismatch. + +- `namespace` is only the java/kotlin package plus `R`/`BuildConfig` and is free to rename. + The keeps in `proguard-rules.txt` are about odrcore's own `app.opendocument.core`, not + this. +- `applicationId` is the identity on Play and F-Droid and can never change - a new one is a + new listing that existing installs never update to. Store-facing renaming goes through the + listing title in `fastlane/metadata/`. +- The `MainActivity` and `CATCH_ALL` / `STRICT_CATCH` component names in the manifest keep + their `at.tomtasche.reader.*` spelling, as `activity-alias` entries pointing at the + relocated activity: the OS persists those strings for pinned launcher icons and for + "always open .odt with this app". The `ComponentName` strings in `MainActivity` must keep + matching them. +- Whatever reads `getPackageName()` at runtime - the FileProvider authority in + `AndroidFileCache`, the preferences name in `MainActivity` - follows `applicationId` and + must stay that way, or upgrading users lose their saved settings. ### Supported file types come from odrcore, and a test keeps the manifest in step -`SupportedDocumentTypes` used to be a hand written table of mime *prefixes*. Since odrcore -6.1 it is derived: `Odr.allFileTypes()` filtered by `Odr.capabilitiesByFileType(...) -.translateHtml` and `Odr.fileCategoryByFileType(...) == DOCUMENT` is what `CoreLoader` -renders, and `Odr.mimetypesByFileType` / `Odr.fileExtensionsByFileType` expand each of those -into every spelling the core accepts - the templates, the macro-enabled variants, the +`SupportedDocumentTypes` used to be a hand written table of mime *prefixes*. Since odrcore 6.1 +it is derived: `Odr.allFileTypes()` filtered by `Odr.capabilitiesByFileType(...).translateHtml` +and `Odr.fileCategoryByFileType(...) == DOCUMENT` is what `CoreLoader` renders, and +`Odr.mimetypesByFileType` / `Odr.fileExtensionsByFileType` expand each of those into every +spelling the core accepts - the templates, the macro-enabled variants, the `application/x-vnd.oasis...` family and the `-flat-xml` ones. Do not put a list of mime prefixes back; the whole point is that the app cannot claim a format the core does not have, or miss one it does. A prefix match is also what made the app claim `.xlsb` @@ -178,50 +122,57 @@ extensions are written out) and covered by a test rather than by discipline: that `SupportedDocumentTypes` and the package manager give the same answer, so a format added upstream and forgotten in the manifest fails CI rather than shipping. -The tables live in `libodr_jni`, so anything that reads them needs a device. That is why +The tables live in `libodr_jni`, so anything that reads them needs a device - that is why `CoreLoaderTest`, `SupportedDocumentTypesTest` and `OnlineLoaderTest` are instrumented tests -and not JVM ones - none of them opens a file, they just cannot ask the table from a plain -JVM. What the core decides *after* the file is in the cache is unchanged: `MetadataLoader` -runs libmagic over the copy, and `CoreLoader.isDocumentEditable` asks the opened document. +and not JVM ones. None of them opens a file, they just cannot ask the table from a plain JVM. One consequence of claiming every spelling: `MetadataLoader` puts whatever mime type it ended up with through `SupportedDocumentTypes.canonicalMimeType`, so the loaders behind it see one per format. `CoreLoader` matches the whole set and does not care, but `RawLoader` routes by mime type *prefix* - a provider volunteering `application/x-zip-compressed` or `application/csv` would be offered the app and then told the file is unsupported. -`SupportedFormatsTest.everythingTheAppClaimsIsLoadedBySomebody` is what holds that: every mime -type the app claims has to reach a loader that takes it. +`SupportedFormatsTest.everythingTheAppClaimsIsLoadedBySomebody` holds that: every mime type +the app claims has to reach a loader that takes it. ### Editability comes from the core, never from a mime type -`Document.isEditable()`/`isSavable()` is what decides whether `DocumentFragment` puts the -Edit item up, carried across on `FileLoader.Result.isEditable`. `CoreLoader.host()` only -holds a document open when the core says yes, so "we have a document" *is* the answer. +`Document.isEditable()`/`isSavable()` decides whether `DocumentFragment` offers the Edit +button, carried across on `FileLoader.Result.isEditable`. `CoreLoader.host()` only holds a +document open when the core says yes, so having one *is* the answer. -Do not reintroduce a list of editable formats in the UI. The core already says no to the -legacy binary doc/ppt/xls, to ooxml spreadsheets and presentations, and to every spreadsheet -including odf (its own TODO, the same gap as issue #442) - all of which the app used to spell -out by mime prefix and got wrong the moment a new format started going through `CoreLoader`. +Do not reintroduce a list of editable formats in the UI. The core says no to the legacy +binary formats, to ooxml spreadsheets and presentations, and to every spreadsheet including +odf (its own TODO, the same gap as issue #442) - all of which the app used to spell out by +mime prefix and got wrong the moment a new format started going through `CoreLoader`. `DecodedFile.capabilities()` is asked first, and only as a shortcut: opening a document costs a second parse of the whole file, so a format whose declared `edit`/`save` are already false is never opened just to be told no. It is an upper bound by definition - the document is still what answers. -### Language +### Storage access -Kotlin; support is built into AGP 9, no kotlin plugin is applied. The only java left is -`com/commonsware/android/print`, which is vendored third party code with its own copyright -header and stays java so it can still be diffed against upstream. It calls nothing of ours, -so there is no java-to-kotlin call anywhere in the project. +The app declares **no storage permission at all**, only `INTERNET`, and it has to stay that +way: `READ_EXTERNAL_STORAGE` has not reached documents since scoped storage, `READ_MEDIA_*` +covers only images, video and audio, and Play restricts `MANAGE_EXTERNAL_STORAGE` to file +managers and backup apps. -That means `@JvmStatic`, `@JvmField`, `@JvmOverloads` and `@Throws` are not needed for -interop and should not be added back for it. What is left of them is there for a runtime -that reflects over the bytecode, and each one says so: +Everything goes through SAF instead - `ACTION_OPEN_DOCUMENT` for a single file and +`ACTION_OPEN_DOCUMENT_TREE` (read only, never `FLAG_GRANT_WRITE_URI_PERMISSION`) for the +folders the landing screen browses. `PersistedUriPermissions` persists those grants and +reclaims them by reconciling against the recent list and the granted trees, rather than +releasing on close. Do not add a release next to a `documentFragment.loadUri()`: that call +only queues the load, so the stream is opened long after it returns. -- `@JvmField` on the `CREATOR`s in `FileLoader`, which the parcelable contract requires to - be a static field. -- `@JvmOverloads` on `ProgressDialogFragment`'s constructor, so the no-arg constructor the - fragment framework re-creates it with exists. -- `@JvmStatic` on the `@BeforeClass` / `@AfterClass` methods in the instrumented tests, - which JUnit requires to be static. +### Kotlin, and the three `@Jvm` annotations left + +The only java is `com/commonsware/android/print`, vendored third party code kept in java so +it can still be diffed against upstream. It calls nothing of ours, so no java-to-kotlin call +exists anywhere in the project - `@JvmStatic`, `@JvmField`, `@JvmOverloads` and `@Throws` +are not needed for interop and should not be added back for it. + +What remains is there for runtimes that reflect over the bytecode: `@JvmField` on +`FileLoader`'s `CREATOR`s (parcelable requires a static field), `@JvmOverloads` on +`ProgressDialogFragment`'s constructor (the fragment framework re-creates it with no +arguments), and `@JvmStatic` on `@BeforeClass` / `@AfterClass` in the instrumented tests +(junit requires them static). diff --git a/app/build.gradle b/app/build.gradle index d9535cb81ff7..d1f771b22fcb 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -244,6 +244,9 @@ dependencies { implementation libs.androidx.core implementation libs.material implementation libs.androidx.webkit + implementation libs.androidx.recyclerview + implementation libs.androidx.lifecycle.viewmodel + implementation libs.androidx.lifecycle.livedata implementation libs.asset.extractor @@ -251,6 +254,9 @@ dependencies { androidTestImplementation libs.espresso.core androidTestImplementation libs.espresso.intents + // RecyclerViewActions: the landing screen is one list, and what a test wants to reach + // is regularly a row that has not been bound yet on a small screen + androidTestImplementation libs.espresso.contrib androidTestImplementation libs.androidx.test.rules androidTestImplementation libs.androidx.test.runner androidTestImplementation libs.androidx.test.junit diff --git a/app/src/androidTest/java/app/opendocument/droid/test/LandingTests.kt b/app/src/androidTest/java/app/opendocument/droid/test/LandingTests.kt new file mode 100644 index 000000000000..109a731ebf61 --- /dev/null +++ b/app/src/androidTest/java/app/opendocument/droid/test/LandingTests.kt @@ -0,0 +1,336 @@ +// ActivityTestRule instead of ActivityScenario, matching MainActivityTests - see the note there. +@file:Suppress("DEPRECATION") + +package app.opendocument.droid.test + +import android.app.Activity +import android.app.Instrumentation +import android.content.Context +import android.content.Intent +import android.net.Uri +import android.os.SystemClock +import androidx.core.content.FileProvider +import androidx.recyclerview.widget.RecyclerView +import androidx.test.espresso.Espresso.onView +import androidx.test.espresso.action.ViewActions.click +import androidx.test.espresso.action.ViewActions.closeSoftKeyboard +import androidx.test.espresso.action.ViewActions.longClick +import androidx.test.espresso.assertion.ViewAssertions.doesNotExist +import androidx.test.espresso.assertion.ViewAssertions.matches +import androidx.test.espresso.contrib.RecyclerViewActions +import androidx.test.espresso.intent.Intents +import androidx.test.espresso.intent.matcher.IntentMatchers.hasAction +import androidx.test.espresso.matcher.ViewMatchers.hasDescendant +import androidx.test.espresso.matcher.ViewMatchers.isDisplayed +import androidx.test.espresso.matcher.ViewMatchers.withId +import androidx.test.espresso.matcher.ViewMatchers.withText +import androidx.test.ext.junit.runners.AndroidJUnit4 +import androidx.test.filters.LargeTest +import androidx.test.platform.app.InstrumentationRegistry +import androidx.test.rule.ActivityTestRule +import app.opendocument.droid.R +import app.opendocument.droid.background.FolderTreesUtil +import app.opendocument.droid.background.RecentDocumentsUtil +import app.opendocument.droid.ui.activity.DocumentFragment +import app.opendocument.droid.ui.activity.MainActivity +import java.io.File +import java.io.FileOutputStream +import java.io.InputStream +import org.hamcrest.Matchers.allOf +import org.junit.After +import org.junit.Assert +import org.junit.Before +import org.junit.BeforeClass +import org.junit.Rule +import org.junit.Test +import org.junit.runner.RunWith + +/** The landing screen: the recently opened documents and the actions offered next to them. */ +@LargeTest +@RunWith(AndroidJUnit4::class) +class LandingTests { + + // launched by hand in each test, so that the recently opened list can be seeded first - + // the landing screen reads it while it is coming up + @get:Rule val activityRule = ActivityTestRule(MainActivity::class.java, false, false) + + @Before + fun setUp() { + clearLandingState() + + Intents.init() + } + + @After + fun tearDown() { + Intents.release() + + clearLandingState() + + if (activityRule.activity != null) { + activityRule.finishActivity() + + InstrumentationRegistry.getInstrumentation().waitForIdleSync() + } + } + + @Test + fun emptyStateIsShownWhenNothingWasOpenedYet() { + launch() + + onView(withId(R.id.landing_empty)).check(matches(isDisplayed())) + } + + @Test + fun emptyStateOpensTheSystemPicker() { + stubOpenDocumentCancelled() + + launch() + + onView(withId(R.id.landing_empty_open)).perform(closeSoftKeyboard(), click()) + + Intents.intended(hasAction(Intent.ACTION_OPEN_DOCUMENT)) + } + + @Test + fun aRecentDocumentIsListed() { + seedRecentDocument() + + launch() + + onView(withText(TEST_DOCUMENT)).check(matches(isDisplayed())) + } + + @Test + fun aRecentDocumentOpensWhenTapped() { + seedRecentDocument() + + val activity = launch() + + onView(withText(TEST_DOCUMENT)).perform(closeSoftKeyboard(), click()) + + Assert.assertTrue( + "the document did not load after tapping its entry in the recent list", + waitForDocumentFragment(activity), + ) + } + + @Test + fun theFabOpensTheSystemPicker() { + // deliberately not seeded: the fab is there whatever the list holds, empty state included + stubOpenDocumentCancelled() + + launch() + + onView(withId(R.id.landing_open_fab)).perform(closeSoftKeyboard(), click()) + + Intents.intended(hasAction(Intent.ACTION_OPEN_DOCUMENT)) + } + + @Test + fun addingAFolderAsksTheSystemForATree() { + Intents.intending(hasAction(Intent.ACTION_OPEN_DOCUMENT_TREE)) + .respondWith(Instrumentation.ActivityResult(Activity.RESULT_CANCELED, null)) + + launch() + + onView(withId(R.id.landing_empty_add_folder)).perform(closeSoftKeyboard(), click()) + + Intents.intended(hasAction(Intent.ACTION_OPEN_DOCUMENT_TREE)) + } + + @Test + fun aGrantedFolderIsListed() { + seedFolderTree() + + launch() + + onView(withText(TEST_FOLDER)).check(matches(isDisplayed())) + } + + /** + * Removing a granted folder, which a long press and a swipe now reach the same way - the swipe + * gesture itself is ItemTouchHelper's, so this covers what both of them call. + */ + @Test + fun aGrantedFolderCanBeRemoved() { + seedFolderTree() + + launch() + + onView(withText(TEST_FOLDER)).perform(closeSoftKeyboard(), longClick()) + + onView(withText(R.string.landing_folder_removed)).check(matches(isDisplayed())) + onView(withText(TEST_FOLDER)).check(doesNotExist()) + } + + /** The undo next to it puts the folder back, cached name and all. */ + @Test + fun removingAGrantedFolderCanBeUndone() { + seedFolderTree() + + launch() + + onView(withText(TEST_FOLDER)).perform(closeSoftKeyboard(), longClick()) + onView(withText(R.string.landing_undo)).perform(click()) + + InstrumentationRegistry.getInstrumentation().waitForIdleSync() + SystemClock.sleep(500) + + onView(withText(TEST_FOLDER)).check(matches(isDisplayed())) + } + + @Test + fun theFoldersSectionOffersToAddOne() { + seedRecentDocument() + + launch() + + onView(withText(R.string.landing_section_folders)).check(matches(isDisplayed())) + + // the empty state carries a button with the same label, so match the one on screen - + // the empty state is gone once there is a recent document to show + onView(allOf(withText(R.string.landing_add_folder), isDisplayed())) + .check(matches(isDisplayed())) + } + + @Test + fun theCatchAllSettingIsOffered() { + seedRecentDocument() + + launch() + + scrollToCatchAllSetting() + + onView(withText(R.string.landing_catch_all_title)).check(matches(isDisplayed())) + } + + @Test + fun theCatchAllSettingIsOfferedBeforeAnythingWasOpened() { + // a fresh install is where the switch matters most, and the empty state used to be shown + // instead of the list it sits in + launch() + + scrollToCatchAllSetting() + + onView(withText(R.string.landing_catch_all_title)).check(matches(isDisplayed())) + } + + /** + * The settings sit under whatever the list is showing, and the empty state alone is taller than + * a small screen - so on the emulators CI runs, the switch is not merely off screen but never + * bound at all, and no matcher can find it. + * + * Scrolling is the whole point of the row being in the list rather than a screen of its own, so + * this scrolls the way a user would and then asserts. It has to say nothing about how far. + */ + private fun scrollToCatchAllSetting() { + onView(withId(R.id.landing_list)) + .perform( + RecyclerViewActions.scrollTo( + hasDescendant(withText(R.string.landing_catch_all_title)) + ) + ) + } + + private fun launch(): MainActivity { + val activity = activityRule.launchActivity(null) + + activity.sendBroadcast(Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)) + + // the list is filled from a background executor, so give it a moment to arrive + InstrumentationRegistry.getInstrumentation().waitForIdleSync() + SystemClock.sleep(1000) + InstrumentationRegistry.getInstrumentation().waitForIdleSync() + + return activity + } + + /** + * The picker is stubbed as cancelled: these tests are about what the landing screen asks for, + * not about loading a document. + */ + private fun stubOpenDocumentCancelled() { + Intents.intending(hasAction(Intent.ACTION_OPEN_DOCUMENT)) + .respondWith(Instrumentation.ActivityResult(Activity.RESULT_CANCELED, null)) + } + + private fun seedRecentDocument() { + RecentDocumentsUtil.addRecentDocument(context(), TEST_DOCUMENT, uriOf(requireTestFile())) + } + + /** + * A folder tree written straight into the store, cached display name and all. + * + * No real grant behind it, which is enough for the row: the name is the one written down when + * the folder was added, so listing it asks no provider anything. Entering it would come up + * empty, and none of these tests do. + */ + private fun seedFolderTree() { + FolderTreesUtil.addFolderTree( + context(), + Uri.parse("content://app.opendocument.test/tree/seeded"), + TEST_FOLDER, + ) + } + + /** + * Both stores, not just the recent documents: a folder granted on this device - by a previous + * run, or by hand - would keep the empty state from ever being shown. + */ + private fun clearLandingState() { + context().deleteFile("recent_documents.json") + context().deleteFile("folder_trees.json") + } + + private fun waitForDocumentFragment(activity: MainActivity): Boolean { + val deadline = SystemClock.uptimeMillis() + LOAD_TIMEOUT_MS + + while (SystemClock.uptimeMillis() < deadline) { + val fragment = + activity.supportFragmentManager.findFragmentByTag("document_fragment") + as DocumentFragment? + if (fragment != null) { + return true + } + + SystemClock.sleep(200) + } + + return false + } + + private fun context(): Context = InstrumentationRegistry.getInstrumentation().targetContext + + private fun uriOf(file: File): Uri = + FileProvider.getUriForFile(context(), context().packageName + ".provider", file) + + private fun requireTestFile(): File = checkNotNull(testFile) { "test file was not extracted" } + + companion object { + private const val TEST_DOCUMENT = "test.odt" + private const val TEST_FOLDER = "Seeded folder" + private const val LOAD_TIMEOUT_MS = 20000L + + private var testFile: File? = null + + // @JvmStatic because junit requires @BeforeClass to be static + @JvmStatic + @BeforeClass + fun extractTestFile() { + val instrumentation = InstrumentationRegistry.getInstrumentation() + + val directory = File(instrumentation.targetContext.cacheDir, "test-documents") + directory.mkdirs() + + val target = File(directory, TEST_DOCUMENT) + copy(instrumentation.context.assets.open(TEST_DOCUMENT), target) + + testFile = target + } + + private fun copy(source: InputStream, target: File) { + source.use { input -> FileOutputStream(target).use { output -> input.copyTo(output) } } + } + } +} diff --git a/app/src/androidTest/java/app/opendocument/droid/test/MainActivityTests.kt b/app/src/androidTest/java/app/opendocument/droid/test/MainActivityTests.kt index 67dd71ca98fa..af41435a854c 100644 --- a/app/src/androidTest/java/app/opendocument/droid/test/MainActivityTests.kt +++ b/app/src/androidTest/java/app/opendocument/droid/test/MainActivityTests.kt @@ -16,14 +16,13 @@ import androidx.test.espresso.IdlingRegistry import androidx.test.espresso.IdlingResource import androidx.test.espresso.action.ViewActions.clearText import androidx.test.espresso.action.ViewActions.click +import androidx.test.espresso.action.ViewActions.closeSoftKeyboard import androidx.test.espresso.action.ViewActions.typeText import androidx.test.espresso.assertion.ViewAssertions.matches import androidx.test.espresso.intent.Intents import androidx.test.espresso.intent.matcher.IntentMatchers.hasAction import androidx.test.espresso.matcher.ViewMatchers.isDisplayed -import androidx.test.espresso.matcher.ViewMatchers.isEnabled import androidx.test.espresso.matcher.ViewMatchers.withClassName -import androidx.test.espresso.matcher.ViewMatchers.withContentDescription import androidx.test.espresso.matcher.ViewMatchers.withId import androidx.test.espresso.matcher.ViewMatchers.withText import androidx.test.ext.junit.runners.AndroidJUnit4 @@ -47,8 +46,6 @@ import java.net.URL import java.util.concurrent.CountDownLatch import java.util.concurrent.TimeUnit import java.util.concurrent.atomic.AtomicReference -import org.hamcrest.Matchers.allOf -import org.hamcrest.Matchers.anyOf import org.hamcrest.Matchers.equalTo import org.junit.After import org.junit.AfterClass @@ -120,7 +117,11 @@ class MainActivityTests { // next onView will be blocked until the idling resource is idle, which now covers // the load itself and not just the picker round trip. - clickEditWithOverflowFallback() + waitForDocumentActions() + + unfoldDocumentActions() + + onView(withText(R.string.menu_edit)).check(matches(isDisplayed())) } @Test @@ -131,7 +132,7 @@ class MainActivityTests { // next onView will be blocked until the idling resource is idle, which now covers // the load itself and not just the picker round trip. - clickEditWithOverflowFallback() + waitForDocumentActions() // there used to be a 10s sleep here that asserted nothing, and it is why "testPDF // crashed" was an api 34 bucket of its own: the app is killed whenever play services @@ -173,7 +174,8 @@ class MainActivityTests { // Enter wrong password first onView(withClassName(equalTo("android.widget.EditText"))).perform(typeText("wrongpassword")) - onView(withId(android.R.id.button1)).perform(click()) + // typing leaves the keyboard up, and on a short screen it covers the dialog's buttons + onView(withId(android.R.id.button1)).perform(closeSoftKeyboard(), click()) // Should show password dialog again for wrong password onView(withText("This document is password-protected")).check(matches(isDisplayed())) @@ -182,10 +184,10 @@ class MainActivityTests { onView(withClassName(equalTo("android.widget.EditText"))) .perform(clearText(), typeText("passwort")) - onView(withId(android.R.id.button1)).perform(click()) + onView(withId(android.R.id.button1)).perform(closeSoftKeyboard(), click()) - // Check if edit button becomes available (indicating successful load) - clickEditWithOverflowFallback() + // Check if the document buttons become available (indicating successful load) + waitForDocumentActions() } @Test @@ -254,43 +256,32 @@ class MainActivityTests { ) } + // the landing screen is the only thing offering to open a document now that the toolbar + // action is gone. the fab is the entry point that is there whatever the list holds - the + // empty state has one of its own, but only while it is up, so matching either would be + // ambiguous rather than tolerant. + // + // closeSoftKeyboard first, and it is not decoration: the fab sits in the lower half of the + // screen, where a keyboard left over from an earlier test covers it. the ime window is + // above ours, so the tap lands on it, espresso reports the click as performed, and nothing + // happens - see the note on waitForDocumentActions. private fun openDocumentThroughPicker() { - onView( - allOf( - withId(R.id.menu_open), - withContentDescription("Open document"), - isDisplayed(), - ) - ) - .perform(click()) - - // The menu item could be either Documents or Files. - onView( - allOf( - withId(android.R.id.text1), - anyOf(withText("Documents"), withText("Files")), - isDisplayed(), - ) - ) - .perform(click()) + onView(withId(R.id.landing_open_fab)).perform(closeSoftKeyboard(), click()) } - private fun clickEditWithOverflowFallback() { - onView(allOf(withId(R.id.menu_edit), withContentDescription("Edit document"), isEnabled())) - .withFailureHandler { _, _ -> - // fails on small screens, try again with overflow menu - onView(allOf(withContentDescription("More options"), isDisplayed())) - .perform(click()) - - onView( - allOf( - withId(R.id.menu_edit), - withContentDescription("Edit document"), - isDisplayed(), - ) - ) - .perform(click()) - } + // the buttons of the open document are up once it has loaded, so this blocks on the idling + // resource and then says whether anything came of the load. only the button that unfolds the + // rest is checked: what is inside it differs per format, a pdf cannot be edited. + // + // a click that never reached the app fails here rather than where it happened: nothing was + // ever queued, so the idling resource stays idle, this does not wait, and the landing screen + // is still what is on screen. + private fun waitForDocumentActions() { + onView(withId(R.id.document_actions_more)).check(matches(isDisplayed())) + } + + private fun unfoldDocumentActions() { + onView(withId(R.id.document_actions_more)).perform(click()) } private fun recreate(activity: MainActivity): MainActivity? { diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 1d808574a11a..cc9a00a22ac7 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -72,9 +72,15 @@ activity-alias name does not have to correspond to a real class, so the old names live on as aliases pointing at the relocated activity. --> + + + + + + + diff --git a/app/src/main/res/drawable/ic_add.xml b/app/src/main/res/drawable/ic_add.xml new file mode 100644 index 000000000000..1d6364d4a542 --- /dev/null +++ b/app/src/main/res/drawable/ic_add.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_arrow_upward.xml b/app/src/main/res/drawable/ic_arrow_upward.xml new file mode 100644 index 000000000000..21a35e76a761 --- /dev/null +++ b/app/src/main/res/drawable/ic_arrow_upward.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_block.xml b/app/src/main/res/drawable/ic_block.xml new file mode 100644 index 000000000000..53979f05ff4c --- /dev/null +++ b/app/src/main/res/drawable/ic_block.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_close.xml b/app/src/main/res/drawable/ic_close.xml new file mode 100644 index 000000000000..7a52b3b744f4 --- /dev/null +++ b/app/src/main/res/drawable/ic_close.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_description.xml b/app/src/main/res/drawable/ic_description.xml new file mode 100644 index 000000000000..f28142e0a94f --- /dev/null +++ b/app/src/main/res/drawable/ic_description.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_edit.xml b/app/src/main/res/drawable/ic_edit.xml index 6b75b9362148..30319805b22d 100644 --- a/app/src/main/res/drawable/ic_edit.xml +++ b/app/src/main/res/drawable/ic_edit.xml @@ -1,5 +1,5 @@ + + diff --git a/app/src/main/res/drawable/ic_folder_open.xml b/app/src/main/res/drawable/ic_folder_open.xml index b737fc707168..f417c2a43fb6 100644 --- a/app/src/main/res/drawable/ic_folder_open.xml +++ b/app/src/main/res/drawable/ic_folder_open.xml @@ -1,5 +1,5 @@ + + diff --git a/app/src/main/res/drawable/ic_open_in_new.xml b/app/src/main/res/drawable/ic_open_in_new.xml new file mode 100644 index 000000000000..1bd20d427424 --- /dev/null +++ b/app/src/main/res/drawable/ic_open_in_new.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_pause.xml b/app/src/main/res/drawable/ic_pause.xml index bceda6ffc616..6a1945225486 100644 --- a/app/src/main/res/drawable/ic_pause.xml +++ b/app/src/main/res/drawable/ic_pause.xml @@ -1,5 +1,5 @@ + + diff --git a/app/src/main/res/drawable/ic_save.xml b/app/src/main/res/drawable/ic_save.xml index 2f61db8e136d..1aec3cd2054a 100644 --- a/app/src/main/res/drawable/ic_save.xml +++ b/app/src/main/res/drawable/ic_save.xml @@ -1,5 +1,5 @@ + + diff --git a/app/src/main/res/drawable/ic_skip_next.xml b/app/src/main/res/drawable/ic_skip_next.xml index 28cb195a6fbe..6f69ba5e78c2 100644 --- a/app/src/main/res/drawable/ic_skip_next.xml +++ b/app/src/main/res/drawable/ic_skip_next.xml @@ -1,5 +1,5 @@ + + diff --git a/app/src/main/res/layout/dialog_progress.xml b/app/src/main/res/layout/dialog_progress.xml new file mode 100644 index 000000000000..c1674b925d5d --- /dev/null +++ b/app/src/main/res/layout/dialog_progress.xml @@ -0,0 +1,24 @@ + + + + + + + diff --git a/app/src/main/res/layout/fragment_document.xml b/app/src/main/res/layout/fragment_document.xml index ff854beddbc6..774974211d26 100644 --- a/app/src/main/res/layout/fragment_document.xml +++ b/app/src/main/res/layout/fragment_document.xml @@ -1,20 +1,34 @@ - - - + android:layout_height="match_parent" + android:orientation="vertical"> - + + + - + diff --git a/app/src/main/res/layout/fragment_landing.xml b/app/src/main/res/layout/fragment_landing.xml new file mode 100644 index 000000000000..86eec3767cda --- /dev/null +++ b/app/src/main/res/layout/fragment_landing.xml @@ -0,0 +1,23 @@ + + + + + + + diff --git a/app/src/main/res/layout/item_document_action.xml b/app/src/main/res/layout/item_document_action.xml new file mode 100644 index 000000000000..2cdcae9f12a5 --- /dev/null +++ b/app/src/main/res/layout/item_document_action.xml @@ -0,0 +1,29 @@ + + + + + + + + diff --git a/app/src/main/res/layout/item_landing_empty.xml b/app/src/main/res/layout/item_landing_empty.xml new file mode 100644 index 000000000000..bb7eb0841ae8 --- /dev/null +++ b/app/src/main/res/layout/item_landing_empty.xml @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/item_landing_header.xml b/app/src/main/res/layout/item_landing_header.xml new file mode 100644 index 000000000000..6061f8c9634f --- /dev/null +++ b/app/src/main/res/layout/item_landing_header.xml @@ -0,0 +1,12 @@ + + diff --git a/app/src/main/res/layout/item_landing_message.xml b/app/src/main/res/layout/item_landing_message.xml new file mode 100644 index 000000000000..b0ff9b85703c --- /dev/null +++ b/app/src/main/res/layout/item_landing_message.xml @@ -0,0 +1,11 @@ + + diff --git a/app/src/main/res/layout/item_landing_row.xml b/app/src/main/res/layout/item_landing_row.xml new file mode 100644 index 000000000000..3749b1da069e --- /dev/null +++ b/app/src/main/res/layout/item_landing_row.xml @@ -0,0 +1,47 @@ + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/item_landing_switch.xml b/app/src/main/res/layout/item_landing_switch.xml new file mode 100644 index 000000000000..ddaade227adb --- /dev/null +++ b/app/src/main/res/layout/item_landing_switch.xml @@ -0,0 +1,43 @@ + + + + + + + + + + + + diff --git a/app/src/main/res/layout/main.xml b/app/src/main/res/layout/main.xml index 9027b0daa65b..98ed0f401450 100644 --- a/app/src/main/res/layout/main.xml +++ b/app/src/main/res/layout/main.xml @@ -1,13 +1,16 @@ + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + android:layout_below="@id/ad_container" /> diff --git a/app/src/main/res/layout/view_document_actions.xml b/app/src/main/res/layout/view_document_actions.xml new file mode 100644 index 000000000000..429e0cdbc957 --- /dev/null +++ b/app/src/main/res/layout/view_document_actions.xml @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/menu/menu_main.xml b/app/src/main/res/menu/menu_main.xml deleted file mode 100644 index 9c0df3c4e1b0..000000000000 --- a/app/src/main/res/menu/menu_main.xml +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/values-ca-rES/strings.xml b/app/src/main/res/values-ca-rES/strings.xml index 8753e4821bee..ae83a9a811f8 100644 --- a/app/src/main/res/values-ca-rES/strings.xml +++ b/app/src/main/res/values-ca-rES/strings.xml @@ -5,14 +5,10 @@ No sembla que sigui un format de fitxer compatible. S\'ha esgotat la memòria del telèfon. Massa imatges o fitxer massa gran. El document està protegit per contrasenya - Documents recents - Obre el document mitjançant: S\'està carregant… S\'està pujant… No s\'ha pogut obrir el document perquè el seu format no és compatible. Voleu pujar-lo temporalment al nostre servidor per tal que us el puguem mostrar de totes maneres? - No s\'ha trobat cap document Cerca - Obre Google Cloud Print Text-a-paraula Anterior diff --git a/app/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml index 580053f4aa1a..7a43fe8ee430 100644 --- a/app/src/main/res/values-ca/strings.xml +++ b/app/src/main/res/values-ca/strings.xml @@ -5,19 +5,13 @@ No sembla que sigui un format de fitxer compatible. S\'ha esgotat la memòria del telèfon. Massa imatges o fitxer massa gran. El document està protegit per contrasenya - Documents recents - Obre el document mitjançant: S\'està carregant… S\'està pujant… No s\'ha pogut obrir el document perquè el seu format no és compatible. Voleu pujar-lo temporalment al nostre servidor per tal que us el puguem mostrar de totes maneres? - Trieu un fitxer del dispositiu - No s\'ha trobat cap document Cerca - Obre Mode de pantalla completa Google Cloud Print Text-a-paraula - Premeu Enrere per abandonar el mode de pantalla completa Anterior Següent Cerca a la pàgina diff --git a/app/src/main/res/values-cs-rCZ/strings.xml b/app/src/main/res/values-cs-rCZ/strings.xml index 29d67bbf9275..b2e8872661d6 100644 --- a/app/src/main/res/values-cs-rCZ/strings.xml +++ b/app/src/main/res/values-cs-rCZ/strings.xml @@ -5,14 +5,10 @@ Pravděpodobně se nejedná o podporovaný formát souboru. Nedostatek paměti v telefonu! Soubor je příliš velký, nebo obsahuje příliš mnoho obrázků. Dokument je chráněn heslem - Nedávné dokumenty - Otevřít dokument pomocí: Probíhá načítání… Probíhá odesílání… Nelze otevřít soubor, protože nepodporujeme jeho formát. Chcete jej zobrazit tak, že jej dočasně nahrajete na náš server? - Nebyly nalezeny žádné dokunety Vyhledat - Otevřít Upravit dokument Google Cloud Print Převést text na řeč diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index ec0be74c59e2..98f98d1eeb9c 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -5,20 +5,14 @@ Pravděpodobně se nejedná o podporovaný formát souboru. Nedostatek paměti v telefonu! Soubor je příliš velký, nebo obsahuje příliš mnoho obrázků. Dokument je chráněn heslem - Nedávné dokumenty - Otevřít dokument pomocí: Probíhá načítání… Probíhá odesílání… Nelze otevřít soubor, protože nepodporujeme jeho formát. Chcete jej zobrazit tak, že jej dočasně nahrajete na náš server? - Vyberte soubor ze zažízení - Nebyly nalezeny žádné dokunety Vyhledat - Otevřít Upravit dokument Celá obrazovka Google Cloud Print Převést text na řeč - Pro opuštění režimu celé obrazovky stiskněte tlačítko Zpět Předchozí Následující Najít na stránce diff --git a/app/src/main/res/values-da-rDK/strings.xml b/app/src/main/res/values-da-rDK/strings.xml index 9bbce203bba0..550e6e876f81 100644 --- a/app/src/main/res/values-da-rDK/strings.xml +++ b/app/src/main/res/values-da-rDK/strings.xml @@ -5,15 +5,10 @@ Det ser ikke ud til, at denne filtype kan bruges. Enheden har ikke mere plads i hukommelsen. Filen er enten for stor eller indeholder for mange billeder. Dokumentet er låst med et kodeord - Seneste dokumenter - Åbn dokument med: Indlæser … Uploader … Dokumentet kan desværre ikke åbnes, fordi appen ikke understøtter formatet. Vil du uploade din fil til vores server midlertidigt, så vi kan åbne den alligevel? - Ingen dokumenter fundet - Senest åbnede dokumenter Søg - Åbn Rediger dokument Fjern reklamer Print dokument diff --git a/app/src/main/res/values-da/strings.xml b/app/src/main/res/values-da/strings.xml index 02ba47a1747f..af1932acb052 100644 --- a/app/src/main/res/values-da/strings.xml +++ b/app/src/main/res/values-da/strings.xml @@ -5,22 +5,15 @@ Det ser ikke ud til, at denne filtype kan bruges. Enheden har ikke mere plads i hukommelsen. Filen er enten for stor eller indeholder for mange billeder. Dokumentet er låst med et kodeord - Seneste dokumenter - Åbn dokument med: Indlæser … Uploader … Dokumentet kan desværre ikke åbnes, fordi appen ikke understøtter formatet. Vil du uploade din fil til vores server midlertidigt, så vi kan åbne den alligevel? - Vælg fil på enheden - Ingen dokumenter fundet - Senest åbnede dokumenter Søg - Åbn Rediger dokument Fjern reklamer Åben fuldskærmsvisning Print dokument Tekst-Til-Tale - Tryk Tilbage for at forlade fuldskærmsvisning Kunne ikke åbne den valgte app. Forrige Næste @@ -34,9 +27,4 @@ Sat på pause. Færdig. Udskriver… - - Fjern reklamer forevigt - Remove ads for a month - Fjern reklamer midlertidigt ved at se en kort video - diff --git a/app/src/main/res/values-de-rDE/strings.xml b/app/src/main/res/values-de-rDE/strings.xml index 3471eb898135..91f020fe879a 100644 --- a/app/src/main/res/values-de-rDE/strings.xml +++ b/app/src/main/res/values-de-rDE/strings.xml @@ -7,17 +7,12 @@ Datei konnte nicht gespeichert werden. Bitte kontaktiere support@opendocument.app Speicher geht zur Neige! Zu viele Bilder oder eine zu große Datei. Dokument ist passwort-geschützt - Kürzlich geöffnete Dokumente - Öffne Dokument mittels: Lädt… Lädt hoch… Bitte warten. Dies kann einige Minuten dauern. Hochgeladene Dateien sind anonym und werden nach 24 Stunden automatisch gelöscht. Dieses Dokument kann nicht geöffnet werden, weil wir dessen Format nicht unterstützen. Willst du es temporär auf unsere Server hochladen, damit wir es trotzdem für dich anzeigen können? Hochgeladene Dateien sind privat und werden automatisch nach 24 Stunden gelöscht. - Keine Dokumente gefunden - Kürzlich geöffnete Dokumente In Dokument suchen - Dokument öffnen Dokument bearbeiten Werbung entfernen Dokument drucken @@ -32,10 +27,6 @@ Vorheriges Speichern Bearbeite dein Dokument und tippe Speichern - Willkommen bei \nOpenDocument Reader - OpenDocument Reader ermöglicht Ihnen, Dokumente, die im OpenDocument Format (.odt, .ods, .odp und .odg) gespeichert sind, zu lesen - wo auch immer Sie sind. - Mit dem OpenDocument Reader können Sie im Handumdrehen Ihre Dokumente lesen und durchsuchen. - Einen letzten Tippfehler kurz vor der großen Präsentation gefunden? Änderungen werden nun auch unterstützt! Diese App registriert sich standardmäßig für alle Dateitypen um Apps wie \"Samsung My Files\" zu unterstützen. Sie können diese Funktion hier deaktivieren, wenn sie Probleme für Sie verursacht. Wird vorgelesen… Wird initialisiert… diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 94d6acabd23a..1419b48022ea 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -7,25 +7,17 @@ Datei konnte nicht gespeichert werden. Bitte kontaktiere support@opendocument.app Speicher geht zur Neige! Zu viele Bilder oder eine zu große Datei. Dokument ist passwort-geschützt - Kürzlich geöffnete Dokumente - Öffne Dokument mittels: Lädt… Lädt hoch… Bitte warten. Dies kann einige Minuten dauern. Hochgeladene Dateien sind anonym und werden nach 24 Stunden automatisch gelöscht. - Werbung für eine kleine Gebühr entfernen: Dieses Dokument kann nicht geöffnet werden, weil wir dessen Format nicht unterstützen. Willst du es temporär auf unsere Server hochladen, damit wir es trotzdem für dich anzeigen können? Hochgeladene Dateien sind privat und werden automatisch nach 24 Stunden gelöscht. - Wähle eine Datei von diesem Gerät - Keine Dokumente gefunden - Kürzlich geöffnete Dokumente In Dokument suchen - Dokument öffnen Dokument bearbeiten Werbung entfernen Vollbildmodus aktivieren Dokument drucken Sprachausgabe - Drücke Zurück um den Vollbild-Modus zu verlassen App konnte nicht geöffnet werden. Vorheriges Nächstes @@ -36,10 +28,6 @@ Vorheriges Speichern Bearbeite dein Dokument und tippe Speichern - Willkommen bei \nOpenDocument Reader - OpenDocument Reader ermöglicht Ihnen, Dokumente, die im OpenDocument Format (.odt, .ods, .odp und .odg) gespeichert sind, zu lesen - wo auch immer Sie sind. - Mit dem OpenDocument Reader können Sie im Handumdrehen Ihre Dokumente lesen und durchsuchen. - Einen letzten Tippfehler kurz vor der großen Präsentation gefunden? Änderungen werden nun auch unterstützt! Diese App registriert sich standardmäßig für alle Dateitypen um Apps wie \"Samsung My Files\" zu unterstützen. Sie können diese Funktion hier deaktivieren, wenn sie Probleme für Sie verursacht. Wird vorgelesen… Wird initialisiert… @@ -49,18 +37,5 @@ Beendet. Dokument gespeichert. Wird gedruckt… - Drucken ist auf Ihrem Gerät nicht möglich. Bitte aktualisieren Sie auf eine neuere Version von Android. - Öffnen und lesen Sie Ihre ODF-Datei unterwegs! - OpenDocument Reader kann Dokumente anzeigen, die im OpenDocument-Format (.odt, .ods, .odp und .odg) gespeichert sind. Diese Dateien werden in der Regel mit LibreOffice oder OpenOffice erstellt. Diese App ermöglicht es solche Dateien auf Ihrem mobilen Gerät zu öffnen, so dass Sie unterwegs gelesen werden können. - Einen Tippfehler gefunden? Änderungen werden jetzt auch unterstützt! - OpenDocument Reader erlaubt nicht nur Dokumente auf Ihrem mobilen Gerät zu lesen, sondern unterstützt auch, sie zu ändern. Tippfehler sind schnell behoben, auch unterwegs! - Lesen Sie Ihre Dokumente aus anderen Apps heraus - OpenDocument Reader unterstützt eine Vielzahl anderer Apps, um Dokumente zu öffnen. Ein Kollege hat eine Präsentation via Gmail gesendet? Klicken Sie auf den Anhang und diese App wird sofort geöffnet! - LOS Brauchen Sie mehr Platz zum Lesen? Entfernen Sie Werbung kostenlos über das Menü. - - Werbung für immer entfernen - Werbung für ein Monat entfernen - Werbung gratis entfernen durch Ansehen eines kurzen Videos - diff --git a/app/src/main/res/values-es-rES/strings.xml b/app/src/main/res/values-es-rES/strings.xml index e9f7dfc01583..bfa56730e803 100644 --- a/app/src/main/res/values-es-rES/strings.xml +++ b/app/src/main/res/values-es-rES/strings.xml @@ -6,17 +6,12 @@ ¿No está contento con cómo se muestra el archivo? Abrir en su lugar en otra aplicación. ¡El teléfono se ha quedado sin memoria! Hay demasiadas imágenes o el archivo es demasiado grande. El documento está protegido con contraseña. - Documentos recientes - Abrir el documento con: Cargando… Subiendo… Por favor, espere, esto podría tardar unos minutos. Los archivos cargados son privados y automáticamente eliminados después de 24 horas. No podemos abrir este documento porque el formato no es compatible. ¿Desea subirlo temporalmente a nuestro servidor para que podamos mostrárselo? Los archivos subidos son privados y se eliminan automáticamente después de 24 horas. - No se ha encontrado ningún documento. - Documentos abiertos recientemente Buscar - Abrir Editar Eliminar anuncios Imprimir @@ -31,10 +26,6 @@ Anterior Guardar Edita el documento a continuación y pulsa Guardar. - Le damos la bienvenida a \nOpenDocument Reader - OpenDocument Reader le permite ver documentos almacenados en formato OpenDocument (.odt, .ods, .odp y .odg) dondequiera que se encuentre. - Con OpenDocument Reader puede leer y buscar en los documentos en un abrir y cerrar de ojos. - ¿Ha encontrado una errata que tiene que corregir justo antes de su gran presentación? ¡Ahora también permite modificaciones! Esta aplicación se registra para abrir todos los tipos de archivos de forma predeterminada para que sea compatible con aplicaciones como «Mis archivos» de Samsung. Puede desactivar esta función aquí si le causa problemas. Leyendo... Iniciando TTS... diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 51cd46d16b5b..a747ed382aee 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -4,29 +4,19 @@ Ha sido imposible encontrar el archivo. ¿Seguro que no se ha eliminado? Parece que este formato de archivo no es compatible. ¿No está contento con cómo se muestra el archivo? Abrir en su lugar en otra aplicación. - No se ha encontrado ninguna aplicación en el dispositivo que soporte este tipo de archivo. ¡El teléfono se ha quedado sin memoria! Hay demasiadas imágenes o el archivo es demasiado grande. El documento está protegido con contraseña. - Se requiere permiso para leer y guardar documentos - Documentos recientes - Abrir el documento con: Cargando… Subiendo… Por favor, espere, esto podría tardar unos minutos. Los archivos cargados son privados y automáticamente eliminados después de 24 horas. - Compra nuevas funciones: No podemos abrir este documento porque el formato no es compatible. ¿Desea subirlo temporalmente a nuestro servidor para que podamos mostrárselo? Los archivos subidos son privados y se eliminan automáticamente después de 24 horas. - Elige el archivo del dispositivo. - No se ha encontrado ningún documento. - Documentos abiertos recientemente Buscar - Abrir Editar Eliminar anuncios Modo a pantalla completa Imprimir Reconocimiento de voz - Pulsa Volver para salir del modo a pantalla completa. Ha sido imposible abrir esta aplicación. Anterior Siguiente @@ -37,10 +27,6 @@ Anterior Guardar Edita el documento a continuación y pulsa Guardar. - Le damos la bienvenida a \nOpenDocument Reader - OpenDocument Reader le permite ver documentos almacenados en formato OpenDocument (.odt, .ods, .odp y .odg) dondequiera que se encuentre. - Con OpenDocument Reader puede leer y buscar en los documentos en un abrir y cerrar de ojos. - ¿Ha encontrado una errata que tiene que corregir justo antes de su gran presentación? ¡Ahora también permite modificaciones! Esta aplicación se registra para abrir todos los tipos de archivos de forma predeterminada para que sea compatible con aplicaciones como «Mis archivos» de Samsung. Puede desactivar esta función aquí si le causa problemas. Leyendo... Iniciando TTS... @@ -49,19 +35,6 @@ En pausa. Acabado. Imprimiendo… - La impresión no está disponible en su dispositivo. Por favor, actualice a una nueva versión de Android. - ¡Abra y lea su archivo ODF desde cualquier lugar! - OpenDocument Reader le permite ver documentos almacenados en formato OpenDocument (.odt, .ods, .odp y .odg). Estos archivos se suelen crear utilizando LibreOffice u OpenOffice. Esta aplicación permite abrir estos archivos también en su dispositivo móvil, para que pueda leerlos desde cualquier lugar. - ¿Encontró un error tipográfico en su documento? ¡Ahora permite hacer modificaciones! - OpenDocument Reader no solo permite leer documentos en su dispositivo móvil, sino que también puede modificarlos. ¡Los errores tipográficos se arreglan en un abrir y cerrar de ojos, incluso en el tren! - Lea sus documentos desde otras aplicaciones - OpenDocument Reader es compatible con una amplia gama de aplicaciones, y puede abrir los documentos creados con ellas. ¿Un compañero ha enviado una presentación a través de Gmail? ¡Haga clic en el archivo adjunto y la aplicación se abrirá de inmediato! - COMENZAR ¿Necesita más espacio para leer? Elimine los anuncios de forma gratuita a través del menú. Abrir usando otra aplicación instalada en tu dispositivo: - - Elimina los anuncios definitivamente - Remove ads for a month - Eliminar los anuncios temporalmente gratis viendo un vídeo corto - diff --git a/app/src/main/res/values-fr-rFR/strings.xml b/app/src/main/res/values-fr-rFR/strings.xml index 294beecbd0ba..6b1a03506473 100644 --- a/app/src/main/res/values-fr-rFR/strings.xml +++ b/app/src/main/res/values-fr-rFR/strings.xml @@ -10,17 +10,12 @@ Le fichier n\'a pas pu être enregistré. Veuillez contacter support@opendocument.app Place insuffisante dans la mémoire de l\'appareil ! Il y a trop d\'images ou les fichiers sont trop volumineux. Ce document est protégé par mot de passe - Documents récents - Ouvrir les documents via : Chargement en cours… Téléchargement en cours… Veuillez patienter. Cette action peut prendre quelques minutes. Les fichiers envoyés sont privés et supprimés automatiquement au bout de 24 heures. Impossible d\'ouvrir ce document car son format n\'est pas supporté. Voulez-vous l\'héberger temporairement sur notre serveur pour le visualiser ? Les fichiers téléchargés sont privés et automatiquement supprimés après 24 heures. - Aucun document trouvé - Documents récemment ouverts Rechercher - Ouvrir Ouvrir avec… Partager le document Modifier @@ -38,10 +33,6 @@ Précédent Enregistrer Modifiez votre document ci-dessous et appuyez sur Enregistrer - Bienvenue dans OpenDocument Reader - OpenDocument Reader vous permet de visualiser les documents enregistrés au format OpenDocument (.odt, .ods, .odp et .odg) où que vous soyez. - Grâce à OpenDocument Reader, vous pouvez lire et rechercher dans vos documents facilement et rapidement. - Vous avez trouvé une faute de frappe dans votre présentation ? Il est désormais possible de la corriger ! Par défaut OpenDocument Reader est associé à tous les types de fichiers afin de pouvoir les ouvrir facilement depuis les applications comme \"Samsung My Files\". Si besoin, ce comportement peut être désactivé ici. Lecture… Initialisation du TTS… @@ -55,11 +46,5 @@ Ouvrir avec une autre application installée sur votre appareil : OK - Vos modifications ne sont pas enregistrées - Les enregistrer maintenant ? - Oui - Ignorer les modifications Annuler - Erreur - Retour aux documents diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index b5f16153f034..bcfa84ac21c4 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -6,31 +6,21 @@ Ce format de fichier ne semble pas être supporté. Le format de ce fichier n\'est pas pris en charge. Essayez de l\'ouvrir avec une autre application. Vous n\'êtes pas satisfaits de l\'affichage du fichier ? Ouvrez-le avec une autre application. - Aucune application sur l\'appareil ne gère ce type de fichier. Aucun dossier pour enregistrer le fichier sélectionné. Le fichier n\'a pas pu être enregistré. Veuillez contacter support@opendocument.app Place insuffisante dans la mémoire de l\'appareil ! Il y a trop d\'images ou les fichiers sont trop volumineux. Ce document est protégé par mot de passe - Autorisation requise pour lire et enregistrer les documents - Documents récents - Ouvrir les documents via : Chargement en cours… Téléchargement en cours… Veuillez patienter. Cette action peut prendre quelques minutes. Les fichiers envoyés sont privés et supprimés automatiquement au bout de 24 heures. - Acheter de nouvelles fonctions : Impossible d\'ouvrir ce document car son format n\'est pas supporté. Voulez-vous l\'héberger temporairement sur notre serveur pour le visualiser ? Les fichiers téléchargés sont privés et automatiquement supprimés après 24 heures. - Fichiers de l\'appareil - Aucun document trouvé - Documents récemment ouverts Rechercher - Ouvrir Modifier Supprimer les publicités Mode plein écran Imprimer Synthèse vocale - Appuyez sur précédent pour quitter le mode plein écran Impossible d\'ouvrir cette appli. Précédent Suivant @@ -40,12 +30,7 @@ Suivant Précédent Enregistrer - Aide Modifiez votre document ci-dessous et appuyez sur Enregistrer - Bienvenue dans OpenDocument Reader - OpenDocument Reader vous permet de visualiser les documents enregistrés au format OpenDocument (.odt, .ods, .odp et .odg) où que vous soyez. - Grâce à OpenDocument Reader, vous pouvez lire et rechercher dans vos documents facilement et rapidement. - Vous avez trouvé une faute de frappe dans votre présentation ? Il est désormais possible de la corriger ! Par défaut OpenDocument Reader est associé à tous les types de fichiers afin de pouvoir les ouvrir facilement depuis les applications comme \"Samsung My Files\". Si besoin, ce comportement peut être désactivé ici. Lecture… Initialisation du TTS… @@ -55,19 +40,6 @@ Terminé. Document enregistré. Impression… - L’impression n’est pas disponible sur votre appareil. Veuillez mettre à niveau Android vers une version plus récente. - Ouvrez et lisez votre fichier ODF n’importe où ! - OpenDocument Reader vous permet de visualiser, sur votre appareil mobile, les documents enregistrés au format OpenDocument (.odt, .ods, .odp et .odg). Ces fichiers sont généralement créés avec LibreOffice ou OpenOffice. - Vous avez trouvé une faute de frappe dans votre document ? Il est désormais possible de la corriger ! - OpenDocument Reader permet non seulement de lire des documents mais aussi de les modifier sur votre appareil mobile. Vous pouvez corriger les fautes de frappe y compris dans le train ! - Lisez vos documents depuis d’autres applications - OpenDocument Reader prend en charge un grand nombre d’autres applications depuis lesquelles il est possible d’ouvrir des documents. Un collègue a envoyé une présentation via Gmail ? Cliquez sur la pièce jointe et cette application s’ouvrira instantanément ! - DÉMARRER Besoin d’espace pour mieux lire ? Supprimez les publicités gratuitement depuis le menu. Ouvrir avec une autre application installée sur votre appareil : - - Supprimer les pubs définitivement - Remove ads for a month - Supprimer temporairement et gratuitement les pubs en regardant une courte vidéo - diff --git a/app/src/main/res/values-ga-rIE/strings.xml b/app/src/main/res/values-ga-rIE/strings.xml index 411a71bb13f0..e2674f2ab2e0 100644 --- a/app/src/main/res/values-ga-rIE/strings.xml +++ b/app/src/main/res/values-ga-rIE/strings.xml @@ -9,17 +9,12 @@ Níorbh fhéidir an comhad a chur i dtaisce. Déan teagmháil le support@opendocument.app Níl cuimhne fágtha sa ghuthán! Tá an iomarca grianghraif ann nó tá an comhad rómhór. Tá an cháipéis faoi chosaint focal faire - Comhaid le déanaí - Oscail an cháipéis trí: Ag luchtú… Á uasluchtú… Fan. B\'fhéidir go dtógfaidh sé seo roinnt nóiméid. Bíonn comhaid uasluchtaithe príobháideach agus scriostar iad tar éis 24 uair an chloig. Ní thig linn an cháipéis seo a oscailt mar ní thugtar tacaíocht don chineál comhad sin. An mian leat í a uasluchtú go sealadach chuig ár bhfreastalaí ionas gur féidir linn í a thaispeáint duit? - Níor aimsíodh cáipéis ar bith - Cáipéisí a osclaíodh le déanaí Cuardaigh - Oscail Oscail le... Comhroinn an cháipéis Cuir an cháipéis in eagar @@ -36,10 +31,6 @@ Roimhe Taisc Cuir do cháipéis in eagar thíos agus brúigh ar Taisc - Fáilte go \nOpenDocument Reader - Le OpenDocument Reader, tá tú in ann breathnú ar cháipéisí atá i bhformáid OpenDocument (.odt, .ods, .odp, agus .odg) pé áit ina bhfuil tú. - Le hOpenDocument Reader, is féidir leat do chuid cáipéisí a léamh agus a chuardach go héasca. - Ar aimsigh tú aon bhotún amháin eile atá le ceartú sula ndéanann tú do chur i láthair? Anois is féidir athruithe a dhéanamh freisin! Mar réamhshocrú, cláraíonn an feidhmchláirín seo gach cineál comhad mar oscailte chun tacú le feidhmchláiríní amhail \"Samsung My Files\". Tig leat an ghné sin a chur as anseo má chruthaíonn sí fadhbanna duit. Ag léamh… Ag tosú téacs go teanga… @@ -53,11 +44,5 @@ Oscail ag baint feidhm as feidhmchláirín eile atá suiteáilte ar do ghaireas: Tá go maith - Tá athruithe ann nár cuireadh i dtaisce - Cuir i dtaisce anois iad? - Cuir - Cuileáil na hathruithe Cealaigh - Earráid - Ar ais chuig na cáipéisí diff --git a/app/src/main/res/values-ga/strings.xml b/app/src/main/res/values-ga/strings.xml index 10e5d92e041e..243fdd638921 100644 --- a/app/src/main/res/values-ga/strings.xml +++ b/app/src/main/res/values-ga/strings.xml @@ -4,29 +4,19 @@ Níorbh fhéidir an comhad a fháil. B\'fhéidir nach ann dó a thuilleadh? Tá an dealramh air nach dtugtar tacaíocht den chineál comhad sin. An é nach bhfuil tú sásta leis an mbealach ina thaispeántar an comhad? Oscail le feidhmchlár eile é ina ionad sin. - Níor aimsíodh aon fheidhmchlár ar an ngléas a thugann tacaíocht don chineál comhad sin. Níl cuimhne fágtha sa ghuthán! Tá an iomarca grianghraif ann nó tá an comhad rómhór. Tá an cháipéis faoi chosaint focal faire - Tá cead de dhíth chun cáipéisí a léamh agus chun iad a chur i dtaisce - Comhaid le déanaí - Oscail an cháipéis trí: Ag luchtú… Á uasluchtú… Fan. B\'fhéidir go dtógfaidh sé seo roinnt nóiméid. Bíonn comhaid uasluchtaithe príobháideach agus scriostar iad tar éis 24 uair an chloig. - Bain fógraí le táille bheag: Ní thig linn an cháipéis seo a oscailt mar ní thugtar tacaíocht don chineál comhad sin. An mian leat í a uasluchtú go sealadach chuig ár bhfreastalaí ionas gur féidir linn í a thaispeáint duit? - Roghnaigh comhad ón ngléas - Níor aimsíodh cáipéis ar bith - Cáipéisí a osclaíodh le déanaí Cuardaigh - Oscail Cuir an cháipéis in eagar Bain na fógraí Lánscáileán Clóbhuail an cháipéis Téacs-Go-Glór - Brúigh Siar chun an lánscáileán a fhágáil Níorbh fhéidir an feidhmchláirín roghnaithe a oscailt. Roimhe Ar aghaidh @@ -37,10 +27,6 @@ Roimhe Taisc Cuir do cháipéis in eagar thíos agus brúigh ar Taisc - Fáilte go \nOpenDocument Reader - Le OpenDocument Reader, tá tú in ann breathnú ar cháipéisí atá i bhformáid OpenDocument (.odt, .ods, .odp, agus .odg) pé áit ina bhfuil tú. - Le hOpenDocument Reader, is féidir leat do chuid cáipéisí a léamh agus a chuardach go héasca. - Ar aimsigh tú aon bhotún amháin eile atá le ceartú sula ndéanann tú do chur i láthair? Anois is féidir athruithe a dhéanamh freisin! Mar réamhshocrú, cláraíonn an feidhmchláirín seo gach cineál comhad mar oscailte chun tacú le feidhmchláiríní amhail \"Samsung My Files\". Tig leat an ghné sin a chur as anseo má chruthaíonn sí fadhbanna duit. Ag léamh… Ag tosú TTS… @@ -49,19 +35,6 @@ Curtha ar sos. Críochnaithe. Ag clóbhualadh… - Ní féidir clóbhualadh ó do ghaireas. Uasghrádaigh chuig leagan níos nuaí de Android. - Oscail agus léigh do chomhad ODF agus tú ar shiúl! - Le OpenDocument Reader, ligtear duit breathnú ar cháipéisí atá i bhformáid OpenDocument (.odt, .ods, .odp, agus .odg). De ghnáth, cruthaítear na cáipéisí sin le LibreOffice nó le OpenOffice. Leis an bhfeidhmchláirín seo, ligtear duit na cineálacha comhaid sin a oscailt ar do ghaireas soghluaiste freisin, ionas gur féidir leat iad a léamh agus tú ar shiúl. - Ar aimsigh tú botún i do cháipéis? Anois is féidir athruithe a dhéanamh! - Ní hamháin go ligtear duit le OpenDocument Reader cáipéisí a léamh ar do ghaireas soghluaiste, ach is féidir iad a athrú freisin. Is féidir botúin a cheartú go pras, fiú más ar thraein atá tú! - Léigh do chuid cáipéisí ó laistigh d\'fheidhmchláiríní eile - Le OpenDocument Reader, tugtar tacaíocht do réimse mór feidhmchláiríní eile inar féidir cáipéisí a oscailt iontu. Ar sheol comhghleacaí leat cur i láthair chugat trí Gmail? Brúigh ar an gceangaltán agus osclóidh an feidhmchláirín seo láithreach bonn! - TOSAIGH An bhfuil a thuilleadh slí de dhíth ort? Bain fógraí saor in aisce tríd an roghchlár. Oscail ag baint feidhm as feidhmchláirín eile atá suiteáilte ar do ghaireas: - - Bain na fógraí go deo - Remove ads for a month - Bain fógraí go sealadach saor in aisce trí bhreathnú ar fhíseán gearr - diff --git a/app/src/main/res/values-hi-rIN/strings.xml b/app/src/main/res/values-hi-rIN/strings.xml index 32a0a7dbe213..5dcc546ebee8 100644 --- a/app/src/main/res/values-hi-rIN/strings.xml +++ b/app/src/main/res/values-hi-rIN/strings.xml @@ -9,8 +9,6 @@ फ़ाइल save नहीं हो पाया। कृपया support@opendocument.app पर संपर्क करें फ़ोन मे मेमोरी नही है। फ़ोन में बहुत अधिक चित्र हैं, या फ़ाइल बहुत बड़ी है। यह फ़ाइल पासवर्ड द्वारा सुरक्षित है। - ताज़ा दस्तावेज़ - दस्तावेज़ खोलें via: लोड हो रहा है… अपलोड हो रहा है... कृपया प्रतीक्षा करें, इसमें कुछ सेकंड लग सकते हैं diff --git a/app/src/main/res/values-it-rIT/strings.xml b/app/src/main/res/values-it-rIT/strings.xml index 9c673c887683..9cf408758e42 100644 --- a/app/src/main/res/values-it-rIT/strings.xml +++ b/app/src/main/res/values-it-rIT/strings.xml @@ -9,17 +9,12 @@ Impossibile salvare il file. Si prega di contattare support@opendocument.app Memoria del telefono esaurita! Troppe immagini o file troppo grandi. Il documento è protetto da password. - Documenti recenti - Apri documento tramite: Caricamento in corso… Caricamento... Si prega di attendere. Questo potrebbe richiedere alcuni minuti. I file caricati sono privati e automaticamente cancellati dopo 24 ore. Non siamo in grado di aprire questo documento, perché non supportiamo il suo formato. Vuoi caricarlo temporaneamente sul nostro server, in modo da poter visualizzarlo comunque? I file caricati sono privati e cancellati automaticamente dopo 24 ore. - Nessun documento trovato - Documenti aperti di recente Cerca nel documento - Apri documento Apri con... Condividi documento Modifica documento @@ -36,10 +31,6 @@ Precedente Salva Modifica il tuo documento qui sotto e premi Salva - Benvenuto in \nOpenDocument Reader - OpenDocument Reader ti consente di visualizzare i documenti che sono archiviati in formato OpenDocument (.odt, .ods, .odp e .odg) ovunque tu sia. - Con OpenDocument Reader puoi leggere e cercare tra i tuoi documenti in un attimo. - Trovato un ultimo errore di battitura da correggere prima della tua grande presentazione? Ora anche le modifiche sono supportate! Questa app si registra per aprire tutti i tipi di file per impostazione predefinita, per supportare app come \"Samsung My Files\". Puoi disattivare questa funzione qui, se causa problemi. Lettura in corso... Inizializzazione del TTS ... @@ -53,11 +44,5 @@ Apri usando un\'altra app installata sul tuo dispositivo: Ok - Ci sono modifiche non salvate - Salvare ora le modifiche? - - Scarta modifiche Annulla - Errore - Torna ai documenti diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 53f38a5b071c..e628c6190897 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -5,23 +5,15 @@ Questo non sembra essere un formato di file supportato. Memoria del telefono esaurita! Troppe immagini o file troppo grandi. Il documento è protetto da password. - Documenti recenti - Apri documento tramite: Caricamento in corso… Caricamento... - Rimuovere gli annunci pubblicitari per una piccola somma: Non siamo in grado di aprire questo documento, perché non supportiamo il suo formato. Vuoi caricarlo temporaneamente sul nostro server, in modo da poter visualizzarlo comunque? I file caricati sono privati e cancellati automaticamente dopo 24 ore. - Scegli il file dal dispositivo - Nessun documento trovato - Documenti aperti di recente Cerca nel documento - Apri documento Modifica documento Rimuovi pubblicità Apri in modalità schermo intero Stampa il documento Sintesi vocale - Premi Indietro per uscire dalla modalità a schermo intero Impossibile aprire l\'app selezionata. Precedente Successivo @@ -32,10 +24,6 @@ Precedente Salva Modifica il tuo documento qui sotto e premi Salva - Benvenuto in \nOpenDocument Reader - OpenDocument Reader ti consente di visualizzare i documenti che sono archiviati in formato OpenDocument (.odt, .ods, .odp e .odg) ovunque tu sia. - Con OpenDocument Reader puoi leggere e cercare tra i tuoi documenti in un attimo. - Trovato un ultimo errore di battitura da correggere prima della tua grande presentazione? Ora anche le modifiche sono supportate! Questa app si registra per aprire tutti i tipi di file per impostazione predefinita, per supportare app come \"Samsung My Files\". Puoi disattivare questa funzione qui, se causa problemi. Lettura in corso... Inizializzazione del TTS ... @@ -44,18 +32,5 @@ In pausa. Finito. Stampa… - Stampa non disponibile sul tuo dispositivo. Effettua l\'aggiornamento a una versione più recente di Android. - Apri e leggi il tuo file ODF mentre sei in movimento! - OpenDocument Reader ti consente di visualizzare documenti archiviati in formato OpenDocument (.odt, .ods, .odp e .odg). Questi file vengono generalmente creati usando LibreOffice od OpenOffice. Questa app consente di aprire tali file anche sul tuo dispositivo mobile, in modo che tu possa leggerli mentre sei in movimento. - Hai trovato un errore nel tuo documento? Ora la modifica è supportata! - OpenDocument Reader non solo consente di leggere documenti sul tuo dispositivo mobile, ma supporta anche la modifica di questi. Correggere gli errori di battitura è un gioco da ragazzi, anche sul treno! - Leggi i tuoi documenti da altre app - OpenDocument Reader supporta una vasta gamma di altre app da cui aprire documenti. Un collega ha inviato una presentazione tramite Gmail? Fai clic sull\'allegato e questa app si aprirà subito! - AVVIO Hai bisogno di più spazio da leggere? Rimuovi gli annunci gratuitamente tramite il menu. - - Rimuovere gli annunci per sempre - Remove ads for a month - Rimuovere temporaneamente gli annunci gratuitamente guardando un breve video - diff --git a/app/src/main/res/values-ja-rJP/strings.xml b/app/src/main/res/values-ja-rJP/strings.xml index d14a76b1805e..5ddf451e33c6 100644 --- a/app/src/main/res/values-ja-rJP/strings.xml +++ b/app/src/main/res/values-ja-rJP/strings.xml @@ -9,17 +9,12 @@ ファイルを保存できませんでした。support@opendoocument.app にお問い合わせください デバイスのメモリ不足です! 写真が多すぎるかファイルが大きすぎます。 ドキュメントがパスワードで保護されています - 最近使用したドキュメント - ドキュメントを次で開く: 読み込んでいます… アップロードしています… しばらくお待ちください。数分かかることがあります。 アップロードされたファイルは保護され、24 時間後に自動的に削除されます。 その形式をサポートしていないため、このドキュメントを開くことができません。一時的に私たちのサーバーにアップロードして、とにかくそれを表示できるようにしますか? アップロードされたファイルはプライベートで、24 時間後に自動的に削除されます。 - ドキュメントが見つかりません - 最近開いたドキュメント ドキュメントの検索 - ドキュメントを開く 開く... ドキュメントを共有 ドキュメントを編集 @@ -36,10 +31,6 @@ 前へ 保存 下の文書の編集して、保存を押してください - OpenDocument リーダー \nへようこそ - OpenDocument リーダーは、どこにいても OpenDocument 形式で格納されているドキュメント (.odt、.ods、.odp、odg) を表示することができます。 - OpenDocument リーダーで、非常に簡単にドキュメントを読んだり、検索することができます。 - 素晴らしいプレゼンテーションに残っている最後の 1 つのタイプミスを見つけましたか? 変更もサポートしました! \"Samsung My Files\" のようなアプリをサポートするために、このアプリはデフォルトですべての種類のファイルを開くように登録します。 問題が発生した場合は、この機能を無効にしてください。 読み込んでいます… テキスト読み上げ機能(TTS)を初期化しています… @@ -53,11 +44,5 @@ お使いのデバイスにインストールされた別のアプリで開く: OK - 保存していない変更があります - 今すぐ保存しますか? - はい - 変更を破棄 キャンセル - エラー - ドキュメントに戻る diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 48f0eab584e7..b4362ecef898 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -5,29 +5,19 @@ これはサポートされているファイル形式ではないようです。 サポートしないファイル形式です。別のアプリで開いてみてください。 ファイルの表示方法に満足できませんか? 代わりに別のアプリで開きます。 - お使いのデバイスで、このファイル形式をサポートするアプリが見つかりませんでした。 デバイスのメモリ不足です! 写真が多すぎるかファイルが大きすぎます。 ドキュメントがパスワードで保護されています - ドキュメントの読み取りと保存を行う権限が必要です - 最近使用したドキュメント - ドキュメントを次で開く: 読み込んでいます… アップロードしています… しばらくお待ちください。数分かかることがあります。 アップロードされたファイルは保護され、24 時間後に自動的に削除されます。 - 小額の支払いで広告を削除します: その形式をサポートしていないため、このドキュメントを開くことができません。一時的に私たちのサーバーにアップロードして、とにかくそれを表示できるようにしますか? アップロードされたファイルはプライベートで、24 時間後に自動的に削除されます。 - デバイスからファイルを選択 - ドキュメントが見つかりません - 最近開いたドキュメント ドキュメントの検索 - ドキュメントを開く ドキュメントを編集 広告を削除する 全画面表示を開く ドキュメントを印刷 テキスト読み上げ - 戻るボタンを押すと全画面モードを終了します 選択したアプリを開くことができません。 前へ 次へ @@ -37,12 +27,7 @@ 次へ 前へ 保存 - ヘルプ 下の文書の編集して、保存を押してください - OpenDocument リーダー \nへようこそ - OpenDocument リーダーは、どこにいても OpenDocument 形式で格納されているドキュメント (.odt、.ods、.odp、odg) を表示することができます。 - OpenDocument リーダーで、非常に簡単にドキュメントを読んだり、検索することができます。 - 素晴らしいプレゼンテーションに残っている最後の 1 つのタイプミスを見つけましたか? 変更もサポートしました! \"Samsung My Files\" のようなアプリをサポートするために、このアプリはデフォルトですべての種類のファイルを開くように登録します。 問題が発生した場合は、この機能を無効にしてください。 読み込んでいます… テキスト読み上げ機能(TTS)を初期化しています… @@ -51,19 +36,6 @@ 一時停止しました。 完了しました。 印刷しています… - お使いのデバイスで印刷は利用できません。Android の新しいバージョンにアップグレードしてください。 - 外出先で ODF ファイルを開いたり読み込みます! - OpenDocument リーダーは OpenDocument 形式 (.odt、.ods、.odp、.odg) で格納されているドキュメントを表示することができます。通常これらのファイルは、LibreOffice または OpenOffice を使用して作成されます。このアプリは、モバイルデバイスでこのようなファイルを開くことができるので、外出先でそれらを読み取ることができます。 - ドキュメントにタイプミスを発見しましたか? 変更をサポートするようになりました! - OpenDocument リーダーは、お使いのモバイルデバイス上でドキュメントを読むことができるだけでなく、変更もサポートしています。タイプミスは、電車の中でもすぐに修正できます! - 他のアプリを使用してドキュメントを読む - OpenDocument リーダーは、ドキュメントを開く他のアプリを幅広くサポートしています。同僚が Gmail でプレゼンテーションを送信しましたか? 添付ファイルをクリックすると、このアプリがすぐに開くことができます! - 開始 読むためのスペースがもっと必要ですか? メニューから無料の広告を削除してください。 お使いのデバイスにインストールされた別のアプリで開く: - - 永久に広告を削除する - Remove ads for a month - 無料の短いビデオを見て、一時的に広告を削除する - diff --git a/app/src/main/res/values-ko-rKR/strings.xml b/app/src/main/res/values-ko-rKR/strings.xml index cba5cb5deb26..aa4034da1341 100644 --- a/app/src/main/res/values-ko-rKR/strings.xml +++ b/app/src/main/res/values-ko-rKR/strings.xml @@ -9,17 +9,12 @@ 파일이 저장되지 않았습니다. support@opendocument.app 으로 문의하세요. 메모리가 부족합니다! 사진이 너무 많거나 파일이 너무 큽니다. 문서가 암호로 잠겨 있습니다. - 최근 문서 - 문서 열기: 로딩 중... 업로드 중... 잠시 기다려 주세요. 업로드한 파일은 비공개이고, 24시간 뒤에 자동 삭제됩니다. 이 포맷을 지원하지 않기에 문서를 열 수 없습니다. 임시로 서버에 업로드해서 여시겠습니까? 업로드한 파일은 비공개이고, 24 시간 뒤에 자동으로 삭제합니다. - 문서를 찾을 수 없습니다. - 최근에 열어 본 문서 문서 검색 - 문서 열기 다른 앱으로 열기... 문서 공유 문서 편집 @@ -37,10 +32,6 @@ 이전 저장 문서를 수정하고, 아래에서 저장을 누르세요. - OpenDocument Reader를\n 오신 것을 환영합니다. - OpenDocument Reader를 사용해서 어디서든 OpenDocument 포맷(.odt, .ods, .odp 및 .odg) 문서를 볼 수 있습니다. - OpenDocument Reader를 사용해서 쉽게 문서를 찾고 열 수 있습니다. - 중요한 프레젠테이션에서 수정할 오타가 하나 남았나요? 이제 수정도 지원합니다! 이 앱은 삼성 \"My Files\"과 같은 앱을 지원하기 위해, 기본으로 모든 파일 포맷을 열게 등록되어 있습니다. 문제가 발생하면 이 기능을 끌 수 있습니다. 읽는 중... TTS 초기화 중... @@ -54,11 +45,5 @@ 기기에 설치된 다른 앱을 사용해서 열기: 확인 - 저장된 내용을 변경하지 않음 - 저장하시겠습니까? - - 변경 취소 취소 - 에러 - 문서로 돌아가기 diff --git a/app/src/main/res/values-large/styles.xml b/app/src/main/res/values-large/styles.xml deleted file mode 100644 index 4c7c41ed9349..000000000000 --- a/app/src/main/res/values-large/styles.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/values-night/bools.xml b/app/src/main/res/values-night/bools.xml new file mode 100644 index 000000000000..7f78654a8d0c --- /dev/null +++ b/app/src/main/res/values-night/bools.xml @@ -0,0 +1,6 @@ + + + + false + + diff --git a/app/src/main/res/values-night/colors.xml b/app/src/main/res/values-night/colors.xml new file mode 100644 index 000000000000..6cfa605a4571 --- /dev/null +++ b/app/src/main/res/values-night/colors.xml @@ -0,0 +1,38 @@ + + + + + #86CFFF + #00344C + #004C6D + #C7E7FF + + #B6C9D8 + #21323E + #384955 + #D2E5F5 + + #191C1E + #E2E2E5 + #41484D + #C1C7CE + #1D2022 + + #CDC0E9 + #342B4B + #4B4163 + #E9DDFF + + #E2E2E5 + #2E3133 + #00658F + + #8B9198 + #41484D + + #FFB4AB + #690005 + #93000A + #FFDAD6 + + diff --git a/app/src/main/res/values-normal/styles.xml b/app/src/main/res/values-normal/styles.xml deleted file mode 100644 index 9c89871557b2..000000000000 --- a/app/src/main/res/values-normal/styles.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/values-pl-rPL/strings.xml b/app/src/main/res/values-pl-rPL/strings.xml index f998a619f7e0..da20a7d0dbf3 100644 --- a/app/src/main/res/values-pl-rPL/strings.xml +++ b/app/src/main/res/values-pl-rPL/strings.xml @@ -5,15 +5,10 @@ Ten format pliku nie jest obsługiwany. Brak pamięci telefonu! Zbyt wiele zdjęć lub plik jest za duży. Dokument zabezpieczony jest hasłem - Ostatnie dokumenty - Otwórz dokument za pomocą: Pobieranie… Wysyłanie... Nie możemy otworzyć tego dokumentu, ponieważ nie obsługujemy jego formatu. Czy chcesz tymczasowo przesłać go na nasz serwer, abyśmy mimo wszystko mogli go wyświetlić? Przesłane pliki są prywatne i automatycznie usuwane są po 24 godzinach. - Nie znaleziono żadnego dokumentu - Ostatnio otwarte dokumenty Szukaj w dokumencie - Otwórz dokument Edytuj dokument Usuń reklamy Drukuj dokument @@ -28,10 +23,6 @@ Poprzedni Zapisz Edytuj swój dokument poniżej i naciśnij Zapisz - Witamy w \n przeglądarce OpenDocument Reader - Dzięki czytnikowi OpenDocument Reader możesz w dowolnym miejscu wyświetlać dokumenty zapisane w formacie OpenDocument (.odt, .ods, .odp i .odg). - Za pomocą przeglądarki OpenDocument Reader możesz czytać i błyskawicznie przeszukiwać swoje dokumenty. - Znalazła się jeszcze jedna literówka do usunięcia przed dużą prezentacją? Teraz przeglądarka ta obsługuje również zmiany! Niniejszą aplikację rejestruje się, aby móc domyślnie otwierać wszystkie typy plików w celu obsługi aplikacji takich jak „Samsung My Files”. Tutaj możesz wyłączyć tę funkcję, jeśli powoduje ona problemy. Trwa odczyt... Inicjowanie TTS… diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index b1726e68385d..d3f2ac691855 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -5,23 +5,15 @@ Ten format pliku nie jest obsługiwany. Brak pamięci telefonu! Zbyt wiele zdjęć lub plik jest za duży. Dokument zabezpieczony jest hasłem - Ostatnie dokumenty - Otwórz dokument za pomocą: Pobieranie… Wysyłanie... - Usuń reklamy za niewielką opłatą: Nie możemy otworzyć tego dokumentu, ponieważ nie obsługujemy jego formatu. Czy chcesz tymczasowo przesłać go na nasz serwer, abyśmy mimo wszystko mogli go wyświetlić? Przesłane pliki są prywatne i automatycznie usuwane są po 24 godzinach. - Wybierz plik z urządzenia - Nie znaleziono żadnego dokumentu - Ostatnio otwarte dokumenty Szukaj w dokumencie - Otwórz dokument Edytuj dokument Usuń reklamy Otwórz tryb pełnoekranowy Drukuj dokument Przetwarzanie tekstu na mowę - Naciśnij Cofnij, aby wyjść z trybu pełnoekranowego Nie można otworzyć wybranej aplikacji Poprzedni Następny @@ -32,10 +24,6 @@ Poprzedni Zapisz Edytuj swój dokument poniżej i naciśnij Zapisz - Witamy w \n przeglądarce OpenDocument Reader - Dzięki czytnikowi OpenDocument Reader możesz w dowolnym miejscu wyświetlać dokumenty zapisane w formacie OpenDocument (.odt, .ods, .odp i .odg). - Za pomocą przeglądarki OpenDocument Reader możesz czytać i błyskawicznie przeszukiwać swoje dokumenty. - Znalazła się jeszcze jedna literówka do usunięcia przed dużą prezentacją? Teraz przeglądarka ta obsługuje również zmiany! Niniejszą aplikację rejestruje się, aby móc domyślnie otwierać wszystkie typy plików w celu obsługi aplikacji takich jak „Samsung My Files”. Tutaj możesz wyłączyć tę funkcję, jeśli powoduje ona problemy. Trwa odczyt... Inicjowanie TTS… @@ -44,18 +32,5 @@ Wstrzymano. Ukończono. Trwa drukowanie... - W Twoim urządzeniu drukowanie nie jest dostępne. Uaktualnij do nowszej wersji Androida. - Otwórz i czytaj swój plik ODF nawet w podróży! - Przeglądarka OpenDocument Reader umożliwia przeglądanie dokumentów przechowywanych w formacie OpenDocument (.odt, .ods, .odp i .odg). Pliki te są zazwyczaj tworzone przy użyciu programów LibreOffice lub OpenOffice. Ta aplikacja umożliwia również otwieranie tego typu plików na urządzeniu mobilnym, dzięki czemu możesz je czytać również w podróży. - Znajdujesz literówkę w swoim dokumencie? Czytnik obsługuje teraz zmiany! - Przeglądarka OpenDocument Reader nie tylko pozwala czytać dokumenty na urządzeniu mobilnym, ale także obsługuje ich modyfikowanie. Literówki są usuwane natychmiast, nawet w pociągu! - Czytaj swoje dokumenty pochodzące z innych aplikacji - Przeglądarka OpenDocument Reader obsługuje wiele różnych aplikacji, umożliwiając otwieranie w nich dokumentów. Kolega wysłał prezentację za pośrednictwem poczty Gmail? Kliknij załącznik i aplikacja ta natychmiast się otworzy! - ROZPOCZNIJ Potrzebujesz więcej miejsca do czytania? Usuń bezpłatnie reklamy, używając menu. - - Usuń reklamy na trwałe - Remove ads for a month - Usuń reklamy na pewien czas i obejrzyj krótki film - diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 1ecf20dcf49f..ad9b9f0602c2 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -9,17 +9,12 @@ Arquivo não pôde ser salvo. Por favor, contate support@opendocument.app Telefone sem memória! Muitas fotos ou arquivo muito grande. O documento está protegido por senha - Documentos recentes - Abra o documento através de: Carregando… Fazendo upload… Por favor, aguarde, isso pode levar alguns minutos. Os arquivos enviados são privados e automaticamente excluídos após 24 horas. Não conseguimos abrir este documento, pois não suportamos este formato. Você deseja fazer o upload dele em nosso servidor temporariamente, para que possamos exibi-lo para você? - Nenhum documento encontrado - Documentos abertos recentemente Pesquisa - Abrir Abrir com... Compartilhar documento Editar @@ -36,10 +31,6 @@ Anterior Salvar Edite seu documento abaixo e pressione Salvar - Bem-vindo ao \nOpenDocument Reader - O OpenDocument Reader permite que você veja documentos que são armazenados no formato OpenDocument (.odt, .ods, .odp e .odg) onde quer que você esteja. - Com o OpenDocument Reader, você pode ler e pesquisar seus documentos de forma fácil. - Encontrou um último erro de digitação para corrigir a sua grande apresentação? Agora suporta modificações também! Este app se registra para abrir todos os tipos de arquivos por padrão para apoiar apps como \"Samsung My Files\". Você pode desativar este recurso aqui se ele causar problemas para você. Lendo… Iniciando TTS… diff --git a/app/src/main/res/values-ru-rRU/strings.xml b/app/src/main/res/values-ru-rRU/strings.xml index 2d781ce475fa..2bf6c3b863e4 100644 --- a/app/src/main/res/values-ru-rRU/strings.xml +++ b/app/src/main/res/values-ru-rRU/strings.xml @@ -5,15 +5,10 @@ Возможно, этот формат файла не поддерживается. Недостаточно памяти на телефоне! Слишком много изображений, или файл слишком большой. Документ защищён паролем - Последние документы - Открыть документ с помощью: Загрузка… Выгрузка... Мы не можем открыть этот документ, потому что его формат не поддерживается. Хотите загрузить его на наш сервер временно, чтобы его можно было отобразить? Загруженные файлы предназначены только для вашего личного использования и автоматически удаляются через 24 часа. - Документы не найдены - Недавно открытые документы Поиск в документе - Открыть документ Редактировать документ Убрать рекламные объявления Полноэкранный режим @@ -29,10 +24,6 @@ Предыдущий Сохранить Отредактируйте ваш документ ниже и нажмите \"Сохранить\" - Добро пожаловать в \nOpenDocument Reader - OpenDocument Reader позволяет просматривать документы, которые сохранены в формате OpenDocument (.odt, .ods, .odp и .odg), из любого места. - С помощью OpenDocument Reader вы можете легко читать и просматривать свои документы. - В последний момент нашли ошибку, которую нужно исправить перед важной презентацией? Теперь программа поддерживает возможность вносить в документ изменения! Приложение регистрируется для автоматического открытия всех типов файлов, чтобы поддерживать такие приложения, как Samsung My Files. Если эта функция создает вам проблемы, отключите ее здесь. Чтение... Инициализация преобразования текста в речь… diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 7d0579b7966a..6b1c23bfa505 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -5,23 +5,15 @@ Возможно, этот формат файла не поддерживается. Недостаточно памяти на телефоне! Слишком много изображений, или файл слишком большой. Документ защищён паролем - Последние документы - Открыть документ с помощью: Загрузка… Выгрузка... - Уберите рекламные объявления за небольшую плату: Мы не можем открыть этот документ, потому что его формат не поддерживается. Хотите загрузить его на наш сервер временно, чтобы его можно было отобразить? Загруженные файлы предназначены только для вашего личного использования и автоматически удаляются через 24 часа. - Выберите файл с устройства - Документы не найдены - Недавно открытые документы Поиск в документе - Открыть документ Редактировать документ Убрать рекламные объявления Открыть в полноэкранном режиме Печать документа Преобразование текста в речь - Нажмите \"Назад\", чтобы выйти из полноэкранного режима Не удалось открыть выбранное приложение. Предыдущий Следующий @@ -32,10 +24,6 @@ Предыдущий Сохранить Отредактируйте ваш документ ниже и нажмите \"Сохранить\" - Добро пожаловать в \nOpenDocument Reader - OpenDocument Reader позволяет просматривать документы, которые сохранены в формате OpenDocument (.odt, .ods, .odp и .odg), из любого места. - С помощью OpenDocument Reader вы можете легко читать и просматривать свои документы. - В последний момент нашли ошибку, которую нужно исправить перед важной презентацией? Теперь программа поддерживает возможность вносить в документ изменения! Приложение регистрируется для автоматического открытия всех типов файлов, чтобы поддерживать такие приложения, как Samsung My Files. Если эта функция создает вам проблемы, отключите ее здесь. Чтение... Инициализация преобразования текста в речь… @@ -44,18 +32,5 @@ Приостановлено. Выполнено. Печать... - Печать на вашем устройстве недоступна. Пожалуйста, обновите Android до новой версии. - Открывайте и читайте файлы ODF прямо на ходу! - OpenDocument Reader позволяет просматривать документы, сохраненные в формате OpenDocument (.odt, .ods, .odp и .odg). Эти файлы обычно создаются в программах LibreOffice или OpenOffice. С помощью приложения вы также можете открывать такие файлы на мобильном устройстве и читать их прямо на ходу. - Нашли ошибку в своем документе? Теперь вы можете внести в него изменения! - OpenDocument Reader позволяет не только читать документы с мобильного устройства, но и поддерживает возможность вносить в них изменения. Исправляйте ошибки легко, даже в поезде! - Читайте ваши документы из других приложений - OpenDocument Reader поддерживает возможность открывать документы из многих других приложений. Коллега отправил вам презентацию через Gmail? Нажмите на вложение, и приложение немедленно откроется! - НАЧАТЬ Мало места для чтения? Уберите рекламу бесплатно с помощью меню. - - Убрать рекламу навсегда - Remove ads for a month - Временно убрать рекламу, посмотрев короткое видео - diff --git a/app/src/main/res/values-sl-rSI/strings.xml b/app/src/main/res/values-sl-rSI/strings.xml index a64a94934643..0082de151ccd 100644 --- a/app/src/main/res/values-sl-rSI/strings.xml +++ b/app/src/main/res/values-sl-rSI/strings.xml @@ -9,17 +9,12 @@ Datoteke ni bilo mogoče shraniti. Prosimo, pišite na support@opendocument.app. Telefonu je zmanjkalo pomnilnika! Preveč slik ali prevelika datoteka. Dokument je zaščiten z geslom - Nedavni dokumenti - Odpri dokument preko: Nalaganje … Pošiljanje … Počakajte, to lahko traja nekaj minut. Poslane datoteke so zasebne in se samodejno izbrišejo po 24-ih urah. Tega dokumenta ne moremo odpreti, ker ne podpiramo njegove oblike. Ali ga želite začasno poslati na naš strežnik, da ga lahko vseeno prikažemo? - Nobenih dokumentov ni bilo najdenih - Nedavni dokumenti Išči - Odpri Odpri s/z … Deli dokument Uredi @@ -36,10 +31,6 @@ Nazaj Shrani Spodaj uredite dokument in pritisnite Shrani - Dobrodošli v \nOpenDocument Reader - OpenDocument Reader povsod omogoča ogled dokumentov, ki so shranjeni v obliki OpenDocument (.odt, .ods, .odp). - S programom OpenDocument Reader lahko berete in hitro iščete po dokumentih. - Ste našli še zadnjo napako v dokumentu, ki jo želite popraviti? Sedaj podpira tudi urejanje! Ta program se registrira, da privzeto odpre vse vrste datotek, da lahko podpira programe, kot je \"Samsung Moje datoteke\". Če vam ta značilnost povzroča težave, jo lahko tukaj izklopite. Branje … Začenjanje TTS-a … @@ -52,11 +43,5 @@ Odpri z drugim nameščenim programom na napravi: V redu - Spremembe niso shranjene! - Shrani jih zdaj? - Da - Zavrzi spremembe Prekliči - Napaka - Nazaj v dokumente diff --git a/app/src/main/res/values-sl/strings.xml b/app/src/main/res/values-sl/strings.xml index 5f3aaa3ed701..759bd1acbe7e 100644 --- a/app/src/main/res/values-sl/strings.xml +++ b/app/src/main/res/values-sl/strings.xml @@ -5,31 +5,21 @@ Videti je, da ta oblika datoteke ni podprta. Nepodprta oblika datoteke. Poizkusite jo odpreti v drugem programu. Niste zadovoljni z načinom prikaza datoteke? Odprite jo v drugem programu. - Na napravi ni bilo najdenega programa, ki podpira to vrsto datotek. Mesto za shranjevanje datoteke ni izbrano. Datoteke ni bilo mogoče shraniti. Prosimo, pišite na support@opendocument.app. Telefonu je zmanjkalo pomnilnika! Preveč slik ali prevelika datoteka. Dokument je zaščiten z geslom - Za branje in shranjevanje dokumentov je zahtevano dovoljenje - Nedavni dokumenti - Odpri dokument preko: Nalaganje … Pošiljanje … Počakajte, to lahko traja nekaj minut. Poslane datoteke so zasebne in se samodejno izbrišejo po 24-ih urah. - Kupite nove značilnosti: Tega dokumenta ne moremo odpreti, ker ne podpiramo njegove oblike. Ali ga želite začasno poslati na naš strežnik, da ga lahko vseeno prikažemo? - Izberi datoteko z naprave - Nobenih dokumentov ni bilo najdenih - Nedavni dokumenti Išči - Odpri Uredi Odstrani oglase Celozaslonski način Natisni Besedilo v govor - Pritisnite Nazaj za izhod iz celozaslonskega načina Tega programa ni bilo mogoče odpreti. Nazaj Naprej @@ -39,12 +29,7 @@ Naprej Nazaj Shrani - Pomoč Spodaj uredite dokument in pritisnite Shrani - Dobrodošli v \nOpenDocument Reader - OpenDocument Reader povsod omogoča ogled dokumentov, ki so shranjeni v obliki OpenDocument (.odt, .ods, .odp). - S programom OpenDocument Reader lahko berete in hitro iščete po dokumentih. - Ste našli še zadnjo napako v dokumentu, ki jo želite popraviti? Sedaj podpira tudi urejanje! Ta program se registrira, da privzeto odpre vse vrste datotek, da lahko podpira programe, kot je \"Samsung My Files\". Če vam ta značilnost povzroča težave, jo lahko tukaj izklopite. Branje … Začenjanje TTS-a … @@ -53,19 +38,6 @@ Premor. Končano. Tiskanje … - Na vaši napravi tiskanje ni na voljo. Nadgradite na novejšo različico Androida. - Odprite in berite vašo datoteko ODF na poti! - OpenDocument Reader omogoča ogled dokumentov, ki so shranjeni v obliki OpenDocument (.odt, .ods, .odp in .odg). Te datoteke se običajno ustvarijo z LibreOfficeom ali OpenOfficeom. Ta program omogoča odpiranje takih datotek tudi na vaši prenosni napravi, da jih lahko berete na poti. - Ste v dokumentu našli napako? Sedaj podpira tudi urejanje! - OpenDocument Reader ne omogoča samo branje dokumentov na vaši prenosni napravi, ampak tudi njihovo urejanje. Napake lahko popravite v trenutku, tudi na vlaku! - Berite svoje dokumente iz drugih programov - OpenDocument Reader podpira ogromno drugih programov, iz katerih lahko odpirate dokumente. Vam je prijatelj poslal predstavitev po Gmailu? Kliknite na prilogo in ta program jo bo v trenutku odprl! - ZAČNI Ne marate oglasov? Če jih želite odstraniti, kliknite tukaj! Odpri z drugim nameščenim programom na napravi: - - Odstrani oglase za vedno - Remove ads for a month - Začasno odstrani oglase - diff --git a/app/src/main/res/values-small/styles.xml b/app/src/main/res/values-small/styles.xml deleted file mode 100644 index 89896162bb10..000000000000 --- a/app/src/main/res/values-small/styles.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/values-tr-rTR/strings.xml b/app/src/main/res/values-tr-rTR/strings.xml index d10863c6c2b6..a67ac9ea70a5 100644 --- a/app/src/main/res/values-tr-rTR/strings.xml +++ b/app/src/main/res/values-tr-rTR/strings.xml @@ -9,17 +9,12 @@ Dosya kaydedilemedi. Lütfen support@opendocument.app ile iletişime geçin Aygıt belleği yetersiz! Çok fazla resim var veya dosya çok büyük. Bu belge parola korumalı - Son kullanılan belgeler - Belgeyi şununla aç: Yükleniyor… Karşıya yükleniyor… Lütfen bekleyin, bu birkaç dakika sürebilir. Karşıya yüklenen dosyalar özeldir ve 24 saat sonra otomatik olarak silinir. Bu belgeyi açamıyoruz, çünkü biçimini desteklemiyoruz. Görüntüleyebilmeniz için geçici olarak sunucumuza yüklemek ister misiniz? Yüklenen dosyalar özeldir ve 24 saat sonra otomatik olarak silinir. - Belge bulunamadı - En son açılmış belgeler Belgelerde ara - Belgeyi Aç Birlikte aç... Belgeyi Paylaş Belgeyi düzenle @@ -36,10 +31,6 @@ Önceki Kaydet Aşağıdaki belgenizi düzenleyip kaydete tıklayın - OpenDocument Reader\'e \nHoşgeldiniz - OpenDocument Reader, nerede olursanız olun OpenDocument biçiminde (.odt, .ods, .odp ve .odg) depolanan belgeleri görüntülemenizi sağlar. - OpenDocument Reader ile belgelerinizi rahatça okuyabilir ve arayabilirsiniz. - Büyük sunumunuzdan önce düzeltilecek bir yazım hatası mı buldunuz? Artık değiştirmeyi de destekliyor! Bu uygulama \"Samsung My Files\"gibi uygulamaları desteklemek için varsayılan olarak tüm dosya türlerini açmak için kaydeder. Sizin için sorunlara neden olursa, bu özelliği buradan kapatabilirsiniz. Okunuyor… TTS başlatılıyor… @@ -53,11 +44,5 @@ Aygıtınızda kurulu başka bir uygulamayı kullanarak açın: Tamam - Kaydedilmemiş değişiklikleriniz var - Değişiklikler şimdi kaydedilsin mi? - Evet - Değişiklikleri iptal et İptal - Hata - Belgeye geri dön diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index 4ea2e44f51fb..8ab29f9ade9c 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -5,31 +5,21 @@ Bu, desteklenen bir dosya biçimi gibi görünmüyor. Desteklenmeyen dosya biçimi. Başka bir uygulamada açmayı deneyin. Dosyanın görüntüsünden memnun değil misiniz? Bunun yerine başka bir uygulamada açın. - Aygıtda bu tür dosyaları destekleyen uygulama bulunamadı. Seçilen dosyayı kaydetmek için yer yok. Dosya kaydedilemedi. Lütfen support@opendocument.app ile iletişime geçin Aygıt belleği yetersiz! Çok fazla resim var veya dosya çok büyük. Belge parola korumalı - Belgeleri okumak ve kaydetmek için izin gerekli - Son kullanılan belgeler - Belgeyi şununla aç: Yükleniyor… Karşıya yükleniyor… Lütfen bekleyin, bu birkaç dakika sürebilir. Karşıya yüklenen dosyalar özeldir ve 24 saat sonra otomatik olarak silinir. - Reklamları küçük bir ücret karşılığında kaldırın: Bu belgeyi açamıyoruz, çünkü biçimini desteklemiyoruz. Görüntüleyebilmeniz için geçici olarak sunucumuza yüklemek ister misiniz? Yüklenen dosyalar özeldir ve 24 saat sonra otomatik olarak silinir. - Aygıttan dosya seçin - Belge nulunamadı - En son açılmış belgeler Belgelerde ara - Belgeyi Aç Belgeyi düzenle Reklamları kaldır Tam ekran görünümünü aç Belgeyi yazdır Konuşma metni - Tam ekran modundan çıkmak için Geri tuşuna basın Seçilen uygulama açılamıyor. Önceki Sonraki @@ -39,12 +29,7 @@ Sonraki Önceki Kaydet - Yardım Aşağıdaki belgenizi düzenleyip kaydete tıklayın - OpenDocument Reader\'e \nHoşgeldiniz - OpenDocument Reader, nerede olursanız olun OpenDocument biçiminde (.odt, .ods, .odp ve .odg) depolanan belgeleri görüntülemenizi sağlar. - OpenDocument Reader ile belgelerinizi rahatça okuyabilir ve arayabilirsiniz. - Büyük sunumunuzdan önce düzeltilecek bir yazım hatası mı buldunuz? Artık değiştirmeyi de destekliyor! Bu uygulama \"Samsung My Files\"gibi uygulamaları desteklemek için varsayılan olarak tüm dosya türlerini açmak için kaydeder. Sizin için sorunlara neden olursa, bu özelliği buradan kapatabilirsiniz. Okunuyor… TTS başlatılıyor… @@ -54,19 +39,6 @@ Bitti. Belge kaydedildi. Yazdırılıyor… - Aygıtınızda yazdırma özelliği yok. Lütfen Androidi daha yeni bir sürüme yükseltin. - ODF dosyanızı hareketliyken açın ve okuyun! - OpenDocument Reader, OpenDocument biçiminde (.odt, .ods, .odp ve .odg) depolanan belgeleri görüntülemenize olanak tanır. Bu dosyalar genellikle LibreOffice veya OpenOffice kullanılarak oluşturulur. Bu uygulama bu tür dosyaları mobil aygıtınızda da açmanıza izin verir, böylece onları hareket halindeyken okuyabilirsiniz. - Belgenizde bir yazım hatası mı buldunuz? Şimdi değiştirmeyi destekliyor! - OpenDocument Reader sadece mobil aygıtınızdaki belgeleri okumakla kalmaz, aynı zamanda onların değiştirilmesini de destekler. Yazı bir esitide hatta trende bile sabitdir! - Belgelerinizi diğer uygulamaların içinden okuyun - OpenDocument Reader, belgeleri açmak için diğer birçok uygulamayı destekler. Bir meslektaşınız Gmail aracılığıyla bir sunum mu gönderdi? Eki tıklayın bu uygulama hemen açılacak! - BAŞLAT Okumak için daha fazla alana mı ihtiyacınız var? Menüden reklamları ücretsiz olarak kaldırın. Aygıtınızda kurulu başka bir uygulamayı kullanarak açın: - - Reklamları sürekli kaldır - Remove ads for a month - Kısa bir video izleyerek reklamları geçici olarak ücretsiz kaldırın - diff --git a/app/src/main/res/values-v29/themes.xml b/app/src/main/res/values-v29/themes.xml deleted file mode 100644 index 53dbc731bec3..000000000000 --- a/app/src/main/res/values-v29/themes.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - \ No newline at end of file diff --git a/app/src/main/res/values-v35/themes.xml b/app/src/main/res/values-v35/themes.xml index f4136c3da446..0b1a0c48bff3 100644 --- a/app/src/main/res/values-v35/themes.xml +++ b/app/src/main/res/values-v35/themes.xml @@ -1,17 +1,14 @@ - + diff --git a/app/src/main/res/values-xlarge/styles.xml b/app/src/main/res/values-xlarge/styles.xml deleted file mode 100644 index c2a843b39726..000000000000 --- a/app/src/main/res/values-xlarge/styles.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index d1fd736f1c1b..df1215ed25d7 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -9,17 +9,12 @@ 无法保存文件。请联系 support@opendocument.app 设备内存不足!可能是因为文件中的图片太多了,也可能是文件体积过大。 此文档受密码保护。 - 最近文档 - 通过…打开文档: 正在加载… 正在上传… 请稍候,可能需要几分钟。 被上传的文件是私密的,24 小时后文件会被自动删除。 我们无法打开此文档,因为本应用不支持其格式。是否要暂时将其上传到我们的服务器, 以便我们设法在未来的版本中允许本应用显示它?上传的文件依然归您所有,并在会在24小时后自动删除。 - 找不到文档 - 最近打开的文档 在文档中搜索 - 打开文档 打开方式... 分享文档 编辑文档 @@ -37,10 +32,6 @@ 上一个 保存 编辑您的文档,然后点击保存 - 欢迎使用\nOpenDocument 阅读器 - OpenDocument Reader 允许您查看存储为 OpenDocument 格式(.odt、.ods、.ods、.odp 和 .odg)的文档。 - 通过 OpenDocument 阅读器,您可以简单利落地阅读、搜索您的文档。 - 在您某次重大的演讲前发现了演示文档中的最后一个拼写错误?现已支持修改文档! ,此应用程序默认注册为支持打开所有类型的文件,以支持类似三星设备自带的 \"我的文件\" 等有问题的应用程序。如果此功能会给您带来干扰或问题,您可以在此处关闭它。 正在读取… 正在初始化 TTS 引擎… @@ -54,11 +45,5 @@ 使用设备上的其他应用打开: 确认 - 你有未保存的更改 - 现在保存它们吗? - - 放弃更改 取消 - 出错 - 返回文档 diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml index a6ca1022f652..0ecdc66073e2 100644 --- a/app/src/main/res/values-zh/strings.xml +++ b/app/src/main/res/values-zh/strings.xml @@ -4,29 +4,19 @@ 找不到此文件。或许它已经不在那里了? 此文件格式似乎不受支持。 对文件的显示效果不满意?在另一个应用中打开它。 - 在本设备上找不到支持此类型的文件的应用。 设备内存不足!可能是因为文件中的图片太多了,也可能是文件体积过大。 此文档受密码保护。 - 需要权限以便存取文档 - 最近文档 - 通过…打开文档: 正在加载… 正在上传… 请稍候,可能需要几分钟。 被上传的文件是私密的,24 小时后文件会被自动删除。 - 支付一点小费以移除广告: 我们无法打开此文档,因为本应用不支持其格式。是否要暂时将其上传到我们的服务器, 以便我们设法在未来的版本中允许本应用显示它?上传的文件依然归您所有,并在会在24小时后自动删除。 - 从设备中选择文件 - 找不到文档 - 最近打开的文档 在文档中搜索 - 打开文档 编辑文档 移除广告 打开全屏模式 打印文档 文字转语音 - 按返回键即可退出全屏模式 无法打开选择的应用。 上一个 下一个 @@ -36,12 +26,7 @@ 下一个 上一个 保存 - 帮助 编辑您的文档,然后点击保存 - 欢迎使用\nOpenDocument 阅读器 - OpenDocument Reader 允许您查看存储为 OpenDocument 格式(.odt、.ods、.ods、.odp 和 .odg)的文档。 - 通过 OpenDocument 阅读器,您可以简单利落地阅读、搜索您的文档。 - 在您某次重大的演讲前发现了演示文档中的最后一个拼写错误?现已支持修改文档! ,此应用程序默认注册为支持打开所有类型的文件,以支持类似三星设备自带的 \"我的文件\" 等有问题的应用程序。如果此功能会给您带来干扰或问题,您可以在此处关闭它。 正在读取… 正在初始化 TTS 引擎… @@ -50,19 +35,6 @@ 已暂停。 播放结束。 正在打印… - 您的设备不支持打印。请将 Android 系统升级至更加新的版本(Android 4.4 以上)。 - 随时随地打开并阅读您的 ODF 文件! - 您可以使用 OpenDocument 阅读器查看以 OpenDocument 格式(.odt, .ods, .odp 和 .odg)储存的文档文件。这些文件通常是使用 LibreOffice 或 OpenOffice 创建的。本应用允许您在移动设备上打开这些文档,助您随时随地阅读它们。 - 发现文件存在一处文稿错误?支持修改! - 超级文件管理大师不仅允许用户在移动设备上阅读文件,同时还支持文件修改。用户即使在火车上也可轻松修改文稿错误。 - 通过其他app阅读文件 - 超级文件管理大师支持通过大量其他的app打开文件。一位同事通过Gmail发来一份演示文稿?只需点击附件,立刻将其打开! - 开始 需要更多空间以便阅读?通过菜单购买删除广告。 使用设备上的其他应用打开: - - 永久移除广告 - Remove ads for a month - 通过观看短视频并暂时免费移除广告 - diff --git a/app/src/main/res/values/bools.xml b/app/src/main/res/values/bools.xml new file mode 100644 index 000000000000..4c1d84b4af9e --- /dev/null +++ b/app/src/main/res/values/bools.xml @@ -0,0 +1,10 @@ + + + + + true + + diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml new file mode 100644 index 000000000000..012ea56e1d19 --- /dev/null +++ b/app/src/main/res/values/colors.xml @@ -0,0 +1,57 @@ + + + + + #00658F + #FFFFFF + #C7E7FF + #001E2F + + #4F616E + #FFFFFF + #D2E5F5 + #0B1D29 + + #FCFCFF + #191C1E + #DDE3EA + #41484D + #ECEFF3 + + #63597C + #FFFFFF + #E9DDFF + #1F1635 + + + #2E3133 + #F0F1F3 + #86CFFF + + #71787E + #C1C7CE + + #BA1A1A + #FFFFFF + #FFDAD6 + #410002 + + + #FFFFFF + + + #52000000 + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index e31b696c94be..34df3566eee8 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -11,17 +11,12 @@ File could not be saved. Please contact support@opendocument.app Device out of memory! Too many pictures, or file too big. This document is password-protected - Recent documents - Open document via: Loading… Uploading… Please wait, this could take a few minutes. Uploaded files are private and automatically deleted after 24 hours. We aren\'t able to open this document, because we don\'t support its format. Do you want to upload it to our server temporarily, so we can display it for you anyway? Uploaded files are private and automatically deleted after 24 hours. - No documents found - Recently opened documents Search in document - Open document Open with... Share document Edit document @@ -40,11 +35,23 @@ Save Upload Edit your document below and press Save - Welcome to \nOpenDocument Reader - OpenDocument Reader allows you to view documents that are stored in OpenDocument format (.odt, .ods, .odp and .odg) wherever you are. - With OpenDocument Reader you can read and search through your documents in a breeze. - Found one last typo left to fix ahead of your big presentation? It now supports modifications too! By default this app only offers to open document files. If another app like \"Samsung My Files\" won\'t let you open a document here, turn this on to register for all file types. + Recent + Folders + Settings + Open all file types + Removed from recent + Folder removed + Undo + Open a file + Add a folder… + This folder can\'t be remembered. Try another one. + No documents in this folder. + Up one level + Nothing here yet + Open a document to get started. It will show up here next time. + More actions + Close actions Reading… Initializing TTS… Ready! @@ -58,12 +65,6 @@ OK - You have unsaved changes - Save them now? - Yes - Discard changes Cancel - Error - Back to documents \ No newline at end of file diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml deleted file mode 100644 index d8f7dca1de56..000000000000 --- a/app/src/main/res/values/styles.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index aefcfee01400..0dec01cdbb63 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -1,12 +1,59 @@ - - \ No newline at end of file +