Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 4 additions & 6 deletions android/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -115,17 +115,15 @@ android {
// but continue the build even when errors are found:
abortOnError false
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
}

// https://developer.android.com/about/versions/marshmallow/android-6.0-changes#behavior-apache-http-client
useLibrary 'org.apache.http.legacy'
}

dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
//testImplementation 'junit:junit:4.12'
//androidTestImplementation 'com.android.support.test:runner:1.0.2'
//androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support:support-annotations:28.0.0'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}
9 changes: 9 additions & 0 deletions android/app/src/androidTest/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="org.coolreader"
android:installLocation="auto">

<uses-sdk tools:overrideLibrary="android.support.test, android.support.test.espresso" />

</manifest>
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
package org.coolreader.crengine;

import android.support.test.runner.AndroidJUnit4;

import org.junit.Test;
import org.junit.runner.RunWith;

import static org.junit.Assert.*;

/**
* Instrumented test, which will execute on an Android device.
*
* @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
*/
@RunWith(AndroidJUnit4.class)
public class FindFcLangCodeTest {
@Test
public void testFindCompatibleFcLangCode()
{
// English codes variants
String langCode = Engine.findCompatibleFcLangCode("English");
assertEquals("en", langCode);

langCode = Engine.findCompatibleFcLangCode("english");
assertEquals("en", langCode);

langCode = Engine.findCompatibleFcLangCode("eng");
assertEquals("en", langCode);

langCode = Engine.findCompatibleFcLangCode("Eng");
assertEquals("en", langCode);

langCode = Engine.findCompatibleFcLangCode("en-US");
assertEquals("en", langCode);

langCode = Engine.findCompatibleFcLangCode("eng-US");
assertEquals("en", langCode);

langCode = Engine.findCompatibleFcLangCode("en-USA");
assertEquals("en", langCode);

langCode = Engine.findCompatibleFcLangCode("eng-USA");
assertEquals("en", langCode);

langCode = Engine.findCompatibleFcLangCode("en-GB");
assertEquals("en", langCode);

langCode = Engine.findCompatibleFcLangCode("eng-GB");
assertEquals("en", langCode);

langCode = Engine.findCompatibleFcLangCode("en-GBR");
assertEquals("en", langCode);

langCode = Engine.findCompatibleFcLangCode("eng-GBR");
assertEquals("en", langCode);

langCode = Engine.findCompatibleFcLangCode("en_gb");
assertEquals("en", langCode);

langCode = Engine.findCompatibleFcLangCode("en");
assertEquals("en", langCode);

// Russian codes variants
langCode = Engine.findCompatibleFcLangCode("Russian");
assertEquals("ru", langCode);

langCode = Engine.findCompatibleFcLangCode("russian");
assertEquals("ru", langCode);

langCode = Engine.findCompatibleFcLangCode("Rus");
assertEquals("ru", langCode);

langCode = Engine.findCompatibleFcLangCode("rus");
assertEquals("ru", langCode);

langCode = Engine.findCompatibleFcLangCode("ru-RU");
assertEquals("ru", langCode);

langCode = Engine.findCompatibleFcLangCode("rus-RU");
assertEquals("ru", langCode);

langCode = Engine.findCompatibleFcLangCode("ru-RUS");
assertEquals("ru", langCode);

langCode = Engine.findCompatibleFcLangCode("rus-RUS");
assertEquals("ru", langCode);

langCode = Engine.findCompatibleFcLangCode("ru_ru");
assertEquals("ru", langCode);

langCode = Engine.findCompatibleFcLangCode("ru");
assertEquals("ru", langCode);

// Chinese variants
langCode = Engine.findCompatibleFcLangCode("zh-CN");
assertEquals("zh_cn", langCode);

langCode = Engine.findCompatibleFcLangCode("zho-CN");
assertEquals("zh_cn", langCode);

langCode = Engine.findCompatibleFcLangCode("zh-CHN");
assertEquals("zh_cn", langCode);

langCode = Engine.findCompatibleFcLangCode("zho-CHN");
assertEquals("zh_cn", langCode);

langCode = Engine.findCompatibleFcLangCode("zh-HK");
assertEquals("zh_hk", langCode);

langCode = Engine.findCompatibleFcLangCode("zho-HK");
assertEquals("zh_hk", langCode);

langCode = Engine.findCompatibleFcLangCode("zh-HKG");
assertEquals("zh_hk", langCode);

langCode = Engine.findCompatibleFcLangCode("zho-HKG");
assertEquals("zh_hk", langCode);

langCode = Engine.findCompatibleFcLangCode("zh_hk");
assertEquals("zh_hk", langCode);

// invalid variant
langCode = Engine.findCompatibleFcLangCode("abcd");
assertNull(langCode);
}
}
2 changes: 0 additions & 2 deletions android/app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,6 @@
android:anyDensity="true"
/>

