From d284b73abf963ae21f4380a3f4e9f77bb884e9a9 Mon Sep 17 00:00:00 2001 From: liveHarshit Date: Sun, 6 Jan 2019 21:08:04 +0530 Subject: [PATCH] feat: Remove search time activity with fragment using navigation (#822) --- .../openevent/general/MainActivity.kt | 3 +- .../general/search/SearchFragment.kt | 7 +- .../general/search/SearchLocationActivity.kt | 1 - ...hTimeActivity.kt => SearchTimeFragment.kt} | 68 ++++++++++++------- ...arch_time.xml => fragment_search_time.xml} | 7 +- .../main/res/navigation/navigation_graph.xml | 4 ++ .../openevent/general/search/GeoLocationUI.kt | 2 - 7 files changed, 56 insertions(+), 36 deletions(-) rename app/src/main/java/org/fossasia/openevent/general/search/{SearchTimeActivity.kt => SearchTimeFragment.kt} (59%) rename app/src/main/res/layout/{activity_search_time.xml => fragment_search_time.xml} (94%) diff --git a/app/src/main/java/org/fossasia/openevent/general/MainActivity.kt b/app/src/main/java/org/fossasia/openevent/general/MainActivity.kt index 8c0a0a7ab8..4680dcd894 100644 --- a/app/src/main/java/org/fossasia/openevent/general/MainActivity.kt +++ b/app/src/main/java/org/fossasia/openevent/general/MainActivity.kt @@ -11,8 +11,7 @@ import kotlinx.android.synthetic.main.activity_main.navigation import kotlinx.android.synthetic.main.activity_main.navigationAuth import org.fossasia.openevent.general.order.LAUNCH_TICKETS import org.fossasia.openevent.general.order.TICKETS - -private const val TO_SEARCH: String = "ToSearchFragment" +import org.fossasia.openevent.general.search.TO_SEARCH class MainActivity : AppCompatActivity() { private lateinit var navController: NavController diff --git a/app/src/main/java/org/fossasia/openevent/general/search/SearchFragment.kt b/app/src/main/java/org/fossasia/openevent/general/search/SearchFragment.kt index 32daa116c8..d8f0f6271f 100644 --- a/app/src/main/java/org/fossasia/openevent/general/search/SearchFragment.kt +++ b/app/src/main/java/org/fossasia/openevent/general/search/SearchFragment.kt @@ -19,6 +19,7 @@ import org.fossasia.openevent.general.R import org.fossasia.openevent.general.utils.nullToEmpty import org.koin.androidx.viewmodel.ext.android.viewModel import androidx.core.view.MenuItemCompat +import androidx.navigation.Navigation import org.fossasia.openevent.general.MainActivity private const val FROM_SEARCH: String = "FromSearchFragment" @@ -47,9 +48,9 @@ class SearchFragment : Fragment() { setHasOptionsMenu(true) rootView.timeTextView.setOnClickListener { - val intent = Intent(activity, SearchTimeActivity::class.java) - intent.putExtra(SEARCH_TIME, rootView.timeTextView.text.toString()) - startActivity(intent) + val bundle = Bundle() + bundle.putString(SEARCH_TIME, rootView.timeTextView.text.toString()) + Navigation.findNavController(rootView).navigate(R.id.searchTimeFragment, bundle) } if (searchViewModel.savedDate != null) { diff --git a/app/src/main/java/org/fossasia/openevent/general/search/SearchLocationActivity.kt b/app/src/main/java/org/fossasia/openevent/general/search/SearchLocationActivity.kt index 2263023710..c7008b9922 100644 --- a/app/src/main/java/org/fossasia/openevent/general/search/SearchLocationActivity.kt +++ b/app/src/main/java/org/fossasia/openevent/general/search/SearchLocationActivity.kt @@ -16,7 +16,6 @@ import org.fossasia.openevent.general.R import org.koin.androidx.viewmodel.ext.android.viewModel private const val FROM_SEARCH: String = "FromSearchFragment" -private const val TO_SEARCH: String = "ToSearchFragment" const val LOCATION_PERMISSION_REQUEST = 1000 class SearchLocationActivity : AppCompatActivity() { diff --git a/app/src/main/java/org/fossasia/openevent/general/search/SearchTimeActivity.kt b/app/src/main/java/org/fossasia/openevent/general/search/SearchTimeFragment.kt similarity index 59% rename from app/src/main/java/org/fossasia/openevent/general/search/SearchTimeActivity.kt rename to app/src/main/java/org/fossasia/openevent/general/search/SearchTimeFragment.kt index a8dbf8ef91..c78f8ec76e 100644 --- a/app/src/main/java/org/fossasia/openevent/general/search/SearchTimeActivity.kt +++ b/app/src/main/java/org/fossasia/openevent/general/search/SearchTimeFragment.kt @@ -3,9 +3,18 @@ package org.fossasia.openevent.general.search import android.app.DatePickerDialog import android.content.Intent import android.os.Bundle +import android.view.LayoutInflater import android.view.MenuItem +import android.view.View +import android.view.ViewGroup import androidx.appcompat.app.AppCompatActivity -import kotlinx.android.synthetic.main.activity_search_time.* +import androidx.fragment.app.Fragment +import kotlinx.android.synthetic.main.fragment_search_time.view.anytimeTextView +import kotlinx.android.synthetic.main.fragment_search_time.view.todayTextView +import kotlinx.android.synthetic.main.fragment_search_time.view.tomorrowTextView +import kotlinx.android.synthetic.main.fragment_search_time.view.thisWeekendTextView +import kotlinx.android.synthetic.main.fragment_search_time.view.nextMonthTextView +import kotlinx.android.synthetic.main.fragment_search_time.view.timeTextView import org.fossasia.openevent.general.MainActivity import org.fossasia.openevent.general.R import org.fossasia.openevent.general.event.EventUtils.getSimpleFormattedDate @@ -17,17 +26,22 @@ const val TODAY = "Today" const val TOMORROW = "Tomorrow" const val THIS_WEEKEND = "This Weekend" const val NEXT_MONTH = "In the next month" +const val TO_SEARCH = "ToSearchFragment" -class SearchTimeActivity : AppCompatActivity() { +class SearchTimeFragment : Fragment() { private val searchTimeViewModel by viewModel() - private val TO_SEARCH: String = "ToSearchFragment" + private lateinit var rootView: View - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_search_time) - this.supportActionBar?.setDisplayHomeAsUpEnabled(true) - this.supportActionBar?.title = "" - setCurrentChoice(intent.getStringExtra(SEARCH_TIME)) + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { + rootView = inflater.inflate(R.layout.fragment_search_time, container, false) + + val thisActivity = activity + if (thisActivity is AppCompatActivity) { + thisActivity.supportActionBar?.title = "" + thisActivity.supportActionBar?.setDisplayHomeAsUpEnabled(true) + } + setHasOptionsMenu(true) + setCurrentChoice(arguments?.getString(SEARCH_TIME)) val calendar = Calendar.getInstance() @@ -42,12 +56,12 @@ class SearchTimeActivity : AppCompatActivity() { redirectToSearch() } - anytimeTextView.setOnClickListener { + rootView.anytimeTextView.setOnClickListener { searchTimeViewModel.saveDate(ANYTIME) redirectToSearch() } - todayTextView.setOnClickListener { + rootView.todayTextView.setOnClickListener { searchTimeViewModel.saveDate(getSimpleFormattedDate(calendar.time)) calendar.add(Calendar.DATE, 1) searchTimeViewModel.saveNextDate(getSimpleFormattedDate(calendar.time)) @@ -55,7 +69,7 @@ class SearchTimeActivity : AppCompatActivity() { redirectToSearch() } - tomorrowTextView.setOnClickListener { + rootView.tomorrowTextView.setOnClickListener { calendar.add(Calendar.DATE, 1) searchTimeViewModel.saveNextDate(getSimpleFormattedDate(calendar.time)) calendar.add(Calendar.DATE, 1) @@ -64,7 +78,7 @@ class SearchTimeActivity : AppCompatActivity() { redirectToSearch() } - thisWeekendTextView.setOnClickListener { + rootView.thisWeekendTextView.setOnClickListener { val today = calendar.get(Calendar.DAY_OF_WEEK) if (today != Calendar.SATURDAY) { val offset = Calendar.SATURDAY - today @@ -77,7 +91,7 @@ class SearchTimeActivity : AppCompatActivity() { redirectToSearch() } - nextMonthTextView.setOnClickListener { + rootView.nextMonthTextView.setOnClickListener { val today = calendar.get(Calendar.DAY_OF_MONTH) val offset = 30 - today calendar.add(Calendar.DATE, offset) @@ -88,39 +102,43 @@ class SearchTimeActivity : AppCompatActivity() { redirectToSearch() } - timeTextView.setOnClickListener { - DatePickerDialog(this, date, calendar + rootView.timeTextView.setOnClickListener { + DatePickerDialog(context, date, calendar .get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH)).show() } + + return rootView } private fun redirectToSearch() { - val intent = Intent(this, MainActivity::class.java).setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP) + val intent = Intent(context, MainActivity::class.java).setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP) val bundle = Bundle() bundle.putBoolean(TO_SEARCH, true) intent.putExtras(bundle) startActivity(intent) + activity?.overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_right) + activity?.finish() } override fun onOptionsItemSelected(item: MenuItem): Boolean { return when (item.itemId) { android.R.id.home -> { - onBackPressed() + activity?.onBackPressed() true } else -> super.onOptionsItemSelected(item) } } - private fun setCurrentChoice(value: String) { + private fun setCurrentChoice(value: String?) { when (value) { - ANYTIME -> anytimeTextView.setCheckMarkDrawable(R.drawable.ic_checked) - TODAY -> todayTextView.setCheckMarkDrawable(R.drawable.ic_checked) - TOMORROW -> tomorrowTextView.setCheckMarkDrawable(R.drawable.ic_checked) - THIS_WEEKEND -> thisWeekendTextView.setCheckMarkDrawable(R.drawable.ic_checked) - NEXT_MONTH -> nextMonthTextView.setCheckMarkDrawable(R.drawable.ic_checked) - else -> timeTextView.setCheckMarkDrawable(R.drawable.ic_checked) + ANYTIME -> rootView.anytimeTextView.setCheckMarkDrawable(R.drawable.ic_checked) + TODAY -> rootView.todayTextView.setCheckMarkDrawable(R.drawable.ic_checked) + TOMORROW -> rootView.tomorrowTextView.setCheckMarkDrawable(R.drawable.ic_checked) + THIS_WEEKEND -> rootView.thisWeekendTextView.setCheckMarkDrawable(R.drawable.ic_checked) + NEXT_MONTH -> rootView.nextMonthTextView.setCheckMarkDrawable(R.drawable.ic_checked) + else -> rootView.timeTextView.setCheckMarkDrawable(R.drawable.ic_checked) } } } diff --git a/app/src/main/res/layout/activity_search_time.xml b/app/src/main/res/layout/fragment_search_time.xml similarity index 94% rename from app/src/main/res/layout/activity_search_time.xml rename to app/src/main/res/layout/fragment_search_time.xml index e0410ba9fa..66074cf6b0 100644 --- a/app/src/main/res/layout/activity_search_time.xml +++ b/app/src/main/res/layout/fragment_search_time.xml @@ -1,10 +1,11 @@ + android:orientation="vertical" + tools:context="org.fossasia.openevent.general.search.SearchTimeFragment"> - + diff --git a/app/src/main/res/navigation/navigation_graph.xml b/app/src/main/res/navigation/navigation_graph.xml index 746516605a..3b9967f3c4 100644 --- a/app/src/main/res/navigation/navigation_graph.xml +++ b/app/src/main/res/navigation/navigation_graph.xml @@ -15,6 +15,10 @@ android:id="@+id/searchFragment" android:name="org.fossasia.openevent.general.search.SearchFragment" android:label="SearchFragment" /> +