From caebf8fc52220f61bd5bdac9b175f1c98eb2027a Mon Sep 17 00:00:00 2001 From: kichikuou Date: Wed, 4 Jan 2023 10:13:56 +0900 Subject: [PATCH] Android: Add activities to display open source notices --- .gitignore | 1 + android/app/jni/CMakeLists.txt | 13 ++++++- android/app/src/main/AndroidManifest.xml | 11 ++++++ .../kichikuou/system3/LauncherActivity.kt | 5 +++ .../kichikuou/system3/LicensesActivity.kt | 23 ++++++++++++ .../kichikuou/system3/LicensesMenuActivity.kt | 36 +++++++++++++++++++ .../src/main/res/layout/activity_licenses.xml | 9 +++++ .../res/layout/activity_licenses_menu.xml | 9 +++++ .../app/src/main/res/menu/launcher_menu.xml | 3 ++ .../app/src/main/res/values-ja/strings.xml | 1 + android/app/src/main/res/values/strings.xml | 1 + 11 files changed, 111 insertions(+), 1 deletion(-) create mode 100644 android/app/src/main/java/io/github/kichikuou/system3/LicensesActivity.kt create mode 100644 android/app/src/main/java/io/github/kichikuou/system3/LicensesMenuActivity.kt create mode 100644 android/app/src/main/res/layout/activity_licenses.xml create mode 100644 android/app/src/main/res/layout/activity_licenses_menu.xml diff --git a/.gitignore b/.gitignore index 67b3f57..4bed892 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ out android/.gradle android/app/.externalNativeBuild android/app/build +android/app/src/main/assets diff --git a/android/app/jni/CMakeLists.txt b/android/app/jni/CMakeLists.txt index 7781f2e..5c645cb 100644 --- a/android/app/jni/CMakeLists.txt +++ b/android/app/jni/CMakeLists.txt @@ -1,6 +1,7 @@ cmake_minimum_required(VERSION 3.13) project(GAME) +set(PROJECT_ROOT_DIR ../../..) include(FetchContent) FetchContent_Declare( @@ -30,4 +31,14 @@ if(NOT sdl_ttf_POPULATED) endif() # The main CMakeLists.txt of system3 -add_subdirectory(../../../src src) +add_subdirectory(${PROJECT_ROOT_DIR}/src src) + +# Copy asset files +set(ASSETS_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../src/main/assets) +file(MAKE_DIRECTORY ${ASSETS_DIR}/licenses) +file(COPY_FILE ${PROJECT_ROOT_DIR}/COPYING.txt ${ASSETS_DIR}/licenses/system3) +file(COPY_FILE ${PROJECT_ROOT_DIR}/resources/fonts/MTLc3m.ttf.license ${ASSETS_DIR}/licenses/MTLc3m) +file(COPY_FILE ${sdl_SOURCE_DIR}/LICENSE.txt ${ASSETS_DIR}/licenses/SDL) +file(COPY_FILE ${sdl_ttf_SOURCE_DIR}/LICENSE.txt ${ASSETS_DIR}/licenses/SDL_ttf) +file(COPY_FILE ${sdl_ttf_SOURCE_DIR}/external/freetype/docs/GPLv2.TXT ${ASSETS_DIR}/licenses/freetype) +file(COPY_FILE ${sdl_ttf_SOURCE_DIR}/external/harfbuzz/COPYING ${ASSETS_DIR}/licenses/harfbuzz) diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index a5c07b9..264de77 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -94,6 +94,17 @@ --> + + + + + + diff --git a/android/app/src/main/java/io/github/kichikuou/system3/LauncherActivity.kt b/android/app/src/main/java/io/github/kichikuou/system3/LauncherActivity.kt index 2e12edd..40d4ca4 100644 --- a/android/app/src/main/java/io/github/kichikuou/system3/LauncherActivity.kt +++ b/android/app/src/main/java/io/github/kichikuou/system3/LauncherActivity.kt @@ -104,6 +104,11 @@ class LauncherActivity : Activity(), LauncherObserver { SAVEDATA_IMPORT_REQUEST) true } + R.id.licenses -> { + val intent = Intent(this, LicensesMenuActivity::class.java) + startActivity(intent) + true + } else -> super.onOptionsItemSelected(item) } } diff --git a/android/app/src/main/java/io/github/kichikuou/system3/LicensesActivity.kt b/android/app/src/main/java/io/github/kichikuou/system3/LicensesActivity.kt new file mode 100644 index 0000000..3dec41f --- /dev/null +++ b/android/app/src/main/java/io/github/kichikuou/system3/LicensesActivity.kt @@ -0,0 +1,23 @@ +package io.github.kichikuou.system3 + +import android.app.Activity +import android.os.Bundle +import android.widget.TextView +import java.io.BufferedReader + +class LicensesActivity : Activity() { + companion object { + const val EXTRA_DISPLAY_NAME = "DISPLAY_NAME" + const val EXTRA_FILE_NAME = "FILE_NAME" + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_licenses) + + actionBar?.title = intent.getStringExtra(EXTRA_DISPLAY_NAME) + val path = "licenses/" + intent.getStringExtra(EXTRA_FILE_NAME) + val text = assets.open(path).bufferedReader().use(BufferedReader::readText) + findViewById(R.id.license_text).text = text + } +} \ No newline at end of file diff --git a/android/app/src/main/java/io/github/kichikuou/system3/LicensesMenuActivity.kt b/android/app/src/main/java/io/github/kichikuou/system3/LicensesMenuActivity.kt new file mode 100644 index 0000000..c9f7bc3 --- /dev/null +++ b/android/app/src/main/java/io/github/kichikuou/system3/LicensesMenuActivity.kt @@ -0,0 +1,36 @@ +package io.github.kichikuou.system3 + +import android.app.Activity +import android.content.Intent +import android.os.Bundle +import android.widget.ListView +import android.widget.SimpleAdapter + +class LicensesMenuActivity : Activity() { + class Entry(val displayName: String, val fileName: String, val url: String) + private val entries: ArrayList = arrayListOf( + Entry("system3-sdl2", "system3", "https://github.com/kichikuou/system3-sdl2"), + Entry("SDL", "SDL", "https://www.libsdl.org/"), + Entry("SDL_ttf", "SDL_ttf", "https://github.com/libsdl-org/SDL_ttf"), + Entry("FreeType", "freetype", "https://freetype.org/"), + Entry("HarfBuzz", "harfbuzz", "https://harfbuzz.github.io/"), + Entry("MotoyaLCedar W3 mono", "MTLc3m", "https://github.com/aosp-mirror/platform_frameworks_base/tree/lollipop-release/data/fonts"), + ) + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_licenses_menu) + + val items = entries.map { mapOf("name" to it.displayName, "url" to it.url)} + val listView = findViewById(R.id.list) + listView.adapter = SimpleAdapter(this, items, android.R.layout.simple_list_item_2, + arrayOf("name", "url"), intArrayOf(android.R.id.text1, android.R.id.text2)) + listView.setOnItemClickListener { _, _, pos, _ -> + val intent = Intent(this, LicensesActivity::class.java).apply { + putExtra(LicensesActivity.EXTRA_DISPLAY_NAME, entries[pos].displayName) + putExtra(LicensesActivity.EXTRA_FILE_NAME, entries[pos].fileName) + } + startActivity(intent) + } + } +} \ No newline at end of file diff --git a/android/app/src/main/res/layout/activity_licenses.xml b/android/app/src/main/res/layout/activity_licenses.xml new file mode 100644 index 0000000..a4200f7 --- /dev/null +++ b/android/app/src/main/res/layout/activity_licenses.xml @@ -0,0 +1,9 @@ + + + + \ No newline at end of file diff --git a/android/app/src/main/res/layout/activity_licenses_menu.xml b/android/app/src/main/res/layout/activity_licenses_menu.xml new file mode 100644 index 0000000..df3ab57 --- /dev/null +++ b/android/app/src/main/res/layout/activity_licenses_menu.xml @@ -0,0 +1,9 @@ + + + + \ No newline at end of file diff --git a/android/app/src/main/res/menu/launcher_menu.xml b/android/app/src/main/res/menu/launcher_menu.xml index d77b28b..194085b 100644 --- a/android/app/src/main/res/menu/launcher_menu.xml +++ b/android/app/src/main/res/menu/launcher_menu.xml @@ -6,4 +6,7 @@ + \ No newline at end of file diff --git a/android/app/src/main/res/values-ja/strings.xml b/android/app/src/main/res/values-ja/strings.xml index d7dd781..f2392ef 100644 --- a/android/app/src/main/res/values-ja/strings.xml +++ b/android/app/src/main/res/values-ja/strings.xml @@ -3,6 +3,7 @@ System3 セーブデータをエクスポート セーブデータをインポート + オープンソースライセンス ゲーム終了 キャンセル System3 のファイル (*.dat) が見つかりません。 diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml index 96ee1f1..7233b80 100644 --- a/android/app/src/main/res/values/strings.xml +++ b/android/app/src/main/res/values/strings.xml @@ -2,6 +2,7 @@ System3 Export Save Files Import Save Files + Open source licenses Quit Game Cancel Cannot find System3 game files (*.dat).