Bimba.git

commit eb4ef90754a2e59b4d9f78b57beda9429433c7c1

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

navigation drawer

 app/src/main/AndroidManifest.xml | 2 
 app/src/main/java/ml/adamsprogs/bimba/activities/DashActivity.kt | 24 
 app/src/main/java/ml/adamsprogs/bimba/models/Favourite.kt | 1 
 app/src/main/java/ml/adamsprogs/bimba/models/FavouriteStorage.kt | 1 
 app/src/main/java/ml/adamsprogs/bimba/models/FavouritesAdapter.kt | 6 
 app/src/main/res/drawable/ic_help.xml | 9 
 app/src/main/res/drawable/ic_home.xml | 9 
 app/src/main/res/drawable/ic_refresh.xml | 9 
 app/src/main/res/layout/activity_dash.xml | 111 
 app/src/main/res/values-pl/strings.xml | 3 
 app/src/main/res/values/strings.xml | 7 
 app/src/main/res/values/styles.xml | 4 


diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 76deb8315581a75e1235f7196a8a1cc9da3300fe..a75ab9166f65fbe3c4a7021141e8f1f41f2a9d7c 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -36,7 +36,7 @@                      android:name=".VmClient"
             android:exported="false" />
 
-        <activity android:name=".activities.EditFavouriteActivity"></activity>
+        <activity android:name=".activities.EditFavouriteActivity" />
     </application>
 
 </manifest>
\ No newline at end of file




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 fd6cd1849e48c5ed36074842dce2b727c58b0129..04934cf7346636bed7760e4df87a249705ee3187 100644
--- a/app/src/main/java/ml/adamsprogs/bimba/activities/DashActivity.kt
+++ b/app/src/main/java/ml/adamsprogs/bimba/activities/DashActivity.kt
@@ -20,12 +20,11 @@ import android.view.inputmethod.InputMethodManager
 import ml.adamsprogs.bimba.*
 import java.util.*
 
