Bimba.git

commit 58032ccd43306b1ffc0544eae18726fe4444d51b

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

stop activity

 app/src/main/AndroidManifest.xml | 7 
 app/src/main/java/ml/adamsprogs/bimba/MainActivity.kt | 14 
 app/src/main/java/ml/adamsprogs/bimba/StopActivity.kt | 158 ++++++++
 app/src/main/java/ml/adamsprogs/bimba/Timetable.kt | 73 ---
 app/src/main/java/ml/adamsprogs/bimba/models/Departure.kt | 8 
 app/src/main/java/ml/adamsprogs/bimba/models/Suggestion.kt | 34 +
 app/src/main/java/ml/adamsprogs/bimba/models/Timetable.kt | 74 +++
 app/src/main/res/layout/activity_stop.xml | 70 +++
 app/src/main/res/layout/fragment_stop.xml | 22 +
 app/src/main/res/menu/menu_stop.xml | 10 
 app/src/main/res/values-w820dp/dimens.xml | 6 
 app/src/main/res/values/dimens.xml | 7 
 app/src/main/res/values/strings.xml | 6 
 app/src/main/res/values/styles.xml | 18 


diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 01a80a30c4361b8dbb1210f086a49e91bc3c630e..8b46aadd10b48588229b5dfe08364b0c8320b3de 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -21,7 +21,12 @@         
 
         <service
             android:name=".TimetableDownloader"
-            android:exported="false"></service>
+            android:exported="false" />
+
+        <activity
+            android:name=".StopActivity"
+            android:label="@string/title_activity_stop"
+            android:theme="@style/AppTheme"></activity>
     </application>
 
 </manifest>
\ No newline at end of file




diff --git a/app/src/main/java/ml/adamsprogs/bimba/MainActivity.kt b/app/src/main/java/ml/adamsprogs/bimba/MainActivity.kt
index ed34be718fdb15b1e24211e90959d629ddb09513..00875105ba4698acdaaeda8a79938c8c42e4fcde 100644
--- a/app/src/main/java/ml/adamsprogs/bimba/MainActivity.kt
+++ b/app/src/main/java/ml/adamsprogs/bimba/MainActivity.kt
@@ -12,6 +12,8 @@ import android.view.View
 import android.widget.Toast
 import com.arlib.floatingsearchview.FloatingSearchView
 import com.arlib.floatingsearchview.suggestions.model.SearchSuggestion
+import ml.adamsprogs.bimba.models.Suggestion
+import ml.adamsprogs.bimba.models.Timetable
 import kotlin.concurrent.thread
 
 class MainActivity : AppCompatActivity(), MessageReceiver.OnTimetableDownloadListener {
@@ -19,7 +21,7 @@     lateinit var listener: MessageReceiver.OnTimetableDownloadListener
     lateinit var receiver: MessageReceiver
     lateinit var layout: View
     lateinit var timetable: Timetable
-    var stops: ArrayList<Timetable.Suggestion>? = null
+    var stops: ArrayList<Suggestion>? = null
 
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
@@ -27,7 +29,7 @@         setContentView(R.layout.activity_main)
         AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_AUTO)
 
         layout = findViewById(R.id.main_layout)
-        val context = this as Context
+        val context = this
         listener = this
 
         val filter = IntentFilter("ml.adamsprogs.bimba.timetableDownloaded")
