Bimba.git

commit 5f65211659d4453a6b2314398d88d75f90823118

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

favourite fab hidden, searchbar hamburger hidden

 app/src/main/java/ml/adamsprogs/bimba/activities/StopActivity.kt | 52 +
 app/src/main/java/ml/adamsprogs/bimba/models/StopSuggestion.kt | 3 
 app/src/main/java/ml/adamsprogs/bimba/models/Timetable.kt | 14 
 app/src/main/res/drawable/logo.xml | 40 
 app/src/main/res/drawable/logo_96.xml | 40 
 app/src/main/res/layout/activity_main.xml | 2 
 app/src/main/res/layout/activity_stop.xml | 8 
 app/src/main/res/values-pl/strings.xml | 1 
 app/src/main/res/values/strings.xml | 1 
 build.gradle | 2 


diff --git a/app/src/main/java/ml/adamsprogs/bimba/activities/StopActivity.kt b/app/src/main/java/ml/adamsprogs/bimba/activities/StopActivity.kt
index ba9207ae0256dc52b97fcb754903f41bd59f5093..33cce2f47bec51a56085f45083dc0b8fabe48452 100644
--- a/app/src/main/java/ml/adamsprogs/bimba/activities/StopActivity.kt
+++ b/app/src/main/java/ml/adamsprogs/bimba/activities/StopActivity.kt
@@ -1,26 +1,21 @@
 package ml.adamsprogs.bimba.activities
 
-import android.content.Intent
-import android.content.IntentFilter
+import java.util.*
+import kotlin.collections.*
+
+import android.content.*
+import android.os.Bundle
+import android.view.*
 import android.support.design.widget.*
 import android.support.v7.app.AppCompatActivity
-import android.support.v7.widget.Toolbar
-
+import android.support.v7.widget.*
 import android.support.v4.app.*
-import android.support.v4.view.ViewPager
-import android.os.Bundle
+import android.support.v4.view.*
 import android.support.v4.content.res.ResourcesCompat
-import android.support.v4.view.PagerAdapter
-import android.view.*
+import com.google.gson.Gson
 
 import ml.adamsprogs.bimba.models.*
