Author: Adam Pioterek <adam.pioterek@protonmail.ch>
Navigation drawer & refreshing as option in drawer
app/src/main/java/ml/adamsprogs/bimba/activities/DashActivity.kt | 30 app/src/main/java/ml/adamsprogs/bimba/models/FavouritesAdapter.kt | 2 app/src/main/res/layout/activity_dash.xml | 102 app/src/main/res/menu/menu_drawer.xml | 19 build.gradle | 2 gradle/wrapper/gradle-wrapper.properties | 4
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 b58059fb156c426130e6b4e0b23fb5d85119effe..75060c7cde44a199cf26f017a404960d7566a336 100644 --- a/app/src/main/java/ml/adamsprogs/bimba/activities/DashActivity.kt +++ b/app/src/main/java/ml/adamsprogs/bimba/activities/DashActivity.kt @@ -5,26 +5,29 @@ import android.os.* import android.support.design.widget.Snackbar import android.support.v7.app.* import android.text.Html -import android.view.View import com.arlib.floatingsearchview.FloatingSearchView import com.arlib.floatingsearchview.suggestions.model.SearchSuggestion import ml.adamsprogs.bimba.models.* import kotlin.concurrent.thread 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.Menu -import android.view.MenuItem +import android.view.* import android.view.inputmethod.InputMethodManager import ml.adamsprogs.bimba.* import java.util.* -class DashActivity : AppCompatActivity(), MessageReceiver.OnTimetableDownloadListener, 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 drawerLayout: DrawerLayout + lateinit var drawer: NavigationView lateinit var favouritesList: RecyclerView lateinit var searchView: FloatingSearchView lateinit var favourites: FavouriteStorage @@ -49,6 +52,21 @@ prepareFavourites() scheduleRefresh() + + drawerLayout = findViewById(R.id.drawer_layout) as DrawerLayout + drawer = findViewById(R.id.drawer) as NavigationView + drawer.setCheckedItem(R.id.drawer_home) + drawer.setNavigationItemSelectedListener { item -> + when (item.itemId) { + R.id.drawer_refresh -> { + startDownloaderService() + } + else -> { + } + } + drawerLayout.closeDrawer(drawer) + super.onOptionsItemSelected(item) + } searchView = findViewById(R.id.search_view) as FloatingSearchView @@ -152,6 +170,10 @@ startService(Intent(context, TimetableDownloader::class.java)) } override fun onBackPressed() { + if (drawerLayout.isDrawerOpen(drawer)) { + drawerLayout.closeDrawer(drawer) + return + } if (!searchView.setSearchFocused(false)) { super.onBackPressed() } 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 2a3f07ea66f19f36ce4f26f53fc6ffe600ac762c..4d3a236492c6fab3f6506a271f6bfb7aabc8ae4e 100644 --- a/app/src/main/java/ml/adamsprogs/bimba/models/FavouritesAdapter.kt +++ b/app/src/main/java/ml/adamsprogs/bimba/models/FavouritesAdapter.kt @@ -69,7 +69,7 @@ if (nextDeparture.tomorrow) departureTime.add(Calendar.DAY_OF_MONTH, 1) val interval = ((departureTime.timeInMillis - now.timeInMillis) / (1000 * 60)) Log.i("Interval", "$interval") - nextDepartureText = context.getString(Declinator.decline(interval), interval.toString()) + 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) diff --git a/app/src/main/res/layout/activity_dash.xml b/app/src/main/res/layout/activity_dash.xml index cc390f75452ce75bfe33423cf398c1477d683924..db6a3e4266c2744e8b4d7bbc09b2c78e83285a0b 100644 --- a/app/src/main/res/layout/activity_dash.xml +++ b/app/src/main/res/layout/activity_dash.xml @@ -31,17 +31,15 @@ <android.support.v7.widget.RecyclerView 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:layout_width="0dp" + android:layout_height="0dp" + android:layout_marginBottom="0dp" + android:layout_marginTop="80dp" 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_constraintTop_toTopOf="parent" + app:layout_constraintBottom_toBottomOf="@+id/search_view" /> <com.arlib.floatingsearchview.FloatingSearchView android:id="@+id/search_view" @@ -63,91 +61,7 @@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:layout_gravity="start" + app:menu="@menu/menu_drawer"> </android.support.design.widget.NavigationView> </android.support.v4.widget.DrawerLayout> \ No newline at end of file diff --git a/app/src/main/res/menu/menu_drawer.xml b/app/src/main/res/menu/menu_drawer.xml new file mode 100644 index 0000000000000000000000000000000000000000..b5624b5fe0c64d7916589f6fe23ecc1449cf7ee8 --- /dev/null +++ b/app/src/main/res/menu/menu_drawer.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="utf-8"?> +<menu xmlns:android="http://schemas.android.com/apk/res/android"> + <group android:id="@+id/drawer_group_activities"> + <item + android:id="@+id/drawer_home" + android:icon="@drawable/ic_home" + android:title="@string/home" /> + </group> + <group android:id="@+id/drawer_group_actions"> + <item + android:id="@+id/drawer_refresh" + android:icon="@drawable/ic_refresh" + android:title="@string/refresh" /> + <item + android:id="@+id/drawer_help" + android:icon="@drawable/ic_help" + android:title="@string/help" /> + </group> +</menu> \ No newline at end of file diff --git a/build.gradle b/build.gradle index bf78fe3b4b36b25f8c8e7420bbda9dd6ff9df4f0..0c797fb1838c37561c15ed53e36b51d9abde197e 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-alpha8' + classpath 'com.android.tools.build:gradle:3.0.0-alpha9' 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 3d353ea4d1cc03c0e3c288a3862a26c1ebc247c4..e32fbb2e5966d81de9c87d2031502fdcf69e38a7 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Tue Jul 04 17:47:25 CEST 2017 +#Tue Aug 08 15:29:42 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-milestone-1-all.zip +distributionUrl=https://services.gradle.org/distributions/gradle-4.1-rc-1-all.zip