Search in sources :

Example 1 with SessionType

use of org.fossasia.openevent.data.SessionType in project open-event-android by fossasia.

the class MainActivity method handleJsonEvent.

@Subscribe
public void handleJsonEvent(final JsonReadEvent jsonReadEvent) {
    final String name = jsonReadEvent.getName();
    final String json = jsonReadEvent.getJson();
    disposable.add(Completable.fromAction(() -> {
        ObjectMapper objectMapper = APIClient.getObjectMapper();
        // Need separate instance for background thread
        Realm realm = Realm.getDefaultInstance();
        RealmDataRepository realmDataRepository = RealmDataRepository.getInstance(realm);
        switch(name) {
            case ConstantStrings.EVENT:
                {
                    Event event = objectMapper.readValue(json, Event.class);
                    saveEventDates(event);
                    realmDataRepository.saveEvent(event).subscribe();
                    realmDataRepository.saveEvent(event).subscribe();
                    StrategyRegistry.getInstance().getEventBusStrategy().postEventOnUIThread(new EventDownloadEvent(true));
                    break;
                }
            case ConstantStrings.TRACKS:
                {
                    List<Track> tracks = objectMapper.readValue(json, objectMapper.getTypeFactory().constructCollectionType(List.class, Track.class));
                    realmDataRepository.saveTracks(tracks).subscribe();
                    StrategyRegistry.getInstance().getEventBusStrategy().postEventOnUIThread(new TracksDownloadEvent(true));
                    break;
                }
            case ConstantStrings.SESSIONS:
                {
                    List<Session> sessions = objectMapper.readValue(json, objectMapper.getTypeFactory().constructCollectionType(List.class, Session.class));
                    for (Session current : sessions) {
                        current.setStartDate(current.getStartsAt().split("T")[0]);
                    }
                    realmDataRepository.saveSessions(sessions).subscribe();
                    StrategyRegistry.getInstance().getEventBusStrategy().postEventOnUIThread(new SessionDownloadEvent(true));
                    break;
                }
            case ConstantStrings.SPEAKERS:
                {
                    List<Speaker> speakers = objectMapper.readValue(json, objectMapper.getTypeFactory().constructCollectionType(List.class, Speaker.class));
                    realmRepo.saveSpeakers(speakers).subscribe();
                    StrategyRegistry.getInstance().getEventBusStrategy().postEventOnUIThread(new SpeakerDownloadEvent(true));
                    break;
                }
            case ConstantStrings.SPONSORS:
                {
                    List<Sponsor> sponsors = objectMapper.readValue(json, objectMapper.getTypeFactory().constructCollectionType(List.class, Sponsor.class));
                    realmRepo.saveSponsors(sponsors).subscribe();
                    StrategyRegistry.getInstance().getEventBusStrategy().postEventOnUIThread(new SponsorDownloadEvent(true));
                    break;
                }
            case ConstantStrings.MICROLOCATIONS:
                {
                    List<Microlocation> microlocations = objectMapper.readValue(json, objectMapper.getTypeFactory().constructCollectionType(List.class, Microlocation.class));
                    realmRepo.saveLocations(microlocations).subscribe();
                    StrategyRegistry.getInstance().getEventBusStrategy().postEventOnUIThread(new MicrolocationDownloadEvent(true));
                    break;
                }
            case ConstantStrings.SESSION_TYPES:
                {
                    List<SessionType> sessionTypes = objectMapper.readValue(json, objectMapper.getTypeFactory().constructCollectionType(List.class, SessionType.class));
                    realmRepo.saveSessionTypes(sessionTypes).subscribe();
                    StrategyRegistry.getInstance().getEventBusStrategy().postEventOnUIThread(new SessionTypesDownloadEvent(true));
                    break;
                }
            default:
        }
        realm.close();
    }).observeOn(Schedulers.computation()).subscribe(() -> Timber.d("Saved event from JSON"), throwable -> {
        throwable.printStackTrace();
        Timber.e(throwable);
        StrategyRegistry.getInstance().getEventBusStrategy().postEventOnUIThread(new RetrofitError(throwable));
    }));
}
Also used : SpeakerDownloadEvent(org.fossasia.openevent.common.events.SpeakerDownloadEvent) Bundle(android.os.Bundle) Completable(io.reactivex.Completable) ImageView(android.widget.ImageView) DataDownloadEvent(org.fossasia.openevent.common.events.DataDownloadEvent) Track(org.fossasia.openevent.data.Track) Handler(android.os.Handler) ConnectivityManager(android.net.ConnectivityManager) SmoothActionBarDrawerToggle(org.fossasia.openevent.common.ui.SmoothActionBarDrawerToggle) Realm(io.realm.Realm) TracksDownloadEvent(org.fossasia.openevent.common.events.TracksDownloadEvent) SessionType(org.fossasia.openevent.data.SessionType) Fragment(android.support.v4.app.Fragment) LocationsFragment(org.fossasia.openevent.core.location.LocationsFragment) Snackbar(android.support.design.widget.Snackbar) DialogFactory(org.fossasia.openevent.common.ui.DialogFactory) Sponsor(org.fossasia.openevent.data.Sponsor) ConstantStrings(org.fossasia.openevent.common.ConstantStrings) FacebookApi(org.fossasia.openevent.core.feed.facebook.api.FacebookApi) ButterKnife(butterknife.ButterKnife) UserProfileActivity(org.fossasia.openevent.core.auth.profile.UserProfileActivity) Dialog(android.app.Dialog) SponsorsFragment(org.fossasia.openevent.core.sponsor.SponsorsFragment) BaseActivity(org.fossasia.openevent.common.ui.base.BaseActivity) CommonTaskLoop(org.fossasia.openevent.common.utils.CommonTaskLoop) SpeakerDownloadEvent(org.fossasia.openevent.common.events.SpeakerDownloadEvent) Menu(android.view.Menu) DownloadCompleteHandler(org.fossasia.openevent.common.api.DownloadCompleteHandler) Settings(android.provider.Settings) Observable(io.reactivex.Observable) DrawerLayout(android.support.v4.widget.DrawerLayout) StrategyRegistry(org.fossasia.openevent.config.StrategyRegistry) ComponentName(android.content.ComponentName) DataDownloadManager(org.fossasia.openevent.common.api.DataDownloadManager) TextUtils(android.text.TextUtils) IOException(java.io.IOException) CounterEvent(org.fossasia.openevent.common.events.CounterEvent) Subscribe(com.squareup.otto.Subscribe) FragmentManager(android.support.v4.app.FragmentManager) AlertDialog(android.support.v7.app.AlertDialog) Toolbar(android.support.v7.widget.Toolbar) Microlocation(org.fossasia.openevent.data.Microlocation) Session(org.fossasia.openevent.data.Session) JsonReadEvent(org.fossasia.openevent.common.events.JsonReadEvent) RealmDataRepository(org.fossasia.openevent.data.repository.RealmDataRepository) EditText(android.widget.EditText) NavigationView(android.support.design.widget.NavigationView) Rect(android.graphics.Rect) SocialLink(org.fossasia.openevent.data.extras.SocialLink) AndroidSchedulers(io.reactivex.android.schedulers.AndroidSchedulers) SessionDownloadEvent(org.fossasia.openevent.common.events.SessionDownloadEvent) BindView(butterknife.BindView) TracksFragment(org.fossasia.openevent.core.track.TracksFragment) SettingsActivity(org.fossasia.openevent.core.settings.SettingsActivity) EventDownloadEvent(org.fossasia.openevent.common.events.EventDownloadEvent) CustomTabsServiceConnection(android.support.customtabs.CustomTabsServiceConnection) APIClient(org.fossasia.openevent.common.api.APIClient) View(android.view.View) Schedulers(io.reactivex.schedulers.Schedulers) CustomTabsClient(android.support.customtabs.CustomTabsClient) R(org.fossasia.openevent.R) RetrofitResponseEvent(org.fossasia.openevent.common.events.RetrofitResponseEvent) NetworkInfo(android.net.NetworkInfo) SponsorDownloadEvent(org.fossasia.openevent.common.events.SponsorDownloadEvent) Urls(org.fossasia.openevent.common.api.Urls) DiscountCodeFragment(org.fossasia.openevent.core.discount.DiscountCodeFragment) ScheduleFragment(org.fossasia.openevent.core.schedule.ScheduleFragment) SharedPreferencesUtil(org.fossasia.openevent.common.utils.SharedPreferencesUtil) Timber(timber.log.Timber) AuthUtil(org.fossasia.openevent.core.auth.AuthUtil) List(java.util.List) CompositeDisposable(io.reactivex.disposables.CompositeDisposable) NetworkUtils(org.fossasia.openevent.common.network.NetworkUtils) Nullable(android.support.annotation.Nullable) AboutFragment(org.fossasia.openevent.core.about.AboutFragment) ShowNetworkDialogEvent(org.fossasia.openevent.common.events.ShowNetworkDialogEvent) Context(android.content.Context) AppBarLayout(android.support.design.widget.AppBarLayout) CoordinatorLayout(android.support.design.widget.CoordinatorLayout) DownloadEvent(org.fossasia.openevent.common.events.DownloadEvent) Utils(org.fossasia.openevent.common.utils.Utils) RealmList(io.realm.RealmList) ZoomableImageUtil(org.fossasia.openevent.common.ui.image.ZoomableImageUtil) Intent(android.content.Intent) FAQFragment(org.fossasia.openevent.core.faqs.FAQFragment) MenuItem(android.view.MenuItem) InputMethodManager(android.view.inputmethod.InputMethodManager) GravityCompat(android.support.v4.view.GravityCompat) RetrofitError(org.fossasia.openevent.common.events.RetrofitError) Event(org.fossasia.openevent.data.Event) MotionEvent(android.view.MotionEvent) NotificationsFragment(org.fossasia.openevent.core.notifications.NotificationsFragment) Speaker(org.fossasia.openevent.data.Speaker) Build(android.os.Build) WeakReference(java.lang.ref.WeakReference) ActionBar(android.support.v7.app.ActionBar) EventLoadedEvent(org.fossasia.openevent.common.events.EventLoadedEvent) DialogInterface(android.content.DialogInterface) MicrolocationDownloadEvent(org.fossasia.openevent.common.events.MicrolocationDownloadEvent) RealmResults(io.realm.RealmResults) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper) DateConverter(org.fossasia.openevent.common.date.DateConverter) NoInternetEvent(org.fossasia.openevent.common.events.NoInternetEvent) FeedFragment(org.fossasia.openevent.core.feed.FeedFragment) SessionTypesDownloadEvent(org.fossasia.openevent.common.events.SessionTypesDownloadEvent) SpeakersListFragment(org.fossasia.openevent.core.speaker.SpeakersListFragment) InputStream(java.io.InputStream) SessionType(org.fossasia.openevent.data.SessionType) SessionTypesDownloadEvent(org.fossasia.openevent.common.events.SessionTypesDownloadEvent) EventDownloadEvent(org.fossasia.openevent.common.events.EventDownloadEvent) MicrolocationDownloadEvent(org.fossasia.openevent.common.events.MicrolocationDownloadEvent) List(java.util.List) RealmList(io.realm.RealmList) Realm(io.realm.Realm) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper) Speaker(org.fossasia.openevent.data.Speaker) SponsorDownloadEvent(org.fossasia.openevent.common.events.SponsorDownloadEvent) RetrofitError(org.fossasia.openevent.common.events.RetrofitError) RealmDataRepository(org.fossasia.openevent.data.repository.RealmDataRepository) Sponsor(org.fossasia.openevent.data.Sponsor) SessionDownloadEvent(org.fossasia.openevent.common.events.SessionDownloadEvent) DataDownloadEvent(org.fossasia.openevent.common.events.DataDownloadEvent) TracksDownloadEvent(org.fossasia.openevent.common.events.TracksDownloadEvent) SpeakerDownloadEvent(org.fossasia.openevent.common.events.SpeakerDownloadEvent) CounterEvent(org.fossasia.openevent.common.events.CounterEvent) JsonReadEvent(org.fossasia.openevent.common.events.JsonReadEvent) SessionDownloadEvent(org.fossasia.openevent.common.events.SessionDownloadEvent) EventDownloadEvent(org.fossasia.openevent.common.events.EventDownloadEvent) RetrofitResponseEvent(org.fossasia.openevent.common.events.RetrofitResponseEvent) SponsorDownloadEvent(org.fossasia.openevent.common.events.SponsorDownloadEvent) ShowNetworkDialogEvent(org.fossasia.openevent.common.events.ShowNetworkDialogEvent) DownloadEvent(org.fossasia.openevent.common.events.DownloadEvent) Event(org.fossasia.openevent.data.Event) MotionEvent(android.view.MotionEvent) EventLoadedEvent(org.fossasia.openevent.common.events.EventLoadedEvent) MicrolocationDownloadEvent(org.fossasia.openevent.common.events.MicrolocationDownloadEvent) NoInternetEvent(org.fossasia.openevent.common.events.NoInternetEvent) SessionTypesDownloadEvent(org.fossasia.openevent.common.events.SessionTypesDownloadEvent) TracksDownloadEvent(org.fossasia.openevent.common.events.TracksDownloadEvent) Track(org.fossasia.openevent.data.Track) Microlocation(org.fossasia.openevent.data.Microlocation) Session(org.fossasia.openevent.data.Session) Subscribe(com.squareup.otto.Subscribe)

