@@ -13,43 +13,32 @@ import android.view.MenuInflater
13
13
import android.view.MenuItem
14
14
import android.view.View
15
15
import android.view.ViewGroup
16
- import android.widget.TextView
17
16
import androidx.appcompat.app.AlertDialog
18
17
import androidx.core.content.ContextCompat
19
18
import androidx.core.view.isVisible
19
+ import androidx.databinding.DataBindingUtil
20
20
import androidx.fragment.app.Fragment
21
21
import androidx.lifecycle.Observer
22
22
import androidx.navigation.Navigation.findNavController
23
23
import androidx.navigation.fragment.navArgs
24
24
import androidx.recyclerview.widget.LinearLayoutManager
25
- import com.squareup.picasso.Callback
26
25
import com.squareup.picasso.Picasso
27
- import kotlinx.android.synthetic.main.content_event.aboutEventContainer
28
- import kotlinx.android.synthetic.main.content_event.locationContainer
29
- import kotlinx.android.synthetic.main.content_event.organizerContainer
30
26
import kotlinx.android.synthetic.main.content_event.similarEventsContainer
31
27
import kotlinx.android.synthetic.main.content_event.view.eventDateDetailsFirst
32
28
import kotlinx.android.synthetic.main.content_event.view.eventDateDetailsSecond
33
29
import kotlinx.android.synthetic.main.content_event.view.eventDescription
34
30
import kotlinx.android.synthetic.main.content_event.view.eventLocationLinearLayout
35
- import kotlinx.android.synthetic.main.content_event.view.eventLocationTextView
36
31
import kotlinx.android.synthetic.main.content_event.view.eventName
37
32
import kotlinx.android.synthetic.main.content_event.view.eventOrganiserDescription
38
- import kotlinx.android.synthetic.main.content_event.view.eventOrganiserName
39
33
import kotlinx.android.synthetic.main.content_event.view.eventTimingLinearLayout
40
34
import kotlinx.android.synthetic.main.content_event.view.imageMap
41
- import kotlinx.android.synthetic.main.content_event.view.locationUnderMap
42
35
import kotlinx.android.synthetic.main.content_event.view.eventImage
43
36
import kotlinx.android.synthetic.main.content_event.view.feedbackBtn
44
37
import kotlinx.android.synthetic.main.content_event.view.feedbackRv
45
- import kotlinx.android.synthetic.main.content_event.view.organizerLogoIcon
46
38
import kotlinx.android.synthetic.main.content_event.view.nestedContentEventScroll
47
39
import kotlinx.android.synthetic.main.content_event.view.noFeedBackTv
48
- import kotlinx.android.synthetic.main.content_event.view.organizerName
49
- import kotlinx.android.synthetic.main.content_event.view.refundPolicy
50
40
import kotlinx.android.synthetic.main.content_event.view.seeMore
51
41
import kotlinx.android.synthetic.main.content_event.view.seeMoreOrganizer
52
- import kotlinx.android.synthetic.main.content_event.view.organizerContainer
53
42
import kotlinx.android.synthetic.main.content_event.view.sessionContainer
54
43
import kotlinx.android.synthetic.main.content_event.view.sessionsRv
55
44
import kotlinx.android.synthetic.main.content_event.view.speakerRv
@@ -65,11 +54,11 @@ import kotlinx.android.synthetic.main.dialog_feedback.view.feedback
65
54
import kotlinx.android.synthetic.main.dialog_feedback.view.feedbackTextInputLayout
66
55
import kotlinx.android.synthetic.main.dialog_feedback.view.feedbackrating
67
56
import kotlinx.android.synthetic.main.fragment_event.eventCoordinatorLayout
68
- import org.fossasia.openevent.general.CircleTransform
69
57
import org.fossasia.openevent.general.R
70
58
import org.fossasia.openevent.general.about.AboutEventFragmentArgs
71
59
import org.fossasia.openevent.general.auth.LoginFragmentArgs
72
60
import org.fossasia.openevent.general.common.SpeakerClickListener
61
+ import org.fossasia.openevent.general.databinding.FragmentEventBinding
73
62
import org.fossasia.openevent.general.event.EventUtils.loadMapUrl
74
63
import org.fossasia.openevent.general.event.faq.EventFAQFragmentArgs
75
64
import org.fossasia.openevent.general.event.feedback.FeedbackRecyclerAdapter
@@ -84,7 +73,6 @@ import org.fossasia.openevent.general.sponsor.SponsorsFragmentArgs
84
73
import org.fossasia.openevent.general.ticket.TicketsFragmentArgs
85
74
import org.fossasia.openevent.general.utils.Utils
86
75
import org.fossasia.openevent.general.utils.Utils.getAnimSlide
87
- import org.fossasia.openevent.general.utils.Utils.requireDrawable
88
76
import org.fossasia.openevent.general.utils.extensions.nonNull
89
77
import org.fossasia.openevent.general.utils.nullToEmpty
90
78
import org.fossasia.openevent.general.utils.stripHtml
@@ -94,7 +82,6 @@ import java.util.Currency
94
82
import org.fossasia.openevent.general.utils.Utils.setToolbar
95
83
import org.jetbrains.anko.design.longSnackbar
96
84
import org.jetbrains.anko.design.snackbar
97
- import java.lang.Exception
98
85
99
86
const val EVENT_ID = " eventId"
100
87
const val EVENT_TOPIC_ID = " eventTopicId"
@@ -109,6 +96,7 @@ class EventDetailsFragment : Fragment() {
109
96
private val sessionsAdapter = SessionRecyclerAdapter ()
110
97
111
98
private lateinit var rootView: View
99
+ private lateinit var binding: FragmentEventBinding
112
100
private var eventTopicId: Long? = null
113
101
private var eventLocation: String? = null
114
102
private lateinit var eventShare: Event
@@ -152,7 +140,8 @@ class EventDetailsFragment : Fragment() {
152
140
container : ViewGroup ? ,
153
141
savedInstanceState : Bundle ?
154
142
): View ? {
155
- rootView = inflater.inflate(R .layout.fragment_event, container, false )
143
+ binding = DataBindingUtil .inflate(inflater, R .layout.fragment_event, container, false )
144
+ rootView = binding.root
156
145
setToolbar(activity)
157
146
setHasOptionsMenu(true )
158
147
@@ -280,23 +269,11 @@ class EventDetailsFragment : Fragment() {
280
269
private fun loadEvent (event : Event ) {
281
270
val startsAt = EventUtils .getEventDateTime(event.startsAt, event.timezone)
282
271
val endsAt = EventUtils .getEventDateTime(event.endsAt, event.timezone)
283
-
284
- rootView.eventName.text = event.name
272
+ binding.event = event
273
+ binding.executePendingBindings()
285
274
286
275
// Organizer Section
287
276
if (! event.organizerName.isNullOrEmpty()) {
288
- rootView.eventOrganiserName.text = " by " + event.organizerName.nullToEmpty()
289
- setTextField(rootView.eventOrganiserDescription, event.organizerDescription?.stripHtml()?.trim())
290
- rootView.organizerName.text = event.organizerName.nullToEmpty()
291
- rootView.eventOrganiserName.isVisible = true
292
- organizerContainer.isVisible = true
293
-
294
- Picasso .get()
295
- .load(event.logoUrl)
296
- .placeholder(requireDrawable(requireContext(), R .drawable.ic_person_black))
297
- .transform(CircleTransform ())
298
- .into(rootView.organizerLogoIcon)
299
-
300
277
val organizerDescriptionListener = View .OnClickListener {
301
278
if (rootView.seeMoreOrganizer.text == getString(R .string.see_more)) {
302
279
rootView.seeMoreOrganizer.text = getString(R .string.see_less)
@@ -316,10 +293,7 @@ class EventDetailsFragment : Fragment() {
316
293
rootView.eventOrganiserDescription.setOnClickListener(organizerDescriptionListener)
317
294
}
318
295
}
319
- } else {
320
- rootView.organizerContainer.isVisible = false
321
296
}
322
-
323
297
currency = Currency .getInstance(event.paymentCurrency ? : " USD" ).symbol
324
298
// About event on-click
325
299
val aboutEventOnClickListener = View .OnClickListener {
@@ -333,7 +307,6 @@ class EventDetailsFragment : Fragment() {
333
307
// Event Description Section
334
308
val description = event.description.nullToEmpty().stripHtml()
335
309
if (! description.isNullOrEmpty()) {
336
- setTextField(rootView.eventDescription, description)
337
310
338
311
rootView.eventDescription.post {
339
312
if (rootView.eventDescription.lineCount > LINE_COUNT ) {
@@ -343,26 +316,13 @@ class EventDetailsFragment : Fragment() {
343
316
rootView.seeMore.setOnClickListener(aboutEventOnClickListener)
344
317
}
345
318
}
346
- } else {
347
- aboutEventContainer.isVisible = false
348
- }
349
-
350
- // Map Section
351
- if (! event.locationName.isNullOrEmpty()) {
352
- locationContainer.isVisible = true
353
- rootView.eventLocationTextView.text = event.locationName
354
319
}
355
320
356
321
// load location to map
357
322
val mapClickListener = View .OnClickListener { startMap(event) }
358
323
359
324
val locationNameIsEmpty = event.locationName.isNullOrEmpty()
360
- locationContainer.isVisible = ! locationNameIsEmpty
361
- rootView.eventLocationLinearLayout.isVisible = ! locationNameIsEmpty
362
- rootView.locationUnderMap.isVisible = ! locationNameIsEmpty
363
- rootView.imageMap.isVisible = ! locationNameIsEmpty
364
325
if (! locationNameIsEmpty) {
365
- rootView.locationUnderMap.text = event.locationName
366
326
rootView.imageMap.setOnClickListener(mapClickListener)
367
327
rootView.eventLocationLinearLayout.setOnClickListener(mapClickListener)
368
328
@@ -377,9 +337,6 @@ class EventDetailsFragment : Fragment() {
377
337
rootView.eventDateDetailsFirst.text = EventUtils .getFormattedEventDateTimeRange(startsAt, endsAt)
378
338
rootView.eventDateDetailsSecond.text = EventUtils .getFormattedEventDateTimeRangeSecond(startsAt, endsAt)
379
339
380
- // Refund policy
381
- rootView.refundPolicy.text = event.refundPolicy
382
-
383
340
// Similar Events Section
384
341
if (event.eventTopic != null || ! event.locationName.isNullOrBlank() ||
385
342
! event.searchableLocationName.isNullOrBlank()) {
@@ -390,22 +347,6 @@ class EventDetailsFragment : Fragment() {
390
347
else event.searchableLocationName
391
348
}
392
349
393
- // Set Cover Image
394
- event.originalImageUrl?.let {
395
- Picasso .get()
396
- .load(it)
397
- .placeholder(R .drawable.header)
398
- .into(rootView.eventImage, object : Callback {
399
- override fun onSuccess () {
400
- rootView.eventImage.tag = " image_loading_successful"
401
- }
402
-
403
- override fun onError (e : Exception ? ) {
404
- Timber .e(e)
405
- }
406
- })
407
- }
408
-
409
350
// Add event to Calendar
410
351
val dateClickListener = View .OnClickListener { startCalendar(event) }
411
352
rootView.eventTimingLinearLayout.setOnClickListener(dateClickListener)
@@ -450,13 +391,6 @@ class EventDetailsFragment : Fragment() {
450
391
}
451
392
}
452
393
453
- private fun setTextField (textView : TextView , value : String? ) {
454
- when (value.isNullOrBlank()) {
455
- true -> textView.isVisible = false
456
- false -> textView.text = value
457
- }
458
- }
459
-
460
394
private fun startCalendar (event : Event ) {
461
395
val intent = Intent (Intent .ACTION_INSERT )
462
396
intent.type = " vnd.android.cursor.item/event"
@@ -559,6 +493,7 @@ class EventDetailsFragment : Fragment() {
559
493
menuActionBar?.getItem(i)?.isVisible = ! show
560
494
}
561
495
}
496
+
562
497
private fun checkForAuthentication () {
563
498
if (eventViewModel.isLoggedIn())
564
499
writeFeedback()
0 commit comments