Bimba.git

commit d35a71d631f834a40a529a5cceeb0c7e30be0739

Author: Adam Pioterek <adam.pioterek@protonmail.ch>

timetable "valid since" in drawer

 app/src/main/java/ml/adamsprogs/bimba/MessageReceiver.kt | 4 
 app/src/main/java/ml/adamsprogs/bimba/TimetableDownloader.kt | 7 
 app/src/main/java/ml/adamsprogs/bimba/VmClient.kt | 7 
 app/src/main/java/ml/adamsprogs/bimba/activities/DashActivity.kt | 5 
 app/src/main/java/ml/adamsprogs/bimba/models/Favourite.kt | 15 
 app/src/main/java/ml/adamsprogs/bimba/models/FavouriteStorage.kt | 2 
 app/src/main/java/ml/adamsprogs/bimba/models/FavouritesAdapter.kt | 2 
 app/src/main/java/ml/adamsprogs/bimba/models/Timetable.kt | 8 
 app/src/main/res/menu/menu_drawer.xml | 7 
 app/src/main/res/values-pl/strings.xml | 1 
 app/src/main/res/values/strings.xml | 1 
 build.gradle | 4 
 gradle/wrapper/gradle-wrapper.properties | 4 


diff --git a/app/src/main/java/ml/adamsprogs/bimba/MessageReceiver.kt b/app/src/main/java/ml/adamsprogs/bimba/MessageReceiver.kt
index 28a62879797264439b8d0a2e62cdf70f76d05ea1..402e0b565b06a8eb16794fd3f7f6533e5cff5a00 100644
--- a/app/src/main/java/ml/adamsprogs/bimba/MessageReceiver.kt
+++ b/app/src/main/java/ml/adamsprogs/bimba/MessageReceiver.kt
@@ -3,7 +3,6 @@
 import android.content.BroadcastReceiver
 import android.content.Context
 import android.content.Intent