Example 2 with SessionType

use of org.fossasia.openevent.data.SessionType in project open-event-android by fossasia.

the class SessionViewHolder method bindSession.

public void bindSession(int type, int colorInTracks, RealmDataRepository realmRepo) {
    String sessionTitleString = Utils.checkStringEmpty(session.getTitle());
    String sessionSubTitle = Utils.checkStringEmpty(session.getSubtitle());
    int color = ContextCompat.getColor(context, R.color.color_primary);
    sessionTitle.setText(sessionTitleString);
    if (Utils.isEmpty(sessionSubTitle)) {
        sessionSubtitle.setVisibility(View.GONE);
    } else {
        sessionSubtitle.setVisibility(View.VISIBLE);
        sessionSubtitle.setText(sessionSubTitle);
    }
    SessionType sessionType = session.getSessionType();
    if (sessionType != null) {
        subtitle.setVisibility(View.VISIBLE);
        subtitle.setText(sessionType.getName());
    }
    sessionStatus.setVisibility(View.GONE);
    setSessionStatus();
    Track track = session.getTrack();
    if (!RealmDataRepository.isNull(track)) {
        int storedColor = Color.parseColor(track.getColor());
        if (type != trackWiseSessionList) {
            color = storedColor;
        } else {
            color = colorInTracks;
        }
        TextDrawable drawable = Views.getTextDrawableBuilder().round().build(String.valueOf(track.getName().charAt(0)), storedColor);
        trackImageIcon.setImageDrawable(drawable);
        trackImageIcon.setBackgroundColor(Color.TRANSPARENT);
        sessionTrack.setText(track.getName());
    } else {
        trackImageIcon.setVisibility(View.GONE);
        sessionTrack.setVisibility(View.GONE);
        Timber.d("This session has a null or incomplete track somehow : " + session.getTitle() + " " + track);
    }
    itemView.setOnClickListener(v -> onItemClickListener.itemOnClick(session, getLayoutPosition()));
    String date = DateConverter.formatDateWithDefault(DateConverter.FORMAT_DATE_COMPLETE, session.getStartsAt());
    sessionDate.setText(date);
    sessionTime.setText(String.format("%s - %s", DateConverter.formatDateWithDefault(DateConverter.FORMAT_12H, session.getStartsAt()), DateConverter.formatDateWithDefault(DateConverter.FORMAT_12H, session.getEndsAt())));
    if (session.getMicrolocation() != null) {
        String locationName = Utils.checkStringEmpty(session.getMicrolocation().getName());
        sessionLocation.setText(locationName);
    } else {
        sessionLocation.setText(context.getString(R.string.location_not_decided));
    }
    setSpeakerView();
    handleVisibilityByType(type);
    setBookmarkClickListener(realmRepo, track);
    // Set color generated by palette on views
    sessionHeader.setBackgroundColor(color);
    if (track != null && track.isValid()) {
        sessionTitle.setTextColor(Color.parseColor(track.getFontColor()));
        setBookmarkIcon(sessionBookmarkIcon, session.getIsBookmarked(), track.getFontColor());
    }
}
Also used : TextDrawable(com.amulyakhare.textdrawable.TextDrawable) SessionType(org.fossasia.openevent.data.SessionType) Track(org.fossasia.openevent.data.Track)