<uses-sdk tools:overrideLibrary="com.android.support.test,android.support.test.espresso" />

<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
Expand Down
4 changes: 4 additions & 0 deletions android/gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,7 @@ org.gradle.jvmargs=-Xmx1536m
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true

# When set to all, summary or none, Gradle will use different warning type display.
# See Command-line logging options for details.
org.gradle.warning.mode=all
29 changes: 29 additions & 0 deletions android/jni/cr3engine.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@

#include <../../crengine/include/fb2def.h>

#include "fc-lang-cat.h"

#define XS_IMPLEMENT_SCHEME 1
#include <../../crengine/include/fb2def.h>
#include <sys/stat.h>
Expand Down Expand Up @@ -657,6 +659,33 @@ JNIEXPORT jboolean JNICALL Java_org_coolreader_crengine_Engine_setCacheDirectory
return res ? JNI_TRUE : JNI_FALSE;
}

/*
* Class: org_coolreader_crengine_Engine
* Method: haveFcLangCodeInternal
* Signature: (Ljava/lang/String;)Z
*/
JNIEXPORT jboolean JNICALL Java_org_coolreader_crengine_Engine_haveFcLangCodeInternal
(JNIEnv *env, jclass cls, jstring langCode)
{
jboolean res = JNI_FALSE;
const char* langCode_ptr = env->GetStringUTFChars(langCode, 0);
if (langCode_ptr) {
struct fc_lang_catalog* lang_ptr = fc_lang_cat;
for (int i = 0; i < fc_lang_cat_sz; i++)
{
if (strcmp(lang_ptr->lang_code, langCode_ptr) == 0)
{
res = JNI_TRUE;
break;
}
lang_ptr++;
}
env->ReleaseStringUTFChars(langCode, langCode_ptr);
}
return res;
}


/*
* Class: org_coolreader_crengine_Engine
* Method: checkFontLanguageCompatibilityInternal
Expand Down
8 changes: 8 additions & 0 deletions android/jni/org_coolreader_crengine_Engine.h

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion android/res/values-ru/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -591,7 +591,7 @@
<string name="options_app_ui_theme_hicontrast2">Контрастная черная</string>
<string name="error_while_opening">Ошибка открытия документа \"%s\"</string>
<string name="datadir_is_removed">Каталог с данными приложения \"%s\" был удален другой программой!\nВозможно какой-то оптимизатор дискового пространства?\nК сожалению, все настройки утеряны.</string>
<string name="font_not_compat_with_language">"Шрифт \"%s\" не совместим с языком \"%s\". Вместо него будет задействован дополнительный шрифт."</string>
<string name="font_not_compat_with_language">"Предупреждение: шрифт \"%s\" не совместим с языком \"%s\". Вместо него будет задействован дополнительный шрифт."</string>
<string name="fontconfig_language_orthography_database">Набор символов различных писменностей от Fontconfig:
https://www.fontconfig.org/
</string>
Expand Down
2 changes: 1 addition & 1 deletion android/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -617,7 +617,7 @@
<string name="pages_per_full_swipe_20">"20 pages (track)"</string>
<string name="error_while_opening">Error while opening document \"%s\"</string>
<string name="datadir_is_removed">Application data directory \"%s\" has been removed by other app.\nPossibly it was some kind of disc space optimizer.\nUnfortunately all the settings were lost.</string>
<string name="font_not_compat_with_language">"Font \"%s\" isn't compatible with language \"%s\". Instead will be used fallback font."</string>
<string name="font_not_compat_with_language">"Notice: font \"%s\" isn't compatible with language \"%s\". Instead will be used fallback font."</string>
<string name="fontconfig_language_orthography_database">"Languages character set database by Fontconfig:
https://www.fontconfig.org/ "
</string>
Expand Down
Loading