-import android.util.Log
 import ml.adamsprogs.bimba.models.Departure
 
 class MessageReceiver : BroadcastReceiver() {
@@ -11,7 +10,6 @@     private val onTimetableDownloadListeners: HashSet = HashSet()
     private val onVmListeners: HashSet<OnVmListener> = HashSet()
 
     override fun onReceive(context: Context?, intent: Intent?) {
-        Log.i("Recv", "${intent?.action}")
         if (intent?.action == TimetableDownloader.ACTION_DOWNLOADED) {
             val result = intent.getStringExtra(TimetableDownloader.EXTRA_RESULT)
             for (listener in onTimetableDownloadListeners) {
@@ -21,14 +19,12 @@         }
         if (intent?.action == VmClient.ACTION_DEPARTURES_CREATED) {
             val departures = intent.getStringArrayListExtra(VmClient.EXTRA_DEPARTURES).map { Departure.fromString(it) } as ArrayList<Departure>
             val requester = intent.getStringExtra(VmClient.EXTRA_REQUESTER)
-            Log.i("VmRecv", "Got Vm for $requester")
             for (listener in onVmListeners) {
                 listener.onVm(departures, requester)
             }
         }
         if (intent?.action == VmClient.ACTION_NO_DEPARTURES) {
             val requester = intent.getStringExtra(VmClient.EXTRA_REQUESTER)
-            Log.i("VmRecv", "Got null for $requester")
             for (listener in onVmListeners) {
                 listener.onVm(null, requester)
             }




diff --git a/app/src/main/java/ml/adamsprogs/bimba/TimetableDownloader.kt b/app/src/main/java/ml/adamsprogs/bimba/TimetableDownloader.kt
index 9912fb6a5c6b5f7ebe188773dba983abccc33370..18dc9b9000c129195152a33b65473644bf4b402c 100644
--- a/app/src/main/java/ml/adamsprogs/bimba/TimetableDownloader.kt
+++ b/app/src/main/java/ml/adamsprogs/bimba/TimetableDownloader.kt
@@ -10,7 +10,6 @@ import org.tukaani.xz.XZInputStream
 import java.io.*
 import java.security.MessageDigest
 import kotlin.experimental.and
-import android.util.Log
 import android.app.NotificationManager
 import ml.adamsprogs.bimba.models.Timetable
 
@@ -44,7 +43,6 @@             if (httpCon.responseCode != HttpURLConnection.HTTP_OK){
                 sendResult(RESULT_NO_CONNECTIVITY)
                 return
             }
-            Log.i("Downloader", "Got metadata")
             val reader = BufferedReader(InputStreamReader(httpCon.inputStream))
             val lastModified = reader.readLine()
             val checksum = reader.readLine()
@@ -60,7 +58,6 @@             if (lastModified <= currentLastModified && !intent.getBooleanExtra(EXTRA_FORCE, false)) {
                 sendResult(RESULT_UP_TO_DATE)
                 return
             }
-            Log.i("Downloader", "timetable is newer ($lastModified > $currentLastModified)")
 
             notify(0)
 
@@ -70,11 +67,9 @@             if (httpCon.responseCode != HttpURLConnection.HTTP_OK){
                 sendResult(RESULT_NO_CONNECTIVITY)
                 return
             }
-            Log.i("Downloader", "connected to db")
             val xzIn = XZInputStream(httpCon.inputStream)
             val file = File(this.filesDir, "new_timetable.db")
             if (copyInputStreamToFile(xzIn, file, checksum)) {
-                Log.i("Downloader", "downloaded")
                 val oldFile = File(this.filesDir, "timetable.db")
                 oldFile.delete()
                 file.renameTo(oldFile)
@@ -83,7 +78,6 @@                 prefsEditor.putString("timetableLastModified", lastModified)
                 prefsEditor.apply()
                 sendResult(RESULT_DOWNLOADED)
             } else {
-                Log.i("Downloader", "downloaded but is wrong")
                 sendResult(RESULT_VALIDITY_FAILED)
             }
 
@@ -141,7 +135,6 @@             val digest = md.digest()
             for (i in 0 until digest.size) {
                 hex += Integer.toString((digest[i] and 0xff.toByte()) + 0x100, 16).padStart(3, '0').substring(1)
             }
-            Log.i("Downloader", "checksum is $checksum, and hex is $hex")
             return checksum == hex
         }
     }




diff --git a/app/src/main/java/ml/adamsprogs/bimba/VmClient.kt b/app/src/main/java/ml/adamsprogs/bimba/VmClient.kt
index 7a3dadf8b864f53b49addeddb997df0bd9c49cfc..ea28e94f6692274d70fe5d5fd937d96d63d2b728 100644
--- a/app/src/main/java/ml/adamsprogs/bimba/VmClient.kt
+++ b/app/src/main/java/ml/adamsprogs/bimba/VmClient.kt
@@ -2,7 +2,6 @@ package ml.adamsprogs.bimba
 
 import android.app.IntentService
 import android.content.Intent
-import android.util.Log
 import ml.adamsprogs.bimba.models.*
 import okhttp3.*
 import com.google.gson.Gson
@@ -24,10 +23,7 @@     override fun onHandleIntent(intent: Intent?) {
         if (intent != null) {
             val requester = intent.getStringExtra(EXTRA_REQUESTER)
 
-            Log.i("VMClient", "starting vm for $requester")
-
             if (!NetworkStateReceiver.isNetworkAvailable(this)) {
-                Log.i("VMClient", "offline")
                 sendNullResult(requester)
                 return
             }
@@ -49,7 +45,6 @@             val responseBody: String?
             try {
                 responseBody = client.newCall(request).execute().body()?.string()
             } catch(e: IOException) {
-                Log.i("VMClient", "IO Err")
                 sendNullResult(requester)
                 return
             }
@@ -72,8 +67,6 @@                             departureDay != todayDay, t["onStopPoint"] as Boolean)
                     departuresToday.add(departure)
                 }
             }
-            Log.i("VMClient", "Sending")
-            departuresToday.forEach {Log.i("VMClient", "send: $it")}
             if (departuresToday.isEmpty())
                 sendNullResult(requester)
             else




diff --git a/app/src/main/java/ml/adamsprogs/bimba/activities/DashActivity.kt b/app/src/main/java/ml/adamsprogs/bimba/activities/DashActivity.kt
index 5322e013f4698048f772d16695b019ff7800c9ee..2361c656a482ae8af9e25fba925adebe39b5e4b9 100644
--- a/app/src/main/java/ml/adamsprogs/bimba/activities/DashActivity.kt
+++ b/app/src/main/java/ml/adamsprogs/bimba/activities/DashActivity.kt
@@ -13,7 +13,6 @@ import android.app.Activity
 import android.support.design.widget.NavigationView
 import android.support.v4.widget.*
 import android.support.v7.widget.*
-import android.util.Log
 import android.view.*
 import android.view.inputmethod.InputMethodManager
 import ml.adamsprogs.bimba.*
@@ -70,6 +69,9 @@             }
             drawerLayout.closeDrawer(drawer)
             super.onOptionsItemSelected(item)
         }
+
+        val validity = timetable.getValidity()
+        drawer.menu.findItem(R.id.drawer_validity).title = getString(R.string.valid_through, validity)
 
         searchView = findViewById(R.id.search_view) as FloatingSearchView
 
