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 08b54500..66d07af9 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 @@ -143,8 +143,8 @@ open class Session : RealmObject(), SessionInterface, RowRepresentableDataSource * TODO: Cascade delete? */ fun delete() { - cleanup() realm.executeTransaction { + cleanup() deleteFromRealm() } } @@ -275,6 +275,8 @@ open class Session : RealmObject(), SessionInterface, RowRepresentableDataSource override var title: String = "Change that: $creationDate" override val primaryKey: String get() = this.id + + override fun getBottomSheetData(row: RowRepresentable): ArrayList { val data = ArrayList() diff --git a/app/src/main/java/net/pokeranalytics/android/ui/adapter/components/RowRepresentableAdapter.kt b/app/src/main/java/net/pokeranalytics/android/ui/adapter/components/RowRepresentableAdapter.kt index 343dfcd9..9a1eb91c 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/adapter/components/RowRepresentableAdapter.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/adapter/components/RowRepresentableAdapter.kt @@ -2,9 +2,11 @@ package net.pokeranalytics.android.ui.adapter.components import android.view.View import android.view.ViewGroup +import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.RecyclerView import net.pokeranalytics.android.ui.view.BindableHolder import net.pokeranalytics.android.ui.view.RowRepresentable +import net.pokeranalytics.android.ui.view.RowRepresentableDiffCallback import net.pokeranalytics.android.ui.view.RowViewType /** @@ -62,7 +64,10 @@ interface RowRepresentableDelegate { * @param rowRepresentableDataSource the datasource providing rows * @param rowRepresentableDelegate the delegate, notified of UI actions */ -class RowRepresentableAdapter(var rowRepresentableDataSource: RowRepresentableDataSource, var rowRepresentableDelegate: RowRepresentableDelegate? = null) : +class RowRepresentableAdapter( + var rowRepresentableDataSource: RowRepresentableDataSource, + var rowRepresentableDelegate: RowRepresentableDelegate? = null +) : RecyclerView.Adapter() { /** @@ -112,11 +117,12 @@ class RowRepresentableAdapter(var rowRepresentableDataSource: RowRepresentableDa } /** - * Refresh all adapter rows + * Update UI */ - fun refreshAllRows() { - this.rows = rowRepresentableDataSource.adapterRows() - notifyDataSetChanged() + fun updateRows(newRows: ArrayList) { + val diffResult = DiffUtil.calculateDiff(RowRepresentableDiffCallback(newRows, rows, rowRepresentableDataSource)) + this.rows = newRows + diffResult.dispatchUpdatesTo(this) } } \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/SessionFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/SessionFragment.kt index 9c3a73bb..32481276 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/SessionFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/SessionFragment.kt @@ -2,9 +2,9 @@ package net.pokeranalytics.android.ui.fragment import android.os.Bundle import android.view.* +import android.view.animation.OvershootInterpolator import android.widget.Toast import androidx.interpolator.view.animation.FastOutSlowInInterpolator -import androidx.recyclerview.widget.LinearLayoutManager import io.realm.kotlin.where import kotlinx.android.synthetic.main.fragment_session.* import net.pokeranalytics.android.R @@ -22,6 +22,7 @@ import net.pokeranalytics.android.ui.fragment.components.bottomsheet.BottomSheet import net.pokeranalytics.android.ui.fragment.components.bottomsheet.BottomSheetFragment import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.SessionRow +import net.pokeranalytics.android.ui.view.SmoothScrollLinearLayoutManager import net.pokeranalytics.android.util.toast import timber.log.Timber import java.util.* @@ -30,6 +31,8 @@ class SessionFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, Bott private lateinit var currentSession: Session private lateinit var sessionAdapter: RowRepresentableAdapter + private var sessionMenu: Menu? = null + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { return inflater.inflate(R.layout.fragment_session, container, false) @@ -42,12 +45,14 @@ class SessionFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, Bott override fun onCreateOptionsMenu(menu: Menu?, inflater: MenuInflater?) { inflater?.inflate(R.menu.session_toolbar, menu) + this.sessionMenu = menu + updateSessionUI() super.onCreateOptionsMenu(menu, inflater) } override fun onOptionsItemSelected(item: MenuItem?): Boolean { when (item!!.itemId) { - R.id.restart -> toast("Restard is clicked!") + R.id.restart -> toast("Restart is clicked!") R.id.delete -> { currentSession.delete() activity?.finish() @@ -91,7 +96,7 @@ class SessionFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, Bott override fun clickOnClear(row: RowRepresentable) { currentSession.updateValue(null, row) sessionAdapter.refreshRow(row) - when(row) { + when (row) { SessionRow.START_DATE, SessionRow.END_DATE -> updateSessionUI() } } @@ -99,7 +104,7 @@ class SessionFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, Bott override fun setValue(value: Any?, row: RowRepresentable) { currentSession.updateValue(value, row) sessionAdapter.refreshRow(row) - when(row) { + when (row) { SessionRow.START_DATE, SessionRow.END_DATE -> updateSessionUI() } } @@ -118,8 +123,7 @@ class SessionFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, Bott activity.supportActionBar?.setDisplayHomeAsUpEnabled(true) setHasOptionsMenu(true) - val viewManager = LinearLayoutManager(requireContext()) - + val viewManager = SmoothScrollLinearLayoutManager(requireContext()) recyclerView.apply { setHasFixedSize(true) layoutManager = viewManager @@ -138,7 +142,6 @@ class SessionFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, Bott false } - floatingActionButton.setExpanded(false) floatingActionButton.setOnClickListener { manageSessionState() } @@ -153,29 +156,36 @@ class SessionFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, Bott when (currentSession.getState()) { SessionState.PENDING -> { + sessionMenu?.findItem(R.id.restart)?.isVisible = false floatingActionButton.setImageResource(R.drawable.ic_outline_play) bottomAppBar.menu.findItem(R.id.stop).isVisible = false + floatingActionButton.animate().scaleX(1f).scaleY(1f).alpha(1f) + .setInterpolator(OvershootInterpolator()).start() } SessionState.STARTED -> { + sessionMenu?.findItem(R.id.restart)?.isVisible = true floatingActionButton.setImageResource(R.drawable.ic_outline_pause) bottomAppBar.menu.findItem(R.id.stop).isVisible = true + floatingActionButton.animate().scaleX(1f).scaleY(1f).alpha(1f) + .setInterpolator(OvershootInterpolator()).start() } SessionState.PAUSED -> { + sessionMenu?.findItem(R.id.restart)?.isVisible = true floatingActionButton.setImageResource(R.drawable.ic_outline_play) bottomAppBar.menu.findItem(R.id.stop).isVisible = true + floatingActionButton.animate().scaleX(1f).scaleY(1f).alpha(1f) + .setInterpolator(OvershootInterpolator()).start() } SessionState.FINISHED -> { + sessionMenu?.findItem(R.id.restart)?.isVisible = true bottomAppBar.menu.findItem(R.id.stop).isVisible = false - floatingActionButton.animate() - .scaleX(0f) - .scaleY(0f) - .alpha(0f) - .setInterpolator(FastOutSlowInInterpolator()) - .start() + floatingActionButton.animate().scaleX(0f).scaleY(0f).alpha(0f) + .setInterpolator(FastOutSlowInInterpolator()).start() } } - sessionAdapter.refreshAllRows() + sessionAdapter.updateRows(currentSession.adapterRows()) + recyclerView.smoothScrollToPosition(0) } /** diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/RowRepresentable.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/RowRepresentable.kt index e8f11af6..6174bc78 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/view/RowRepresentable.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/RowRepresentable.kt @@ -54,6 +54,11 @@ interface RowRepresentable : Localizable { get() { return null } + + val needSeparator: Boolean + get() { + return false + } } enum class SessionRow : RowRepresentable { @@ -110,6 +115,14 @@ enum class SessionRow : RowRepresentable { } } + override val needSeparator: Boolean + get() { + return when (this) { + TIPS, BANKROLL_VARIATION -> true + else -> false + } + } + override val resId: Int? get() { return when (this) { @@ -137,7 +150,7 @@ enum class SessionRow : RowRepresentable { override val viewType: Int get() { return when (this) { - DURATION, NET_HOURLY_RATE, BANKROLL_VARIATION, + DURATION, NET_HOURLY_RATE, BANKROLL_VARIATION -> RowViewType.HEADER_TITLE_VALUE.ordinal CASHED_OUT, BUY_IN, TIPS, GAME, BLINDS, LOCATION, BANKROLL, TABLE_SIZE, COMMENT, START_DATE, END_DATE, BREAK_TIME -> RowViewType.TITLE_VALUE.ordinal } @@ -259,7 +272,7 @@ enum class SettingRow : RowRepresentable { override val resId: Int? get() { - this.relatedResultsRepresentable?. let { + this.relatedResultsRepresentable?.let { return it.resId } ?: run { return super.resId diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/RowRepresentableDiffCallback.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/RowRepresentableDiffCallback.kt new file mode 100644 index 00000000..21982d75 --- /dev/null +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/RowRepresentableDiffCallback.kt @@ -0,0 +1,35 @@ +package net.pokeranalytics.android.ui.view + +import androidx.annotation.Nullable +import androidx.recyclerview.widget.DiffUtil +import net.pokeranalytics.android.ui.adapter.components.RowRepresentableDataSource + +class RowRepresentableDiffCallback( + var newRows: List, var oldRows: List, + var rowRepresentableDataSource: RowRepresentableDataSource +) : + DiffUtil.Callback() { + + override fun getOldListSize(): Int { + return oldRows.size + } + + override fun getNewListSize(): Int { + return newRows.size + } + + override fun areItemsTheSame(oldItemPosition: Int, newItemPosition: Int): Boolean { + return oldRows[oldItemPosition] === newRows[newItemPosition] + } + + override fun areContentsTheSame(oldItemPosition: Int, newItemPosition: Int): Boolean { + // Force to update all the rows that were already there + return false + } + + @Nullable + override fun getChangePayload(oldItemPosition: Int, newItemPosition: Int): Any? { + //you can return particular field for changed item. + return super.getChangePayload(oldItemPosition, newItemPosition) + } +} \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/RowViewType.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/RowViewType.kt index b5f8e226..73bf2d22 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/view/RowViewType.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/RowViewType.kt @@ -4,6 +4,9 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView +import kotlinx.android.synthetic.main.row_header_title_value.view.* +import kotlinx.android.synthetic.main.row_title.view.* +import kotlinx.android.synthetic.main.row_title_value.view.* import kotlinx.android.synthetic.main.row_title_value_action.view.* import net.pokeranalytics.android.R import net.pokeranalytics.android.ui.adapter.components.RowRepresentableDataSource @@ -19,6 +22,7 @@ interface BindableHolder { enum class RowViewType { HEADER, + HEADER_TITLE_VALUE, EDIT_TEXT, TITLE, TITLE_VALUE, @@ -33,38 +37,50 @@ enum class RowViewType { inner class TitleViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView), BindableHolder { override fun bind(row: RowRepresentable, rowRepresentableDataSource: RowRepresentableDataSource?, listener: View.OnClickListener, actionListener: View.OnClickListener?) { - itemView.title.text = row.localizedTitle(itemView.context) - itemView.container.setOnClickListener(listener) + itemView.rowTitle_title.text = row.localizedTitle(itemView.context) + itemView.rowTitle_container.setOnClickListener(listener) } } - inner class TitleValueViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView), + inner class HeaderTitleValueViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView), BindableHolder { override fun bind(row: RowRepresentable, rowRepresentableDataSource: RowRepresentableDataSource?, listener: View.OnClickListener, actionListener: View.OnClickListener?) { - itemView.title.text = row.localizedTitle(itemView.context) + itemView.rowHeaderTitleValue_title.text = row.localizedTitle(itemView.context) + rowRepresentableDataSource?.let { + itemView.rowHeaderTitleValue_value.text = it.stringForRow(row) + } + itemView.rowHeaderTitleValue_container.setOnClickListener(listener) + itemView.rowHeaderTitleValue_separator.visibility = if (row.needSeparator) View.VISIBLE else View.GONE + } + } + inner class TitleValueViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView), + BindableHolder { + override fun bind(row: RowRepresentable, rowRepresentableDataSource: RowRepresentableDataSource?, listener: View.OnClickListener, actionListener: View.OnClickListener?) { + itemView.rowTitleValue_title.text = row.localizedTitle(itemView.context) rowRepresentableDataSource?.let { - itemView.value.text = it.stringForRow(row) + itemView.rowTitleValue_value.text = it.stringForRow(row) } - itemView.container.setOnClickListener(listener) + itemView.rowTitleValue_container.setOnClickListener(listener) + itemView.rowTitleValue_separator.visibility = if (row.needSeparator) View.VISIBLE else View.GONE } } inner class TitleValueActionViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView), BindableHolder { override fun bind(row: RowRepresentable, rowRepresentableDataSource: RowRepresentableDataSource?, listener: View.OnClickListener, actionListener: View.OnClickListener?) { - itemView.title.text = row.localizedTitle(itemView.context) + itemView.rowTitleValueAction_title.text = row.localizedTitle(itemView.context) rowRepresentableDataSource?.let { rowDelegate -> val value = rowDelegate.stringForRow(row) - itemView.value.text = value - itemView.action.visibility = if (value == "--") View.GONE else View.VISIBLE + itemView.rowTitleValueAction_value.text = value + itemView.rowTitleValueAction_action.visibility = if (value == "--") View.GONE else View.VISIBLE rowDelegate.actionIconForRow(row)?.let {icon -> - itemView.action.setImageResource(icon) + itemView.rowTitleValueAction_action.setImageResource(icon) } } - itemView.container.setOnClickListener(listener) - itemView.action.setOnClickListener(actionListener) + itemView.rowTitleValueAction_container.setOnClickListener(listener) + itemView.rowTitleValueAction_action.setOnClickListener(actionListener) } } @@ -78,6 +94,13 @@ enum class RowViewType { false ) ) + HEADER_TITLE_VALUE -> HeaderTitleValueViewHolder( + LayoutInflater.from(parent.context).inflate( + R.layout.row_header_title_value, + parent, + false + ) + ) TITLE_VALUE -> TitleValueViewHolder( LayoutInflater.from(parent.context).inflate( R.layout.row_title_value, diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/SmoothScrollLinearLayoutManager.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/SmoothScrollLinearLayoutManager.kt new file mode 100644 index 00000000..3311f731 --- /dev/null +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/SmoothScrollLinearLayoutManager.kt @@ -0,0 +1,46 @@ +package net.pokeranalytics.android.ui.view + +import android.content.Context +import android.graphics.PointF +import android.util.DisplayMetrics +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.LinearSmoothScroller +import androidx.recyclerview.widget.RecyclerView + +/** + * SmoothScrollLinearLayoutManager + */ +class SmoothScrollLinearLayoutManager(context: Context) : + LinearLayoutManager(context, RecyclerView.VERTICAL, false) { + + companion object { + private const val MILLISECONDS_PER_INCH = 100f + } + + override fun smoothScrollToPosition( + recyclerView: RecyclerView, state: RecyclerView.State?, + position: Int + ) { + val smoothScroller = TopSnappedSmoothScroller(recyclerView.context) + smoothScroller.targetPosition = position + startSmoothScroll(smoothScroller) + } + + private inner class TopSnappedSmoothScroller(context: Context) : LinearSmoothScroller(context) { + + override fun computeScrollVectorForPosition(targetPosition: Int): PointF? { + return this@SmoothScrollLinearLayoutManager + .computeScrollVectorForPosition(targetPosition) + } + + override fun getVerticalSnapPreference(): Int { + return SNAP_TO_START + } + + override fun calculateSpeedPerPixel(displayMetrics: DisplayMetrics): Float { + return MILLISECONDS_PER_INCH / displayMetrics.densityDpi + } + } + + +} diff --git a/app/src/main/mipmap-hdpi/ic_launcher_round.png b/app/src/main/mipmap-hdpi/ic_launcher_round.png new file mode 100755 index 00000000..54e1f413 Binary files /dev/null and b/app/src/main/mipmap-hdpi/ic_launcher_round.png differ diff --git a/app/src/main/mipmap-mdpi/ic_launcher_round.png b/app/src/main/mipmap-mdpi/ic_launcher_round.png new file mode 100755 index 00000000..f28acbc4 Binary files /dev/null and b/app/src/main/mipmap-mdpi/ic_launcher_round.png differ diff --git a/app/src/main/mipmap-xhdpi/ic_launcher_round.png b/app/src/main/mipmap-xhdpi/ic_launcher_round.png new file mode 100755 index 00000000..5be481cb Binary files /dev/null and b/app/src/main/mipmap-xhdpi/ic_launcher_round.png differ diff --git a/app/src/main/mipmap-xxhdpi/ic_launcher_round.png b/app/src/main/mipmap-xxhdpi/ic_launcher_round.png new file mode 100755 index 00000000..77419baa Binary files /dev/null and b/app/src/main/mipmap-xxhdpi/ic_launcher_round.png differ diff --git a/app/src/main/mipmap-xxxhdpi/ic_launcher_round.png b/app/src/main/mipmap-xxxhdpi/ic_launcher_round.png new file mode 100755 index 00000000..752e527a Binary files /dev/null and b/app/src/main/mipmap-xxxhdpi/ic_launcher_round.png differ diff --git a/app/src/main/res/layout/row_header_title_value.xml b/app/src/main/res/layout/row_header_title_value.xml new file mode 100644 index 00000000..50a9081d --- /dev/null +++ b/app/src/main/res/layout/row_header_title_value.xml @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/row_separator.xml b/app/src/main/res/layout/row_separator.xml new file mode 100644 index 00000000..3f053c35 --- /dev/null +++ b/app/src/main/res/layout/row_separator.xml @@ -0,0 +1,9 @@ + + + + \ 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 deleted file mode 100644 index 079f9c7f..00000000 --- a/app/src/main/res/layout/row_session.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/row_session_view.xml b/app/src/main/res/layout/row_session_view.xml index e7bfb5b1..9abbfcf9 100644 --- a/app/src/main/res/layout/row_session_view.xml +++ b/app/src/main/res/layout/row_session_view.xml @@ -4,19 +4,19 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content" - android:background="?selectableItemBackground" - android:padding="16dp"> + android:background="?selectableItemBackground"> @@ -65,9 +68,9 @@ android:layout_height="wrap_content" android:layout_marginEnd="8dp" android:orientation="vertical" - app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintBottom_toBottomOf="@+id/gameInfo" app:layout_constraintEnd_toStartOf="@+id/nextArrow" - app:layout_constraintTop_toTopOf="parent"> + app:layout_constraintTop_toTopOf="@+id/gameType"> + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/row_title.xml b/app/src/main/res/layout/row_title.xml index 0f648782..a4d6a82d 100644 --- a/app/src/main/res/layout/row_title.xml +++ b/app/src/main/res/layout/row_title.xml @@ -2,25 +2,36 @@ + android:background="?selectableItemBackground"> + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/row_title_value.xml b/app/src/main/res/layout/row_title_value.xml index 80517a70..411da33f 100644 --- a/app/src/main/res/layout/row_title_value.xml +++ b/app/src/main/res/layout/row_title_value.xml @@ -1,40 +1,78 @@ - + android:orientation="vertical"> - + android:background="?selectableItemBackground"> - + + + + + + + + + + + app:layout_constraintStart_toStartOf="parent" + tools:visibility="visible"> + + + + - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/row_title_value_action.xml b/app/src/main/res/layout/row_title_value_action.xml index b27e805d..36e793aa 100644 --- a/app/src/main/res/layout/row_title_value_action.xml +++ b/app/src/main/res/layout/row_title_value_action.xml @@ -2,15 +2,13 @@ + android:background="?selectableItemBackground"> + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml deleted file mode 100644 index bbd3e021..00000000 --- a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml deleted file mode 100644 index bbd3e021..00000000 --- a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/src/main/res/mipmap-hdpi/ic_launcher.png old mode 100644 new mode 100755 index 898f3ed5..fa00866f Binary files a/app/src/main/res/mipmap-hdpi/ic_launcher.png and b/app/src/main/res/mipmap-hdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/app/src/main/res/mipmap-hdpi/ic_launcher_round.png old mode 100644 new mode 100755 index dffca360..54e1f413 Binary files a/app/src/main/res/mipmap-hdpi/ic_launcher_round.png and b/app/src/main/res/mipmap-hdpi/ic_launcher_round.png differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.png b/app/src/main/res/mipmap-mdpi/ic_launcher.png old mode 100644 new mode 100755 index 64ba76f7..baa8b20a Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher.png and b/app/src/main/res/mipmap-mdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/app/src/main/res/mipmap-mdpi/ic_launcher_round.png old mode 100644 new mode 100755 index dae5e082..f28acbc4 Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher_round.png and b/app/src/main/res/mipmap-mdpi/ic_launcher_round.png differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/app/src/main/res/mipmap-xhdpi/ic_launcher.png old mode 100644 new mode 100755 index e5ed4659..a921ccc1 Binary files a/app/src/main/res/mipmap-xhdpi/ic_launcher.png and b/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png old mode 100644 new mode 100755 index 14ed0af3..5be481cb Binary files a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png and b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png old mode 100644 new mode 100755 index b0907cac..493dbd99 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png and b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png old mode 100644 new mode 100755 index d8ae0315..77419baa Binary files a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png and b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png old mode 100644 new mode 100755 index 2c18de9e..cdf01efa Binary files a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png old mode 100644 new mode 100755 index beed3cdd..752e527a Binary files a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 59fdae84..f5d08d56 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -23,6 +23,7 @@ #101911 #151c15 #1b1f1b + #141714 #3b4a39 #57815a