@@ -20,6 +20,7 @@ import androidx.fragment.app.Fragment
20
20
import androidx.lifecycle.Observer
21
21
import androidx.navigation.Navigation.findNavController
22
22
import androidx.navigation.fragment.navArgs
23
+ import com.google.android.material.textfield.TextInputLayout
23
24
import com.squareup.picasso.MemoryPolicy
24
25
import com.squareup.picasso.Picasso
25
26
import kotlinx.android.synthetic.main.dialog_edit_profile_image.view.editImage
@@ -37,13 +38,35 @@ import kotlinx.android.synthetic.main.fragment_proposal_speaker.view.speakerTwit
37
38
import kotlinx.android.synthetic.main.fragment_proposal_speaker.view.submitButton
38
39
import kotlinx.android.synthetic.main.fragment_proposal_speaker.view.speakerEmailLayout
39
40
import kotlinx.android.synthetic.main.fragment_proposal_speaker.view.speakerNameLayout
41
+ import kotlinx.android.synthetic.main.fragment_proposal_speaker.view.speakerOrgLayout
42
+ import kotlinx.android.synthetic.main.fragment_proposal_speaker.view.speakerPositionLayout
43
+ import kotlinx.android.synthetic.main.fragment_proposal_speaker.view.speakerShortBioLayout
44
+ import kotlinx.android.synthetic.main.fragment_proposal_speaker.view.speakerWebsiteLayout
45
+ import kotlinx.android.synthetic.main.fragment_proposal_speaker.view.speakerTwitterLayout
46
+ import kotlinx.android.synthetic.main.fragment_proposal_speaker.view.speakerLongBio
47
+ import kotlinx.android.synthetic.main.fragment_proposal_speaker.view.speakerLongBioLayout
48
+ import kotlinx.android.synthetic.main.fragment_proposal_speaker.view.speakerFacebook
49
+ import kotlinx.android.synthetic.main.fragment_proposal_speaker.view.speakerGithub
50
+ import kotlinx.android.synthetic.main.fragment_proposal_speaker.view.speakerGithubLayout
51
+ import kotlinx.android.synthetic.main.fragment_proposal_speaker.view.speakerLinkedIn
52
+ import kotlinx.android.synthetic.main.fragment_proposal_speaker.view.speakerLinkedInLayout
53
+ import kotlinx.android.synthetic.main.fragment_proposal_speaker.view.speakerMobile
54
+ import kotlinx.android.synthetic.main.fragment_proposal_speaker.view.speakerMobileLayout
55
+ import kotlinx.android.synthetic.main.fragment_proposal_speaker.view.speakerCountry
56
+ import kotlinx.android.synthetic.main.fragment_proposal_speaker.view.speakerCountryLayout
57
+ import kotlinx.android.synthetic.main.fragment_proposal_speaker.view.speakerHeardFrom
58
+ import kotlinx.android.synthetic.main.fragment_proposal_speaker.view.speakerHeardFromLayout
59
+ import kotlinx.android.synthetic.main.fragment_proposal_speaker.view.speakerSpeakingExp
60
+ import kotlinx.android.synthetic.main.fragment_proposal_speaker.view.speakerSpeakingExpLayout
40
61
import org.fossasia.openevent.general.CircleTransform
41
62
import org.fossasia.openevent.general.ComplexBackPressFragment
42
63
import org.fossasia.openevent.general.R
43
64
import org.fossasia.openevent.general.RotateBitmap
65
+ import org.fossasia.openevent.general.attendees.forms.CustomForm
44
66
import org.fossasia.openevent.general.auth.User
45
67
import org.fossasia.openevent.general.auth.UserId
46
68
import org.fossasia.openevent.general.event.EventId
69
+ import org.fossasia.openevent.general.speakercall.form.SpeakerIdentifier
47
70
import org.fossasia.openevent.general.speakers.Speaker
48
71
import org.fossasia.openevent.general.utils.Utils.progressDialog
49
72
import org.fossasia.openevent.general.utils.Utils.show
@@ -140,6 +163,8 @@ class EditSpeakerFragment : Fragment(), ComplexBackPressFragment {
140
163
findNavController(rootView).popBackStack()
141
164
})
142
165
166
+ setupCustomForms()
167
+
143
168
rootView.speakerNameLayout.setRequired()
144
169
rootView.speakerEmailLayout.setRequired()
145
170
rootView.submitButton.text = getString(if (isCreatingNewSpeaker)
@@ -175,6 +200,14 @@ class EditSpeakerFragment : Fragment(), ComplexBackPressFragment {
175
200
organisation = rootView.speakerOrganization.text.toString(),
176
201
position = rootView.speakerPosition.text.toString(),
177
202
shortBiography = rootView.speakerShortBio.text.toString(),
203
+ longBiography = rootView.speakerLongBio.text.toString(),
204
+ country = rootView.speakerCountry.text.toString(),
205
+ mobile = rootView.speakerMobile.text.toString(),
206
+ speakingExperience = rootView.speakerSpeakingExp.text.toString(),
207
+ heardFrom = rootView.speakerHeardFrom.text.toString(),
208
+ facebook = rootView.speakerFacebook.text.toString().emptyToNull(),
209
+ github = rootView.speakerGithub.text.toString().emptyToNull(),
210
+ linkedin = rootView.speakerLinkedIn.text.toString().emptyToNull(),
178
211
website = rootView.speakerWebsite.text.toString().emptyToNull(),
179
212
twitter = rootView.speakerTwitter.text.toString().emptyToNull(),
180
213
event = EventId (safeArgs.eventId),
@@ -368,5 +401,54 @@ class EditSpeakerFragment : Fragment(), ComplexBackPressFragment {
368
401
rootView.speakerShortBio.setText(speaker.shortBiography)
369
402
rootView.speakerWebsite.setText(speaker.website)
370
403
rootView.speakerTwitter.setText(speaker.twitter)
404
+ rootView.speakerHeardFrom.setText(speaker.heardFrom)
405
+ rootView.speakerSpeakingExp.setText(speaker.speakingExperience)
406
+ }
407
+
408
+ private fun setupCustomForms () {
409
+ editSpeakerViewModel.forms
410
+ .nonNull()
411
+ .observe(viewLifecycleOwner, Observer {
412
+ it.forEach { form ->
413
+ setupFormWithSpeakerFields(form)
414
+ }
415
+ })
416
+
417
+ val currentForms = editSpeakerViewModel.forms.value
418
+ if (currentForms != null )
419
+ currentForms.forEach {
420
+ setupFormWithSpeakerFields(it)
421
+ }
422
+ else
423
+ editSpeakerViewModel.getFormsForSpeaker(safeArgs.eventId)
424
+ }
425
+
426
+ private fun setupFormWithSpeakerFields (form : CustomForm ) {
427
+ when (form.fieldIdentifier) {
428
+ SpeakerIdentifier .NAME -> setupField(rootView.speakerNameLayout, form.isRequired)
429
+ SpeakerIdentifier .EMAIL -> setupField(rootView.speakerEmailLayout, form.isRequired)
430
+ SpeakerIdentifier .PHOTO -> rootView.speakerImage.isVisible = true
431
+ SpeakerIdentifier .ORGANIZATION -> setupField(rootView.speakerOrgLayout, form.isRequired)
432
+ SpeakerIdentifier .POSITION -> setupField(rootView.speakerPositionLayout, form.isRequired)
433
+ SpeakerIdentifier .SHORT_BIO -> setupField(rootView.speakerShortBioLayout, form.isRequired)
434
+ SpeakerIdentifier .LONG_BIO -> setupField(rootView.speakerLongBioLayout, form.isRequired)
435
+ SpeakerIdentifier .COUNTRY -> setupField(rootView.speakerCountryLayout, form.isRequired)
436
+ SpeakerIdentifier .MOBILE -> setupField(rootView.speakerMobileLayout, form.isRequired)
437
+ SpeakerIdentifier .WEBSITE -> setupField(rootView.speakerWebsiteLayout, form.isRequired)
438
+ SpeakerIdentifier .FACEBOOK -> setupField(rootView.speakerWebsiteLayout, form.isRequired)
439
+ SpeakerIdentifier .GITHUB -> setupField(rootView.speakerGithubLayout, form.isRequired)
440
+ SpeakerIdentifier .TWITTER -> setupField(rootView.speakerTwitterLayout, form.isRequired)
441
+ SpeakerIdentifier .LINKEDIN -> setupField(rootView.speakerLinkedInLayout, form.isRequired)
442
+ SpeakerIdentifier .HEARD_FROM -> setupField(rootView.speakerHeardFromLayout, form.isRequired)
443
+ SpeakerIdentifier .SPEAKING_EXPERIENCE -> setupField(rootView.speakerSpeakingExpLayout, form.isRequired)
444
+ else -> return
445
+ }
446
+ }
447
+
448
+ private fun setupField (layout : TextInputLayout , isRequired : Boolean ) {
449
+ layout.isVisible = true
450
+ if (isRequired) {
451
+ layout.setRequired()
452
+ }
371
453
}
372
454
}
0 commit comments