@@ -242,7 +244,6 @@         return result
     }
 
     override fun onTimetableDownload(result: String?) {
-        Log.i("Refresh", "downloaded: $result")
         val message: String = when (result) {
             TimetableDownloader.RESULT_DOWNLOADED -> getString(R.string.timetable_downloaded)
             TimetableDownloader.RESULT_NO_CONNECTIVITY -> getString(R.string.no_connectivity)




diff --git a/app/src/main/java/ml/adamsprogs/bimba/models/Favourite.kt b/app/src/main/java/ml/adamsprogs/bimba/models/Favourite.kt
index 357e0ef9d4721ae8a4c5ab3016501a59fb0f8c91..9b9d7525391486c5d55b953c1bb6d8e4d011a589 100644
--- a/app/src/main/java/ml/adamsprogs/bimba/models/Favourite.kt
+++ b/app/src/main/java/ml/adamsprogs/bimba/models/Favourite.kt
@@ -2,7 +2,6 @@ package ml.adamsprogs.bimba.models
 
 import android.os.Parcel
 import android.os.Parcelable
-import android.util.Log
 import ml.adamsprogs.bimba.MessageReceiver
 import ml.adamsprogs.bimba.getMode
 import java.util.*
@@ -17,13 +16,10 @@             requester.split(";")[1]
         } catch (e: IndexOutOfBoundsException) {
             ""
         }
-        Log.i("VM", "got vm for $requesterName and my name is $name")
         if (vmDepartures != null && requesterName == name) {
-            Log.i("VM", "so I’m adding")
             vmDeparturesMap[requesterTimetable] = vmDepartures
             this.vmDepartures = vmDeparturesMap.flatMap { it.value } as ArrayList<Departure>
         }
-        Log.i("VM", "so I’m not adding")
         filterVmDepartures()
     }
 
@@ -76,14 +72,9 @@             filterVmDepartures()
             if (timetables.isEmpty() && vmDepartures.isEmpty())
                 return null
 
-            Log.i("FAV", "vmDeps is empty? ${vmDepartures.isEmpty()} so")
             if (vmDepartures.isNotEmpty()) {
-                val d = vmDepartures.minBy { it.timeTill() }
-                Log.i("FAV", "using vm: ${d.toString()}")
-                return d
+                return vmDepartures.minBy { it.timeTill() }
             }
-
-            Log.i("FAV", "using offline")
 
             val twoDayDepartures = ArrayList<Departure>()
             val today = Calendar.getInstance().getMode()
@@ -125,15 +116,11 @@                 .forEach { this.vmDepartures.remove(it) }
     }
 
     fun delete(stop: String, line: String) {
-        Log.i("ROW", "Favourite deleting $stop, $line")
         timetables.remove(timetables.find { it[TAG_STOP] == stop && it[TAG_LINE] == line })
-        Log.i("ROW", timetables.toString())
     }
 
     fun registerOnVm(receiver: MessageReceiver) {
-        Log.i("FAV", "Shall register? ${!isRegisteredOnVmListener}")
         if (!isRegisteredOnVmListener) {
-            Log.i("FAV", "registering")
             receiver.addOnVmListener(this)
             isRegisteredOnVmListener = true
         }




diff --git a/app/src/main/java/ml/adamsprogs/bimba/models/FavouriteStorage.kt b/app/src/main/java/ml/adamsprogs/bimba/models/FavouriteStorage.kt
index e66d81c93a955e206d16cf36ac0a98f8a49d5794..8ba9f57fafb2e926b510afa6bf3a56824c25f0d3 100644
--- a/app/src/main/java/ml/adamsprogs/bimba/models/FavouriteStorage.kt
+++ b/app/src/main/java/ml/adamsprogs/bimba/models/FavouriteStorage.kt
@@ -2,7 +2,6 @@ package ml.adamsprogs.bimba.models
 
 import android.content.Context
 import android.content.SharedPreferences
-import android.util.Log
 import com.google.gson.Gson
 import com.google.gson.JsonArray
 import com.google.gson.JsonObject
@@ -87,7 +86,6 @@             }
             rootObject.add(name, timetables)
         }
         val favouritesString = Gson().toJson(rootObject)
-        Log.i("FAB", favouritesString)
         val editor = preferences.edit()
         editor.putString("favourites", favouritesString)
         editor.apply()




diff --git a/app/src/main/java/ml/adamsprogs/bimba/models/FavouritesAdapter.kt b/app/src/main/java/ml/adamsprogs/bimba/models/FavouritesAdapter.kt
index fdc2ca495df514048bcd8dfc08169088b7bee2bb..62506b751f954db068782aa7604f17c0be9993c0 100644
--- a/app/src/main/java/ml/adamsprogs/bimba/models/FavouritesAdapter.kt
+++ b/app/src/main/java/ml/adamsprogs/bimba/models/FavouritesAdapter.kt
@@ -6,7 +6,6 @@ import android.os.Build
 import android.support.v4.content.res.ResourcesCompat
 import android.support.v7.widget.*
 import android.support.v7.widget.PopupMenu
