Search in sources :

Example 1 with CODE_UNDO_ADDED

use of org.fossasia.openevent.core.bookmark.BookmarkStatus.Status.CODE_UNDO_ADDED in project open-event-android by fossasia.

the class DayScheduleViewHolder method bindSession.

public void bindSession(RealmDataRepository realmRepo) {
    String startTimeText = DateConverter.formatDateWithDefault(DateConverter.FORMAT_24H, session.getStartsAt());
    String endTimeText = DateConverter.formatDateWithDefault(DateConverter.FORMAT_24H, session.getEndsAt());
    String title = Utils.checkStringEmpty(session.getTitle());
    startTime.setText(startTimeText);
    endTime.setText(endTimeText);
    slotTitle.setText(title);
    Track sessionTrack = session.getTrack();
    if (!RealmDataRepository.isNull(sessionTrack)) {
        int storedColor = Color.parseColor(sessionTrack.getColor());
        slotTrack.setVisibility(View.VISIBLE);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            slotTrack.setBackground(context.getDrawable(R.drawable.button_ripple));
        }
        slotTrack.getBackground().setColorFilter(storedColor, PorterDuff.Mode.SRC_ATOP);
        slotTrack.setText(sessionTrack.getName());
        if (session.getIsBookmarked()) {
            slotBookmark.setImageResource(R.drawable.ic_bookmark_white_24dp);
        } else {
            slotBookmark.setImageResource(R.drawable.ic_bookmark_border_white_24dp);
        }
        slotBookmark.setColorFilter(storedColor, PorterDuff.Mode.SRC_ATOP);
        final int sessionId = session.getId();
        slotBookmark.setOnClickListener(v -> {
            if (session.getIsBookmarked()) {
                realmRepo.setBookmark(sessionId, false).subscribe();
                slotBookmark.setImageResource(R.drawable.ic_bookmark_border_white_24dp);
                if (onBookmarkSelectedListener != null)
                    onBookmarkSelectedListener.showSnackbar(new BookmarkStatus(storedColor, sessionId, CODE_UNDO_REMOVED));
            } else {
                // TODO: Move all logic to ViewModel
                NotificationUtil.createNotification(session, context).subscribe(() -> {
                    if (onBookmarkSelectedListener != null)
                        onBookmarkSelectedListener.showSnackbar(new BookmarkStatus(storedColor, sessionId, CODE_UNDO_ADDED));
                }, throwable -> {
                    if (onBookmarkSelectedListener != null)
                        onBookmarkSelectedListener.showSnackbar(new BookmarkStatus(-1, -1, CODE_ERROR));
                });
                realmRepo.setBookmark(sessionId, true).subscribe();
                slotBookmark.setImageResource(R.drawable.ic_bookmark_white_24dp);
                slotBookmark.setColorFilter(storedColor, PorterDuff.Mode.SRC_ATOP);
            }
            WidgetUpdater.updateWidget(context);
        });
        slotTrack.setOnClickListener(v -> {
            Intent intent = new Intent(context, TrackSessionsActivity.class);
            intent.putExtra(ConstantStrings.TRACK, sessionTrack.getName());
            intent.putExtra(ConstantStrings.TRACK_ID, sessionTrack.getId());
            context.startActivity(intent);
        });
        itemView.setOnClickListener(v -> {
            final String sessionName = session.getTitle();
            realmRepo.getTrack(session.getTrack().getId()).addChangeListener((RealmChangeListener<Track>) track -> {
                String trackName = track.getName();
                Intent intent = new Intent(context, SessionDetailActivity.class);
                intent.putExtra(ConstantStrings.SESSION, sessionName);
                intent.putExtra(ConstantStrings.TRACK, trackName);
                intent.putExtra(ConstantStrings.ID, session.getId());
                context.startActivity(intent);
            });
        });
    } else {
        slotTrack.setOnClickListener(null);
        slotTrack.setVisibility(View.GONE);
        itemView.setOnClickListener(v -> {
            final String sessionName = session.getTitle();
            Intent intent = new Intent(context, SessionDetailActivity.class);
            intent.putExtra(ConstantStrings.SESSION, sessionName);
            intent.putExtra(ConstantStrings.ID, session.getId());
            context.startActivity(intent);
        });
        Timber.d("This session has no track somehow : " + session + " " + sessionTrack);
    }
    if (session.getMicrolocation() != null) {
        String locationName = Utils.checkStringEmpty(session.getMicrolocation().getName());
        slotLocation.setText(locationName);
    }
}
Also used : RealmChangeListener(io.realm.RealmChangeListener) Context(android.content.Context) ImageButton(android.widget.ImageButton) LinearLayout(android.widget.LinearLayout) ConstantStrings(org.fossasia.openevent.common.ConstantStrings) ButterKnife(butterknife.ButterKnife) Utils(org.fossasia.openevent.common.utils.Utils) Intent(android.content.Intent) BindView(butterknife.BindView) Track(org.fossasia.openevent.data.Track) CODE_ERROR(org.fossasia.openevent.core.bookmark.BookmarkStatus.Status.CODE_ERROR) View(android.view.View) Button(android.widget.Button) Build(android.os.Build) R(org.fossasia.openevent.R) SessionDetailActivity(org.fossasia.openevent.core.track.session.SessionDetailActivity) BookmarkStatus(org.fossasia.openevent.core.bookmark.BookmarkStatus) WidgetUpdater(org.fossasia.openevent.common.ui.WidgetUpdater) DateConverter(org.fossasia.openevent.common.date.DateConverter) NotificationUtil(org.fossasia.openevent.common.notification.NotificationUtil) TrackSessionsActivity(org.fossasia.openevent.core.track.session.TrackSessionsActivity) PorterDuff(android.graphics.PorterDuff) Timber(timber.log.Timber) Color(android.graphics.Color) CODE_UNDO_REMOVED(org.fossasia.openevent.core.bookmark.BookmarkStatus.Status.CODE_UNDO_REMOVED) RecyclerView(android.support.v7.widget.RecyclerView) TextView(android.widget.TextView) OnBookmarkSelectedListener(org.fossasia.openevent.core.bookmark.OnBookmarkSelectedListener) Session(org.fossasia.openevent.data.Session) RealmDataRepository(org.fossasia.openevent.data.repository.RealmDataRepository) CODE_UNDO_ADDED(org.fossasia.openevent.core.bookmark.BookmarkStatus.Status.CODE_UNDO_ADDED) BookmarkStatus(org.fossasia.openevent.core.bookmark.BookmarkStatus) Intent(android.content.Intent) SessionDetailActivity(org.fossasia.openevent.core.track.session.SessionDetailActivity) Track(org.fossasia.openevent.data.Track)

Aggregations

Context (android.content.Context)1 Intent (android.content.Intent)1 Color (android.graphics.Color)1 PorterDuff (android.graphics.PorterDuff)1 Build (android.os.Build)1 RecyclerView (android.support.v7.widget.RecyclerView)1 View (android.view.View)1 Button (android.widget.Button)1 ImageButton (android.widget.ImageButton)1 LinearLayout (android.widget.LinearLayout)1 TextView (android.widget.TextView)1 BindView (butterknife.BindView)1 ButterKnife (butterknife.ButterKnife)1 RealmChangeListener (io.realm.RealmChangeListener)1 R (org.fossasia.openevent.R)1 ConstantStrings (org.fossasia.openevent.common.ConstantStrings)1 DateConverter (org.fossasia.openevent.common.date.DateConverter)1 NotificationUtil (org.fossasia.openevent.common.notification.NotificationUtil)1 WidgetUpdater (org.fossasia.openevent.common.ui.WidgetUpdater)1 Utils (org.fossasia.openevent.common.utils.Utils)1