@@ -56,15 +58,17 @@         })
 
         searchView.setOnSearchListener(object : FloatingSearchView.OnSearchListener {
             override fun onSuggestionClicked(searchSuggestion: SearchSuggestion) {
-                Toast.makeText(context, "clicked "+ (searchSuggestion as Timetable.Suggestion).id, Toast.LENGTH_SHORT).show()
-                //todo to next screen
+                Toast.makeText(context, "clicked "+ (searchSuggestion as Suggestion).id, Toast.LENGTH_SHORT).show()
+                intent = Intent(context, StopActivity::class.java)
+                intent.putExtra("stop", searchSuggestion.id)
+                startActivity(intent)
             }
             override fun onSearchAction(query: String) {
             }
         })
 
         searchView.setOnBindSuggestionCallback { _, _, textView, item, _ ->
-            val suggestion = item as Timetable.Suggestion
+            val suggestion = item as Suggestion
             val text = suggestion.body.split("\n")
             val t = "<small><font color=\"#a0a0a0\">" + text[1] + "</font></small>"
             if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {




diff --git a/app/src/main/java/ml/adamsprogs/bimba/StopActivity.kt b/app/src/main/java/ml/adamsprogs/bimba/StopActivity.kt
new file mode 100644
index 0000000000000000000000000000000000000000..e6bf803f6d10ffca211250ec6e1ba103d5234367
--- /dev/null
+++ b/app/src/main/java/ml/adamsprogs/bimba/StopActivity.kt
@@ -0,0 +1,158 @@
+package ml.adamsprogs.bimba
+
+import android.support.design.widget.TabLayout
+import android.support.design.widget.FloatingActionButton
+import android.support.design.widget.Snackbar
+import android.support.v7.app.AppCompatActivity
+import android.support.v7.widget.Toolbar
+
+import android.support.v4.app.Fragment
+import android.support.v4.app.FragmentManager
+import android.support.v4.app.FragmentPagerAdapter
+import android.support.v4.view.ViewPager
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.Menu
+import android.view.MenuItem
+import android.view.View
+import android.view.ViewGroup
+
+import android.widget.TextView
+import ml.adamsprogs.bimba.models.Departure
+import ml.adamsprogs.bimba.models.Timetable
+
+class StopActivity : AppCompatActivity() {
+
+    private lateinit var stopId: String
+    private var departures: HashMap<String, ArrayList<Departure>>? = null
+
+    /**
+     * The [android.support.v4.view.PagerAdapter] that will provide
+     * fragments for each of the sections. We use a
+     * [FragmentPagerAdapter] derivative, which will keep every
+     * loaded fragment in memory. If this becomes too memory intensive, it
+     * may be best to switch to a
+     * [android.support.v4.app.FragmentStatePagerAdapter].
+     */
+    private var sectionsPagerAdapter: SectionsPagerAdapter? = null
+
+    /**
+     * The [ViewPager] that will host the section contents.
+     */
+    private var viewPager: ViewPager? = null
+
+    override fun onCreate(savedInstanceState: Bundle?) {
+        super.onCreate(savedInstanceState)
+        setContentView(R.layout.activity_stop)
+        stopId = intent.getStringExtra("stop")
+
+        //todo hiding on scroll
+        val toolbar = findViewById(R.id.toolbar) as Toolbar
+        setSupportActionBar(toolbar)
+
+        val timetable = Timetable(this)
+        supportActionBar?.title = timetable.getStopName(stopId) ?: "Stop"
+        departures = timetable.getStopDepartures(stopId)
+        //todo if departures == null -> …
+
+        sectionsPagerAdapter = SectionsPagerAdapter(supportFragmentManager)
+
+        viewPager = findViewById(R.id.container) as ViewPager
+        viewPager!!.adapter = sectionsPagerAdapter
+
+        val tabLayout = findViewById(R.id.tabs) as TabLayout
+
+        viewPager!!.addOnPageChangeListener(TabLayout.TabLayoutOnPageChangeListener(tabLayout))
+        tabLayout.addOnTabSelectedListener(TabLayout.ViewPagerOnTabSelectedListener(viewPager))
+
+        //todo move to view
+        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()
+        }
+
+    }
+
+
+    override fun onCreateOptionsMenu(menu: Menu): Boolean {
+        menuInflater.inflate(R.menu.menu_stop, menu)
+        return true
+    }
+
+    override fun onOptionsItemSelected(item: MenuItem): Boolean {
+        val id = item.itemId
+
+
+        if (id == R.id.action_settings) {
+            return true
+        }
+
+        return super.onOptionsItemSelected(item)
+    }
+
+    /**
+     * A placeholder fragment containing a simple view.
+     */
+    class PlaceholderFragment : Fragment() {
+
+        //todo add list
+        override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?,
+                                  savedInstanceState: Bundle?): View? {
+            val rootView = inflater!!.inflate(R.layout.fragment_stop, container, false)
+            val textView = rootView.findViewById(R.id.section_label) as TextView
+            var ttString: String = ""
+            for (row in arguments.getStringArrayList("departures")) {
+                ttString += row + "\n"
+            }
+            textView.text = getString(R.string.section_format, arguments.getInt(ARG_SECTION_NUMBER),
+                    arguments.getString("stop")) + "\n===\n" + ttString
+            return rootView
+        }
+
+        companion object {
+            /**
+             * The fragment argument representing the section number for this
+             * fragment.
+             */
+            private val ARG_SECTION_NUMBER = "section_number"
+
+            /**
+             * Returns a new instance of this fragment for the given section
+             * number.
+             */
+            fun newInstance(sectionNumber: Int, stopId: String, departures: ArrayList<Departure>?): PlaceholderFragment {
+                val fragment = PlaceholderFragment()
+                val args = Bundle()
+                args.putInt(ARG_SECTION_NUMBER, sectionNumber)
+                args.putString("stop", stopId)
+                val d = ArrayList<String>()
+                departures?.mapTo(d) { it.toString() }
+                args.putStringArrayList("departures", d)
+                fragment.arguments = args
+                return fragment
+            }
+        }
+    }
+
+    /**
+     * A [FragmentPagerAdapter] that returns a fragment corresponding to
+     * one of the sections/tabs/pages.
+     */
+    inner class SectionsPagerAdapter(fm: FragmentManager) : FragmentPagerAdapter(fm) {
+
+        override fun getItem(position: Int): Fragment {
+            var mode: String? = null
+            when (position) {
+                0 -> mode = "workdays"
+                1 -> mode = "saturdays"
+                2 -> mode = "sundays"
+            }
+            return PlaceholderFragment.newInstance(position + 1, stopId, departures?.get(mode))
+        }
+
+        override fun getCount(): Int {
+            return 3
+        }
+    }
+}




