diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e581fdd5..f3d02022 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -42,7 +42,11 @@ android:launchMode="singleTop" /> + + FilterActivity.newInstance(this@HomeActivity) + 0 -> FiltersActivity.newInstance(this@HomeActivity) } } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/FilterDetailsFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/FilterDetailsFragment.kt new file mode 100644 index 00000000..a6b90282 --- /dev/null +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/FilterDetailsFragment.kt @@ -0,0 +1,245 @@ +package net.pokeranalytics.android.ui.fragment + +import android.os.Bundle +import android.view.* +import androidx.recyclerview.widget.LinearLayoutManager +import io.realm.RealmObject +import kotlinx.android.synthetic.main.fragment_filter_details.* +import kotlinx.android.synthetic.main.fragment_filter_details.view.* +import net.pokeranalytics.android.R +import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity +import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter +import net.pokeranalytics.android.ui.adapter.RowRepresentableDataSource +import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate +import net.pokeranalytics.android.ui.fragment.components.PokerAnalyticsFragment +import net.pokeranalytics.android.ui.view.RowRepresentable +import net.pokeranalytics.android.ui.view.RowViewType +import net.pokeranalytics.android.ui.view.rowrepresentable.FilterCategoryRow +import net.pokeranalytics.android.ui.view.rowrepresentable.FilterSubcategoryRow +import timber.log.Timber + + +open class FilterDetailsFragment : PokerAnalyticsFragment(), RowRepresentableDataSource, RowRepresentableDelegate { + + lateinit var parentActivity: PokerAnalyticsActivity + lateinit var item: RealmObject + lateinit var rowRepresentableAdapter: RowRepresentableAdapter + + + private var rows: ArrayList = ArrayList() + private var filterMenu: Menu? = null + private var filterCategory: FilterCategoryRow? = null + + var isUpdating = false + var shouldOpenKeyboard = true + + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { + return inflater.inflate(R.layout.fragment_filter_details, container, false) + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + initUI() + initData() + } + + override fun onCreateOptionsMenu(menu: Menu?, inflater: MenuInflater?) { + /* + inflater?.inflate(R.menu.editable_data, menu) + this.filterMenu = menu + */ + updateMenuUI() + super.onCreateOptionsMenu(menu, inflater) + } + + + override fun onOptionsItemSelected(item: MenuItem?): Boolean { + when (item!!.itemId) { + R.id.save -> saveData() + R.id.delete -> deleteData() + } + return true + } + + override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { + super.onRowSelected(position, row, fromAction) + + + filterCategory?.let { + for (subcategory in it.getSubcategories()) { + if (subcategory.getFilterRows(getRealm()).contains(row)) { + if (subcategory.getType() == FilterSubcategoryRow.Type.SINGLE) { + for (filterRow in subcategory.getFilterRows(getRealm())) { + selectedRows.remove(filterRow) + } + } + } + } + } + + if (selectedRows.contains(row)) { + selectedRows.remove(row) + } else { + selectedRows.add(row) + } + + rowRepresentableAdapter.notifyDataSetChanged() + } + + val selectedRows = ArrayList() + + override fun isSelected(row: RowRepresentable): Boolean { + return selectedRows.contains(row) + } + + override fun onRowValueChanged(value: Any?, row: RowRepresentable) { + super.onRowValueChanged(value, row) + } + + override fun adapterRows(): List? { + return rows + } + + override fun rowRepresentableForPosition(position: Int): RowRepresentable? { + return rows[position] + } + + override fun numberOfRows(): Int { + return rows.size + } + + override fun viewTypeForPosition(position: Int): Int { + val rowViewType = rowRepresentableForPosition(position)?.viewType ?: -1 + return if (rowViewType != -1) rowViewType else RowViewType.TITLE_CHECK.ordinal + } + + override fun indexForRow(row: RowRepresentable): Int { + return rows.indexOf(row) + } + + + /** + * Init UI + */ + private fun initUI() { + parentActivity = activity as PokerAnalyticsActivity + parentActivity.setSupportActionBar(toolbar) + parentActivity.supportActionBar?.setDisplayHomeAsUpEnabled(true) + setHasOptionsMenu(true) + + val viewManager = LinearLayoutManager(requireContext()) + + recyclerView.apply { + setHasFixedSize(true) + layoutManager = viewManager + } + } + + /** + * Init data + */ + private fun initData() { + + Timber.d("initData") + + this.appBar.toolbar.title = getString(R.string.filter) + + filterCategory?.let { + + this.appBar.toolbar.title = it.localizedTitle(requireContext()) + + this.rows.clear() + for (subcategory in it.getSubcategories()) { + this.rows.add(subcategory) + this.rows.addAll(subcategory.getFilterRows(getRealm())) + } + + this.rowRepresentableAdapter = RowRepresentableAdapter(this, this) + this.recyclerView.adapter = rowRepresentableAdapter + } + + } + + /** + * Update menu UI + */ + private fun updateMenuUI() { + /* + editableMenu?.findItem(R.id.delete)?.isVisible = isUpdating + editableMenu?.findItem(R.id.save)?.isVisible = true + */ + } + + /** + * Save data + */ + fun saveData() { + /* + if ((this.item as Savable).isValidForSave()) { + this.getRealm().executeTransaction { + val item = it.copyToRealmOrUpdate(this.item) + + val uniqueIdentifier = if (item is Identifiable) { + item.id + } else "" + + finishActivityWithResult(uniqueIdentifier) + } + } else { + val message = (this.item as Savable).getFailedSaveMessage() + val builder = AlertDialog.Builder(requireContext()) + .setMessage(message) + .setNegativeButton(R.string.ok, null) + builder.show() + } + */ + } + + /** + * Delete data + */ + private fun deleteData() { + /* + val builder = AlertDialog.Builder(requireContext()) + builder.setTitle(R.string.warning) + .setMessage(R.string.are_you_sure_you_want_to_do_that_) + .setNegativeButton(R.string.no, null) + .setPositiveButton(R.string.yes) { _, _ -> + //TODO: Maybe update this code, does the object need to be managed? + this.getRealm().executeTransaction { + this.liveDataType.deleteData(it, (this.item as Manageable)) + } + this.activity?.finish() + } + builder.show() + */ + } + + /** + * Finish the activity with a result + */ + private fun finishActivityWithResult(uniqueIdentifier: String) { + /* + val intent = Intent() + intent.putExtra(EditableDataActivity.IntentKey.DATA_TYPE.keyName, dataType) + intent.putExtra(EditableDataActivity.IntentKey.PRIMARY_KEY.keyName, uniqueIdentifier) + activity?.setResult(RESULT_OK, intent) + */ + activity?.finish() + } + + /** + * Set fragment data + */ + fun setData(filterCategory: Int) { + + this.filterCategory = FilterCategoryRow.values()[filterCategory] + + /* + this.dataType = dataType + this.liveDataType = LiveData.values()[dataType] + this.primaryKey = primaryKey + */ + } + +} \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/FilterDataFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/FiltersFragment.kt similarity index 79% rename from app/src/main/java/net/pokeranalytics/android/ui/fragment/FilterDataFragment.kt rename to app/src/main/java/net/pokeranalytics/android/ui/fragment/FiltersFragment.kt index cc530abe..ed9186d9 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/FilterDataFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/FiltersFragment.kt @@ -5,24 +5,25 @@ import android.view.* import androidx.recyclerview.widget.LinearLayoutManager import io.realm.RealmObject import kotlinx.android.synthetic.main.fragment_editable_data.* -import kotlinx.android.synthetic.main.fragment_filter.view.* +import kotlinx.android.synthetic.main.fragment_filters.view.* import net.pokeranalytics.android.R +import net.pokeranalytics.android.ui.activity.FilterDetailsActivity import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate import net.pokeranalytics.android.ui.adapter.StaticRowRepresentableDataSource import net.pokeranalytics.android.ui.fragment.components.PokerAnalyticsFragment import net.pokeranalytics.android.ui.view.RowRepresentable -import net.pokeranalytics.android.ui.view.rowrepresentable.FilterRow +import net.pokeranalytics.android.ui.view.rowrepresentable.FilterCategoryRow +import timber.log.Timber -open class FilterDataFragment : PokerAnalyticsFragment(), StaticRowRepresentableDataSource, RowRepresentableDelegate { +open class FiltersFragment : PokerAnalyticsFragment(), StaticRowRepresentableDataSource, RowRepresentableDelegate { lateinit var parentActivity: PokerAnalyticsActivity lateinit var item: RealmObject lateinit var rowRepresentableAdapter: RowRepresentableAdapter - private var rows: ArrayList = ArrayList() private var filterMenu: Menu? = null private var dataType: Int? = null @@ -32,7 +33,7 @@ open class FilterDataFragment : PokerAnalyticsFragment(), StaticRowRepresentable var shouldOpenKeyboard = true override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { - return inflater.inflate(R.layout.fragment_filter, container, false) + return inflater.inflate(R.layout.fragment_filters, container, false) } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { @@ -65,6 +66,12 @@ open class FilterDataFragment : PokerAnalyticsFragment(), StaticRowRepresentable override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { super.onRowSelected(position, row, fromAction) + + if (row is FilterCategoryRow) { + Timber.d("Subcategories: ${row.getSubcategories()}") + FilterDetailsActivity.newInstanceForResult(this, row.ordinal, 1000) + } + } override fun onRowValueChanged(value: Any?, row: RowRepresentable) { @@ -95,37 +102,11 @@ open class FilterDataFragment : PokerAnalyticsFragment(), StaticRowRepresentable this.appBar.toolbar.title = getString(R.string.filter) - rows.addAll(FilterRow.values()) + rows.addAll(FilterCategoryRow.values()) this.rowRepresentableAdapter = RowRepresentableAdapter(this, this) this.recyclerView.adapter = rowRepresentableAdapter - /* - if (this.dataType != null) { - val proxyItem: RealmObject? = this.liveDataType.getData(this.getRealm(), primaryKey) - proxyItem?.let { - //TODO: Localize - this.appBar.toolbar.title = "Update ${this.liveDataType.localizedTitle(this.parentActivity).toLowerCase().capitalize()}" - isUpdating = true - } ?: run { - //TODO: Localize - this.appBar.toolbar.title = this.liveDataType.newEntityLocalizedTitle(requireContext()) - } - this.item = this.liveDataType.updateOrCreate(this.getRealm(), primaryKey) - - val dataSource = getDataSource() - this.rowRepresentableAdapter = RowRepresentableAdapter(getDataSource(), this) - this.recyclerView.adapter = rowRepresentableAdapter - - // When creating an object, open automatically the keyboard for the first row - if (!isUpdating && shouldOpenKeyboard) { - val row = dataSource.adapterRows()?.firstOrNull() - row?.let { - onRowSelected(0, it) - } - } - } - */ } /** 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 2a82aee7..b828c444 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 @@ -41,6 +41,7 @@ enum class RowViewType(private var layoutRes: Int) { INFO(R.layout.row_info), // Row + CLASSIC_HEADER_TITLE(R.layout.row_header_title), TITLE(R.layout.row_title), TITLE_ARROW(R.layout.row_title_arrow), TITLE_VALUE(R.layout.row_title_value), @@ -75,7 +76,7 @@ enum class RowViewType(private var layoutRes: Int) { HEADER_TITLE, HEADER_TITLE_VALUE, HEADER_TITLE_AMOUNT, HEADER_TITLE_AMOUNT_BIG, LOCATION_TITLE, INFO -> CustomizableRowViewHolder(layout) // Row View Holder - TITLE, TITLE_ARROW, TITLE_VALUE, TITLE_VALUE_ARROW, TITLE_GRID, TITLE_SWITCH, TITLE_CHECK, DATA, BOTTOM_SHEET_DATA, LOADER -> RowViewHolder( + CLASSIC_HEADER_TITLE, TITLE, TITLE_ARROW, TITLE_VALUE, TITLE_VALUE_ARROW, TITLE_GRID, TITLE_SWITCH, TITLE_CHECK, DATA, BOTTOM_SHEET_DATA, LOADER -> RowViewHolder( layout ) diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/FilterCategoryRow.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/FilterCategoryRow.kt new file mode 100644 index 00000000..af5d5f88 --- /dev/null +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/FilterCategoryRow.kt @@ -0,0 +1,91 @@ +package net.pokeranalytics.android.ui.view.rowrepresentable + +import net.pokeranalytics.android.R +import net.pokeranalytics.android.ui.view.RowRepresentable +import net.pokeranalytics.android.ui.view.RowViewType + +enum class FilterCategoryRow : RowRepresentable { + + GENERAL, + DATE, + DURATION, + SESSION, + CASH, + TOURNAMENT, + ONLINE, + RESULT, + TRANSACTION_TYPES, + + // Title Custom fields + LOCATION, + BANKROLL, + PLAYERS; + + override val resId: Int? + get() { + return when (this) { + GENERAL -> R.string.general + DATE -> R.string.date + DURATION -> R.string.duration + SESSION -> R.string.session + CASH -> R.string.cash + TOURNAMENT -> R.string.tournament + ONLINE -> R.string.online + RESULT -> R.string.result + TRANSACTION_TYPES -> R.string.operation_types + LOCATION -> R.string.location + BANKROLL -> R.string.bankroll + PLAYERS -> R.string.players + } + } + + override val viewType: Int + get() { + return when (this) { + GENERAL, DATE, DURATION, SESSION, CASH, TOURNAMENT, ONLINE, RESULT, TRANSACTION_TYPES, + LOCATION, BANKROLL, PLAYERS -> RowViewType.TITLE_VALUE_ARROW.ordinal + } + } + + /** + * Get subcategories of filters + */ + fun getSubcategories(): ArrayList { + val subcategories = ArrayList() + + when (this) { + GENERAL -> subcategories.addAll( + arrayListOf( + FilterSubcategoryRow.CASH_TOURNAMENT, FilterSubcategoryRow.LIVE_ONLINE, FilterSubcategoryRow.GAME, + FilterSubcategoryRow.LIMIT_TYPE, FilterSubcategoryRow.TABLE_SIZE + ) + ) + DATE -> subcategories.addAll( + arrayListOf( + FilterSubcategoryRow.DYNAMIC_DATE, FilterSubcategoryRow.FIXED_DATE, FilterSubcategoryRow.DURATION, FilterSubcategoryRow.YEAR, + FilterSubcategoryRow.WEEKDAYS_OR_WEEKEND, FilterSubcategoryRow.DAY_OF_WEEK, FilterSubcategoryRow.MONTH_OF_YEAR + ) + ) + DURATION -> subcategories.addAll(arrayListOf(FilterSubcategoryRow.SESSION_DURATION, FilterSubcategoryRow.RANGE)) + SESSION -> subcategories.addAll(arrayListOf()) + CASH -> subcategories.addAll(arrayListOf(FilterSubcategoryRow.BLINDS, FilterSubcategoryRow.CASH_RE_BUY_COUNT)) + TOURNAMENT -> subcategories.addAll( + arrayListOf( + FilterSubcategoryRow.TOURNAMENT_TYPE, FilterSubcategoryRow.COMPLETION_PERCENTAGE, FilterSubcategoryRow.PLACE, + FilterSubcategoryRow.PLAYERS_COUNT, FilterSubcategoryRow.TOURNAMENT_RE_BUY_COUNT, FilterSubcategoryRow.BUY_IN + ) + ) + ONLINE -> subcategories.addAll(arrayListOf(FilterSubcategoryRow.MULTI_TABLING)) + RESULT -> subcategories.addAll(arrayListOf(FilterSubcategoryRow.VALUE)) + TRANSACTION_TYPES -> subcategories.addAll(arrayListOf()) + LOCATION -> subcategories.addAll(arrayListOf(FilterSubcategoryRow.LOCATION)) + BANKROLL -> subcategories.addAll(arrayListOf(FilterSubcategoryRow.BANKROLL)) + PLAYERS -> subcategories.addAll(arrayListOf(FilterSubcategoryRow.NUMBER_OF_PLAYERS, FilterSubcategoryRow.MULTI_PLAYER)) + + } + + return subcategories + } + + +} \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/FilterRow.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/FilterRow.kt index 0b5f2b7a..67ee210f 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/FilterRow.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/FilterRow.kt @@ -6,45 +6,22 @@ import net.pokeranalytics.android.ui.view.RowViewType enum class FilterRow : RowRepresentable { - GENERAL, - DATE, - DURATION, - SESSION, - CASH, + // General + CASH_GAME, TOURNAMENT, - ONLINE, - RESULT, - TRANSACTION_TYPES, - - // Title Custom fields - LOCATION, - BANKROLL, - PLAYERS; + LIVE, + ONLINE; override val resId: Int? get() { return when (this) { - GENERAL -> R.string.general - DATE -> R.string.date - DURATION -> R.string.duration - SESSION -> R.string.session - CASH -> R.string.cash + CASH_GAME -> R.string.cash_game TOURNAMENT -> R.string.tournament + LIVE -> R.string.live ONLINE -> R.string.online - RESULT -> R.string.result - TRANSACTION_TYPES -> R.string.operation_types - LOCATION -> R.string.location - BANKROLL -> R.string.bankroll - PLAYERS -> R.string.players } } - override val viewType: Int - get() { - return when (this) { - GENERAL, DATE, DURATION, SESSION, CASH, TOURNAMENT, ONLINE, RESULT, TRANSACTION_TYPES, - LOCATION, BANKROLL, PLAYERS -> RowViewType.TITLE_VALUE_ARROW.ordinal - } - } + override val viewType: Int = RowViewType.TITLE_CHECK.ordinal } \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/FilterSubcategoryRow.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/FilterSubcategoryRow.kt new file mode 100644 index 00000000..a9a30dbc --- /dev/null +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/FilterSubcategoryRow.kt @@ -0,0 +1,146 @@ +package net.pokeranalytics.android.ui.view.rowrepresentable + +import io.realm.Realm +import io.realm.RealmResults +import net.pokeranalytics.android.R +import net.pokeranalytics.android.model.Limit +import net.pokeranalytics.android.model.LiveData +import net.pokeranalytics.android.model.realm.Game +import net.pokeranalytics.android.ui.view.RowRepresentable +import net.pokeranalytics.android.ui.view.RowViewType + +enum class FilterSubcategoryRow : RowRepresentable { + + // General + CASH_TOURNAMENT, + LIVE_ONLINE, + GAME, + LIMIT_TYPE, + TABLE_SIZE, + + // Date + DYNAMIC_DATE, + FIXED_DATE, + DURATION, + YEAR, + WEEKDAYS_OR_WEEKEND, + DAY_OF_WEEK, + MONTH_OF_YEAR, + + // Duration + SESSION_DURATION, + RANGE, + + // Sessions + // - + + // Cash + BLINDS, + CASH_RE_BUY_COUNT, + + // Tournament + TOURNAMENT_TYPE, + COMPLETION_PERCENTAGE, + PLACE, + PLAYERS_COUNT, + TOURNAMENT_RE_BUY_COUNT, + BUY_IN, + + // Online + MULTI_TABLING, + + // Result + VALUE, + + // Transaction types + // - + + // Location + LOCATION, + + // Bankroll + BANKROLL, + + // Players + NUMBER_OF_PLAYERS, + MULTI_PLAYER; + + enum class Type { + SINGLE, + MULTIPLE, + } + + override val resId: Int? + get() { + return when(this) { + CASH_TOURNAMENT -> R.string.cash_or_tournament + LIVE_ONLINE -> R.string.live_or_online + GAME -> R.string.game + LIMIT_TYPE -> R.string.type_de_limite + TABLE_SIZE -> R.string.table_size + + DYNAMIC_DATE -> R.string.dynamic_date + FIXED_DATE -> R.string.fixed_date + DURATION -> R.string.duration + YEAR -> R.string.year + WEEKDAYS_OR_WEEKEND -> R.string.weekdays_or_weekend + DAY_OF_WEEK -> R.string.day_of_the_week + MONTH_OF_YEAR -> R.string.month_of_the_year + + SESSION_DURATION -> R.string.session_duration + RANGE -> R.string.hour_slot + + BLINDS -> R.string.blinds + CASH_RE_BUY_COUNT -> R.string.rebuy_count + + TOURNAMENT_TYPE -> R.string.tournament_type + COMPLETION_PERCENTAGE -> R.string.tournament_completion_percentage_interval + PLACE -> R.string.place + PLAYERS_COUNT -> R.string.players_count + TOURNAMENT_RE_BUY_COUNT -> R.string.rebuy_count + BUY_IN -> R.string.buyin + + MULTI_TABLING -> R.string.multi_tabling + + VALUE -> R.string.value + + LOCATION -> R.string.location + + BANKROLL -> R.string.bankroll + + NUMBER_OF_PLAYERS -> R.string.number_of_players + MULTI_PLAYER -> R.string.multiplayer + } + } + + override val viewType: Int = RowViewType.CLASSIC_HEADER_TITLE.ordinal + + /** + * Return the type of the selection + */ + fun getType() : Type { + return when(this) { + GAME -> Type.MULTIPLE + else -> Type.SINGLE + } + } + + /** + * Returns the filter rows + */ + fun getFilterRows(realm: Realm) : ArrayList { + val rows = ArrayList() + when(this) { + CASH_TOURNAMENT -> rows.addAll(arrayListOf(FilterRow.CASH_GAME, FilterRow.TOURNAMENT)) + LIVE_ONLINE -> rows.addAll(arrayListOf(FilterRow.LIVE, FilterRow.ONLINE)) + GAME -> { + val games = realm.copyFromRealm(LiveData.GAME.items(realm) as RealmResults) + rows.addAll(games) + } + LIMIT_TYPE -> rows.addAll(Limit.values()) + else -> rows.addAll(arrayListOf()) + } + return rows + } + +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_filter.xml b/app/src/main/res/layout/activity_filter_details.xml similarity index 100% rename from app/src/main/res/layout/activity_filter.xml rename to app/src/main/res/layout/activity_filter_details.xml diff --git a/app/src/main/res/layout/activity_filters.xml b/app/src/main/res/layout/activity_filters.xml new file mode 100644 index 00000000..70454fb9 --- /dev/null +++ b/app/src/main/res/layout/activity_filters.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_filter.xml b/app/src/main/res/layout/fragment_filter_details.xml similarity index 100% rename from app/src/main/res/layout/fragment_filter.xml rename to app/src/main/res/layout/fragment_filter_details.xml diff --git a/app/src/main/res/layout/fragment_filters.xml b/app/src/main/res/layout/fragment_filters.xml new file mode 100644 index 00000000..bab049a9 --- /dev/null +++ b/app/src/main/res/layout/fragment_filters.xml @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file