Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 6 additions & 7 deletions app/src/main/java/org/fossasia/openevent/general/AuthActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import android.view.MenuItem
import kotlinx.android.synthetic.main.activity_auth.*
import org.fossasia.openevent.general.auth.LoginFragment
import org.fossasia.openevent.general.auth.SignUpFragment
import org.fossasia.openevent.general.utils.Utils.loadFragment

class AuthActivity : AppCompatActivity() {

Expand All @@ -19,13 +20,13 @@ class AuthActivity : AppCompatActivity() {
R.id.navigation_login -> {
supportActionBar?.title = "Login"
fragment = LoginFragment()
loadFragment(fragment)
setFragment(fragment)
return@OnNavigationItemSelectedListener true
}
R.id.navigation_sign_up -> {
supportActionBar?.title = "Sign Up"
fragment = SignUpFragment()
loadFragment(fragment)
setFragment(fragment)
return@OnNavigationItemSelectedListener true
}
}
Expand All @@ -43,15 +44,13 @@ class AuthActivity : AppCompatActivity() {

supportActionBar?.title = "Login"

loadFragment(LoginFragment())
setFragment(LoginFragment())
}

private fun loadFragment(fragment: Fragment) {
private fun setFragment(fragment: Fragment) {
if (bundle != null)
fragment.arguments = bundle
supportFragmentManager.beginTransaction()
.replace(R.id.frameContainerAuth, fragment)
.commit()
loadFragment(supportFragmentManager, fragment, frameContainerAuth.id, false)
}

override fun onOptionsItemSelected(item: MenuItem?): Boolean {
Expand Down
40 changes: 12 additions & 28 deletions app/src/main/java/org/fossasia/openevent/general/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,8 @@ import org.fossasia.openevent.general.order.LAUNCH_TICKETS
import org.fossasia.openevent.general.order.OrdersUnderUserFragment
import org.fossasia.openevent.general.order.TICKETS
import org.fossasia.openevent.general.search.SearchFragment
import timber.log.Timber
import org.fossasia.openevent.general.utils.Utils.checkAndLoadFragment
import org.fossasia.openevent.general.utils.Utils.loadFragment

private const val TO_SEARCH: String = "ToSearchFragment"

Expand All @@ -29,31 +30,31 @@ class MainActivity : AppCompatActivity() {
R.id.navigation_events -> {
supportActionBar?.title = "Events"
fragment = EventsFragment()
checkAndLoadFragment(fragment)
checkAndLoadFragment(supportFragmentManager, fragment, frameContainer.id)
return@OnNavigationItemSelectedListener true
}
R.id.navigation_search -> {
supportActionBar?.title = "Search"
fragment = SearchFragment()
checkAndLoadFragment(fragment)
checkAndLoadFragment(supportFragmentManager, fragment, frameContainer.id)
return@OnNavigationItemSelectedListener true
}
R.id.navigation_profile -> {
supportActionBar?.title = "Profile"
fragment = ProfileFragment()
checkAndLoadFragment(fragment)
checkAndLoadFragment(supportFragmentManager, fragment, frameContainer.id)
return@OnNavigationItemSelectedListener true
}
R.id.navigation_favorite -> {
supportActionBar?.title = "Likes"
fragment = FavoriteFragment()
checkAndLoadFragment(fragment)
checkAndLoadFragment(supportFragmentManager, fragment, frameContainer.id)
return@OnNavigationItemSelectedListener true
}
R.id.navigation_tickets -> {
supportActionBar?.title = "Tickets"
fragment = OrdersUnderUserFragment()
checkAndLoadFragment(fragment)
checkAndLoadFragment(supportFragmentManager, fragment, frameContainer.id)
return@OnNavigationItemSelectedListener true
}
}
Expand All @@ -72,7 +73,7 @@ class MainActivity : AppCompatActivity() {
var openEventsFragment = true

if (bundle != null && bundle.getBoolean(TO_SEARCH)) {
loadFragment(SearchFragment())
loadFragment(supportFragmentManager, SearchFragment(), frameContainer.id)
supportActionBar?.title = "Search"
navigation.selectedItemId = navigation_search
openEventsFragment = false
Expand All @@ -81,19 +82,19 @@ class MainActivity : AppCompatActivity() {
if (bundle != null && bundle.getBoolean(LAUNCH_ATTENDEE)) {
val fragment = AttendeeFragment()
fragment.arguments = bundle
loadFragment(fragment)
loadFragment(supportFragmentManager, fragment, frameContainer.id)
openEventsFragment = false
}

if (bundle != null && (bundle.getBoolean(TICKETS) || bundle.getBoolean(LAUNCH_TICKETS))) {
loadFragment(OrdersUnderUserFragment())
loadFragment(supportFragmentManager, OrdersUnderUserFragment(), frameContainer.id)
supportActionBar?.title = "Tickets"
navigation.selectedItemId = R.id.navigation_tickets
openEventsFragment = false
}

if (savedInstanceState == null && openEventsFragment)
loadFragment(EventsFragment())
loadFragment(supportFragmentManager, EventsFragment(), frameContainer.id)
}

override fun onCreateOptionsMenu(menu: Menu): Boolean {
Expand All @@ -108,23 +109,6 @@ class MainActivity : AppCompatActivity() {
return super.onPrepareOptionsMenu(menu)
}

private fun checkAndLoadFragment(fragment: Fragment) {
val savedFragment = supportFragmentManager.findFragmentByTag(fragment::class.java.name)
if (savedFragment != null) {
loadFragment(savedFragment)
Timber.d("Loading fragment from stack ${fragment::class.java}")
} else {
loadFragment(fragment)
}
}

private fun loadFragment(fragment: Fragment) {
supportFragmentManager.beginTransaction()
.replace(R.id.frameContainer, fragment, fragment::class.java.name)
.addToBackStack(null)
.commit()
}

override fun onBackPressed() {
val currentFragment = this.supportFragmentManager.findFragmentById(R.id.frameContainer)
val rootFragment = this.supportFragmentManager.findFragmentById(R.id.rootLayout)
Expand All @@ -136,7 +120,7 @@ class MainActivity : AppCompatActivity() {
is FavoriteFragment,
is OrdersUnderUserFragment,
is ProfileFragment -> {
loadFragment(EventsFragment())
loadFragment(supportFragmentManager, EventsFragment(), frameContainer.id)
navigation.selectedItemId = navigation_events
}
is EventsFragment -> finish()
Expand Down
26 changes: 26 additions & 0 deletions app/src/main/java/org/fossasia/openevent/general/utils/Utils.kt
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,14 @@ import android.content.Context
import android.graphics.BitmapFactory
import android.net.Uri
import android.support.customtabs.CustomTabsIntent
import android.support.v4.app.Fragment
import android.support.v4.app.FragmentManager
import android.support.v4.content.ContextCompat
import android.view.View
import android.view.inputmethod.InputMethodManager
import android.widget.ProgressBar
import org.fossasia.openevent.general.R
import timber.log.Timber

object Utils {

Expand Down Expand Up @@ -43,4 +46,27 @@ object Utils {
val inputManager: InputMethodManager = context?.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
inputManager.hideSoftInputFromWindow(view.windowToken, InputMethodManager.SHOW_FORCED)
}

fun checkAndLoadFragment(fragmentManager: FragmentManager,
fragment: Fragment,
frameLayout: Int,
addToBackStack: Boolean = true) {
val savedFragment = fragmentManager.findFragmentByTag(fragment::class.java.name)
if (savedFragment != null) {
loadFragment(fragmentManager, savedFragment, frameLayout, addToBackStack)
Timber.d("Loading fragment from stack ${fragment::class.java}")
} else {
loadFragment(fragmentManager, fragment, frameLayout, addToBackStack)
}
}

fun loadFragment(fragmentManager: FragmentManager,
fragment: Fragment,
frameLayout: Int,
addToBackStack: Boolean = true) {
val fragmentTransaction = fragmentManager.beginTransaction()
.replace(frameLayout, fragment, fragment::class.java.name)
if (addToBackStack) fragmentTransaction.addToBackStack(null)
fragmentTransaction.commit()
}
}