diff --git a/app/src/main/java/ml/adamsprogs/bimba/Timetable.kt b/app/src/main/java/ml/adamsprogs/bimba/Timetable.kt
deleted file mode 100644
index 09359756979a700f4b5d635ba8d8d51d8395b63c..0000000000000000000000000000000000000000
--- a/app/src/main/java/ml/adamsprogs/bimba/Timetable.kt
+++ /dev/null
@@ -1,73 +0,0 @@
-package ml.adamsprogs.bimba
-
-import android.content.Context
-import android.database.sqlite.SQLiteCantOpenDatabaseException
-import android.database.sqlite.SQLiteDatabase
-import android.os.Parcel
-import android.os.Parcelable
-import com.arlib.floatingsearchview.suggestions.model.SearchSuggestion
-import java.io.File
-
-class Timetable() {
-    var db: SQLiteDatabase? = null
-    lateinit var context: Context
-
-    constructor(context: Context) : this() {
-        this.context = context
-        readDbFile()
-    }
-
-    fun refresh() {
-        readDbFile()
-    }
-
-    private fun readDbFile() {
-        try {
-            db = SQLiteDatabase.openDatabase(File(context.filesDir, "new_timetable.db").path,
-                    null, SQLiteDatabase.OPEN_READONLY)
-        } catch(e: SQLiteCantOpenDatabaseException) {
-            db = null
-        }
-    }
-
-    fun getStops(): ArrayList<Suggestion>? {
-        if (db == null)
-            return null
-        val cursor = db!!.rawQuery("select name ||char(10)|| headsigns as suggestion, id from stops" +
-                " join nodes on(stops.symbol = nodes.symbol);", null)
-        val stops = ArrayList<Suggestion>()
-        while (cursor.moveToNext())
-            stops.add(Suggestion(cursor.getString(0), cursor.getString(1)))
-        cursor.close()
-        return stops
-    }
-
-    class Suggestion(text: String, val id: String) : SearchSuggestion {
-        private val body: String = text
-
-        constructor(parcel: Parcel) : this(parcel.readString(), parcel.readString())
-
-        override fun describeContents(): Int {
-            TODO("not implemented")
-        }
-
-        override fun writeToParcel(dest: Parcel?, flags: Int) {
-            dest?.writeString(body)
-            dest?.writeString(id)
-        }
-
-        override fun getBody(): String {
-            return body
-        }
-
-        companion object CREATOR : Parcelable.Creator<Suggestion> {
-            override fun createFromParcel(parcel: Parcel): Suggestion {
-                return Suggestion(parcel)
-            }
-
-            override fun newArray(size: Int): Array<Suggestion?> {
-                return arrayOfNulls(size)
-            }
-        }
-    }
-}
\ No newline at end of file




