From 41ddaf7f33247edd43cec686460dfdacbe6d221b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=97=B1=20PixelyIon?= Date: Tue, 31 Mar 2020 01:09:21 +0530 Subject: [PATCH] Add in Licenses to Settings This commit adds in all the licenses to the end of settings by introducing a new type of preference: "LicensePreference" --- .../java/emu/skyline/utility/LicenseDialog.kt | 35 ++ .../emu/skyline/utility/LicensePreference.kt | 58 +++ app/src/main/res/layout/license_dialog.xml | 35 ++ app/src/main/res/layout/main_activity.xml | 2 +- app/src/main/res/values/licenses.xml | 421 ++++++++++++++++++ app/src/main/res/values/strings.xml | 19 + app/src/main/res/values/styles.xml | 4 + app/src/main/res/xml/preferences.xml | 62 ++- 8 files changed, 629 insertions(+), 7 deletions(-) create mode 100644 app/src/main/java/emu/skyline/utility/LicenseDialog.kt create mode 100644 app/src/main/java/emu/skyline/utility/LicensePreference.kt create mode 100644 app/src/main/res/layout/license_dialog.xml create mode 100644 app/src/main/res/values/licenses.xml diff --git a/app/src/main/java/emu/skyline/utility/LicenseDialog.kt b/app/src/main/java/emu/skyline/utility/LicenseDialog.kt new file mode 100644 index 00000000..137be584 --- /dev/null +++ b/app/src/main/java/emu/skyline/utility/LicenseDialog.kt @@ -0,0 +1,35 @@ +/* + * SPDX-License-Identifier: LGPL-3.0-or-later + * Copyright © 2020 Skyline Team and Contributors (https://github.com/skyline-emu/) + */ + +package emu.skyline.utility + +import android.os.Bundle +import android.text.method.ScrollingMovementMethod +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.DialogFragment +import emu.skyline.R +import kotlinx.android.synthetic.main.license_dialog.* + +class LicenseDialog : DialogFragment() { + private var libraryUrl: String = "" + private var libraryLicense: String = "" + + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { + libraryUrl = arguments?.getString("libraryUrl")!! + libraryLicense = context?.getString(arguments?.getInt("libraryLicense")!!)!! + + return requireActivity().layoutInflater.inflate(R.layout.license_dialog, container) + } + + override fun onActivityCreated(savedInstanceState: Bundle?) { + super.onActivityCreated(savedInstanceState) + + license_url.text = libraryUrl + license_content.text = libraryLicense + license_content.movementMethod = ScrollingMovementMethod() + } +} diff --git a/app/src/main/java/emu/skyline/utility/LicensePreference.kt b/app/src/main/java/emu/skyline/utility/LicensePreference.kt new file mode 100644 index 00000000..0a997ea4 --- /dev/null +++ b/app/src/main/java/emu/skyline/utility/LicensePreference.kt @@ -0,0 +1,58 @@ +/* + * SPDX-License-Identifier: LGPL-3.0-or-later + * Copyright © 2020 Skyline Team and Contributors (https://github.com/skyline-emu/) + */ + +package emu.skyline.utility + +import android.content.Context +import android.os.Bundle +import android.util.AttributeSet +import android.util.Log +import androidx.appcompat.app.AppCompatActivity +import androidx.fragment.app.DialogFragment.STYLE_NORMAL +import androidx.fragment.app.FragmentManager +import androidx.preference.Preference +import emu.skyline.R +import emu.skyline.SettingsActivity + +class LicensePreference : Preference { + private val fragmentManager: FragmentManager + private val mDialogFragmentTag = "LicensePreference" + private var libraryUrl: String? = null + private var libraryLicense: Int? = null + + constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int, defStyleRes: Int) : super(context, attrs, defStyleAttr, defStyleRes) { + fragmentManager = (context as AppCompatActivity).supportFragmentManager + + for (i in 0 until attrs!!.attributeCount) { + val attr = attrs.getAttributeName(i) + if (attr.equals("libraryUrl", ignoreCase = true)) + libraryUrl = attrs.getAttributeValue(i) + else if (attr.equals("libraryLicense", ignoreCase = true)) + libraryLicense = attrs.getAttributeValue(i).substring(1).toInt() + } + } + + constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) : this(context, attrs, defStyleAttr, R.style.LicenseDialogTheme) + + constructor(context: Context?, attrs: AttributeSet?) : this(context, attrs, R.attr.dialogPreferenceStyle) + + constructor(context: Context?) : this(context, null) + + override fun onClick() { + if (fragmentManager.findFragmentByTag(mDialogFragmentTag) != null) + return + + val fragment = LicenseDialog() + + val bundle = Bundle(2) + bundle.putString("libraryUrl", libraryUrl!!) + bundle.putInt("libraryLicense", libraryLicense!!) + fragment.arguments = bundle + + fragment.setStyle(STYLE_NORMAL, R.style.LicenseDialogTheme) + + fragment.show(fragmentManager, mDialogFragmentTag) + } +} diff --git a/app/src/main/res/layout/license_dialog.xml b/app/src/main/res/layout/license_dialog.xml new file mode 100644 index 00000000..36f066cc --- /dev/null +++ b/app/src/main/res/layout/license_dialog.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + diff --git a/app/src/main/res/layout/main_activity.xml b/app/src/main/res/layout/main_activity.xml index 721adb73..45f4d11c 100644 --- a/app/src/main/res/layout/main_activity.xml +++ b/app/src/main/res/layout/main_activity.xml @@ -25,7 +25,7 @@ app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@+id/toolbar" /> + app:layout_constraintTop_toBottomOf="@id/toolbar" /> + +Copyright © 2012 - present, Victor Zverovich\n +\n +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions:\n +\n +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software.\n +\n +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE 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.\n +\n +--- Optional exception to the license ---\n +\n +As an exception, if, as a result of your compiling your source code, portions +of this Software are embedded into a machine-executable object form of such +source code, you may redistribute such embedded portions in such object form +without including the above copyright and permission notices. + + + Apache License\n + Version 2.0, January 2004\n + http://www.apache.org/licenses/\n +\n + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n +\n + 1. Definitions.\n +\n + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document.\n +\n + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License.\n +\n + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity.\n +\n + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License.\n +\n + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files.\n +\n + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types.\n +\n + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below).\n +\n + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof.\n +\n + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution."\n +\n + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work.\n +\n + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form.\n +\n + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed.\n +\n + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions:\n +\n + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and\n +\n + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and\n +\n + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and\n +\n + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License.\n +\n + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License.\n +\n + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions.\n +\n + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file.\n +\n + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License.\n +\n + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages.\n +\n + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability.\n +\n + END OF TERMS AND CONDITIONS\n +\n + APPENDIX: How to apply the Apache License to your work.\n +\n + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don\'t include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives.\n +\n + Copyright [yyyy] [name of copyright owner]\n +\n + 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\n +\n + http://www.apache.org/licenses/LICENSE-2.0\n +\n + 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. + + +This software is provided \'as-is\', without any express or implied +warranty. In no event will the authors be held liable for any +damages arising from the use of this software.\n +\n +Permission is granted to anyone to use this software for any +purpose, including commercial applications, and to alter it and +redistribute it freely, subject to the following restrictions:\n +\n +1. The origin of this software must not be misrepresented; you must +not claim that you wrote the original software. If you use this +software in a product, an acknowledgment in the product documentation +would be appreciated but is not required.\n +\n +2. Altered source versions must be plainly marked as such, and +must not be misrepresented as being the original software.\n +\n +3. This notice may not be removed or altered from any source +distribution. + + + GNU LESSER GENERAL PUBLIC LICENSE\n + Version 3, 29 June 2007\n +\n + Copyright © 2007 Free Software Foundation, Inc. <https://fsf.org/> + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed.\n +\n +\n + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below.\n +\n + 0. Additional Definitions.\n +\n + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License.\n +\n + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below.\n +\n + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library.\n +\n + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version".\n +\n + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version.\n +\n + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work.\n +\n + 1. Exception to Section 3 of the GNU GPL.\n +\n + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL.\n +\n + 2. Conveying Modified Versions.\n +\n + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version:\n +\n + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or\n +\n + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy.\n +\n + 3. Object Code Incorporating Material from Library Header Files.\n +\n + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following:\n +\n + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License.\n +\n + b) Accompany the object code with a copy of the GNU GPL and this license + document.\n +\n + 4. Combined Works.\n +\n + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following:\n +\n + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License.\n +\n + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document.\n +\n + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document.\n +\n + d) Do one of the following:\n +\n + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source.\n +\n + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user\'s computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version.\n +\n + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.)\n +\n + 5. Combined Libraries.\n +\n + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following:\n +\n + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License.\n +\n + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work.\n +\n + 6. Revised Versions of the GNU Lesser General Public License.\n +\n + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns.\n +\n + Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation.\n +\n + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy\'s public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 34cb8165..6ea5cf32 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -38,4 +38,23 @@ Audio Audio Buffer Size The size of the buffer used to store audio samples for ROMs using audren. A lower value will result in less latency but potentially increased audio stutter depending on the performance of the device + + Licenses + {fmt} + We use libfmt for formatting strings (Custom License) + oboe + We use oboe for audio output during emulation (Apache License 2.0) + Vulkan-Hpp + We use Vulkan-Hpp for using Vulkan with a C++ API (Apache License 2.0) + TinyXML2 + We use TinyXML2 for parsing the preference XML to retrieve settings from C++ (zLib License) + java-string-similarity + We use java-string-similarity to power our search functionality (Apache License 2.0) + AndroidX + We use AndroidX to have a consistent user-experience across Android versions (Apache License 2.0) + Android Material Components + We use Android Material Components to have a consistent material design UI (Apache License 2.0) + Kotlin Standard Library + We use Kotlin Standard Library for accessing convenience functions in Kotlin (Apache License 2.0) + The license of Skyline (LGPLv3 or later) diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 3a60d971..6a1171df 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -15,4 +15,8 @@ @color/colorPrimary @color/colorOnPrimary + diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index c4243720..3ba57de2 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -58,12 +58,62 @@ android:key="category_audio" android:title="@string/audio"> + android:max="2880" + app:key="audren_buffer_size" + app:min="320" + app:showSeekBarValue="true" + app:summary="@string/audren_buffer_desc" + app:title="@string/audren_buffer_size" /> + + + + + + + + + + +