From 6dbd03f29743745fe2a6e4429bd0189396cb1aea Mon Sep 17 00:00:00 2001 From: Aurelien Hubert Date: Tue, 12 Feb 2019 14:36:03 +0100 Subject: [PATCH] Add first adapter & improve data management --- app/build.gradle | 4 +- .../android/PokerAnalyticsApplication.kt | 13 +- .../android/model/realm/Session.kt | 20 +-- .../android/ui/activity/HomeActivity.kt | 113 +++++++++----- .../android/ui/adapter/HistoryAdapter.kt | 140 +++++++----------- .../android/ui/fragment/HistoryFragment.kt | 67 +++++++-- .../android/ui/view/SessionRowView.kt | 58 ++++++++ .../android/ui/viewmodel/SessionViewModel.kt | 78 ---------- .../android/util/PokerAnalyticsActivity.kt | 24 ++- .../android/util/PokerAnalyticsFragment.kt | 13 ++ app/src/main/res/layout/activity_home.xml | 31 ++++ app/src/main/res/layout/activity_main.xml | 33 ----- app/src/main/res/layout/fragment_history.xml | 34 ++--- .../main/res/layout/row_history_session.xml | 25 +--- app/src/main/res/layout/row_session.xml | 25 ++++ app/src/main/res/menu/navigation.xml | 2 +- 16 files changed, 378 insertions(+), 302 deletions(-) create mode 100644 app/src/main/java/net/pokeranalytics/android/ui/view/SessionRowView.kt delete mode 100644 app/src/main/java/net/pokeranalytics/android/ui/viewmodel/SessionViewModel.kt create mode 100644 app/src/main/res/layout/activity_home.xml delete mode 100644 app/src/main/res/layout/activity_main.xml create mode 100644 app/src/main/res/layout/row_session.xml diff --git a/app/build.gradle b/app/build.gradle index 9198b207..53631d80 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,7 +1,6 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' -apply plugin: 'kotlin-android' apply plugin: 'kotlin-kapt' apply plugin: 'realm-android' apply plugin: 'io.fabric' @@ -56,7 +55,10 @@ dependencies { // Kotlin implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.1.1' + implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.1.1" + // Logs + implementation 'com.jakewharton.timber:timber:4.7.1' // Test testImplementation 'junit:junit:4.12' diff --git a/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt b/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt index 0dca3d25..b1400069 100644 --- a/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt +++ b/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt @@ -1,10 +1,12 @@ package net.pokeranalytics.android import android.app.Application +import com.crashlytics.android.Crashlytics +import io.fabric.sdk.android.Fabric import io.realm.Realm import io.realm.Realm.setDefaultConfiguration import io.realm.RealmConfiguration - +import timber.log.Timber class PokerAnalyticsApplication: Application() { @@ -20,10 +22,11 @@ class PokerAnalyticsApplication: Application() { .build() Realm.setDefaultConfiguration(realmConfiguration) - if (!BuildConfig.DEBUG) { - - - + if (BuildConfig.DEBUG) { + // Logs + Timber.plant(Timber.DebugTree()) + } else { + Fabric.with(this, Crashlytics()) } } diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt index 1fc49414..8e979e81 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt @@ -9,17 +9,21 @@ import io.realm.annotations.PrimaryKey import net.pokeranalytics.android.* import net.pokeranalytics.android.util.data.sessionDao import java.util.* +import java.util.UUID.randomUUID -open class Session : RealmObject() { - init { - } +open class Session(comment: String = "") : RealmObject() { + // A comment written by the user - var comment: String? = null // The date of creation of the session + + + @PrimaryKey + var id = UUID.randomUUID().toString() + var creationDate: Date = Date() var limit: Int? = null var numberOfTables: Int = 1 @@ -87,10 +91,6 @@ class SessionDao(realmDb: Realm) { // Update val sessionsToSave = realm.copyToRealmOrUpdate(sessions) - // Remove sessions not updated - realm.where(Session::class.java) - .equalTo("isUpdating", true).findAll().deleteAllFromRealm() - realm.commitTransaction() return realm.copyFromRealm(sessionsToSave) @@ -100,14 +100,14 @@ class SessionDao(realmDb: Realm) { * Find all sessions */ fun findAllSessions(): RealmResults { - return realm.where(Session::class.java).findAll().sort("updatedAt", Sort.DESCENDING) + return realm.where(Session::class.java).findAll().sort("creationDate", Sort.DESCENDING) } /** * Find session by id */ fun findSessionById(sessionId: Int): Session? { - return realm.where(Session::class.java).equalTo("id", sessionId).findFirst() + return realm.copyFromRealm(realm.where(Session::class.java).equalTo("id", sessionId).findFirst()) } /** diff --git a/app/src/main/java/net/pokeranalytics/android/ui/activity/HomeActivity.kt b/app/src/main/java/net/pokeranalytics/android/ui/activity/HomeActivity.kt index e9fd2e3f..d85ae7b0 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/activity/HomeActivity.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/activity/HomeActivity.kt @@ -4,52 +4,97 @@ import android.content.Context import android.content.Intent import android.os.Bundle import com.google.android.material.bottomnavigation.BottomNavigationView -import kotlinx.android.synthetic.main.activity_main.* -import net.pokeranalytics.android.R +import io.realm.Realm +import kotlinx.android.synthetic.main.activity_home.* +import net.pokeranalytics.android.model.realm.Session +import net.pokeranalytics.android.ui.fragment.HistoryFragment import net.pokeranalytics.android.util.PokerAnalyticsActivity +import net.pokeranalytics.android.util.data.sessionDao +import java.util.* + + class HomeActivity : PokerAnalyticsActivity() { - companion object { - fun newInstance(context: Context, id: Int) { - val intent = Intent(context, HomeActivity::class.java) - intent.putExtra("id", 10) - context.startActivity(intent) - } - } + companion object { + fun newInstance(context: Context, id: Int) { + val intent = Intent(context, HomeActivity::class.java) + intent.putExtra("id", 10) + context.startActivity(intent) + } + } + + private val mOnNavigationItemSelectedListener = BottomNavigationView.OnNavigationItemSelectedListener { item -> + when (item.itemId) { + net.pokeranalytics.android.R.id.navigation_history -> { + displayHistoryFragment() + return@OnNavigationItemSelectedListener true + } + net.pokeranalytics.android.R.id.navigation_dashboard -> { + + return@OnNavigationItemSelectedListener true + } + net.pokeranalytics.android.R.id.navigation_notifications -> { + + return@OnNavigationItemSelectedListener true + } + } + false + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(net.pokeranalytics.android.R.layout.activity_home) + + createDefaultSessions() + initUI() + } + + /** + * Init UI + */ + private fun initUI() { + navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener) + navigation.selectedItemId = net.pokeranalytics.android.R.id.navigation_history + } + + /** + * Create default data + */ + private fun createDefaultSessions() { - private val mOnNavigationItemSelectedListener = BottomNavigationView.OnNavigationItemSelectedListener { item -> - when (item.itemId) { - R.id.navigation_home -> { - message.setText(R.string.title_history) - return@OnNavigationItemSelectedListener true - } - R.id.navigation_dashboard -> { - message.setText(R.string.title_stats) - openDetails() - return@OnNavigationItemSelectedListener true - } - R.id.navigation_notifications -> { - message.setText(R.string.title_settings) - return@OnNavigationItemSelectedListener true - } - } - false - } + val realm = Realm.getDefaultInstance() + realm.sessionDao().deleteAllSessions() - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_main) + val data = ArrayList() - navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener) + for (i in 0..100) { + val session = Session() + session.creationDate = Date() + data.add(session) + } + realm.sessionDao().createOrUpdateSessions(data) + realm.close() - } + } - private fun openDetails() { + /** + * Display the history fragment + */ + private fun displayHistoryFragment() { + val historyFragment = HistoryFragment() + val fragmentManager = supportFragmentManager + val count = fragmentManager.backStackEntryCount + for (i in 0 until count) { + fragmentManager.popBackStack() + } + val fragmentTransaction = fragmentManager.beginTransaction() + fragmentTransaction.replace(net.pokeranalytics.android.R.id.container, historyFragment) + fragmentTransaction.commit() - } + } } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/adapter/HistoryAdapter.kt b/app/src/main/java/net/pokeranalytics/android/ui/adapter/HistoryAdapter.kt index de1e8b51..62f40465 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/adapter/HistoryAdapter.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/adapter/HistoryAdapter.kt @@ -4,98 +4,58 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView +import io.realm.RealmResults +import kotlinx.android.synthetic.main.row_history_session.view.* import net.pokeranalytics.android.R import net.pokeranalytics.android.model.realm.Session - -class HistoryAdapter(private var sessions: ArrayList) : RecyclerView.Adapter() { - - - companion object { - const val ROW_SESSION: Int = 100 - } - - private var isLoadingItem = -1 - private var lastSelectedItem = -1 - - var onClickOnProduct: ((position: Int, session: Session) -> Unit)? = null - var isPlaceholder = false - set(value) { - field = value - notifyDataSetChanged() - } - - inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - fun bind(session: Session) { - val context = itemView.context - - /* - itemView.productName.text = product.name - itemView.productDescription.text = product.getMobileDescription() - itemView.productPrice.text = product.getMinPrice() - itemView.productSpecs.removeAllViews() - - if (product.getMobilePageCount().isNotEmpty()) { - val specItemView = LayoutInflater.from(context).inflate(R.layout.layout_product_specifications, itemView.items, false) - specItemView.specIcon.setImageResource(R.drawable.icon_spec_pages_count) - specItemView.specDescription.text = product.getMobilePageCount() - itemView.productSpecs.addView(specItemView) - } - - if (product.getMobilePhotoCount().isNotEmpty()) { - val specItemView = LayoutInflater.from(context).inflate(R.layout.layout_product_specifications, itemView.items, false) - specItemView.specIcon.setImageResource(R.drawable.icon_spec_photos_count) - specItemView.specDescription.text = product.getMobilePhotoCount() - itemView.productSpecs.addView(specItemView) - } - - if (product.getMobileFormatCount().isNotEmpty()) { - val specItemView = LayoutInflater.from(context).inflate(R.layout.layout_product_specifications, itemView.items, false) - specItemView.specIcon.setImageResource(R.drawable.icon_spec_formats) - specItemView.specDescription.text = product.getMobileFormatCount() - itemView.productSpecs.addView(specItemView) - } - - Glide.with(context) - .load(product.principalImagePath) - .transition(withCrossFade()) - .into(itemView.productImage) - - itemView.productOrder.setOnClickListener { - onClickOnProduct?.invoke(adapterPosition, product) - } - - itemView.container.setOnClickListener { - onClickOnProduct?.invoke(adapterPosition, product) - } - */ - } - } - - inner class PlaceHolderViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - fun bind() { - } - } - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { - when (viewType) { - ROW_SESSION -> return ViewHolder(LayoutInflater.from(parent.context).inflate(R.layout.row_history_session, parent, false)) - else -> throw IllegalStateException("Need to implement type $viewType in HistoryAdapter") - } - } - - override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { - when (getItemViewType(position)) { - HistoryAdapter.ROW_SESSION -> (holder as HistoryAdapter.ViewHolder).bind(sessions[position]) - } - } - - override fun getItemCount(): Int { - return sessions.size - } - - override fun getItemViewType(position: Int) : Int { - return ROW_SESSION - } +import net.pokeranalytics.android.ui.view.SessionRowView +import timber.log.Timber + +class HistoryAdapter(private var sessions: RealmResults) : RecyclerView.Adapter() { + + companion object { + const val ROW_SESSION: Int = 100 + const val ROW_TOURNAMENT: Int = 101 + const val ROW_HAND: Int = 102 + const val ROW_TRANSACTION: Int = 103 + } + + var onClickOnSession: ((position: Int, session: Session) -> Unit)? = null + + inner class RowSessionViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + + fun bind(session: Session?) { + Timber.d("Bind session") + + session?.let { + itemView.sessionRow.setData(session) + itemView.sessionRow.setOnClickListener { + onClickOnSession?.invoke(adapterPosition, session) + } + } + } + } + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { + when (viewType) { + ROW_SESSION -> return RowSessionViewHolder(LayoutInflater.from(parent.context).inflate(R.layout.row_history_session, parent, false)) + else -> throw IllegalStateException("Need to implement type $viewType in HistoryAdapter") + } + } + + override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { + when (getItemViewType(position)) { + ROW_SESSION -> (holder as HistoryAdapter.RowSessionViewHolder).bind(sessions.get(position)) + } + } + + override fun getItemCount(): Int { + return sessions.size + } + + override fun getItemViewType(position: Int): Int { + return ROW_SESSION + } } \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/HistoryFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/HistoryFragment.kt index 705ff756..7998f20f 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/HistoryFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/HistoryFragment.kt @@ -4,26 +4,36 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.fragment.app.Fragment -import androidx.lifecycle.ViewModelProviders +import android.widget.Toast +import androidx.recyclerview.widget.LinearLayoutManager +import io.realm.Realm +import io.realm.RealmResults +import kotlinx.android.synthetic.main.fragment_history.* +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch import net.pokeranalytics.android.R +import net.pokeranalytics.android.model.realm.Session +import net.pokeranalytics.android.ui.adapter.HistoryAdapter import net.pokeranalytics.android.util.PokerAnalyticsFragment -import net.pokeranalytics.android.util.data.SessionViewModel +import net.pokeranalytics.android.util.data.sessionDao +import timber.log.Timber +import java.util.* class HistoryFragment : PokerAnalyticsFragment() { companion object { - fun newInstance(): HistoryFragment { val fragment = HistoryFragment() val bundle = Bundle() fragment.arguments = bundle return fragment } - } - private lateinit var sessionViewModel: SessionViewModel + private lateinit var historyAdapter: HistoryAdapter + private var realmSessions: RealmResults? = null override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { return inflater.inflate(R.layout.fragment_history, container, false) @@ -31,20 +41,57 @@ class HistoryFragment : PokerAnalyticsFragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - - sessionViewModel = ViewModelProviders.of(this).get(SessionViewModel::class.java) - initData() } + override fun onDestroyView() { + super.onDestroyView() + realmSessions?.removeAllChangeListeners() + } + /** * Init data */ private fun initData() { - sessionViewModel.getAllSessions() + realmSessions = getRealm().sessionDao().findAllSessions() + realmSessions?.let { + + val viewManager = LinearLayoutManager(requireContext()) + historyAdapter = HistoryAdapter(it) + + recyclerView.apply { + setHasFixedSize(true) + layoutManager = viewManager + adapter = historyAdapter + } + + it.addChangeListener { newSessions -> + Toast.makeText(requireContext(), "Change listener: ${newSessions.size}", Toast.LENGTH_SHORT).show() + historyAdapter.notifyDataSetChanged() + } + } + + GlobalScope.launch(Dispatchers.Main) { + delay(2000) + + realmSessions?.first()?.let { + + val realm = Realm.getDefaultInstance() + + val mySession = realm.copyFromRealm(it) + mySession.creationDate = Date() + + realm.beginTransaction() + realm.copyToRealmOrUpdate(mySession) + realm.commitTransaction() + + realm.close() + } + + } } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/SessionRowView.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/SessionRowView.kt new file mode 100644 index 00000000..6800081a --- /dev/null +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/SessionRowView.kt @@ -0,0 +1,58 @@ +package net.pokeranalytics.android.ui.view + +import android.widget.FrameLayout +import android.content.Context +import android.graphics.Color +import android.util.AttributeSet +import android.view.LayoutInflater +import androidx.constraintlayout.widget.ConstraintLayout +import kotlinx.android.synthetic.main.row_session.view.* +import net.pokeranalytics.android.R +import net.pokeranalytics.android.model.realm.Session +import timber.log.Timber + + +class SessionRowView : FrameLayout { + + private lateinit var rowHistorySession: ConstraintLayout + + /** + * Constructors + */ + constructor(context: Context) : super(context) { + init() + } + + constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) { + init() + } + + constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr) { + init() + } + + /** + * Init + * + * @param attrs + */ + private fun init() { + val layoutInflater = LayoutInflater.from(context) + rowHistorySession = layoutInflater.inflate(R.layout.row_session, this, false) as ConstraintLayout + val layoutParams = FrameLayout.LayoutParams( + FrameLayout.LayoutParams.MATCH_PARENT, + FrameLayout.LayoutParams.WRAP_CONTENT + ) + + addView(rowHistorySession, layoutParams) + } + + /** + * Set the session data to the view + */ + fun setData(session: Session) { + Timber.d("Set data: ${session.creationDate}") + rowHistorySession.date.text = session.creationDate.toString() + } + +} \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/ui/viewmodel/SessionViewModel.kt b/app/src/main/java/net/pokeranalytics/android/ui/viewmodel/SessionViewModel.kt deleted file mode 100644 index 06b629da..00000000 --- a/app/src/main/java/net/pokeranalytics/android/ui/viewmodel/SessionViewModel.kt +++ /dev/null @@ -1,78 +0,0 @@ -package net.pokeranalytics.android.util.data - -import android.app.Application -import androidx.lifecycle.AndroidViewModel -import androidx.lifecycle.LiveData -import androidx.lifecycle.MutableLiveData -import io.realm.OrderedRealmCollectionChangeListener -import io.realm.Realm -import io.realm.RealmResults -import net.pokeranalytics.android.model.realm.Session -import net.pokeranalytics.android.util.data.sessionDao - -/** - * Session View Model - */ -class SessionViewModel(application: Application) : AndroidViewModel(application) { - - private var realm = Realm.getDefaultInstance() - private var results: RealmResults - private val observablePlaces = MutableLiveData>() - - private var realmChangeListener = OrderedRealmCollectionChangeListener> { t, changeSet -> - observablePlaces.value = realm.copyFromRealm(t) - } - - init { - results = realm.sessionDao().findAllSessions() - } - - override fun onCleared() { - super.onCleared() - results.removeChangeListener(realmChangeListener) - realm.close() - } - - /** - * Get all sessions - */ - fun getAllSessions(): LiveData> { - results.addChangeListener(realmChangeListener) - observablePlaces.value = realm.copyFromRealm(results) - return observablePlaces - } - - /** - * Get session by id - */ - fun getSessionById(id: Int): Session? { - if (!realm.isClosed) { - val session = realm.sessionDao().findSessionById(id) - if (session != null) { - return realm.copyFromRealm(session) - } - } - return null - } - - /** - * Create or update a session - */ - fun createOrUpdateSession(session: Session): Session? { - if (!realm.isClosed) { - return realm.sessionDao().createOrUpdateSession(session) - } - - return null - } - - /** - * Delete a session - */ - fun deleteSession(sessionId: Int) { - if (!realm.isClosed) { - realm.sessionDao().deleteSession(sessionId) - } - } - -} \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/util/PokerAnalyticsActivity.kt b/app/src/main/java/net/pokeranalytics/android/util/PokerAnalyticsActivity.kt index 80c41111..658e2986 100644 --- a/app/src/main/java/net/pokeranalytics/android/util/PokerAnalyticsActivity.kt +++ b/app/src/main/java/net/pokeranalytics/android/util/PokerAnalyticsActivity.kt @@ -3,11 +3,27 @@ package net.pokeranalytics.android.util import android.os.Bundle import android.os.PersistableBundle import androidx.appcompat.app.AppCompatActivity +import io.realm.Realm -open class PokerAnalyticsActivity: AppCompatActivity() { +open class PokerAnalyticsActivity : AppCompatActivity() { - override fun onCreate(savedInstanceState: Bundle?, persistentState: PersistableBundle?) { - super.onCreate(savedInstanceState, persistentState) - } + private lateinit var realm: Realm + + override fun onCreate(savedInstanceState: Bundle?, persistentState: PersistableBundle?) { + super.onCreate(savedInstanceState, persistentState) + realm = Realm.getDefaultInstance() + } + + override fun onDestroy() { + super.onDestroy() + realm.close() + } + + /** + * Return the realm instance + */ + fun getRealm(): Realm { + return realm + } } \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/util/PokerAnalyticsFragment.kt b/app/src/main/java/net/pokeranalytics/android/util/PokerAnalyticsFragment.kt index f083b551..721dd024 100644 --- a/app/src/main/java/net/pokeranalytics/android/util/PokerAnalyticsFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/util/PokerAnalyticsFragment.kt @@ -3,6 +3,7 @@ package net.pokeranalytics.android.util import android.os.Bundle import androidx.appcompat.app.AppCompatActivity import androidx.fragment.app.Fragment +import io.realm.Realm open class PokerAnalyticsFragment: Fragment() { @@ -10,4 +11,16 @@ open class PokerAnalyticsFragment: Fragment() { super.onCreate(savedInstanceState) } + override fun onDestroyView() { + super.onDestroyView() + } + + /** + * Get the realm instance + */ + fun getRealm(): Realm { + val pokerAnalyticsActivity = activity as PokerAnalyticsActivity + return pokerAnalyticsActivity.getRealm() + } + } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_home.xml b/app/src/main/res/layout/activity_home.xml new file mode 100644 index 00000000..6668dbb0 --- /dev/null +++ b/app/src/main/res/layout/activity_home.xml @@ -0,0 +1,31 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml deleted file mode 100644 index 1e0966f1..00000000 --- a/app/src/main/res/layout/activity_main.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_history.xml b/app/src/main/res/layout/fragment_history.xml index 05c56d34..5b771f93 100644 --- a/app/src/main/res/layout/fragment_history.xml +++ b/app/src/main/res/layout/fragment_history.xml @@ -1,23 +1,21 @@ + 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/container" + android:layout_width="match_parent" + android:layout_height="match_parent" + tools:context=".ui.activity.HomeActivity"> - + \ No newline at end of file diff --git a/app/src/main/res/layout/row_history_session.xml b/app/src/main/res/layout/row_history_session.xml index 218e6546..c4c27304 100644 --- a/app/src/main/res/layout/row_history_session.xml +++ b/app/src/main/res/layout/row_history_session.xml @@ -1,23 +1,12 @@ - + android:layout_height="wrap_content"> - + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/row_session.xml b/app/src/main/res/layout/row_session.xml new file mode 100644 index 00000000..6e56cf1e --- /dev/null +++ b/app/src/main/res/layout/row_session.xml @@ -0,0 +1,25 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/menu/navigation.xml b/app/src/main/res/menu/navigation.xml index f7f67d3a..6daee079 100644 --- a/app/src/main/res/menu/navigation.xml +++ b/app/src/main/res/menu/navigation.xml @@ -2,7 +2,7 @@