diff --git a/app/src/main/java/ml/adamsprogs/bimba/models/Departure.kt b/app/src/main/java/ml/adamsprogs/bimba/models/Departure.kt
new file mode 100644
index 0000000000000000000000000000000000000000..549195ada01b6a947353fc24e78d6dbf0834022c
--- /dev/null
+++ b/app/src/main/java/ml/adamsprogs/bimba/models/Departure.kt
@@ -0,0 +1,8 @@
+package ml.adamsprogs.bimba.models
+
+data class Departure(val line: String, val mode: String, val time: String, val lowFloor: Boolean,
+                val modification: String?, val direction: String) {
+    override fun toString():String {
+        return "$line|$mode|$time|$lowFloor|$modification|$direction"
+    }
+}
\ No newline at end of file




diff --git a/app/src/main/java/ml/adamsprogs/bimba/models/Suggestion.kt b/app/src/main/java/ml/adamsprogs/bimba/models/Suggestion.kt
new file mode 100644
index 0000000000000000000000000000000000000000..164133f2f8145aad9b2fc9293880dfadaa2b9565
--- /dev/null
+++ b/app/src/main/java/ml/adamsprogs/bimba/models/Suggestion.kt
@@ -0,0 +1,34 @@
+package ml.adamsprogs.bimba.models
+
+import android.os.Parcel
+import android.os.Parcelable
+import com.arlib.floatingsearchview.suggestions.model.SearchSuggestion
+
+class Suggestion(text: String, val id: String) : SearchSuggestion {
+    private val body: String = text
+
+    constructor(parcel: Parcel) : this(parcel.readString(), parcel.readString())
+
+    override fun describeContents(): Int {
+        TODO("not implemented")
+    }
+
+    override fun writeToParcel(dest: Parcel?, flags: Int) {
+        dest?.writeString(body)
+        dest?.writeString(id)
+    }
+
+    override fun getBody(): String {
+        return body
+    }
+
+    companion object CREATOR : Parcelable.Creator<Suggestion> {
+        override fun createFromParcel(parcel: Parcel): Suggestion {
+            return Suggestion(parcel)
+        }
+
+        override fun newArray(size: Int): Array<Suggestion?> {
+            return arrayOfNulls(size)
+        }
+    }
+}
\ No newline at end of file