-class DashActivity : AppCompatActivity(), MessageReceiver.OnTimetableDownloadListener, SwipeRefreshLayout.OnRefreshListener, FavouritesAdapter.OnMenuItemClickListener {
+class DashActivity : AppCompatActivity(), MessageReceiver.OnTimetableDownloadListener, FavouritesAdapter.OnMenuItemClickListener {
     val context: Context = this
     val receiver = MessageReceiver()
     lateinit var timetable: Timetable
     var stops: ArrayList<StopSuggestion>? = null
-    lateinit var swipeRefreshLayout: SwipeRefreshLayout
     lateinit var favouritesList: RecyclerView
     lateinit var searchView: FloatingSearchView
     lateinit var favourites: FavouriteStorage
@@ -40,8 +39,6 @@         val toolbar = findViewById(R.id.toolbar) as Toolbar
         setSupportActionBar(toolbar)
         supportActionBar?.title = getString(R.string.merge_favourites)
 
-        prepareSwipeLayout()
-
         createTimerTask()
 
         prepareOnDownloadListener()
@@ -57,7 +54,6 @@         searchView = findViewById(R.id.search_view) as FloatingSearchView
 
         searchView.setOnFocusChangeListener(object : FloatingSearchView.OnFocusChangeListener {
             override fun onFocus() {
-                swipeRefreshLayout.isEnabled = false
                 favouritesList.visibility = View.GONE
                 thread {
                     val newStops = stops!!.filter { deAccent(it.body.split("\n")[0]).contains(deAccent(searchView.query), true) }
@@ -66,7 +62,6 @@                 }
             }
 
             override fun onFocusCleared() {
-                swipeRefreshLayout.isEnabled = true
                 favouritesList.visibility = View.VISIBLE
             }
         })
@@ -111,7 +106,7 @@                 textView.text = Html.fromHtml(text[0] + "
" + t) } } - //todo searchView.attachNavigationDrawerToMenuButton(mDrawerLayout) + searchView.attachNavigationDrawerToMenuButton(findViewById(R.id.drawer_layout) as DrawerLayout) } private fun prepareFavourites() { @@ -156,18 +151,6 @@ private fun startDownloaderService() { startService(Intent(context, TimetableDownloader::class.java)) } - private fun prepareSwipeLayout() { - swipeRefreshLayout = findViewById(R.id.swipeRefreshLayout) as SwipeRefreshLayout - swipeRefreshLayout.isEnabled = true - swipeRefreshLayout.setOnRefreshListener(this) - swipeRefreshLayout.setColorSchemeResources(R.color.colorAccent, R.color.colorPrimary) - } - - override fun onRefresh() { - swipeRefreshLayout.isRefreshing = true - startDownloaderService() - } - override fun onBackPressed() { if (!searchView.setSearchFocused(false)) { super.onBackPressed() @@ -230,8 +213,7 @@ else -> message = getString(R.string.error_try_later) } timetable.refresh() stops = timetable.getStops() - Snackbar.make(swipeRefreshLayout, message, Snackbar.LENGTH_LONG).show() - swipeRefreshLayout.isRefreshing = false + Snackbar.make(findViewById(R.id.drawer_layout), message, Snackbar.LENGTH_LONG).show() } override fun edit(name: String): Boolean { 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 0ef50c67d45c3f821dd477926c556f6529dbf084..cf116c5fd6d84d9c9505a2d76a1edced6d53f8a0 100644 --- a/app/src/main/java/ml/adamsprogs/bimba/models/Favourite.kt +++ b/app/src/main/java/ml/adamsprogs/bimba/models/Favourite.kt @@ -99,6 +99,7 @@ minDeparture = departure } } + Log.i("preInterval", "$minInterval") return minDeparture } private set 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 1ded07c1fc14ec32817c8902b380efc26edb9f70..7be084c70a618c7078fa944e579a7e9a8dfcd8f0 100644 --- a/app/src/main/java/ml/adamsprogs/bimba/models/FavouriteStorage.kt +++ b/app/src/main/java/ml/adamsprogs/bimba/models/FavouriteStorage.kt @@ -120,5 +120,6 @@ val favourite = favourites[oldName] ?: return favourite.name = newName favourites.remove(oldName) favourites[newName] = favourite + serialize() } } \ No newline at end of file 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 bb56bcecd403545af3ab83cf0e1e2bcef525f03e..fd1c29d7ed811d15bd86d656a267d47037cb5e71 100644 --- a/app/src/main/java/ml/adamsprogs/bimba/models/FavouritesAdapter.kt +++ b/app/src/main/java/ml/adamsprogs/bimba/models/FavouritesAdapter.kt @@ -6,6 +6,7 @@ import android.os.Build import android.support.v7.widget.CardView import android.support.v7.widget.PopupMenu import android.support.v7.widget.RecyclerView +import android.util.Log import android.view.View import android.view.ViewGroup import android.widget.ImageView @@ -51,7 +52,6 @@ override fun onBindViewHolder(holder: ViewHolder?, position: Int) { thread { val favourite = favourites[position] - holder?.nameTextView?.text = favourite.name val nextDeparture: Departure? try { nextDeparture = favourite.nextDeparture @@ -68,7 +68,8 @@ departureTime.set(Calendar.MINUTE, Integer.parseInt(nextDeparture.time.split(":")[1])) if (nextDeparture.tomorrow) departureTime.add(Calendar.DAY_OF_MONTH, 1) val interval = ((departureTime.timeInMillis - now.timeInMillis) / (1000 * 60)) - nextDepartureText = context.getString(Declinator.decline(interval), interval.toString()) + Log.i("Interval", "$interval") + nextDepartureText = context.getString(Declinator.decline(interval), interval.toString()) // fixme -1 nextDepartureLineText = context.getString(R.string.departure_to_line, nextDeparture.line, nextDeparture.direction) } else { nextDepartureText = context.getString(R.string.no_next_departure) @@ -79,6 +80,7 @@ holder?.root?.setOnLongClickListener { toggleSelected(it as CardView, position) true } + holder?.nameTextView?.text = favourite.name holder?.timeTextView?.text = nextDepartureText holder?.lineTextView?.text = nextDepartureLineText holder?.moreButton?.setOnClickListener { diff --git a/app/src/main/res/drawable/ic_help.xml b/app/src/main/res/drawable/ic_help.xml new file mode 100644 index 0000000000000000000000000000000000000000..f981188526665929fadcb98dd45d433847d55722 --- /dev/null +++ b/app/src/main/res/drawable/ic_help.xml @@ -0,0 +1,9 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24.0" + android:viewportHeight="24.0"> + <path + android:fillColor="?attr/colorControlNormal" + android:pathData="M11,18h2v-2h-2v2zM12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM12,20c-4.41,0 -8,-3.59 -8,-8s3.59,-8 8,-8 8,3.59 8,8 -3.59,8 -8,8zM12,6c-2.21,0 -4,1.79 -4,4h2c0,-1.1 0.9,-2 2,-2s2,0.9 2,2c0,2 -3,1.75 -3,5h2c0,-2.25 3,-2.5 3,-5 0,-2.21 -1.79,-4 -4,-4z"/> +</vector> diff --git a/app/src/main/res/drawable/ic_home.xml b/app/src/main/res/drawable/ic_home.xml new file mode 100644 index 0000000000000000000000000000000000000000..6a6a5fd2537cc70b5bed7347b27bf37585fbf252 --- /dev/null +++ b/app/src/main/res/drawable/ic_home.xml @@ -0,0 +1,9 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24.0" + android:viewportHeight="24.0"> + <path + android:fillColor="?attr/colorControlNormal" + android:pathData="M10,20v-6h4v6h5v-8h3L12,3 2,12h3v8z"/> +</vector> diff --git a/app/src/main/res/drawable/ic_refresh.xml b/app/src/main/res/drawable/ic_refresh.xml new file mode 100644 index 0000000000000000000000000000000000000000..ceda60bb9a940982825f19ad436a3dedd708d25b --- /dev/null +++ b/app/src/main/res/drawable/ic_refresh.xml @@ -0,0 +1,9 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24.0" + android:viewportHeight="24.0"> + <path + android:fillColor="?attr/colorControlNormal" + android:pathData="M17.65,6.35C16.2,4.9 14.21,4 12,4c-4.42,0 -7.99,3.58 -7.99,8s3.57,8 7.99,8c3.73,0 6.84,-2.55 7.73,-6h-2.08c-0.82,2.33 -3.04,4 -5.65,4 -3.31,0 -6,-2.69 -6,-6s2.69,-6 6,-6c1.66,0 3.14,0.69 4.22,1.78L13,11h7V4l-2.35,2.35z"/> +</vector> diff --git a/app/src/main/res/layout/activity_dash.xml b/app/src/main/res/layout/activity_dash.xml index 3c9da371645392721c2ebe789e170204d8050d66..37ba2c615b1ac3bc0bbb913935e0aa79e5f562b0 100644 --- a/app/src/main/res/layout/activity_dash.xml +++ b/app/src/main/res/layout/activity_dash.xml @@ -1,11 +1,9 @@ <?xml version="1.0" encoding="utf-8"?> -<android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android" +<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" - xmlns:tools="http://schemas.android.com/tools" - android:id="@+id/swipeRefreshLayout" + android:id="@+id/drawer_layout" android:layout_width="match_parent" - android:layout_height="match_parent" - tools:context="ml.adamsprogs.bimba.activities.DashActivity"> + android:layout_height="match_parent"> <android.support.constraint.ConstraintLayout android:id="@+id/main_layout" @@ -36,7 +34,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="showSearch" + app:floatingSearch_leftActionMode="showHamburger" app:floatingSearch_searchBarMarginLeft="16dp" app:floatingSearch_searchBarMarginRight="16dp" app:floatingSearch_searchBarMarginTop="16dp" @@ -49,15 +47,108 @@ android:id="@+id/favouritesList" android:layout_width="match_parent" android:layout_height="469dp" + android:layout_marginBottom="8dp" android:layout_marginEnd="8dp" android:layout_marginStart="8dp" android:layout_marginTop="100dp" android:scrollbars="none" + app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintBottom_toBottomOf="parent" - android:layout_marginBottom="8dp" /> + app:layout_constraintTop_toTopOf="parent" /> </android.support.constraint.ConstraintLayout> -</android.support.v4.widget.SwipeRefreshLayout> \ No newline at end of file + + <!-- The navigation drawer --> + <android.support.design.widget.NavigationView + android:id="@+id/drawer" + android:layout_width="240dp" + android:layout_height="match_parent" + android:layout_gravity="start"> + + <android.support.constraint.ConstraintLayout + android:layout_width="match_parent" + android:layout_height="match_parent" + android:paddingTop="8dp"> + + + <ImageView + android:id="@+id/drawerHomeImage" + android:layout_width="wrap_content" + android:layout_height="48dp" + android:layout_marginStart="16dp" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:srcCompat="@drawable/ic_home" + android:contentDescription="@string/navigation_drawer_home_button" /> + + <TextView + android:id="@+id/drawerHomeText" + android:layout_width="wrap_content" + android:layout_height="48dp" + android:layout_marginStart="72dp" + android:gravity="center" + android:text="@string/home" + android:textAppearance="@style/TextAppearance.AppCompat.Medium" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="@+id/drawerHomeImage" /> + + <View + android:layout_width="match_parent" + android:layout_height="1dp" + android:layout_marginBottom="8dp" + android:layout_marginTop="8dp" + android:theme="@style/DividerTheme" + app:layout_constraintBottom_toTopOf="@+id/drawerRefreshText" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/drawerHomeText" /> + + <ImageView + android:id="@+id/drawerRefreshImage" + android:layout_width="wrap_content" + android:layout_height="48dp" + android:layout_marginStart="16dp" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/drawerHomeImage" + app:srcCompat="@drawable/ic_refresh" + android:contentDescription="@string/navigation_drawer_refresh_button" /> + + <TextView + android:id="@+id/drawerRefreshText" + android:layout_width="wrap_content" + android:layout_height="48dp" + android:layout_marginStart="72dp" + android:gravity="center" + android:text="@string/refresh" + android:textAppearance="@style/TextAppearance.AppCompat.Medium" + app:layout_constraintBottom_toBottomOf="@+id/drawerRefreshImage" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="@+id/drawerRefreshImage" /> + + <ImageView + android:id="@+id/drawerHelpImage" + android:layout_width="wrap_content" + android:layout_height="48dp" + android:layout_marginStart="16dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:srcCompat="@drawable/ic_help" + android:contentDescription="@string/navigation_drawer_help_button" /> + + <TextView + android:id="@+id/drawerHelpText" + android:layout_width="wrap_content" + android:layout_height="48dp" + android:layout_marginStart="72dp" + android:gravity="center" + android:text="@string/help" + android:textAppearance="@style/TextAppearance.AppCompat.Medium" + app:layout_constraintBottom_toBottomOf="@+id/drawerHelpImage" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="@+id/drawerHelpImage" /> + + + </android.support.constraint.ConstraintLayout> + </android.support.design.widget.NavigationView> +</android.support.v4.widget.DrawerLayout> \ 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 23dead7e4a7df6e3f4ce665185e5b4245602382a..8442f0ce5ac1be06c020e100176b0a370e1c20a7 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -38,4 +38,11 @@ Calculating… <string name="departure_in__singular_genitive">In %1$s minute</string> <string name="departure_in__plural_genitive">In %1$s minutes</string> <string name="departure_in__plural_nominative">In %1$s minutes</string> + + <string name="home">Home</string> + <string name="refresh">Refresh</string> + <string name="help">Help</string> + <string name="navigation_drawer_home_button" translatable="false">navigation drawer home button</string> + <string name="navigation_drawer_refresh_button" translatable="false">navigation drawer refresh button</string> + <string name="navigation_drawer_help_button" translatable="false">navigation drawer help button</string> </resources> diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 81de51acbb294dd281e548fb6cc51c463401e194..f81e3321cf093b655c12c7d0605194b703a0a485 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -17,4 +17,8 @@