Example 3 with SessionType

use of org.fossasia.openevent.data.SessionType in project open-event-android by fossasia.

the class SessionDetailActivity method updateSession.

private void updateSession() {
    if (hasTrack)
        setUiColor();
    Timber.d("Updated");
    speakers.clear();
    speakers.addAll(session.getSpeakers());
    adapter.notifyDataSetChanged();
    updateFloatingIcon();
    Microlocation microlocation = session.getMicrolocation();
    if (microlocation != null) {
        location = microlocation.getName();
        text_room1.setText(microlocation.getName());
    } else {
        location = getString(R.string.location_not_decided);
        text_room1.setText(location);
    }
    SessionType type = session.getSessionType();
    if (type != null) {
        sessionType.setText(type.getName());
        typelayout.setVisibility(View.VISIBLE);
    }
    text_title.setText(title);
    if (TextUtils.isEmpty(session.getSubtitle())) {
        text_subtitle.setVisibility(View.GONE);
    }
    text_subtitle.setText(session.getSubtitle());
    if (hasTrack) {
        trackLabel.setVisibility(View.VISIBLE);
        text_track.setVisibility(View.VISIBLE);
        text_track.setText(trackName);
    } else {
        trackLabel.setVisibility(View.GONE);
        text_track.setVisibility(View.GONE);
    }
    String video_link = session.getVideoUrl();
    if (!Utils.isEmpty(video_link)) {
        playButton.setVisibility(View.VISIBLE);
        if (video_link.contains(ConstantStrings.YOUTUBE)) {
            youtubeThumbnail.setVisibility(View.VISIBLE);
            Picasso.with(this).load(ConstantStrings.YOUTUBE_URI_1 + video_link.substring(video_link.length() - 11) + ConstantStrings.YOUTUBE_URI_2).into(youtubeThumbnail);
        }
        playButton.setOnClickListener(v -> startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(video_link))));
    }
    String date = DateConverter.formatDateWithDefault(DateConverter.FORMAT_DATE_COMPLETE, session.getStartsAt());
    String startTime = DateConverter.formatDateWithDefault(DateConverter.FORMAT_12H, session.getStartsAt());
    String endTime = DateConverter.formatDateWithDefault(DateConverter.FORMAT_12H, session.getEndsAt());
    text_start_time.setText(startTime);
    text_end_time.setText(endTime);
    text_date.setText(date);
    Timber.d("Date: %s\nStart: %s\nEnd: %s", date, startTime, endTime);
    Views.setHtml(summary, session.getShortAbstract(), true);
    Views.setHtml(descrip, session.getLongAbstract(), true);
}
Also used : SessionType(org.fossasia.openevent.data.SessionType) Intent(android.content.Intent) Microlocation(org.fossasia.openevent.data.Microlocation)

Aggregations

Intent (android.content.Intent)2 SessionType (org.fossasia.openevent.data.SessionType)2 Dialog (android.app.Dialog)1 ComponentName (android.content.ComponentName)1 Context (android.content.Context)1 DialogInterface (android.content.DialogInterface)1 Rect (android.graphics.Rect)1 ConnectivityManager (android.net.ConnectivityManager)1 NetworkInfo (android.net.NetworkInfo)1 Build (android.os.Build)1 Bundle (android.os.Bundle)1 Handler (android.os.Handler)1 Settings (android.provider.Settings)1 Nullable (android.support.annotation.Nullable)1 CustomTabsClient (android.support.customtabs.CustomTabsClient)1 CustomTabsServiceConnection (android.support.customtabs.CustomTabsServiceConnection)1 AppBarLayout (android.support.design.widget.AppBarLayout)1 CoordinatorLayout (android.support.design.widget.CoordinatorLayout)1 NavigationView (android.support.design.widget.NavigationView)1 Snackbar (android.support.design.widget.Snackbar)1