diff --git a/app/build.gradle b/app/build.gradle index 4fbf56f..2beaa1d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -16,20 +16,20 @@ if (file('signing.gradle').exists()) { ext { okHttpVersion = '3.5.0' retrofitVersion = '2.1.0' - supportLibraryVersion = '25.0.1' + supportLibraryVersion = '1.0.0-beta01' } android { - compileSdkVersion 25 - buildToolsVersion "25.0.2" + compileSdkVersion 28 + buildToolsVersion "25.0.3" defaultConfig { applicationId "com.thoughtbot.tropos" minSdkVersion 19 - targetSdkVersion 25 + targetSdkVersion 28 versionCode 6 versionName "1.1" - testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } signingConfigs { @@ -75,9 +75,9 @@ dependencies { compile 'org.jetbrains.anko:anko-common:0.8.3' //android - compile "com.android.support:appcompat-v7:${supportLibraryVersion}" - compile "com.android.support:design:${supportLibraryVersion}" - compile "com.android.support:recyclerview-v7:${supportLibraryVersion}" + compile "androidx.appcompat:appcompat:${supportLibraryVersion}" + compile "com.google.android.material:material:${supportLibraryVersion}" + compile "androidx.recyclerview:recyclerview:${supportLibraryVersion}" compile 'com.google.android.gms:play-services-location:10.0.0' //unit tests @@ -90,9 +90,9 @@ dependencies { testCompile "com.nhaarman:mockito-kotlin:1.1.0" //automation tests - androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2' - androidTestCompile 'com.android.support.test:runner:0.5' - androidTestCompile "com.android.support:support-annotations:${supportLibraryVersion}" + androidTestCompile 'androidx.test.espresso:espresso-core:3.1.0-alpha4' + androidTestCompile 'androidx.test:runner:1.1.0-alpha4' + androidTestCompile "androidx.annotation:annotation:${supportLibraryVersion}" //networking compile "com.squareup.retrofit2:retrofit:${retrofitVersion}" diff --git a/app/src/main/kotlin/com/thoughtbot/tropos/adapters/WeatherAdapter.kt b/app/src/main/kotlin/com/thoughtbot/tropos/adapters/WeatherAdapter.kt index 650ffd4..13b0370 100644 --- a/app/src/main/kotlin/com/thoughtbot/tropos/adapters/WeatherAdapter.kt +++ b/app/src/main/kotlin/com/thoughtbot/tropos/adapters/WeatherAdapter.kt @@ -1,8 +1,8 @@ package com.thoughtbot.tropos.adapters -import android.support.v7.widget.GridLayoutManager.SpanSizeLookup -import android.support.v7.widget.RecyclerView.Adapter -import android.support.v7.widget.RecyclerView.ViewHolder +import androidx.recyclerview.widget.GridLayoutManager.SpanSizeLookup +import androidx.recyclerview.widget.RecyclerView.Adapter +import androidx.recyclerview.widget.RecyclerView.ViewHolder import android.view.LayoutInflater.from import android.view.ViewGroup import com.thoughtbot.tropos.R.layout @@ -25,21 +25,21 @@ class WeatherAdapter : Adapter() { } } - override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): ViewHolder { + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { when (viewType) { layout.grid_item_current_weather -> { - val view = from(parent!!.context).inflate(layout.grid_item_current_weather, parent, false) + val view = from(parent.context).inflate(layout.grid_item_current_weather, parent, false) return CurrentWeatherViewHolder(view) } layout.grid_item_forecast -> { - val view = from(parent!!.context).inflate(layout.grid_item_forecast, parent, false) + val view = from(parent.context).inflate(layout.grid_item_forecast, parent, false) return ForecastViewHolder(view) } else -> throw IllegalArgumentException("$viewType is not a valid viewType") } } - override fun onBindViewHolder(holder: ViewHolder?, position: Int) { + override fun onBindViewHolder(holder: ViewHolder, position: Int) { when (holder) { is CurrentWeatherViewHolder -> weather?.let { holder.bind(it.today, it.yesterday) } is ForecastViewHolder -> weather?.let { holder.bind(forecast(it, position)) } @@ -68,4 +68,4 @@ class WeatherAdapter : Adapter() { return weather.nextThreeDays[position - 1] } -} \ No newline at end of file +} diff --git a/app/src/main/kotlin/com/thoughtbot/tropos/commons/BaseActivity.kt b/app/src/main/kotlin/com/thoughtbot/tropos/commons/BaseActivity.kt index 26fa90b..46e9e6c 100644 --- a/app/src/main/kotlin/com/thoughtbot/tropos/commons/BaseActivity.kt +++ b/app/src/main/kotlin/com/thoughtbot/tropos/commons/BaseActivity.kt @@ -2,7 +2,7 @@ package com.thoughtbot.tropos.commons import android.content.Context import android.os.Bundle -import android.support.v7.app.AppCompatActivity +import androidx.appcompat.app.AppCompatActivity import com.thoughtbot.tropos.R import uk.co.chrisjenx.calligraphy.CalligraphyConfig import uk.co.chrisjenx.calligraphy.CalligraphyContextWrapper diff --git a/app/src/main/kotlin/com/thoughtbot/tropos/extensions/ContextExtensions.kt b/app/src/main/kotlin/com/thoughtbot/tropos/extensions/ContextExtensions.kt index c85cc10..da84247 100644 --- a/app/src/main/kotlin/com/thoughtbot/tropos/extensions/ContextExtensions.kt +++ b/app/src/main/kotlin/com/thoughtbot/tropos/extensions/ContextExtensions.kt @@ -3,7 +3,7 @@ package com.thoughtbot.tropos.extensions import android.content.Context import android.content.SharedPreferences import android.content.pm.PackageManager -import android.support.v4.content.ContextCompat +import androidx.core.content.ContextCompat fun Context.hasPermission(permission: String): Boolean { return ContextCompat.checkSelfPermission(this, permission) == PackageManager.PERMISSION_GRANTED diff --git a/app/src/main/kotlin/com/thoughtbot/tropos/extensions/ViewExtensions.kt b/app/src/main/kotlin/com/thoughtbot/tropos/extensions/ViewExtensions.kt index 7cff766..28c695d 100644 --- a/app/src/main/kotlin/com/thoughtbot/tropos/extensions/ViewExtensions.kt +++ b/app/src/main/kotlin/com/thoughtbot/tropos/extensions/ViewExtensions.kt @@ -1,8 +1,8 @@ package com.thoughtbot.tropos.extensions import android.graphics.Color -import android.support.v7.widget.RecyclerView -import android.support.v7.widget.SnapHelper +import androidx.recyclerview.widget.RecyclerView +import androidx.recyclerview.widget.SnapHelper import android.text.Spannable import android.text.SpannableStringBuilder import android.text.style.ForegroundColorSpan @@ -24,6 +24,6 @@ fun String.colorSubString(subString: String, color: Int): SpannableStringBuilder return stringBuilder } -fun RecyclerView.attachSnapHelper(snapHelper: SnapHelper) { +fun androidx.recyclerview.widget.RecyclerView.attachSnapHelper(snapHelper: androidx.recyclerview.widget.SnapHelper) { snapHelper.attachToRecyclerView(this) } diff --git a/app/src/main/kotlin/com/thoughtbot/tropos/permissions/PermissionExtensions.kt b/app/src/main/kotlin/com/thoughtbot/tropos/permissions/PermissionExtensions.kt index 4869b94..824482f 100644 --- a/app/src/main/kotlin/com/thoughtbot/tropos/permissions/PermissionExtensions.kt +++ b/app/src/main/kotlin/com/thoughtbot/tropos/permissions/PermissionExtensions.kt @@ -2,7 +2,7 @@ package com.thoughtbot.tropos.permissions import android.app.Activity import android.content.pm.PackageManager -import android.support.v4.app.ActivityCompat +import androidx.core.app.ActivityCompat import android.util.Log fun Activity.getPermissionResults(permission: Permission, results: PermissionResults, diff --git a/app/src/main/kotlin/com/thoughtbot/tropos/refresh/DiagonalStripeView.kt b/app/src/main/kotlin/com/thoughtbot/tropos/refresh/DiagonalStripeView.kt index c2b167c..8699451 100644 --- a/app/src/main/kotlin/com/thoughtbot/tropos/refresh/DiagonalStripeView.kt +++ b/app/src/main/kotlin/com/thoughtbot/tropos/refresh/DiagonalStripeView.kt @@ -5,7 +5,7 @@ import android.graphics.Bitmap import android.graphics.Canvas import android.graphics.Paint import android.graphics.Point -import android.support.v4.content.ContextCompat +import androidx.core.content.ContextCompat import android.util.AttributeSet import android.view.View import android.view.WindowManager diff --git a/app/src/main/kotlin/com/thoughtbot/tropos/refresh/ProgressCircleDrawable.kt b/app/src/main/kotlin/com/thoughtbot/tropos/refresh/ProgressCircleDrawable.kt index aa65a93..3e5de06 100644 --- a/app/src/main/kotlin/com/thoughtbot/tropos/refresh/ProgressCircleDrawable.kt +++ b/app/src/main/kotlin/com/thoughtbot/tropos/refresh/ProgressCircleDrawable.kt @@ -14,7 +14,7 @@ import android.graphics.RectF import android.graphics.Region.Op import android.graphics.drawable.Animatable import android.graphics.drawable.Drawable -import android.support.v4.content.ContextCompat +import androidx.core.content.ContextCompat import com.thoughtbot.tropos.R class ProgressCircleDrawable(context: Context) : Drawable(), Animatable { diff --git a/app/src/main/kotlin/com/thoughtbot/tropos/refresh/PullToRefreshLayout.kt b/app/src/main/kotlin/com/thoughtbot/tropos/refresh/PullToRefreshLayout.kt index 9ee9918..a6c8131 100644 --- a/app/src/main/kotlin/com/thoughtbot/tropos/refresh/PullToRefreshLayout.kt +++ b/app/src/main/kotlin/com/thoughtbot/tropos/refresh/PullToRefreshLayout.kt @@ -2,10 +2,10 @@ package com.thoughtbot.tropos.refresh import android.content.Context import android.graphics.drawable.Drawable -import android.support.v4.view.MotionEventCompat -import android.support.v4.view.NestedScrollingChildHelper -import android.support.v4.view.NestedScrollingParentHelper -import android.support.v4.view.ViewCompat +import androidx.core.view.MotionEventCompat +import androidx.core.view.NestedScrollingChildHelper +import androidx.core.view.NestedScrollingParentHelper +import androidx.core.view.ViewCompat import android.util.AttributeSet import android.view.MotionEvent import android.view.View @@ -17,6 +17,7 @@ import android.view.animation.Animation import android.view.animation.DecelerateInterpolator import android.view.animation.Transformation import android.widget.AbsListView +import java.lang.RuntimeException class PullToRefreshLayout : ViewGroup, Animation.AnimationListener { @@ -408,9 +409,9 @@ class PullToRefreshLayout : ViewGroup, Animation.AnimationListener { override fun requestDisallowInterceptTouchEvent(b: Boolean) { // if this is a List < L or another view that doesn't support nested // scrolling, ignore this request so that the vertical scroll event - // isn't stolen + // isn't stole if (android.os.Build.VERSION.SDK_INT < 21 && target is AbsListView || target != null && !ViewCompat.isNestedScrollingEnabled( - target)) { + target!!)) { // Nope. } else { super.requestDisallowInterceptTouchEvent(b) @@ -565,4 +566,4 @@ class PullToRefreshLayout : ViewGroup, Animation.AnimationListener { override fun onAnimationStart(animation: Animation?) {} override fun onAnimationRepeat(animation: Animation?) {} -} \ No newline at end of file +} diff --git a/app/src/main/kotlin/com/thoughtbot/tropos/refresh/RefreshDrawable.kt b/app/src/main/kotlin/com/thoughtbot/tropos/refresh/RefreshDrawable.kt index 3465321..348601c 100644 --- a/app/src/main/kotlin/com/thoughtbot/tropos/refresh/RefreshDrawable.kt +++ b/app/src/main/kotlin/com/thoughtbot/tropos/refresh/RefreshDrawable.kt @@ -9,7 +9,7 @@ import android.graphics.Rect import android.graphics.Region import android.graphics.drawable.Drawable import android.graphics.drawable.LayerDrawable -import android.support.v4.graphics.drawable.DrawableCompat +import androidx.core.graphics.drawable.DrawableCompat import com.thoughtbot.tropos.refresh.PullToRefreshLayout.ProgressStateListener import com.thoughtbot.tropos.refresh.PullToRefreshLayout.ProgressStateListener.Companion.INACTIVE import com.thoughtbot.tropos.refresh.PullToRefreshLayout.ProgressStateListener.Companion.PROGRESSING diff --git a/app/src/main/kotlin/com/thoughtbot/tropos/scrolling/RecyclerViewScroller.kt b/app/src/main/kotlin/com/thoughtbot/tropos/scrolling/RecyclerViewScroller.kt index ae2f53b..d473586 100644 --- a/app/src/main/kotlin/com/thoughtbot/tropos/scrolling/RecyclerViewScroller.kt +++ b/app/src/main/kotlin/com/thoughtbot/tropos/scrolling/RecyclerViewScroller.kt @@ -1,25 +1,25 @@ package com.thoughtbot.tropos.scrolling -import android.support.v7.widget.LinearLayoutManager -import android.support.v7.widget.RecyclerView -import android.support.v7.widget.RecyclerView.OnItemTouchListener -import android.support.v7.widget.StaggeredGridLayoutManager +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import androidx.recyclerview.widget.RecyclerView.OnItemTouchListener +import androidx.recyclerview.widget.StaggeredGridLayoutManager import android.view.MotionEvent import com.thoughtbot.tropos.scrolling.OverScroller.OverScrollDirection.END -class RecyclerViewScroller(override val view: RecyclerView) : Scroller { +class RecyclerViewScroller(override val view: androidx.recyclerview.widget.RecyclerView) : Scroller { val layoutManager = view.layoutManager - val orientation = (layoutManager as? LinearLayoutManager)?.orientation ?: (layoutManager as StaggeredGridLayoutManager).orientation + val orientation = (layoutManager as? androidx.recyclerview.widget.LinearLayoutManager)?.orientation ?: (layoutManager as androidx.recyclerview.widget.StaggeredGridLayoutManager).orientation init { - if (layoutManager !is LinearLayoutManager && layoutManager !is StaggeredGridLayoutManager) { + if (layoutManager !is androidx.recyclerview.widget.LinearLayoutManager && layoutManager !is androidx.recyclerview.widget.StaggeredGridLayoutManager) { throw IllegalArgumentException("Recycler views with custom layout managers are not supported") } } override fun isInAbsoluteStart(): Boolean { - if (orientation == LinearLayoutManager.HORIZONTAL) { + if (orientation == androidx.recyclerview.widget.LinearLayoutManager.HORIZONTAL) { return !view.canScrollHorizontally(-1) } else { return !view.canScrollVertically(-1) @@ -27,7 +27,7 @@ class RecyclerViewScroller(override val view: RecyclerView) : Scroller { } override fun isInAbsoluteEnd(): Boolean { - if (orientation == LinearLayoutManager.HORIZONTAL) { + if (orientation == androidx.recyclerview.widget.LinearLayoutManager.HORIZONTAL) { return !view.canScrollHorizontally(1) } else { return !view.canScrollVertically(1) @@ -36,17 +36,17 @@ class RecyclerViewScroller(override val view: RecyclerView) : Scroller { } -fun RecyclerView.setVerticalEndOverScroller() { +fun androidx.recyclerview.widget.RecyclerView.setVerticalEndOverScroller() { val overScroller = VerticalOverScroller(RecyclerViewScroller(this), END) addOnItemTouchListener(object : OnItemTouchListener { - override fun onTouchEvent(rv: RecyclerView?, e: MotionEvent?) { + override fun onTouchEvent(rv: androidx.recyclerview.widget.RecyclerView, e: MotionEvent) { overScroller.onTouch(rv, e) } - override fun onInterceptTouchEvent(rv: RecyclerView?, e: MotionEvent?): Boolean { + override fun onInterceptTouchEvent(rv: androidx.recyclerview.widget.RecyclerView, e: MotionEvent): Boolean { return overScroller.onTouch(rv, e) } override fun onRequestDisallowInterceptTouchEvent(disallowIntercept: Boolean) {} }) -} \ No newline at end of file +} diff --git a/app/src/main/kotlin/com/thoughtbot/tropos/scrolling/WeatherSnapHelper.kt b/app/src/main/kotlin/com/thoughtbot/tropos/scrolling/WeatherSnapHelper.kt index d34ac5a..4615186 100644 --- a/app/src/main/kotlin/com/thoughtbot/tropos/scrolling/WeatherSnapHelper.kt +++ b/app/src/main/kotlin/com/thoughtbot/tropos/scrolling/WeatherSnapHelper.kt @@ -1,10 +1,10 @@ package com.thoughtbot.tropos.scrolling -import android.support.v7.widget.LinearLayoutManager -import android.support.v7.widget.LinearSnapHelper -import android.support.v7.widget.OrientationHelper -import android.support.v7.widget.RecyclerView -import android.support.v7.widget.RecyclerView.LayoutManager +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.LinearSnapHelper +import androidx.recyclerview.widget.OrientationHelper +import androidx.recyclerview.widget.RecyclerView +import androidx.recyclerview.widget.RecyclerView.LayoutManager import android.view.View /** @@ -14,18 +14,18 @@ import android.view.View * The implementation will snap to either completely show or hide the {@link ForecastViewHolder} * depending on how much of it is visible on when user releases their touch **/ -class WeatherSnapHelper : LinearSnapHelper() { +class WeatherSnapHelper : androidx.recyclerview.widget.LinearSnapHelper() { override fun findSnapView(layoutManager: LayoutManager?): View? { - layoutManager as LinearLayoutManager + layoutManager as androidx.recyclerview.widget.LinearLayoutManager val lastChildIndex = layoutManager.findLastVisibleItemPosition() - if (lastChildIndex == RecyclerView.NO_POSITION) { + if (lastChildIndex == androidx.recyclerview.widget.RecyclerView.NO_POSITION) { return null } val lastChild = layoutManager.findViewByPosition(lastChildIndex) - val orientationHelper = OrientationHelper.createVerticalHelper(layoutManager) + val orientationHelper = androidx.recyclerview.widget.OrientationHelper.createVerticalHelper(layoutManager) val lastChildStart = orientationHelper.getDecoratedStart(lastChild) val lastChildHeight = orientationHelper.getDecoratedMeasurement(lastChild) val recyclerViewHeight = layoutManager.height @@ -46,8 +46,8 @@ class WeatherSnapHelper : LinearSnapHelper() { out[0] = 0 val targetViewType = layoutManager.getItemViewType(target) - val weatherViewType = layoutManager.getItemViewType(layoutManager.findViewByPosition(0)) - val orientationHelper = OrientationHelper.createVerticalHelper(layoutManager) + val weatherViewType = layoutManager.getItemViewType(layoutManager.findViewByPosition(0)!!) + val orientationHelper = androidx.recyclerview.widget.OrientationHelper.createVerticalHelper(layoutManager) if (targetViewType == weatherViewType) { // snap to show weather diff --git a/app/src/main/kotlin/com/thoughtbot/tropos/settings/SettingsActivity.kt b/app/src/main/kotlin/com/thoughtbot/tropos/settings/SettingsActivity.kt index f6bb32f..c9a4813 100644 --- a/app/src/main/kotlin/com/thoughtbot/tropos/settings/SettingsActivity.kt +++ b/app/src/main/kotlin/com/thoughtbot/tropos/settings/SettingsActivity.kt @@ -2,8 +2,8 @@ package com.thoughtbot.tropos.settings import android.content.Context import android.os.Bundle -import android.support.v4.app.ActivityCompat -import android.support.v7.widget.Toolbar +import androidx.core.app.ActivityCompat +import androidx.appcompat.widget.Toolbar import android.view.Menu import android.view.MenuItem import com.thoughtbot.tropos.R diff --git a/app/src/main/kotlin/com/thoughtbot/tropos/splash/SplashActivity.kt b/app/src/main/kotlin/com/thoughtbot/tropos/splash/SplashActivity.kt index d07061d..be5d917 100644 --- a/app/src/main/kotlin/com/thoughtbot/tropos/splash/SplashActivity.kt +++ b/app/src/main/kotlin/com/thoughtbot/tropos/splash/SplashActivity.kt @@ -3,7 +3,7 @@ package com.thoughtbot.tropos.splash import android.content.Context import android.content.Intent import android.os.Bundle -import android.support.v4.app.ActivityCompat.finishAfterTransition +import androidx.core.app.ActivityCompat.finishAfterTransition import com.thoughtbot.tropos.R import com.thoughtbot.tropos.commons.BaseActivity import com.thoughtbot.tropos.permissions.getPermissionResults diff --git a/app/src/main/kotlin/com/thoughtbot/tropos/transitions/CircularReveal.kt b/app/src/main/kotlin/com/thoughtbot/tropos/transitions/CircularReveal.kt index bde2d54..d8a6e7f 100644 --- a/app/src/main/kotlin/com/thoughtbot/tropos/transitions/CircularReveal.kt +++ b/app/src/main/kotlin/com/thoughtbot/tropos/transitions/CircularReveal.kt @@ -4,7 +4,7 @@ import android.R.attr import android.animation.Animator import android.content.Context import android.graphics.Point -import android.support.annotation.IdRes +import androidx.annotation.IdRes import android.transition.TransitionValues import android.transition.Visibility import android.util.AttributeSet diff --git a/app/src/main/kotlin/com/thoughtbot/tropos/ui/MainActivity.kt b/app/src/main/kotlin/com/thoughtbot/tropos/ui/MainActivity.kt index fd96b4e..4a0f8c6 100644 --- a/app/src/main/kotlin/com/thoughtbot/tropos/ui/MainActivity.kt +++ b/app/src/main/kotlin/com/thoughtbot/tropos/ui/MainActivity.kt @@ -3,10 +3,10 @@ package com.thoughtbot.tropos.ui import android.content.Context import android.content.Intent import android.os.Bundle -import android.support.v4.app.ActivityOptionsCompat -import android.support.v7.widget.GridLayoutManager -import android.support.v7.widget.RecyclerView -import android.support.v7.widget.Toolbar +import androidx.core.app.ActivityOptionsCompat +import androidx.recyclerview.widget.GridLayoutManager +import androidx.recyclerview.widget.RecyclerView +import androidx.appcompat.widget.Toolbar import android.view.Menu import android.view.MenuItem import android.view.View @@ -40,9 +40,11 @@ class MainActivity : BaseActivity(), MainView { } val presenter: MainPresenter by lazy { MainPresenter(this, intent) } - val recyclerView: RecyclerView by lazy { findViewById(R.id.recycler_view) as RecyclerView } + val recyclerView: androidx.recyclerview.widget.RecyclerView by lazy { findViewById(R.id.recycler_view) as androidx.recyclerview.widget.RecyclerView } val adapter: WeatherAdapter by lazy { WeatherAdapter() } - val layoutManager: GridLayoutManager by lazy { GridLayoutManager(this, 3) } + val layoutManager: androidx.recyclerview.widget.GridLayoutManager by lazy { + androidx.recyclerview.widget.GridLayoutManager(this, 3) + } val pullToRefreshLayout by lazy { find(R.id.pull_to_refresh) } override fun onCreate(savedInstanceState: Bundle?) { @@ -104,7 +106,7 @@ class MainActivity : BaseActivity(), MainView { toolbar_last_update.text = it.toolbarViewModel.subtitle() adapter.weather = it.weather - recyclerView.itemAnimator.isRunning { + recyclerView.itemAnimator?.isRunning { pullToRefreshLayout.setRefreshing(false) } diff --git a/app/src/main/kotlin/com/thoughtbot/tropos/viewholders/CurrentWeatherViewHolder.kt b/app/src/main/kotlin/com/thoughtbot/tropos/viewholders/CurrentWeatherViewHolder.kt index 3592cc8..e0e700c 100644 --- a/app/src/main/kotlin/com/thoughtbot/tropos/viewholders/CurrentWeatherViewHolder.kt +++ b/app/src/main/kotlin/com/thoughtbot/tropos/viewholders/CurrentWeatherViewHolder.kt @@ -1,6 +1,6 @@ package com.thoughtbot.tropos.viewholders -import android.support.v7.widget.RecyclerView.ViewHolder +import androidx.recyclerview.widget.RecyclerView.ViewHolder import android.view.View import android.widget.ImageView import android.widget.TextView @@ -10,7 +10,7 @@ import com.thoughtbot.tropos.viewmodels.CurrentWeatherViewModel import com.thoughtbot.tropos.widgets.DrawableTextLabel import org.jetbrains.anko.find -class CurrentWeatherViewHolder(itemView: View?) : ViewHolder(itemView) { +class CurrentWeatherViewHolder(itemView: View) : ViewHolder(itemView) { fun bind(today: Condition, yesterday: Condition) { val viewModel = CurrentWeatherViewModel(itemView.context, today = today, yesterday = yesterday) @@ -23,4 +23,4 @@ class CurrentWeatherViewHolder(itemView: View?) : ViewHolder(itemView) { itemView.find(id.wind_label).setDrawable(viewModel.windIcon) } -} \ No newline at end of file +} diff --git a/app/src/main/kotlin/com/thoughtbot/tropos/viewholders/ForecastViewHolder.kt b/app/src/main/kotlin/com/thoughtbot/tropos/viewholders/ForecastViewHolder.kt index 0c6426b..2003197 100644 --- a/app/src/main/kotlin/com/thoughtbot/tropos/viewholders/ForecastViewHolder.kt +++ b/app/src/main/kotlin/com/thoughtbot/tropos/viewholders/ForecastViewHolder.kt @@ -1,13 +1,13 @@ package com.thoughtbot.tropos.viewholders -import android.support.v7.widget.RecyclerView -import android.support.v7.widget.RecyclerView.ViewHolder +import androidx.recyclerview.widget.RecyclerView +import androidx.recyclerview.widget.RecyclerView.ViewHolder import android.view.View import com.thoughtbot.tropos.data.Condition import com.thoughtbot.tropos.viewmodels.ForecastViewModel import com.thoughtbot.tropos.widgets.ForecastLayout -class ForecastViewHolder(itemView: View?) : ViewHolder(itemView) { +class ForecastViewHolder(itemView: View) : ViewHolder(itemView) { fun bind(condition: Condition) { val viewModel = ForecastViewModel(itemView.context, condition = condition) diff --git a/app/src/main/kotlin/com/thoughtbot/tropos/viewmodels/CurrentWeatherViewModel.kt b/app/src/main/kotlin/com/thoughtbot/tropos/viewmodels/CurrentWeatherViewModel.kt index 303ef86..225a543 100644 --- a/app/src/main/kotlin/com/thoughtbot/tropos/viewmodels/CurrentWeatherViewModel.kt +++ b/app/src/main/kotlin/com/thoughtbot/tropos/viewmodels/CurrentWeatherViewModel.kt @@ -1,7 +1,7 @@ package com.thoughtbot.tropos.viewmodels import android.content.Context -import android.support.v4.content.ContextCompat.getColor +import androidx.core.content.ContextCompat.getColor import android.text.SpannableStringBuilder import com.thoughtbot.tropos.R import com.thoughtbot.tropos.R.color diff --git a/app/src/main/kotlin/com/thoughtbot/tropos/widgets/DrawableTextLabel.kt b/app/src/main/kotlin/com/thoughtbot/tropos/widgets/DrawableTextLabel.kt index 19bc654..a8e00f2 100644 --- a/app/src/main/kotlin/com/thoughtbot/tropos/widgets/DrawableTextLabel.kt +++ b/app/src/main/kotlin/com/thoughtbot/tropos/widgets/DrawableTextLabel.kt @@ -3,7 +3,7 @@ package com.thoughtbot.tropos.widgets import android.content.Context import android.content.res.TypedArray import android.graphics.drawable.Drawable -import android.support.annotation.DrawableRes +import androidx.annotation.DrawableRes import android.text.SpannableStringBuilder import android.util.AttributeSet import android.view.LayoutInflater diff --git a/app/src/main/kotlin/com/thoughtbot/tropos/widgets/ForecastLayout.kt b/app/src/main/kotlin/com/thoughtbot/tropos/widgets/ForecastLayout.kt index 29ce328..f3d123f 100644 --- a/app/src/main/kotlin/com/thoughtbot/tropos/widgets/ForecastLayout.kt +++ b/app/src/main/kotlin/com/thoughtbot/tropos/widgets/ForecastLayout.kt @@ -1,7 +1,7 @@ package com.thoughtbot.tropos.widgets import android.content.Context -import android.support.annotation.DrawableRes +import androidx.annotation.DrawableRes import android.util.AttributeSet import android.view.LayoutInflater import android.widget.ImageView diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 285d300..c57c8bb 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -9,7 +9,7 @@ android:fitsSystemWindows="true" android:orientation="vertical"> - - + - - \ No newline at end of file + diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml index 1d92ac0..e50ad42 100644 --- a/app/src/main/res/layout/activity_settings.xml +++ b/app/src/main/res/layout/activity_settings.xml @@ -7,7 +7,7 @@ android:fitsSystemWindows="true" android:orientation="vertical"> - - \ No newline at end of file + diff --git a/build.gradle b/build.gradle index 53ca5e7..8447a5b 100644 --- a/build.gradle +++ b/build.gradle @@ -1,13 +1,17 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { - ext.kotlin_version = '1.0.6' + ext.kotlin_version = '1.3.21' repositories { jcenter() + maven { + url 'https://maven.google.com/' + name 'Google' + } } dependencies { - classpath 'com.android.tools.build:gradle:2.2.3' + classpath 'com.android.tools.build:gradle:3.3.2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version" @@ -19,6 +23,10 @@ buildscript { allprojects { repositories { jcenter() + maven { + url 'https://maven.google.com/' + name 'Google' + } } } diff --git a/gradle.properties b/gradle.properties index aac7c9b..9e6fce1 100644 --- a/gradle.properties +++ b/gradle.properties @@ -9,6 +9,8 @@ # Specifies the JVM arguments used for the daemon process. # The setting is particularly useful for tweaking memory settings. +android.enableJetifier=true +android.useAndroidX=true org.gradle.jvmargs=-Xmx1536m # When configured, Gradle will run in incubating parallel mode. diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 04e285f..51ad40e 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Mon Dec 28 10:00:20 PST 2015 +#Fri Apr 12 12:29:18 GMT-05:00 2019 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.1-all.zip