diff --git a/app/src/main/java/ml/adamsprogs/bimba/models/Timetable.kt b/app/src/main/java/ml/adamsprogs/bimba/models/Timetable.kt
new file mode 100644
index 0000000000000000000000000000000000000000..96fc59918897610fde931c43e8243e8022dfd971
--- /dev/null
+++ b/app/src/main/java/ml/adamsprogs/bimba/models/Timetable.kt
@@ -0,0 +1,74 @@
+package ml.adamsprogs.bimba.models
+
+import android.content.Context
+import android.database.sqlite.SQLiteCantOpenDatabaseException
+import android.database.sqlite.SQLiteDatabase
+import android.util.Log
+import java.io.File
+
+class Timetable(var context: Context) {
+    var db: SQLiteDatabase? = null
+
+    fun refresh() {
+        readDbFile()
+    }
+
+    private fun readDbFile() {
+        try {
+            db = SQLiteDatabase.openDatabase(File(context.filesDir, "new_timetable.db").path,
+                    null, SQLiteDatabase.OPEN_READONLY)
+        } catch(e: SQLiteCantOpenDatabaseException) {
+            Log.e("Timetable", "Cannot open db")
+            db = null
+        }
+    }
+
+    fun getStops(): ArrayList<Suggestion>? {
+        if (db == null)
+            return null
+        val cursor = db!!.rawQuery("select name ||char(10)|| headsigns as suggestion, id from stops" +
+                " join nodes on(stops.symbol = nodes.symbol) order by name, id;", null)
+        val stops = ArrayList<Suggestion>()
+        while (cursor.moveToNext())
+            stops.add(Suggestion(cursor.getString(0), cursor.getString(1)))
+        cursor.close()
+        return stops
+    }
+
+    fun getStopName(stopId: String): String? {
+        if (db == null)
+            return null
+        val cursor = db!!.rawQuery("select name from nodes join stops on(stops.symbol = nodes.symbol) where id = ?;",
+                listOf(stopId).toTypedArray())
+        val name: String
+        cursor.moveToNext()
+            name = cursor.getString(0)
+        cursor.close()
+        return name
+    }
+
+    fun getStopDepartures(stopId: String): HashMap<String, ArrayList<Departure>>? {
+        if (db == null)
+            return null
+        val cursor = db!!.rawQuery("select lines.number, mode, hour || ':' || minute as time, lowFloor, " +
+                "modification, headsign from departures join timetables on(timetable_id = timetables.id) " +
+                "join lines on(line_id = lines.id) where stop_id = ?;", listOf(stopId).toTypedArray())
+        val departures = HashMap<String, ArrayList<Departure>>()
+        departures.put("workdays", ArrayList())
+        departures.put("saturdays", ArrayList())
+        departures.put("sundays", ArrayList())
+        //todo only 10(?) after than now
+        while (cursor.moveToNext()) {
+            departures[cursor.getString(1)]?.add(Departure(cursor.getString(0),
+                    cursor.getString(1), cursor.getString(2), cursor.getInt(3) == 1,
+                    cursor.getString(4), cursor.getString(5)))
+        }
+        cursor.close()
+        return departures
+    }
+
+    init {
+        readDbFile()
+    }
+
+}
\ No newline at end of file




diff --git a/app/src/main/res/layout/activity_stop.xml b/app/src/main/res/layout/activity_stop.xml
new file mode 100644
index 0000000000000000000000000000000000000000..1710dd5e3b705e13f8a7d490d45c52ac8d11dc78
--- /dev/null
+++ b/app/src/main/res/layout/activity_stop.xml
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="utf-8"?>
+<android.support.design.widget.CoordinatorLayout 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/main_content"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:fitsSystemWindows="true"
+    tools:context="ml.adamsprogs.bimba.StopActivity">
+
+    <android.support.design.widget.AppBarLayout
+        android:id="@+id/appbar"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:paddingTop="@dimen/appbar_padding_top"
+        android:theme="@style/AppTheme.AppBarOverlay">
+
+        <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"
+            app:layout_scrollFlags="scroll|enterAlways"
+            app:popupTheme="@style/AppTheme.PopupOverlay"
+            app:title="@string/app_name">
+
+        </android.support.v7.widget.Toolbar>
+
+        <android.support.design.widget.TabLayout
+            android:id="@+id/tabs"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content">
+
+            <android.support.design.widget.TabItem
+                android:id="@+id/tabItem"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="@string/tab_workday_text" />
+
+            <android.support.design.widget.TabItem
+                android:id="@+id/tabItem2"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="@string/tab_saturday_text" />
+
+            <android.support.design.widget.TabItem
+                android:id="@+id/tabItem3"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="@string/tab_sunday_text" />
+
+        </android.support.design.widget.TabLayout>
+    </android.support.design.widget.AppBarLayout>
+
+    <android.support.v4.view.ViewPager
+        android:id="@+id/container"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        app:layout_behavior="@string/appbar_scrolling_view_behavior" />
+
+    <android.support.design.widget.FloatingActionButton
+        android:id="@+id/fab"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="end|bottom"
+        android:layout_margin="@dimen/fab_margin"
+        app:srcCompat="@android:drawable/ic_dialog_email" />
+
+</android.support.design.widget.CoordinatorLayout>




