From 8d04e996455c63ddb431c24203c167ba90fe6d97 Mon Sep 17 00:00:00 2001
From: dirk41 <1378902882@qq.com>
Date: Thu, 13 May 2021 15:22:54 +0800
Subject: [PATCH] =?UTF-8?q?=E7=AC=AC=E4=B8=80=E6=AC=A1=E4=B8=8A=E4=BC=A0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.gitattributes | 17 -
.gitignore | 60 +--
.travis.yml | 1 -
CHANGELOG.md | 5 +
README.md | 194 +++----
build.gradle | 57 +-
entry/.gitignore | 1 +
entry/build.gradle | 27 +
entry/proguard-rules.pro | 1 +
entry/src/main/config.json | 74 +++
.../webviewcodedemo/Constants.java | 268 ++++++++++
.../webviewcodedemo/MainAbility.java | 80 +++
.../webviewcodedemo/MyApplication.java | 30 ++
.../webviewcodedemo/ShowAbility.java | 120 +++++
.../main/resources/base/element/string.json | 20 +
.../base/graphic/background_ability_main.xml | 6 +
.../base/graphic/background_ability_show.xml | 8 +
.../base/graphic/background_bt_color.xml | 8 +
.../base/graphic/background_text_color.xml | 8 +
.../resources/base/layout/ability_main.xml | 173 +++++++
.../resources/base/layout/ability_show.xml | 396 ++++++++++++++
entry/src/main/resources/base/media/icon.png | Bin 0 -> 6790 bytes
entry/src/ohosTest/config.json | 41 ++
.../webviewcodedemo/ExampleOhosTest.java | 14 +
.../webviewcodedemo/ExampleTest.java | 9 +
gradle.properties | 10 +
gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 58694 bytes
gradle/wrapper/gradle-wrapper.properties | 5 +
gradlew | 183 +++++++
gradlew.bat | 103 ++++
library/.gitignore | 1 +
library/build.gradle | 21 +
library/proguard-rules.pro | 1 +
library/src/main/config.json | 28 +
.../com/protectsoft/webviewcode/Codeview.java | 288 +++++------
.../com/protectsoft/webviewcode/Content.java | 13 +-
.../protectsoft/webviewcode/HighlightLib.java | 487 +++++++++---------
.../com/protectsoft/webviewcode/HtmlCode.java | 33 +-
.../com/protectsoft/webviewcode/Settings.java | 180 +++++++
.../main/resources/base/element/string.json | 8 +
.../protectsoft/webviewcode/ExampleTest.java | 9 +
readmepics/pic1.png | Bin 24949 -> 0 bytes
readmepics/pic2.png | Bin 25463 -> 0 bytes
readmepics/pic3.png | Bin 62826 -> 0 bytes
settings.gradle | 1 +
src/main/AndroidManifest.xml | 5 -
.../com/protectsoft/webviewcode/Settings.java | 73 ---
.../protectsoft/webviewcode/CodeviewTest.java | 79 ---
48 files changed, 2381 insertions(+), 765 deletions(-)
delete mode 100644 .gitattributes
delete mode 100644 .travis.yml
create mode 100644 CHANGELOG.md
create mode 100644 entry/.gitignore
create mode 100644 entry/build.gradle
create mode 100644 entry/proguard-rules.pro
create mode 100644 entry/src/main/config.json
create mode 100644 entry/src/main/java/com/protectsoft/webviewcodedemo/Constants.java
create mode 100644 entry/src/main/java/com/protectsoft/webviewcodedemo/MainAbility.java
create mode 100644 entry/src/main/java/com/protectsoft/webviewcodedemo/MyApplication.java
create mode 100644 entry/src/main/java/com/protectsoft/webviewcodedemo/ShowAbility.java
create mode 100644 entry/src/main/resources/base/element/string.json
create mode 100644 entry/src/main/resources/base/graphic/background_ability_main.xml
create mode 100644 entry/src/main/resources/base/graphic/background_ability_show.xml
create mode 100644 entry/src/main/resources/base/graphic/background_bt_color.xml
create mode 100644 entry/src/main/resources/base/graphic/background_text_color.xml
create mode 100644 entry/src/main/resources/base/layout/ability_main.xml
create mode 100644 entry/src/main/resources/base/layout/ability_show.xml
create mode 100644 entry/src/main/resources/base/media/icon.png
create mode 100644 entry/src/ohosTest/config.json
create mode 100644 entry/src/ohosTest/java/com/protectsoft/webviewcodedemo/ExampleOhosTest.java
create mode 100644 entry/src/test/java/com/protectsoft/webviewcodedemo/ExampleTest.java
create mode 100644 gradle.properties
create mode 100644 gradle/wrapper/gradle-wrapper.jar
create mode 100644 gradle/wrapper/gradle-wrapper.properties
create mode 100644 gradlew
create mode 100644 gradlew.bat
create mode 100644 library/.gitignore
create mode 100644 library/build.gradle
create mode 100644 library/proguard-rules.pro
create mode 100644 library/src/main/config.json
rename {src => library/src}/main/java/com/protectsoft/webviewcode/Codeview.java (46%)
rename {src => library/src}/main/java/com/protectsoft/webviewcode/Content.java (80%)
rename {src => library/src}/main/java/com/protectsoft/webviewcode/HighlightLib.java (86%)
rename {src => library/src}/main/java/com/protectsoft/webviewcode/HtmlCode.java (48%)
create mode 100644 library/src/main/java/com/protectsoft/webviewcode/Settings.java
create mode 100644 library/src/main/resources/base/element/string.json
create mode 100644 library/src/test/java/com/protectsoft/webviewcode/ExampleTest.java
delete mode 100644 readmepics/pic1.png
delete mode 100644 readmepics/pic2.png
delete mode 100644 readmepics/pic3.png
create mode 100644 settings.gradle
delete mode 100644 src/main/AndroidManifest.xml
delete mode 100644 src/main/java/com/protectsoft/webviewcode/Settings.java
delete mode 100644 src/test/java/com/protectsoft/webviewcode/CodeviewTest.java
diff --git a/.gitattributes b/.gitattributes
deleted file mode 100644
index bdb0cab..0000000
--- a/.gitattributes
+++ /dev/null
@@ -1,17 +0,0 @@
-# Auto detect text files and perform LF normalization
-* text=auto
-
-# Custom for Visual Studio
-*.cs diff=csharp
-
-# Standard to msysgit
-*.doc diff=astextplain
-*.DOC diff=astextplain
-*.docx diff=astextplain
-*.DOCX diff=astextplain
-*.dot diff=astextplain
-*.DOT diff=astextplain
-*.pdf diff=astextplain
-*.PDF diff=astextplain
-*.rtf diff=astextplain
-*.RTF diff=astextplain
diff --git a/.gitignore b/.gitignore
index cd2946a..37a4eb8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,47 +1,15 @@
-# Windows image file caches
-Thumbs.db
-ehthumbs.db
-
-# Folder config file
-Desktop.ini
-
-# Recycle Bin used on file shares
-$RECYCLE.BIN/
-
-# Windows Installer files
-*.cab
-*.msi
-*.msm
-*.msp
-
-# Windows shortcuts
-*.lnk
-
-# =========================
-# Operating System Files
-# =========================
-
-# OSX
-# =========================
-
+*.iml
+.gradle
+/local.properties
+/.idea/caches
+/.idea/libraries
+/.idea/modules.xml
+/.idea/workspace.xml
+/.idea/navEditor.xml
+/.idea/assetWizardSettings.xml
.DS_Store
-.AppleDouble
-.LSOverride
-
-# Thumbnails
-._*
-
-# Files that might appear in the root of a volume
-.DocumentRevisions-V100
-.fseventsd
-.Spotlight-V100
-.TemporaryItems
-.Trashes
-.VolumeIcon.icns
-
-# Directories potentially created on remote AFP share
-.AppleDB
-.AppleDesktop
-Network Trash Folder
-Temporary Items
-.apdisk
+/build
+/captures
+.externalNativeBuild
+/entry/.preview
+.cxx
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index dff5f3a..0000000
--- a/.travis.yml
+++ /dev/null
@@ -1 +0,0 @@
-language: java
diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 0000000..1c6df91
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,5 @@
+## 0.0.1-SNAPSHOT
+* refactor: For module library Android-to-OpenHarmony
+
+## 2
+* 2
\ No newline at end of file
diff --git a/README.md b/README.md
index f564820..7ba95ec 100644
--- a/README.md
+++ b/README.md
@@ -1,73 +1,68 @@
-# Codeview
--------------
-http://avraampiperidis.github.io/Codeview/
-[](https://android-arsenal.com/details/1/3999)
-
-Codeview is a android library tha lets you
-preview code in webview very easy and simple with highlighs and colors.
-With styles to chooses and language.
-
-Also you can inject html and text into webview or any extended webview class.
-
-
-This library was inspired and is working thanks to [highlight.js](https://highlightjs.org/).
-Apps using Codeview library.
-https://play.google.com/store/apps/details?id=com.protectsoft.javatutorial
-https://play.google.com/store/apps/details?id=com.protectsoft.pythontutorial
-
-https://bintray.com/zeronerone/maven/Codeview#statistics
-
-Usage
------
-
-#### Codeview
-
-#### Download/Install Gradle
---------
-
-```groovy
-repositories {
- jcenter()
- }
-
-compile 'Codeview-1.0.0:webviewcode:1.0.0'
-```
-##### 1) Get a reference to your WebView or any extended WebView
-
-```java
-WebView webview = (WebView) findViewById(R.id.webview);
-//set settings here
-```
-
-##### 2) Basic usage. Default style is Original, and default language is java.
-
-```java
-//your string code
-String code = "public static void main(String[] args) { \n" +
- "\n" +
- "//comments\n" +
- " for(int i =0; i < 10; i++) {\n" +
- " addnum();\n" +
- " }\n" +
- "\n" +
- "}\n";
-
-Codeview.with(getApplicationContext())
- .withCode(code)
- .into(webview);
+# CodeView
+
+**本项目是基于开源项目 CodeView 进行OpenHarmony的移植和开发的,可以通过项目标签以及github地址( https://github.com/avraampiperidis/Codeview )追踪到原项目版本**
+
+#### 项目介绍
+- 项目名称:CodeView
+- 所属系列:OpenHarmony的第三方组件适配移植
+- 功能:代码块高亮显示。
+- 项目移植状态:完成
+- 调用差异:无
+- 开发版本:sdk5,DevEco Studio2.1 Beta4
+- 项目作者和维护人:蒋军
+- 联系方式:jiangjun073@chinasoftinc.com
+- 原项目Doc地址:https://github.com/avraampiperidis/Codeview
+- 基线版本:CodeView组件 Release 2
+- 编程语言:Java
+
+#### 安装教程
+1.在项目根目录下的build.gradle文件中,
+```gradle
+allprojects {
+ repositories {
+ maven {
+ url 'https://s01.oss.sonatype.org/content/repositories/snapshots/'
+ }
+ }
+}
```
-
-
-##### 3) set style and language.
-
-```java
-MyTouchWebView webview = (MyTouchWebView) findViewById(R.id.mytouchwebview);
-//set settings here
+2.在entry模块的build.gradle文件中,
+```gradle
+dependencies {
+ implementation('com.gitee.chinasoft_ohos:CodeView:0.0.1-SNAPSHOT')
+ ......
+}
```
-```java
-//your string java code
-String code = "public static void main(String[] args) { \n" +
+#### 使用说明
+
+1. 创建一个WebView对象,添加到页面中:
+ ```java
+ DirectionalLayout directionalLayout = (DirectionalLayout)findComponentById(ResourceTable.Id_dl);
+ webView = new WebView(getContext());
+ webView.setComponentSize(DirectionalLayout.LayoutConfig.MATCH_PARENT,
+ DirectionalLayout.LayoutConfig.MATCH_PARENT);
+ directionalLayout.addComponent(webView);
+ ```
+2. 基本用法:
+ ```java
+ String code = "public static void main(String[] args) { \n" +
+ "\n" +
+ "//comments\n" +
+ " for(int i =0; i < 10; i++) {\n" +
+ " addnum();\n" +
+ " }\n" +
+ "\n" +
+ "}\n";
+
+ Codeview.with(getApplicationContext())
+ .withCode(code)
+ .into(webview);
+ ```
+
+3. 设置css样式和语言类型:
+ ```java
+ String code = "public static void main(String[] args) { \n" +
"\n" +
"//comments\n" +
" for(int i =0; i < 10; i++) {\n" +
@@ -76,24 +71,15 @@ String code = "public static void main(String[] args) { \n" +
"\n" +
"}\n";
-Codeview.with(getApplicationContext())
+ Codeview.with(getApplicationContext())
.withCode(code)
.setStyle(Settings.WithStyle.DARKULA)
.setLang(Settings.Lang.JAVA)
.into(webview);
-```
-
-
-##### 4) Inject html head content and text.
-
-```java
-WebView webview = (WebView) findViewById(R.id.webview);
-//set settings here
-```
-
-```java
-//your string javascript code
- String code = "function Constructor(v1,v2,v3)\n" +
+ ```
+4. 注入html头部以及文本:.
+ ```java
+ String code = "function Constructor(v1,v2,v3)\n" +
"{\n" +
" this.v1 = v1;\n" +
" this.v2 = v2;\n" +
@@ -113,23 +99,41 @@ WebView webview = (WebView) findViewById(R.id.webview);
"}";
- Codeview.with(getApplicationContext())
- .setHtmlHeadContent("")
- .withHtml("
h1 injected header
")
- .withText("this text is always wrap inside pre tags")
- .withCode(code)
- .withHtml(" h1 header after code
")
- .withHtml("")
- .setStyle(Settings.WithStyle.DARKSTYLE)
- .setLang(Settings.Lang.JAVASCRIPT)
- .setAutoWrap(true)
- .into(webView);
-```
-
+ .withHtml(" h1 injected header
")
+ .withText("this text is always wrap inside pre tags")
+ .withCode(code)
+ .withHtml(" h1 header after code
")
+ .withHtml("")
+ .setStyle(Settings.WithStyle.DARKSTYLE)
+ .setLang(Settings.Lang.JAVASCRIPT)
+ .setAutoWrap(true)
+ .into(webView);
+ ```
+
+5. 注意事项:
+ 鸿蒙中,HTML里含有#字符,WebView会展示出错,拼接的HTML中,无论标签,css样式,js,文本,代码块不能带有#字符,鸿蒙中,HTML里含有#字符,WebView会展示出错,需要去除所有#字符,且使用到highlight.js中的#字符都用 ` 字符替代,代码块中也不能含有这个字符。
+
+#### 测试信息
+
+CodeCheck代码测试无异常
+
+CloudTest代码测试无异常
+
+火绒安全病毒安全检测通过
+
+当前版本demo功能与原组件基本无差异
+
+测试员:刘飞虎
+
+#### 版本迭代
+
+- 0.0.1-SNAPSHOT
## License
MIT License
@@ -153,5 +157,3 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
-
-
diff --git a/build.gradle b/build.gradle
index 3a50be3..1dc510f 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,42 +1,37 @@
-apply plugin: 'com.android.library'
+// Top-level build file where you can add configuration options common to all sub-projects/modules.
+apply plugin: 'com.huawei.ohos.app'
-android {
- compileSdkVersion 28
- buildToolsVersion '28.0.3'
- repositories {
- jcenter()
- google()
- }
+ohos {
+ compileSdkVersion 5
defaultConfig {
- minSdkVersion 16
- targetSdkVersion 28
- versionCode 2
- versionName "1.0"
+ compatibleSdkVersion 5
}
- buildTypes {
- release {
- minifyEnabled false
- proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
+}
+
+buildscript {
+ repositories {
+ maven {
+ url 'https://repo.huaweicloud.com/repository/maven/'
+ }
+ maven {
+ url 'https://developer.huawei.com/repo/'
}
+ jcenter()
}
- testOptions {
- unitTests.returnDefaultValues = true
+ dependencies {
+ classpath 'com.huawei.ohos:hap:2.4.2.7'
+ classpath 'com.huawei.ohos:decctest:1.0.0.7'
}
}
-dependencies {
- implementation fileTree(dir: 'libs', include: ['*.jar'])
- testImplementation 'junit:junit:4.12'
- androidTestImplementation 'junit:junit:4.12'
- implementation 'org.mockito:mockito-all:1.8.4'
-}
-
-buildscript {
+allprojects {
repositories {
- jcenter()
- google()
- }
- dependencies {
- classpath 'com.android.tools.build:gradle:3.3.1'
+ maven {
+ url 'https://repo.huaweicloud.com/repository/maven/'
+ }
+ maven {
+ url 'https://developer.huawei.com/repo/'
+ }
+ jcenter()
}
}
diff --git a/entry/.gitignore b/entry/.gitignore
new file mode 100644
index 0000000..796b96d
--- /dev/null
+++ b/entry/.gitignore
@@ -0,0 +1 @@
+/build
diff --git a/entry/build.gradle b/entry/build.gradle
new file mode 100644
index 0000000..45bbf69
--- /dev/null
+++ b/entry/build.gradle
@@ -0,0 +1,27 @@
+apply plugin: 'com.huawei.ohos.hap'
+apply plugin: 'com.huawei.ohos.decctest'
+ohos {
+ compileSdkVersion 5
+ defaultConfig {
+ compatibleSdkVersion 5
+ }
+ buildTypes {
+ release {
+ proguardOpt {
+ proguardEnabled false
+ rulesFiles 'proguard-rules.pro'
+ }
+ }
+ }
+
+}
+
+dependencies {
+ implementation fileTree(dir: 'libs', include: ['*.jar', '*.har'])
+ implementation project(path: ':library')
+ testImplementation 'junit:junit:4.13'
+ ohosTestImplementation 'com.huawei.ohos.testkit:runner:1.0.0.100'
+}
+decc {
+ supportType = ['html', 'xml']
+}
diff --git a/entry/proguard-rules.pro b/entry/proguard-rules.pro
new file mode 100644
index 0000000..f7666e4
--- /dev/null
+++ b/entry/proguard-rules.pro
@@ -0,0 +1 @@
+# config module specific ProGuard rules here.
\ No newline at end of file
diff --git a/entry/src/main/config.json b/entry/src/main/config.json
new file mode 100644
index 0000000..9fe69b2
--- /dev/null
+++ b/entry/src/main/config.json
@@ -0,0 +1,74 @@
+{
+ "app": {
+ "bundleName": "com.protectsoft.webviewcodedemo",
+ "vendor": "protectsoft",
+ "version": {
+ "code": 1000000,
+ "name": "1.0.0"
+ },
+ "apiVersion": {
+ "compatible": 5,
+ "target": 5,
+ "releaseType": "Release"
+ }
+ },
+ "deviceConfig": {},
+ "module": {
+ "package": "com.protectsoft.webviewcodedemo",
+ "name": ".MyApplication",
+ "deviceType": [
+ "phone"
+ ],
+ "distro": {
+ "deliveryWithInstall": true,
+ "moduleName": "entry",
+ "moduleType": "entry"
+ },
+ "abilities": [
+ {
+ "skills": [
+ {
+ "entities": [
+ "entity.system.home"
+ ],
+ "actions": [
+ "action.system.home"
+ ]
+ }
+ ],
+ "orientation": "unspecified",
+ "name": "com.protectsoft.webviewcodedemo.MainAbility",
+ "icon": "$media:icon",
+ "description": "$string:mainability_description",
+ "label": "$string:app_name",
+ "type": "page",
+ "launchType": "standard",
+ "metaData": {
+ "customizeData": [
+ {
+ "name": "hwc-theme",
+ "value": "androidhwext:style/Theme.Emui.NoTitleBar"
+ }
+ ]
+ }
+ },
+ {
+ "orientation": "unspecified",
+ "name": "com.protectsoft.webviewcodedemo.ShowAbility",
+ "icon": "$media:icon",
+ "description": "$string:showability_description",
+ "label": "$string:app_name",
+ "type": "page",
+ "launchType": "standard",
+ "metaData": {
+ "customizeData": [
+ {
+ "name": "hwc-theme",
+ "value": "androidhwext:style/Theme.Emui.NoTitleBar"
+ }
+ ]
+ }
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/entry/src/main/java/com/protectsoft/webviewcodedemo/Constants.java b/entry/src/main/java/com/protectsoft/webviewcodedemo/Constants.java
new file mode 100644
index 0000000..d6e9f57
--- /dev/null
+++ b/entry/src/main/java/com/protectsoft/webviewcodedemo/Constants.java
@@ -0,0 +1,268 @@
+/*
+ * Copyright (C) 2021 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.protectsoft.webviewcodedemo;
+
+/**
+ * Constants
+ *
+ * @since 2021-04-30
+ */
+public class Constants {
+ /**
+ * SHOW_TYPE
+ */
+ public static final String SHOW_TYPE = "SHOW_TYPE";
+ /**
+ * SHOW_CODE
+ */
+ public static final String SHOW_CODE = "SHOW_CODE";
+ /**
+ * SHOW_LANG
+ */
+ public static final String SHOW_LANG = "SHOW_LANG";
+ /**
+ * Basic usage. Default style is Original, and default language is java.
+ */
+ public static final int DEFALUT_TYPE = 1;
+ /**
+ * set style and language.
+ */
+ public static final int OTHER_TYPE = 2;
+ /**
+ * Inject html head content and text.
+ */
+ public static final int OTHER1_TYPE = 3;
+ /**
+ * PYTHON_TYPE
+ */
+ public static final int PYTHON_TYPE = 4;
+ /**
+ * JAVASCRIPT_TYPE
+ */
+ public static final int JAVASCRIPT_TYPE = 5;
+ /**
+ * RUBY
+ */
+ public static final int RUBY_TYPE = 6;
+ /**
+ * CSHARP
+ */
+ public static final int CSHARP_TYPE = 7;
+ /**
+ * PHP
+ */
+ public static final int PHP_TYPE = 8;
+ /**
+ * SQL
+ */
+ public static final int SQL_TYPE = 9;
+ /**
+ * CPLUSPLUS
+ */
+ public static final int CPLUSPLUS_TYPE = 10;
+
+ /**
+ * DEFALUT_STRING
+ */
+ public static final String DEFALUT_STRING = "public static void main(String[] args) { \n"
+ + "\n" + "//comments\n"
+ + " for(int i =0; i < 10; i++) {\n"
+ + " addnum();\n"
+ + " }\n"
+ + "\n"
+ + "}\n";
+ /**
+ * OTHER_STRING
+ */
+ public static final String OTHER_STRING = "public static void main(String[] args) { \n"
+ + "\n" + "//comments\n"
+ + " for(int i =0; i < 10; i++) {\n"
+ + " addnum();\n"
+ + " }\n"
+ + "\n"
+ + "}\n";
+ /**
+ * OTHER1_STRING
+ */
+ public static final String OTHER1_STRING = "function Constructor(v1,v2,v3)\n" + "{\n"
+ + " this.v1 = v1;\n"
+ + " this.v2 = v2;\n"
+ + " this.funk = function()\n"
+ + " {\n"
+ + " console.log(\"Test: \"+ v3 );\n"
+ + " }\n"
+ + "}\n"
+ + "\n"
+ + "var obj1 = new Constructor(\"par1\",\"par2\",\"par3\");\n"
+ + "var arr = [\"w1\",\"w2\",\"w3\",obj1];\n" + "\n"
+ + "function f2()\n" + "{ \n"
+ + " obj1.funk(); //works ok\n"
+ + " console.log(\"test \"+tablica[3].funk.call() ); //doesn't work\n"
+ + "}";
+ /**
+ * PYTHON_STRING
+ */
+ public static final String PYTHON_STRING = "import random\n" +
+ "if __name__ ==\"__main__\":\n" +
+ " checkcode=\"\"\n" +
+ " for i in range(4):\n" +
+ " index=random.randrange(0,4)\n" +
+ " if index!=i and index +1 !=i:\n" +
+ " checkcode +=chr(random.randint(97,122))\n" +
+ " elif index +1==i:\n" +
+ " checkcode +=chr(random.randint(65,90) )\n" +
+ " else:\n" +
+ " checkcode +=str(random.randint(1,9))\n" +
+ " print(checkcode)";
+
+ /**
+ * RUBY_STRING
+ */
+ public static final String RUBY_STRING = "def fact(n) \n" +
+ " if n == 0 \n" +
+ " 1 \n" +
+ " else \n" +
+ " n * fact(n-1) \n" +
+ " end \n" +
+ "end \n" +
+ "print fact(ARGV[0].to_i), \"\\n\" ";
+
+ /**
+ * CSHARP_STRING
+ */
+ public static final String CSHARP_STRING = "class Program\n" +
+ " {\n" +
+ " static void Main(string[] args)\n" +
+ " {\n" +
+ " Transform t = new Transform();\n" +
+ " // t.GetVector().x = 10; 这边编译报错\n" +
+ " Vector v2 = t.GetVector();\n" +
+ " v2.x = 10;\n" +
+ " t.ShowV();\n" +
+ " Console.Read();\n" +
+ " }\n" +
+ " }\n" +
+ " \n" +
+ " struct Vector\n" +
+ " {\n" +
+ " public float x;\n" +
+ " public float y;\n" +
+ " public float z;\n" +
+ " }\n" +
+ " \n" +
+ " class Transform\n" +
+ " {\n" +
+ " public Vector v;\n" +
+ " //set\n" +
+ " public void SetVector(Vector v)\n" +
+ " {\n" +
+ " this.v = v;\n" +
+ " }\n" +
+ " //get\n" +
+ " public Vector GetVector()\n" +
+ " {\n" +
+ " return v;\n" +
+ " }\n" +
+ " \n" +
+ " public void ShowV()\n" +
+ " {\n" +
+ " Console.WriteLine(v.x + \"...\" + v.y + \"...\" + v.z);\n" +
+ " }\n" +
+ " }";
+
+ /**
+ * PHP_STRING
+ */
+ public static final String PHP_STRING = "function is_spam($text, $file, $split = ‘:‘, $regex = false){ \n" +
+ "$handle = fopen($file, ‘rb‘); \n" +
+ "$contents = fread($handle, filesize($file)); \n" +
+ "fclose($handle); \n" +
+ "$lines = explode(\"n\", $contents); \n" +
+ "$arr = array(); \n" +
+ "foreach($lines as $line){ \n" +
+ "list($word, $count) = explode($split, $line); \n" +
+ "if($regex) \n" +
+ "$arr[$word] = $count; \n" +
+ "else \n" +
+ "$arr[preg_quote($word)] = $count; \n" +
+ "} \n" +
+ "preg_match_all(\"~\".implode(‘|‘, array_keys($arr)).\"~\", $text, $matches); \n" +
+ "$temp = array(); \n" +
+ "foreach($matches[0] as $match){ \n" +
+ "if(!in_array($match, $temp)){ \n" +
+ "$temp[$match] = $temp[$match] + 1; \n" +
+ "if($temp[$match] >= $arr[$word]) \n" +
+ "return true; \n" +
+ "} \n" +
+ "} \n" +
+ "return false; \n" +
+ "} \n" +
+ "$file = ‘spam.txt‘; \n" +
+ "$str = ‘This string has cat, dog word‘; \n" +
+ "if(is_spam($str, $file)) \n" +
+ "echo ‘this is spam‘; \n" +
+ "else \n" +
+ "echo ‘this is not spam‘; \n" +
+ "ab:3 \n" +
+ "dog:3 \n" +
+ "cat:2 \n" +
+ "monkey:2 ";
+
+ /**
+ * SQL
+ */
+ public static final String SQL_STRING = "CREATE TABLE ENROLLS\n" +
+ "\n" +
+ " (SNO NUMERIC(6,0) NOT NULL\n" +
+ "\n" +
+ " CNO CHAR(4) NOT NULL\n" +
+ "\n" +
+ " GRADE INT\n" +
+ "\n" +
+ " PRIMARY KEY(SNO,CNO)\n" +
+ "\n" +
+ " FOREIGN KEY(SNO) REFERENCES STUDENTS(SNO)\n" +
+ "\n" +
+ " FOREIGN KEY(CNO) REFERENCES COURSES(CNO)\n" +
+ "\n" +
+ " CHECK ((GRADE IS NULL) OR (GRADE BETWEEN 0 AND 100)))";
+
+ /**
+ * SQL
+ */
+ public static final String CPLUSPLUS_STRING = "using namespace std;\n" +
+ " \n" +
+ "extern int a, b;\n" +
+ "extern int c;\n" +
+ "extern float f;\n" +
+ "int main()\n" +
+ "{\n" +
+ "\t//定义变量\n" +
+ "\tint a, b;\n" +
+ "\tint c;\n" +
+ "\tfloat f;\n" +
+ "\t\n" +
+ "\t//实际初始化\n" +
+ "\ta = 10;\n" +
+ "\tb = 20;\n" +
+ "\tc=a+b;\n" +
+ "\t\n" +
+ "\tcout << c << endl;\n" +
+ "\tf = 70.0/3.0;\n" +
+ "\tcout << f << endl;\n" +
+ "\treturn 0;\n" +
+ "}";
+}
diff --git a/entry/src/main/java/com/protectsoft/webviewcodedemo/MainAbility.java b/entry/src/main/java/com/protectsoft/webviewcodedemo/MainAbility.java
new file mode 100644
index 0000000..3a8e310
--- /dev/null
+++ b/entry/src/main/java/com/protectsoft/webviewcodedemo/MainAbility.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright (C) 2021 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.protectsoft.webviewcodedemo;
+
+import com.protectsoft.webviewcode.Settings;
+
+import ohos.aafwk.ability.Ability;
+import ohos.aafwk.content.Intent;
+import ohos.aafwk.content.Operation;
+import ohos.agp.components.Button;
+
+/**
+ * MainAbility
+ *
+ * @since 2021-04-30
+ */
+public class MainAbility extends Ability {
+ @Override
+ public void onStart(Intent intent) {
+ super.onStart(intent);
+ super.setUIContent(ResourceTable.Layout_ability_main);
+ Button btnDefalut = (Button)findComponentById(ResourceTable.Id_btn_defalut);
+ btnDefalut.setClickedListener(component ->
+ jumpAbilityByType(Constants.DEFALUT_TYPE,Constants.DEFALUT_STRING, Settings.Lang.JAVA));
+ Button btnOther = (Button)findComponentById(ResourceTable.Id_btn_other);
+ btnOther.setClickedListener(component ->
+ jumpAbilityByType(Constants.OTHER_TYPE,Constants.OTHER_STRING, Settings.Lang.JAVA));
+ Button btnOther1 = (Button)findComponentById(ResourceTable.Id_btn_other1);
+ btnOther1.setClickedListener(component ->
+ jumpAbilityByType(Constants.OTHER1_TYPE,Constants.OTHER1_STRING, Settings.Lang.JAVASCRIPT));
+ Button btnPython = (Button)findComponentById(ResourceTable.Id_btn_python);
+ btnPython.setClickedListener(component ->
+ jumpAbilityByType(Constants.PYTHON_TYPE,Constants.PYTHON_STRING, Settings.Lang.PYTHON));
+ Button btnJavascript = (Button)findComponentById(ResourceTable.Id_btn_javascript);
+ btnJavascript.setClickedListener(component ->
+ jumpAbilityByType(Constants.JAVASCRIPT_TYPE,Constants.OTHER1_STRING, Settings.Lang.JAVASCRIPT));
+ Button btnRuby = (Button)findComponentById(ResourceTable.Id_btn_ruby);
+ btnRuby.setClickedListener(component ->
+ jumpAbilityByType(Constants.RUBY_TYPE,Constants.RUBY_STRING, Settings.Lang.RUBY));
+ Button btnCs = (Button)findComponentById(ResourceTable.Id_btn_cs);
+ btnCs.setClickedListener(component ->
+ jumpAbilityByType(Constants.CSHARP_TYPE,Constants.CSHARP_STRING, Settings.Lang.CSHARP));
+ Button btnPhp = (Button)findComponentById(ResourceTable.Id_btn_php);
+ btnPhp.setClickedListener(component ->
+ jumpAbilityByType(Constants.PHP_TYPE,Constants.PHP_STRING, Settings.Lang.PHP));
+ Button btnSql = (Button)findComponentById(ResourceTable.Id_btn_sql);
+ btnSql.setClickedListener(component ->
+ jumpAbilityByType(Constants.SQL_TYPE,Constants.SQL_STRING, Settings.Lang.SQL));
+ Button btnCpp = (Button)findComponentById(ResourceTable.Id_btn_cpp);
+ btnCpp.setClickedListener(component ->
+ jumpAbilityByType(Constants.CPLUSPLUS_TYPE,Constants.CPLUSPLUS_STRING, Settings.Lang.CPLUSPLUS));
+ }
+
+ private void jumpAbilityByType(int type,String code,String lang) {
+ Intent intent = new Intent();
+ intent.setParam(Constants.SHOW_TYPE, type);
+ intent.setParam(Constants.SHOW_CODE, code);
+ intent.setParam(Constants.SHOW_LANG, lang);
+ Operation mOperation = new Intent.OperationBuilder()
+ .withDeviceId("")
+ .withBundleName(getBundleName())
+ .withAbilityName(ShowAbility.class.getName())
+ .build();
+ intent.setOperation(mOperation);
+ startAbility(intent);
+ }
+}
diff --git a/entry/src/main/java/com/protectsoft/webviewcodedemo/MyApplication.java b/entry/src/main/java/com/protectsoft/webviewcodedemo/MyApplication.java
new file mode 100644
index 0000000..2ebdf24
--- /dev/null
+++ b/entry/src/main/java/com/protectsoft/webviewcodedemo/MyApplication.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2021 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.protectsoft.webviewcodedemo;
+
+import ohos.aafwk.ability.AbilityPackage;
+
+/**
+ * MyApplication
+ *
+ * @since 2021-04-30
+ */
+public class MyApplication extends AbilityPackage {
+ @Override
+ public void onInitialize() {
+ super.onInitialize();
+ }
+}
diff --git a/entry/src/main/java/com/protectsoft/webviewcodedemo/ShowAbility.java b/entry/src/main/java/com/protectsoft/webviewcodedemo/ShowAbility.java
new file mode 100644
index 0000000..28346c8
--- /dev/null
+++ b/entry/src/main/java/com/protectsoft/webviewcodedemo/ShowAbility.java
@@ -0,0 +1,120 @@
+/*
+ * Copyright (C) 2021 Huawei Device Co., Ltd.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.protectsoft.webviewcodedemo;
+
+import com.protectsoft.webviewcode.Codeview;
+import com.protectsoft.webviewcode.Settings;
+
+import ohos.aafwk.ability.Ability;
+import ohos.aafwk.content.Intent;
+import ohos.agp.components.Button;
+import ohos.agp.components.DirectionalLayout;
+import ohos.agp.components.Text;
+import ohos.agp.components.webengine.WebView;
+
+/**
+ * ShowAbility
+ *
+ * @since 2021-04-30
+ */
+public class ShowAbility extends Ability {
+ private static final int NUM_20 = 20;
+ private final int[] resIds = {
+ ResourceTable.Id_btn_default,ResourceTable.Id_btn_agate,
+ ResourceTable.Id_btn_ANDROIDSTUDIO,ResourceTable.Id_btn_ARDUINO_LIGHT,ResourceTable.Id_btn_ARTA,
+ ResourceTable.Id_btn_ASCETIC,ResourceTable.Id_btn_ATELIER_DARK,ResourceTable.Id_btn_ATELIER_LIGHT,
+ ResourceTable.Id_btn_ATELIER_FOREST_DARK,ResourceTable.Id_btn_DARKSTYLE,
+ ResourceTable.Id_btn_DARKULA,ResourceTable.Id_btn_DOCCO,ResourceTable.Id_btn_FAR,
+ ResourceTable.Id_btn_GITHUB,ResourceTable.Id_btn_GITHUBGIST,
+ ResourceTable.Id_btn_GOOGLECODE,ResourceTable.Id_btn_IDEA,ResourceTable.Id_btn_MAGULA,
+ ResourceTable.Id_btn_OBSIDIAN,ResourceTable.Id_btn_XCODE};
+ private final String[] styles = {
+ Settings.WithStyle.DEFAULT,Settings.WithStyle.AGATE,
+ Settings.WithStyle.ANDROIDSTUDIO,Settings.WithStyle.ARDUINO_LIGHT,Settings.WithStyle.ARTA,
+ Settings.WithStyle.ASCETIC,Settings.WithStyle.ATELIER_DARK,
+ Settings.WithStyle.ATELIER_LIGHT,Settings.WithStyle.ATELIER_FOREST_DARK,Settings.WithStyle.DARKSTYLE,
+ Settings.WithStyle.DARKULA,Settings.WithStyle.DOCCO,
+ Settings.WithStyle.FAR,Settings.WithStyle.GITHUB,Settings.WithStyle.GITHUBGIST,
+ Settings.WithStyle.GOOGLECODE,Settings.WithStyle.IDEA,
+ Settings.WithStyle.MAGULA,Settings.WithStyle.OBSIDIAN,Settings.WithStyle.XCODE};
+ private final Button[] buttons = new Button[NUM_20];
+ private Text textStyle;
+ private Text textAutoWrap;
+ private boolean isMyAutoWrap = false;
+ private WebView webView;
+ private Intent mIntent;
+ private int mPosition = 0;
+
+ @Override
+ public void onStart(Intent intent) {
+ super.onStart(intent);
+ super.setUIContent(ResourceTable.Layout_ability_show);
+ DirectionalLayout directionalLayout = (DirectionalLayout)findComponentById(ResourceTable.Id_dl);
+ webView = new WebView(getContext());
+ webView.setComponentSize(DirectionalLayout.LayoutConfig.MATCH_PARENT,
+ DirectionalLayout.LayoutConfig.MATCH_PARENT);
+ directionalLayout.addComponent(webView);
+ mIntent = intent;
+ initView();
+ }
+
+ private void initView() {
+ textStyle = (Text) findComponentById(ResourceTable.Id_t_style);
+ textAutoWrap = (Text) findComponentById(ResourceTable.Id_t_AutoWrap);
+ for (int i = 0;i < NUM_20;i++) {
+ Button button = (Button)findComponentById(resIds[i]);
+ int finalI = i;
+ button.setClickedListener(component -> setView(button.getText(), finalI,isMyAutoWrap));
+ buttons[i] = button;
+ }
+ Button button = (Button)findComponentById(ResourceTable.Id_btn_AutoWrap);
+ button.setClickedListener(component -> {
+ isMyAutoWrap = !isMyAutoWrap;
+ setView(buttons[mPosition].getText(),mPosition,isMyAutoWrap);
+ });
+ setView(buttons[mPosition].getText(),mPosition,isMyAutoWrap);
+ }
+
+ private void setView(String style,int position,boolean isAutoWrap) {
+ mPosition = position;
+ textStyle.setText(style);
+ textAutoWrap.setText(String.valueOf(isAutoWrap));
+ if (mIntent.getIntParam(Constants.SHOW_TYPE,1) == Constants.OTHER1_TYPE) {
+ Codeview.with(getApplicationContext())
+ .setHtmlHeadContent("")
+ .withHtml(" h1 injected header
")
+ .withText("this text is always wrap inside pre tags")
+ .withCode(Constants.OTHER1_STRING)
+ .withHtml(" h1 header after code
")
+ .withHtml("")
+ .setStyle(styles[position])
+ .setLang(Settings.Lang.JAVASCRIPT)
+ .setAutoWrap(isAutoWrap)
+ .into(webView);
+ } else {
+ Codeview.with(getApplicationContext())
+ .withCode(mIntent.getStringParam(Constants.SHOW_CODE))
+ .setLang(mIntent.getStringParam(Constants.SHOW_LANG))
+ .setStyle(styles[position])
+ .setAutoWrap(isAutoWrap)
+ .into(webView);
+ }
+ }
+}
diff --git a/entry/src/main/resources/base/element/string.json b/entry/src/main/resources/base/element/string.json
new file mode 100644
index 0000000..ffc4254
--- /dev/null
+++ b/entry/src/main/resources/base/element/string.json
@@ -0,0 +1,20 @@
+{
+ "string": [
+ {
+ "name": "app_name",
+ "value": "CodeView"
+ },
+ {
+ "name": "mainability_description",
+ "value": "Java_Phone_Empty Feature Ability"
+ },
+ {
+ "name": "HelloWorld",
+ "value": "Hello World"
+ },
+ {
+ "name": "showability_description",
+ "value": "Java_Phone_Empty Feature Ability"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/entry/src/main/resources/base/graphic/background_ability_main.xml b/entry/src/main/resources/base/graphic/background_ability_main.xml
new file mode 100644
index 0000000..c0c0a3d
--- /dev/null
+++ b/entry/src/main/resources/base/graphic/background_ability_main.xml
@@ -0,0 +1,6 @@
+
+
+
+
\ No newline at end of file
diff --git a/entry/src/main/resources/base/graphic/background_ability_show.xml b/entry/src/main/resources/base/graphic/background_ability_show.xml
new file mode 100644
index 0000000..a002c23
--- /dev/null
+++ b/entry/src/main/resources/base/graphic/background_ability_show.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/entry/src/main/resources/base/graphic/background_bt_color.xml b/entry/src/main/resources/base/graphic/background_bt_color.xml
new file mode 100644
index 0000000..86bb1b3
--- /dev/null
+++ b/entry/src/main/resources/base/graphic/background_bt_color.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/entry/src/main/resources/base/graphic/background_text_color.xml b/entry/src/main/resources/base/graphic/background_text_color.xml
new file mode 100644
index 0000000..3bef41f
--- /dev/null
+++ b/entry/src/main/resources/base/graphic/background_text_color.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/entry/src/main/resources/base/layout/ability_main.xml b/entry/src/main/resources/base/layout/ability_main.xml
new file mode 100644
index 0000000..5329d3c
--- /dev/null
+++ b/entry/src/main/resources/base/layout/ability_main.xml
@@ -0,0 +1,173 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/entry/src/main/resources/base/layout/ability_show.xml b/entry/src/main/resources/base/layout/ability_show.xml
new file mode 100644
index 0000000..69bc209
--- /dev/null
+++ b/entry/src/main/resources/base/layout/ability_show.xml
@@ -0,0 +1,396 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/entry/src/main/resources/base/media/icon.png b/entry/src/main/resources/base/media/icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..ce307a8827bd75456441ceb57d530e4c8d45d36c
GIT binary patch
literal 6790
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