├── .gitattributes ├── .github ├── ISSUE_TEMPLATE └── PULL_REQUEST_TEMPLATE ├── .gitignore ├── .travis.yml ├── ISSUE_TEMPLATE ├── bug.md ├── chore.md └── feature.md ├── LICENSE.md ├── README.md ├── android ├── .gitignore ├── app │ ├── .gitignore │ ├── build.gradle │ ├── proguard-rules.pro │ └── src │ │ ├── androidTest │ │ ├── java │ │ │ └── org │ │ │ │ └── fossasia │ │ │ │ └── openevent │ │ │ │ ├── APITest.java │ │ │ │ ├── ApplicationTest.java │ │ │ │ └── helper │ │ │ │ └── IOUtils.java │ │ └── res │ │ │ └── raw │ │ │ ├── event_v1.json │ │ │ └── speaker_v1.txt │ │ ├── fdroid │ │ ├── AndroidManifest.xml │ │ ├── java │ │ │ └── org │ │ │ │ └── fossasia │ │ │ │ └── openevent │ │ │ │ └── core │ │ │ │ └── location │ │ │ │ ├── OSMapFragment.java │ │ │ │ └── modules │ │ │ │ ├── MapModuleFactory.java │ │ │ │ └── OSMapModule.java │ │ └── res │ │ │ └── layout │ │ │ └── fragment_map.xml │ │ ├── googleplay │ │ ├── AndroidManifest.xml │ │ ├── java │ │ │ └── org │ │ │ │ └── fossasia │ │ │ │ └── openevent │ │ │ │ └── core │ │ │ │ └── location │ │ │ │ ├── ClusterRenderer.java │ │ │ │ ├── ImageUtils.java │ │ │ │ ├── MapsFragment.java │ │ │ │ ├── MicrolocationClusterWrapper.java │ │ │ │ └── modules │ │ │ │ ├── GoogleMapModule.java │ │ │ │ └── MapModuleFactory.java │ │ └── res │ │ │ ├── layout │ │ │ └── fragment_map.xml │ │ │ └── values │ │ │ ├── google_play.xml │ │ │ └── strings.xml │ │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── assets │ │ │ ├── config.json │ │ │ ├── event │ │ │ ├── microlocations │ │ │ ├── session_types │ │ │ ├── sessions │ │ │ ├── speakers │ │ │ ├── sponsors │ │ │ └── tracks │ │ ├── ic_launcher-web.png │ │ ├── java │ │ │ ├── org │ │ │ │ └── fossasia │ │ │ │ │ └── openevent │ │ │ │ │ ├── OpenEventApp.java │ │ │ │ │ ├── common │ │ │ │ │ ├── ConstantStrings.kt │ │ │ │ │ ├── api │ │ │ │ │ │ ├── APIClient.java │ │ │ │ │ │ ├── DataDownloadManager.java │ │ │ │ │ │ ├── DownloadCompleteHandler.java │ │ │ │ │ │ ├── JWTUtils.kt │ │ │ │ │ │ ├── OpenEventAPI.java │ │ │ │ │ │ ├── Urls.kt │ │ │ │ │ │ └── processor │ │ │ │ │ │ │ ├── EventListResponseProcessor.java │ │ │ │ │ │ │ ├── MicrolocationListResponseProcessor.java │ │ │ │ │ │ │ ├── ResponseProcessor.java │ │ │ │ │ │ │ ├── SessionListResponseProcessor.java │ │ │ │ │ │ │ ├── SessionTypeListResponseProcessor.java │ │ │ │ │ │ │ ├── SpeakerListResponseProcessor.java │ │ │ │ │ │ │ ├── SponsorListResponseProcessor.java │ │ │ │ │ │ │ └── TrackListResponseProcessor.java │ │ │ │ │ ├── arch │ │ │ │ │ │ ├── FilterableRealmLiveData.java │ │ │ │ │ │ ├── LiveRealmData.java │ │ │ │ │ │ └── LiveRealmDataObject.java │ │ │ │ │ ├── date │ │ │ │ │ │ ├── AndroidDateConverter.java │ │ │ │ │ │ ├── DateConverter.java │ │ │ │ │ │ └── DateService.java │ │ │ │ │ ├── events │ │ │ │ │ │ ├── BookmarkChangedEvent.java │ │ │ │ │ │ ├── ConnectionCheckEvent.java │ │ │ │ │ │ ├── CounterEvent.java │ │ │ │ │ │ ├── DataDownloadEvent.java │ │ │ │ │ │ ├── DownloadEvent.java │ │ │ │ │ │ ├── EventDatesDownloadEvent.java │ │ │ │ │ │ ├── EventDownloadEvent.java │ │ │ │ │ │ ├── EventLoadedEvent.java │ │ │ │ │ │ ├── JsonReadEvent.java │ │ │ │ │ │ ├── MicrolocationDownloadEvent.java │ │ │ │ │ │ ├── NoInternetEvent.java │ │ │ │ │ │ ├── RefreshUiEvent.java │ │ │ │ │ │ ├── RetrofitError.java │ │ │ │ │ │ ├── RetrofitResponseEvent.java │ │ │ │ │ │ ├── SessionDownloadEvent.java │ │ │ │ │ │ ├── SessionTypesDownloadEvent.java │ │ │ │ │ │ ├── ShowNetworkDialogEvent.java │ │ │ │ │ │ ├── SpeakerDownloadEvent.java │ │ │ │ │ │ ├── SponsorDownloadEvent.java │ │ │ │ │ │ └── TracksDownloadEvent.java │ │ │ │ │ ├── network │ │ │ │ │ │ ├── NetworkConnectivityChangeReceiver.java │ │ │ │ │ │ └── NetworkUtils.java │ │ │ │ │ ├── notification │ │ │ │ │ │ ├── NotificationAlarmReceiver.java │ │ │ │ │ │ └── NotificationUtil.kt │ │ │ │ │ ├── ui │ │ │ │ │ │ ├── DialogFactory.java │ │ │ │ │ │ ├── SmoothActionBarDrawerToggle.java │ │ │ │ │ │ ├── SnackbarUtil.java │ │ │ │ │ │ ├── Views.java │ │ │ │ │ │ ├── WidgetUpdater.java │ │ │ │ │ │ ├── base │ │ │ │ │ │ │ ├── BaseActivity.java │ │ │ │ │ │ │ ├── BaseFragment.java │ │ │ │ │ │ │ └── BaseRVAdapter.java │ │ │ │ │ │ ├── image │ │ │ │ │ │ │ ├── CircleTransform.java │ │ │ │ │ │ │ ├── OnImageZoomListener.java │ │ │ │ │ │ │ ├── ZoomableImageDialogFragment.java │ │ │ │ │ │ │ └── ZoomableImageUtil.java │ │ │ │ │ │ └── recyclerview │ │ │ │ │ │ │ ├── AutofitGridRecyclerView.java │ │ │ │ │ │ │ ├── DividerViewHolder.java │ │ │ │ │ │ │ ├── HeaderViewHolder.java │ │ │ │ │ │ │ └── stickyheadersrecyclerview │ │ │ │ │ │ │ ├── HeaderPositionCalculator.java │ │ │ │ │ │ │ ├── ItemVisibilityAdapter.java │ │ │ │ │ │ │ ├── StickyRecyclerHeadersAdapter.java │ │ │ │ │ │ │ ├── StickyRecyclerHeadersDecoration.java │ │ │ │ │ │ │ ├── StickyRecyclerHeadersTouchListener.java │ │ │ │ │ │ │ ├── caching │ │ │ │ │ │ │ ├── HeaderProvider.java │ │ │ │ │ │ │ └── HeaderViewCache.java │ │ │ │ │ │ │ ├── calculation │ │ │ │ │ │ │ └── DimensionCalculator.java │ │ │ │ │ │ │ ├── rendering │ │ │ │ │ │ │ └── HeaderRenderer.java │ │ │ │ │ │ │ └── util │ │ │ │ │ │ │ ├── LinearLayoutOrientationProvider.java │ │ │ │ │ │ │ └── OrientationProvider.java │ │ │ │ │ └── utils │ │ │ │ │ │ ├── CommonEventLoop.kt │ │ │ │ │ │ ├── CommonTaskLoop.kt │ │ │ │ │ │ ├── SharedPreferencesUtil.kt │ │ │ │ │ │ ├── SortOrder.kt │ │ │ │ │ │ ├── StringUtils.kt │ │ │ │ │ │ └── Utils.kt │ │ │ │ │ ├── config │ │ │ │ │ ├── AppConfigurer.kt │ │ │ │ │ ├── StrategyRegistry.kt │ │ │ │ │ └── strategies │ │ │ │ │ │ ├── AppConfigStrategy.kt │ │ │ │ │ │ ├── EventBusStrategy.kt │ │ │ │ │ │ ├── HttpStrategy.kt │ │ │ │ │ │ ├── LanguageStrategy.kt │ │ │ │ │ │ ├── LeakCanaryStrategy.kt │ │ │ │ │ │ ├── MapModuleStrategy.kt │ │ │ │ │ │ ├── RealmStrategy.kt │ │ │ │ │ │ ├── TimberStrategy.kt │ │ │ │ │ │ └── TimeConfigStrategy.kt │ │ │ │ │ ├── core │ │ │ │ │ ├── about │ │ │ │ │ │ ├── AboutFragment.java │ │ │ │ │ │ ├── AboutFragmentViewModel.java │ │ │ │ │ │ ├── SocialLinkViewHolder.java │ │ │ │ │ │ └── SocialLinksListAdapter.java │ │ │ │ │ ├── auth │ │ │ │ │ │ ├── AuthUtil.kt │ │ │ │ │ │ ├── ChangePasswordActivity.java │ │ │ │ │ │ ├── ChangePasswordActivityViewModel.java │ │ │ │ │ │ ├── LoginActivity.java │ │ │ │ │ │ ├── LoginActivityViewModel.java │ │ │ │ │ │ ├── SignUpActivity.java │ │ │ │ │ │ ├── SignUpActivityViewModel.java │ │ │ │ │ │ ├── model │ │ │ │ │ │ │ ├── ImageResponse.kt │ │ │ │ │ │ │ ├── Login.kt │ │ │ │ │ │ │ ├── LoginResponse.kt │ │ │ │ │ │ │ ├── SignUpResponse.kt │ │ │ │ │ │ │ └── UploadImage.kt │ │ │ │ │ │ └── profile │ │ │ │ │ │ │ ├── EditProfileActivity.java │ │ │ │ │ │ │ ├── EditProfileActivityViewModel.java │ │ │ │ │ │ │ ├── UserProfileActivity.java │ │ │ │ │ │ │ └── UserProfileActivityViewModel.java │ │ │ │ │ ├── bookmark │ │ │ │ │ │ ├── BookmarkAlarmService.java │ │ │ │ │ │ ├── BookmarkStatus.kt │ │ │ │ │ │ ├── BookmarkWidgetProvider.java │ │ │ │ │ │ ├── BookmarkWidgetRemoteViewsService.java │ │ │ │ │ │ ├── BookmarksListChangeListener.java │ │ │ │ │ │ └── OnBookmarkSelectedListener.java │ │ │ │ │ ├── discount │ │ │ │ │ │ ├── DiscountCodeFragment.java │ │ │ │ │ │ ├── DiscountCodesListAdapter.java │ │ │ │ │ │ ├── DiscountFragmentViewModel.java │ │ │ │ │ │ └── DiscountViewHolder.java │ │ │ │ │ ├── faqs │ │ │ │ │ │ ├── FAQFragment.java │ │ │ │ │ │ ├── FAQListAdapter.java │ │ │ │ │ │ ├── FAQViewHolder.java │ │ │ │ │ │ └── FAQViewModel.java │ │ │ │ │ ├── feed │ │ │ │ │ │ ├── BaseFeedFragment.java │ │ │ │ │ │ ├── FeedFragment.java │ │ │ │ │ │ ├── FeedViewPagerAdapter.java │ │ │ │ │ │ ├── OpenCommentsDialogListener.java │ │ │ │ │ │ ├── Resource.kt │ │ │ │ │ │ ├── facebook │ │ │ │ │ │ │ ├── CommentsDialogFragment.java │ │ │ │ │ │ │ ├── CommentsListAdapter.java │ │ │ │ │ │ │ ├── FacebookFeedAdapter.java │ │ │ │ │ │ │ ├── FacebookFeedFragment.java │ │ │ │ │ │ │ ├── FacebookFeedFragmentViewModel.java │ │ │ │ │ │ │ └── api │ │ │ │ │ │ │ │ ├── CommentItem.kt │ │ │ │ │ │ │ │ ├── Commenter.kt │ │ │ │ │ │ │ │ ├── Comments.kt │ │ │ │ │ │ │ │ ├── FacebookApi.java │ │ │ │ │ │ │ │ ├── FacebookGraphAPI.java │ │ │ │ │ │ │ │ ├── FacebookPageId.kt │ │ │ │ │ │ │ │ ├── Feed.kt │ │ │ │ │ │ │ │ └── FeedItem.kt │ │ │ │ │ │ └── twitter │ │ │ │ │ │ │ ├── TwitterFeedAdapter.java │ │ │ │ │ │ │ ├── TwitterFeedFragment.java │ │ │ │ │ │ │ ├── TwitterFeedFragmentViewModel.java │ │ │ │ │ │ │ └── api │ │ │ │ │ │ │ ├── LoklakAPI.java │ │ │ │ │ │ │ ├── TwitterApi.java │ │ │ │ │ │ │ ├── TwitterFeed.kt │ │ │ │ │ │ │ └── TwitterFeedItem.kt │ │ │ │ │ ├── feedback │ │ │ │ │ │ ├── FeedbackFragment.java │ │ │ │ │ │ ├── FeedbackFragmentViewModel.java │ │ │ │ │ │ ├── FeedbackViewHolder.java │ │ │ │ │ │ └── FeedbacksListAdapter.java │ │ │ │ │ ├── location │ │ │ │ │ │ ├── LocationActivity.java │ │ │ │ │ │ ├── LocationActivityViewModel.java │ │ │ │ │ │ ├── LocationViewHolder.java │ │ │ │ │ │ ├── LocationsFragment.java │ │ │ │ │ │ ├── LocationsFragmentViewModel.java │ │ │ │ │ │ ├── LocationsListAdapter.java │ │ │ │ │ │ └── modules │ │ │ │ │ │ │ ├── MapModule.java │ │ │ │ │ │ │ └── MapModuleProvider.java │ │ │ │ │ ├── main │ │ │ │ │ │ └── MainActivity.java │ │ │ │ │ ├── notifications │ │ │ │ │ │ ├── NotificationsAdapter.java │ │ │ │ │ │ ├── NotificationsFragment.java │ │ │ │ │ │ ├── NotificationsFragmentViewModel.java │ │ │ │ │ │ └── repository │ │ │ │ │ │ │ └── NotificationsRepository.java │ │ │ │ │ ├── schedule │ │ │ │ │ │ ├── DayScheduleAdapter.java │ │ │ │ │ │ ├── DayScheduleFragment.java │ │ │ │ │ │ ├── DayScheduleFragmentViewModel.java │ │ │ │ │ │ ├── DayScheduleViewHolder.java │ │ │ │ │ │ ├── EventDateStrings.kt │ │ │ │ │ │ ├── ScheduleFragment.java │ │ │ │ │ │ ├── ScheduleFragmentViewModel.java │ │ │ │ │ │ └── ScheduleViewPagerAdapter.java │ │ │ │ │ ├── search │ │ │ │ │ │ ├── GlobalSearchAdapter.java │ │ │ │ │ │ ├── SearchActivity.java │ │ │ │ │ │ └── SearchActivityViewModel.java │ │ │ │ │ ├── settings │ │ │ │ │ │ └── SettingsActivity.java │ │ │ │ │ ├── speaker │ │ │ │ │ │ ├── SpeakerDetailsActivity.java │ │ │ │ │ │ ├── SpeakerDetailsViewModel.java │ │ │ │ │ │ ├── SpeakerViewHolder.java │ │ │ │ │ │ ├── SpeakersListAdapter.java │ │ │ │ │ │ ├── SpeakersListFragment.java │ │ │ │ │ │ └── SpeakersListFragmentViewModel.java │ │ │ │ │ ├── sponsor │ │ │ │ │ │ ├── SponsorViewHolder.java │ │ │ │ │ │ ├── SponsorsFragment.java │ │ │ │ │ │ ├── SponsorsFragmentViewModel.java │ │ │ │ │ │ └── SponsorsListAdapter.java │ │ │ │ │ └── track │ │ │ │ │ │ ├── TrackViewHolder.java │ │ │ │ │ │ ├── TracksFragment.java │ │ │ │ │ │ ├── TracksFragmentViewModel.java │ │ │ │ │ │ ├── TracksListAdapter.java │ │ │ │ │ │ └── session │ │ │ │ │ │ ├── SessionDetailActivity.java │ │ │ │ │ │ ├── SessionDetailActivityViewModel.java │ │ │ │ │ │ ├── SessionSpeakerListAdapter.java │ │ │ │ │ │ ├── SessionViewHolder.java │ │ │ │ │ │ ├── SessionsListAdapter.java │ │ │ │ │ │ ├── TrackSessionsActivity.java │ │ │ │ │ │ └── TrackSessionsActivityViewModel.java │ │ │ │ │ └── data │ │ │ │ │ └── repository │ │ │ │ │ ├── RealmDataRepository.kt │ │ │ │ │ └── RealmDatabaseMigration.java │ │ │ └── rx │ │ │ │ └── Observable.java │ │ └── res │ │ │ ├── anim │ │ │ ├── fade_in.xml │ │ │ ├── fade_out.xml │ │ │ ├── slide_in_left.xml │ │ │ ├── slide_in_right.xml │ │ │ ├── slide_out_left.xml │ │ │ ├── slide_out_right.xml │ │ │ └── stay_in_place.xml │ │ │ ├── drawable-hdpi │ │ │ └── ic_noti_bookmark.png │ │ │ ├── drawable-mdpi │ │ │ ├── ic_arrow_back_white_cct_24dp.png │ │ │ └── ic_noti_bookmark.png │ │ │ ├── drawable-v21 │ │ │ └── touch_selector_white.xml │ │ │ ├── drawable-xhdpi │ │ │ └── ic_noti_bookmark.png │ │ │ ├── drawable-xxhdpi │ │ │ └── ic_noti_bookmark.png │ │ │ ├── drawable │ │ │ ├── background_white.xml │ │ │ ├── bg_parent_rounded_corner.xml │ │ │ ├── button_ripple.xml │ │ │ ├── comment_dialog.xml │ │ │ ├── ic_account_circle_grey_24dp.xml │ │ │ ├── ic_add_24dp.xml │ │ │ ├── ic_arrow_back_white_24dp.xml │ │ │ ├── ic_arrow_right_white_24dp.xml │ │ │ ├── ic_bookmark_border_white_24dp.xml │ │ │ ├── ic_bookmark_white_24dp.xml │ │ │ ├── ic_close_24dp.xml │ │ │ ├── ic_date_range_black_24dp.xml │ │ │ ├── ic_discount_code_black_24dp.xml │ │ │ ├── ic_domain_black_24dp.xml │ │ │ ├── ic_edit_black_24dp.xml │ │ │ ├── ic_event_white_24dp.xml │ │ │ ├── ic_expand_less_black_24dp.xml │ │ │ ├── ic_expand_more_black_24dp.xml │ │ │ ├── ic_facebook_24dp.xml │ │ │ ├── ic_feed_black_24dp.xml │ │ │ ├── ic_feedback_black_24dp.xml │ │ │ ├── ic_file_download_black_24dp.xml │ │ │ ├── ic_filter_24dp.xml │ │ │ ├── ic_github_24dp.xml │ │ │ ├── ic_google_plus_24dp.xml │ │ │ ├── ic_home_black_24dp.xml │ │ │ ├── ic_info_black_24dp.xml │ │ │ ├── ic_linkedin_24dp.xml │ │ │ ├── ic_location_on_black_24dp.xml │ │ │ ├── ic_logout.xml │ │ │ ├── ic_map_white_24dp.xml │ │ │ ├── ic_no_posts_grey_24dp.xml │ │ │ ├── ic_notifications_black_24dp.xml │ │ │ ├── ic_people_black_24dp.xml │ │ │ ├── ic_placeholder_24dp.xml │ │ │ ├── ic_play.xml │ │ │ ├── ic_question_answer_black_24dp.xml │ │ │ ├── ic_schedule_black_24dp.xml │ │ │ ├── ic_schedule_grey600_24dp.xml │ │ │ ├── ic_search_white_24dp.xml │ │ │ ├── ic_security_black_24dp.xml │ │ │ ├── ic_settings_black_24dp.xml │ │ │ ├── ic_share_white_24dp.xml │ │ │ ├── ic_sort_white_24dp.xml │ │ │ ├── ic_speaker_black_24dp.xml │ │ │ ├── ic_sponsors_grey_24dp.xml │ │ │ ├── ic_sponsors_white_24dp.xml │ │ │ ├── ic_ticket_white_24dp.xml │ │ │ ├── ic_timeline_black_24dp.xml │ │ │ ├── ic_timeline_white_24dp.xml │ │ │ ├── ic_twitter_24dp.xml │ │ │ ├── ic_youtube_24dp.xml │ │ │ ├── line_divider.xml │ │ │ ├── map_marker.xml │ │ │ ├── scrim_bottom.xml │ │ │ ├── scrim_top.xml │ │ │ ├── splash_logo.png │ │ │ ├── splash_screen.xml │ │ │ ├── touch_selector_white.xml │ │ │ ├── track_rounded_corner.xml │ │ │ ├── track_tag_background.xml │ │ │ └── widget_preview.png │ │ │ ├── layout-sw600dp │ │ │ └── activity_main.xml │ │ │ ├── layout │ │ │ ├── activity_change_password.xml │ │ │ ├── activity_edit_profile.xml │ │ │ ├── activity_locations.xml │ │ │ ├── activity_login.xml │ │ │ ├── activity_main.xml │ │ │ ├── activity_search.xml │ │ │ ├── activity_sessions_detail.xml │ │ │ ├── activity_settings.xml │ │ │ ├── activity_sign_up.xml │ │ │ ├── activity_speakers.xml │ │ │ ├── activity_tracks.xml │ │ │ ├── activity_user_profile.xml │ │ │ ├── bookmark_widget.xml │ │ │ ├── content_about_event.xml │ │ │ ├── content_change_password.xml │ │ │ ├── content_edit_profile.xml │ │ │ ├── content_login.xml │ │ │ ├── content_session_detail.xml │ │ │ ├── content_sign_up.xml │ │ │ ├── content_user_profile.xml │ │ │ ├── copyright_dialog.xml │ │ │ ├── fragment_about.xml │ │ │ ├── fragment_faqs.xml │ │ │ ├── fragment_feed_main.xml │ │ │ ├── fragment_schedule.xml │ │ │ ├── fragment_zoomable_image.xml │ │ │ ├── item_base_feed.xml │ │ │ ├── item_comment.xml │ │ │ ├── item_discount_code.xml │ │ │ ├── item_faq.xml │ │ │ ├── item_feed.xml │ │ │ ├── item_feedback.xml │ │ │ ├── item_location.xml │ │ │ ├── item_notification.xml │ │ │ ├── item_schedule.xml │ │ │ ├── item_session_speaker.xml │ │ │ ├── item_social_link.xml │ │ │ ├── item_speaker.xml │ │ │ ├── item_sponsor.xml │ │ │ ├── item_track.xml │ │ │ ├── item_twitter_feed.xml │ │ │ ├── list_comment.xml │ │ │ ├── list_discount_codes.xml │ │ │ ├── list_feed.xml │ │ │ ├── list_feedbacks.xml │ │ │ ├── list_locations.xml │ │ │ ├── list_notification.xml │ │ │ ├── list_schedule.xml │ │ │ ├── list_speakers.xml │ │ │ ├── list_sponsors.xml │ │ │ ├── list_tracks.xml │ │ │ ├── list_twitter_feed.xml │ │ │ ├── map_toolbar.xml │ │ │ ├── nav_header.xml │ │ │ ├── post_feedback_dialog.xml │ │ │ ├── recycler_view_header.xml │ │ │ ├── search_item_speaker.xml │ │ │ ├── search_result_type_header_format.xml │ │ │ ├── speakers_call_dialog.xml │ │ │ ├── tracksactvity_item.xml │ │ │ ├── upcoming_dialogbox.xml │ │ │ └── widget_list_item.xml │ │ │ ├── menu │ │ │ ├── drawer.xml │ │ │ ├── menu_bookmarks.xml │ │ │ ├── menu_home.xml │ │ │ ├── menu_location_activity.xml │ │ │ ├── menu_locations_fragment.xml │ │ │ ├── menu_map.xml │ │ │ ├── menu_schedule.xml │ │ │ ├── menu_search_activity.xml │ │ │ ├── menu_session_detail.xml │ │ │ ├── menu_speakers.xml │ │ │ ├── menu_speakers_activity.xml │ │ │ ├── menu_tracks.xml │ │ │ ├── menu_tracks_activity.xml │ │ │ └── menu_tracksessions.xml │ │ │ ├── mipmap-hdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-mdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xhdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xxhdpi │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xxxhdpi │ │ │ └── ic_launcher.png │ │ │ ├── transition │ │ │ └── change_details_transform.xml │ │ │ ├── values-ar │ │ │ └── strings.xml │ │ │ ├── values-bn │ │ │ └── strings.xml │ │ │ ├── values-es │ │ │ └── strings.xml │ │ │ ├── values-hi │ │ │ └── strings.xml │ │ │ ├── values-id │ │ │ ├── arrays.xml │ │ │ └── strings.xml │ │ │ ├── values-ja │ │ │ ├── arrays.xml │ │ │ └── strings.xml │ │ │ ├── values-kr │ │ │ └── strings.xml │ │ │ ├── values-ml │ │ │ └── strings.xml │ │ │ ├── values-mr │ │ │ └── strings.xml │ │ │ ├── values-ne │ │ │ └── strings.xml │ │ │ ├── values-ro │ │ │ └── strings.xml │ │ │ ├── values-ta │ │ │ └── strings.xml │ │ │ ├── values-v21 │ │ │ └── styles.xml │ │ │ ├── values-vi │ │ │ └── strings.xml │ │ │ ├── values-w820dp │ │ │ └── dimens.xml │ │ │ ├── values-zh-rCN │ │ │ └── strings.xml │ │ │ ├── values-zh │ │ │ └── strings.xml │ │ │ ├── values │ │ │ ├── arrays.xml │ │ │ ├── color.xml │ │ │ ├── dimens.xml │ │ │ ├── strings.xml │ │ │ └── styles.xml │ │ │ └── xml │ │ │ ├── searchable.xml │ │ │ ├── settings.xml │ │ │ └── widget_info.xml │ │ └── test │ │ ├── java │ │ └── org │ │ │ └── fossasia │ │ │ └── openevent │ │ │ ├── common │ │ │ └── utils │ │ │ │ ├── DateTest.java │ │ │ │ ├── ImageUriParserTest.java │ │ │ │ └── JSONDeserializationTest.java │ │ │ └── config │ │ │ ├── AppConfigurerTest.java │ │ │ └── StrategyRegistryTest.java │ │ └── resources │ │ └── mockito-extensions │ │ └── org.mockito.plugins.MockMaker ├── build.gradle ├── data │ ├── .gitignore │ ├── build.gradle │ ├── lombok.config │ ├── proguard-rules.pro │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ └── java │ │ └── org │ │ └── fossasia │ │ └── openevent │ │ ├── config │ │ ├── Config.java │ │ ├── ConfigStrategy.java │ │ └── ConfigStrategyHolder.java │ │ ├── core │ │ └── auth │ │ │ └── model │ │ │ └── User.java │ │ └── data │ │ ├── DiscountCode.java │ │ ├── Event.java │ │ ├── FAQ.java │ │ ├── Feedback.java │ │ ├── Microlocation.java │ │ ├── Notification.java │ │ ├── Session.java │ │ ├── SessionType.java │ │ ├── Speaker.java │ │ ├── Sponsor.java │ │ ├── Track.java │ │ ├── extras │ │ ├── Copyright.java │ │ ├── EventDates.java │ │ ├── SocialLink.java │ │ └── SpeakersCall.java │ │ └── module │ │ └── DataModule.java ├── gradle.properties ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat └── settings.gradle ├── apk-generator ├── v1 │ ├── api │ │ ├── api.php │ │ ├── appgenserver.py │ │ ├── composer.json │ │ └── email.php │ ├── css │ │ └── main.css │ ├── index.html │ ├── main.js │ ├── node │ │ ├── app.js │ │ ├── buildApk.sh │ │ ├── config │ │ │ └── config.json │ │ ├── css │ │ │ └── main.css │ │ ├── firebase │ │ │ └── model.js │ │ ├── index.html │ │ ├── main.js │ │ ├── package.json │ │ ├── upload │ │ │ ├── 1473573902660 │ │ │ │ ├── data.zip │ │ │ │ └── releaseapk.apk │ │ │ ├── 1477150732949 │ │ │ │ └── data.zip │ │ │ ├── 1477213479398 │ │ │ │ ├── data.zip │ │ │ │ └── releaseapk.apk │ │ │ └── 1477213726364 │ │ │ │ ├── data.zip │ │ │ │ └── releaseapk.apk │ │ └── util │ │ │ ├── build.js │ │ │ └── replacer.js │ └── scripts │ │ ├── appgenserver.py │ │ ├── buildApk.sh │ │ ├── cleanup.sh │ │ ├── clone.sh │ │ ├── config.json │ │ ├── copyApk.sh │ │ ├── deleteAssets.sh │ │ ├── email.sh │ │ ├── extractZip.sh │ │ ├── ic_launcher.png │ │ ├── passapi.sh │ │ ├── runPy.php │ │ ├── sendNotif.py │ │ ├── setPerm.sh │ │ └── upload.php └── v2 │ ├── README.md │ ├── app │ ├── __init__.py │ ├── generator │ │ ├── __init__.py │ │ └── generator.py │ ├── static │ │ ├── assets │ │ │ ├── background.jpg │ │ │ └── ic_launcher.png │ │ ├── css │ │ │ └── main.css │ │ ├── favicon.ico │ │ ├── icons │ │ │ ├── blog.png │ │ │ ├── bug.png │ │ │ ├── code.png │ │ │ ├── eventyay.png │ │ │ ├── fossasia.png │ │ │ ├── loklak.png │ │ │ └── susi.jpg │ │ ├── js │ │ │ ├── main.js │ │ │ └── utils.js │ │ └── releases │ │ │ └── .gitignore │ ├── tasks │ │ └── __init__.py │ ├── templates │ │ ├── errors │ │ │ └── 404.html │ │ └── index.html │ ├── utils │ │ ├── __init__.py │ │ ├── assets.py │ │ ├── flask_helpers.py │ │ ├── libs │ │ │ ├── __init__.py │ │ │ ├── asset_resizer.py │ │ │ └── request_context_task.py │ │ └── notification.py │ └── views │ │ ├── __init__.py │ │ └── api.py │ ├── config.py │ ├── keystore │ └── .gitignore │ ├── requirements.txt │ └── scripts │ └── build_apk.sh ├── docker-compose.yml ├── docs ├── _static │ └── images │ │ ├── androidgenerator.png │ │ ├── app-bookmarks-and-home.png │ │ ├── app-drawer.png │ │ ├── app-event-detail.png │ │ ├── app-live-feed.png │ │ ├── app-location-detail.png │ │ ├── app-locations.png │ │ ├── app-map.png │ │ ├── app-schedule-sort.png │ │ ├── app-schedule.png │ │ ├── app-settings.png │ │ ├── app-speaker-detail.png │ │ ├── app-speakers.png │ │ ├── app-sponsors.png │ │ ├── app-track-sessions.png │ │ ├── app-tracks.png │ │ ├── app-user-log-in.png │ │ ├── app-user-profile.png │ │ ├── app-user-sign-up.png │ │ ├── aws-instance.png │ │ ├── aws-key-pair.png │ │ ├── aws-security-group.png │ │ ├── celery_task.jpeg │ │ ├── digitalocean-droplet.png │ │ ├── downloadapp.png │ │ ├── generator.jpeg │ │ ├── mailcode.png │ │ └── webapp.gif ├── android-app-setup.md ├── apk-generator.md ├── codestyle.md ├── commitstyle.md ├── installation │ ├── aws.md │ ├── digital-ocean.md │ ├── docker.md │ ├── gce-kubernetes.md │ └── generic.md └── screenshots │ └── deleted.txt ├── kubernetes ├── deploy.sh ├── images │ └── generator │ │ ├── Dockerfile │ │ ├── android.sh │ │ ├── setup.sh │ │ └── tools │ │ └── android-accept-licenses.sh ├── run.sh ├── travis │ ├── deploy.sh │ └── eventyay-b6f445785c27.json.enc └── yamls │ ├── generator │ ├── android-deployment.yml │ ├── android-service.yml │ ├── ingress-notls.yml │ └── ingress-tls.yml │ └── standalone │ ├── redis │ ├── 00-namespace.yml │ ├── redis-deployment.yml │ └── redis-service.yml │ └── web │ ├── 00-namespace.yml │ └── ingress-notls.yml └── scripts ├── configedit.sh ├── generate_apks.sh └── upload-apk.sh /.gitattributes: -------------------------------------------------------------------------------- 1 | .travis.yml merge=ours 2 | README.md merge=ours 3 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE: -------------------------------------------------------------------------------- 1 | **Actual Behaviour** 2 | 3 | Please state here what is currently happening. 4 | 5 | **Expected Behaviour** 6 | 7 | State here what the feature should enable the user to do. 8 | 9 | **Steps to reproduce it** 10 | 11 | Add steps to reproduce bugs or add information on the place where the feature should be implemented. Add links to a sample deployment or code. 12 | 13 | **LogCat for the issue** 14 | 15 | Provide logs for the crash here 16 | 17 | **Screenshots of the issue** 18 | 19 | Where-ever possible add a screenshot of the issue. 20 | 21 | **Would you like to work on the issue?** 22 | 23 | Let us know if this issue should be assigned to you or tell us who you think could help to solve this issue. 24 | 25 | **Target Milestone to solve the issue** 26 | 27 | Till which [milestone](https://github.com/fossasia/open-event-android/milestones) will you be fixing the issue? 28 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE: -------------------------------------------------------------------------------- 1 | Fixes #[Add issue number here. Note: This will automatically close the issue. If you do not solve the issue entirely, please change the message e.g. "First steps for issues #IssueNumber] 2 | 3 | Changes: [Add here what changes were made in this issue and if possible provide links.] 4 | 5 | Screenshots for the change: 6 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .gradle 2 | /local.properties 3 | .DS_Store 4 | /build 5 | /captures 6 | **/.idea/** 7 | temp 8 | .pyc 9 | *.pyc 10 | android-sdk.zip -------------------------------------------------------------------------------- /ISSUE_TEMPLATE/bug.md: -------------------------------------------------------------------------------- 1 | ### Bug Report 2 | 3 | **Actual Behaviour** 4 | 5 | Please state here what is currently happening. 6 | 7 | **Expected Behaviour** 8 | 9 | State here what the feature should enable the user to do. 10 | 11 | **Steps to reproduce it** 12 | 13 | Add steps to reproduce bugs or add information on the place where the feature should be implemented. Add links to a sample deployment or code. 14 | 15 | **LogCat for the issue** 16 | 17 | Provide logs for the crash here 18 | 19 | **Screenshots of the issue** 20 | 21 | Where-ever possible attach a screenshot of the issue. 22 | 23 | **Android version and Phone Model** 24 | 25 | Add the Android version and the phone model on which the issue was encountered. 26 | 27 | **Would you like to work on the issue?** 28 | 29 | Please let us know if you can work on it or the issue should be assigned to someone else. 30 | -------------------------------------------------------------------------------- /ISSUE_TEMPLATE/chore.md: -------------------------------------------------------------------------------- 1 | ### Chore 2 | 3 | **Description** 4 | 5 | Please describe the task. 6 | 7 | **Would you like to work on the issue?** 8 | 9 | Please let us know if you can work on it or the issue should be assigned to someone else. -------------------------------------------------------------------------------- /ISSUE_TEMPLATE/feature.md: -------------------------------------------------------------------------------- 1 | ### Feature Request 2 | 3 | **Feature Description** 4 | 5 | Please describe the feature you want to add to the project. 6 | 7 | **Would you like to work on the issue?** 8 | 9 | Please let us know if you can work on it or the issue should be assigned to someone else. -------------------------------------------------------------------------------- /android/.gitignore: -------------------------------------------------------------------------------- 1 | .gradle 2 | /local.properties 3 | .DS_Store 4 | /build 5 | /captures 6 | **/.idea/** 7 | **/*.iml 8 | -------------------------------------------------------------------------------- /android/app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /android/app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in /home/championswimmer/Android/sdk/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | 12 | # If your project uses WebView with JS, uncomment the following 13 | # and specify the fully qualified class name to the JavaScript interface 14 | # class: 15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 16 | # public *; 17 | #} 18 | 19 | -keep class butterknife.** { *; } 20 | -dontwarn butterknife.internal.** 21 | -keep class **$$ViewBinder { *; } 22 | 23 | -keepclasseswithmembernames class * { 24 | @butterknife.* ; 25 | } 26 | 27 | -keepclasseswithmembernames class * { 28 | @butterknife.* ; 29 | } 30 | -dontwarn com.yalantis.ucrop** 31 | -keep class com.yalantis.ucrop** { *; } 32 | -keep interface com.yalantis.ucrop** { *; } -------------------------------------------------------------------------------- /android/app/src/androidTest/java/org/fossasia/openevent/ApplicationTest.java: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent; 2 | 3 | import android.app.Application; 4 | import android.test.ApplicationTestCase; 5 | 6 | /** 7 | * Testing Fundamentals 8 | */ 9 | public class ApplicationTest extends ApplicationTestCase { 10 | public ApplicationTest() { 11 | super(Application.class); 12 | } 13 | } -------------------------------------------------------------------------------- /android/app/src/androidTest/java/org/fossasia/openevent/helper/IOUtils.java: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.helper; 2 | 3 | import android.content.Context; 4 | import android.support.annotation.NonNull; 5 | import android.support.annotation.RawRes; 6 | 7 | import java.io.ByteArrayOutputStream; 8 | import java.io.IOException; 9 | import java.io.InputStream; 10 | 11 | import timber.log.Timber; 12 | 13 | public final class IOUtils { 14 | private IOUtils() { 15 | } 16 | 17 | public static String readRaw(@RawRes int rawResource, @NonNull Context context) { 18 | 19 | InputStream inputStream = context.getResources().openRawResource(rawResource); 20 | ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); 21 | 22 | int ctr; 23 | try { 24 | ctr = inputStream.read(); 25 | while (ctr != -1) { 26 | byteArrayOutputStream.write(ctr); 27 | ctr = inputStream.read(); 28 | } 29 | inputStream.close(); 30 | } catch (IOException e) { 31 | Timber.e("Parsing Error Occurred at IOUtils::readRaw."); 32 | } 33 | return byteArrayOutputStream.toString(); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /android/app/src/androidTest/res/raw/event_v1.json: -------------------------------------------------------------------------------- 1 | { 2 | "color": "#fdfdfd", 3 | "email": "dev@fossasia.org", 4 | "end_time": "2015-07-14T00:00:00", 5 | "id": 4, 6 | "latitude": 37.783839, 7 | "location_name": "Moscone centre", 8 | "logo": "http://mysecureshell.readthedocs.org/en/latest/_images/logo_redhat.png", 9 | "longitude": -122.400546, 10 | "name": "FOSSASIA", 11 | "slogan": "Fossasia", 12 | "start_time": "2015-05-28T13:00:00", 13 | "url": "www.google.com" 14 | } -------------------------------------------------------------------------------- /android/app/src/androidTest/res/raw/speaker_v1.txt: -------------------------------------------------------------------------------- 1 | { 2 | "biography": "Anna works with the Fab Lab network\u00a0and Autodesk to promote creativity\u00a0and sustainable development through the global Maker Movement. A graduate of the Massachusetts Institute of Technology, she received a Fulbright fellowship\u00a0to research grassroots manufacturing at the Kwame Nkrumah University of Science and Technology in Ghana. She has taught science and engineering in Ghana, Peru, the United States, and Saudi Arabia, and led design thinking workshops in India and Taiwan. She was a co-organizer for the 10th annual Global Fab Lab conference in Barcelona, and is helping organize the 11th conference in Boston, US for next year.", 3 | "country": "", 4 | "email": "", 5 | "facebook": null, 6 | "github": null, 7 | "id": 3, 8 | "linkedin": null, 9 | "name": "Anna Waldman-Brown", 10 | "organisation": "Ananse Group", 11 | "photo": "https://re-publica.de/sites/re-publica.de/files/styles/speaker_profile/public/media/pictures/annawb.png", 12 | "position": null, 13 | "sessions": [ 14 | 2, 15 | 4 16 | ], 17 | "twitter": null, 18 | "web": "https://re-publica.de/member/3577#profile-speaker" 19 | } -------------------------------------------------------------------------------- /android/app/src/fdroid/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /android/app/src/fdroid/java/org/fossasia/openevent/core/location/modules/MapModuleFactory.java: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.core.location.modules; 2 | 3 | public class MapModuleFactory implements MapModuleProvider { 4 | 5 | /** 6 | * We can cache here to only initialize the module during startup 7 | */ 8 | private static OSMapModule instance; 9 | 10 | @Override 11 | public MapModule provideMapModule() { 12 | if (instance == null) { 13 | instance = new OSMapModule(); 14 | } 15 | return instance; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /android/app/src/fdroid/java/org/fossasia/openevent/core/location/modules/OSMapModule.java: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.core.location.modules; 2 | 3 | import android.support.v4.app.Fragment; 4 | 5 | import org.fossasia.openevent.fragments.OSMapFragment; 6 | 7 | public class OSMapModule implements MapModule { 8 | @Override 9 | public Fragment provideMapFragment() { 10 | return new OSMapFragment(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /android/app/src/fdroid/res/layout/fragment_map.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 12 | 13 | 18 | -------------------------------------------------------------------------------- /android/app/src/googleplay/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 12 | 13 | 16 | 17 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /android/app/src/googleplay/java/org/fossasia/openevent/core/location/MicrolocationClusterWrapper.java: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.core.location; 2 | 3 | import com.google.android.gms.maps.model.LatLng; 4 | import com.google.android.gms.maps.model.Marker; 5 | import com.google.maps.android.clustering.ClusterItem; 6 | 7 | import org.fossasia.openevent.data.Microlocation; 8 | 9 | public class MicrolocationClusterWrapper implements ClusterItem { 10 | 11 | private LatLng latLng; 12 | private Marker marker; 13 | private Microlocation microlocation; 14 | 15 | public MicrolocationClusterWrapper(Microlocation microlocation) { 16 | this.microlocation = microlocation; 17 | this.latLng = new LatLng(microlocation.getLatitude(), microlocation.getLongitude()); 18 | } 19 | 20 | @Override 21 | public LatLng getPosition() { 22 | return latLng; 23 | } 24 | 25 | public Microlocation getMicrolocation() { 26 | return microlocation; 27 | } 28 | 29 | public void setMarker(Marker marker) { 30 | this.marker = marker; 31 | } 32 | 33 | public Marker getMarker() { 34 | return marker; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /android/app/src/googleplay/java/org/fossasia/openevent/core/location/modules/GoogleMapModule.java: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.core.location.modules; 2 | 3 | import android.support.v4.app.Fragment; 4 | 5 | import org.fossasia.openevent.core.location.MapsFragment; 6 | 7 | public class GoogleMapModule implements MapModule { 8 | /** 9 | * This guy should not really cache anything 10 | */ 11 | @Override 12 | public Fragment provideMapFragment() { 13 | return new MapsFragment(); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /android/app/src/googleplay/java/org/fossasia/openevent/core/location/modules/MapModuleFactory.java: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.core.location.modules; 2 | 3 | public class MapModuleFactory implements MapModuleProvider { 4 | 5 | /** 6 | * We can cache here to only initialize the module during startup 7 | */ 8 | private static GoogleMapModule instance; 9 | 10 | @Override 11 | public MapModule provideMapModule() { 12 | if (instance == null) { 13 | instance = new GoogleMapModule(); 14 | } 15 | return instance; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /android/app/src/googleplay/res/layout/fragment_map.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /android/app/src/googleplay/res/values/google_play.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | AIzaSyCkOllrg0-SI48fcHgVONpXZK2Kh_iFmCQ 4 | -------------------------------------------------------------------------------- /android/app/src/googleplay/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Map 4 | -------------------------------------------------------------------------------- /android/app/src/main/assets/config.json: -------------------------------------------------------------------------------- 1 | { 2 | 3 | "email": "dev@fossasia.org", 4 | "app-name": "Open Event", 5 | "api-link": "https://open-event-api-dev.herokuapp.com/v1/events/173", 6 | "is-auth-enabled": true 7 | } 8 | -------------------------------------------------------------------------------- /android/app/src/main/ic_launcher-web.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/open-event-droidgen/9ecda52872bd71aca648aa5cbb7b9218e683cd1c/android/app/src/main/ic_launcher-web.png -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/OpenEventApp.java: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent; 2 | 3 | import android.content.Context; 4 | import android.content.res.Configuration; 5 | import android.support.multidex.MultiDexApplication; 6 | 7 | import org.fossasia.openevent.config.AppConfigurer; 8 | import org.fossasia.openevent.config.StrategyRegistry; 9 | 10 | import java.lang.ref.WeakReference; 11 | 12 | import io.branch.referral.Branch; 13 | 14 | public class OpenEventApp extends MultiDexApplication { 15 | 16 | private static WeakReference context; 17 | 18 | // TODO: Remove all instances 19 | public static Context getAppContext() { 20 | return context.get(); 21 | } 22 | 23 | @Override 24 | public void onCreate() { 25 | super.onCreate(); 26 | context = new WeakReference<>(getApplicationContext()); 27 | 28 | Branch.getAutoInstance(this); 29 | AppConfigurer.configure(this); 30 | } 31 | 32 | @Override 33 | public void onConfigurationChanged(Configuration newConfig) { 34 | super.onConfigurationChanged(newConfig); 35 | 36 | StrategyRegistry.getInstance().getLanguageStrategy().setDefaultSystemLanguage(newConfig.locale.getDisplayLanguage()); 37 | } 38 | 39 | } 40 | -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/common/api/processor/MicrolocationListResponseProcessor.java: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.common.api.processor; 2 | 3 | import org.fossasia.openevent.data.Microlocation; 4 | import org.fossasia.openevent.data.repository.RealmDataRepository; 5 | import org.fossasia.openevent.common.events.DownloadEvent; 6 | import org.fossasia.openevent.common.events.MicrolocationDownloadEvent; 7 | 8 | import java.util.List; 9 | 10 | public class MicrolocationListResponseProcessor extends ResponseProcessor> { 11 | 12 | @Override 13 | protected void onSuccess(List microlocations) { 14 | complete(RealmDataRepository.getDefaultInstance() 15 | .saveLocations(microlocations)); 16 | } 17 | 18 | @Override 19 | protected DownloadEvent getDownloadEvent(boolean success) { 20 | return new MicrolocationDownloadEvent(success); 21 | } 22 | 23 | @Override 24 | protected Object getErrorResponseEvent(int errorCode) { 25 | return getDownloadEvent(false); 26 | } 27 | } -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/common/api/processor/SessionTypeListResponseProcessor.java: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.common.api.processor; 2 | 3 | import org.fossasia.openevent.data.SessionType; 4 | import org.fossasia.openevent.data.repository.RealmDataRepository; 5 | import org.fossasia.openevent.common.events.DownloadEvent; 6 | import org.fossasia.openevent.common.events.SessionTypesDownloadEvent; 7 | 8 | import java.util.List; 9 | 10 | public class SessionTypeListResponseProcessor extends ResponseProcessor> { 11 | 12 | @Override 13 | protected void onSuccess(List sessionTypes) { 14 | complete(RealmDataRepository.getDefaultInstance() 15 | .saveSessionTypes(sessionTypes)); 16 | } 17 | 18 | @Override 19 | protected DownloadEvent getDownloadEvent(boolean suceess) { 20 | return new SessionTypesDownloadEvent(suceess); 21 | } 22 | 23 | @Override 24 | protected Object getErrorResponseEvent(int errorCode) { 25 | return getDownloadEvent(false); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/common/api/processor/SpeakerListResponseProcessor.java: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.common.api.processor; 2 | 3 | import org.fossasia.openevent.data.Speaker; 4 | import org.fossasia.openevent.data.repository.RealmDataRepository; 5 | import org.fossasia.openevent.common.events.DownloadEvent; 6 | import org.fossasia.openevent.common.events.SpeakerDownloadEvent; 7 | 8 | import java.util.List; 9 | 10 | public class SpeakerListResponseProcessor extends ResponseProcessor> { 11 | 12 | @Override 13 | protected void onSuccess(List speakers) { 14 | complete(RealmDataRepository.getDefaultInstance() 15 | .saveSpeakers(speakers)); 16 | } 17 | 18 | @Override 19 | protected DownloadEvent getDownloadEvent(boolean success) { 20 | return new SpeakerDownloadEvent(success); 21 | } 22 | 23 | @Override 24 | protected Object getErrorResponseEvent(int errorCode) { 25 | return getDownloadEvent(false); 26 | } 27 | } -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/common/api/processor/SponsorListResponseProcessor.java: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.common.api.processor; 2 | 3 | import org.fossasia.openevent.data.Sponsor; 4 | import org.fossasia.openevent.data.repository.RealmDataRepository; 5 | import org.fossasia.openevent.common.events.DownloadEvent; 6 | import org.fossasia.openevent.common.events.SponsorDownloadEvent; 7 | 8 | import java.util.List; 9 | 10 | public class SponsorListResponseProcessor extends ResponseProcessor> { 11 | 12 | @Override 13 | protected void onSuccess(List sponsors) { 14 | complete(RealmDataRepository.getDefaultInstance() 15 | .saveSponsors(sponsors)); 16 | } 17 | 18 | @Override 19 | protected DownloadEvent getDownloadEvent(boolean success) { 20 | return new SponsorDownloadEvent(success); 21 | } 22 | 23 | @Override 24 | protected Object getErrorResponseEvent(int errorCode) { 25 | return getDownloadEvent(false); 26 | } 27 | } -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/common/api/processor/TrackListResponseProcessor.java: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.common.api.processor; 2 | 3 | import org.fossasia.openevent.data.Track; 4 | import org.fossasia.openevent.data.repository.RealmDataRepository; 5 | import org.fossasia.openevent.common.events.DownloadEvent; 6 | import org.fossasia.openevent.common.events.TracksDownloadEvent; 7 | 8 | import java.util.List; 9 | public class TrackListResponseProcessor extends ResponseProcessor> { 10 | 11 | @Override 12 | protected void onSuccess(List tracks) { 13 | complete(RealmDataRepository.getDefaultInstance() 14 | .saveTracks(tracks)); 15 | } 16 | 17 | @Override 18 | protected DownloadEvent getDownloadEvent(boolean success) { 19 | return new TracksDownloadEvent(success); 20 | } 21 | 22 | @Override 23 | protected Object getErrorResponseEvent(int errorCode) { 24 | return getDownloadEvent(false); 25 | } 26 | } -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/common/arch/LiveRealmData.java: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.common.arch; 2 | 3 | import android.arch.lifecycle.LiveData; 4 | 5 | import io.realm.RealmChangeListener; 6 | import io.realm.RealmModel; 7 | import io.realm.RealmResults; 8 | 9 | public class LiveRealmData extends LiveData> { 10 | 11 | private RealmResults results; 12 | private final RealmChangeListener> listener = 13 | this::setValue; 14 | 15 | public LiveRealmData(RealmResults realmResults) { 16 | results = realmResults; 17 | } 18 | 19 | @Override 20 | protected void onActive() { 21 | results.addChangeListener(listener); 22 | } 23 | 24 | @Override 25 | protected void onInactive() { 26 | results.removeChangeListener(listener); 27 | } 28 | } -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/common/arch/LiveRealmDataObject.java: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.common.arch; 2 | 3 | import android.arch.lifecycle.LiveData; 4 | 5 | import io.realm.RealmChangeListener; 6 | import io.realm.RealmObject; 7 | 8 | public class LiveRealmDataObject extends LiveData { 9 | private T data; 10 | private final RealmChangeListener listener = 11 | this::setValue; 12 | 13 | public LiveRealmDataObject(T data) { 14 | this.data = data; 15 | } 16 | 17 | @Override 18 | protected void onActive() { 19 | data.addChangeListener(listener); 20 | } 21 | 22 | @Override 23 | protected void onInactive() { 24 | data.removeChangeListener(listener); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/common/date/AndroidDateConverter.java: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.common.date; 2 | 3 | import org.threeten.bp.ZonedDateTime; 4 | import org.threeten.bp.format.DateTimeFormatter; 5 | import org.threeten.bp.format.DateTimeParseException; 6 | 7 | public class AndroidDateConverter { 8 | 9 | public static String getRelativeTimeFromOffsetDateTime(String timeStamp) throws DateTimeParseException { 10 | ZonedDateTime timeCreatedDate = ZonedDateTime.from(DateTimeFormatter.ISO_OFFSET_DATE_TIME.parse(timeStamp)); 11 | return (String) android.text.format.DateUtils.getRelativeTimeSpanString( 12 | (timeCreatedDate.toInstant().toEpochMilli()), 13 | System.currentTimeMillis(), android.text.format.DateUtils.SECOND_IN_MILLIS); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/common/date/DateService.java: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.common.date; 2 | 3 | import org.threeten.bp.ZonedDateTime; 4 | 5 | public class DateService { 6 | public static boolean isOngoingSession(ZonedDateTime start, ZonedDateTime end, ZonedDateTime current) { 7 | return (start.isBefore(current) || start.equals(current)) && end.isAfter(current); 8 | } 9 | 10 | public static boolean isUpcomingSession(ZonedDateTime start, ZonedDateTime end, ZonedDateTime current) { 11 | return start.isAfter(current) && end.isAfter(current); 12 | } 13 | } -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/common/events/BookmarkChangedEvent.java: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.common.events; 2 | 3 | public class BookmarkChangedEvent { 4 | } 5 | -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/common/events/ConnectionCheckEvent.java: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.common.events; 2 | 3 | public class ConnectionCheckEvent { 4 | 5 | public boolean isConnected; 6 | 7 | public ConnectionCheckEvent(boolean isConnected) { 8 | this.isConnected = isConnected; 9 | } 10 | 11 | public boolean connState() { 12 | return isConnected; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/common/events/CounterEvent.java: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.common.events; 2 | 3 | public class CounterEvent { 4 | private int requestsCount; 5 | 6 | public CounterEvent(int count) { 7 | this.requestsCount = count; 8 | } 9 | 10 | public int getRequestsCount() { 11 | return requestsCount; 12 | } 13 | 14 | public void setRequestsCount(int requestsCount) { 15 | this.requestsCount = requestsCount; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/common/events/DataDownloadEvent.java: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.common.events; 2 | 3 | public class DataDownloadEvent { 4 | } 5 | -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/common/events/DownloadEvent.java: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.common.events; 2 | 3 | /** 4 | * Base event for all download events. 5 | */ 6 | public class DownloadEvent { 7 | private boolean state; 8 | 9 | DownloadEvent(boolean state) { 10 | this.state = state; 11 | } 12 | 13 | public boolean isState() { 14 | return state; 15 | } 16 | 17 | public void setState(boolean state) { 18 | this.state = state; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/common/events/EventDatesDownloadEvent.java: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.common.events; 2 | 3 | public class EventDatesDownloadEvent extends DownloadEvent { 4 | public EventDatesDownloadEvent(boolean state) { 5 | super(state); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/common/events/EventDownloadEvent.java: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.common.events; 2 | 3 | public class EventDownloadEvent extends DownloadEvent { 4 | 5 | public EventDownloadEvent(boolean state) { 6 | super(state); 7 | } 8 | 9 | } 10 | -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/common/events/EventLoadedEvent.java: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.common.events; 2 | 3 | import org.fossasia.openevent.data.Event; 4 | 5 | public class EventLoadedEvent { 6 | private Event event; 7 | 8 | public EventLoadedEvent(Event event) { 9 | this.event = event; 10 | } 11 | 12 | public Event getEvent() { 13 | return event; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/common/events/JsonReadEvent.java: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.common.events; 2 | 3 | public class JsonReadEvent { 4 | private String name; 5 | private String json; 6 | 7 | public JsonReadEvent(String name, String json) { 8 | this.name = name; 9 | this.json = json; 10 | } 11 | 12 | public String getName() { 13 | return name; 14 | } 15 | 16 | public void setName(String name) { 17 | this.name = name; 18 | } 19 | 20 | public String getJson() { 21 | return json; 22 | } 23 | 24 | public void setJson(String json) { 25 | this.json = json; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/common/events/MicrolocationDownloadEvent.java: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.common.events; 2 | 3 | public class MicrolocationDownloadEvent extends DownloadEvent { 4 | 5 | public MicrolocationDownloadEvent(boolean state) { 6 | super(state); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/common/events/NoInternetEvent.java: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.common.events; 2 | 3 | public class NoInternetEvent { 4 | } 5 | -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/common/events/RefreshUiEvent.java: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.common.events; 2 | 3 | public class RefreshUiEvent { 4 | } 5 | -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/common/events/RetrofitError.java: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.common.events; 2 | 3 | public class RetrofitError { 4 | private Throwable throwable; 5 | 6 | public RetrofitError(Throwable throwable) { 7 | this.throwable = throwable; 8 | } 9 | 10 | public Throwable getThrowable() { 11 | return throwable; 12 | } 13 | 14 | public void setThrowable(Throwable throwable) { 15 | this.throwable = throwable; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/common/events/RetrofitResponseEvent.java: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.common.events; 2 | 3 | public class RetrofitResponseEvent { 4 | 5 | private int statusCode; 6 | 7 | public RetrofitResponseEvent(int statusCode) { 8 | this.statusCode = statusCode; 9 | } 10 | 11 | public int getStatusCode() { 12 | return statusCode; 13 | } 14 | 15 | public void setStatusCode(int statusCode) { 16 | this.statusCode = statusCode; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/common/events/SessionDownloadEvent.java: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.common.events; 2 | 3 | public class SessionDownloadEvent extends DownloadEvent { 4 | 5 | public SessionDownloadEvent(boolean state) { 6 | super(state); 7 | } 8 | 9 | } 10 | -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/common/events/SessionTypesDownloadEvent.java: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.common.events; 2 | 3 | public class SessionTypesDownloadEvent extends DownloadEvent { 4 | 5 | public SessionTypesDownloadEvent(boolean state) { 6 | super(state); 7 | } 8 | 9 | } 10 | -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/common/events/ShowNetworkDialogEvent.java: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.common.events; 2 | 3 | public class ShowNetworkDialogEvent { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/common/events/SpeakerDownloadEvent.java: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.common.events; 2 | 3 | public class SpeakerDownloadEvent extends DownloadEvent { 4 | 5 | public SpeakerDownloadEvent(boolean state) { 6 | super(state); 7 | } 8 | 9 | } 10 | -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/common/events/SponsorDownloadEvent.java: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.common.events; 2 | 3 | public class SponsorDownloadEvent extends DownloadEvent { 4 | 5 | public SponsorDownloadEvent(boolean state) { 6 | super(state); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/common/events/TracksDownloadEvent.java: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.common.events; 2 | 3 | public class TracksDownloadEvent extends DownloadEvent { 4 | 5 | public TracksDownloadEvent(boolean state) { 6 | super(state); 7 | } 8 | 9 | } 10 | -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/common/notification/NotificationAlarmReceiver.java: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.common.notification; 2 | 3 | import android.content.BroadcastReceiver; 4 | import android.content.Context; 5 | import android.content.Intent; 6 | 7 | import org.fossasia.openevent.core.bookmark.BookmarkAlarmService; 8 | import org.fossasia.openevent.common.ConstantStrings; 9 | 10 | public class NotificationAlarmReceiver extends BroadcastReceiver { 11 | 12 | @Override 13 | public void onReceive(Context context, Intent intent) { 14 | int sessionId = intent.getIntExtra(ConstantStrings.SESSION, 0); 15 | String sessionTimings = intent.getStringExtra(ConstantStrings.SESSION_TIMING); 16 | 17 | Intent service1 = new Intent(context, BookmarkAlarmService.class); 18 | service1.putExtra(ConstantStrings.SESSION, sessionId); 19 | service1.putExtra(ConstantStrings.SESSION_TIMING, sessionTimings); 20 | context.startService(service1); 21 | 22 | } 23 | } -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/common/ui/WidgetUpdater.java: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.common.ui; 2 | 3 | import android.appwidget.AppWidgetManager; 4 | import android.content.ComponentName; 5 | import android.content.Context; 6 | import android.content.Intent; 7 | 8 | import org.fossasia.openevent.core.bookmark.BookmarkWidgetProvider; 9 | 10 | public class WidgetUpdater { 11 | public static void updateWidget(Context context){ 12 | int widgetIds[] = AppWidgetManager.getInstance(context.getApplicationContext()) 13 | .getAppWidgetIds(new ComponentName(context.getApplicationContext(), BookmarkWidgetProvider.class)); 14 | BookmarkWidgetProvider bookmarkWidgetProvider = new BookmarkWidgetProvider(); 15 | bookmarkWidgetProvider.onUpdate(context.getApplicationContext(), 16 | AppWidgetManager.getInstance(context.getApplicationContext()),widgetIds); 17 | context.sendBroadcast(new Intent(BookmarkWidgetProvider.ACTION_UPDATE)); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/common/ui/image/OnImageZoomListener.java: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.common.ui.image; 2 | 3 | public interface OnImageZoomListener { 4 | void onZoom(String imageUri); 5 | } 6 | -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/common/ui/image/ZoomableImageUtil.java: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.common.ui.image; 2 | 3 | import android.app.DialogFragment; 4 | import android.os.Bundle; 5 | import android.support.v4.app.FragmentManager; 6 | import android.text.TextUtils; 7 | 8 | import org.fossasia.openevent.common.ConstantStrings; 9 | 10 | public class ZoomableImageUtil { 11 | 12 | public static void showZoomableImageDialogFragment(FragmentManager fragmentManager, String imageUri) { 13 | if (!TextUtils.isEmpty(imageUri)) { 14 | ZoomableImageDialogFragment zoomableImageDialogFragment = new ZoomableImageDialogFragment(); 15 | zoomableImageDialogFragment.setStyle(DialogFragment.STYLE_NO_TITLE, 0); 16 | Bundle bundle = new Bundle(); 17 | bundle.putString(ConstantStrings.IMAGE_ZOOM_KEY, imageUri); 18 | zoomableImageDialogFragment.setArguments(bundle); 19 | zoomableImageDialogFragment.show(fragmentManager, "ZoomableImage"); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/common/ui/recyclerview/DividerViewHolder.java: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.common.ui.recyclerview; 2 | 3 | import android.support.v7.widget.RecyclerView; 4 | import android.view.View; 5 | import android.widget.TextView; 6 | 7 | import org.fossasia.openevent.R; 8 | 9 | import butterknife.BindView; 10 | import butterknife.ButterKnife; 11 | 12 | public class DividerViewHolder extends RecyclerView.ViewHolder { 13 | @BindView(R.id.recyclerview_view_header) 14 | protected TextView resultTypeHeader; 15 | 16 | public DividerViewHolder(View itemView) { 17 | super(itemView); 18 | ButterKnife.bind(this, itemView); 19 | } 20 | 21 | public void bindHeader(String headerItem) { 22 | resultTypeHeader.setText(headerItem); 23 | } 24 | } -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/common/ui/recyclerview/HeaderViewHolder.java: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.common.ui.recyclerview; 2 | 3 | import android.support.v7.widget.RecyclerView; 4 | import android.view.View; 5 | import android.widget.TextView; 6 | 7 | import org.fossasia.openevent.R; 8 | 9 | import butterknife.BindView; 10 | import butterknife.ButterKnife; 11 | 12 | public class HeaderViewHolder extends RecyclerView.ViewHolder { 13 | 14 | @BindView(R.id.recyclerview_view_header) 15 | public TextView header; 16 | 17 | public HeaderViewHolder(View itemView) { 18 | super(itemView); 19 | ButterKnife.bind(this, itemView); 20 | } 21 | } -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/common/ui/recyclerview/stickyheadersrecyclerview/caching/HeaderProvider.java: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.common.ui.recyclerview.stickyheadersrecyclerview.caching; 2 | 3 | import android.support.v7.widget.RecyclerView; 4 | import android.view.View; 5 | 6 | /** 7 | * Implemented by objects that provide header views for decoration 8 | */ 9 | public interface HeaderProvider { 10 | 11 | /** 12 | * Will provide a header view for a given position in the RecyclerView 13 | * 14 | * @param recyclerView that will display the header 15 | * @param position that will be headed by the header 16 | * @return a header view for the given position and list 17 | */ 18 | View getHeader(RecyclerView recyclerView, int position); 19 | 20 | void invalidate(); 21 | } 22 | -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/common/ui/recyclerview/stickyheadersrecyclerview/util/OrientationProvider.java: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.common.ui.recyclerview.stickyheadersrecyclerview.util; 2 | 3 | import android.support.v7.widget.RecyclerView; 4 | 5 | /** 6 | * Interface for getting the orientation of a RecyclerView from its LayoutManager 7 | */ 8 | public interface OrientationProvider { 9 | 10 | int getOrientation(RecyclerView recyclerView); 11 | 12 | boolean isReverseLayout(RecyclerView recyclerView); 13 | } 14 | -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/common/utils/CommonTaskLoop.kt: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.common.utils 2 | 3 | class CommonTaskLoop private constructor() { 4 | 5 | private val commonEventLoop: CommonEventLoop = CommonEventLoop() 6 | 7 | fun post(call: Runnable) { 8 | commonEventLoop.post(call) 9 | } 10 | 11 | fun delayPost(call: Runnable, nMillSec: Int) { 12 | commonEventLoop.delayPost(call, nMillSec) 13 | } 14 | 15 | fun shutdown() { 16 | commonEventLoop.shutdown() 17 | } 18 | 19 | companion object { 20 | @JvmStatic 21 | val instance = CommonTaskLoop() 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/config/AppConfigurer.kt: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.config 2 | 3 | import android.content.Context 4 | 5 | /** 6 | * Holds application context and a strategy holder and configures each strategy in order 7 | * 8 | * If any strategy returns true to halt, all further strategies are skipped 9 | * Uses [StrategyRegistry] singleton to get default holder if not provided 10 | */ 11 | class AppConfigurer(private val context: Context?, private val configStrategyHolder: ConfigStrategyHolder) { 12 | 13 | fun configure() { 14 | for (configStrategy in configStrategyHolder.strategies) { 15 | val shouldHalt = configStrategy.configure(context) 16 | if (shouldHalt) 17 | break 18 | } 19 | } 20 | 21 | companion object { 22 | 23 | @JvmOverloads 24 | @JvmStatic 25 | fun configure(context: Context?, configStrategyHolder: ConfigStrategyHolder = StrategyRegistry.instance.getDefaultHolder()) { 26 | AppConfigurer(context, configStrategyHolder).configure() 27 | } 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/config/strategies/EventBusStrategy.kt: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.config.strategies 2 | 3 | import android.content.Context 4 | import android.os.Handler 5 | import android.os.Looper 6 | 7 | import com.squareup.otto.Bus 8 | 9 | import org.fossasia.openevent.config.ConfigStrategy 10 | 11 | /** 12 | * Configures and provides EventBus singleton for use throughout app 13 | * 14 | * To be used via [org.fossasia.openevent.config.StrategyRegistry] 15 | * 16 | * TODO: Remove event bus from project 17 | */ 18 | class EventBusStrategy : ConfigStrategy { 19 | 20 | var eventBus: Bus? = null 21 | get() { 22 | if (field == null) { 23 | field = Bus() 24 | } 25 | return field 26 | } 27 | 28 | private val handler: Handler = Handler(Looper.getMainLooper()) 29 | 30 | override fun configure(context: Context): Boolean { 31 | eventBus?.register(context) 32 | return false 33 | } 34 | 35 | fun postEventOnUIThread(event: Any) { 36 | handler.post { eventBus?.post(event) } 37 | } 38 | 39 | } 40 | -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/config/strategies/LanguageStrategy.kt: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.config.strategies 2 | 3 | import android.content.Context 4 | import org.fossasia.openevent.config.ConfigStrategy 5 | import java.util.* 6 | 7 | /** 8 | * Sets and provides default system language 9 | * To be used via [org.fossasia.openevent.config.StrategyRegistry] 10 | */ 11 | class LanguageStrategy : ConfigStrategy { 12 | 13 | var defaultSystemLanguage: String? = null 14 | 15 | override fun configure(context: Context): Boolean { 16 | defaultSystemLanguage = Locale.getDefault().displayLanguage 17 | return false 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/config/strategies/LeakCanaryStrategy.kt: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.config.strategies 2 | 3 | import android.content.Context 4 | 5 | import com.squareup.leakcanary.LeakCanary 6 | import com.squareup.leakcanary.RefWatcher 7 | 8 | import org.fossasia.openevent.OpenEventApp 9 | import org.fossasia.openevent.config.ConfigStrategy 10 | 11 | /** 12 | * Configures and provides Leak Canary Reference Watcher 13 | * To be used via [org.fossasia.openevent.config.StrategyRegistry] 14 | */ 15 | class LeakCanaryStrategy : ConfigStrategy { 16 | 17 | var refWatcher: RefWatcher? = null 18 | private set 19 | 20 | override fun configure(context: Context): Boolean { 21 | if (LeakCanary.isInAnalyzerProcess(context)) { 22 | // This process is dedicated to LeakCanary for heap analysis. 23 | // You should not init your app in this process. 24 | return true 25 | } 26 | refWatcher = LeakCanary.install(context as OpenEventApp) 27 | 28 | return false 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/config/strategies/MapModuleStrategy.kt: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.config.strategies 2 | 3 | import android.content.Context 4 | import org.fossasia.openevent.config.ConfigStrategy 5 | import org.fossasia.openevent.core.location.modules.MapModuleFactory 6 | 7 | /** 8 | * Configures and provides Map Module Factory to switch map implementations between flavours 9 | * To be used via [org.fossasia.openevent.config.StrategyRegistry] 10 | */ 11 | class MapModuleStrategy : ConfigStrategy { 12 | 13 | var mapModuleFactory: MapModuleFactory? = null 14 | private set 15 | 16 | override fun configure(context: Context): Boolean { 17 | mapModuleFactory = MapModuleFactory() 18 | return false 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/config/strategies/RealmStrategy.kt: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.config.strategies 2 | 3 | import android.content.Context 4 | 5 | import org.fossasia.openevent.config.ConfigStrategy 6 | import org.fossasia.openevent.data.module.DataModule 7 | import org.fossasia.openevent.data.repository.RealmDatabaseMigration 8 | 9 | import io.realm.Realm 10 | import io.realm.RealmConfiguration 11 | 12 | /** 13 | * Configures Realm Database 14 | */ 15 | class RealmStrategy : ConfigStrategy { 16 | 17 | override fun configure(context: Context): Boolean { 18 | Realm.init(context) 19 | val config = RealmConfiguration.Builder() 20 | .schemaVersion(RealmDatabaseMigration.DB_VERSION) // Must be bumped when the schema changes 21 | .modules(DataModule()) 22 | //TODO: Re-add migration once DB is locked/finalized 23 | .deleteRealmIfMigrationNeeded() 24 | .build() 25 | 26 | Realm.setDefaultConfiguration(config) 27 | 28 | return false 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/config/strategies/TimeConfigStrategy.kt: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.config.strategies 2 | 3 | import android.content.Context 4 | 5 | import com.jakewharton.threetenabp.AndroidThreeTen 6 | 7 | import org.fossasia.openevent.R 8 | import org.fossasia.openevent.common.date.DateConverter 9 | import org.fossasia.openevent.common.utils.SharedPreferencesUtil 10 | import org.fossasia.openevent.config.ConfigStrategy 11 | 12 | /** 13 | * Configures Date Time library and timezone information of the project 14 | */ 15 | class TimeConfigStrategy : ConfigStrategy { 16 | 17 | override fun configure(context: Context): Boolean { 18 | AndroidThreeTen.init(context) 19 | DateConverter.setShowLocalTime(SharedPreferencesUtil.getBoolean(context.resources 20 | .getString(R.string.timezone_mode_key), false)) 21 | return false 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/core/about/SocialLinksListAdapter.java: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.core.about; 2 | 3 | import android.view.LayoutInflater; 4 | import android.view.View; 5 | import android.view.ViewGroup; 6 | 7 | import org.fossasia.openevent.R; 8 | import org.fossasia.openevent.common.ui.base.BaseRVAdapter; 9 | import org.fossasia.openevent.data.extras.SocialLink; 10 | 11 | import java.util.List; 12 | 13 | public class SocialLinksListAdapter extends BaseRVAdapter { 14 | 15 | public SocialLinksListAdapter(List socialLinks) { 16 | super(socialLinks); 17 | } 18 | 19 | @Override 20 | public SocialLinkViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 21 | View view = LayoutInflater.from(parent.getContext()) 22 | .inflate(R.layout.item_social_link, parent, false); 23 | return new SocialLinkViewHolder(view, parent.getContext()); 24 | } 25 | 26 | @Override 27 | public void onBindViewHolder(SocialLinkViewHolder holder, int position) { 28 | holder.bindSocialLink(getItem(position)); 29 | } 30 | } -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/core/auth/model/ImageResponse.kt: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.core.auth.model 2 | 3 | data class ImageResponse (var url: String? = null) 4 | -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/core/auth/model/Login.kt: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.core.auth.model 2 | 3 | data class Login(var email: String? = null, var password: String? = null) -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/core/auth/model/LoginResponse.kt: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.core.auth.model 2 | 3 | import com.fasterxml.jackson.databind.PropertyNamingStrategy 4 | import com.fasterxml.jackson.databind.annotation.JsonNaming 5 | 6 | @JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy::class) 7 | data class LoginResponse (var response: Int? = null, var accessToken: String? = null) -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/core/auth/model/SignUpResponse.kt: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.core.auth.model 2 | 3 | data class SignUpResponse(var response: Int? = null, var token: String? = null) -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/core/auth/model/UploadImage.kt: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.core.auth.model 2 | 3 | data class UploadImage(var data: String? = null) 4 | -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/core/bookmark/BookmarkStatus.kt: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.core.bookmark 2 | 3 | data class BookmarkStatus( 4 | var storedColor: Int? = null, 5 | var sessionId: Int? = null, 6 | var actionCode: Status? = null) { 7 | 8 | enum class Status { 9 | CODE_UNDO_ADDED, 10 | CODE_BLANK, 11 | CODE_UNDO_REMOVED, 12 | CODE_ERROR 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/core/bookmark/BookmarksListChangeListener.java: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.core.bookmark; 2 | 3 | /** 4 | * Interface to connect AboutFragment and SessionsListAdapter. 5 | * onChange Method is called by the onClick method 6 | * of Positive Button of the 'Remove Bookmark' Dialog 7 | * in the onBindViewHolder method insideSessionsListAdapter 8 | */ 9 | public interface BookmarksListChangeListener { 10 | void onChange(); 11 | } 12 | -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/core/bookmark/OnBookmarkSelectedListener.java: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.core.bookmark; 2 | 3 | public interface OnBookmarkSelectedListener { 4 | 5 | void showSnackbar(BookmarkStatus bookmarkStatus); 6 | 7 | } 8 | -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/core/discount/DiscountCodesListAdapter.java: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.core.discount; 2 | 3 | import android.view.LayoutInflater; 4 | import android.view.View; 5 | import android.view.ViewGroup; 6 | 7 | import org.fossasia.openevent.R; 8 | import org.fossasia.openevent.common.ui.base.BaseRVAdapter; 9 | import org.fossasia.openevent.data.DiscountCode; 10 | 11 | import java.util.List; 12 | 13 | public class DiscountCodesListAdapter extends BaseRVAdapter { 14 | 15 | public DiscountCodesListAdapter(List discountCodes) { 16 | super(discountCodes); 17 | } 18 | 19 | @Override 20 | public DiscountViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 21 | View view = LayoutInflater.from(parent.getContext()) 22 | .inflate(R.layout.item_discount_code, parent, false); 23 | return new DiscountViewHolder(view); 24 | } 25 | 26 | public void onBindViewHolder(DiscountViewHolder holder, int position) { 27 | holder.bindDiscountCode(getItem(position)); 28 | } 29 | } -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/core/faqs/FAQListAdapter.java: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.core.faqs; 2 | 3 | import android.view.LayoutInflater; 4 | import android.view.View; 5 | import android.view.ViewGroup; 6 | 7 | import org.fossasia.openevent.R; 8 | import org.fossasia.openevent.common.ui.base.BaseRVAdapter; 9 | import org.fossasia.openevent.data.FAQ; 10 | 11 | import java.util.List; 12 | 13 | public class FAQListAdapter extends BaseRVAdapter { 14 | 15 | public FAQListAdapter(List dataList) { 16 | super(dataList); 17 | } 18 | 19 | @Override 20 | public FAQViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 21 | LayoutInflater layoutInflater = LayoutInflater.from(parent.getContext()); 22 | View view = layoutInflater.inflate(R.layout.item_faq, parent, false); 23 | return new FAQViewHolder(view); 24 | } 25 | 26 | @Override 27 | public void onBindViewHolder(FAQViewHolder holder, int position) { 28 | holder.bindFAQs(getDataList().get(position)); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/core/feed/BaseFeedFragment.java: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.core.feed; 2 | 3 | import android.app.ProgressDialog; 4 | import android.support.v7.widget.RecyclerView; 5 | import android.view.View; 6 | 7 | import org.fossasia.openevent.common.ui.base.BaseFragment; 8 | 9 | import java.util.List; 10 | 11 | public abstract class BaseFeedFragment extends BaseFragment { 12 | protected ProgressDialog downloadProgressDialog; 13 | 14 | protected void handleVisibility() { 15 | if (!getFeedItems().isEmpty()) { 16 | getNoFeedView().setVisibility(View.GONE); 17 | getRecyclerView().setVisibility(View.VISIBLE); 18 | } else { 19 | getNoFeedView().setVisibility(View.VISIBLE); 20 | getRecyclerView().setVisibility(View.GONE); 21 | } 22 | } 23 | 24 | protected abstract List getFeedItems(); 25 | 26 | protected abstract RecyclerView getRecyclerView(); 27 | 28 | protected abstract View getNoFeedView(); 29 | 30 | } 31 | -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/core/feed/FeedViewPagerAdapter.java: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.core.feed; 2 | 3 | 4 | import android.support.annotation.Nullable; 5 | import android.support.v4.app.Fragment; 6 | import android.support.v4.app.FragmentManager; 7 | import android.support.v4.app.FragmentPagerAdapter; 8 | 9 | import java.util.ArrayList; 10 | import java.util.List; 11 | 12 | public class FeedViewPagerAdapter extends FragmentPagerAdapter { 13 | 14 | private List fragmentList = new ArrayList<>(); 15 | private List fragmentTitleList = new ArrayList<>(); 16 | 17 | public FeedViewPagerAdapter(FragmentManager fm) { 18 | super(fm); 19 | } 20 | 21 | @Override 22 | public Fragment getItem(int position) { 23 | return fragmentList.get(position); 24 | } 25 | 26 | public void addFragment(final Fragment fragment, final String title) { 27 | fragmentList.add(fragment); 28 | fragmentTitleList.add(title); 29 | } 30 | 31 | @Nullable 32 | @Override 33 | public CharSequence getPageTitle(int position) { 34 | return fragmentTitleList.get(position); 35 | } 36 | 37 | @Override 38 | public int getCount() { 39 | return fragmentList.size(); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/core/feed/OpenCommentsDialogListener.java: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.core.feed; 2 | 3 | import org.fossasia.openevent.core.feed.facebook.api.CommentItem; 4 | 5 | import java.util.List; 6 | 7 | public interface OpenCommentsDialogListener { 8 | void openCommentsDialog(List commentItems); 9 | } -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/core/feed/Resource.kt: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.core.feed 2 | 3 | data class Resource(val status: Status, val data: T?, val message: String?) { 4 | 5 | enum class Status { 6 | SUCCESS, 7 | ERROR 8 | } 9 | 10 | companion object { 11 | 12 | @JvmStatic 13 | fun success(data: T?): Resource { 14 | return Resource(Status.SUCCESS, data, null) 15 | } 16 | 17 | @JvmStatic 18 | fun error(msg: String, data: T?): Resource { 19 | return Resource(Status.ERROR, data, msg) 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/core/feed/facebook/api/CommentItem.kt: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.core.feed.facebook.api 2 | 3 | import android.os.Parcelable 4 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties 5 | import com.fasterxml.jackson.databind.PropertyNamingStrategy 6 | import com.fasterxml.jackson.databind.annotation.JsonNaming 7 | import kotlinx.android.parcel.Parcelize 8 | 9 | @JsonIgnoreProperties(ignoreUnknown = true) 10 | @JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy::class) 11 | @Parcelize 12 | data class CommentItem( 13 | val createdTime: String? = null, 14 | val from: Commenter? = null, 15 | val message: String? = null, 16 | val id: String? = null 17 | ): Parcelable -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/core/feed/facebook/api/Commenter.kt: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.core.feed.facebook.api 2 | 3 | import android.os.Parcelable 4 | import kotlinx.android.parcel.Parcelize 5 | 6 | @Parcelize 7 | data class Commenter ( 8 | var name: String? = null, 9 | var id: String? = null 10 | ): Parcelable -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/core/feed/facebook/api/Comments.kt: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.core.feed.facebook.api 2 | 3 | data class Comments (var data: List? = null) -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/core/feed/facebook/api/FacebookApi.java: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.core.feed.facebook.api; 2 | 3 | import org.fossasia.openevent.common.api.APIClient; 4 | import org.fossasia.openevent.common.api.Urls; 5 | 6 | import retrofit2.Retrofit; 7 | import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory; 8 | 9 | public class FacebookApi { 10 | 11 | private static FacebookGraphAPI facebookGraphAPI; 12 | 13 | public static FacebookGraphAPI getFacebookGraphAPI() { 14 | Retrofit.Builder retrofitBuilder = APIClient.getRetrofitBuilder(); 15 | if (facebookGraphAPI == null) { 16 | retrofitBuilder.client(APIClient.getClient()); 17 | 18 | facebookGraphAPI = retrofitBuilder 19 | .baseUrl(Urls.FACEBOOK_BASE_URL) 20 | .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) 21 | .build() 22 | .create(FacebookGraphAPI.class); 23 | } 24 | 25 | return facebookGraphAPI; 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/core/feed/facebook/api/FacebookGraphAPI.java: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.core.feed.facebook.api; 2 | 3 | import io.reactivex.Observable; 4 | import retrofit2.http.GET; 5 | import retrofit2.http.Path; 6 | import retrofit2.http.Query; 7 | 8 | public interface FacebookGraphAPI { 9 | 10 | @GET("/{event_name}") 11 | Observable getPageId(@Path("event_name") String eventName, @Query("access_token") String accessToken); 12 | 13 | @GET("/{page_id}/feed") 14 | Observable getPosts(@Path("page_id") String pageId, @Query("fields") String fields, @Query("access_token") String accessToken); 15 | 16 | } 17 | -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/core/feed/facebook/api/FacebookPageId.kt: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.core.feed.facebook.api 2 | 3 | data class FacebookPageId ( 4 | var name: String? = null, 5 | var id: String? = null 6 | ) -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/core/feed/facebook/api/Feed.kt: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.core.feed.facebook.api 2 | 3 | data class Feed (var data: List? = null) -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/core/feed/facebook/api/FeedItem.kt: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.core.feed.facebook.api 2 | 3 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties 4 | import com.fasterxml.jackson.databind.PropertyNamingStrategy 5 | import com.fasterxml.jackson.databind.annotation.JsonNaming 6 | 7 | @JsonIgnoreProperties(ignoreUnknown = true) 8 | @JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy::class) 9 | data class FeedItem ( 10 | var id: String? = null, 11 | var message: String? = null, 12 | var createdTime: String? = null, 13 | var comments: Comments? = null, 14 | var fullPicture: String? = null, 15 | var link: String? = null 16 | ) -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/core/feed/twitter/api/LoklakAPI.java: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.core.feed.twitter.api; 2 | 3 | import io.reactivex.Observable; 4 | import retrofit2.http.GET; 5 | import retrofit2.http.Query; 6 | 7 | public interface LoklakAPI { 8 | 9 | @GET("/api/search.json") 10 | Observable getTwitterFeed(@Query("q") String query, @Query("count") int count, @Query("source") String source); 11 | 12 | } 13 | -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/core/feed/twitter/api/TwitterApi.java: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.core.feed.twitter.api; 2 | 3 | import org.fossasia.openevent.common.api.APIClient; 4 | import org.fossasia.openevent.common.api.Urls; 5 | 6 | import retrofit2.Retrofit; 7 | import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory; 8 | 9 | public class TwitterApi { 10 | 11 | private static LoklakAPI loklakAPI; 12 | 13 | public static LoklakAPI getLoklakAPI() { 14 | if (loklakAPI == null) { 15 | Retrofit.Builder retrofitBuilder = APIClient.getRetrofitBuilder(); 16 | retrofitBuilder.client(APIClient.getClient()); 17 | 18 | loklakAPI = retrofitBuilder.baseUrl(Urls.LOKLAK_BASE_URL) 19 | .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) 20 | .build() 21 | .create(LoklakAPI.class); 22 | } 23 | 24 | return loklakAPI; 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/core/feed/twitter/api/TwitterFeed.kt: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.core.feed.twitter.api 2 | 3 | data class TwitterFeed (var statuses: List? = null) 4 | -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/core/feed/twitter/api/TwitterFeedItem.kt: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.core.feed.twitter.api 2 | 3 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties 4 | import com.fasterxml.jackson.databind.PropertyNamingStrategy 5 | import com.fasterxml.jackson.databind.annotation.JsonNaming 6 | 7 | @JsonIgnoreProperties(ignoreUnknown = true) 8 | @JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy::class) 9 | data class TwitterFeedItem( 10 | var link: String? = null, 11 | var hashTags: List? = null, 12 | var links: List? = null, 13 | var images: List? = null, 14 | var text: String? = null, 15 | var createdAt: String? = null 16 | ) 17 | -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/core/feedback/FeedbacksListAdapter.java: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.core.feedback; 2 | 3 | import android.view.LayoutInflater; 4 | import android.view.View; 5 | import android.view.ViewGroup; 6 | 7 | import org.fossasia.openevent.R; 8 | import org.fossasia.openevent.common.ui.base.BaseRVAdapter; 9 | import org.fossasia.openevent.data.Feedback; 10 | 11 | import java.util.List; 12 | 13 | public class FeedbacksListAdapter extends BaseRVAdapter { 14 | 15 | public FeedbacksListAdapter(List feedbacks) { 16 | super(feedbacks); 17 | } 18 | 19 | @Override 20 | public FeedbackViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 21 | View view = LayoutInflater.from(parent.getContext()) 22 | .inflate(R.layout.item_feedback, parent, false); 23 | return new FeedbackViewHolder(view); 24 | } 25 | 26 | public void onBindViewHolder(FeedbackViewHolder holder, int position) { 27 | holder.bindFeedback(getItem(position)); 28 | } 29 | } -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/core/location/modules/MapModule.java: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.core.location.modules; 2 | 3 | import android.support.v4.app.Fragment; 4 | 5 | public interface MapModule { 6 | Fragment provideMapFragment(); 7 | } 8 | -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/core/location/modules/MapModuleProvider.java: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.core.location.modules; 2 | 3 | public interface MapModuleProvider { 4 | MapModule provideMapModule(); 5 | } 6 | -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/core/schedule/EventDateStrings.kt: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.core.schedule 2 | 3 | data class EventDateStrings(val formattedDate: String? = null, val date: String? = null) -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/core/speaker/SpeakerDetailsViewModel.java: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.core.speaker; 2 | 3 | import android.arch.lifecycle.LiveData; 4 | import android.arch.lifecycle.Transformations; 5 | import android.arch.lifecycle.ViewModel; 6 | 7 | import org.fossasia.openevent.common.arch.LiveRealmData; 8 | import org.fossasia.openevent.data.Speaker; 9 | import org.fossasia.openevent.data.repository.RealmDataRepository; 10 | 11 | public class SpeakerDetailsViewModel extends ViewModel { 12 | private final RealmDataRepository realmRepo; 13 | 14 | private LiveData speaker; 15 | 16 | public SpeakerDetailsViewModel() { 17 | realmRepo = RealmDataRepository.getDefaultInstance(); 18 | } 19 | 20 | public LiveData getSpeaker(String speakerName) { 21 | if (speaker == null) { 22 | LiveRealmData liveRealmDataObject = RealmDataRepository.asLiveData(realmRepo.getSpeakersForName(speakerName)); 23 | speaker = Transformations.map(liveRealmDataObject, input -> input.first()); 24 | } 25 | return speaker; 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/core/sponsor/SponsorsFragmentViewModel.java: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.core.sponsor; 2 | 3 | import android.arch.lifecycle.ViewModel; 4 | 5 | import org.fossasia.openevent.common.arch.LiveRealmData; 6 | import org.fossasia.openevent.data.Sponsor; 7 | import org.fossasia.openevent.data.repository.RealmDataRepository; 8 | 9 | public class SponsorsFragmentViewModel extends ViewModel { 10 | 11 | private final RealmDataRepository realmRepo; 12 | 13 | private LiveRealmData sponsorLiveRealmData; 14 | public SponsorsFragmentViewModel() { 15 | realmRepo = RealmDataRepository.getDefaultInstance(); 16 | } 17 | 18 | public LiveRealmData getSponsors() { 19 | if (sponsorLiveRealmData == null) { 20 | sponsorLiveRealmData = RealmDataRepository.asLiveData(realmRepo.getSponsors()); 21 | } 22 | return sponsorLiveRealmData; 23 | } 24 | 25 | } -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/core/track/session/SessionSpeakerListAdapter.java: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.core.track.session; 2 | 3 | import android.view.LayoutInflater; 4 | import android.view.View; 5 | import android.view.ViewGroup; 6 | 7 | import org.fossasia.openevent.R; 8 | import org.fossasia.openevent.common.ui.base.BaseRVAdapter; 9 | import org.fossasia.openevent.core.speaker.SpeakerViewHolder; 10 | import org.fossasia.openevent.data.Speaker; 11 | 12 | import java.util.List; 13 | 14 | public class SessionSpeakerListAdapter extends BaseRVAdapter { 15 | 16 | public SessionSpeakerListAdapter(List speakers) { 17 | super(speakers); 18 | } 19 | 20 | @Override 21 | public SpeakerViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 22 | View view = LayoutInflater.from(parent.getContext()) 23 | .inflate(R.layout.item_session_speaker, parent, false); 24 | return new SpeakerViewHolder(view, parent.getContext()); 25 | } 26 | 27 | public void onBindViewHolder(SpeakerViewHolder holder, int position) { 28 | holder.bindSpeaker(getItem(position)); 29 | } 30 | } -------------------------------------------------------------------------------- /android/app/src/main/java/org/fossasia/openevent/data/repository/RealmDatabaseMigration.java: -------------------------------------------------------------------------------- 1 | package org.fossasia.openevent.data.repository; 2 | 3 | import io.realm.DynamicRealm; 4 | import io.realm.RealmMigration; 5 | import io.realm.RealmSchema; 6 | 7 | public class RealmDatabaseMigration implements RealmMigration { 8 | 9 | public static long DB_VERSION = 3; 10 | 11 | @Override 12 | public void migrate(DynamicRealm realm, long oldVersion, long newVersion) { 13 | // DynamicRealm exposes an editable schema 14 | RealmSchema schema = realm.getSchema(); 15 | if(oldVersion == 0) { 16 | schema.get("Session") 17 | .addField("created-at", String.class) 18 | .addField("deleted-at", String.class) 19 | .addField("submitted-at", String.class) 20 | .addField("is-mail-sent", Boolean.class); 21 | oldVersion++; 22 | } 23 | 24 | if(oldVersion == 1) { 25 | schema.get("Event") 26 | .addField("created-at", String.class) 27 | .addField("deleted-at", String.class) 28 | .addField("icon-image-url", String.class); 29 | oldVersion++; 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /android/app/src/main/java/rx/Observable.java: -------------------------------------------------------------------------------- 1 | package rx; 2 | 3 | public class Observable { 4 | // Dummy class required for Jackson-Databind support if 5 | // RxJava is not a project dependency. 6 | } 7 | -------------------------------------------------------------------------------- /android/app/src/main/res/anim/fade_in.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 8 | -------------------------------------------------------------------------------- /android/app/src/main/res/anim/fade_out.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 8 | -------------------------------------------------------------------------------- /android/app/src/main/res/anim/slide_in_left.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 8 | -------------------------------------------------------------------------------- /android/app/src/main/res/anim/slide_in_right.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 8 | -------------------------------------------------------------------------------- /android/app/src/main/res/anim/slide_out_left.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 8 | -------------------------------------------------------------------------------- /android/app/src/main/res/anim/slide_out_right.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 8 | -------------------------------------------------------------------------------- /android/app/src/main/res/anim/stay_in_place.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 8 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-hdpi/ic_noti_bookmark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/open-event-droidgen/9ecda52872bd71aca648aa5cbb7b9218e683cd1c/android/app/src/main/res/drawable-hdpi/ic_noti_bookmark.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-mdpi/ic_arrow_back_white_cct_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/open-event-droidgen/9ecda52872bd71aca648aa5cbb7b9218e683cd1c/android/app/src/main/res/drawable-mdpi/ic_arrow_back_white_cct_24dp.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-mdpi/ic_noti_bookmark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/open-event-droidgen/9ecda52872bd71aca648aa5cbb7b9218e683cd1c/android/app/src/main/res/drawable-mdpi/ic_noti_bookmark.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-v21/touch_selector_white.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 8 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-xhdpi/ic_noti_bookmark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/open-event-droidgen/9ecda52872bd71aca648aa5cbb7b9218e683cd1c/android/app/src/main/res/drawable-xhdpi/ic_noti_bookmark.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-xxhdpi/ic_noti_bookmark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/open-event-droidgen/9ecda52872bd71aca648aa5cbb7b9218e683cd1c/android/app/src/main/res/drawable-xxhdpi/ic_noti_bookmark.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/background_white.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/bg_parent_rounded_corner.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/button_ripple.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/comment_dialog.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/ic_account_circle_grey_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/ic_add_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/ic_arrow_back_white_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/ic_arrow_right_white_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/ic_bookmark_border_white_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/ic_bookmark_white_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/ic_close_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/ic_date_range_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/ic_discount_code_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/ic_domain_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/ic_edit_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/ic_event_white_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/ic_expand_less_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/ic_expand_more_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/ic_facebook_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/ic_feed_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 12 | 13 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/ic_feedback_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/ic_file_download_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/ic_filter_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/ic_github_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/ic_google_plus_24dp.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/ic_home_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/ic_info_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/ic_linkedin_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/ic_location_on_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/ic_logout.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/ic_map_white_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/ic_no_posts_grey_24dp.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 10 | 13 | 16 | 19 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/ic_notifications_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/ic_people_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/ic_placeholder_24dp.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/ic_play.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 12 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/ic_question_answer_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/ic_schedule_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/ic_schedule_grey600_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/ic_search_white_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/ic_security_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/ic_settings_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/ic_share_white_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/ic_sort_white_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/ic_sponsors_grey_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/ic_sponsors_white_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/ic_ticket_white_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/ic_timeline_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/ic_timeline_white_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/ic_twitter_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/ic_youtube_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/line_divider.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 8 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/map_marker.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/scrim_bottom.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/scrim_top.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/splash_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/open-event-droidgen/9ecda52872bd71aca648aa5cbb7b9218e683cd1c/android/app/src/main/res/drawable/splash_logo.png -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/splash_screen.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 8 | 9 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/touch_selector_white.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/track_rounded_corner.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 12 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/track_tag_background.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 7 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/widget_preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fossasia/open-event-droidgen/9ecda52872bd71aca648aa5cbb7b9218e683cd1c/android/app/src/main/res/drawable/widget_preview.png -------------------------------------------------------------------------------- /android/app/src/main/res/layout/activity_change_password.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /android/app/src/main/res/layout/activity_edit_profile.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /android/app/src/main/res/layout/activity_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 16 | 17 | 21 | -------------------------------------------------------------------------------- /android/app/src/main/res/layout/activity_user_profile.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /android/app/src/main/res/layout/fragment_about.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 11 | 12 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /android/app/src/main/res/layout/fragment_zoomable_image.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /android/app/src/main/res/layout/item_feed.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 11 | 12 | 18 | 19 |