diff --git a/Application/build.gradle b/Application/build.gradle index 8f86751..c9c9b07 100644 --- a/Application/build.gradle +++ b/Application/build.gradle @@ -2,10 +2,11 @@ buildscript { repositories { jcenter() + google() } dependencies { - classpath 'com.android.tools.build:gradle:2.3.3' + classpath 'com.android.tools.build:gradle:3.0.1' } } @@ -13,9 +14,7 @@ apply plugin: 'com.android.application' repositories { jcenter() - maven { - url 'https://maven.google.com' - } + google() } dependencies { @@ -34,14 +33,13 @@ List dirs = [ 'template'] // boilerplate code that is generated by the sample template process android { - - compileSdkVersion 26 + compileSdkVersion 27 - buildToolsVersion "26.0.1" + buildToolsVersion "27.0.2" defaultConfig { minSdkVersion 21 - targetSdkVersion 26 + targetSdkVersion 27 } compileOptions { diff --git a/LICENSE b/LICENSE index 4f22946..d5cf8f3 100644 --- a/LICENSE +++ b/LICENSE @@ -201,447 +201,3 @@ Apache License 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. - -All image and audio files (including *.png, *.jpg, *.svg, *.mp3, *.wav -and *.ogg) are licensed under the CC-BY-NC license. All other files are -licensed under the Apache 2 license. - -CC-BY-NC License ----------------- - -Attribution-NonCommercial-ShareAlike 4.0 International - -======================================================================= - -Creative Commons Corporation ("Creative Commons") is not a law firm and -does not provide legal services or legal advice. Distribution of -Creative Commons public licenses does not create a lawyer-client or -other relationship. Creative Commons makes its licenses and related -information available on an "as-is" basis. Creative Commons gives no -warranties regarding its licenses, any material licensed under their -terms and conditions, or any related information. Creative Commons -disclaims all liability for damages resulting from their use to the -fullest extent possible. - -Using Creative Commons Public Licenses - -Creative Commons public licenses provide a standard set of terms and -conditions that creators and other rights holders may use to share -original works of authorship and other material subject to copyright -and certain other rights specified in the public license below. The -following considerations are for informational purposes only, are not -exhaustive, and do not form part of our licenses. - - Considerations for licensors: Our public licenses are - intended for use by those authorized to give the public - permission to use material in ways otherwise restricted by - copyright and certain other rights. Our licenses are - irrevocable. Licensors should read and understand the terms - and conditions of the license they choose before applying it. - Licensors should also secure all rights necessary before - applying our licenses so that the public can reuse the - material as expected. Licensors should clearly mark any - material not subject to the license. This includes other CC- - licensed material, or material used under an exception or - limitation to copyright. More considerations for licensors: - wiki.creativecommons.org/Considerations_for_licensors - - Considerations for the public: By using one of our public - licenses, a licensor grants the public permission to use the - licensed material under specified terms and conditions. If - the licensor's permission is not necessary for any reason--for - example, because of any applicable exception or limitation to - copyright--then that use is not regulated by the license. Our - licenses grant only permissions under copyright and certain - other rights that a licensor has authority to grant. Use of - the licensed material may still be restricted for other - reasons, including because others have copyright or other - rights in the material. A licensor may make special requests, - such as asking that all changes be marked or described. - Although not required by our licenses, you are encouraged to - respect those requests where reasonable. More_considerations - for the public: - wiki.creativecommons.org/Considerations_for_licensees - -======================================================================= - -Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International -Public License - -By exercising the Licensed Rights (defined below), You accept and agree -to be bound by the terms and conditions of this Creative Commons -Attribution-NonCommercial-ShareAlike 4.0 International Public License -("Public License"). To the extent this Public License may be -interpreted as a contract, You are granted the Licensed Rights in -consideration of Your acceptance of these terms and conditions, and the -Licensor grants You such rights in consideration of benefits the -Licensor receives from making the Licensed Material available under -these terms and conditions. - - -Section 1 -- Definitions. - - a. Adapted Material means material subject to Copyright and Similar - Rights that is derived from or based upon the Licensed Material - and in which the Licensed Material is translated, altered, - arranged, transformed, or otherwise modified in a manner requiring - permission under the Copyright and Similar Rights held by the - Licensor. For purposes of this Public License, where the Licensed - Material is a musical work, performance, or sound recording, - Adapted Material is always produced where the Licensed Material is - synched in timed relation with a moving image. - - b. Adapter's License means the license You apply to Your Copyright - and Similar Rights in Your contributions to Adapted Material in - accordance with the terms and conditions of this Public License. - - c. BY-NC-SA Compatible License means a license listed at - creativecommons.org/compatiblelicenses, approved by Creative - Commons as essentially the equivalent of this Public License. - - d. Copyright and Similar Rights means copyright and/or similar rights - closely related to copyright including, without limitation, - performance, broadcast, sound recording, and Sui Generis Database - Rights, without regard to how the rights are labeled or - categorized. For purposes of this Public License, the rights - specified in Section 2(b)(1)-(2) are not Copyright and Similar - Rights. - - e. Effective Technological Measures means those measures that, in the - absence of proper authority, may not be circumvented under laws - fulfilling obligations under Article 11 of the WIPO Copyright - Treaty adopted on December 20, 1996, and/or similar international - agreements. - - f. Exceptions and Limitations means fair use, fair dealing, and/or - any other exception or limitation to Copyright and Similar Rights - that applies to Your use of the Licensed Material. - - g. License Elements means the license attributes listed in the name - of a Creative Commons Public License. The License Elements of this - Public License are Attribution, NonCommercial, and ShareAlike. - - h. Licensed Material means the artistic or literary work, database, - or other material to which the Licensor applied this Public - License. - - i. Licensed Rights means the rights granted to You subject to the - terms and conditions of this Public License, which are limited to - all Copyright and Similar Rights that apply to Your use of the - Licensed Material and that the Licensor has authority to license. - - j. Licensor means the individual(s) or entity(ies) granting rights - under this Public License. - - k. NonCommercial means not primarily intended for or directed towards - commercial advantage or monetary compensation. For purposes of - this Public License, the exchange of the Licensed Material for - other material subject to Copyright and Similar Rights by digital - file-sharing or similar means is NonCommercial provided there is - no payment of monetary compensation in connection with the - exchange. - - l. Share means to provide material to the public by any means or - process that requires permission under the Licensed Rights, such - as reproduction, public display, public performance, distribution, - dissemination, communication, or importation, and to make material - available to the public including in ways that members of the - public may access the material from a place and at a time - individually chosen by them. - - m. Sui Generis Database Rights means rights other than copyright - resulting from Directive 96/9/EC of the European Parliament and of - the Council of 11 March 1996 on the legal protection of databases, - as amended and/or succeeded, as well as other essentially - equivalent rights anywhere in the world. - - n. You means the individual or entity exercising the Licensed Rights - under this Public License. Your has a corresponding meaning. - - -Section 2 -- Scope. - - a. License grant. - - 1. Subject to the terms and conditions of this Public License, - the Licensor hereby grants You a worldwide, royalty-free, - non-sublicensable, non-exclusive, irrevocable license to - exercise the Licensed Rights in the Licensed Material to: - - a. reproduce and Share the Licensed Material, in whole or - in part, for NonCommercial purposes only; and - - b. produce, reproduce, and Share Adapted Material for - NonCommercial purposes only. - - 2. Exceptions and Limitations. For the avoidance of doubt, where - Exceptions and Limitations apply to Your use, this Public - License does not apply, and You do not need to comply with - its terms and conditions. - - 3. Term. The term of this Public License is specified in Section - 6(a). - - 4. Media and formats; technical modifications allowed. The - Licensor authorizes You to exercise the Licensed Rights in - all media and formats whether now known or hereafter created, - and to make technical modifications necessary to do so. The - Licensor waives and/or agrees not to assert any right or - authority to forbid You from making technical modifications - necessary to exercise the Licensed Rights, including - technical modifications necessary to circumvent Effective - Technological Measures. For purposes of this Public License, - simply making modifications authorized by this Section 2(a) - (4) never produces Adapted Material. - - 5. Downstream recipients. - - a. Offer from the Licensor -- Licensed Material. Every - recipient of the Licensed Material automatically - receives an offer from the Licensor to exercise the - Licensed Rights under the terms and conditions of this - Public License. - - b. Additional offer from the Licensor -- Adapted Material. - Every recipient of Adapted Material from You - automatically receives an offer from the Licensor to - exercise the Licensed Rights in the Adapted Material - under the conditions of the Adapter's License You apply. - - c. No downstream restrictions. You may not offer or impose - any additional or different terms or conditions on, or - apply any Effective Technological Measures to, the - Licensed Material if doing so restricts exercise of the - Licensed Rights by any recipient of the Licensed - Material. - - 6. No endorsement. Nothing in this Public License constitutes or - may be construed as permission to assert or imply that You - are, or that Your use of the Licensed Material is, connected - with, or sponsored, endorsed, or granted official status by, - the Licensor or others designated to receive attribution as - provided in Section 3(a)(1)(A)(i). - - b. Other rights. - - 1. Moral rights, such as the right of integrity, are not - licensed under this Public License, nor are publicity, - privacy, and/or other similar personality rights; however, to - the extent possible, the Licensor waives and/or agrees not to - assert any such rights held by the Licensor to the limited - extent necessary to allow You to exercise the Licensed - Rights, but not otherwise. - - 2. Patent and trademark rights are not licensed under this - Public License. - - 3. To the extent possible, the Licensor waives any right to - collect royalties from You for the exercise of the Licensed - Rights, whether directly or through a collecting society - under any voluntary or waivable statutory or compulsory - licensing scheme. In all other cases the Licensor expressly - reserves any right to collect such royalties, including when - the Licensed Material is used other than for NonCommercial - purposes. - - -Section 3 -- License Conditions. - -Your exercise of the Licensed Rights is expressly made subject to the -following conditions. - - a. Attribution. - - 1. If You Share the Licensed Material (including in modified - form), You must: - - a. retain the following if it is supplied by the Licensor - with the Licensed Material: - - i. identification of the creator(s) of the Licensed - Material and any others designated to receive - attribution, in any reasonable manner requested by - the Licensor (including by pseudonym if - designated); - - ii. a copyright notice; - - iii. a notice that refers to this Public License; - - iv. a notice that refers to the disclaimer of - warranties; - - v. a URI or hyperlink to the Licensed Material to the - extent reasonably practicable; - - b. indicate if You modified the Licensed Material and - retain an indication of any previous modifications; and - - c. indicate the Licensed Material is licensed under this - Public License, and include the text of, or the URI or - hyperlink to, this Public License. - - 2. You may satisfy the conditions in Section 3(a)(1) in any - reasonable manner based on the medium, means, and context in - which You Share the Licensed Material. For example, it may be - reasonable to satisfy the conditions by providing a URI or - hyperlink to a resource that includes the required - information. - 3. If requested by the Licensor, You must remove any of the - information required by Section 3(a)(1)(A) to the extent - reasonably practicable. - - b. ShareAlike. - - In addition to the conditions in Section 3(a), if You Share - Adapted Material You produce, the following conditions also apply. - - 1. The Adapter's License You apply must be a Creative Commons - license with the same License Elements, this version or - later, or a BY-NC-SA Compatible License. - - 2. You must include the text of, or the URI or hyperlink to, the - Adapter's License You apply. You may satisfy this condition - in any reasonable manner based on the medium, means, and - context in which You Share Adapted Material. - - 3. You may not offer or impose any additional or different terms - or conditions on, or apply any Effective Technological - Measures to, Adapted Material that restrict exercise of the - rights granted under the Adapter's License You apply. - - -Section 4 -- Sui Generis Database Rights. - -Where the Licensed Rights include Sui Generis Database Rights that -apply to Your use of the Licensed Material: - - a. for the avoidance of doubt, Section 2(a)(1) grants You the right - to extract, reuse, reproduce, and Share all or a substantial - portion of the contents of the database for NonCommercial purposes - only; - - b. if You include all or a substantial portion of the database - contents in a database in which You have Sui Generis Database - Rights, then the database in which You have Sui Generis Database - Rights (but not its individual contents) is Adapted Material, - including for purposes of Section 3(b); and - - c. You must comply with the conditions in Section 3(a) if You Share - all or a substantial portion of the contents of the database. - -For the avoidance of doubt, this Section 4 supplements and does not -replace Your obligations under this Public License where the Licensed -Rights include other Copyright and Similar Rights. - - -Section 5 -- Disclaimer of Warranties and Limitation of Liability. - - a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE - EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS - AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF - ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, - IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, - WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR - PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, - ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT - KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT - ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. - - b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE - TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, - NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, - INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, - COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR - USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN - ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR - DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR - IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. - - c. The disclaimer of warranties and limitation of liability provided - above shall be interpreted in a manner that, to the extent - possible, most closely approximates an absolute disclaimer and - waiver of all liability. - - -Section 6 -- Term and Termination. - - a. This Public License applies for the term of the Copyright and - Similar Rights licensed here. However, if You fail to comply with - this Public License, then Your rights under this Public License - terminate automatically. - - b. Where Your right to use the Licensed Material has terminated under - Section 6(a), it reinstates: - - 1. automatically as of the date the violation is cured, provided - it is cured within 30 days of Your discovery of the - violation; or - - 2. upon express reinstatement by the Licensor. - - For the avoidance of doubt, this Section 6(b) does not affect any - right the Licensor may have to seek remedies for Your violations - of this Public License. - - c. For the avoidance of doubt, the Licensor may also offer the - Licensed Material under separate terms or conditions or stop - distributing the Licensed Material at any time; however, doing so - will not terminate this Public License. - - d. Sections 1, 5, 6, 7, and 8 survive termination of this Public - License. - - -Section 7 -- Other Terms and Conditions. - - a. The Licensor shall not be bound by any additional or different - terms or conditions communicated by You unless expressly agreed. - - b. Any arrangements, understandings, or agreements regarding the - Licensed Material not stated herein are separate from and - independent of the terms and conditions of this Public License. - - -Section 8 -- Interpretation. - - a. For the avoidance of doubt, this Public License does not, and - shall not be interpreted to, reduce, limit, restrict, or impose - conditions on any use of the Licensed Material that could lawfully - be made without permission under this Public License. - - b. To the extent possible, if any provision of this Public License is - deemed unenforceable, it shall be automatically reformed to the - minimum extent necessary to make it enforceable. If the provision - cannot be reformed, it shall be severed from this Public License - without affecting the enforceability of the remaining terms and - conditions. - - c. No term or condition of this Public License will be waived and no - failure to comply consented to unless expressly agreed to by the - Licensor. - - d. Nothing in this Public License constitutes or may be interpreted - as a limitation upon, or waiver of, any privileges and immunities - that apply to the Licensor or You, including from the legal - processes of any jurisdiction or authority. - -======================================================================= - -Creative Commons is not a party to its public licenses. -Notwithstanding, Creative Commons may elect to apply one of its public -licenses to material it publishes and in those instances will be -considered the "Licensor." Except for the limited purpose of indicating -that material is shared under a Creative Commons public license or as -otherwise permitted by the Creative Commons policies published at -creativecommons.org/policies, Creative Commons does not authorize the -use of the trademark "Creative Commons" or any other trademark or logo -of Creative Commons without its prior written consent including, -without limitation, in connection with any unauthorized modifications -to any of its public licenses or any other arrangements, -understandings, or agreements concerning use of licensed material. For -the avoidance of doubt, this paragraph does not form part of the public -licenses. - -Creative Commons may be contacted at creativecommons.org. - diff --git a/README.md b/README.md index b1de4a4..66b7385 100644 --- a/README.md +++ b/README.md @@ -8,8 +8,8 @@ support library. Pre-requisites -------------- -- Android SDK 26 -- Android Build Tools v26.0.1 +- Android SDK 27 +- Android Build Tools v27.0.2 - Android Support Repository Getting Started diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 98c1fee..b7d572b 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-3.4.1-all.zip \ No newline at end of file +distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip \ No newline at end of file diff --git a/kotlinApp/.google/packaging.yaml b/kotlinApp/.google/packaging.yaml new file mode 100644 index 0000000..d85e367 --- /dev/null +++ b/kotlinApp/.google/packaging.yaml @@ -0,0 +1,15 @@ +# GOOGLE SAMPLE PACKAGING DATA +# +# This file is used by Google as part of our samples packaging process. +# End users may safely ignore this file. It has no relevance to other systems. +--- + +status: PUBLISHED +technologies: [Android] +categories: [UI] +languages: [Kotlin] +solutions: [Mobile] +github: googlesamples/android-Navigation Drawer +level: BEGINNER +icon: Navigation DrawerSample/src/main/res/drawable-xxhdpi/ic_launcher.png +license: apache2 diff --git a/kotlinApp/Application/build.gradle b/kotlinApp/Application/build.gradle new file mode 100644 index 0000000..36d1ab8 --- /dev/null +++ b/kotlinApp/Application/build.gradle @@ -0,0 +1,35 @@ +apply plugin: 'com.android.application' +apply plugin: 'kotlin-android' +apply plugin: 'kotlin-android-extensions' + +android { + compileSdkVersion rootProject.ext.compileSdkVersion + defaultConfig { + applicationId "com.example.android.navigationdrawer" + minSdkVersion rootProject.ext.minSdkVersion + targetSdkVersion rootProject.ext.targetSdkVersion + versionCode 1 + versionName "1.0" + } + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } + sourceSets { + main { + java.srcDirs "src/main/java" + res.srcDirs "src/main/res" + } + androidTest.setRoot('tests') + androidTest.java.srcDirs = ['tests/src'] + } +} + +dependencies { + implementation "com.android.support:appcompat-v7:$rootProject.ext.supportLibVersion" + implementation "com.android.support:cardview-v7:$rootProject.ext.supportLibVersion" + implementation "com.android.support:recyclerview-v7:$rootProject.supportLibVersion" + implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$rootProject.ext.kotlinVersion" +} \ No newline at end of file diff --git a/kotlinApp/Application/src/main/AndroidManifest.xml b/kotlinApp/Application/src/main/AndroidManifest.xml new file mode 100644 index 0000000..5311964 --- /dev/null +++ b/kotlinApp/Application/src/main/AndroidManifest.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + diff --git a/kotlinApp/Application/src/main/java/com/example/android/navigationdrawer/MainActivity.kt b/kotlinApp/Application/src/main/java/com/example/android/navigationdrawer/MainActivity.kt new file mode 100644 index 0000000..97a6524 --- /dev/null +++ b/kotlinApp/Application/src/main/java/com/example/android/navigationdrawer/MainActivity.kt @@ -0,0 +1,76 @@ +/* + * Copyright (C) 2018 The Android Open Source Project + * + * 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.example.android.navigationdrawer + +import android.app.Activity +import android.content.Intent +import android.os.Bundle +import android.view.View +import android.view.ViewGroup +import android.widget.AdapterView +import android.widget.BaseAdapter +import android.widget.GridView +import android.widget.TextView + +/** + * A simple launcher activity offering access to the individual samples in this project. + */ +class MainActivity : Activity(), AdapterView.OnItemClickListener { + + private lateinit var samples: Array + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_main) + + // Prepare list of samples in this dashboard. + samples = arrayOf(Sample(R.string.navigationdraweractivity_title, + R.string.navigationdraweractivity_description, + Intent(this, NavigationDrawerActivity::class.java))) + + // Prepare the GridView. + findViewById(android.R.id.list).run { + adapter = SampleAdapter() + onItemClickListener = this@MainActivity + } + } + + override fun onItemClick(container: AdapterView<*>, view: View, position: Int, id: Long) { + startActivity(samples[position].intent) + } + + private inner class SampleAdapter : BaseAdapter() { + + override fun getCount() = samples.size + + override fun getItem(position: Int) = samples[position] + + override fun getItemId(position: Int) = samples[position].hashCode().toLong() + + override fun getView(position: Int, convertView: View?, container: ViewGroup): View { + return (convertView ?: layoutInflater.inflate(R.layout.sample_dashboard_item, + container, false)).apply { + findViewById(android.R.id.text1)?.setText( + samples[position].titleResId) + findViewById(android.R.id.text2)?.setText( + samples[position].descriptionResId) + } + } + + } + +} diff --git a/kotlinApp/Application/src/main/java/com/example/android/navigationdrawer/NavigationDrawerActivity.kt b/kotlinApp/Application/src/main/java/com/example/android/navigationdrawer/NavigationDrawerActivity.kt new file mode 100644 index 0000000..56f8d5a --- /dev/null +++ b/kotlinApp/Application/src/main/java/com/example/android/navigationdrawer/NavigationDrawerActivity.kt @@ -0,0 +1,194 @@ +/* + * Copyright (C) 2018 The Android Open Source Project + * + * 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.example.android.navigationdrawer + +import android.annotation.SuppressLint +import android.app.Activity +import android.app.SearchManager +import android.content.Intent +import android.content.res.Configuration +import android.os.Bundle +import android.support.v4.view.GravityCompat +import android.support.v4.widget.DrawerLayout +import android.support.v7.app.ActionBarDrawerToggle +import android.support.v7.widget.RecyclerView +import android.view.Menu +import android.view.MenuItem +import android.view.View +import android.widget.Toast + +/** + * This example illustrates a common usage of [DrawerLayout] in the Android support library. + * + * When a navigation (left) drawer is present, the host activity should detect presses of + * the action bar's Up affordance as a signal to open and close the navigation drawer. The + * ActionBarDrawerToggle facilitates this behavior. + * Items within the drawer should fall into one of two categories: + * + * * **View switches**. A view switch follows the same basic policies as + * list or tab navigation in that a view switch does not create navigation history. + * This pattern should only be used at the root activity of a task, leaving some form + * of Up navigation active for activities further down the navigation hierarchy. + * + * * **Selective Up**. The drawer allows the user to choose an alternate + * parent for Up navigation. This allows a user to jump across an app's navigation + * hierarchy at will. The application should treat this as it treats Up navigation from + * a different task, replacing the current task stack using TaskStackBuilder or similar. + * This is the only form of navigation drawer that should be used outside of the root + * activity of a task. + * + * Right side drawers should be used for actions, not navigation. This follows the pattern + * established by the Action Bar that navigation should be to the left and actions to the right. + * An action should be an operation performed on the current contents of the window, + * for example enabling or disabling a data overlay on top of the current content. + */ +class NavigationDrawerActivity : Activity(), PlanetAdapter.OnItemClickListener { + + private lateinit var drawerLayout: DrawerLayout + private lateinit var drawerList: RecyclerView + private lateinit var drawerToggle: ActionBarDrawerToggle + private lateinit var newTitle: CharSequence + private lateinit var planetTitles: Array + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_navigation_drawer) + + val drawerTitle = title + newTitle = title + planetTitles = resources.getStringArray(R.array.planets_array) + drawerLayout = findViewById(R.id.drawer_layout).apply { + setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START) + } + + drawerList = findViewById(R.id.left_drawer).apply { + // Improve performance by indicating the list if fixed size. + setHasFixedSize(true) + // Set up the drawer's list view with items and click listener. + adapter = PlanetAdapter(planetTitles, this@NavigationDrawerActivity) + } + + // Enable ActionBar app icon to behave as action to toggle nav drawer. + actionBar.run { + setDisplayHomeAsUpEnabled(true) + setHomeButtonEnabled(true) + } + + // ActionBarDrawerToggle ties together the the proper interactions + // between the sliding drawer and the action bar app icon. + drawerToggle = object : ActionBarDrawerToggle( + this, /* Host Activity */ + drawerLayout, /* DrawerLayout object */ + R.string.drawer_open, /* "Open drawer" description for accessibility */ + R.string.drawer_close /* "Close drawer" description for accessibility */ + ) { + + override fun onDrawerClosed(drawerView: View) { + actionBar.title = newTitle + invalidateOptionsMenu() // Creates call to onPrepareOptionsMenu(). + } + + override fun onDrawerOpened(drawerView: View) { + actionBar.title = drawerTitle + invalidateOptionsMenu() // Creates call to onPrepareOptionsMenu(). + } + } + + // Set a custom shadow that overlays the main content when the drawer opens. + drawerLayout.addDrawerListener(drawerToggle) + + if (savedInstanceState == null) selectItem(0) + } + + + override fun onCreateOptionsMenu(menu: Menu): Boolean { + menuInflater.inflate(R.menu.navigation_drawer, menu) + return true + } + + /** + * Called whenever we call [invalidateOptionsMenu]. + * If the nav drawer is open, hide action items related to the content view. + */ + override fun onPrepareOptionsMenu(menu: Menu) = + super.onPrepareOptionsMenu(menu.apply { + findItem(R.id.action_websearch).isVisible = !drawerLayout.isDrawerOpen(drawerList) + }) + + override fun onOptionsItemSelected(item: MenuItem): Boolean { + // The action bar home/up action should open or close the drawer. + // ActionBarDrawerToggle will take care of this. + if (drawerToggle.onOptionsItemSelected(item)) { + return true + } + + // Handle action buttons + return when (item.itemId) { + R.id.action_websearch -> { + // Create intent to perform web search for this planet. + val intent = Intent(Intent.ACTION_WEB_SEARCH).apply { + putExtra(SearchManager.QUERY, actionBar.title) + } + // Catch event that there's no activity to handle intent. + if (intent.resolveActivity(packageManager) != null) { + startActivity(intent) + } else { + Toast.makeText(this, R.string.app_not_available, Toast.LENGTH_LONG).show() + } + true + } + else -> super.onOptionsItemSelected(item) + } + } + + /* The click listener for RecyclerView in the navigation drawer. */ + override fun onClick(view: View, position: Int) { + selectItem(position) + } + + override fun setTitle(title: CharSequence) { + newTitle = title + actionBar.title = title + } + + /** + * If [ActionBarDrawerToggle] is used, it must be called in [onPostCreate] and + * [onConfigurationChanged]. + */ + override fun onPostCreate(savedInstanceState: Bundle?) { + super.onPostCreate(savedInstanceState) + // Sync the toggle state after has occurred. + drawerToggle.syncState() + } + + override fun onConfigurationChanged(newConfig: Configuration) { + super.onConfigurationChanged(newConfig) + // Pass any configuration change to the drawer toggle. + drawerToggle.onConfigurationChanged(newConfig) + } + + @SuppressLint("CommitTransaction") // commit() is called + private fun selectItem(position: Int) { + fragmentManager.beginTransaction().run { + replace(R.id.content_frame, PlanetFragment.newInstance(position)) + commit() + } + title = planetTitles[position] + drawerLayout.closeDrawer(drawerList) + } + +} diff --git a/kotlinApp/Application/src/main/java/com/example/android/navigationdrawer/PlanetAdapter.kt b/kotlinApp/Application/src/main/java/com/example/android/navigationdrawer/PlanetAdapter.kt new file mode 100644 index 0000000..3ded2b1 --- /dev/null +++ b/kotlinApp/Application/src/main/java/com/example/android/navigationdrawer/PlanetAdapter.kt @@ -0,0 +1,58 @@ +/* + * Copyright (C) 2018 The Android Open Source Project + * + * 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.example.android.navigationdrawer + +import android.support.v7.widget.RecyclerView +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView + +/** + * Adapter for the planet data used in our drawer menu. + */ +class PlanetAdapter( + private val dataset: Array, + private val listener: OnItemClickListener +) : RecyclerView.Adapter() { + + /** + * Interface for receiving click events from cells. + */ + interface OnItemClickListener { + fun onClick(view: View, position: Int) + } + + /** + * Custom [ViewHolder] for our planet views. + */ + class ViewHolder(val textView: TextView) : RecyclerView.ViewHolder(textView) + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = + ViewHolder(LayoutInflater.from(parent.context) + .inflate(R.layout.drawer_list_item, parent, false) + .findViewById(android.R.id.text1)) + + override fun onBindViewHolder(holder: ViewHolder, position: Int) { + holder.apply { + textView.text = dataset[position] + textView.setOnClickListener { view -> listener.onClick(view, position) } + } + } + + override fun getItemCount() = dataset.size +} diff --git a/kotlinApp/Application/src/main/java/com/example/android/navigationdrawer/PlanetFragment.kt b/kotlinApp/Application/src/main/java/com/example/android/navigationdrawer/PlanetFragment.kt new file mode 100644 index 0000000..cd1c937 --- /dev/null +++ b/kotlinApp/Application/src/main/java/com/example/android/navigationdrawer/PlanetFragment.kt @@ -0,0 +1,58 @@ +/* + * Copyright (C) 2018 The Android Open Source Project + * + * 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.example.android.navigationdrawer + +import android.app.Fragment +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView + +import java.util.Locale + +/** + * Fragment that appears in the "content_frame" and shows a planet. + */ +class PlanetFragment : Fragment() { + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + val planetNumber = arguments.getInt(ARG_PLANET_NUMBER) + val planet = resources.getStringArray(R.array.planets_array)[planetNumber] + val imageId = resources.getIdentifier(planet.toLowerCase(Locale.getDefault()), + "drawable", activity.packageName) + activity.title = planet + + return inflater.inflate(R.layout.fragment_planet, container, false).apply { + findViewById(R.id.image).setImageResource(imageId) + } + } + + companion object { + private val ARG_PLANET_NUMBER = "planet_number" + + fun newInstance(position: Int) = PlanetFragment().apply { + arguments = Bundle().apply { + putInt(ARG_PLANET_NUMBER, position) + } + } + } +} \ No newline at end of file diff --git a/kotlinApp/Application/src/main/java/com/example/android/navigationdrawer/Sample.kt b/kotlinApp/Application/src/main/java/com/example/android/navigationdrawer/Sample.kt new file mode 100644 index 0000000..0a13e98 --- /dev/null +++ b/kotlinApp/Application/src/main/java/com/example/android/navigationdrawer/Sample.kt @@ -0,0 +1,21 @@ +/* + * Copyright (C) 2018 The Android Open Source Project + * + * 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.example.android.navigationdrawer + +import android.content.Intent + +class Sample(var titleResId: Int, var descriptionResId: Int, var intent: Intent) diff --git a/kotlinApp/Application/src/main/res/drawable-hdpi/action_search.png b/kotlinApp/Application/src/main/res/drawable-hdpi/action_search.png new file mode 100755 index 0000000..f12e005 Binary files /dev/null and b/kotlinApp/Application/src/main/res/drawable-hdpi/action_search.png differ diff --git a/kotlinApp/Application/src/main/res/drawable-hdpi/drawer_shadow.9.png b/kotlinApp/Application/src/main/res/drawable-hdpi/drawer_shadow.9.png new file mode 100644 index 0000000..224cc4f Binary files /dev/null and b/kotlinApp/Application/src/main/res/drawable-hdpi/drawer_shadow.9.png differ diff --git a/kotlinApp/Application/src/main/res/drawable-hdpi/ic_drawer.png b/kotlinApp/Application/src/main/res/drawable-hdpi/ic_drawer.png new file mode 100644 index 0000000..ff7b1de Binary files /dev/null and b/kotlinApp/Application/src/main/res/drawable-hdpi/ic_drawer.png differ diff --git a/kotlinApp/Application/src/main/res/drawable-hdpi/ic_launcher.png b/kotlinApp/Application/src/main/res/drawable-hdpi/ic_launcher.png new file mode 100755 index 0000000..b460d60 Binary files /dev/null and b/kotlinApp/Application/src/main/res/drawable-hdpi/ic_launcher.png differ diff --git a/kotlinApp/Application/src/main/res/drawable-hdpi/tile.9.png b/kotlinApp/Application/src/main/res/drawable-hdpi/tile.9.png new file mode 100644 index 0000000..1358628 Binary files /dev/null and b/kotlinApp/Application/src/main/res/drawable-hdpi/tile.9.png differ diff --git a/kotlinApp/Application/src/main/res/drawable-mdpi/action_search.png b/kotlinApp/Application/src/main/res/drawable-mdpi/action_search.png new file mode 100755 index 0000000..587d9e0 Binary files /dev/null and b/kotlinApp/Application/src/main/res/drawable-mdpi/action_search.png differ diff --git a/kotlinApp/Application/src/main/res/drawable-mdpi/drawer_shadow.9.png b/kotlinApp/Application/src/main/res/drawable-mdpi/drawer_shadow.9.png new file mode 100644 index 0000000..3797f99 Binary files /dev/null and b/kotlinApp/Application/src/main/res/drawable-mdpi/drawer_shadow.9.png differ diff --git a/kotlinApp/Application/src/main/res/drawable-mdpi/ic_drawer.png b/kotlinApp/Application/src/main/res/drawable-mdpi/ic_drawer.png new file mode 100644 index 0000000..fb681ba Binary files /dev/null and b/kotlinApp/Application/src/main/res/drawable-mdpi/ic_drawer.png differ diff --git a/kotlinApp/Application/src/main/res/drawable-mdpi/ic_launcher.png b/kotlinApp/Application/src/main/res/drawable-mdpi/ic_launcher.png new file mode 100755 index 0000000..dee53f4 Binary files /dev/null and b/kotlinApp/Application/src/main/res/drawable-mdpi/ic_launcher.png differ diff --git a/kotlinApp/Application/src/main/res/drawable-xhdpi/action_search.png b/kotlinApp/Application/src/main/res/drawable-xhdpi/action_search.png new file mode 100755 index 0000000..3549f84 Binary files /dev/null and b/kotlinApp/Application/src/main/res/drawable-xhdpi/action_search.png differ diff --git a/kotlinApp/Application/src/main/res/drawable-xhdpi/drawer_shadow.9.png b/kotlinApp/Application/src/main/res/drawable-xhdpi/drawer_shadow.9.png new file mode 100644 index 0000000..fa3d853 Binary files /dev/null and b/kotlinApp/Application/src/main/res/drawable-xhdpi/drawer_shadow.9.png differ diff --git a/kotlinApp/Application/src/main/res/drawable-xhdpi/ic_drawer.png b/kotlinApp/Application/src/main/res/drawable-xhdpi/ic_drawer.png new file mode 100644 index 0000000..b9bc3d7 Binary files /dev/null and b/kotlinApp/Application/src/main/res/drawable-xhdpi/ic_drawer.png differ diff --git a/kotlinApp/Application/src/main/res/drawable-xhdpi/ic_launcher.png b/kotlinApp/Application/src/main/res/drawable-xhdpi/ic_launcher.png new file mode 100755 index 0000000..d4e1215 Binary files /dev/null and b/kotlinApp/Application/src/main/res/drawable-xhdpi/ic_launcher.png differ diff --git a/kotlinApp/Application/src/main/res/drawable-xxhdpi/ic_launcher.png b/kotlinApp/Application/src/main/res/drawable-xxhdpi/ic_launcher.png new file mode 100644 index 0000000..6ef21e1 Binary files /dev/null and b/kotlinApp/Application/src/main/res/drawable-xxhdpi/ic_launcher.png differ diff --git a/kotlinApp/Application/src/main/res/drawable/earth.jpg b/kotlinApp/Application/src/main/res/drawable/earth.jpg new file mode 100644 index 0000000..6cabbf4 Binary files /dev/null and b/kotlinApp/Application/src/main/res/drawable/earth.jpg differ diff --git a/kotlinApp/Application/src/main/res/drawable/jupiter.jpg b/kotlinApp/Application/src/main/res/drawable/jupiter.jpg new file mode 100644 index 0000000..24e8eea Binary files /dev/null and b/kotlinApp/Application/src/main/res/drawable/jupiter.jpg differ diff --git a/kotlinApp/Application/src/main/res/drawable/mars.jpg b/kotlinApp/Application/src/main/res/drawable/mars.jpg new file mode 100644 index 0000000..db253ef Binary files /dev/null and b/kotlinApp/Application/src/main/res/drawable/mars.jpg differ diff --git a/kotlinApp/Application/src/main/res/drawable/mercury.jpg b/kotlinApp/Application/src/main/res/drawable/mercury.jpg new file mode 100644 index 0000000..531790b Binary files /dev/null and b/kotlinApp/Application/src/main/res/drawable/mercury.jpg differ diff --git a/kotlinApp/Application/src/main/res/drawable/neptune.jpg b/kotlinApp/Application/src/main/res/drawable/neptune.jpg new file mode 100644 index 0000000..88467c5 Binary files /dev/null and b/kotlinApp/Application/src/main/res/drawable/neptune.jpg differ diff --git a/kotlinApp/Application/src/main/res/drawable/saturn.jpg b/kotlinApp/Application/src/main/res/drawable/saturn.jpg new file mode 100644 index 0000000..8219d18 Binary files /dev/null and b/kotlinApp/Application/src/main/res/drawable/saturn.jpg differ diff --git a/kotlinApp/Application/src/main/res/drawable/uranus.jpg b/kotlinApp/Application/src/main/res/drawable/uranus.jpg new file mode 100644 index 0000000..fa32e37 Binary files /dev/null and b/kotlinApp/Application/src/main/res/drawable/uranus.jpg differ diff --git a/kotlinApp/Application/src/main/res/drawable/venus.jpg b/kotlinApp/Application/src/main/res/drawable/venus.jpg new file mode 100644 index 0000000..e04f078 Binary files /dev/null and b/kotlinApp/Application/src/main/res/drawable/venus.jpg differ diff --git a/kotlinApp/Application/src/main/res/layout/activity_main.xml b/kotlinApp/Application/src/main/res/layout/activity_main.xml new file mode 100755 index 0000000..b5d00b6 --- /dev/null +++ b/kotlinApp/Application/src/main/res/layout/activity_main.xml @@ -0,0 +1,42 @@ + + + + + + + + + + diff --git a/kotlinApp/Application/src/main/res/layout/activity_navigation_drawer.xml b/kotlinApp/Application/src/main/res/layout/activity_navigation_drawer.xml new file mode 100644 index 0000000..2069035 --- /dev/null +++ b/kotlinApp/Application/src/main/res/layout/activity_navigation_drawer.xml @@ -0,0 +1,52 @@ + + + + + + + + + + + + diff --git a/kotlinApp/Application/src/main/res/layout/drawer_list_item.xml b/kotlinApp/Application/src/main/res/layout/drawer_list_item.xml new file mode 100644 index 0000000..bb343a7 --- /dev/null +++ b/kotlinApp/Application/src/main/res/layout/drawer_list_item.xml @@ -0,0 +1,28 @@ + + + + diff --git a/kotlinApp/Application/src/main/res/layout/fragment_planet.xml b/kotlinApp/Application/src/main/res/layout/fragment_planet.xml new file mode 100644 index 0000000..dad1c8c --- /dev/null +++ b/kotlinApp/Application/src/main/res/layout/fragment_planet.xml @@ -0,0 +1,26 @@ + + + + + diff --git a/kotlinApp/Application/src/main/res/layout/sample_dashboard_item.xml b/kotlinApp/Application/src/main/res/layout/sample_dashboard_item.xml new file mode 100644 index 0000000..a50dec8 --- /dev/null +++ b/kotlinApp/Application/src/main/res/layout/sample_dashboard_item.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + diff --git a/kotlinApp/Application/src/main/res/menu/navigation_drawer.xml b/kotlinApp/Application/src/main/res/menu/navigation_drawer.xml new file mode 100644 index 0000000..0b8073c --- /dev/null +++ b/kotlinApp/Application/src/main/res/menu/navigation_drawer.xml @@ -0,0 +1,25 @@ + + + + + + + + \ No newline at end of file diff --git a/kotlinApp/Application/src/main/res/values-v20/styles.xml b/kotlinApp/Application/src/main/res/values-v20/styles.xml new file mode 100644 index 0000000..3ebee21 --- /dev/null +++ b/kotlinApp/Application/src/main/res/values-v20/styles.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + diff --git a/kotlinApp/CONTRIB.md b/kotlinApp/CONTRIB.md new file mode 100644 index 0000000..14a4fcf --- /dev/null +++ b/kotlinApp/CONTRIB.md @@ -0,0 +1,35 @@ +# How to become a contributor and submit your own code + +## Contributor License Agreements + +We'd love to accept your sample apps and patches! Before we can take them, we +have to jump a couple of legal hurdles. + +Please fill out either the individual or corporate Contributor License Agreement (CLA). + + * If you are an individual writing original source code and you're sure you + own the intellectual property, then you'll need to sign an [individual CLA] + (https://developers.google.com/open-source/cla/individual). + * If you work for a company that wants to allow you to contribute your work, + then you'll need to sign a [corporate CLA] + (https://developers.google.com/open-source/cla/corporate). + +Follow either of the two links above to access the appropriate CLA and +instructions for how to sign and return it. Once we receive it, we'll be able to +accept your pull requests. + +## Contributing A Patch + +1. Submit an issue describing your proposed change to the repo in question. +1. The repo owner will respond to your issue promptly. +1. If your proposed change is accepted, and you haven't already done so, sign a + Contributor License Agreement (see details above). +1. Fork the desired repo, develop and test your code changes. +1. Ensure that your code adheres to the existing style in the sample to which + you are contributing. Refer to the + [Android Code Style Guide] + (https://source.android.com/source/code-style.html) for the + recommended coding standards for this organization. +1. Ensure that your code has an appropriate set of unit tests which all pass. +1. Submit a pull request. + diff --git a/kotlinApp/README.md b/kotlinApp/README.md new file mode 100644 index 0000000..734fa26 --- /dev/null +++ b/kotlinApp/README.md @@ -0,0 +1,50 @@ + +Android Navigation Drawer Sample (Kotlin) +========================================= + +This example illustrates a common usage of the DrawerLayout widget in the Android +support library. + +Pre-requisites +-------------- + +- Android SDK 27 +- Android Support Repository + +Getting Started +--------------- + +This sample uses the Gradle build system. To build this project, use the +"gradlew build" command or use "Import Project" in Android Studio. + +Support +------- + +- Google+ Community: https://plus.google.com/communities/105153134372062985968 +- Stack Overflow: http://stackoverflow.com/questions/tagged/android + +If you've found an error in this sample, please file an issue: +https://github.com/googlesamples/android-NavigationDrawer + +Patches are encouraged, and may be submitted by forking this project and +submitting a pull request through GitHub. Please see CONTRIBUTING.md for more details. + +License +------- + +Copyright 2018 The Android Open Source Project, Inc. + +Licensed to the Apache Software Foundation (ASF) under one or more contributor +license agreements. See the NOTICE file distributed with this work for +additional information regarding copyright ownership. The ASF licenses this +file to you 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. diff --git a/kotlinApp/build.gradle b/kotlinApp/build.gradle new file mode 100644 index 0000000..3b2073b --- /dev/null +++ b/kotlinApp/build.gradle @@ -0,0 +1,29 @@ +buildscript { + ext { + compileSdkVersion = 27 + minSdkVersion = 21 + targetSdkVersion = 27 + + kotlinVersion = '1.2.10' + supportLibVersion = '27.0.2' + } + repositories { + google() + jcenter() + } + dependencies { + classpath 'com.android.tools.build:gradle:3.0.1' + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion" + } +} + +allprojects { + repositories { + google() + jcenter() + } +} + +task clean(type: Delete) { + delete rootProject.buildDir +} \ No newline at end of file diff --git a/kotlinApp/gradle/wrapper/gradle-wrapper.jar b/kotlinApp/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000..8c0fb64 Binary files /dev/null and b/kotlinApp/gradle/wrapper/gradle-wrapper.jar differ diff --git a/kotlinApp/gradle/wrapper/gradle-wrapper.properties b/kotlinApp/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..bd46b79 --- /dev/null +++ b/kotlinApp/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Tue Jan 09 12:45:11 PST 2018 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip diff --git a/kotlinApp/gradlew b/kotlinApp/gradlew new file mode 100755 index 0000000..91a7e26 --- /dev/null +++ b/kotlinApp/gradlew @@ -0,0 +1,164 @@ +#!/usr/bin/env bash + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn ( ) { + echo "$*" +} + +die ( ) { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; +esac + +# For Cygwin, ensure paths are in UNIX format before anything is touched. +if $cygwin ; then + [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` +fi + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >&- +APP_HOME="`pwd -P`" +cd "$SAVED" >&- + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules +function splitJvmOpts() { + JVM_OPTS=("$@") +} +eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS +JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" + +exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/kotlinApp/gradlew.bat b/kotlinApp/gradlew.bat new file mode 100644 index 0000000..8a0b282 --- /dev/null +++ b/kotlinApp/gradlew.bat @@ -0,0 +1,90 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windowz variants + +if not "%OS%" == "Windows_NT" goto win9xME_args +if "%@eval[2+2]" == "4" goto 4NT_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* +goto execute + +:4NT_args +@rem Get arguments from the 4NT Shell from JP Software +set CMD_LINE_ARGS=%$ + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/kotlinApp/settings.gradle b/kotlinApp/settings.gradle new file mode 100644 index 0000000..9464a35 --- /dev/null +++ b/kotlinApp/settings.gradle @@ -0,0 +1 @@ +include 'Application'