From ae9a05d78623f886604110ec49cbb37231953969 Mon Sep 17 00:00:00 2001 From: "filip.luchianenco" Date: Tue, 20 Nov 2018 00:37:47 -0600 Subject: [PATCH 1/5] initial commit with base classes, webview & icon --- .gitignore | 11 ++ .idea/assetWizardSettings.xml | 62 +++++++ .idea/codeStyles/Project.xml | 147 +++++++++++++++ .idea/codeStyles/codeStyleConfig.xml | 5 + .idea/gradle.xml | 18 ++ .idea/misc.xml | 38 ++++ .idea/runConfigurations.xml | 12 ++ .idea/vcs.xml | 6 + app/.gitignore | 1 + app/build.gradle | 38 ++++ app/proguard-rules.pro | 21 +++ .../devto/android/ExampleInstrumentedTest.kt | 24 +++ app/src/main/AndroidManifest.xml | 26 +++ app/src/main/ic_launcher-web.png | Bin 0 -> 13143 bytes .../android/base/activity/BaseActivity.kt | 22 +++ .../android/base/navigator/BaseNavigator.kt | 5 + .../base/navigator/BaseNavigatorImpl.kt | 5 + .../android/base/viewmodel/BaseViewModel.kt | 7 + .../viewmodel/ViewModelProviderFactory.kt | 14 ++ .../android/ui/main/view/MainActivity.kt | 38 ++++ .../drawable-v24/ic_launcher_foreground.xml | 34 ++++ .../res/drawable/ic_launcher_background.xml | 74 ++++++++ .../res/drawable/ic_launcher_foreground.xml | 18 ++ app/src/main/res/layout/activity_main.xml | 22 +++ .../res/mipmap-anydpi-v26/ic_launcher.xml | 5 + .../mipmap-anydpi-v26/ic_launcher_round.xml | 5 + app/src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 1450 bytes .../res/mipmap-hdpi/ic_launcher_round.png | Bin 0 -> 2716 bytes app/src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 1015 bytes .../res/mipmap-mdpi/ic_launcher_round.png | Bin 0 -> 1747 bytes app/src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 1986 bytes .../res/mipmap-xhdpi/ic_launcher_round.png | Bin 0 -> 3718 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 3023 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 0 -> 5858 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 4117 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 0 -> 8230 bytes app/src/main/res/values/colors.xml | 6 + .../res/values/ic_launcher_background.xml | 4 + app/src/main/res/values/strings.xml | 5 + app/src/main/res/values/styles.xml | 11 ++ .../to/dev/devto/android/ExampleUnitTest.kt | 17 ++ build.gradle | 27 +++ gradle.properties | 15 ++ gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 54329 bytes gradle/wrapper/gradle-wrapper.properties | 5 + gradlew | 172 ++++++++++++++++++ gradlew.bat | 84 +++++++++ settings.gradle | 1 + 48 files changed, 1005 insertions(+) create mode 100644 .gitignore create mode 100644 .idea/assetWizardSettings.xml create mode 100644 .idea/codeStyles/Project.xml create mode 100644 .idea/codeStyles/codeStyleConfig.xml create mode 100644 .idea/gradle.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/runConfigurations.xml create mode 100644 .idea/vcs.xml create mode 100644 app/.gitignore create mode 100644 app/build.gradle create mode 100644 app/proguard-rules.pro create mode 100644 app/src/androidTest/java/to/dev/devto/android/ExampleInstrumentedTest.kt create mode 100644 app/src/main/AndroidManifest.xml create mode 100644 app/src/main/ic_launcher-web.png create mode 100644 app/src/main/java/to/dev/devto/android/base/activity/BaseActivity.kt create mode 100644 app/src/main/java/to/dev/devto/android/base/navigator/BaseNavigator.kt create mode 100644 app/src/main/java/to/dev/devto/android/base/navigator/BaseNavigatorImpl.kt create mode 100644 app/src/main/java/to/dev/devto/android/base/viewmodel/BaseViewModel.kt create mode 100644 app/src/main/java/to/dev/devto/android/base/viewmodel/ViewModelProviderFactory.kt create mode 100644 app/src/main/java/to/dev/devto/android/ui/main/view/MainActivity.kt create mode 100644 app/src/main/res/drawable-v24/ic_launcher_foreground.xml create mode 100644 app/src/main/res/drawable/ic_launcher_background.xml create mode 100644 app/src/main/res/drawable/ic_launcher_foreground.xml create mode 100644 app/src/main/res/layout/activity_main.xml create mode 100644 app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher_round.png create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher_round.png create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher_round.png create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png create mode 100644 app/src/main/res/values/colors.xml create mode 100644 app/src/main/res/values/ic_launcher_background.xml create mode 100644 app/src/main/res/values/strings.xml create mode 100644 app/src/main/res/values/styles.xml create mode 100644 app/src/test/java/to/dev/devto/android/ExampleUnitTest.kt create mode 100644 build.gradle create mode 100644 gradle.properties create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100755 gradlew create mode 100644 gradlew.bat create mode 100644 settings.gradle diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..fd45b12 --- /dev/null +++ b/.gitignore @@ -0,0 +1,11 @@ +*.iml +.gradle +/local.properties +/.idea/caches/build_file_checksums.ser +/.idea/libraries +/.idea/modules.xml +/.idea/workspace.xml +.DS_Store +/build +/captures +.externalNativeBuild diff --git a/.idea/assetWizardSettings.xml b/.idea/assetWizardSettings.xml new file mode 100644 index 0000000..af19286 --- /dev/null +++ b/.idea/assetWizardSettings.xml @@ -0,0 +1,62 @@ + + + + + + \ No newline at end of file diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml new file mode 100644 index 0000000..e96cda9 --- /dev/null +++ b/.idea/codeStyles/Project.xml @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml new file mode 100644 index 0000000..79ee123 --- /dev/null +++ b/.idea/codeStyles/codeStyleConfig.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml new file mode 100644 index 0000000..7ac24c7 --- /dev/null +++ b/.idea/gradle.xml @@ -0,0 +1,18 @@ + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..e0d5b93 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml new file mode 100644 index 0000000..7f68460 --- /dev/null +++ b/.idea/runConfigurations.xml @@ -0,0 +1,12 @@ + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/.gitignore b/app/.gitignore new file mode 100644 index 0000000..796b96d --- /dev/null +++ b/app/.gitignore @@ -0,0 +1 @@ +/build diff --git a/app/build.gradle b/app/build.gradle new file mode 100644 index 0000000..84be1ea --- /dev/null +++ b/app/build.gradle @@ -0,0 +1,38 @@ +apply plugin: 'com.android.application' + +apply plugin: 'kotlin-android' + +apply plugin: 'kotlin-android-extensions' + +android { + compileSdkVersion 28 + defaultConfig { + applicationId "to.dev.devto.android" + minSdkVersion 19 + targetSdkVersion 28 + versionCode 1 + versionName "1.0" + testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" + } + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } + dataBinding { + enabled = true + } +} + +dependencies { + implementation fileTree(dir: 'libs', include: ['*.jar']) + implementation"org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" + implementation 'com.android.support:appcompat-v7:28.0.0' + implementation 'com.android.support.constraint:constraint-layout:1.1.3' + implementation "android.arch.lifecycle:extensions:1.1.1" + implementation "android.arch.lifecycle:viewmodel:1.1.1" + testImplementation 'junit:junit:4.12' + androidTestImplementation 'com.android.support.test:runner:1.0.2' + androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' +} diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro new file mode 100644 index 0000000..f1b4245 --- /dev/null +++ b/app/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile diff --git a/app/src/androidTest/java/to/dev/devto/android/ExampleInstrumentedTest.kt b/app/src/androidTest/java/to/dev/devto/android/ExampleInstrumentedTest.kt new file mode 100644 index 0000000..d8dc2aa --- /dev/null +++ b/app/src/androidTest/java/to/dev/devto/android/ExampleInstrumentedTest.kt @@ -0,0 +1,24 @@ +package to.dev.devto.android + +import android.support.test.InstrumentationRegistry +import android.support.test.runner.AndroidJUnit4 + +import org.junit.Test +import org.junit.runner.RunWith + +import org.junit.Assert.* + +/** + * Instrumented test, which will execute on an Android device. + * + * See [testing documentation](http://d.android.com/tools/testing). + */ +@RunWith(AndroidJUnit4::class) +class ExampleInstrumentedTest { + @Test + fun useAppContext() { + // Context of the app under test. + val appContext = InstrumentationRegistry.getTargetContext() + assertEquals("to.dev.devto.android", appContext.packageName) + } +} diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..e52a21b --- /dev/null +++ b/app/src/main/AndroidManifest.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/ic_launcher-web.png b/app/src/main/ic_launcher-web.png new file mode 100644 index 0000000000000000000000000000000000000000..1568be24b219b4dfa9bd93c6b2d93b481161e45a GIT binary patch literal 13143 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

Zijfb+?x6fGRyrK$Qs$upr> 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 literal 0 HcmV?d00001 diff --git a/app/src/main/java/to/dev/devto/android/base/activity/BaseActivity.kt b/app/src/main/java/to/dev/devto/android/base/activity/BaseActivity.kt new file mode 100644 index 0000000..52c3e39 --- /dev/null +++ b/app/src/main/java/to/dev/devto/android/base/activity/BaseActivity.kt @@ -0,0 +1,22 @@ +package to.dev.devto.android.base.activity + +import android.databinding.DataBindingUtil +import android.databinding.ViewDataBinding +import android.os.Bundle +import android.support.annotation.LayoutRes +import android.support.v7.app.AppCompatActivity + +abstract class BaseActivity : AppCompatActivity() { + + lateinit var binding: B + + @LayoutRes + protected abstract fun layout(): Int + + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + binding = DataBindingUtil.setContentView(this, layout()) + } + +} \ No newline at end of file diff --git a/app/src/main/java/to/dev/devto/android/base/navigator/BaseNavigator.kt b/app/src/main/java/to/dev/devto/android/base/navigator/BaseNavigator.kt new file mode 100644 index 0000000..889295c --- /dev/null +++ b/app/src/main/java/to/dev/devto/android/base/navigator/BaseNavigator.kt @@ -0,0 +1,5 @@ +package to.dev.devto.android.base.navigator + +interface BaseNavigator { + +} \ No newline at end of file diff --git a/app/src/main/java/to/dev/devto/android/base/navigator/BaseNavigatorImpl.kt b/app/src/main/java/to/dev/devto/android/base/navigator/BaseNavigatorImpl.kt new file mode 100644 index 0000000..d7b8237 --- /dev/null +++ b/app/src/main/java/to/dev/devto/android/base/navigator/BaseNavigatorImpl.kt @@ -0,0 +1,5 @@ +package to.dev.devto.android.base.navigator + +abstract class BaseNavigatorImpl: BaseNavigator { + +} \ No newline at end of file diff --git a/app/src/main/java/to/dev/devto/android/base/viewmodel/BaseViewModel.kt b/app/src/main/java/to/dev/devto/android/base/viewmodel/BaseViewModel.kt new file mode 100644 index 0000000..f40d97f --- /dev/null +++ b/app/src/main/java/to/dev/devto/android/base/viewmodel/BaseViewModel.kt @@ -0,0 +1,7 @@ +package to.dev.devto.android.base.viewmodel + +import android.arch.lifecycle.ViewModel + +abstract class BaseViewModel : ViewModel() { + +} \ No newline at end of file diff --git a/app/src/main/java/to/dev/devto/android/base/viewmodel/ViewModelProviderFactory.kt b/app/src/main/java/to/dev/devto/android/base/viewmodel/ViewModelProviderFactory.kt new file mode 100644 index 0000000..3563942 --- /dev/null +++ b/app/src/main/java/to/dev/devto/android/base/viewmodel/ViewModelProviderFactory.kt @@ -0,0 +1,14 @@ +package to.dev.devto.android.base.viewmodel + +import android.arch.lifecycle.ViewModel +import android.arch.lifecycle.ViewModelProvider + +abstract class ViewModelProviderFactory : ViewModelProvider.Factory { + + @Suppress("UNCHECKED_CAST") + override fun create(modelClass: Class): T { + return create() as T + } + + protected abstract fun create(): V +} \ No newline at end of file diff --git a/app/src/main/java/to/dev/devto/android/ui/main/view/MainActivity.kt b/app/src/main/java/to/dev/devto/android/ui/main/view/MainActivity.kt new file mode 100644 index 0000000..ea3f1df --- /dev/null +++ b/app/src/main/java/to/dev/devto/android/ui/main/view/MainActivity.kt @@ -0,0 +1,38 @@ +package to.dev.devto.android.ui.main.view + +import android.annotation.SuppressLint +import android.os.Bundle +import to.dev.devto.android.R +import to.dev.devto.android.base.activity.BaseActivity +import to.dev.devto.android.databinding.ActivityMainBinding + +class MainActivity : BaseActivity() { + + override fun layout(): Int { + return R.layout.activity_main + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setWebViewSettings() + navigateToHome() + } + + @SuppressLint("SetJavaScriptEnabled") + private fun setWebViewSettings() { + binding.webView.settings.javaScriptEnabled = true + binding.webView.settings.domStorageEnabled = true + } + + private fun navigateToHome() { + binding.webView.loadUrl(resources.getString(R.string.main_url)) + } + + override fun onBackPressed() { + if (binding.webView.canGoBack()) { + binding.webView.goBack() + } else { + super.onBackPressed() + } + } +} diff --git a/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/app/src/main/res/drawable-v24/ic_launcher_foreground.xml new file mode 100644 index 0000000..6348baa --- /dev/null +++ b/app/src/main/res/drawable-v24/ic_launcher_foreground.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_launcher_background.xml b/app/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 0000000..a0ad202 --- /dev/null +++ b/app/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_launcher_foreground.xml b/app/src/main/res/drawable/ic_launcher_foreground.xml new file mode 100644 index 0000000..01e86ad --- /dev/null +++ b/app/src/main/res/drawable/ic_launcher_foreground.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml new file mode 100644 index 0000000..1895dfc --- /dev/null +++ b/app/src/main/res/layout/activity_main.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 0000000..7353dbd --- /dev/null +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 0000000..7353dbd --- /dev/null +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..48d916e1a41b0e8665f3c27eeb81203bac0791f5 GIT binary patch literal 1450 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/app/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..6f660c46cddaa0041782f868394bc7af1dcc83f7 GIT binary patch literal 1986 zcmZ`)dpHw(8~%-z!xDO##b34Dwj6?w-bHmxe&Lc{+zzTLsci!7^J1>0DwGXFO<-u?qVUr#Q2cJ_m zA_#2{b2AvoF9+fZVNhxrqHJEuj%FciRH&%zp<{Ucx}Hf<-B}kNLd1`#859s|mh)$9 zW0*^)JzPbXevMfXP27Q1bhyT!vH{y$+CFzJ0Y)phN!*{G=p{#)@xP11Ag zhW-Y#2D7Acvl7MJeL7y)z3|?;`xV(0S#w(WoF7)X{;`t4*_%!MmK@9%X#8c1p?vRK z#VWDOtT(nV3ce}eS+TBactyOibJ>Y?Xmhz_{jDI+*WAreN7%EHHNFa2M^NJ@x+XS&9Agaa#A9QS}l!tah6_Hyt}0X^fdRv3gqj3m5=L>uIUY z%Nl?u{0eO`0G~XY37nS2H$F(nrv{lHA^Z=SKnX};fGmLM0x11|n=p%QTARUS1`@a= z%B79Ed9Wp&F?TO<}_|uV^i#3-9N}tZphgkgaQnreCP+vbu6%J?cf-Ve{x@h;h zURs{%LD<@|4(RJwrys^&i%lvyb)V5|LVowsj%5`fP`S+uep~5xDg)uSEa|;?^%?a& z#0iTHq*AG+gJWYo+1c5{+b&)t5)!7Us3Sao@}#`=Uz;{_@86q@AqPiBUX}hc|FynL z_DeK%y%-Vx@o%e8tcr0v%Q`ZR5*!?yH88u21U_C43i7Q9?D!>B(nm+X@6-UHr_d@bNblcpq?%KuEu5sqb1_GVmf^#w#$e^sw20 zOX=kK~1Y>4i-*ZGeH6a-kXv9+?z{tDa zb#&_L;<#-=BfF#V+6v>q{{0C%>4k-QliiyE`8Lsda3W3$gL`(YQ_Z!IZ}hq2t1 zX45hWN5?+Ivi8`gaEtRuAsxjqNs+;<=veqnx3D*9cK{Ghcim5?3E7b0a2zS~;jJso2E%_!!{^ zp_tt=DJdy>DPneYwOQ3Y6BSieejb|o$VYWftY;?A&@v?gU9Z(Tzk^ph?sP>Cb>98W z#p?Z+*#Yzl!T~$%2(tp6xO);gA`H>ofD6HeIoxs@`1<%>fTWHVD-iJSW zR0$MZ=wN1rp_82M%_fV7@7S4>CtG(^S^J=NOe)Z;G|UW*&OX6dZLRUhI$?y=_P9f_yaP-KFW!lWQ>eMO1`!_{?dtb~^Lnz*2-V-n?%)+cMcA{sQ1hi*<8a{CUT1C5u;@1Vm)2ov)-*rm_) zn_=<7-=1mC-Zb7Nu@uOmG7h)O1HV0h=W!zzG%Z~|Lf$}9RS#1y-k8MIJFpSSZA-8% zuUBt;zlX7i4|7+nle2Cu{=lvmGQQ8?*PLEwWsDz^ORYbJ@I>n-AFC9SxN6}W?Ve_* z6Bo~SQ_n#2ohFJ;5)(%d77h+)yq!75Ul}RW*}C?Fla+G)YU=%#XE8Ce literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..c97ef9774a1b088e40ce52977ce39acb43636648 GIT binary patch literal 3718 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..735db33cd3070c937da1d6b2ae3e4face80b28e0 GIT binary patch literal 3023 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 + + #000000 + #000000 + #87DFD5 + diff --git a/app/src/main/res/values/ic_launcher_background.xml b/app/src/main/res/values/ic_launcher_background.xml new file mode 100644 index 0000000..beab31f --- /dev/null +++ b/app/src/main/res/values/ic_launcher_background.xml @@ -0,0 +1,4 @@ + + + #000000 + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml new file mode 100644 index 0000000..41633ec --- /dev/null +++ b/app/src/main/res/values/strings.xml @@ -0,0 +1,5 @@ + + DevTo + + https://dev.to + diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml new file mode 100644 index 0000000..0eb88fe --- /dev/null +++ b/app/src/main/res/values/styles.xml @@ -0,0 +1,11 @@ + + + + + + diff --git a/app/src/test/java/to/dev/devto/android/ExampleUnitTest.kt b/app/src/test/java/to/dev/devto/android/ExampleUnitTest.kt new file mode 100644 index 0000000..ebe5e20 --- /dev/null +++ b/app/src/test/java/to/dev/devto/android/ExampleUnitTest.kt @@ -0,0 +1,17 @@ +package to.dev.devto.android + +import org.junit.Test + +import org.junit.Assert.* + +/** + * Example local unit test, which will execute on the development machine (host). + * + * See [testing documentation](http://d.android.com/tools/testing). + */ +class ExampleUnitTest { + @Test + fun addition_isCorrect() { + assertEquals(4, 2 + 2) + } +} diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..a3176b9 --- /dev/null +++ b/build.gradle @@ -0,0 +1,27 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. + +buildscript { + ext.kotlin_version = '1.2.71' + repositories { + google() + jcenter() + } + dependencies { + classpath 'com.android.tools.build:gradle:3.2.1' + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + + // NOTE: Do not place your application dependencies here; they belong + // in the individual module build.gradle files + } +} + +allprojects { + repositories { + google() + jcenter() + } +} + +task clean(type: Delete) { + delete rootProject.buildDir +} diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..85be9ea --- /dev/null +++ b/gradle.properties @@ -0,0 +1,15 @@ +# Project-wide Gradle settings. +# IDE (e.g. Android Studio) users: +# Gradle settings configured through the IDE *will override* +# any settings specified in this file. +# For more details on how to configure your build environment visit +# http://www.gradle.org/docs/current/userguide/build_environment.html +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +org.gradle.jvmargs=-Xmx1536m +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. More details, visit +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects +# org.gradle.parallel=true +# Kotlin code style for this project: "official" or "obsolete": +kotlin.code.style=official diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..f6b961fd5a86aa5fbfe90f707c3138408be7c718 GIT binary patch literal 54329 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

<5G2M1WZP5 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 F{|7XC?P&l2 literal 0 HcmV?d00001 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..9a4163a --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew new file mode 100755 index 0000000..cccdd3d --- /dev/null +++ b/gradlew @@ -0,0 +1,172 @@ +#!/usr/bin/env sh + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# 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\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +# 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 +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +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" -a "$nonstop" = "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"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # 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 + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..e95643d --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,84 @@ +@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 + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@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= + +@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 Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_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=%* + +: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/settings.gradle b/settings.gradle new file mode 100644 index 0000000..e7b4def --- /dev/null +++ b/settings.gradle @@ -0,0 +1 @@ +include ':app' From 5e04760c9b6684a2e08d645547b8bb131eac10e9 Mon Sep 17 00:00:00 2001 From: "filip.luchianenco" Date: Thu, 28 Mar 2019 21:52:13 -0500 Subject: [PATCH 2/5] add base classes & move MainActivity --- .idea/assetWizardSettings.xml | 62 ---------- .idea/codeStyles/Project.xml | 112 ------------------ .idea/misc.xml | 29 ----- .idea/vcs.xml | 2 +- app/build.gradle | 2 +- app/src/main/AndroidManifest.xml | 4 +- .../java/to/dev/dev_android/MainActivity.kt | 30 ----- .../base/activity/BaseActivity.kt | 2 +- .../base/navigator/BaseNavigator.kt | 5 + .../base/navigator/BaseNavigatorImpl.kt | 2 +- .../base/viewmodel/BaseViewModel.kt | 2 +- .../viewmodel/ViewModelProviderFactory.kt | 2 +- .../main => dev_android}/view/MainActivity.kt | 8 +- .../android/base/navigator/BaseNavigator.kt | 5 - build.gradle | 4 +- gradle/wrapper/gradle-wrapper.properties | 3 +- 16 files changed, 21 insertions(+), 253 deletions(-) delete mode 100644 .idea/assetWizardSettings.xml delete mode 100644 app/src/main/java/to/dev/dev_android/MainActivity.kt rename app/src/main/java/to/dev/{devto/android => dev_android}/base/activity/BaseActivity.kt (92%) create mode 100644 app/src/main/java/to/dev/dev_android/base/navigator/BaseNavigator.kt rename app/src/main/java/to/dev/{devto/android => dev_android}/base/navigator/BaseNavigatorImpl.kt (54%) rename app/src/main/java/to/dev/{devto/android => dev_android}/base/viewmodel/BaseViewModel.kt (66%) rename app/src/main/java/to/dev/{devto/android => dev_android}/base/viewmodel/ViewModelProviderFactory.kt (88%) rename app/src/main/java/to/dev/{devto/android/ui/main => dev_android}/view/MainActivity.kt (82%) delete mode 100644 app/src/main/java/to/dev/devto/android/base/navigator/BaseNavigator.kt diff --git a/.idea/assetWizardSettings.xml b/.idea/assetWizardSettings.xml deleted file mode 100644 index af19286..0000000 --- a/.idea/assetWizardSettings.xml +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml index e96cda9..34dc27c 100644 --- a/.idea/codeStyles/Project.xml +++ b/.idea/codeStyles/Project.xml @@ -1,8 +1,5 @@ - - @@ -31,115 +28,6 @@ - - - -

- - - - xmlns:android - ^$ - - - -
-
- - - - xmlns:.* - ^$ - - - BY_NAME - -
-
- - - - .*:id - http://schemas.android.com/apk/res/android - - - -
-
- - - - .*:name - http://schemas.android.com/apk/res/android - - - -
-
- - - - name - ^$ - - - -
-
- - - - style - ^$ - - - -
-
- - - - .* - ^$ - - - BY_NAME - -
-
- - - - .* - http://schemas.android.com/apk/res/android - - - ANDROID_ATTRIBUTE_ORDER - -
-
- - - - .* - .* - - - BY_NAME - -
- - - diff --git a/.idea/misc.xml b/.idea/misc.xml index e0d5b93..37a7509 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,34 +1,5 @@ - - - - diff --git a/.idea/vcs.xml b/.idea/vcs.xml index 94a25f7..35eb1dd 100644 --- a/.idea/vcs.xml +++ b/.idea/vcs.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 84be1ea..5de8f0f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -7,7 +7,7 @@ apply plugin: 'kotlin-android-extensions' android { compileSdkVersion 28 defaultConfig { - applicationId "to.dev.devto.android" + applicationId "to.dev.dev_android" minSdkVersion 19 targetSdkVersion 28 versionCode 1 diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e52a21b..b4e5371 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,7 +1,7 @@ + package="to.dev.dev_android"> @@ -14,7 +14,7 @@ android:theme="@style/AppTheme" tools:ignore="GoogleAppIndexingWarning" > - + diff --git a/app/src/main/java/to/dev/dev_android/MainActivity.kt b/app/src/main/java/to/dev/dev_android/MainActivity.kt deleted file mode 100644 index b60d645..0000000 --- a/app/src/main/java/to/dev/dev_android/MainActivity.kt +++ /dev/null @@ -1,30 +0,0 @@ -package to.dev.dev_android - -import android.databinding.DataBindingUtil -import android.os.Bundle -import android.support.v7.app.AppCompatActivity -import to.dev.dev_android.databinding.ActivityMainBinding - -class MainActivity : AppCompatActivity() { - private lateinit var binding : ActivityMainBinding - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - binding = DataBindingUtil.setContentView(this, R.layout.activity_main) - - binding.webview.settings.javaScriptEnabled = true - binding.webview.settings.domStorageEnabled = true - - - binding.webview.loadUrl(getString(R.string.main_url)) - } - - override fun onBackPressed() { - if (binding.webview.canGoBack()) { - binding.webview.goBack() - } else { - super.onBackPressed() - } - } - -} diff --git a/app/src/main/java/to/dev/devto/android/base/activity/BaseActivity.kt b/app/src/main/java/to/dev/dev_android/base/activity/BaseActivity.kt similarity index 92% rename from app/src/main/java/to/dev/devto/android/base/activity/BaseActivity.kt rename to app/src/main/java/to/dev/dev_android/base/activity/BaseActivity.kt index 52c3e39..8195129 100644 --- a/app/src/main/java/to/dev/devto/android/base/activity/BaseActivity.kt +++ b/app/src/main/java/to/dev/dev_android/base/activity/BaseActivity.kt @@ -1,4 +1,4 @@ -package to.dev.devto.android.base.activity +package to.dev.dev_android.base.activity import android.databinding.DataBindingUtil import android.databinding.ViewDataBinding diff --git a/app/src/main/java/to/dev/dev_android/base/navigator/BaseNavigator.kt b/app/src/main/java/to/dev/dev_android/base/navigator/BaseNavigator.kt new file mode 100644 index 0000000..31c2b7b --- /dev/null +++ b/app/src/main/java/to/dev/dev_android/base/navigator/BaseNavigator.kt @@ -0,0 +1,5 @@ +package to.dev.dev_android.base.navigator + +interface BaseNavigator { + +} \ No newline at end of file diff --git a/app/src/main/java/to/dev/devto/android/base/navigator/BaseNavigatorImpl.kt b/app/src/main/java/to/dev/dev_android/base/navigator/BaseNavigatorImpl.kt similarity index 54% rename from app/src/main/java/to/dev/devto/android/base/navigator/BaseNavigatorImpl.kt rename to app/src/main/java/to/dev/dev_android/base/navigator/BaseNavigatorImpl.kt index d7b8237..efa361c 100644 --- a/app/src/main/java/to/dev/devto/android/base/navigator/BaseNavigatorImpl.kt +++ b/app/src/main/java/to/dev/dev_android/base/navigator/BaseNavigatorImpl.kt @@ -1,4 +1,4 @@ -package to.dev.devto.android.base.navigator +package to.dev.dev_android.base.navigator abstract class BaseNavigatorImpl: BaseNavigator { diff --git a/app/src/main/java/to/dev/devto/android/base/viewmodel/BaseViewModel.kt b/app/src/main/java/to/dev/dev_android/base/viewmodel/BaseViewModel.kt similarity index 66% rename from app/src/main/java/to/dev/devto/android/base/viewmodel/BaseViewModel.kt rename to app/src/main/java/to/dev/dev_android/base/viewmodel/BaseViewModel.kt index f40d97f..110234e 100644 --- a/app/src/main/java/to/dev/devto/android/base/viewmodel/BaseViewModel.kt +++ b/app/src/main/java/to/dev/dev_android/base/viewmodel/BaseViewModel.kt @@ -1,4 +1,4 @@ -package to.dev.devto.android.base.viewmodel +package to.dev.dev_android.base.viewmodel import android.arch.lifecycle.ViewModel diff --git a/app/src/main/java/to/dev/devto/android/base/viewmodel/ViewModelProviderFactory.kt b/app/src/main/java/to/dev/dev_android/base/viewmodel/ViewModelProviderFactory.kt similarity index 88% rename from app/src/main/java/to/dev/devto/android/base/viewmodel/ViewModelProviderFactory.kt rename to app/src/main/java/to/dev/dev_android/base/viewmodel/ViewModelProviderFactory.kt index 3563942..b473c97 100644 --- a/app/src/main/java/to/dev/devto/android/base/viewmodel/ViewModelProviderFactory.kt +++ b/app/src/main/java/to/dev/dev_android/base/viewmodel/ViewModelProviderFactory.kt @@ -1,4 +1,4 @@ -package to.dev.devto.android.base.viewmodel +package to.dev.dev_android.base.viewmodel import android.arch.lifecycle.ViewModel import android.arch.lifecycle.ViewModelProvider diff --git a/app/src/main/java/to/dev/devto/android/ui/main/view/MainActivity.kt b/app/src/main/java/to/dev/dev_android/view/MainActivity.kt similarity index 82% rename from app/src/main/java/to/dev/devto/android/ui/main/view/MainActivity.kt rename to app/src/main/java/to/dev/dev_android/view/MainActivity.kt index ea3f1df..41c5a74 100644 --- a/app/src/main/java/to/dev/devto/android/ui/main/view/MainActivity.kt +++ b/app/src/main/java/to/dev/dev_android/view/MainActivity.kt @@ -1,10 +1,10 @@ -package to.dev.devto.android.ui.main.view +package to.dev.dev_android.view import android.annotation.SuppressLint import android.os.Bundle -import to.dev.devto.android.R -import to.dev.devto.android.base.activity.BaseActivity -import to.dev.devto.android.databinding.ActivityMainBinding +import to.dev.dev_android.R +import to.dev.dev_android.base.activity.BaseActivity +import to.dev.dev_android.databinding.ActivityMainBinding class MainActivity : BaseActivity() { diff --git a/app/src/main/java/to/dev/devto/android/base/navigator/BaseNavigator.kt b/app/src/main/java/to/dev/devto/android/base/navigator/BaseNavigator.kt deleted file mode 100644 index 889295c..0000000 --- a/app/src/main/java/to/dev/devto/android/base/navigator/BaseNavigator.kt +++ /dev/null @@ -1,5 +0,0 @@ -package to.dev.devto.android.base.navigator - -interface BaseNavigator { - -} \ No newline at end of file diff --git a/build.gradle b/build.gradle index a3176b9..3cafa7e 100644 --- a/build.gradle +++ b/build.gradle @@ -1,13 +1,13 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { - ext.kotlin_version = '1.2.71' + ext.kotlin_version = '1.3.20' repositories { google() jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:3.2.1' + classpath 'com.android.tools.build:gradle:3.3.2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // NOTE: Do not place your application dependencies here; they belong diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 9a4163a..0281d7e 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,6 @@ +#Thu Mar 28 21:34:33 CDT 2019 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.1-all.zip From c2c0d35e2be9d23041218561cde526627193c262 Mon Sep 17 00:00:00 2001 From: "filip.luchianenco" Date: Thu, 28 Mar 2019 22:12:17 -0500 Subject: [PATCH 3/5] move base classes to it's own module --- .idea/gradle.xml | 1 + app/build.gradle | 6 +- .../base/navigator/BaseNavigator.kt | 5 -- .../base/navigator/BaseNavigatorImpl.kt | 5 -- base/.gitignore | 1 + base/build.gradle | 48 ++++++++++++ base/proguard-rules.pro | 21 +++++ .../base/ExampleInstrumentedTest.java | 26 ++++++ base/src/main/AndroidManifest.xml | 10 +++ .../dev_android/base/activity/BaseActivity.kt | 0 .../base/analytics/BaseAnalytics.java | 5 ++ .../base/analytics/BaseAnalyticsImpl.java | 4 + .../dev/dev_android/base/router/BaseRouter.kt | 5 ++ .../dev_android/base/router/BaseRouterImpl.kt | 5 ++ .../base/viewmodel/BaseViewModel.kt | 0 .../viewmodel/ViewModelProviderFactory.kt | 0 .../drawable-v24/ic_launcher_foreground.xml | 34 ++++++++ .../res/drawable/ic_launcher_background.xml | 74 ++++++++++++++++++ .../res/mipmap-anydpi-v26/ic_launcher.xml | 5 ++ .../mipmap-anydpi-v26/ic_launcher_round.xml | 5 ++ base/src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 2963 bytes .../res/mipmap-hdpi/ic_launcher_round.png | Bin 0 -> 4905 bytes base/src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2060 bytes .../res/mipmap-mdpi/ic_launcher_round.png | Bin 0 -> 2783 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 4490 bytes .../res/mipmap-xhdpi/ic_launcher_round.png | Bin 0 -> 6895 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 6387 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 0 -> 10413 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 9128 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 0 -> 15132 bytes base/src/main/res/values/colors.xml | 6 ++ base/src/main/res/values/strings.xml | 3 + base/src/main/res/values/styles.xml | 11 +++ .../dev/dev_android/base/ExampleUnitTest.java | 17 ++++ settings.gradle | 2 +- 35 files changed, 284 insertions(+), 15 deletions(-) delete mode 100644 app/src/main/java/to/dev/dev_android/base/navigator/BaseNavigator.kt delete mode 100644 app/src/main/java/to/dev/dev_android/base/navigator/BaseNavigatorImpl.kt create mode 100644 base/.gitignore create mode 100644 base/build.gradle create mode 100644 base/proguard-rules.pro create mode 100644 base/src/androidTest/java/to/dev/dev_android/base/ExampleInstrumentedTest.java create mode 100644 base/src/main/AndroidManifest.xml rename {app => base}/src/main/java/to/dev/dev_android/base/activity/BaseActivity.kt (100%) create mode 100644 base/src/main/java/to/dev/dev_android/base/analytics/BaseAnalytics.java create mode 100644 base/src/main/java/to/dev/dev_android/base/analytics/BaseAnalyticsImpl.java create mode 100644 base/src/main/java/to/dev/dev_android/base/router/BaseRouter.kt create mode 100644 base/src/main/java/to/dev/dev_android/base/router/BaseRouterImpl.kt rename {app => base}/src/main/java/to/dev/dev_android/base/viewmodel/BaseViewModel.kt (100%) rename {app => base}/src/main/java/to/dev/dev_android/base/viewmodel/ViewModelProviderFactory.kt (100%) create mode 100644 base/src/main/res/drawable-v24/ic_launcher_foreground.xml create mode 100644 base/src/main/res/drawable/ic_launcher_background.xml create mode 100644 base/src/main/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 base/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml create mode 100644 base/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 base/src/main/res/mipmap-hdpi/ic_launcher_round.png create mode 100644 base/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 base/src/main/res/mipmap-mdpi/ic_launcher_round.png create mode 100644 base/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 base/src/main/res/mipmap-xhdpi/ic_launcher_round.png create mode 100644 base/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 base/src/main/res/mipmap-xxhdpi/ic_launcher_round.png create mode 100644 base/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 base/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png create mode 100644 base/src/main/res/values/colors.xml create mode 100644 base/src/main/res/values/strings.xml create mode 100644 base/src/main/res/values/styles.xml create mode 100644 base/src/test/java/to/dev/dev_android/base/ExampleUnitTest.java diff --git a/.idea/gradle.xml b/.idea/gradle.xml index 7ac24c7..c11ebc8 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -9,6 +9,7 @@