Skip to content

Commit 029df56

Browse files
committed
Fix invitation dialog on landscape orientation
1 parent 0ce11b3 commit 029df56

File tree

5 files changed

+47
-45
lines changed

5 files changed

+47
-45
lines changed

app/src/main/java/cz/muni/fi/rpg/di/container.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ val appModule = module {
150150
* Fragments
151151
*/
152152
fragment { CharacterFragment(get()) }
153-
fragment { GameMasterFragment(get()) }
153+
fragment { GameMasterFragment() }
154154
fragment { NavHostFragment() }
155155
fragment { PartyListFragment(get()) }
156156
fragment { CharacterEditFragment(get()) }

app/src/main/java/cz/muni/fi/rpg/ui/gameMaster/GameMasterFragment.kt

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,10 @@ import android.view.Menu
55
import android.view.MenuInflater
66
import android.view.MenuItem
77
import android.view.View
8-
import android.widget.Toast
98
import androidx.lifecycle.observe
109
import androidx.navigation.fragment.findNavController
1110
import androidx.navigation.fragment.navArgs
1211
import androidx.recyclerview.widget.LinearLayoutManager
13-
import com.fasterxml.jackson.databind.json.JsonMapper
1412
import cz.muni.fi.rpg.R
1513
import cz.muni.fi.rpg.model.domain.character.CharacterId
1614
import cz.muni.fi.rpg.model.domain.party.Invitation
@@ -24,9 +22,7 @@ import org.koin.core.parameter.parametersOf
2422
import org.koin.android.viewmodel.ext.android.viewModel
2523
import timber.log.Timber
2624

27-
class GameMasterFragment(
28-
private val jsonMapper: JsonMapper
29-
) : BaseFragment(R.layout.fragment_game_master) {
25+
class GameMasterFragment() : BaseFragment(R.layout.fragment_game_master) {
3026

3127
private val args: GameMasterFragmentArgs by navArgs()
3228

@@ -110,7 +106,7 @@ class GameMasterFragment(
110106
}
111107

112108
private fun showQrCode() {
113-
InvitationDialog(invitation, jsonMapper)
109+
InvitationDialog.newInstance(invitation)
114110
.show(requireActivity().supportFragmentManager, InvitationDialog::class.simpleName)
115111
}
116112
}

app/src/main/java/cz/muni/fi/rpg/ui/gameMaster/InvitationDialog.kt

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import android.net.Uri
66
import android.os.Bundle
77
import android.view.View
88
import androidx.appcompat.app.AlertDialog
9+
import androidx.core.os.bundleOf
910
import androidx.fragment.app.DialogFragment
1011
import com.fasterxml.jackson.databind.json.JsonMapper
1112
import com.google.firebase.dynamiclinks.ktx.androidParameters
@@ -14,18 +15,27 @@ import com.google.firebase.dynamiclinks.ktx.shortLinkAsync
1415
import com.google.firebase.ktx.Firebase
1516
import cz.muni.fi.rpg.R
1617
import cz.muni.fi.rpg.model.domain.party.Invitation
18+
import cz.muni.fi.rpg.ui.common.parcelableArgument
1719
import kotlinx.android.synthetic.main.dialog_invitation.view.*
1820
import kotlinx.coroutines.CoroutineScope
1921
import kotlinx.coroutines.Dispatchers
2022
import kotlinx.coroutines.launch
2123
import kotlinx.coroutines.tasks.await
2224
import kotlinx.coroutines.withContext
25+
import org.koin.android.ext.android.inject
2326
import timber.log.Timber
2427

25-
class InvitationDialog(
26-
private val invitation: Invitation,
27-
private val jsonMapper: JsonMapper
28-
) : DialogFragment(), CoroutineScope by CoroutineScope(Dispatchers.Default) {
28+
class InvitationDialog : DialogFragment(), CoroutineScope by CoroutineScope(Dispatchers.Default) {
29+
companion object {
30+
const val ARGUMENT_INVITATION = "invitation"
31+
32+
fun newInstance(invitation: Invitation) = InvitationDialog().apply {
33+
arguments = bundleOf(ARGUMENT_INVITATION to invitation)
34+
}
35+
}
36+
37+
private val invitation: Invitation by parcelableArgument(ARGUMENT_INVITATION)
38+
private val jsonMapper: JsonMapper by inject()
2939

3040
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
3141
val view = requireActivity().layoutInflater.inflate(R.layout.dialog_invitation, null)

app/src/main/java/cz/muni/fi/rpg/ui/views/QrCode.kt

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,20 +16,12 @@ import kotlinx.coroutines.Dispatchers
1616
import kotlinx.coroutines.withContext
1717

1818
class QrCode(context: Context, attrs: AttributeSet) : FrameLayout(context, attrs) {
19-
private var currentWidth: Int = 0
20-
2119
private val writer = QRCodeWriter()
2220

2321
init {
2422
inflate(getContext(), R.layout.view_qr_code, this)
2523
}
2624

27-
public override fun onSizeChanged(width: Int, height: Int, oldWidth: Int, oldHeight: Int) {
28-
super.onSizeChanged(width, height, oldWidth, oldHeight)
29-
30-
currentWidth = width
31-
}
32-
3325
suspend fun drawCode(contents: String) {
3426
withContext(Dispatchers.Main) {
3527
progress.visibility = View.VISIBLE
Lines changed: 30 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,34 @@
11
<?xml version="1.0" encoding="utf-8"?>
2-
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3-
android:layout_height="wrap_content"
4-
xmlns:app="http://schemas.android.com/apk/res-auto"
5-
android:padding="@dimen/dialogPadding"
6-
android:layout_width="match_parent"
7-
android:orientation="vertical">
8-
9-
<TextView
10-
style="@style/TextAppearance.AppCompat.Title"
2+
<ScrollView android:layout_width="match_parent"
3+
android:layout_height="match_parent"
4+
xmlns:android="http://schemas.android.com/apk/res/android">
5+
<LinearLayout
116
android:layout_height="wrap_content"
12-
android:layout_marginTop="16dp"
7+
xmlns:app="http://schemas.android.com/apk/res-auto"
8+
android:padding="@dimen/dialogPadding"
139
android:layout_width="match_parent"
14-
android:text="@string/invitation_code_description"
15-
android:textAlignment="center" />
10+
android:orientation="vertical">
1611

17-
<cz.muni.fi.rpg.ui.views.QrCode
18-
android:id="@+id/partyInviteQrCode"
19-
android:layout_height="wrap_content"
20-
android:layout_width="match_parent" />
21-
22-
<com.google.android.material.button.MaterialButton
23-
android:id="@+id/shareButton"
24-
android:enabled="false"
25-
app:icon="@drawable/ic_share"
26-
app:iconGravity="textStart"
27-
android:text="@string/share_link"
28-
android:layout_width="match_parent"
29-
android:layout_height="wrap_content"/>
30-
</LinearLayout>
12+
<TextView
13+
style="@style/TextAppearance.AppCompat.Title"
14+
android:layout_height="wrap_content"
15+
android:layout_marginTop="16dp"
16+
android:layout_width="match_parent"
17+
android:text="@string/invitation_code_description"
18+
android:textAlignment="center" />
19+
20+
<cz.muni.fi.rpg.ui.views.QrCode
21+
android:id="@+id/partyInviteQrCode"
22+
android:layout_height="wrap_content"
23+
android:layout_width="match_parent" />
24+
25+
<com.google.android.material.button.MaterialButton
26+
android:id="@+id/shareButton"
27+
android:enabled="false"
28+
app:icon="@drawable/ic_share"
29+
app:iconGravity="textStart"
30+
android:text="@string/share_link"
31+
android:layout_width="match_parent"
32+
android:layout_height="wrap_content"/>
33+
</LinearLayout>
34+
</ScrollView>

0 commit comments

Comments
 (0)