Skip to content

Commit

Permalink
Merge pull request #1 from Sub6Resources/androidx
Browse files Browse the repository at this point in the history
Refactor to androidx
  • Loading branch information
Sub6Resources authored Oct 8, 2018
2 parents a041a2f + 0f0f1a6 commit 60abd6b
Show file tree
Hide file tree
Showing 29 changed files with 131 additions and 277 deletions.
Binary file modified .idea/caches/build_file_checksums.ser
Binary file not shown.
59 changes: 35 additions & 24 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,16 @@ apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'

android {
compileSdkVersion 27
buildToolsVersion '27.0.3'
compileSdkVersion 28
buildToolsVersion '28.0.3'


defaultConfig {
minSdkVersion 16
targetSdkVersion 27
versionCode 1
versionName "1.1"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
targetSdkVersion 28
versionCode 2
versionName "1.6.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
Expand All @@ -31,26 +31,37 @@ dependencies {
testImplementation 'junit:junit:4.12'
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation "com.android.support:appcompat-v7:$support_version"

implementation "com.android.support:design:$support_version"
api "com.android.support:recyclerview-v7:$support_version"
implementation 'androidx.appcompat:appcompat:1.0.0'
implementation 'com.google.android.material:material:1.0.0'
implementation 'androidx.recyclerview:recyclerview:1.0.0'

api 'com.afollestad.material-dialogs:core:0.9.6.0'
api 'org.koin:koin-android:0.8.0'
api 'org.koin:koin-android-architecture:0.8.0'
api "android.arch.lifecycle:runtime:1.1.0"
api "android.arch.lifecycle:extensions:1.1.0"
api 'com.squareup.retrofit2:converter-gson:2.2.0'
api "io.reactivex.rxjava2:rxandroid:2.0.2"
api 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'
api 'com.squareup.okhttp3:logging-interceptor:3.8.0'
api 'com.squareup.okhttp3:okhttp:3.8.0'
api 'com.squareup.picasso:picasso:2.5.2'

kapt "android.arch.lifecycle:compiler:1.1.0"

androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'

//Koin
def koin_version = "1.0.1"
implementation "org.koin:koin-androidx-viewmodel:$koin_version"

//Android Architecture Components
def lifecycle_version = "2.0.0"
implementation "androidx.lifecycle:lifecycle-runtime:$lifecycle_version"
implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle_version"
kapt "androidx.lifecycle:lifecycle-compiler:$lifecycle_version"

implementation 'com.squareup.retrofit2:converter-gson:2.2.0'

implementation "io.reactivex.rxjava2:rxandroid:2.0.2"

implementation 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'

implementation 'com.squareup.okhttp3:logging-interceptor:3.8.0'

implementation 'com.squareup.okhttp3:okhttp:3.10.0'

implementation 'com.squareup.picasso:picasso:2.5.2'

androidTestImplementation 'androidx.test:runner:1.1.0-beta01'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-beta01'
}

repositories {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.sub6resources.utilities

import android.support.test.InstrumentationRegistry
import android.support.test.runner.AndroidJUnit4
import androidx.test.InstrumentationRegistry
import androidx.test.runner.AndroidJUnit4

import org.junit.Test
import org.junit.runner.RunWith
Expand Down
38 changes: 19 additions & 19 deletions app/src/main/java/com/sub6resources/utilities/BaseActivity.kt
Original file line number Diff line number Diff line change
@@ -1,25 +1,24 @@
package com.sub6resources.utilities

import android.Manifest
import android.arch.lifecycle.ViewModel
import android.arch.lifecycle.ViewModelProvider
import android.arch.lifecycle.ViewModelProviders
import android.content.Intent
import android.content.pm.PackageManager
import android.content.res.Configuration
import android.os.Bundle
import android.support.design.widget.NavigationView
import android.support.v4.app.ActivityCompat
import android.support.v4.app.Fragment
import android.support.v4.app.NavUtils
import android.support.v4.content.ContextCompat
import android.support.v4.widget.DrawerLayout
import android.support.v7.app.ActionBarDrawerToggle
import android.support.v7.app.AppCompatActivity
import android.view.Menu
import android.view.MenuItem
import android.view.View
import org.koin.android.architecture.ext.KoinFactory
import androidx.appcompat.app.ActionBarDrawerToggle
import androidx.appcompat.app.AppCompatActivity
import androidx.core.app.ActivityCompat
import androidx.core.app.NavUtils
import androidx.core.content.ContextCompat
import androidx.drawerlayout.widget.DrawerLayout
import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
import com.google.android.material.navigation.NavigationView
import org.koin.androidx.viewmodel.ViewModelFactory


abstract class BaseActivity(private val activityLayout: Int) : AppCompatActivity(), NavigationView.OnNavigationItemSelectedListener {
Expand Down Expand Up @@ -147,6 +146,10 @@ abstract class BaseActivity(private val activityLayout: Int) : AppCompatActivity
*/
open fun onNavItemSelected(item: MenuItem) {}

/**
* This function is a stupid simple replacement for onCreate, so that you don't have that ugly
* super.onCreate call and all the other onCreate logic that tends to get put into every app
*/
open fun setUp() {}

//Fragment Transactions
Expand Down Expand Up @@ -180,11 +183,11 @@ abstract class BaseActivity(private val activityLayout: Int) : AppCompatActivity
}

fun popFragment() {
fragmentManager?.popBackStack()
supportFragmentManager?.popBackStack()
}

fun popAdd(fragment: BaseFragment) {
fragmentManager?.popBackStack()
supportFragmentManager?.popBackStack()
addFragment(fragment)
}

Expand Down Expand Up @@ -299,9 +302,6 @@ abstract class BaseActivity(private val activityLayout: Int) : AppCompatActivity
app.savedCallbacks[requestCode](resultCode, data)
}

@Deprecated("Deprecated in favor of getViewModel<ViewModel>()")
fun <T : ViewModel> getViewModel(javaClass: Class<T>): Lazy<T> = lazy { ViewModelProviders.of(this).get(javaClass) }

inline fun <reified T : ViewModel> getViewModel(): Lazy<T> = lazy { ViewModelProvider(this, KoinFactory).get(T::class.java) }
inline fun <reified T : ViewModel> getGlobalViewModel(): Lazy<T> = lazy { ViewModelProvider(app, KoinFactory).get(T::class.java) }
inline fun <reified T : ViewModel> getViewModel(): Lazy<T> = lazy { ViewModelProvider(this, ViewModelFactory).get(T::class.java) }
inline fun <reified T : ViewModel> getGlobalViewModel(): Lazy<T> = lazy { ViewModelProvider(app, ViewModelFactory).get(T::class.java) }
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package com.sub6resources.utilities

import android.app.Application
import android.arch.lifecycle.ViewModelStore
import android.arch.lifecycle.ViewModelStoreOwner
import androidx.lifecycle.ViewModelStore
import androidx.lifecycle.ViewModelStoreOwner
import android.content.Intent
import org.koin.android.ext.android.startKoin
import org.koin.dsl.module.Module
Expand Down
22 changes: 7 additions & 15 deletions app/src/main/java/com/sub6resources/utilities/BaseFragment.kt
Original file line number Diff line number Diff line change
@@ -1,14 +1,12 @@
package com.sub6resources.utilities

import android.arch.lifecycle.ViewModel
import android.arch.lifecycle.ViewModelProvider
import android.arch.lifecycle.ViewModelProviders
import android.arch.lifecycle.ViewModelStores
import android.os.Bundle
import android.support.v4.app.Fragment
import android.view.*
import org.koin.android.architecture.ext.KoinFactory
import org.koin.android.architecture.ext.getViewModel
import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
import org.koin.androidx.viewmodel.ViewModelFactory
import org.koin.androidx.viewmodel.ext.android.getViewModel


abstract class BaseFragment : Fragment() {
Expand Down Expand Up @@ -80,15 +78,9 @@ abstract class BaseFragment : Fragment() {
fragmentManager?.popBackStack()
}

@Deprecated("getViewModel is deprecated in favor of getViewModel<T>()")
fun <T : ViewModel> getViewModel(javaClass: Class<T>): Lazy<T> = lazy { ViewModelProviders.of(this).get(javaClass) }

inline fun <reified T : ViewModel> getViewModel(): Lazy<T> = lazy { (this as Fragment).getViewModel<T>() }

@Deprecated("getSharedViewModel(T::class.java) is deprecated in favor of getSharedViewModel<T>()")
fun <T : ViewModel> getSharedViewModel(javaClass: Class<T>): Lazy<T> = lazy { ViewModelProviders.of(activity!!).get(javaClass) }

inline fun <reified T : ViewModel> Fragment.getSharedViewModel(): Lazy<T> = lazy { ViewModelProvider(ViewModelStores.of(baseActivity), KoinFactory).get(T::class.java) }
inline fun <reified T : ViewModel> Fragment.getSharedViewModel(): Lazy<T> = lazy { ViewModelProvider(baseActivity, ViewModelFactory).get(T::class.java) }

inline fun <reified T : ViewModel> getGlobalViewModel(): Lazy<T> = lazy { ViewModelProvider(baseActivity.app, KoinFactory).get(T::class.java) }
inline fun <reified T : ViewModel> getGlobalViewModel(): Lazy<T> = lazy { ViewModelProvider(baseActivity.app, ViewModelFactory).get(T::class.java) }
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.sub6resources.utilities

import android.graphics.Color
import android.support.v7.widget.Toolbar
import androidx.appcompat.widget.Toolbar
import android.view.LayoutInflater
import android.view.View
import android.widget.TextView
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.sub6resources.utilities

import android.support.annotation.LayoutRes
import android.support.v7.widget.RecyclerView
import androidx.annotation.LayoutRes
import androidx.recyclerview.widget.RecyclerView
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
Expand Down
3 changes: 0 additions & 3 deletions app/src/main/java/com/sub6resources/utilities/BaseService.kt
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,6 @@ import android.content.Intent
import android.os.Binder
import android.os.IBinder

/**
* Created by whitaker on 1/11/18.
*/
abstract class BaseService: Service() {

open val thisService: BaseService? = null
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package com.sub6resources.utilities

import android.graphics.Color
import android.support.v7.widget.SwitchCompat
import android.support.v7.widget.Toolbar
import androidx.appcompat.widget.SwitchCompat
import androidx.appcompat.widget.Toolbar
import android.text.InputType
import android.view.LayoutInflater
import android.view.View
Expand Down
67 changes: 18 additions & 49 deletions app/src/main/java/com/sub6resources/utilities/Extensions.kt
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@ package com.sub6resources.utilities
import android.app.Activity
import android.app.Dialog
import android.app.NotificationManager
import android.arch.lifecycle.LifecycleOwner
import android.arch.lifecycle.LiveData
import android.arch.lifecycle.Observer
import android.arch.lifecycle.Transformations
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.LiveData
import androidx.lifecycle.Observer
import androidx.lifecycle.Transformations
import android.content.*
import android.content.ClipboardManager
import android.content.res.ColorStateList
Expand All @@ -17,15 +17,15 @@ import android.os.BatteryManager
import android.os.Build
import android.os.Bundle
import android.os.Environment
import android.support.annotation.*
import android.support.design.widget.FloatingActionButton
import android.support.design.widget.Snackbar
import android.support.v4.app.ActivityOptionsCompat
import android.support.v4.app.Fragment
import android.support.v4.content.ContextCompat
import android.support.v4.graphics.drawable.DrawableCompat
import android.support.v7.content.res.AppCompatResources
import android.support.v7.widget.RecyclerView
import androidx.annotation.*
import com.google.android.material.floatingactionbutton.FloatingActionButton
import com.google.android.material.snackbar.Snackbar
import androidx.core.app.ActivityOptionsCompat
import androidx.fragment.app.Fragment
import androidx.core.content.ContextCompat
import androidx.core.graphics.drawable.DrawableCompat
import androidx.appcompat.content.res.AppCompatResources
import androidx.recyclerview.widget.RecyclerView
import android.text.*
import android.util.DisplayMetrics
import android.util.Log
Expand Down Expand Up @@ -61,31 +61,6 @@ fun Long.toShortTime(): String {
return "${if (hr != 0L) "$hr:" else ""}${if (min < 10L) "0$min" else min}:${if (sec < 10L) "0$sec" else sec}"
}

/**
* This function generates a save string from a list of variables.
* This assumes that no variable contains the character '_'
*/
@Deprecated("Terribly written, will be removed")
fun generateSaveString(vararg variables: Any): String {
var stringToReturn = ""
variables.forEach{
if(it is Array<*>) {
stringToReturn += it.joinToString(",") + "_"
} else {
stringToReturn += it.toString() + "_"
}
}
return stringToReturn.substringBeforeLast("_")
}

@Deprecated("Terribly written, will be removed")
fun loadFromSaveString(saveString: String, vararg setVariable: (value: String) -> Unit) {
saveString.split("_").forEachIndexed {i, value ->
setVariable[i](value)
}

}

/**
* Returns a random number between `min` and `max`
*/
Expand Down Expand Up @@ -311,9 +286,6 @@ fun String.removeFileExtension(): String = if(this.contains(".") && this.lastInd
*/
fun String.removeFileName(): String = if(this.contains("/") && this.lastIndexOf("/") > 0) { this.substring(0, this.lastIndexOf("/")+1)} else {this}

@Deprecated(""+"Just use + or plus(), much faster to type", ReplaceWith("this.plus(s)"))
fun String.append(s: String): String = this.plus(s)

/**
* Calls a callback if any of the views is clicked
*/
Expand All @@ -328,12 +300,6 @@ fun Array<View>.bulkClick(_onClick: (View) -> Unit) {
forEach { it.apply { onClick { v -> _onClick.invoke(v) } } }
}

/**
* Does the exact same thing as an elvis operator
*/
@Deprecated("Just use an elvis operator!", ReplaceWith("this ?: default"))
fun String?.nullSafe(default: String = ""): String = this ?: default

/**
* Gets the string of an [EditText]. No more [Editable]!
*/
Expand Down Expand Up @@ -391,7 +357,7 @@ fun View.enable() {
/**
* Checks if an [EditText] is blank.
*/
fun EditText.isBlank(): Boolean = getString().isNullOrBlank()
fun EditText.isBlank(): Boolean = getString().isBlank()

/**
* Adds min and max to a [SeekBar] and adds a pretty looking callback for it.
Expand Down Expand Up @@ -531,6 +497,9 @@ inline fun <T, R: Any> LiveData<T>.switchMap(crossinline switchMap: (data: T) ->
return Transformations.switchMap(this) { switchMap(it) }
}

/**
* A shortened version of Transformations.map
*/
inline fun <T, R> LiveData<T>.map(crossinline map: (data: T) -> R): LiveData<R> {
return Transformations.map(this) { map(it) }
}
Expand All @@ -540,7 +509,7 @@ inline fun <T, R> LiveData<T>.map(crossinline map: (data: T) -> R): LiveData<R>
* or down respectively
*/
fun RecyclerView.bindFloatingActionButton(fab: FloatingActionButton) = this.addOnScrollListener(object : RecyclerView.OnScrollListener() {
override fun onScrolled(recyclerView: RecyclerView?, dx: Int, dy: Int) {
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
super.onScrolled(recyclerView, dx, dy)
if (dy > 0 && fab.isShown) {
fab.hide()
Expand Down
Loading

0 comments on commit 60abd6b

Please sign in to comment.