diff --git a/app/src/main/res/layout/fragment_stop.xml b/app/src/main/res/layout/fragment_stop.xml
new file mode 100644
index 0000000000000000000000000000000000000000..629a92459b447058afe4af7a61befcd311831879
--- /dev/null
+++ b/app/src/main/res/layout/fragment_stop.xml
@@ -0,0 +1,22 @@
+<android.support.constraint.ConstraintLayout 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/constraintLayout"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    tools:context="ml.adamsprogs.bimba.StopActivity$PlaceholderFragment">
+
+    <TextView
+        android:id="@+id/section_label"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginBottom="@dimen/activity_vertical_margin"
+        android:layout_marginEnd="@dimen/activity_horizontal_margin"
+        android:layout_marginStart="@dimen/activity_horizontal_margin"
+        android:layout_marginTop="@dimen/activity_vertical_margin"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintTop_toTopOf="@+id/constraintLayout"
+        tools:layout_constraintLeft_creator="1"
+        tools:layout_constraintTop_creator="1" />
+
+</android.support.constraint.ConstraintLayout>
\ No newline at end of file




diff --git a/app/src/main/res/menu/menu_stop.xml b/app/src/main/res/menu/menu_stop.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7720939501218c238b85fe59cc7d9633e32b3f9d
--- /dev/null
+++ b/app/src/main/res/menu/menu_stop.xml
@@ -0,0 +1,10 @@
+<menu 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"
+    tools:context="ml.adamsprogs.bimba.StopActivity">
+    <item
+        android:id="@+id/action_settings"
+        android:orderInCategory="100"
+        android:title="@string/action_settings"
+        app:showAsAction="never" />
+</menu>




diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml
new file mode 100644
index 0000000000000000000000000000000000000000..cef3abc49462768db38c80489d50543472c42b1b
--- /dev/null
+++ b/app/src/main/res/values/dimens.xml
@@ -0,0 +1,7 @@
+<resources>
+    <!-- Default screen margins, per the Android Design guidelines. -->
+    <dimen name="activity_horizontal_margin">16dp</dimen>
+    <dimen name="activity_vertical_margin">16dp</dimen>
+    <dimen name="fab_margin">16dp</dimen>
+    <dimen name="appbar_padding_top">8dp</dimen>
+</resources>




diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index fe6ece5dfd656228837d8e0a13569a97b33699bd..f2054964b72b6e2a30bb5e71774ebb39937049eb 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -2,4 +2,10 @@ 
     <string name="app_name">Bimba</string>
     <string name="no_timetable">No timetable found. Connect to the Internet and wait for a timetable to be downloaded</string>
     <string name="timetable_downloaded">New timetable downloaded</string>
+    <string name="title_activity_stop">StopActivity</string>
+    <string name="tab_workday_text">Workdays</string>
+    <string name="tab_saturday_text">Saturdays</string>
+    <string name="tab_sunday_text">Sundays</string>
+    <string name="action_settings">Settings</string>
+    <string name="section_format">Hello World from section: %1$d, stop: %2$s</string>
 </resources>




diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index ea2446c6caecb1a1d773a10eded21d0081c93c9f..84afd02b1243e739b01443d453476dc5669fcea4 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -1,12 +1,16 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
 
-<!-- Base application theme. -->
-<style name="AppTheme" parent="Theme.AppCompat.DayNight.NoActionBar">
-    <!-- Customize your theme here. -->
-    <item name="colorPrimary">@color/colorPrimary</item>
-    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
-    <item name="colorAccent">@color/colorAccent</item>
-</style>
+    <!-- Base application theme. -->
+    <style name="AppTheme" parent="Theme.AppCompat.DayNight.NoActionBar">
+        <!-- Customize your theme here. -->
+        <item name="colorPrimary">@color/colorPrimary</item>
+        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
+        <item name="colorAccent">@color/colorAccent</item>
+    </style>
+
+    <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
+
+    <style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
 
 </resources>




diff --git a/app/src/main/res/values-w820dp/dimens.xml b/app/src/main/res/values-w820dp/dimens.xml
new file mode 100644
index 0000000000000000000000000000000000000000..63fc816444614bd64f68a372d1f93211628ee51d
--- /dev/null
+++ b/app/src/main/res/values-w820dp/dimens.xml
@@ -0,0 +1,6 @@
+<resources>
+    <!-- Example customization of dimensions originally defined in res/values/dimens.xml
+         (such as screen margins) for screens with more than 820dp of available width. This
+         would include 7" and 10" devices in landscape (~960dp and ~1280dp respectively). -->
+    <dimen name="activity_horizontal_margin">64dp</dimen>
+</resources>