-import android.support.v7.widget.*
-import ml.adamsprogs.bimba.MessageReceiver
-import ml.adamsprogs.bimba.R
-import ml.adamsprogs.bimba.VmClient
-import java.util.*
-import kotlin.collections.ArrayList
-import kotlin.collections.HashMap
+import ml.adamsprogs.bimba.*
 
 
 class StopActivity : AppCompatActivity(), MessageReceiver.OnVmListener {
@@ -34,9 +29,10 @@     private lateinit var timetable: Timetable
     private val today = Calendar.getInstance()
     private lateinit var tabLayout: TabLayout
     private var timer = Timer()
-    private lateinit var timerTask:TimerTask
+    private lateinit var timerTask: TimerTask
     private val context = this
-    val receiver = MessageReceiver()
+    private val receiver = MessageReceiver()
+    private lateinit var sharedPreferences: SharedPreferences
 
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
@@ -46,6 +42,8 @@         stopSymbol = intent.getStringExtra("stopSymbol")
 
         val toolbar = findViewById(R.id.toolbar) as Toolbar
         setSupportActionBar(toolbar)
+
+        sharedPreferences = this.getSharedPreferences("ml.adamsprogs.bimba.prefs", Context.MODE_PRIVATE)
 
         createTimerTask()
 
@@ -68,10 +66,22 @@
         scheduleRefresh()
 
         val fab = findViewById(R.id.fab) as FloatingActionButton
-        fab.setOnClickListener { view ->
-            Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
-                    .setAction("Action", null).show()
-            //todo favourites
+        fab.setOnClickListener {
+            var favouritesString = sharedPreferences.getString("favourites", "{}")
+            @Suppress("UNCHECKED_CAST")
+            val favourites = Gson().fromJson(favouritesString, HashMap::class.java) as HashMap<String, ArrayList<HashMap<String,String>>>
+            if (favourites[stopSymbol] == null) {
+                val items = ArrayList<HashMap<String, String>>()
+                timetable.getLines(stopId)?.forEach {items.add(mapOf("stop" to stopId, "line" to it) as HashMap<String, String>)}
+                favourites[stopSymbol] = items
+                favouritesString = Gson().toJson(favourites)
+                val editor = sharedPreferences.edit()
+                editor.putString("favourites", favouritesString)
+                editor.apply()
+            } else {
+                Snackbar.make(it, getString(R.string.stop_already_fav), Snackbar.LENGTH_LONG)
+                        .setAction("Action", null).show()
+            }
         }
     }
 




diff --git a/app/src/main/java/ml/adamsprogs/bimba/models/StopSuggestion.kt b/app/src/main/java/ml/adamsprogs/bimba/models/StopSuggestion.kt
index 17575f35683703f5558f3aac2435b66982afb190..78a96302b0a4b9131a086c8b47e2a1dffad29263 100644
--- a/app/src/main/java/ml/adamsprogs/bimba/models/StopSuggestion.kt
+++ b/app/src/main/java/ml/adamsprogs/bimba/models/StopSuggestion.kt
@@ -6,11 +6,12 @@ import com.arlib.floatingsearchview.suggestions.model.SearchSuggestion
 
 class StopSuggestion(text: String, val id: String, val symbol: String) : SearchSuggestion {
     private val body: String = text
+    val CONTENTS_SUGGESTION = 0x0105
 
     constructor(parcel: Parcel) : this(parcel.readString(), parcel.readString(), parcel.readString())
 
     override fun describeContents(): Int {
-        TODO("not implemented")
+        return CONTENTS_SUGGESTION
     }
 
     override fun writeToParcel(dest: Parcel?, flags: Int) {




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 378470947c073f310921580c205969b2f9dc958e..29a461fe6601c42513e9ddea85ca0febb445e3de 100644
--- a/app/src/main/java/ml/adamsprogs/bimba/models/Timetable.kt
+++ b/app/src/main/java/ml/adamsprogs/bimba/models/Timetable.kt
@@ -87,6 +87,20 @@         cursor.close()
         return departures
     }
 
+    fun getLines(stopId: String?): ArrayList<String>? {
+        if (db == null)
+            return null
+        val cursor = db!!.rawQuery(" select distinct line_id from timetables join " +
+                "stops on(stop_id = stops.id) where stops.id = ?;",
+                listOf(stopId).toTypedArray())
+        val lines = ArrayList<String>()
+        while (cursor.moveToNext()) {
+            lines.add(cursor.getString(1))
+        }
+        cursor.close()
+        return lines
+    }
+
     fun close() {
         db?.close()
     }




diff --git a/app/src/main/res/drawable/logo.xml b/app/src/main/res/drawable/logo.xml
index b6e67b51959159b1bd4c38e9dab4cd2e2b568ab8..78cc2b9c53c070fceb97653bf55f8227f6635069 100644
--- a/app/src/main/res/drawable/logo.xml
+++ b/app/src/main/res/drawable/logo.xml
@@ -1,24 +1,18 @@
-<vector android:height="24dp" android:viewportHeight="512.0"
-    android:viewportWidth="512.0" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
-    <path android:fillAlpha="1" android:fillColor="#17ff00"
-        android:pathData="M0.1,0.1h511.7v511.7h-511.7z"
-        android:strokeAlpha="0" android:strokeColor="#ffffff" android:strokeWidth="0.26262632"/>
-    <path android:fillAlpha="1" android:fillColor="#ffff00"
-        android:pathData="M257.1,53.7m-40.6,0a40.6,40.6 49.3,1 1,81.3 0a40.6,40.6 49.3,1 1,-81.3 0"
-        android:strokeAlpha="0" android:strokeColor="#ffffff" android:strokeWidth="0.26458332"/>
-    <path android:fillAlpha="1" android:fillColor="#ffff00"
-        android:pathData="M262.9,450.9m-40.6,0a40.6,40.6 105.4,1 1,81.3 0a40.6,40.6 0,1 1,-81.3 0"
-        android:strokeAlpha="0" android:strokeColor="#ffffff" android:strokeWidth="0.26458332"/>
-    <path android:fillAlpha="1" android:fillColor="#ffff00"
-        android:pathData="M47.4,256.3l14.2,-14.2l211.1,211.1l-14.2,14.2z"
-        android:strokeAlpha="0" android:strokeColor="#ffffff" android:strokeWidth="0.08697488"/>
-    <path android:fillAlpha="1" android:fillColor="#ffff00"
-        android:pathData="M258.5,45.1l14.2,14.2l-211.1,211.1l-14.2,-14.2z"
-        android:strokeAlpha="0" android:strokeColor="#ffffff" android:strokeWidth="0.08697488"/>
-    <path android:fillAlpha="1" android:fillColor="#ffff00"
-        android:pathData="M469.6,256.3l-14.2,14.2l-211.1,-211.1l14.2,-14.2z"
-        android:strokeAlpha="0" android:strokeColor="#ffffff" android:strokeWidth="0.08697488"/>
-    <path android:fillAlpha="1" android:fillColor="#ffff00"
-        android:pathData="M258.5,467.4l-14.2,-14.2l211.1,-211.1l14.2,14.2z"
-        android:strokeAlpha="0" android:strokeColor="#ffffff" android:strokeWidth="0.08697488"/>
+<vector android:height="48dp" android:viewportHeight="200.0"
+    android:viewportWidth="200.0" android:width="48dp" xmlns:android="http://schemas.android.com/apk/res/android">
+    <path android:fillAlpha="1" android:fillColor="#087f23"
+        android:pathData="M16,4L184,4A12,12 0,0 1,196 16L196,184A12,12 0,0 1,184 196L16,196A12,12 0,0 1,4 184L4,16A12,12 0,0 1,16 4z"
+        android:strokeAlpha="1" android:strokeColor="#00000000" android:strokeWidth="2.96499991"/>
+    <path android:fillAlpha="1" android:fillColor="#ffeb3b"
+        android:pathData="m90.79,14.19 l-1.44,0.12 1,11.88L87.22,26.19l0,3.33l1.35,0l0,3.04l3.92,0L14.39,109.11a3.73,3.73 122.85,0 0,-1.33 -0.25,3.73 3.73,118.9 0,0 -3.73,3.73 3.73,3.73 118.9,0 0,3.73 3.73,3.73 3.73,126.47 0,0 1.19,-0.2L77.96,174.18l-4.47,0l0,6.36l1.66,0l0,6.46l45.65,0l0,-6.46l1.71,0l0,-6.36l-2.63,0L182.57,117.04a3.73,3.73 53.96,0 0,0.37 0.02,3.73 3.73,0 0,0 3.73,-3.73 3.73,3.73 60.36,0 0,-3.73 -3.73,3.73 3.73,82.52 0,0 -1.63,0.38L102.3,32.55l5.41,0L107.72,29.51l1.06,0L108.78,26.19l-3.2,0l0.73,-11.66 -1.44,-0.09 -0.73,11.75l-12.32,0zM97.02,32.55l0.75,0L179.32,112.49a3.73,3.73 53.96,0 0,-0.1 0.85,3.73 3.73,64.83 0,0 0.56,1.96L115.17,174.18L82.67,174.18L16.54,113.91a3.73,3.73 122.85,0 0,0.24 -1.32,3.73 3.73,0 0,0 -0.2,-1.19z"
+        android:strokeAlpha="1" android:strokeColor="#00000000" android:strokeWidth="11.20629883"/>
+    <path android:fillAlpha="0.2" android:fillColor="#ffffff"
+        android:pathData="M15.91,3.9C9.26,3.9 3.9,9.25 3.9,15.9L3.9,20C3.9,13.35 9.26,8 15.91,8L184.09,8C190.74,8 196.1,13.35 196.1,20L196.1,15.9C196.1,9.25 190.74,3.9 184.09,3.9L15.91,3.9z"
+        android:strokeAlpha="1" android:strokeColor="#00000000" android:strokeWidth="11.21213341"/>
+    <path android:fillAlpha="0.2" android:fillColor="#000000"
+        android:pathData="M15.91,196C9.26,196 3.9,190.65 3.9,184v-4.1c0,6.65 5.36,12 12.01,12L184.09,191.9c6.65,0 12.01,-5.35 12.01,-12v4.1c0,6.65 -5.36,12 -12.01,12z"
+        android:strokeAlpha="1" android:strokeColor="#00000000" android:strokeWidth="2.96654367"/>
+    <path android:fillAlpha="0.2" android:fillColor="#FF000000"
+        android:pathData="M4,4h192v192h-192z" android:strokeAlpha="0.2"
+        android:strokeColor="#00000000" android:strokeWidth="2.96499991"/>
 </vector>




diff --git a/app/src/main/res/drawable/logo_96.xml b/app/src/main/res/drawable/logo_96.xml
index 854575ea8837fcbb29cf10b37abe26f29af11f17..1edda14094f509822bb341f7b73c5db2d3134208 100644
--- a/app/src/main/res/drawable/logo_96.xml
+++ b/app/src/main/res/drawable/logo_96.xml
@@ -1,24 +1,18 @@
-<vector android:height="96dp" android:viewportHeight="512.0"
-    android:viewportWidth="512.0" android:width="96dp" xmlns:android="http://schemas.android.com/apk/res/android">
-    <path android:fillAlpha="1" android:fillColor="#17ff00"
-        android:pathData="M0.1,0.1h511.7v511.7h-511.7z"
-        android:strokeAlpha="0" android:strokeColor="#ffffff" android:strokeWidth="0.26262632"/>
-    <path android:fillAlpha="1" android:fillColor="#ffff00"
-        android:pathData="M257.1,53.7m-40.6,0a40.6,40.6 49.3,1 1,81.3 0a40.6,40.6 49.3,1 1,-81.3 0"
-        android:strokeAlpha="0" android:strokeColor="#ffffff" android:strokeWidth="0.26458332"/>
-    <path android:fillAlpha="1" android:fillColor="#ffff00"
-        android:pathData="M262.9,450.9m-40.6,0a40.6,40.6 105.4,1 1,81.3 0a40.6,40.6 0,1 1,-81.3 0"
-        android:strokeAlpha="0" android:strokeColor="#ffffff" android:strokeWidth="0.26458332"/>
-    <path android:fillAlpha="1" android:fillColor="#ffff00"
-        android:pathData="M47.4,256.3l14.2,-14.2l211.1,211.1l-14.2,14.2z"
-        android:strokeAlpha="0" android:strokeColor="#ffffff" android:strokeWidth="0.08697488"/>
-    <path android:fillAlpha="1" android:fillColor="#ffff00"
-        android:pathData="M258.5,45.1l14.2,14.2l-211.1,211.1l-14.2,-14.2z"
-        android:strokeAlpha="0" android:strokeColor="#ffffff" android:strokeWidth="0.08697488"/>
-    <path android:fillAlpha="1" android:fillColor="#ffff00"
-        android:pathData="M469.6,256.3l-14.2,14.2l-211.1,-211.1l14.2,-14.2z"
-        android:strokeAlpha="0" android:strokeColor="#ffffff" android:strokeWidth="0.08697488"/>
-    <path android:fillAlpha="1" android:fillColor="#ffff00"
-        android:pathData="M258.5,467.4l-14.2,-14.2l211.1,-211.1l14.2,14.2z"
-        android:strokeAlpha="0" android:strokeColor="#ffffff" android:strokeWidth="0.08697488"/>
+<vector android:height="96dp" android:viewportHeight="200.0"
+    android:viewportWidth="200.0" android:width="96dp" xmlns:android="http://schemas.android.com/apk/res/android">
+    <path android:fillAlpha="1" android:fillColor="#087f23"
+        android:pathData="M16,4L184,4A12,12 0,0 1,196 16L196,184A12,12 0,0 1,184 196L16,196A12,12 0,0 1,4 184L4,16A12,12 0,0 1,16 4z"
+        android:strokeAlpha="1" android:strokeColor="#00000000" android:strokeWidth="2.96499991"/>
+    <path android:fillAlpha="1" android:fillColor="#ffeb3b"
+        android:pathData="m90.79,14.19 l-1.44,0.12 1,11.88L87.22,26.19l0,3.33l1.35,0l0,3.04l3.92,0L14.39,109.11a3.73,3.73 122.85,0 0,-1.33 -0.25,3.73 3.73,118.9 0,0 -3.73,3.73 3.73,3.73 118.9,0 0,3.73 3.73,3.73 3.73,126.47 0,0 1.19,-0.2L77.96,174.18l-4.47,0l0,6.36l1.66,0l0,6.46l45.65,0l0,-6.46l1.71,0l0,-6.36l-2.63,0L182.57,117.04a3.73,3.73 53.96,0 0,0.37 0.02,3.73 3.73,0 0,0 3.73,-3.73 3.73,3.73 60.36,0 0,-3.73 -3.73,3.73 3.73,82.52 0,0 -1.63,0.38L102.3,32.55l5.41,0L107.72,29.51l1.06,0L108.78,26.19l-3.2,0l0.73,-11.66 -1.44,-0.09 -0.73,11.75l-12.32,0zM97.02,32.55l0.75,0L179.32,112.49a3.73,3.73 53.96,0 0,-0.1 0.85,3.73 3.73,64.83 0,0 0.56,1.96L115.17,174.18L82.67,174.18L16.54,113.91a3.73,3.73 122.85,0 0,0.24 -1.32,3.73 3.73,0 0,0 -0.2,-1.19z"
+        android:strokeAlpha="1" android:strokeColor="#00000000" android:strokeWidth="11.20629883"/>
+    <path android:fillAlpha="0.2" android:fillColor="#ffffff"
+        android:pathData="M15.91,3.9C9.26,3.9 3.9,9.25 3.9,15.9L3.9,20C3.9,13.35 9.26,8 15.91,8L184.09,8C190.74,8 196.1,13.35 196.1,20L196.1,15.9C196.1,9.25 190.74,3.9 184.09,3.9L15.91,3.9z"
+        android:strokeAlpha="1" android:strokeColor="#00000000" android:strokeWidth="11.21213341"/>
+    <path android:fillAlpha="0.2" android:fillColor="#000000"
+        android:pathData="M15.91,196C9.26,196 3.9,190.65 3.9,184v-4.1c0,6.65 5.36,12 12.01,12L184.09,191.9c6.65,0 12.01,-5.35 12.01,-12v4.1c0,6.65 -5.36,12 -12.01,12z"
+        android:strokeAlpha="1" android:strokeColor="#00000000" android:strokeWidth="2.96654367"/>
+    <path android:fillAlpha="0.2" android:fillColor="#FF000000"
+        android:pathData="M4,4h192v192h-192z" android:strokeAlpha="0.2"
+        android:strokeColor="#00000000" android:strokeWidth="2.96499991"/>
 </vector>




diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index f8601b3ceeeacd90fea031f2d262ae969d0b8d68..c18b6115de3cd974a2f3fac976630ff35e48beab 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -17,7 +17,7 @@             android:id="@+id/search_view"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             app:floatingSearch_close_search_on_keyboard_dismiss="true"
-            app:floatingSearch_leftActionMode="showHamburger"
+            app:floatingSearch_leftActionMode="showSearch"
             app:floatingSearch_searchBarMarginLeft="16dp"
             app:floatingSearch_searchBarMarginRight="16dp"
             app:floatingSearch_searchBarMarginTop="16dp"




diff --git a/app/src/main/res/layout/activity_stop.xml b/app/src/main/res/layout/activity_stop.xml
index 86a729521afcd4b934b2a58541fba5bba648d932..b36285d541bc1d4833dbe2550150d8bc7630f925 100644
--- a/app/src/main/res/layout/activity_stop.xml
+++ b/app/src/main/res/layout/activity_stop.xml
@@ -16,17 +16,16 @@         android:layout_height="wrap_content"
         android:paddingTop="@dimen/appbar_padding_top"
         android:theme="@style/AppTheme.AppBarOverlay">
 
+        <!--suppress AndroidDomInspection -->
         <android.support.v7.widget.Toolbar
             android:id="@+id/toolbar"
             android:layout_width="match_parent"
             android:layout_height="?attr/actionBarSize"
             android:layout_weight="1"
-            android:background="?attr/colorPrimary"
+            android:background="@color/colorPrimary"
             app:layout_scrollFlags="scroll|enterAlways"
             app:popupTheme="@style/AppTheme.PopupOverlay"
-            app:title="@string/app_name">
-
-        </android.support.v7.widget.Toolbar>
+            app:title="@string/app_name" />
 
         <android.support.design.widget.TabLayout
             android:id="@+id/tabs"
@@ -66,6 +65,7 @@         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_gravity="end|bottom"
         android:layout_margin="@dimen/fab_margin"
+        android:visibility="gone"
         app:srcCompat="@drawable/ic_favourite" />
 
 </android.support.design.widget.CoordinatorLayout>




diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 20ab2a24fb33ddcc4ee2667bac4d46107eccabd2..01718d6790b7e077858dbdceef2f2025c4097d4e 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -21,4 +21,5 @@     Timetable is up-to-date
     <string name="validity_failed">Downloaded timetable is corrupted – can’t update</string>
     <string name="error_try_later">Error. Try again later</string>
     <string name="now">Now</string>
+    <string name="stop_already_fav">This stop is already in favourites</string>
 </resources>




diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml
index 034ecb4ab5c139d457d199482a5352a125b6cbc3..3ab41cc7ffb8d0e04daa8ddc5362e1b1ae7bb473 100644
--- a/app/src/main/res/values-pl/strings.xml
+++ b/app/src/main/res/values-pl/strings.xml
@@ -18,4 +18,5 @@     Pobrany rozkład jest uszkodzony – nie można zaktualizować
     <string name="no_connectivity">Brak połączenia z Internetem – nie można zaktualizować rozkładu</string>
     <string name="error_try_later">Błąd. Spróbuj ponownie później</string>
     <string name="now">Teraz</string>
+    <string name="stop_already_fav">Ten przystanek już jest pośród ulubionych</string>
 </resources>
\ No newline at end of file




diff --git a/build.gradle b/build.gradle
index e1b541f3d33b5cc642d8981dfad18a4348b00246..a17181b4e20fe7923d7d694712f312bfb4f85801 100644
--- a/build.gradle
+++ b/build.gradle
@@ -9,7 +9,7 @@         maven { url 'https://maven.google.com' }
         google()
     }
     dependencies {
-        classpath 'com.android.tools.build:gradle:3.0.0-alpha5'
+        classpath 'com.android.tools.build:gradle:3.0.0-alpha7'
         classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
 
         // NOTE: Do not place your application dependencies here; they belong