-import android.util.Log
 import android.view.*
 import android.widget.*
 import ml.adamsprogs.bimba.R
@@ -59,7 +58,6 @@             }
             val nextDepartureText: String
             val nextDepartureLineText: String
             if (nextDeparture != null) {
-                Log.i("NEXT DEP", nextDeparture.toString())
                 val interval = nextDeparture.timeTill()
                 if (interval < 0)
                     return@thread




diff --git a/app/src/main/java/ml/adamsprogs/bimba/models/Timetable.kt b/app/src/main/java/ml/adamsprogs/bimba/models/Timetable.kt
index 9f38d413c8d0eada814603ae307b0fb6e4c3e5da..374e225e0466b2c3aa6c319ccc10b7f857ec2062 100644
--- a/app/src/main/java/ml/adamsprogs/bimba/models/Timetable.kt
+++ b/app/src/main/java/ml/adamsprogs/bimba/models/Timetable.kt
@@ -183,4 +183,12 @@             return true
         }
         return false
     }
+
+    fun getValidity(): String {
+        val cursor = db.rawQuery("select value from metadata where key = 'validFrom'", null)
+        cursor.moveToNext()
+        val validity = cursor.getString(0)
+        cursor.close()
+        return "%s-%s-%s".format(validity.substring(0..3), validity.substring(4..5), validity.substring(6..7))
+    }
 }




diff --git a/app/src/main/res/menu/menu_drawer.xml b/app/src/main/res/menu/menu_drawer.xml
index 2ecf126df6b27d3b53eda5c5e30360d1faa8a61d..34ef96f91038985d8a1983e9d15b9f6b83bb497d 100644
--- a/app/src/main/res/menu/menu_drawer.xml
+++ b/app/src/main/res/menu/menu_drawer.xml
@@ -16,4 +16,11 @@             android:id="@+id/drawer_help"
             android:icon="@drawable/ic_help"
             android:title="@string/help" />
     </group>
+    <group
+        android:id="@+id/drawer_group_validity"
+        android:enabled="false">
+        <item
+            android:id="@+id/drawer_validity"
+            android:title="" />
+    </group>
 </menu>
\ No newline at end of file




diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 33c0b0bc4be7d5185ece9d532f7809bdca720bea..e4a0b7944507d18118fb28818f53b80f0aea2cb2 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -66,4 +66,5 @@         "it’s Tuesday, it will be on ‘workdays’ tab).\n"
         "Be sure to consult the messages on\nhttps://www.ztm.poznan.pl/en.\n\n"
     </string>
     <string name="departure_row_getting_departures">Getting departures…</string>
+    <string name="valid_through">Valid since: %1$s</string>
 </resources>




diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml
index 3d08457d03c0ac3c8ebe6fcebc503caa94e9697f..29b1181d5657465eb3c04c58b000d7f0903fa0f1 100644
--- a/app/src/main/res/values-pl/strings.xml
+++ b/app/src/main/res/values-pl/strings.xml
@@ -56,4 +56,5 @@         "zakładce (jeśli jest wtorek, to w „dni robocze”).\n"
         "Pamiętaj, aby sprawdzić aktualności na\nhttps://www.ztm.poznan.pl.\n\n"
     </string>
     <string name="departure_row_getting_departures">Zbieranie odjazdów…</string>
+    <string name="valid_through">Ważny od %1$s</string>
 </resources>
\ No newline at end of file




diff --git a/build.gradle b/build.gradle
index 8bb20f456380ed224c6055ed3de7c3076557fe5b..48ce329c8f4650a568c0c0a885aa64d190aa2033 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,14 +1,14 @@
 // Top-level build file where you can add configuration options common to all sub-projects/modules.
 
 buildscript {
-    ext.kotlin_version = '1.1.3-2'
+    ext.kotlin_version = '1.1.4-2'
     repositories {
         jcenter()
         maven { url 'https://maven.google.com' }
         google()
     }
     dependencies {
-        classpath 'com.android.tools.build:gradle:3.0.0-beta2'
+        classpath 'com.android.tools.build:gradle:3.0.0-beta3'
         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 e32fbb2e5966d81de9c87d2031502fdcf69e38a7..2b67fb4ff0ade262f685a5d092a5d1ff26f8e4c2 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
-#Tue Aug 08 15:29:42 CEST 2017
+#Tue Aug 29 11:31:16 CEST 2017
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
-distributionUrl=https://services.gradle.org/distributions/gradle-4.1-rc-1-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip