2 Commits 567e584a38 ... 50769beb10

Author SHA1 Message Date
  Adam Pioterek 50769beb10 migration to new Kotlin and androidx 5 years ago
  Adam Pioterek 7d8829fda5 converter deletes old only if they exist 5 years ago

+ 14 - 14
app/build.gradle

@@ -3,15 +3,15 @@ apply plugin: 'kotlin-android'
 apply plugin: 'kotlin-android-extensions'
 
 android {
-    compileSdkVersion 27
-    buildToolsVersion "28.0.2"
+    compileSdkVersion 28
+    buildToolsVersion '28.0.3'
     defaultConfig {
         applicationId "ml.adamsprogs.bimba"
         minSdkVersion 19
-        targetSdkVersion 27
+        targetSdkVersion 28
         versionCode 15
         versionName "2.0"
-        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
+        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
         vectorDrawables.useSupportLibrary = true
     }
     buildTypes {
@@ -24,21 +24,21 @@ android {
 
 dependencies {
     implementation fileTree(include: ['*.jar'], dir: 'libs')
-    androidTestImplementation('com.android.support.test.espresso:espresso-core:2.2.2', {
+    androidTestImplementation('androidx.test.espresso:espresso-core:3.1.0', {
         exclude group: 'com.android.support', module: 'support-annotations'
     })
-    implementation 'com.android.support:appcompat-v7:27.1.1'
-    implementation 'com.android.support:cardview-v7:27.1.1'
-    implementation 'com.android.support:design:27.1.1'
-    implementation 'com.android.support:support-vector-drawable:27.1.1'
-    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
+    implementation 'androidx.appcompat:appcompat:1.0.2'
+    implementation 'androidx.cardview:cardview:1.0.0'
+    implementation 'com.google.android.material:material:1.1.0-alpha01'
+    implementation 'androidx.vectordrawable:vectordrawable:1.0.1'
+    implementation 'androidx.constraintlayout:constraintlayout:2.0.0-alpha2'
     implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
     implementation 'com.github.arimorty:floatingsearchview:2.1.1'
-    implementation 'com.google.code.gson:gson:2.8.1'
-    implementation 'com.squareup.okhttp3:okhttp:3.8.1'
+    implementation 'com.google.code.gson:gson:2.8.2'
+    implementation 'com.squareup.okhttp3:okhttp:3.10.0'
     implementation 'io.requery:sqlite-android:3.22.0'
-    implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:0.22.5'
-    implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:0.22.5'
+    implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:0.27.0-eap13'
+    implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:0.27.0-eap13'
     testImplementation 'junit:junit:4.12'
 }
 repositories {

+ 2 - 2
app/src/androidTest/java/ml/adamsprogs/bimba/ExampleInstrumentedTest.java

@@ -1,8 +1,8 @@
 package ml.adamsprogs.bimba;
 
 import android.content.Context;
-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;

+ 1 - 1
app/src/main/java/ml/adamsprogs/bimba/NotificationChannels.kt

@@ -3,7 +3,7 @@ package ml.adamsprogs.bimba
 import android.app.NotificationChannel
 import android.app.NotificationManager
 import android.os.Build
-import android.support.annotation.RequiresApi
+import androidx.annotation.RequiresApi
 
 
 class NotificationChannels {

+ 16 - 16
app/src/main/java/ml/adamsprogs/bimba/ProviderProxy.kt

@@ -1,8 +1,8 @@
 package ml.adamsprogs.bimba
 
 import android.content.*
-import kotlinx.coroutines.experimental.android.UI
-import kotlinx.coroutines.experimental.*
+import kotlinx.coroutines.*
+import kotlinx.coroutines.android.Main
 import ml.adamsprogs.bimba.datasources.*
 import ml.adamsprogs.bimba.models.*
 import ml.adamsprogs.bimba.models.suggestions.*
@@ -24,17 +24,17 @@ class ProviderProxy(context: Context? = null) {
     }
 
     fun getSuggestions(query: String = "", callback: (List<GtfsSuggestion>) -> Unit) {
-        launch(UI) {
-            val filtered = withContext(DefaultDispatcher) {
+        launch(Dispatchers.Main, CoroutineStart.DEFAULT, null, {
+            val filtered = withContext(Dispatchers.Default) {
                 suggestions = getStopSuggestions(query) //+ getLineSuggestions(query) //todo<p:v+1> + bike stations, train stations, &c
                 filterSuggestions(query)
             }
             callback(filtered)
-        }
+        })
     }
 
     private suspend fun getStopSuggestions(query: String): List<StopSuggestion> {
-        val vmSuggestions = withContext(DefaultDispatcher) {
+        val vmSuggestions = withContext(Dispatchers.Default) {
             vmClient.getStops(query)
         }
 
@@ -65,8 +65,8 @@ class ProviderProxy(context: Context? = null) {
     }
 
     fun getSheds(name: String, callback: (Map<String, Set<String>>) -> Unit) {
-        launch(UI) {
-            val sheds = withContext(DefaultDispatcher) {
+        launch(Dispatchers.Main) {
+            val sheds = withContext(Dispatchers.Default) {
                 val vmSheds = vmClient.getSheds(name)
 
                 if (vmSheds.isEmpty() and !timetable.isEmpty()) {
@@ -104,13 +104,13 @@ class ProviderProxy(context: Context? = null) {
     }
 
     private fun constructSegmentDepartures(stopSegments: Set<StopSegment>): Deferred<Map<String, List<Departure>>> {
-        return async {
+        return GlobalScope.async(Dispatchers.Default, CoroutineStart.DEFAULT, null, {
             if (timetable.isEmpty())
                 emptyMap()
             else {
                 timetable.getStopDeparturesBySegments(stopSegments)
             }
-        }
+        })
     }
 
     private fun filterDepartures(departures: Map<String, List<Departure>>): List<Departure> {
@@ -161,8 +161,8 @@ class ProviderProxy(context: Context? = null) {
     }
 
     fun fillStopSegment(stopSegment: StopSegment, callback: (StopSegment?) -> Unit) {
-        launch(UI) {
-            withContext(DefaultDispatcher) {
+        launch(Dispatchers.Main) {
+            withContext(Dispatchers.Default) {
                 callback(fillStopSegment(stopSegment))
             }
         }
@@ -179,8 +179,8 @@ class ProviderProxy(context: Context? = null) {
     }
 
     fun getStopName(stopCode: String, callback: (String?) -> Unit) {
-        launch(UI) {
-            withContext(DefaultDispatcher) {
+        launch(Dispatchers.Main) {
+            withContext(Dispatchers.Default) {
                 callback(getStopName(stopCode))
             }
         }
@@ -216,13 +216,13 @@ class ProviderProxy(context: Context? = null) {
 
         init {
             receiver.addOnVmListener(this@Request)
-            launch(UI) {
+            launch(Dispatchers.Main) {
                 cache = constructSegmentDepartures(segments)
             }
         }
 
         override fun onVm(vmDepartures: Set<Departure>?, plateId: Plate.ID?, stopCode: String, code: Int) {
-            launch(UI) {
+            launch(Dispatchers.Main) {
                 if ((plateId == null || vmDepartures == null) and (timetable.isEmpty())) {
                     listener.onDeparturesReady(emptyList(), null, code)
                     return@launch

+ 5 - 5
app/src/main/java/ml/adamsprogs/bimba/activities/AppCompatPreferenceActivity.java

@@ -3,11 +3,11 @@ package ml.adamsprogs.bimba.activities;
 import android.content.res.Configuration;
         import android.os.Bundle;
         import android.preference.PreferenceActivity;
-        import android.support.annotation.LayoutRes;
-        import android.support.annotation.Nullable;
-        import android.support.v7.app.ActionBar;
-        import android.support.v7.app.AppCompatDelegate;
-        import android.support.v7.widget.Toolbar;
+        import androidx.annotation.LayoutRes;
+        import androidx.annotation.Nullable;
+        import androidx.appcompat.app.ActionBar;
+        import androidx.appcompat.app.AppCompatDelegate;
+        import androidx.appcompat.widget.Toolbar;
         import android.view.MenuInflater;
         import android.view.View;
         import android.view.ViewGroup;

+ 16 - 17
app/src/main/java/ml/adamsprogs/bimba/activities/DashActivity.kt

@@ -5,10 +5,7 @@ import android.app.Activity
 import android.content.*
 import android.os.*
 import android.preference.PreferenceManager.getDefaultSharedPreferences
-import android.support.design.widget.*
-import android.support.v4.widget.*
-import android.support.v7.widget.*
-import android.support.v7.app.*
+import androidx.appcompat.app.*
 import android.text.Html
 import android.view.*
 import android.view.inputmethod.InputMethodManager
@@ -26,6 +23,8 @@ import ml.adamsprogs.bimba.collections.*
 
 import com.arlib.floatingsearchview.FloatingSearchView
 import com.arlib.floatingsearchview.suggestions.model.SearchSuggestion
+import com.google.android.material.navigation.NavigationView
+import com.google.android.material.snackbar.Snackbar
 
 //todo<p:1> searchView integration
 class DashActivity : AppCompatActivity(), MessageReceiver.OnTimetableDownloadListener,
@@ -35,9 +34,9 @@ class DashActivity : AppCompatActivity(), MessageReceiver.OnTimetableDownloadLis
     private val receiver = MessageReceiver.getMessageReceiver()
     private lateinit var timetable: Timetable
     private var suggestions: List<GtfsSuggestion>? = null
-    private lateinit var drawerLayout: DrawerLayout
+    private lateinit var drawerLayout: androidx.drawerlayout.widget.DrawerLayout
     private lateinit var drawerView: NavigationView
-    lateinit var favouritesList: RecyclerView
+    lateinit var favouritesList: androidx.recyclerview.widget.RecyclerView
     lateinit var searchView: FloatingSearchView
     private lateinit var favourites: FavouriteStorage
     private lateinit var adapter: FavouritesAdapter
@@ -146,7 +145,7 @@ class DashActivity : AppCompatActivity(), MessageReceiver.OnTimetableDownloadLis
             iconView.setImageDrawable(getDrawable(suggestion.getIcon(), context))
         }
 
-        searchView.attachNavigationDrawerToMenuButton(drawer_layout as DrawerLayout)
+        //searchView.attachNavigationDrawerToMenuButton(drawer_layout as androidx.drawerlayout.widget.DrawerLayout)
     }
 
     override fun onRestart() {
@@ -243,16 +242,16 @@ class DashActivity : AppCompatActivity(), MessageReceiver.OnTimetableDownloadLis
         favourites.forEach {
             it.subscribeForDepartures(this, this)
         }
-        val layoutManager = LinearLayoutManager(context)
+        val layoutManager = androidx.recyclerview.widget.LinearLayoutManager(context)
         favouritesList = favourites_list
         adapter = FavouritesAdapter(context, favourites, this, this)
         favouritesList.adapter = adapter
-        favouritesList.itemAnimator = DefaultItemAnimator()
+        favouritesList.itemAnimator = androidx.recyclerview.widget.DefaultItemAnimator()
         favouritesList.layoutManager = layoutManager
     }
 
     override fun onDeparturesReady(departures: List<Departure>, plateId: Plate.ID?, code: Int) {
-        favouritesList.adapter.notifyDataSetChanged()
+        favouritesList.adapter!!.notifyDataSetChanged()
         showError(drawer_layout, code, this)
     }
 
@@ -288,7 +287,7 @@ class DashActivity : AppCompatActivity(), MessageReceiver.OnTimetableDownloadLis
     override fun onResume() {
         super.onResume()
         adapter.favourites = favourites
-        favouritesList.adapter.notifyDataSetChanged()
+        favouritesList.adapter!!.notifyDataSetChanged()
     }
 
     override fun onDestroy() {
@@ -321,18 +320,18 @@ class DashActivity : AppCompatActivity(), MessageReceiver.OnTimetableDownloadLis
         return true
     }
 
-    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) {
+    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
         if (requestCode == REQUEST_EDIT_FAVOURITE) {
             if (resultCode == Activity.RESULT_OK) {
-                val name = data.getStringExtra(EditFavouriteActivity.EXTRA_NEW_NAME)
+                val name = data!!.getStringExtra(EditFavouriteActivity.EXTRA_NEW_NAME)
                 val positionBefore = data.getIntExtra(EditFavouriteActivity.EXTRA_POSITION_BEFORE, -1)
                 //adapter.favourites = favourites.favouritesList
                 if (positionBefore == -1)
-                    favouritesList.adapter.notifyDataSetChanged()
+                    favouritesList.adapter!!.notifyDataSetChanged()
                 else {
                     val positionAfter = favourites.indexOf(name)
-                    favouritesList.adapter.notifyItemChanged(positionBefore)
-                    favouritesList.adapter.notifyItemMoved(positionBefore, positionAfter)
+                    favouritesList.adapter!!.notifyItemChanged(positionBefore)
+                    favouritesList.adapter!!.notifyItemMoved(positionBefore, positionAfter)
                 }
                 adapter[name]?.let {
                     it.unsubscribeFromDepartures(context)
@@ -345,7 +344,7 @@ class DashActivity : AppCompatActivity(), MessageReceiver.OnTimetableDownloadLis
     override fun delete(name: String): Boolean {
         favourites.delete(name)
         //adapter.favourites = favourites.favouritesList
-        favouritesList.adapter.notifyItemRemoved(favourites.indexOf(name))
+        favouritesList.adapter!!.notifyItemRemoved(favourites.indexOf(name))
         return true
     }
 

+ 5 - 5
app/src/main/java/ml/adamsprogs/bimba/activities/EditFavouriteActivity.kt

@@ -1,9 +1,9 @@
 package ml.adamsprogs.bimba.activities
 
-import android.support.v7.app.AppCompatActivity
+import androidx.appcompat.app.AppCompatActivity
 import android.os.Bundle
-import android.support.v7.widget.DividerItemDecoration
-import android.support.v7.widget.LinearLayoutManager
+import androidx.recyclerview.widget.DividerItemDecoration
+import androidx.recyclerview.widget.LinearLayoutManager
 import android.widget.EditText
 import ml.adamsprogs.bimba.R
 import ml.adamsprogs.bimba.models.Favourite
@@ -38,9 +38,9 @@ class EditFavouriteActivity : AppCompatActivity() {
         favourites = FavouriteStorage.getFavouriteStorage(this)
 
         val recyclerView = favourite_edit_list
-        val layoutManager = LinearLayoutManager(this)
+        val layoutManager = androidx.recyclerview.widget.LinearLayoutManager(this)
         recyclerView!!.layoutManager = layoutManager
-        val dividerItemDecoration = DividerItemDecoration(this, layoutManager.orientation)
+        val dividerItemDecoration = androidx.recyclerview.widget.DividerItemDecoration(this, layoutManager.orientation)
         recyclerView.addItemDecoration(dividerItemDecoration)
         recyclerView.adapter = FavouriteEditRowAdapter(favourite!!, favourite_edit_loading, favourite_edit_list)
         setSupportActionBar(toolbar)

+ 1 - 1
app/src/main/java/ml/adamsprogs/bimba/activities/HelpActivity.kt

@@ -1,7 +1,7 @@
 package ml.adamsprogs.bimba.activities
 
 import android.os.Bundle
-import android.support.v7.app.AppCompatActivity
+import androidx.appcompat.app.AppCompatActivity
 import kotlinx.android.synthetic.main.activity_help.*
 import ml.adamsprogs.bimba.R
 

+ 6 - 6
app/src/main/java/ml/adamsprogs/bimba/activities/LineSpecifyActivity.kt

@@ -1,9 +1,9 @@
 package ml.adamsprogs.bimba.activities
 
-import android.support.design.widget.TabLayout
-import android.support.v7.app.AppCompatActivity
+import com.google.android.material.tabs.TabLayout
+import androidx.appcompat.app.AppCompatActivity
 
-import android.support.v4.app.*
+import androidx.core.app.*
 import android.os.Bundle
 import android.view.*
 
@@ -44,16 +44,16 @@ class LineSpecifyActivity : AppCompatActivity() {
         tabs.addOnTabSelectedListener(TabLayout.ViewPagerOnTabSelectedListener(container))
     }
 
-    inner class SectionsPagerAdapter(fm: FragmentManager, private val graphs: Array<Timetable.TripGraph>) : FragmentPagerAdapter(fm) {
+    inner class SectionsPagerAdapter(fm: androidx.fragment.app.FragmentManager, private val graphs: Array<Timetable.TripGraph>) : androidx.fragment.app.FragmentPagerAdapter(fm) {
 
-        override fun getItem(position: Int): Fragment {
+        override fun getItem(position: Int): androidx.fragment.app.Fragment {
             return PlaceholderFragment.newInstance(position + 1, graphs[position])
         }
 
         override fun getCount() = 2
     }
 
-    class PlaceholderFragment : Fragment() {
+    class PlaceholderFragment : androidx.fragment.app.Fragment() {
 
         override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
                                   savedInstanceState: Bundle?): View? {

+ 0 - 0
app/src/main/java/ml/adamsprogs/bimba/activities/SettingsActivity.kt


Some files were not shown because too many files changed in this diff