├── app ├── .gitignore ├── src │ └── main │ │ ├── assets │ │ ├── map.jpg │ │ ├── lotus.png │ │ ├── rigascreen_bold.ttf │ │ ├── rigascreen_regular.ttf │ │ └── login.html │ │ ├── ic_launcher-web.png │ │ ├── ic_web_event-web.png │ │ ├── java │ │ ├── app │ │ │ └── insti │ │ │ │ ├── fragment │ │ │ │ ├── DataFragment.java │ │ │ │ ├── TransitionTargetFragment.java │ │ │ │ ├── TransitionTargetChild.java │ │ │ │ ├── BackHandledFragment.java │ │ │ │ ├── BaseFragment.java │ │ │ │ ├── NewsFragment.java │ │ │ │ ├── TrainingBlogFragment.java │ │ │ │ └── PlacementBlogFragment.java │ │ │ │ ├── interfaces │ │ │ │ ├── Readable.java │ │ │ │ ├── Writable.java │ │ │ │ ├── ItemClickListener.java │ │ │ │ ├── Clickable.java │ │ │ │ └── CardInterface.java │ │ │ │ ├── api │ │ │ │ ├── EmptyCallback.java │ │ │ │ ├── request │ │ │ │ │ ├── UserShowContactPatchRequest.java │ │ │ │ │ ├── UserFCMPatchRequest.java │ │ │ │ │ ├── ImageUploadRequest.java │ │ │ │ │ └── CommentCreateRequest.java │ │ │ │ ├── response │ │ │ │ │ ├── EventCreateResponse.java │ │ │ │ │ ├── ComplaintCreateResponse.java │ │ │ │ │ ├── ImageUploadResponse.java │ │ │ │ │ ├── NewsFeedResponse.java │ │ │ │ │ ├── ExploreResponse.java │ │ │ │ │ └── LoginResponse.java │ │ │ │ ├── model │ │ │ │ │ ├── AboutIndividual.java │ │ │ │ │ ├── MessMenu.java │ │ │ │ │ ├── TrainingBlogPost.java │ │ │ │ │ ├── PlacementBlogPost.java │ │ │ │ │ └── NewsArticle.java │ │ │ │ └── LocationAPIUtils.java │ │ │ │ ├── ComplaintTag.java │ │ │ │ ├── DetailsTransition.java │ │ │ │ ├── adapter │ │ │ │ ├── BodyAdapter.java │ │ │ │ ├── RoleAdapter.java │ │ │ │ ├── UserAdapter.java │ │ │ │ ├── TabAdapter.java │ │ │ │ ├── AboutAdapter.java │ │ │ │ ├── FeedAdapter.java │ │ │ │ ├── ComplaintFragmentViewPagerAdapter.java │ │ │ │ ├── ComplaintDetailsPagerAdapter.java │ │ │ │ └── ImageViewPagerAdapter.java │ │ │ │ ├── utils │ │ │ │ ├── TitleCard.java │ │ │ │ ├── BodyHeadCard.java │ │ │ │ └── DateTimeUtil.java │ │ │ │ ├── notifications │ │ │ │ └── NotificationId.java │ │ │ │ ├── ShareURLMaker.java │ │ │ │ ├── UpdatableList.java │ │ │ │ ├── InstiAppApplication.java │ │ │ │ ├── NotificationBroadcastReceiver.java │ │ │ │ ├── ComplaintDescriptionAutoCompleteTextView.java │ │ │ │ └── SessionManager.java │ │ └── com │ │ │ └── mrane │ │ │ ├── data │ │ │ ├── Room.java │ │ │ ├── Building.java │ │ │ └── Locations.java │ │ │ ├── campusmap │ │ │ ├── ListFragment.java │ │ │ └── SettingsManager.java │ │ │ └── zoomview │ │ │ └── ImageViewState.java │ │ ├── res │ │ ├── raw │ │ │ ├── add_marker.mp3 │ │ │ ├── remove_marker.mp3 │ │ │ └── result_marker.mp3 │ │ ├── drawable │ │ │ ├── lotus_sq.png │ │ │ ├── badge_medal.png │ │ │ ├── lotus_placeholder.png │ │ │ ├── lotus_placeholder_dark.png │ │ │ ├── side_nav_bar.xml │ │ │ ├── round_background.xml │ │ │ ├── customborder.xml │ │ │ ├── ic_arrow_back_black_24dp.xml │ │ │ ├── ic_add_black_24dp.xml │ │ │ ├── ic_keyboard_arrow_left_white_24dp.xml │ │ │ ├── ic_keyboard_arrow_right_white_24dp.xml │ │ │ ├── baseline_info_gray_36.xml │ │ │ ├── baseline_feedback_gray_36.xml │ │ │ ├── baseline_navigation_24.xml │ │ │ ├── ic_done_all_black_256dp.xml │ │ │ ├── ic_event_gray_36dp.xml │ │ │ ├── baseline_arrow_upward_24.xml │ │ │ ├── baseline_exit_to_app_gray_36.xml │ │ │ ├── round_text_box.xml │ │ │ ├── ic_edit_black_24dp.xml │ │ │ ├── ic_notifications_white_24dp.xml │ │ │ ├── baseline_comment_24.xml │ │ │ ├── baseline_account_circle_gray_36.xml │ │ │ ├── ic_link_black_24dp.xml │ │ │ ├── ic_search_black_24dp.xml │ │ │ ├── ic_local_phone_gray_36dp.xml │ │ │ ├── ic_color_lens_gray_36dp.xml │ │ │ ├── ic_settings_black_24dp.xml │ │ │ ├── ic_language_black_24dp.xml │ │ │ ├── user_placeholder.xml │ │ │ └── ic_qr_code.xml │ │ ├── drawable-xhdpi │ │ │ ├── lock_all_off.png │ │ │ ├── lock_blue_on.png │ │ │ ├── lock_gray_on.png │ │ │ ├── lock_green_on.png │ │ │ ├── marker_blue_h.png │ │ │ ├── marker_blue_s.png │ │ │ ├── marker_gray_h.png │ │ │ ├── marker_gray_s.png │ │ │ ├── marker_red_s.png │ │ │ ├── ic_action_expand.png │ │ │ ├── lock_on_yellow.png │ │ │ ├── marker_dot_blue.png │ │ │ ├── marker_dot_gray.png │ │ │ ├── marker_dot_green.png │ │ │ ├── marker_green_h.png │ │ │ ├── marker_green_s.png │ │ │ ├── marker_yellow_h.png │ │ │ ├── marker_yellow_s.png │ │ │ ├── ic_map_black_48dp.png │ │ │ ├── ic_work_black_48dp.png │ │ │ ├── marker_dot_yellow.png │ │ │ ├── ic_action_next_item.png │ │ │ ├── marker_blue_h_convo.png │ │ │ ├── baseline_photo_black_48.png │ │ │ ├── baseline_send_black_18.png │ │ │ ├── ic_dashboard_black_48dp.png │ │ │ ├── baseline_feedback_black_48.png │ │ │ ├── baseline_rss_feed_black_48.png │ │ │ ├── baseline_search_white_24.png │ │ │ ├── ic_add_a_photo_black_24dp.png │ │ │ ├── ic_date_range_black_48dp.png │ │ │ ├── ic_my_location_black_24dp.png │ │ │ ├── ic_restaurant_black_48dp.png │ │ │ ├── baseline_notifications_black_24.png │ │ │ ├── baseline_notifications_active_black_24.png │ │ │ └── baseline_notifications_active_white_24.png │ │ ├── values │ │ │ ├── drawables.xml │ │ │ ├── dimens.xml │ │ │ ├── colors.xml │ │ │ ├── attrs.xml │ │ │ └── strings.xml │ │ ├── drawable-hdpi │ │ │ ├── ic_map_black_48dp.png │ │ │ ├── ic_work_black_48dp.png │ │ │ ├── baseline_send_black_18.png │ │ │ ├── baseline_photo_black_48.png │ │ │ ├── baseline_search_white_24.png │ │ │ ├── ic_dashboard_black_48dp.png │ │ │ ├── ic_date_range_black_48dp.png │ │ │ ├── ic_restaurant_black_48dp.png │ │ │ ├── baseline_feedback_black_48.png │ │ │ ├── baseline_rss_feed_black_48.png │ │ │ ├── ic_add_a_photo_black_24dp.png │ │ │ ├── ic_my_location_black_24dp.png │ │ │ ├── baseline_notifications_black_24.png │ │ │ ├── baseline_notifications_active_black_24.png │ │ │ ├── baseline_notifications_active_white_24.png │ │ │ ├── above_shadow.xml │ │ │ ├── below_shadow.xml │ │ │ ├── small_card_bg.xml │ │ │ ├── shadow_gradient.xml │ │ │ └── listview_background.xml │ │ ├── drawable-mdpi │ │ │ ├── ic_action_expand.png │ │ │ ├── ic_map_black_48dp.png │ │ │ ├── ic_work_black_48dp.png │ │ │ ├── baseline_send_black_18.png │ │ │ ├── baseline_photo_black_48.png │ │ │ ├── baseline_search_white_24.png │ │ │ ├── ic_dashboard_black_48dp.png │ │ │ ├── ic_date_range_black_48dp.png │ │ │ ├── ic_restaurant_black_48dp.png │ │ │ ├── baseline_feedback_black_48.png │ │ │ ├── baseline_rss_feed_black_48.png │ │ │ ├── ic_add_a_photo_black_24dp.png │ │ │ ├── ic_my_location_black_24dp.png │ │ │ ├── baseline_notifications_black_24.png │ │ │ ├── baseline_notifications_active_black_24.png │ │ │ └── baseline_notifications_active_white_24.png │ │ ├── mipmap-hdpi │ │ │ ├── ic_launcher_round.png │ │ │ └── ic_launcher_foreground.png │ │ ├── mipmap-mdpi │ │ │ ├── ic_launcher_round.png │ │ │ └── ic_launcher_foreground.png │ │ ├── mipmap-xhdpi │ │ │ ├── ic_launcher_round.png │ │ │ └── ic_launcher_foreground.png │ │ ├── mipmap-xxhdpi │ │ │ ├── ic_launcher_round.png │ │ │ └── ic_launcher_foreground.png │ │ ├── drawable-xxhdpi │ │ │ ├── ic_action_expand.png │ │ │ ├── ic_map_black_48dp.png │ │ │ ├── ic_work_black_48dp.png │ │ │ ├── baseline_send_black_18.png │ │ │ ├── baseline_photo_black_48.png │ │ │ ├── baseline_search_white_24.png │ │ │ ├── ic_add_a_photo_black_24dp.png │ │ │ ├── ic_dashboard_black_48dp.png │ │ │ ├── ic_date_range_black_48dp.png │ │ │ ├── ic_my_location_black_24dp.png │ │ │ ├── ic_restaurant_black_48dp.png │ │ │ ├── baseline_feedback_black_48.png │ │ │ ├── baseline_rss_feed_black_48.png │ │ │ ├── baseline_notifications_black_24.png │ │ │ ├── baseline_notifications_active_black_24.png │ │ │ └── baseline_notifications_active_white_24.png │ │ ├── mipmap-xxxhdpi │ │ │ ├── ic_launcher_round.png │ │ │ └── ic_launcher_foreground.png │ │ ├── drawable-xxxhdpi │ │ │ ├── ic_map_black_48dp.png │ │ │ ├── ic_work_black_48dp.png │ │ │ ├── baseline_photo_black_48.png │ │ │ ├── baseline_search_white_24.png │ │ │ ├── baseline_send_black_18.png │ │ │ ├── ic_dashboard_black_48dp.png │ │ │ ├── ic_date_range_black_48dp.png │ │ │ ├── ic_restaurant_black_48dp.png │ │ │ ├── baseline_feedback_black_48.png │ │ │ ├── baseline_rss_feed_black_48.png │ │ │ ├── ic_add_a_photo_black_24dp.png │ │ │ ├── ic_my_location_black_24dp.png │ │ │ ├── baseline_notifications_black_24.png │ │ │ ├── baseline_notifications_active_black_24.png │ │ │ ├── baseline_notifications_active_white_24.png │ │ │ └── selected_dot.xml │ │ ├── menu │ │ │ ├── comments_options_secondary_menu.xml │ │ │ ├── qr_scan_menu.xml │ │ │ ├── main.xml │ │ │ ├── comment_options_primary_menu.xml │ │ │ ├── search_view_menu.xml │ │ │ └── activity_main_drawer.xml │ │ ├── color │ │ │ ├── drawer_item.xml │ │ │ └── mcv_text_date_light.xml │ │ ├── xml │ │ │ ├── network_security_config.xml │ │ │ ├── mess_menu_widget_info.xml │ │ │ └── preferences.xml │ │ ├── layout │ │ │ ├── map_card_image.xml │ │ │ ├── hostel_spinner_item.xml │ │ │ ├── map_child.xml │ │ │ ├── fragment_event_recycler_view.xml │ │ │ ├── slidingimages_layout.xml │ │ │ ├── fragment_about.xml │ │ │ ├── map_row_layout.xml │ │ │ ├── title_card.xml │ │ │ ├── content_main.xml │ │ │ ├── map_list_fragment.xml │ │ │ ├── about_category_card.xml │ │ │ ├── fragment_body_recycler_view.xml │ │ │ ├── fragment_role_recycler_view.xml │ │ │ ├── loading_panel.xml │ │ │ ├── blog_load_item.xml │ │ │ ├── calendar_dialog_checkbox.xml │ │ │ ├── nothing_found.xml │ │ │ ├── activity_login.xml │ │ │ ├── fragment_webview.xml │ │ │ ├── about_individual_card.xml │ │ │ ├── fragment_news.xml │ │ │ ├── fragment_notifications.xml │ │ │ ├── fragment_training_blog.xml │ │ │ ├── fragment_placement_blog.xml │ │ │ ├── app_bar_main.xml │ │ │ ├── blog_post_card.xml │ │ │ ├── activity_main.xml │ │ │ ├── map_place_description.xml │ │ │ ├── fragment_feed.xml │ │ │ ├── nav_header_main.xml │ │ │ ├── map_children_view.xml │ │ │ ├── fragment_complaints_home.xml │ │ │ ├── mess_menu_widget.xml │ │ │ ├── fragment_mess_menu.xml │ │ │ ├── fragment_explore.xml │ │ │ ├── map_expandable_list_header.xml │ │ │ ├── fragment_complaints_me.xml │ │ │ ├── fragment_complaint.xml │ │ │ ├── news_article_card.xml │ │ │ └── map_list_item.xml │ │ ├── mipmap-anydpi-v26 │ │ │ └── ic_launcher_round.xml │ │ ├── anim │ │ │ ├── fade_in.xml │ │ │ ├── fade_out.xml │ │ │ ├── slide_in_up.xml │ │ │ └── slide_out_down.xml │ │ └── drawable-v21 │ │ │ └── ic_menu_share.xml │ │ ├── advanced_menu_open-web.png │ │ └── advanced_menu_close-web.png ├── proguard-rules.pro └── google-services.json ├── settings.gradle ├── .idea ├── copyright │ └── profiles_settings.xml ├── vcs.xml ├── runConfigurations.xml ├── compiler.xml ├── misc.xml └── codeStyles │ └── Project.xml ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── .gitignore ├── .github └── workflows │ └── android.yml ├── gradle.properties ├── README.md └── gradlew.bat /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | -------------------------------------------------------------------------------- /app/src/main/assets/map.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/assets/map.jpg -------------------------------------------------------------------------------- /.idea/copyright/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /app/src/main/assets/lotus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/assets/lotus.png -------------------------------------------------------------------------------- /app/src/main/ic_launcher-web.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/ic_launcher-web.png -------------------------------------------------------------------------------- /app/src/main/ic_web_event-web.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/ic_web_event-web.png -------------------------------------------------------------------------------- /app/src/main/java/app/insti/fragment/DataFragment.java: -------------------------------------------------------------------------------- 1 | package app.insti.fragment; 2 | 3 | public class DataFragment { 4 | } 5 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /app/src/main/res/raw/add_marker.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/raw/add_marker.mp3 -------------------------------------------------------------------------------- /app/src/main/advanced_menu_open-web.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/advanced_menu_open-web.png -------------------------------------------------------------------------------- /app/src/main/assets/rigascreen_bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/assets/rigascreen_bold.ttf -------------------------------------------------------------------------------- /app/src/main/res/drawable/lotus_sq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable/lotus_sq.png -------------------------------------------------------------------------------- /app/src/main/res/raw/remove_marker.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/raw/remove_marker.mp3 -------------------------------------------------------------------------------- /app/src/main/res/raw/result_marker.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/raw/result_marker.mp3 -------------------------------------------------------------------------------- /app/src/main/advanced_menu_close-web.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/advanced_menu_close-web.png -------------------------------------------------------------------------------- /app/src/main/assets/rigascreen_regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/assets/rigascreen_regular.ttf -------------------------------------------------------------------------------- /app/src/main/res/drawable/badge_medal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable/badge_medal.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/lotus_placeholder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable/lotus_placeholder.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lock_all_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-xhdpi/lock_all_off.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lock_blue_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-xhdpi/lock_blue_on.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lock_gray_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-xhdpi/lock_gray_on.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lock_green_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-xhdpi/lock_green_on.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/marker_blue_h.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-xhdpi/marker_blue_h.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/marker_blue_s.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-xhdpi/marker_blue_s.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/marker_gray_h.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-xhdpi/marker_gray_h.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/marker_gray_s.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-xhdpi/marker_gray_s.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/marker_red_s.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-xhdpi/marker_red_s.png -------------------------------------------------------------------------------- /app/src/main/res/values/drawables.xml: -------------------------------------------------------------------------------- 1 | 2 | @android:drawable/ic_menu_share 3 | 4 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_map_black_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-hdpi/ic_map_black_48dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_action_expand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-mdpi/ic_action_expand.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_map_black_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-mdpi/ic_map_black_48dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_action_expand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-xhdpi/ic_action_expand.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/lock_on_yellow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-xhdpi/lock_on_yellow.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/marker_dot_blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-xhdpi/marker_dot_blue.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/marker_dot_gray.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-xhdpi/marker_dot_gray.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/marker_dot_green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-xhdpi/marker_dot_green.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/marker_green_h.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-xhdpi/marker_green_h.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/marker_green_s.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-xhdpi/marker_green_s.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/marker_yellow_h.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-xhdpi/marker_yellow_h.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/marker_yellow_s.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-xhdpi/marker_yellow_s.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/lotus_placeholder_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable/lotus_placeholder_dark.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_work_black_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-hdpi/ic_work_black_48dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_work_black_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-mdpi/ic_work_black_48dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_map_black_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-xhdpi/ic_map_black_48dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_work_black_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-xhdpi/ic_work_black_48dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/marker_dot_yellow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-xhdpi/marker_dot_yellow.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_action_expand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-xxhdpi/ic_action_expand.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_map_black_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-xxhdpi/ic_map_black_48dp.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/baseline_send_black_18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-hdpi/baseline_send_black_18.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/baseline_send_black_18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-mdpi/baseline_send_black_18.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_action_next_item.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-xhdpi/ic_action_next_item.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/marker_blue_h_convo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-xhdpi/marker_blue_h_convo.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_work_black_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-xxhdpi/ic_work_black_48dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_map_black_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-xxxhdpi/ic_map_black_48dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_work_black_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-xxxhdpi/ic_work_black_48dp.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/baseline_photo_black_48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-hdpi/baseline_photo_black_48.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/baseline_search_white_24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-hdpi/baseline_search_white_24.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_dashboard_black_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-hdpi/ic_dashboard_black_48dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_date_range_black_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-hdpi/ic_date_range_black_48dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_restaurant_black_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-hdpi/ic_restaurant_black_48dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/baseline_photo_black_48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-mdpi/baseline_photo_black_48.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/baseline_search_white_24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-mdpi/baseline_search_white_24.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_dashboard_black_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-mdpi/ic_dashboard_black_48dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_date_range_black_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-mdpi/ic_date_range_black_48dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_restaurant_black_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-mdpi/ic_restaurant_black_48dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/baseline_photo_black_48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-xhdpi/baseline_photo_black_48.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/baseline_send_black_18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-xhdpi/baseline_send_black_18.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_dashboard_black_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-xhdpi/ic_dashboard_black_48dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/baseline_send_black_18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-xxhdpi/baseline_send_black_18.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /app/src/main/java/app/insti/fragment/TransitionTargetFragment.java: -------------------------------------------------------------------------------- 1 | package app.insti.fragment; 2 | 3 | public interface TransitionTargetFragment { 4 | void transitionEnd(); 5 | } 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/baseline_feedback_black_48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-hdpi/baseline_feedback_black_48.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/baseline_rss_feed_black_48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-hdpi/baseline_rss_feed_black_48.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_add_a_photo_black_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-hdpi/ic_add_a_photo_black_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/ic_my_location_black_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-hdpi/ic_my_location_black_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/baseline_feedback_black_48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-mdpi/baseline_feedback_black_48.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/baseline_rss_feed_black_48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-mdpi/baseline_rss_feed_black_48.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_add_a_photo_black_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-mdpi/ic_add_a_photo_black_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/ic_my_location_black_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-mdpi/ic_my_location_black_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/baseline_feedback_black_48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-xhdpi/baseline_feedback_black_48.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/baseline_rss_feed_black_48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-xhdpi/baseline_rss_feed_black_48.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/baseline_search_white_24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-xhdpi/baseline_search_white_24.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_add_a_photo_black_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-xhdpi/ic_add_a_photo_black_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_date_range_black_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-xhdpi/ic_date_range_black_48dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_my_location_black_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-xhdpi/ic_my_location_black_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_restaurant_black_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-xhdpi/ic_restaurant_black_48dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/baseline_photo_black_48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-xxhdpi/baseline_photo_black_48.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/baseline_search_white_24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-xxhdpi/baseline_search_white_24.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_add_a_photo_black_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-xxhdpi/ic_add_a_photo_black_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_dashboard_black_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-xxhdpi/ic_dashboard_black_48dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_date_range_black_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-xxhdpi/ic_date_range_black_48dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_my_location_black_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-xxhdpi/ic_my_location_black_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_restaurant_black_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-xxhdpi/ic_restaurant_black_48dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/baseline_photo_black_48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-xxxhdpi/baseline_photo_black_48.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/baseline_search_white_24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-xxxhdpi/baseline_search_white_24.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/baseline_send_black_18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-xxxhdpi/baseline_send_black_18.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_dashboard_black_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-xxxhdpi/ic_dashboard_black_48dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_date_range_black_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-xxxhdpi/ic_date_range_black_48dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_restaurant_black_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-xxxhdpi/ic_restaurant_black_48dp.png -------------------------------------------------------------------------------- /app/src/main/java/app/insti/interfaces/Readable.java: -------------------------------------------------------------------------------- 1 | package app.insti.interfaces; 2 | 3 | import java.util.List; 4 | 5 | public interface Readable { 6 | List getPosts(); 7 | } 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/baseline_feedback_black_48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-xxhdpi/baseline_feedback_black_48.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/baseline_rss_feed_black_48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-xxhdpi/baseline_rss_feed_black_48.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/baseline_feedback_black_48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-xxxhdpi/baseline_feedback_black_48.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/baseline_rss_feed_black_48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-xxxhdpi/baseline_rss_feed_black_48.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_add_a_photo_black_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-xxxhdpi/ic_add_a_photo_black_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/ic_my_location_black_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-xxxhdpi/ic_my_location_black_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/baseline_notifications_black_24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-hdpi/baseline_notifications_black_24.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/baseline_notifications_black_24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-mdpi/baseline_notifications_black_24.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/baseline_notifications_black_24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-xhdpi/baseline_notifications_black_24.png -------------------------------------------------------------------------------- /app/src/main/java/app/insti/interfaces/Writable.java: -------------------------------------------------------------------------------- 1 | package app.insti.interfaces; 2 | 3 | import java.util.List; 4 | 5 | public interface Writable { 6 | void setPosts(List posts); 7 | } 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/baseline_notifications_black_24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-xxhdpi/baseline_notifications_black_24.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/baseline_notifications_black_24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-xxxhdpi/baseline_notifications_black_24.png -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/baseline_notifications_active_black_24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-hdpi/baseline_notifications_active_black_24.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/baseline_notifications_active_white_24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-hdpi/baseline_notifications_active_white_24.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/baseline_notifications_active_black_24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-mdpi/baseline_notifications_active_black_24.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/baseline_notifications_active_white_24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-mdpi/baseline_notifications_active_white_24.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/baseline_notifications_active_black_24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-xhdpi/baseline_notifications_active_black_24.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/baseline_notifications_active_white_24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-xhdpi/baseline_notifications_active_white_24.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/baseline_notifications_active_black_24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-xxhdpi/baseline_notifications_active_black_24.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/baseline_notifications_active_white_24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-xxhdpi/baseline_notifications_active_white_24.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/baseline_notifications_active_black_24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-xxxhdpi/baseline_notifications_active_black_24.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/baseline_notifications_active_white_24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevCom-IITB/instiapp-android/HEAD/app/src/main/res/drawable-xxxhdpi/baseline_notifications_active_white_24.png -------------------------------------------------------------------------------- /app/src/main/java/app/insti/fragment/TransitionTargetChild.java: -------------------------------------------------------------------------------- 1 | package app.insti.fragment; 2 | 3 | import androidx.fragment.app.Fragment; 4 | 5 | public interface TransitionTargetChild { 6 | Fragment getParent(); 7 | } 8 | -------------------------------------------------------------------------------- /app/src/main/java/app/insti/interfaces/ItemClickListener.java: -------------------------------------------------------------------------------- 1 | package app.insti.interfaces; 2 | 3 | import android.view.View; 4 | 5 | public interface ItemClickListener { 6 | void onItemClick(View v, int position); 7 | } 8 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | 5 | /.idea/workspace.xml 6 | /.idea/libraries 7 | /.idea/gradle.xml 8 | /.idea/modules.xml 9 | /.idea/caches 10 | 11 | .DS_Store 12 | /build 13 | /captures 14 | .externalNativeBuild 15 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/menu/comments_options_secondary_menu.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Sun Nov 15 09:17:20 IST 2020 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-bin.zip 7 | -------------------------------------------------------------------------------- /app/src/main/res/color/drawer_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/xml/network_security_config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | gymkhana.iitb.ac.in 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/java/app/insti/interfaces/Clickable.java: -------------------------------------------------------------------------------- 1 | package app.insti.interfaces; 2 | 3 | import android.content.Context; 4 | import android.view.View.OnClickListener; 5 | 6 | public interface Clickable { 7 | String getId(); 8 | 9 | OnClickListener getOnClickListener(Context context); 10 | } 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/above_shadow.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/below_shadow.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/layout/map_card_image.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/java/app/insti/interfaces/CardInterface.java: -------------------------------------------------------------------------------- 1 | package app.insti.interfaces; 2 | 3 | import java.io.Serializable; 4 | 5 | public interface CardInterface extends Serializable { 6 | long getId(); 7 | String getTitle(); 8 | String getSubtitle(); 9 | String getAvatarUrl(); 10 | int getBadge(); 11 | } 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/side_nav_bar.xml: -------------------------------------------------------------------------------- 1 | 3 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/round_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/anim/fade_in.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/anim/fade_out.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/anim/slide_in_up.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/anim/slide_out_down.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/customborder.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_arrow_back_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_add_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/layout/hostel_spinner_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_keyboard_arrow_left_white_24dp.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_keyboard_arrow_right_white_24dp.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/java/app/insti/api/EmptyCallback.java: -------------------------------------------------------------------------------- 1 | package app.insti.api; 2 | 3 | import retrofit2.Call; 4 | import retrofit2.Callback; 5 | import retrofit2.Response; 6 | 7 | public class EmptyCallback implements Callback { 8 | @Override 9 | public void onResponse(Call call, Response response) {} 10 | @Override 11 | public void onFailure(Call call, Throwable t) {} 12 | } 13 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/baseline_info_gray_36.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/small_card_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 11 | -------------------------------------------------------------------------------- /app/src/main/java/app/insti/api/request/UserShowContactPatchRequest.java: -------------------------------------------------------------------------------- 1 | package app.insti.api.request; 2 | 3 | import com.google.gson.annotations.SerializedName; 4 | 5 | public class UserShowContactPatchRequest { 6 | @SerializedName("show_contact_no") 7 | private Boolean showContactNumber; 8 | 9 | public UserShowContactPatchRequest(Boolean showContactNumber) { 10 | this.showContactNumber = showContactNumber; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/shadow_gradient.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/menu/qr_scan_menu.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/baseline_feedback_gray_36.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/java/app/insti/ComplaintTag.java: -------------------------------------------------------------------------------- 1 | package app.insti; 2 | 3 | /** 4 | * Created by Shivam Sharma on 13-08-2018. 5 | */ 6 | public class ComplaintTag { 7 | 8 | private String name; 9 | 10 | public ComplaintTag(String name) { 11 | this.name = name; 12 | } 13 | 14 | public String getName() { 15 | return name; 16 | } 17 | 18 | public void setName(String name) { 19 | this.name = name; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/baseline_navigation_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_done_all_black_256dp.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/menu/main.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/java/com/mrane/data/Room.java: -------------------------------------------------------------------------------- 1 | package com.mrane.data; 2 | 3 | public class Room extends Marker { 4 | public String parentKey; 5 | public String tag; 6 | 7 | public Room(String fullName, String shortName, float x, float y, 8 | int groupId, String parentName, String tag, String desc) { 9 | super(fullName, shortName, x, y, groupId, desc); 10 | this.tag = tag; 11 | this.parentKey = parentName; 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/selected_dot.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 9 | 10 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/layout/map_child.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/menu/comment_options_primary_menu.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 11 | 14 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_event_gray_36dp.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/baseline_arrow_upward_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/menu/search_view_menu.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/baseline_exit_to_app_gray_36.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/round_text_box.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_edit_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_event_recycler_view.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_notifications_white_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/java/app/insti/api/request/UserFCMPatchRequest.java: -------------------------------------------------------------------------------- 1 | package app.insti.api.request; 2 | 3 | import com.google.gson.annotations.SerializedName; 4 | 5 | public class UserFCMPatchRequest { 6 | @SerializedName("fcm_id") 7 | private String userFCMId; 8 | 9 | @SerializedName("android_version") 10 | private int userAndroidVersion; 11 | 12 | public UserFCMPatchRequest(String userFCMId, int userAndroidVersion) { 13 | this.userFCMId = userFCMId; 14 | this.userAndroidVersion = userAndroidVersion; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /app/src/main/res/layout/slidingimages_layout.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/xml/mess_menu_widget_info.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/baseline_comment_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_about.xml: -------------------------------------------------------------------------------- 1 | 7 | 8 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/baseline_account_circle_gray_36.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_link_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/java/app/insti/DetailsTransition.java: -------------------------------------------------------------------------------- 1 | package app.insti; 2 | 3 | import androidx.transition.ChangeBounds; 4 | import androidx.transition.ChangeImageTransform; 5 | import androidx.transition.ChangeTransform; 6 | import androidx.transition.TransitionSet; 7 | 8 | public class DetailsTransition extends TransitionSet { 9 | public DetailsTransition() { 10 | setOrdering(ORDERING_TOGETHER); 11 | addTransition(new ChangeBounds()). 12 | addTransition(new ChangeTransform()). 13 | addTransition(new ChangeImageTransform()); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/java/app/insti/api/request/ImageUploadRequest.java: -------------------------------------------------------------------------------- 1 | package app.insti.api.request; 2 | 3 | import com.google.gson.annotations.SerializedName; 4 | 5 | public class ImageUploadRequest { 6 | @SerializedName("picture") 7 | private String base64Image; 8 | 9 | public ImageUploadRequest(String base64Image) { 10 | this.base64Image = base64Image; 11 | } 12 | 13 | public String getBase64Image() { 14 | return base64Image; 15 | } 16 | 17 | public void setBase64Image(String base64Image) { 18 | this.base64Image = base64Image; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /app/src/main/res/layout/map_row_layout.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/layout/title_card.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /app/src/main/java/app/insti/api/request/CommentCreateRequest.java: -------------------------------------------------------------------------------- 1 | package app.insti.api.request; 2 | 3 | import com.google.gson.annotations.SerializedName; 4 | 5 | /** 6 | * Created by Shivam Sharma on 21-09-2018. 7 | */ 8 | 9 | public class CommentCreateRequest { 10 | @SerializedName("text") 11 | private String text; 12 | 13 | public CommentCreateRequest(String text) { 14 | this.text = text; 15 | } 16 | 17 | public String getText() { 18 | return text; 19 | } 20 | 21 | public void setText(String text) { 22 | this.text = text; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_search_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_local_phone_gray_36dp.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/layout/content_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/layout/map_list_fragment.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 14 | 15 | -------------------------------------------------------------------------------- /.idea/runConfigurations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/java/com/mrane/data/Building.java: -------------------------------------------------------------------------------- 1 | package com.mrane.data; 2 | 3 | public class Building extends Marker { 4 | public String[] children; 5 | 6 | public Building(String name, String shortName, float x, float y, 7 | int groupIndex, String[] children, String description) { 8 | super(name, shortName, x, y, groupIndex, description); 9 | this.children = children; 10 | } 11 | 12 | public String[] getChildren() { 13 | return children; 14 | } 15 | 16 | public void setChildren(String[] children) { 17 | this.children = children; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /app/src/main/res/layout/about_category_card.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 15 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_body_recycler_view.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 10 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_role_recycler_view.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 10 | 14 | -------------------------------------------------------------------------------- /app/src/main/java/app/insti/adapter/BodyAdapter.java: -------------------------------------------------------------------------------- 1 | package app.insti.adapter; 2 | 3 | import android.view.View; 4 | 5 | import androidx.fragment.app.Fragment; 6 | 7 | import java.util.List; 8 | 9 | import app.insti.R; 10 | import app.insti.Utils; 11 | import app.insti.api.model.Body; 12 | 13 | 14 | public class BodyAdapter extends CardAdapter { 15 | 16 | public BodyAdapter(List bodyList, Fragment mFragment) { 17 | super(bodyList, mFragment); 18 | } 19 | 20 | public void onClick(Body body, Fragment fragment, View view) { 21 | Utils.openBodyFragment(body, fragment, view.findViewById(R.id.object_picture)); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /app/src/main/res/layout/loading_panel.xml: -------------------------------------------------------------------------------- 1 | 8 | 9 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/color/mcv_text_date_light.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 8 | 9 | 11 | 12 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /app/src/main/res/layout/blog_load_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/layout/calendar_dialog_checkbox.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 14 | 15 | -------------------------------------------------------------------------------- /app/src/main/java/app/insti/adapter/RoleAdapter.java: -------------------------------------------------------------------------------- 1 | package app.insti.adapter; 2 | 3 | import android.view.View; 4 | 5 | import androidx.fragment.app.Fragment; 6 | 7 | import java.util.List; 8 | 9 | import app.insti.R; 10 | import app.insti.Utils; 11 | import app.insti.api.model.Role; 12 | 13 | 14 | public class RoleAdapter extends CardAdapter { 15 | 16 | public RoleAdapter(List roleList, Fragment mFragment) { 17 | super(roleList, mFragment); 18 | } 19 | 20 | @Override 21 | public void onClick(Role role, Fragment fragment, View view) { 22 | Utils.openBodyFragment(role.getRoleBodyDetails(), fragment, view.findViewById(R.id.object_picture)); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /app/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 16dp 4 | 16dp 5 | 8dp 6 | 176dp 7 | 8 | 9 | 80dp 10 | 280dp 11 | 20sp 12 | 16sp 13 | 14 | 15 | 16dp 16 | 17 | -------------------------------------------------------------------------------- /app/src/main/res/layout/nothing_found.xml: -------------------------------------------------------------------------------- 1 | 9 | 10 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /.github/workflows/android.yml: -------------------------------------------------------------------------------- 1 | name: Android CI 2 | 3 | on: 4 | push: 5 | branches: [ master ] 6 | pull_request: 7 | branches: [ master ] 8 | 9 | jobs: 10 | build: 11 | 12 | runs-on: ubuntu-latest 13 | 14 | steps: 15 | - uses: actions/checkout@v2 16 | - name: set up JDK 1.8 17 | uses: actions/setup-java@v1 18 | with: 19 | java-version: 1.8 20 | - name: Build with Gradle 21 | run: ./gradlew build 22 | 23 | lint: 24 | runs-on: ubuntu-latest 25 | 26 | steps: 27 | - uses: actions/checkout@v2 28 | - name: set up JDK 1.8 29 | uses: actions/setup-java@v1 30 | with: 31 | java-version: 1.8 32 | - name: Lint with Gradle 33 | run: ./gradlew lint 34 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-v21/ic_menu_share.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_login.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 17 | 18 | -------------------------------------------------------------------------------- /app/src/main/java/app/insti/api/response/EventCreateResponse.java: -------------------------------------------------------------------------------- 1 | package app.insti.api.response; 2 | 3 | /** 4 | * Created by mrunz on 15/7/17. 5 | */ 6 | 7 | public class EventCreateResponse { 8 | 9 | private String result; 10 | 11 | 12 | private String eventId; 13 | 14 | public EventCreateResponse(String result, String eventId) { 15 | this.result = result; 16 | this.eventId = eventId; 17 | } 18 | 19 | public String getResult() { 20 | return result; 21 | } 22 | 23 | public void setResult(String result) { 24 | this.result = result; 25 | } 26 | 27 | 28 | public String getEventId() { 29 | return eventId; 30 | } 31 | 32 | public void setEventId(String eventId) { 33 | this.eventId = eventId; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /app/src/main/java/app/insti/adapter/UserAdapter.java: -------------------------------------------------------------------------------- 1 | package app.insti.adapter; 2 | 3 | import android.view.View; 4 | 5 | import androidx.fragment.app.Fragment; 6 | 7 | import java.util.List; 8 | 9 | import app.insti.R; 10 | import app.insti.Utils; 11 | import app.insti.api.model.User; 12 | 13 | public class UserAdapter extends CardAdapter { 14 | 15 | public UserAdapter(List userList, Fragment mFragment) { 16 | super(userList, mFragment); 17 | } 18 | 19 | @Override 20 | public void onClick(User user, Fragment fragment, View view) { 21 | Utils.openUserFragment(user, fragment, view.findViewById(R.id.object_picture)); 22 | } 23 | 24 | @Override 25 | public int getAvatarPlaceholder(User user) { 26 | return R.drawable.user_placeholder; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_webview.xml: -------------------------------------------------------------------------------- 1 | 7 | 8 | 13 | 14 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #536dfe 4 | #0043ca 5 | #ffd740 6 | 7 | #ffd740 8 | 9 | #fafafa 10 | #000000 11 | #757575 12 | #FFFFFF 13 | 14 | #AED581 15 | #FF0000 16 | #00FF00 17 | 18 | #20000000 19 | #ffe6e6e6 20 | 21 | -------------------------------------------------------------------------------- /app/src/main/java/app/insti/utils/TitleCard.java: -------------------------------------------------------------------------------- 1 | package app.insti.utils; 2 | 3 | import app.insti.Constants; 4 | import app.insti.interfaces.CardInterface; 5 | 6 | public class TitleCard implements CardInterface { 7 | private String title; 8 | 9 | public TitleCard(String mTitle) { 10 | title = mTitle; 11 | } 12 | 13 | @Override 14 | public long getId() { 15 | return (getSubtitle() + getTitle()).hashCode(); 16 | } 17 | 18 | @Override 19 | public String getTitle() { 20 | return title; 21 | } 22 | 23 | @Override 24 | public String getSubtitle() { 25 | return Constants.CARD_TYPE_TITLE; 26 | } 27 | 28 | @Override 29 | public String getAvatarUrl() { 30 | return null; 31 | } 32 | 33 | @Override 34 | public int getBadge() { return 0; } 35 | } 36 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_color_lens_gray_36dp.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/java/app/insti/api/response/ComplaintCreateResponse.java: -------------------------------------------------------------------------------- 1 | package app.insti.api.response; 2 | 3 | /** 4 | * Created by Shivam Sharma on 18-09-2018. 5 | */ 6 | 7 | public class ComplaintCreateResponse { 8 | 9 | private String result; 10 | private String complaintId; 11 | 12 | public ComplaintCreateResponse(String result, String complaintId) { 13 | this.result = result; 14 | this.complaintId = complaintId; 15 | } 16 | 17 | public String getResult() { 18 | return result; 19 | } 20 | 21 | public void setResult(String result) { 22 | this.result = result; 23 | } 24 | 25 | public String getComplaintId() { 26 | return complaintId; 27 | } 28 | 29 | public void setComplaintId(String complaintId) { 30 | this.complaintId = complaintId; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /app/src/main/java/app/insti/notifications/NotificationId.java: -------------------------------------------------------------------------------- 1 | package app.insti.notifications; 2 | 3 | import java.util.concurrent.atomic.AtomicInteger; 4 | 5 | public class NotificationId { 6 | private final static AtomicInteger c = new AtomicInteger(0); 7 | private final static AtomicInteger current_count = new AtomicInteger(0); 8 | 9 | public static int getID() { 10 | return c.incrementAndGet(); 11 | } 12 | 13 | public static int getCurrentCount() { 14 | return current_count.get(); 15 | } 16 | 17 | public static int decrementAndGetCurrentCount() { 18 | if (current_count.get() > 0) 19 | return current_count.decrementAndGet(); 20 | else 21 | return 0; 22 | } 23 | 24 | public static void setCurrentCount(int count) { 25 | current_count.set(count); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /app/src/main/java/app/insti/api/response/ImageUploadResponse.java: -------------------------------------------------------------------------------- 1 | package app.insti.api.response; 2 | 3 | import com.google.gson.annotations.SerializedName; 4 | 5 | public class ImageUploadResponse { 6 | @SerializedName("id") 7 | private String pictureID; 8 | @SerializedName("picture") 9 | private String pictureURL; 10 | 11 | public ImageUploadResponse(String pictureID, String pictureURL) { 12 | this.pictureID = pictureID; 13 | this.pictureURL = pictureURL; 14 | } 15 | 16 | public String getPictureID() { 17 | return pictureID; 18 | } 19 | 20 | public void setPictureID(String pictureID) { 21 | this.pictureID = pictureID; 22 | } 23 | 24 | public String getPictureURL() { 25 | return pictureURL; 26 | } 27 | 28 | public void setPictureURL(String pictureURL) { 29 | this.pictureURL = pictureURL; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /app/src/main/java/app/insti/api/response/NewsFeedResponse.java: -------------------------------------------------------------------------------- 1 | package app.insti.api.response; 2 | 3 | import com.google.gson.annotations.SerializedName; 4 | 5 | import java.util.List; 6 | 7 | import app.insti.api.model.Event; 8 | 9 | public class NewsFeedResponse { 10 | @SerializedName("data") 11 | private List events; 12 | @SerializedName("count") 13 | private int count; 14 | 15 | public NewsFeedResponse(List events, int count) { 16 | this.events = events; 17 | this.count = count; 18 | } 19 | 20 | public List getEvents() { 21 | return events; 22 | } 23 | 24 | public void setEvents(List events) { 25 | this.events = events; 26 | } 27 | 28 | public int getCount() { 29 | return count; 30 | } 31 | 32 | public void setCount(int count) { 33 | this.count = count; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /app/src/main/res/layout/about_individual_card.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 15 | 16 | 22 | 23 | -------------------------------------------------------------------------------- /app/src/main/java/app/insti/ShareURLMaker.java: -------------------------------------------------------------------------------- 1 | package app.insti; 2 | 3 | import com.mrane.data.Marker; 4 | 5 | import app.insti.api.model.Body; 6 | import app.insti.api.model.Event; 7 | import app.insti.api.model.User; 8 | import app.insti.fragment.MapFragment; 9 | 10 | /** 11 | * Created by varun on 03-Apr-18. 12 | */ 13 | 14 | public final class ShareURLMaker { 15 | public static final String WEB_HOST = "https://www.insti.app/"; 16 | 17 | public static String getEventURL(Event event) { 18 | return WEB_HOST + "event/" + event.getEventStrID(); 19 | } 20 | 21 | public static String getBodyURL(Body body) { 22 | return WEB_HOST + "org/" + body.getBodyStrID(); 23 | } 24 | 25 | public static String getUserURL(User user) { 26 | return WEB_HOST + "user/" + user.getUserLDAPId(); 27 | } 28 | 29 | public static String getMapURL(Marker marker) { 30 | return WEB_HOST + "map/" + MapFragment.getPassableName(marker.getShortName()); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_news.xml: -------------------------------------------------------------------------------- 1 | 7 | 8 | 13 | 14 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /app/src/main/java/app/insti/UpdatableList.java: -------------------------------------------------------------------------------- 1 | package app.insti; 2 | 3 | import java.util.ArrayList; 4 | import java.util.List; 5 | 6 | public class UpdatableList extends ArrayList { 7 | /** Convert a list to updatable list */ 8 | public void setList(List list) { 9 | this.clear(); 10 | this.addAll(list); 11 | } 12 | 13 | /** Update existing or add */ 14 | public void updateCache(T t) { 15 | for (int i = 0; i < this.size(); i++) { 16 | T cachedT = this.get(i); 17 | if (cachedT.equals(t)) { 18 | this.set(i, t); 19 | return; 20 | } 21 | } 22 | this.add(t); 23 | } 24 | 25 | /** Remove from cache */ 26 | public void invalidateCache(T t) { 27 | for (int i = 0; i < this.size(); i++) { 28 | T cachedT = this.get(i); 29 | if (cachedT.equals(t)) { 30 | this.remove(i); 31 | return; 32 | } 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /app/src/main/java/app/insti/utils/BodyHeadCard.java: -------------------------------------------------------------------------------- 1 | package app.insti.utils; 2 | 3 | import androidx.fragment.app.Fragment; 4 | 5 | import app.insti.Constants; 6 | import app.insti.api.model.Body; 7 | import app.insti.interfaces.CardInterface; 8 | 9 | public class BodyHeadCard implements CardInterface { 10 | 11 | private Body body; 12 | public BodyHeadCard(Body mBody) { 13 | body = mBody; 14 | } 15 | 16 | @Override 17 | public long getId() { 18 | return 0; 19 | } 20 | 21 | @Override 22 | public String getTitle() { 23 | return null; 24 | } 25 | 26 | @Override 27 | public String getSubtitle() { 28 | return Constants.CARD_TYPE_BODY_HEAD; 29 | } 30 | 31 | @Override 32 | public String getAvatarUrl() { 33 | return null; 34 | } 35 | 36 | public void bindView(BodyHeadViewHolder viewHolder, Fragment fragment) { 37 | viewHolder.bindView(body, fragment); 38 | } 39 | 40 | @Override 41 | public int getBadge() { return 0; } 42 | } 43 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_notifications.xml: -------------------------------------------------------------------------------- 1 | 7 | 8 | 17 | 18 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /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/sajalnarang/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 | # Uncomment this to preserve the line number information for 20 | # debugging stack traces. 21 | #-keepattributes SourceFile,LineNumberTable 22 | 23 | # If you keep the line number information, uncomment this to 24 | # hide the original source file name. 25 | #-renamesourcefileattribute SourceFile 26 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_training_blog.xml: -------------------------------------------------------------------------------- 1 | 7 | 8 | 13 | 14 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | # Project-wide Gradle settings. 2 | 3 | # IDE (e.g. Android Studio) users: 4 | # Gradle settings configured through the IDE *will override* 5 | # any settings specified in this file. 6 | 7 | # For more details on how to configure your build environment visit 8 | # http://www.gradle.org/docs/current/userguide/build_environment.html 9 | 10 | # Specifies the JVM arguments used for the daemon process. 11 | # The setting is particularly useful for tweaking memory settings. 12 | org.gradle.jvmargs=-Xmx1536m 13 | 14 | # When configured, Gradle will run in incubating parallel mode. 15 | # This option should only be used with decoupled projects. More details, visit 16 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 17 | # org.gradle.parallel=true 18 | 19 | # TODO Replace Key and put in local:properties 20 | #GOOGLE_MAPS_API_KEY=AIzaSyB72DhM4E1NW0F-_SLnYtYYvz0rT9kne-U 21 | GOOGLE_MAPS_API_KEY=AIzaSyC31o6h06Z36V8M0lXgkGj4Y1cmNRVV9s0 22 | 23 | android.useAndroidX=true 24 | android.enableJetifier=true 25 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_placement_blog.xml: -------------------------------------------------------------------------------- 1 | 7 | 8 | 13 | 14 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /app/src/main/java/app/insti/fragment/BackHandledFragment.java: -------------------------------------------------------------------------------- 1 | package app.insti.fragment; 2 | 3 | import android.os.Bundle; 4 | 5 | public abstract class BackHandledFragment extends BaseFragment { 6 | protected BackHandlerInterface backHandlerInterface; 7 | 8 | public abstract boolean onBackPressed(); 9 | 10 | @Override 11 | public void onCreate(Bundle savedInstanceState) { 12 | super.onCreate(savedInstanceState); 13 | if (!(getActivity() instanceof BackHandlerInterface)) { 14 | throw new ClassCastException("Hosting activity must implement BackHandlerInterface"); 15 | } else { 16 | backHandlerInterface = (BackHandlerInterface) getActivity(); 17 | } 18 | } 19 | 20 | @Override 21 | public void onStart() { 22 | super.onStart(); 23 | 24 | // Mark this fragment as the selected Fragment. 25 | backHandlerInterface.setSelectedFragment(this); 26 | } 27 | 28 | public interface BackHandlerInterface { 29 | public void setSelectedFragment(BackHandledFragment backHandledFragment); 30 | } 31 | } -------------------------------------------------------------------------------- /app/src/main/java/app/insti/adapter/TabAdapter.java: -------------------------------------------------------------------------------- 1 | package app.insti.adapter; 2 | 3 | import androidx.fragment.app.Fragment; 4 | import androidx.fragment.app.FragmentManager; 5 | import androidx.fragment.app.FragmentStatePagerAdapter; 6 | 7 | import java.util.ArrayList; 8 | import java.util.List; 9 | 10 | public class TabAdapter extends FragmentStatePagerAdapter { 11 | 12 | private final List list_fragment = new ArrayList<>(); 13 | private final List list_title = new ArrayList<>(); 14 | 15 | public TabAdapter(FragmentManager fm) { 16 | super(fm); 17 | } 18 | 19 | public void addFragment(Fragment fragment, String title) { 20 | list_fragment.add(fragment); 21 | list_title.add(title); 22 | } 23 | 24 | @Override 25 | public CharSequence getPageTitle(int position) { 26 | return list_title.get(position); 27 | } 28 | 29 | @Override 30 | public Fragment getItem(int position) { 31 | return list_fragment.get(position); 32 | } 33 | 34 | @Override 35 | public int getCount() { 36 | return list_fragment.size(); 37 | } 38 | } -------------------------------------------------------------------------------- /app/src/main/java/app/insti/InstiAppApplication.java: -------------------------------------------------------------------------------- 1 | package app.insti; 2 | 3 | import android.app.Application; 4 | 5 | import com.squareup.picasso.Picasso; 6 | 7 | import java.io.File; 8 | 9 | import okhttp3.Cache; 10 | import okhttp3.OkHttpClient; 11 | 12 | public class InstiAppApplication extends Application { 13 | @Override 14 | public void onCreate() { 15 | super.onCreate(); 16 | try { 17 | initPicasso(); 18 | } catch (IllegalStateException ignored) {} 19 | } 20 | 21 | public void initPicasso() { 22 | Picasso.Builder builder = new Picasso.Builder(getApplicationContext()); 23 | OkHttpClient.Builder client = new OkHttpClient.Builder(); 24 | Cache cache = new Cache(new File(getApplicationContext().getCacheDir(), "http-cache"), 100 * 1024 * 1024); 25 | client.cache(cache); 26 | builder.downloader(new com.squareup.picasso.OkHttp3Downloader(( 27 | client.build() 28 | ))); 29 | Picasso built = builder.build(); 30 | built.setIndicatorsEnabled(false); 31 | built.setLoggingEnabled(false); 32 | Picasso.setSingletonInstance(built); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_settings_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/layout/app_bar_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 14 | 15 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /app/src/main/res/layout/blog_post_card.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 16 | 17 | 21 | 22 | 30 | -------------------------------------------------------------------------------- /app/google-services.json: -------------------------------------------------------------------------------- 1 | { 2 | "project_info": { 3 | "project_number": "259853447628", 4 | "firebase_url": "https://astral-theory-207617.firebaseio.com", 5 | "project_id": "astral-theory-207617", 6 | "storage_bucket": "astral-theory-207617.appspot.com" 7 | }, 8 | "client": [ 9 | { 10 | "client_info": { 11 | "mobilesdk_app_id": "1:259853447628:android:efaea50ea28ccfec", 12 | "android_client_info": { 13 | "package_name": "app.insti" 14 | } 15 | }, 16 | "oauth_client": [ 17 | { 18 | "client_id": "259853447628-be3teletcqtfpfddj9qnk0bqj221h2mo.apps.googleusercontent.com", 19 | "client_type": 3 20 | } 21 | ], 22 | "api_key": [ 23 | { 24 | "current_key": "AIzaSyB8B7N-3hnW_u4jOXHLRUzbMl6To3aDyJo" 25 | } 26 | ], 27 | "services": { 28 | "analytics_service": { 29 | "status": 1 30 | }, 31 | "appinvite_service": { 32 | "status": 1, 33 | "other_platform_oauth_client": [] 34 | }, 35 | "ads_service": { 36 | "status": 2 37 | } 38 | } 39 | } 40 | ], 41 | "configuration_version": "1" 42 | } -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 11 | 12 | 16 | 17 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_language_black_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/java/app/insti/adapter/AboutAdapter.java: -------------------------------------------------------------------------------- 1 | package app.insti.adapter; 2 | 3 | import android.view.ViewGroup; 4 | 5 | import androidx.recyclerview.widget.RecyclerView; 6 | 7 | import java.util.List; 8 | 9 | import app.insti.api.model.AboutCategory; 10 | import io.github.luizgrp.sectionedrecyclerviewadapter.SectionedRecyclerViewAdapter; 11 | 12 | public class AboutAdapter extends SectionedRecyclerViewAdapter { 13 | 14 | public AboutAdapter(List categories) { 15 | super(); 16 | for (AboutCategory category : categories) { 17 | addSection(category); 18 | } 19 | } 20 | 21 | @Override 22 | public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 23 | RecyclerView.ViewHolder viewHolder = super.onCreateViewHolder(parent, viewType); 24 | if (viewHolder instanceof AboutCategory.IndividualViewHolder) { 25 | ViewGroup.MarginLayoutParams layoutParams = (ViewGroup.MarginLayoutParams) viewHolder.itemView.getLayoutParams(); 26 | layoutParams.width = (parent.getWidth() / 3) - layoutParams.leftMargin - layoutParams.rightMargin; 27 | viewHolder.itemView.setLayoutParams(layoutParams); 28 | } 29 | return viewHolder; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /app/src/main/java/app/insti/api/response/ExploreResponse.java: -------------------------------------------------------------------------------- 1 | package app.insti.api.response; 2 | 3 | import com.google.gson.annotations.SerializedName; 4 | 5 | import java.util.List; 6 | 7 | import app.insti.api.model.Body; 8 | import app.insti.api.model.Event; 9 | import app.insti.api.model.User; 10 | 11 | public class ExploreResponse { 12 | @SerializedName("bodies") 13 | private List bodies; 14 | @SerializedName("events") 15 | private List events; 16 | @SerializedName("users") 17 | private List users; 18 | 19 | public ExploreResponse(List bodies, List events, List users) { 20 | this.bodies = bodies; 21 | this.events = events; 22 | this.users = users; 23 | } 24 | 25 | public List getBodies() { 26 | return bodies; 27 | } 28 | 29 | public void setBodies(List bodies) { 30 | this.bodies = bodies; 31 | } 32 | 33 | public List getEvents() { 34 | return events; 35 | } 36 | 37 | public void setEvents(List events) { 38 | this.events = events; 39 | } 40 | 41 | public List getUsers() { 42 | return users; 43 | } 44 | 45 | public void setUsers(List users) { 46 | this.users = users; 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /app/src/main/java/com/mrane/campusmap/ListFragment.java: -------------------------------------------------------------------------------- 1 | package com.mrane.campusmap; 2 | 3 | import android.os.Bundle; 4 | import android.view.LayoutInflater; 5 | import android.view.View; 6 | import android.view.ViewGroup; 7 | import android.widget.ListView; 8 | 9 | import androidx.fragment.app.Fragment; 10 | 11 | import app.insti.R; 12 | import app.insti.fragment.MapFragment; 13 | 14 | public class ListFragment extends Fragment { 15 | 16 | private MapFragment mapFragment = null; 17 | 18 | public ListFragment() { 19 | } 20 | 21 | public ListFragment forFragment(MapFragment mapFragment) { 22 | this.mapFragment = mapFragment; 23 | return this; 24 | } 25 | 26 | @Override 27 | public View onCreateView(LayoutInflater inflater, ViewGroup container, 28 | Bundle savedInstanceState) { 29 | final FuzzySearchAdapter adapter = mapFragment.getAdapter(); 30 | View rootView = inflater.inflate(R.layout.map_list_fragment, container, false); 31 | ListView list = rootView.findViewById(R.id.suggestion_list); 32 | list.setAdapter(adapter); 33 | list.setOnItemClickListener(mapFragment); 34 | list.setOnTouchListener(mapFragment); 35 | list.setFastScrollEnabled(true); 36 | return rootView; 37 | } 38 | 39 | } 40 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/user_placeholder.xml: -------------------------------------------------------------------------------- 1 | 6 | 10 | 14 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_qr_code.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/layout/map_place_description.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 16 | 17 | 21 | 22 | 28 | 29 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /app/src/main/java/app/insti/adapter/FeedAdapter.java: -------------------------------------------------------------------------------- 1 | package app.insti.adapter; 2 | 3 | import android.view.View; 4 | 5 | import androidx.fragment.app.Fragment; 6 | import androidx.fragment.app.FragmentActivity; 7 | 8 | import java.util.List; 9 | 10 | import app.insti.R; 11 | import app.insti.Utils; 12 | import app.insti.api.model.Event; 13 | 14 | public class FeedAdapter extends CardAdapter { 15 | public FeedAdapter(List eventList, Fragment fragment) { 16 | super(eventList, fragment); 17 | } 18 | 19 | @Override 20 | public void onClick(Event event, FragmentActivity fragmentActivity) {} 21 | 22 | @Override 23 | public void onClick(Event event, final Fragment fragment, View view) { 24 | int picId = R.id.object_picture; 25 | if (event.isEventBigImage()) { 26 | picId = R.id.big_object_picture; 27 | } 28 | Utils.openEventFragment(event, fragment, view.findViewById(picId)); 29 | } 30 | 31 | @Override 32 | public String getBigImageUrl(Event event) { 33 | if (event.isEventBigImage()) { 34 | return event.getEventImageURL(); 35 | } 36 | return null; 37 | } 38 | 39 | @Override 40 | public int getAvatarPlaceholder(Event event) { 41 | return Utils.isDarkTheme ? R.drawable.lotus_placeholder_dark : R.drawable.lotus_placeholder; 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /app/src/main/java/app/insti/api/model/AboutIndividual.java: -------------------------------------------------------------------------------- 1 | package app.insti.api.model; 2 | 3 | public class AboutIndividual { 4 | private String id; 5 | private String name; 6 | private String imageName; 7 | private int type; 8 | 9 | public static final int TYPE_HUMAN = 0; 10 | public static final int TYPE_LINK = 1; 11 | 12 | public AboutIndividual(String id, String name, String imageName) { 13 | this.id = id; 14 | this.name = name; 15 | this.imageName = imageName; 16 | this.type = TYPE_HUMAN; 17 | } 18 | 19 | public AboutIndividual(String id, String name, String imageName, int type) { 20 | this.id = id; 21 | this.name = name; 22 | this.imageName = imageName; 23 | this.type = type; 24 | } 25 | 26 | public String getId() { 27 | return id; 28 | } 29 | 30 | public void setId(String id) { 31 | this.id = id; 32 | } 33 | 34 | public String getName() { 35 | return name; 36 | } 37 | 38 | public void setName(String name) { 39 | this.name = name; 40 | } 41 | 42 | public String getImageName() { 43 | return imageName; 44 | } 45 | 46 | public void setImageName(String imageName) { 47 | this.imageName = imageName; 48 | } 49 | 50 | public int getType() { 51 | return type; 52 | } 53 | 54 | public void setType(int type) { 55 | this.type = type; 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /app/src/main/java/app/insti/api/response/LoginResponse.java: -------------------------------------------------------------------------------- 1 | package app.insti.api.response; 2 | 3 | import com.google.gson.annotations.SerializedName; 4 | 5 | import app.insti.api.model.User; 6 | 7 | public class LoginResponse { 8 | @SerializedName("sessionid") 9 | private String sessionID; 10 | @SerializedName("user") 11 | private int userID; 12 | @SerializedName("profile_id") 13 | private String profileID; 14 | @SerializedName("profile") 15 | private User user; 16 | 17 | public LoginResponse(String sessionID, int userID, String profileID, User user) { 18 | this.sessionID = sessionID; 19 | this.userID = userID; 20 | this.profileID = profileID; 21 | this.user = user; 22 | } 23 | 24 | public String getSessionID() { 25 | return sessionID; 26 | } 27 | 28 | public void setSessionID(String sessionID) { 29 | this.sessionID = sessionID; 30 | } 31 | 32 | public int getUserID() { 33 | return userID; 34 | } 35 | 36 | public void setUserID(int userID) { 37 | this.userID = userID; 38 | } 39 | 40 | public String getProfileID() { 41 | return profileID; 42 | } 43 | 44 | public void setProfileID(String profileID) { 45 | this.profileID = profileID; 46 | } 47 | 48 | public User getUser() { 49 | return user; 50 | } 51 | 52 | public void setUser(User user) { 53 | this.user = user; 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_feed.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 12 | 13 | 17 | 18 | 19 | 20 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /app/src/main/java/com/mrane/campusmap/SettingsManager.java: -------------------------------------------------------------------------------- 1 | package com.mrane.campusmap; 2 | 3 | import android.content.Context; 4 | import android.content.SharedPreferences; 5 | import android.content.SharedPreferences.OnSharedPreferenceChangeListener; 6 | import android.preference.PreferenceManager; 7 | 8 | public class SettingsManager implements OnSharedPreferenceChangeListener { 9 | private SharedPreferences sharedPrefs; 10 | private String muteKey; 11 | private String residencesKey; 12 | private String lastUpdatedKey; 13 | 14 | public SettingsManager(Context context) { 15 | sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context); 16 | sharedPrefs.registerOnSharedPreferenceChangeListener(this); 17 | muteKey = "mute"; 18 | residencesKey = "residences"; 19 | lastUpdatedKey = "lastupdated"; 20 | } 21 | 22 | public boolean isMuted() { 23 | return sharedPrefs.getBoolean(muteKey, false); 24 | } 25 | 26 | public boolean showResidences() { 27 | return sharedPrefs.getBoolean(residencesKey, true); 28 | } 29 | 30 | public long getLastUpdatedOn() { 31 | return sharedPrefs.getLong(lastUpdatedKey, 0); 32 | } 33 | 34 | public void setLastUpdatedOn(long lastUpdatedOn) { 35 | sharedPrefs.edit().putLong(lastUpdatedKey, lastUpdatedOn).commit(); 36 | } 37 | 38 | @Override 39 | public void onSharedPreferenceChanged(SharedPreferences prefs, String key) { 40 | 41 | } 42 | 43 | 44 | } 45 | -------------------------------------------------------------------------------- /app/src/main/java/app/insti/NotificationBroadcastReceiver.java: -------------------------------------------------------------------------------- 1 | package app.insti; 2 | 3 | import android.content.BroadcastReceiver; 4 | import android.content.Context; 5 | import android.content.Intent; 6 | 7 | import app.insti.api.EmptyCallback; 8 | import app.insti.api.RetrofitInterface; 9 | import app.insti.api.ServiceGenerator; 10 | import app.insti.notifications.NotificationId; 11 | import me.leolin.shortcutbadger.ShortcutBadger; 12 | 13 | public class NotificationBroadcastReceiver extends BroadcastReceiver { 14 | @Override 15 | public void onReceive(Context context, Intent intent) { 16 | if (intent.getAction().equals(Constants.NOTIF_CANCELLED)) { 17 | // Get the notification id 18 | String id = intent.getExtras().getString(Constants.FCM_BUNDLE_NOTIFICATION_ID); 19 | if (id == null || id.equals("")) return; 20 | 21 | // Get retrofit and session id 22 | ServiceGenerator serviceGenerator = new ServiceGenerator(context); 23 | RetrofitInterface retrofitInterface = serviceGenerator.getRetrofitInterface(); 24 | 25 | SessionManager session = new SessionManager(context); 26 | if (session.isLoggedIn()) { 27 | Utils.setSessionId(session.getSessionID()); 28 | } 29 | 30 | // Mark as read 31 | retrofitInterface.markNotificationDeleted(Utils.getSessionIDHeader(), id).enqueue(new EmptyCallback()); 32 | 33 | // Reduce current count 34 | ShortcutBadger.applyCount(context.getApplicationContext(), NotificationId.decrementAndGetCurrentCount()); 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /app/src/main/res/layout/nav_header_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 14 | 15 | 21 | 22 | 29 | 30 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /app/src/main/java/app/insti/adapter/ComplaintFragmentViewPagerAdapter.java: -------------------------------------------------------------------------------- 1 | package app.insti.adapter; 2 | 3 | import androidx.annotation.Nullable; 4 | import androidx.fragment.app.Fragment; 5 | import androidx.fragment.app.FragmentManager; 6 | import androidx.fragment.app.FragmentStatePagerAdapter; 7 | 8 | import app.insti.fragment.ComplaintsHomeFragment; 9 | import app.insti.fragment.ComplaintsMeFragment; 10 | 11 | /** 12 | * Created by Shivam Sharma on 15-08-2018. 13 | */ 14 | 15 | public class ComplaintFragmentViewPagerAdapter extends FragmentStatePagerAdapter { 16 | 17 | private String userID, sessionID, userProfileUrl; 18 | 19 | public ComplaintFragmentViewPagerAdapter(FragmentManager fm,String userID, String sessionID, String userProfileUrl) { 20 | super(fm); 21 | this.userID = userID; 22 | this.sessionID = sessionID; 23 | this.userProfileUrl = userProfileUrl; 24 | } 25 | 26 | @Override 27 | public Fragment getItem(int position) { 28 | switch (position) { 29 | case 0: 30 | return ComplaintsHomeFragment.getInstance(userID, userProfileUrl); 31 | case 1: 32 | return ComplaintsMeFragment.getInstance(userID, userProfileUrl); 33 | default: 34 | return ComplaintsHomeFragment.getInstance(userID, userProfileUrl); 35 | } 36 | } 37 | 38 | @Nullable 39 | @Override 40 | public CharSequence getPageTitle(int position) { 41 | if (position == 0) { 42 | return "Home"; 43 | } else { 44 | return "Me"; 45 | } 46 | } 47 | 48 | @Override 49 | public int getCount() { 50 | return 2; 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /app/src/main/res/layout/map_children_view.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 14 | 15 | 25 | 26 | 33 | 34 | 35 | 42 | 43 | -------------------------------------------------------------------------------- /app/src/main/java/app/insti/adapter/ComplaintDetailsPagerAdapter.java: -------------------------------------------------------------------------------- 1 | package app.insti.adapter; 2 | 3 | import androidx.fragment.app.Fragment; 4 | import androidx.fragment.app.FragmentManager; 5 | import androidx.fragment.app.FragmentPagerAdapter; 6 | 7 | import app.insti.fragment.ComplaintDetailsFragment; 8 | 9 | /** 10 | * Created by Shivam Sharma on 19-09-2018. 11 | */ 12 | 13 | public class ComplaintDetailsPagerAdapter extends FragmentPagerAdapter { 14 | 15 | private String complaintid, userid, userProfileUrl; 16 | 17 | public ComplaintDetailsPagerAdapter(FragmentManager fm, String complaintid, String userid, String userProfileUrl) { 18 | super(fm); 19 | this.complaintid = complaintid; 20 | this.userid = userid; 21 | this.userProfileUrl = userProfileUrl; 22 | } 23 | 24 | @Override 25 | public Fragment getItem(int position) { 26 | switch (position) { 27 | case 0: 28 | return ComplaintDetailsFragment.getInstance(complaintid, userid, userProfileUrl); 29 | /* 30 | For version 2: 31 | case 1: 32 | return RelevantComplaintsFragment.getInstance(sessionid, userid); 33 | */ 34 | default: 35 | return ComplaintDetailsFragment.getInstance(complaintid, userid, userProfileUrl); 36 | } 37 | } 38 | 39 | @Override 40 | public CharSequence getPageTitle(int position) { 41 | if (position == 0) { 42 | return "Complaint Details"; 43 | } else { 44 | return "Relevant Complaints"; 45 | } 46 | 47 | } 48 | 49 | @Override 50 | public int getCount() { 51 | return 1; 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 16 | 26 | 27 | 28 | 29 | 30 | 31 | 33 | -------------------------------------------------------------------------------- /app/src/main/java/com/mrane/zoomview/ImageViewState.java: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2014 David Morrissey 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | package com.mrane.zoomview; 18 | 19 | import android.graphics.PointF; 20 | 21 | import java.io.Serializable; 22 | 23 | /** 24 | * Wraps the scale, center and orientation of a displayed image for easy restoration on screen rotate. 25 | */ 26 | public class ImageViewState implements Serializable { 27 | 28 | /** 29 | * 30 | */ 31 | private static final long serialVersionUID = -4397017033346987595L; 32 | 33 | private float scale; 34 | 35 | private float centerX; 36 | 37 | private float centerY; 38 | 39 | private int orientation; 40 | 41 | public ImageViewState(float scale, PointF center, int orientation) { 42 | this.scale = scale; 43 | this.centerX = center.x; 44 | this.centerY = center.y; 45 | this.orientation = orientation; 46 | } 47 | 48 | public float getScale() { 49 | return scale; 50 | } 51 | 52 | public PointF getCenter() { 53 | return new PointF(centerX, centerY); 54 | } 55 | 56 | public int getOrientation() { 57 | return orientation; 58 | } 59 | 60 | } 61 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_complaints_home.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 12 | 13 | 21 | 22 | 26 | 27 | 33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/listview_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /app/src/main/java/app/insti/fragment/BaseFragment.java: -------------------------------------------------------------------------------- 1 | package app.insti.fragment; 2 | 3 | 4 | import android.app.Activity; 5 | import android.content.Context; 6 | 7 | import androidx.fragment.app.Fragment; 8 | 9 | import app.insti.ActivityBuffer; 10 | 11 | /** 12 | * A simple {@link Fragment} subclass. 13 | */ 14 | public class BaseFragment extends Fragment { 15 | 16 | /* Member Variables. */ 17 | private ActivityBuffer mActivityBuffer; 18 | 19 | public BaseFragment() { 20 | // Implement the Parent. 21 | super(); 22 | // Allocate the ActivityBuffer. 23 | this.mActivityBuffer = new ActivityBuffer(); 24 | } 25 | 26 | @Override 27 | public final void onAttach(final Context pContext) { 28 | // Handle as usual. 29 | super.onAttach(pContext); 30 | // Is the Context an Activity? 31 | if (pContext instanceof Activity) { 32 | // Cast Accordingly. 33 | final Activity lActivity = (Activity) pContext; 34 | // Inform the ActivityBuffer. 35 | this.getActivityBuffer().onContextGained(lActivity); 36 | } 37 | } 38 | 39 | @Deprecated 40 | @Override 41 | public final void onAttach(final Activity pActivity) { 42 | // Handle as usual. 43 | super.onAttach(pActivity); 44 | // Inform the ActivityBuffer. 45 | this.getActivityBuffer().onContextGained(pActivity); 46 | } 47 | 48 | @Override 49 | public final void onDetach() { 50 | // Handle as usual. 51 | super.onDetach(); 52 | // Inform the ActivityBuffer. 53 | this.getActivityBuffer().onContextLost(); 54 | } 55 | 56 | /* Getters. */ 57 | public final ActivityBuffer getActivityBuffer() { 58 | return this.mActivityBuffer; 59 | } 60 | 61 | } -------------------------------------------------------------------------------- /app/src/main/res/layout/mess_menu_widget.xml: -------------------------------------------------------------------------------- 1 | 8 | 9 | 16 | 17 | 22 | 23 | 30 | 31 | 39 | 40 | 41 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_mess_menu.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 10 | 11 | 15 | 16 | 24 | 25 | 26 | 31 | 32 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_explore.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 14 | 15 | 29 | 30 | 34 | 35 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /app/src/main/java/app/insti/api/LocationAPIUtils.java: -------------------------------------------------------------------------------- 1 | package app.insti.api; 2 | 3 | import android.util.Log; 4 | 5 | import com.google.android.gms.maps.CameraUpdateFactory; 6 | import com.google.android.gms.maps.GoogleMap; 7 | import com.google.android.gms.maps.MapView; 8 | import com.google.android.gms.maps.OnMapReadyCallback; 9 | import com.google.android.gms.maps.model.CameraPosition; 10 | import com.google.android.gms.maps.model.LatLng; 11 | import com.google.android.gms.maps.model.MarkerOptions; 12 | 13 | /** 14 | * Created by Shivam Sharma on 13-08-2018. 15 | *

16 | * This API updates the Google Map when the location is added. 17 | */ 18 | 19 | public class LocationAPIUtils { 20 | 21 | private static final String TAG = LocationAPIUtils.class.getSimpleName(); 22 | private GoogleMap googleMap; 23 | private MapView mMapView; 24 | 25 | public LocationAPIUtils(GoogleMap googleMap, MapView mMapView) { 26 | this.googleMap = googleMap; 27 | this.mMapView = mMapView; 28 | } 29 | 30 | public void callGoogleToShowLocationOnMap( final LatLng location, final String name, final String address, final int cursor) { 31 | mMapView.getMapAsync(new OnMapReadyCallback() { 32 | 33 | @Override 34 | public void onMapReady(GoogleMap mMap) { 35 | googleMap = mMap; 36 | if (cursor != 0) { 37 | googleMap.clear(); 38 | } 39 | googleMap.addMarker(new MarkerOptions().position(location).title(name).snippet(address)); 40 | CameraPosition cameraPosition = new CameraPosition.Builder().target(location).zoom(17).build(); 41 | googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition)); 42 | Log.i(TAG, "curser = " + cursor); 43 | } 44 | }); 45 | } 46 | } -------------------------------------------------------------------------------- /app/src/main/res/layout/map_expandable_list_header.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 16 | 17 | 29 | 30 | 38 | 39 | 43 | 44 | 48 | 49 | -------------------------------------------------------------------------------- /.idea/codeStyles/Project.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 15 | 16 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /app/src/main/res/xml/preferences.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 11 | 12 | 17 | 18 | 25 | 26 | 31 | 32 | 37 | 38 | 43 | 44 | 49 | 50 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_complaints_me.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 14 | 15 | 23 | 24 | 28 | 29 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_complaint.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 12 | 13 | 18 | 19 | 29 | 30 | 31 | 32 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /app/src/main/java/app/insti/ComplaintDescriptionAutoCompleteTextView.java: -------------------------------------------------------------------------------- 1 | package app.insti; 2 | 3 | import android.content.Context; 4 | import android.os.Handler; 5 | import android.os.Message; 6 | import android.util.AttributeSet; 7 | import android.view.View; 8 | import android.widget.ProgressBar; 9 | 10 | /** 11 | * Created by Shivam Sharma on 13-08-2018. 12 | */ 13 | 14 | public class ComplaintDescriptionAutoCompleteTextView extends androidx.appcompat.widget.AppCompatAutoCompleteTextView { 15 | 16 | private static final int MESSAGE_TEXT_CHANGED = 100; 17 | private static final int DEFAULT_AUTOCOMPLETE_DELAY = 750; 18 | 19 | private int mAutoCompleteDelay = DEFAULT_AUTOCOMPLETE_DELAY; 20 | private ProgressBar mLoadingIndicator; 21 | 22 | private final Handler mHandler = new Handler() { 23 | @Override 24 | public void handleMessage(Message msg) { 25 | ComplaintDescriptionAutoCompleteTextView.super.performFiltering((CharSequence) msg.obj, msg.arg1); 26 | } 27 | }; 28 | 29 | public ComplaintDescriptionAutoCompleteTextView(Context context, AttributeSet attrs) { 30 | super(context, attrs); 31 | } 32 | 33 | public void setLoadingIndicator(ProgressBar progressBar) { 34 | mLoadingIndicator = progressBar; 35 | } 36 | 37 | public void setAutoCompleteDelay(int autoCompleteDelay) { 38 | mAutoCompleteDelay = autoCompleteDelay; 39 | } 40 | 41 | @Override 42 | protected void performFiltering(CharSequence text, int keyCode) { 43 | if (mLoadingIndicator != null) { 44 | mLoadingIndicator.setVisibility(View.VISIBLE); 45 | } 46 | mHandler.removeMessages(MESSAGE_TEXT_CHANGED); 47 | mHandler.sendMessageDelayed(mHandler.obtainMessage(MESSAGE_TEXT_CHANGED, text), mAutoCompleteDelay); 48 | } 49 | 50 | @Override 51 | public void onFilterComplete(int count) { 52 | if (mLoadingIndicator != null) { 53 | mLoadingIndicator.setVisibility(View.GONE); 54 | } 55 | super.onFilterComplete(count); 56 | } 57 | } 58 | 59 | -------------------------------------------------------------------------------- /app/src/main/res/layout/news_article_card.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 17 | 18 | 22 | 23 | 30 | 31 | 37 | 38 | 44 | 45 | 46 | 53 | 54 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | InstiApp 2 | =============== 3 | ### Powered by the Web and Coding Club, IIT Bombay 4 | 5 | All IITB content in one place. InstiApp is the result of WnCC's coordinated efforts to build an application that makes it easier to discover IITB content on the go. 6 | InstiApp features the Placement Blog, Upcoming Events and general information on every active club/body in the Institute 7 | 8 | [![InstiApp](https://insti.app/instiapp-badge-gh.svg)](https://insti.app/android) 9 | [![Android CI](https://github.com/wncc/instiapp-android/workflows/Android%20CI/badge.svg)](https://github.com/wncc/instiapp-android/actions) 10 | [![GitHub license](https://img.shields.io/github/license/wncc/instiapp-android.svg)](https://github.com/wncc/instiapp-android/blob/master/LICENSE.md) 11 | [![Codacy Badge](https://api.codacy.com/project/badge/Grade/88542395a3544345a2f34354518e99a9)](https://www.codacy.com/gh/wncc/instiapp-android?utm_source=github.com&utm_medium=referral&utm_content=wncc/instiapp-android&utm_campaign=Badge_Grade) 12 | 13 | ### Features: 14 | * Events Directory 15 | * News 16 | * Explore 17 | * Mess Menu 18 | * Placement Blog 19 | * Internship Blog 20 | * Calendar 21 | * Map 22 | * Quick Links 23 | 24 | A more detailed list of features can be found [here](https://docs.google.com/document/d/1L4wzuw88JrLyBt1DvnjavtAwhJkXgNSIxJG3yBsLwQ0/edit?usp=sharing). 25 | 26 | InstiApp is a community effort and we appreciate the help of everyone who wants to help improve the App. 27 | 28 | Check http://github.com/wncc for more information about all development activities under WnCC. 29 | 30 | Development 31 | ----------- 32 | 33 | Read the [API Documentation](https://wncc.github.io/IITBapp/). 34 | 35 | See the [Frontend Design](https://drive.google.com/open?id=1YJRUvsyqR5QtfWYug_PoBJ08p-criCPo). 36 | 37 | ### Contributors 38 | See [list of contributors](https://github.com/wncc/InstiApp/graphs/contributors) 39 | 40 | Release 41 | ------- 42 | 43 | Download the app from the [Play Store](https://play.google.com/store/apps/details?id=app.insti) or visit [insti.app](https://insti.app) 44 | 45 | ###### InstiApp, WnCC are not endorsed by IIT Bombay, the institute. 46 | -------------------------------------------------------------------------------- /app/src/main/res/values/attrs.xml: -------------------------------------------------------------------------------- 1 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /app/src/main/java/app/insti/fragment/NewsFragment.java: -------------------------------------------------------------------------------- 1 | package app.insti.fragment; 2 | 3 | import android.os.Bundle; 4 | import android.view.LayoutInflater; 5 | import android.view.View; 6 | import android.view.ViewGroup; 7 | 8 | import androidx.appcompat.widget.Toolbar; 9 | import androidx.fragment.app.Fragment; 10 | import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; 11 | 12 | import java.util.List; 13 | 14 | import app.insti.R; 15 | import app.insti.Utils; 16 | import app.insti.adapter.NewsAdapter; 17 | import app.insti.api.RetrofitInterface; 18 | import app.insti.api.model.NewsArticle; 19 | import retrofit2.Call; 20 | 21 | /** 22 | * A simple {@link Fragment} subclass. 23 | */ 24 | public class NewsFragment extends RecyclerViewFragment { 25 | 26 | public NewsFragment() { 27 | // Required empty public constructor 28 | } 29 | 30 | 31 | @Override 32 | public View onCreateView(LayoutInflater inflater, ViewGroup container, 33 | Bundle savedInstanceState) { 34 | // Inflate the layout for this fragment 35 | return inflater.inflate(R.layout.fragment_news, container, false); 36 | } 37 | 38 | @Override 39 | public void onStart() { 40 | super.onStart(); 41 | 42 | Toolbar toolbar = getActivity().findViewById(R.id.toolbar); 43 | toolbar.setTitle("News"); 44 | Utils.setSelectedMenuItem(getActivity(), R.id.nav_news); 45 | 46 | setHasOptionsMenu(true); 47 | updateData(); 48 | 49 | postType = NewsArticle.class; 50 | adapterType = NewsAdapter.class; 51 | recyclerView = getActivity().findViewById(R.id.news_recycler_view); 52 | swipeRefreshLayout = getActivity().findViewById(R.id.news_swipe_refresh_layout); 53 | swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { 54 | @Override 55 | public void onRefresh() { 56 | updateData(); 57 | } 58 | }); 59 | } 60 | 61 | @Override 62 | protected Call> getCall(RetrofitInterface retrofitInterface, String sessionIDHeader, int postCount) { 63 | return retrofitInterface.getNews(sessionIDHeader, postCount, 20, searchQuery); 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /app/src/main/java/app/insti/api/model/MessMenu.java: -------------------------------------------------------------------------------- 1 | package app.insti.api.model; 2 | 3 | import androidx.annotation.NonNull; 4 | 5 | import com.google.gson.annotations.SerializedName; 6 | 7 | public class MessMenu { 8 | @NonNull() 9 | @SerializedName("id") 10 | private String mealID; 11 | 12 | @SerializedName("day") 13 | private int day; 14 | 15 | @SerializedName("breakfast") 16 | private String breakfast; 17 | 18 | @SerializedName("lunch") 19 | private String lunch; 20 | 21 | @SerializedName("snacks") 22 | private String snacks; 23 | 24 | @SerializedName("dinner") 25 | private String dinner; 26 | 27 | @SerializedName("hostel") 28 | private String hostelID; 29 | 30 | public MessMenu(String mealID, int day, String breakfast, String lunch, String snacks, String dinner, String hostelID) { 31 | this.mealID = mealID; 32 | this.day = day; 33 | this.breakfast = breakfast; 34 | this.lunch = lunch; 35 | this.snacks = snacks; 36 | this.dinner = dinner; 37 | this.hostelID = hostelID; 38 | } 39 | 40 | public String getMealID() { 41 | return mealID; 42 | } 43 | 44 | public void setMealID(String mealID) { 45 | this.mealID = mealID; 46 | } 47 | 48 | public int getDay() { 49 | return day; 50 | } 51 | 52 | public void setDay(int day) { 53 | this.day = day; 54 | } 55 | 56 | public String getBreakfast() { 57 | return breakfast; 58 | } 59 | 60 | public void setBreakfast(String breakfast) { 61 | this.breakfast = breakfast; 62 | } 63 | 64 | public String getLunch() { 65 | return lunch; 66 | } 67 | 68 | public void setLunch(String lunch) { 69 | this.lunch = lunch; 70 | } 71 | 72 | public String getSnacks() { 73 | return snacks; 74 | } 75 | 76 | public void setSnacks(String snacks) { 77 | this.snacks = snacks; 78 | } 79 | 80 | public String getDinner() { 81 | return dinner; 82 | } 83 | 84 | public void setDinner(String dinner) { 85 | this.dinner = dinner; 86 | } 87 | 88 | public String getHostelID() { 89 | return hostelID; 90 | } 91 | 92 | public void setHostelID(String hostelID) { 93 | this.hostelID = hostelID; 94 | } 95 | } 96 | -------------------------------------------------------------------------------- /app/src/main/java/app/insti/SessionManager.java: -------------------------------------------------------------------------------- 1 | package app.insti; 2 | 3 | import android.content.Context; 4 | import android.content.Intent; 5 | import android.content.SharedPreferences; 6 | import android.content.SharedPreferences.Editor; 7 | import android.util.Log; 8 | 9 | import app.insti.activity.LoginActivity; 10 | import app.insti.api.model.User; 11 | 12 | public class SessionManager { 13 | public SharedPreferences pref; 14 | private Editor editor; 15 | private Context context; 16 | private final int PRIVATE_MODE = 0; 17 | 18 | public SessionManager(Context context) { 19 | this.context = context; 20 | pref = context.getSharedPreferences(Constants.PREF_NAME, PRIVATE_MODE); 21 | } 22 | 23 | public void checkLogin() { 24 | if (!this.isLoggedIn()) { 25 | Intent i = new Intent(context, LoginActivity.class); 26 | // Closing all the Activities 27 | i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 28 | // Add new Flag to start new Activity 29 | i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 30 | // Staring Login Activity 31 | context.startActivity(i); 32 | } 33 | } 34 | 35 | public void createLoginSession(String gcmId, User currentUser, String sessionID) { 36 | Log.d("SessionManager", "GcmId being stored"); 37 | editor = pref.edit(); 38 | editor.putBoolean(Constants.IS_LOGGED_IN, true); 39 | editor.putString(Constants.GCM_ID, gcmId); 40 | editor.putString(Constants.USER_ID, currentUser.getUserID()); 41 | editor.putString(Constants.CURRENT_USER, currentUser.toString()); 42 | editor.putString(Constants.SESSION_ID, sessionID); 43 | editor.commit(); 44 | } 45 | 46 | public String getUserID() { 47 | return pref.getString(Constants.USER_ID, ""); 48 | } 49 | 50 | public User getCurrentUser() { 51 | return User.fromString(pref.getString(Constants.CURRENT_USER, "")); 52 | } 53 | 54 | public String getSessionID() { 55 | return pref.getString(Constants.SESSION_ID, ""); 56 | } 57 | 58 | public boolean isLoggedIn() { 59 | return pref.getBoolean(Constants.IS_LOGGED_IN, false); 60 | } 61 | 62 | public void logout() { 63 | editor = pref.edit(); 64 | editor.clear().commit(); 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /app/src/main/java/app/insti/api/model/TrainingBlogPost.java: -------------------------------------------------------------------------------- 1 | package app.insti.api.model; 2 | 3 | import android.content.Context; 4 | import android.view.View; 5 | 6 | import androidx.annotation.NonNull; 7 | 8 | import com.google.gson.annotations.SerializedName; 9 | 10 | import java.sql.Timestamp; 11 | 12 | import app.insti.interfaces.Clickable; 13 | 14 | import static app.insti.Utils.openWebURL; 15 | 16 | public class TrainingBlogPost implements Clickable { 17 | @NonNull() 18 | @SerializedName("id") 19 | private String postID; 20 | 21 | @SerializedName("link") 22 | private String link; 23 | 24 | @SerializedName("title") 25 | private String title; 26 | 27 | @SerializedName("content") 28 | private String content; 29 | 30 | @SerializedName("published") 31 | private Timestamp published; 32 | 33 | public TrainingBlogPost(String postID, String link, String title, String content, Timestamp published) { 34 | this.postID = postID; 35 | this.link = link; 36 | this.title = title; 37 | this.content = content; 38 | this.published = published; 39 | } 40 | 41 | public String getId() { return postID; } 42 | 43 | public String getPostID() { 44 | return postID; 45 | } 46 | 47 | public void setPostID(String postID) { 48 | this.postID = postID; 49 | } 50 | 51 | public String getLink() { 52 | return link; 53 | } 54 | 55 | public void setLink(String link) { 56 | this.link = link; 57 | } 58 | 59 | public String getTitle() { 60 | return title; 61 | } 62 | 63 | public void setTitle(String title) { 64 | this.title = title; 65 | } 66 | 67 | public String getContent() { 68 | return content; 69 | } 70 | 71 | public void setContent(String content) { 72 | this.content = content; 73 | } 74 | 75 | public Timestamp getPublished() { 76 | return published; 77 | } 78 | 79 | public void setPublished(Timestamp published) { 80 | this.published = published; 81 | } 82 | 83 | @Override 84 | public View.OnClickListener getOnClickListener(final Context context) { 85 | return new View.OnClickListener() { 86 | @Override 87 | public void onClick(View v) { 88 | openWebURL(context, link); 89 | } 90 | }; 91 | } 92 | } 93 | -------------------------------------------------------------------------------- /app/src/main/java/app/insti/api/model/PlacementBlogPost.java: -------------------------------------------------------------------------------- 1 | package app.insti.api.model; 2 | 3 | import android.content.Context; 4 | import android.view.View; 5 | 6 | import androidx.annotation.NonNull; 7 | 8 | import com.google.gson.annotations.SerializedName; 9 | 10 | import java.sql.Timestamp; 11 | 12 | import app.insti.interfaces.Clickable; 13 | 14 | import static app.insti.Utils.openWebURL; 15 | 16 | public class PlacementBlogPost implements Clickable { 17 | @NonNull() 18 | @SerializedName("id") 19 | private String postID; 20 | 21 | @SerializedName("link") 22 | private String link; 23 | 24 | @SerializedName("title") 25 | private String title; 26 | 27 | @SerializedName("content") 28 | private String content; 29 | 30 | @SerializedName("published") 31 | private Timestamp published; 32 | 33 | public PlacementBlogPost(String postID, String link, String title, String content, Timestamp published) { 34 | this.postID = postID; 35 | this.link = link; 36 | this.title = title; 37 | this.content = content; 38 | this.published = published; 39 | } 40 | 41 | public String getId() { return postID; } 42 | 43 | public String getPostID() { 44 | return postID; 45 | } 46 | 47 | public void setPostID(String postID) { 48 | this.postID = postID; 49 | } 50 | 51 | public String getLink() { 52 | return link; 53 | } 54 | 55 | public void setLink(String link) { 56 | this.link = link; 57 | } 58 | 59 | public String getTitle() { 60 | return title; 61 | } 62 | 63 | public void setTitle(String title) { 64 | this.title = title; 65 | } 66 | 67 | public String getContent() { 68 | return content; 69 | } 70 | 71 | public void setContent(String content) { 72 | this.content = content; 73 | } 74 | 75 | public Timestamp getPublished() { 76 | return published; 77 | } 78 | 79 | public void setPublished(Timestamp published) { 80 | this.published = published; 81 | } 82 | 83 | @Override 84 | public View.OnClickListener getOnClickListener(final Context context) { 85 | return new View.OnClickListener() { 86 | @Override 87 | public void onClick(View v) { 88 | openWebURL(context, link); 89 | } 90 | }; 91 | } 92 | } 93 | -------------------------------------------------------------------------------- /app/src/main/java/app/insti/fragment/TrainingBlogFragment.java: -------------------------------------------------------------------------------- 1 | package app.insti.fragment; 2 | 3 | 4 | import android.os.Bundle; 5 | import android.view.LayoutInflater; 6 | import android.view.View; 7 | import android.view.ViewGroup; 8 | 9 | import androidx.appcompat.widget.Toolbar; 10 | import androidx.fragment.app.Fragment; 11 | import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; 12 | 13 | import java.util.List; 14 | 15 | import app.insti.R; 16 | import app.insti.Utils; 17 | import app.insti.adapter.TrainingBlogAdapter; 18 | import app.insti.api.RetrofitInterface; 19 | import app.insti.api.model.TrainingBlogPost; 20 | import retrofit2.Call; 21 | 22 | /** 23 | * A simple {@link Fragment} subclass. 24 | */ 25 | public class TrainingBlogFragment extends RecyclerViewFragment { 26 | 27 | public TrainingBlogFragment() { 28 | // Required empty public constructor 29 | } 30 | 31 | 32 | @Override 33 | public View onCreateView(LayoutInflater inflater, ViewGroup container, 34 | Bundle savedInstanceState) { 35 | // Inflate the layout for this fragment 36 | return inflater.inflate(R.layout.fragment_training_blog, container, false); 37 | } 38 | 39 | @Override 40 | public void onStart() { 41 | super.onStart(); 42 | 43 | Toolbar toolbar = getActivity().findViewById(R.id.toolbar); 44 | toolbar.setTitle("Internship Blog"); 45 | Utils.setSelectedMenuItem(getActivity(), R.id.nav_training_blog); 46 | 47 | setHasOptionsMenu(true); 48 | updateData(); 49 | 50 | postType = TrainingBlogPost.class; 51 | adapterType = TrainingBlogAdapter.class; 52 | recyclerView = getActivity().findViewById(R.id.training_feed_recycler_view); 53 | swipeRefreshLayout = getActivity().findViewById(R.id.training_feed_swipe_refresh_layout); 54 | swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { 55 | @Override 56 | public void onRefresh() { 57 | updateData(); 58 | } 59 | }); 60 | } 61 | 62 | @Override 63 | protected Call> getCall(RetrofitInterface retrofitInterface, String sessionIDHeader, int postCount) { 64 | return retrofitInterface.getTrainingBlogFeed(sessionIDHeader, postCount, 20, searchQuery); 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /app/src/main/java/com/mrane/data/Locations.java: -------------------------------------------------------------------------------- 1 | package com.mrane.data; 2 | 3 | import java.util.ArrayList; 4 | import java.util.HashMap; 5 | import java.util.List; 6 | 7 | import app.insti.api.model.Venue; 8 | 9 | public class Locations { 10 | public HashMap data = new HashMap(); 11 | 12 | public Locations(List venueList) { 13 | // Add locations 14 | for (Venue venue : venueList) { 15 | Marker marker; 16 | 17 | // Skip bad locations 18 | if (venue.getVenuePixelX() == 0 || venue.getVenueGroupId() == null) { 19 | continue; 20 | } 21 | 22 | // Set some things up 23 | if (venue.getVenueParentRelation() == null) { 24 | venue.setVenueParentRelation(""); 25 | } 26 | 27 | if (venue.getVenueParentRelation() == null || venue.getVenueParentRelation().equals("")) { 28 | // Add children 29 | final List children = new ArrayList(); 30 | for (Venue child : venueList) { 31 | if (child.getVenueParentId() != null && child.getVenueParentId().equals(venue.getVenueID())) { 32 | children.add(child.getVenueName()); 33 | } 34 | } 35 | String[] childArray = new String[children.size()]; 36 | 37 | marker = new Building( 38 | venue.getVenueName(), venue.getVenueShortName(), venue.getVenuePixelX(), venue.getVenuePixelY(), 39 | venue.getVenueGroupId(), children.toArray(childArray), venue.getVenueDescripion()); 40 | } else { 41 | // Get parent name 42 | String parentName = ""; 43 | for (Venue parent : venueList) { 44 | if (parent.getVenueID().equals(venue.getVenueParentId())) { 45 | parentName = parent.getVenueName(); 46 | break; 47 | } 48 | } 49 | 50 | marker = new Room(venue.getVenueName(), venue.getVenueShortName(), venue.getVenuePixelX(), venue.getVenuePixelY(), 51 | venue.getVenueGroupId(), parentName, venue.getVenueParentRelation(), venue.getVenueDescripion()); 52 | } 53 | data.put(marker.getName(), marker); 54 | } 55 | } 56 | } -------------------------------------------------------------------------------- /app/src/main/java/app/insti/fragment/PlacementBlogFragment.java: -------------------------------------------------------------------------------- 1 | package app.insti.fragment; 2 | 3 | 4 | import android.os.Bundle; 5 | import android.view.LayoutInflater; 6 | import android.view.View; 7 | import android.view.ViewGroup; 8 | 9 | import androidx.appcompat.widget.Toolbar; 10 | import androidx.fragment.app.Fragment; 11 | import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; 12 | 13 | import java.util.List; 14 | 15 | import app.insti.R; 16 | import app.insti.Utils; 17 | import app.insti.adapter.PlacementBlogAdapter; 18 | import app.insti.api.RetrofitInterface; 19 | import app.insti.api.model.PlacementBlogPost; 20 | import retrofit2.Call; 21 | 22 | /** 23 | * A simple {@link Fragment} subclass. 24 | */ 25 | public class PlacementBlogFragment extends RecyclerViewFragment { 26 | 27 | public PlacementBlogFragment() { 28 | // Required empty public constructor 29 | } 30 | 31 | 32 | @Override 33 | public View onCreateView(LayoutInflater inflater, ViewGroup container, 34 | Bundle savedInstanceState) { 35 | // Inflate the layout for this fragment 36 | return inflater.inflate(R.layout.fragment_placement_blog, container, false); 37 | } 38 | 39 | @Override 40 | public void onStart() { 41 | super.onStart(); 42 | 43 | Toolbar toolbar = getActivity().findViewById(R.id.toolbar); 44 | toolbar.setTitle("Placement Blog"); 45 | Utils.setSelectedMenuItem(getActivity(), R.id.nav_placement_blog); 46 | 47 | setHasOptionsMenu(true); 48 | updateData(); 49 | 50 | postType = PlacementBlogPost.class; 51 | adapterType = PlacementBlogAdapter.class; 52 | recyclerView = getActivity().findViewById(R.id.placement_feed_recycler_view); 53 | swipeRefreshLayout = getActivity().findViewById(R.id.placement_feed_swipe_refresh_layout); 54 | swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { 55 | @Override 56 | public void onRefresh() { 57 | updateData(); 58 | } 59 | }); 60 | } 61 | 62 | @Override 63 | protected Call> getCall(RetrofitInterface retrofitInterface, String sessionIDHeader, int postCount) { 64 | return retrofitInterface.getPlacementBlogFeed(sessionIDHeader, postCount, 20, searchQuery); 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /app/src/main/res/menu/activity_main_drawer.xml: -------------------------------------------------------------------------------- 1 | 2 |

5 | 6 | 7 | 11 | 15 | 16 | 20 | 21 | 25 | 26 | 30 | 31 | 35 | 36 | 40 | 41 | 45 | 46 | 50 | 51 | 55 | 56 | 60 | 61 | 65 | 66 | 67 | 68 | -------------------------------------------------------------------------------- /app/src/main/assets/login.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 68 | 69 | 70 | 71 | 72 |
73 | 74 |
InstiApp
75 |
76 | 77 |
78 | 90 |
91 | 92 | -------------------------------------------------------------------------------- /app/src/main/java/app/insti/adapter/ImageViewPagerAdapter.java: -------------------------------------------------------------------------------- 1 | package app.insti.adapter; 2 | 3 | import android.content.Context; 4 | import android.view.LayoutInflater; 5 | import android.view.View; 6 | import android.view.ViewGroup; 7 | import android.widget.ImageView; 8 | 9 | import androidx.annotation.NonNull; 10 | import androidx.viewpager.widget.PagerAdapter; 11 | 12 | import com.squareup.picasso.Picasso; 13 | 14 | import java.util.ArrayList; 15 | import java.util.List; 16 | 17 | import app.insti.R; 18 | import app.insti.api.model.Venter; 19 | 20 | /** 21 | * Created by Shivam Sharma on 25-09-2018. 22 | */ 23 | 24 | public class ImageViewPagerAdapter extends PagerAdapter { 25 | 26 | private List images = new ArrayList<>(); 27 | public Context context; 28 | public LayoutInflater inflater; 29 | 30 | public ImageViewPagerAdapter(Context context, List images) 31 | { 32 | this.context = context; 33 | this.images = images; 34 | inflater= (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 35 | } 36 | 37 | public ImageViewPagerAdapter(Context context, Venter.Complaint detailedComplaint) 38 | { 39 | this.context = context; 40 | inflater= (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 41 | 42 | for (String image: detailedComplaint.getImages()){ 43 | images.add(image); 44 | } 45 | } 46 | 47 | @Override 48 | public int getCount() { 49 | if (images.size() == 0) 50 | return 1; 51 | else 52 | return images.size(); 53 | } 54 | 55 | @Override 56 | public boolean isViewFromObject(@NonNull View view, @NonNull Object o) { 57 | return view.equals(o); 58 | } 59 | 60 | @Override 61 | public void destroyItem(ViewGroup container, int position, Object object) { 62 | container.removeView((View) object); 63 | } 64 | 65 | @Override 66 | public Object instantiateItem(ViewGroup view, int position) 67 | { 68 | View imageLayout = inflater.inflate(R.layout.slidingimages_layout, view, false); 69 | assert imageLayout != null; 70 | final ImageView imageView = imageLayout.findViewById(R.id.slidingImageView); 71 | 72 | if (images.size() != 0) 73 | Picasso.get().load(images.get(position)).into(imageView); 74 | else 75 | Picasso.get().load(R.drawable.baseline_photo_black_48).resize(500,500).into(imageView); 76 | 77 | view.addView(imageLayout, 0); 78 | return imageLayout; 79 | } 80 | } -------------------------------------------------------------------------------- /app/src/main/res/layout/map_list_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 12 | 13 | 22 | 23 | 31 | 32 | 33 | 34 | 39 | 40 | 47 | 48 | 55 | 56 | 65 | 66 | -------------------------------------------------------------------------------- /app/src/main/java/app/insti/utils/DateTimeUtil.java: -------------------------------------------------------------------------------- 1 | package app.insti.utils; 2 | 3 | import java.text.ParseException; 4 | import java.text.SimpleDateFormat; 5 | import java.util.Date; 6 | import java.util.concurrent.TimeUnit; 7 | 8 | public class DateTimeUtil { 9 | 10 | public static String getDate(String dtStart) { 11 | SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'+05:30'"); 12 | try { 13 | Date date = format.parse(dtStart); 14 | Date now = new Date(); 15 | long diff = System.currentTimeMillis() - date.getTime(); 16 | long seconds = TimeUnit.MILLISECONDS.toSeconds(now.getTime() - date.getTime()); 17 | long minutes = TimeUnit.MILLISECONDS.toMinutes(now.getTime() - date.getTime()); 18 | long hours = TimeUnit.MILLISECONDS.toHours(now.getTime() - date.getTime()); 19 | if (seconds <= 0) { 20 | return "Now"; 21 | } else if (seconds < 60 && seconds > 1) { 22 | return seconds + " seconds ago"; 23 | } else if (minutes == 1) { 24 | return " 1 minute ago"; 25 | } else if (minutes < 60 && minutes > 1) { 26 | return minutes + " minutes ago"; 27 | } else if (hours == 1) { 28 | return "An hour ago"; 29 | } else if (hours < 24 && hours > 1) { 30 | return hours + " hours ago"; 31 | } else { 32 | long days = Math.round(diff / (24.0 * 60 * 60 * 1000)); 33 | if (days == 0) 34 | return "Today"; 35 | else if (days == 1) 36 | return "Yesterday"; 37 | else if (days < 14) 38 | return days + " days ago"; 39 | else if (days < 30) 40 | if ((int) (days / 7) == 1) 41 | return "A week ago"; 42 | else 43 | return ((int) (days / 7)) + " weeks ago"; 44 | else if (days < 365) 45 | if ((int) (days / 30) == 1) 46 | return ((int) (days / 30)) + " month ago"; 47 | else 48 | return ((int) (days / 30)) + " months ago"; 49 | else 50 | if ((int) (days / 365) == 1) 51 | return "A year ago"; 52 | else 53 | return ((int) (days / 365)) + " years ago"; 54 | } 55 | } catch (ParseException e) { 56 | e.printStackTrace(); 57 | } 58 | return ""; 59 | } 60 | } -------------------------------------------------------------------------------- /app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | InstiApp 3 | 4 | Open navigation drawer 5 | Close navigation drawer 6 | 7 | 8 | 9 | 10 | Hostel 1 11 | Hostel 2 12 | Hostel 3 13 | Hostel 4 14 | Hostel 5 15 | Hostel 6 16 | Hostel 7 17 | Hostel 8 18 | Hostel 9 19 | Hostel 10 20 | Hostel 11 21 | Hostel 12 22 | Hostel 13 23 | Hostel 14 24 | Hostel 15 25 | Hostel 16 26 | Tansa House 27 | QIP 28 | 29 | 30 | 31 | @string/calendar_yes 32 | @string/calendar_no 33 | @string/calendar_always_ask 34 | 35 | 36 | 37 | Yes 38 | No 39 | Always ask 40 | 41 | INSTIAPP_NOTIFS 42 | 43 | 44 | AIzaSyC0T4chZbdcKjLkgEts9YVonPFyP7ckMIE 45 | Take photo using Camera 46 | Choose from gallery 47 | Add Image 48 | Vent your issues now! 49 | Nobody taking care of your civic complaints? Be it garbage, water, potholes etc. 50 | Please check your Network Connectivity 51 | Enter Suggestions (if any) 52 | No complaints at the moment 53 | Please provide the complaint description before submitting 54 | Getting current location. 55 | GPS is not enabled! 56 | No permission! 57 | Enter Location Details 58 | 59 | -------------------------------------------------------------------------------- /gradlew.bat: -------------------------------------------------------------------------------- 1 | @if "%DEBUG%" == "" @echo off 2 | @rem ########################################################################## 3 | @rem 4 | @rem Gradle startup script for Windows 5 | @rem 6 | @rem ########################################################################## 7 | 8 | @rem Set local scope for the variables with windows NT shell 9 | if "%OS%"=="Windows_NT" setlocal 10 | 11 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 12 | set DEFAULT_JVM_OPTS= 13 | 14 | set DIRNAME=%~dp0 15 | if "%DIRNAME%" == "" set DIRNAME=. 16 | set APP_BASE_NAME=%~n0 17 | set APP_HOME=%DIRNAME% 18 | 19 | @rem Find java.exe 20 | if defined JAVA_HOME goto findJavaFromJavaHome 21 | 22 | set JAVA_EXE=java.exe 23 | %JAVA_EXE% -version >NUL 2>&1 24 | if "%ERRORLEVEL%" == "0" goto init 25 | 26 | echo. 27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 28 | echo. 29 | echo Please set the JAVA_HOME variable in your environment to match the 30 | echo location of your Java installation. 31 | 32 | goto fail 33 | 34 | :findJavaFromJavaHome 35 | set JAVA_HOME=%JAVA_HOME:"=% 36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 37 | 38 | if exist "%JAVA_EXE%" goto init 39 | 40 | echo. 41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 42 | echo. 43 | echo Please set the JAVA_HOME variable in your environment to match the 44 | echo location of your Java installation. 45 | 46 | goto fail 47 | 48 | :init 49 | @rem Get command-line arguments, handling Windowz variants 50 | 51 | if not "%OS%" == "Windows_NT" goto win9xME_args 52 | if "%@eval[2+2]" == "4" goto 4NT_args 53 | 54 | :win9xME_args 55 | @rem Slurp the command line arguments. 56 | set CMD_LINE_ARGS= 57 | set _SKIP=2 58 | 59 | :win9xME_args_slurp 60 | if "x%~1" == "x" goto execute 61 | 62 | set CMD_LINE_ARGS=%* 63 | goto execute 64 | 65 | :4NT_args 66 | @rem Get arguments from the 4NT Shell from JP Software 67 | set CMD_LINE_ARGS=%$ 68 | 69 | :execute 70 | @rem Setup the command line 71 | 72 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 73 | 74 | @rem Execute Gradle 75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% 76 | 77 | :end 78 | @rem End local scope for the variables with windows NT shell 79 | if "%ERRORLEVEL%"=="0" goto mainEnd 80 | 81 | :fail 82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 83 | rem the _cmd.exe /c_ return code! 84 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 85 | exit /b 1 86 | 87 | :mainEnd 88 | if "%OS%"=="Windows_NT" endlocal 89 | 90 | :omega 91 | -------------------------------------------------------------------------------- /app/src/main/java/app/insti/api/model/NewsArticle.java: -------------------------------------------------------------------------------- 1 | package app.insti.api.model; 2 | 3 | import android.content.Context; 4 | import android.view.View; 5 | 6 | import androidx.annotation.NonNull; 7 | 8 | import com.google.gson.annotations.SerializedName; 9 | 10 | import java.sql.Timestamp; 11 | 12 | import app.insti.interfaces.Clickable; 13 | 14 | import static app.insti.Utils.openWebURL; 15 | 16 | public class NewsArticle implements Clickable { 17 | @NonNull() 18 | @SerializedName("id") 19 | private String articleID; 20 | 21 | @SerializedName("link") 22 | private String link; 23 | 24 | @SerializedName("title") 25 | private String title; 26 | 27 | @SerializedName("content") 28 | private String content; 29 | 30 | @SerializedName("published") 31 | private Timestamp published; 32 | 33 | @SerializedName("body") 34 | private Body body; 35 | 36 | public NewsArticle(String articleID, String link, String title, String content, Timestamp published, Body body) { 37 | this.articleID = articleID; 38 | this.link = link; 39 | this.title = title; 40 | this.content = content; 41 | this.published = published; 42 | this.body = body; 43 | } 44 | 45 | public String getId() { return articleID; } 46 | 47 | public String getArticleID() { 48 | return articleID; 49 | } 50 | 51 | public void setArticleID(String articleID) { 52 | this.articleID = articleID; 53 | } 54 | 55 | public String getLink() { 56 | return link; 57 | } 58 | 59 | public void setLink(String link) { 60 | this.link = link; 61 | } 62 | 63 | public String getTitle() { 64 | return title; 65 | } 66 | 67 | public void setTitle(String title) { 68 | this.title = title; 69 | } 70 | 71 | public String getContent() { 72 | return content; 73 | } 74 | 75 | public void setContent(String content) { 76 | this.content = content; 77 | } 78 | 79 | public Timestamp getPublished() { 80 | return published; 81 | } 82 | 83 | public void setPublished(Timestamp published) { 84 | this.published = published; 85 | } 86 | 87 | public Body getBody() { 88 | return body; 89 | } 90 | 91 | public void setBody(Body body) { 92 | this.body = body; 93 | } 94 | 95 | @Override 96 | public View.OnClickListener getOnClickListener(final Context context) { 97 | return new View.OnClickListener() { 98 | @Override 99 | public void onClick(View v) { 100 | openWebURL(context, link); 101 | } 102 | }; 103 | } 104 | } 105 | --------------------------------------------------------------------------------