├── .gitignore ├── .gitmodules ├── .idea ├── codeStyleSettings.xml ├── compiler.xml ├── copyright │ └── profiles_settings.xml ├── dictionaries │ └── theo.xml ├── encodings.xml ├── gradle.xml ├── inspectionProfiles │ ├── Project_Default.xml │ └── profiles_settings.xml ├── libraries │ ├── android_networking_1_0_0.xml │ ├── animated_vector_drawable_25_3_0.xml │ ├── appcompat_v7_25_3_0.xml │ ├── butterknife_8_5_1.xml │ ├── butterknife_annotations_8_5_1.xml │ ├── cardview_v7_25_3_0.xml │ ├── commonmark_0_8_0.xml │ ├── commonmark_ext_gfm_strikethrough_0_8_0.xml │ ├── commonmark_ext_gfm_tables_0_8_0.xml │ ├── cwac_pager_0_2_5.xml │ ├── design_25_3_0.xml │ ├── firebase_analytics_10_2_0.xml │ ├── firebase_analytics_impl_10_2_0.xml │ ├── firebase_common_10_2_0.xml │ ├── firebase_core_10_2_0.xml │ ├── firebase_crash_10_2_0.xml │ ├── firebase_iid_10_2_0.xml │ ├── gson_2_8_0.xml │ ├── haha_2_0_3.xml │ ├── hamcrest_core_1_3.xml │ ├── highlightjs_android_1_5_0.xml │ ├── junit_4_12.xml │ ├── leakcanary_analyzer_1_5.xml │ ├── leakcanary_android_1_5.xml │ ├── leakcanary_android_no_op_1_5.xml │ ├── leakcanary_watcher_1_5.xml │ ├── okhttp_3_6_0.xml │ ├── okio_1_11_0.xml │ ├── play_services_basement_10_2_0.xml │ ├── play_services_tasks_10_2_0.xml │ ├── recyclerview_animators_2_2_5.xml │ ├── recyclerview_v7_25_3_0.xml │ ├── support_annotations_25_3_0.xml │ ├── support_compat_25_3_0.xml │ ├── support_core_ui_25_3_0.xml │ ├── support_core_utils_25_3_0.xml │ ├── support_fragment_25_3_0.xml │ ├── support_media_compat_25_3_0.xml │ ├── support_v4_25_3_0.xml │ ├── support_vector_drawable_25_3_0.xml │ ├── transition_25_3_0.xml │ └── volley_1_0_0.xml ├── markdown-exported-files.xml ├── markdown-navigator.xml ├── markdown-navigator │ └── profiles_settings.xml ├── misc.xml ├── modules.xml ├── runConfigurations.xml └── statistic.xml ├── .travis.yml ├── 3RD-PARTY-LICENSES.txt ├── LICENSE ├── README.md ├── animatingrecycler ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ └── main │ ├── AndroidManifest.xml │ ├── java │ └── com │ │ └── tpb │ │ └── animatingrecyclerview │ │ └── AnimatingRecyclerView.java │ └── res │ └── values │ └── strings.xml ├── app ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ └── main │ ├── AndroidManifest.xml │ ├── java │ └── com │ │ └── tpb │ │ └── projects │ │ ├── commits │ │ ├── CommitActivity.java │ │ ├── CommitCommentsAdapter.java │ │ ├── CommitDiffAdapter.java │ │ └── fragments │ │ │ ├── CommitCommentsFragment.java │ │ │ ├── CommitFragment.java │ │ │ └── CommitInfoFragment.java │ │ ├── common │ │ ├── BaseActivity.java │ │ ├── CircularRevealActivity.java │ │ ├── FixedLinearLayoutManger.java │ │ ├── LockableViewPager.java │ │ ├── NetworkImageView.java │ │ ├── RepositoriesAdapter.java │ │ ├── ShortcutDialog.java │ │ ├── ViewSafeFragment.java │ │ └── fab │ │ │ ├── FabHideScrollListener.java │ │ │ ├── FloatingActionButton.java │ │ │ ├── FloatingActionMenu.java │ │ │ └── Label.java │ │ ├── editors │ │ ├── CardEditor.java │ │ ├── CharacterActivity.java │ │ ├── CommentEditor.java │ │ ├── EditorActivity.java │ │ ├── EmojiActivity.java │ │ ├── FullScreenDialog.java │ │ ├── IssueEditor.java │ │ ├── KeyboardDismissingDialogFragment.java │ │ ├── MarkdownButtonAdapter.java │ │ ├── MilestoneEditor.java │ │ ├── MultiChoiceDialog.java │ │ └── ProjectEditor.java │ │ ├── flow │ │ ├── IntentHandler.java │ │ ├── Interceptor.java │ │ └── ProjectsApplication.java │ │ ├── issues │ │ ├── IssueActivity.java │ │ ├── IssueCommentsAdapter.java │ │ ├── IssueEventsAdapter.java │ │ └── fragments │ │ │ ├── IssueCommentsFragment.java │ │ │ ├── IssueFragment.java │ │ │ └── IssueInfoFragment.java │ │ ├── login │ │ └── LoginActivity.java │ │ ├── markdown │ │ └── Formatter.java │ │ ├── milestones │ │ ├── MilestoneActivity.java │ │ ├── MilestonesActivity.java │ │ └── MilestonesAdapter.java │ │ ├── notifications │ │ ├── NotificationIntentService.java │ │ └── receivers │ │ │ ├── NotificationEventReceiver.java │ │ │ └── NotificationServiceStartBroadcastReceiver.java │ │ ├── project │ │ ├── CardAdapter.java │ │ ├── CardDragListener.java │ │ ├── ColumnFragment.java │ │ ├── ProjectActivity.java │ │ └── ProjectSearchAdapter.java │ │ ├── repo │ │ ├── RepoActivity.java │ │ ├── RepoCommitsAdapter.java │ │ ├── RepoIssuesAdapter.java │ │ ├── RepoProjectsAdapter.java │ │ ├── content │ │ │ ├── ContentActivity.java │ │ │ ├── ContentAdapter.java │ │ │ └── FileActivity.java │ │ └── fragments │ │ │ ├── RepoCommitsFragment.java │ │ │ ├── RepoFragment.java │ │ │ ├── RepoInfoFragment.java │ │ │ ├── RepoIssuesFragment.java │ │ │ ├── RepoProjectsFragment.java │ │ │ └── RepoReadmeFragment.java │ │ ├── user │ │ ├── GistAdapter.java │ │ ├── UserActivity.java │ │ ├── UserAdapter.java │ │ └── fragments │ │ │ ├── UserFollowersFragment.java │ │ │ ├── UserFollowingFragment.java │ │ │ ├── UserFragment.java │ │ │ ├── UserGistsFragment.java │ │ │ ├── UserInfoFragment.java │ │ │ ├── UserReposFragment.java │ │ │ └── UserStarsFragment.java │ │ └── util │ │ ├── Analytics.java │ │ ├── Logger.java │ │ ├── SettingsActivity.java │ │ ├── UI.java │ │ ├── Util.java │ │ ├── input │ │ ├── KeyBoardVisibilityChecker.java │ │ └── SimpleTextChangeWatcher.java │ │ └── search │ │ ├── ArrayFilter.java │ │ └── FuzzyStringSearcher.java │ ├── lib │ └── cwac-pager-0.2.5.jar │ └── res │ ├── anim │ ├── fab_scale_down.xml │ ├── fab_scale_up.xml │ ├── fab_slide_in_from_left.xml │ ├── fab_slide_in_from_right.xml │ ├── fab_slide_out_to_left.xml │ ├── fab_slide_out_to_right.xml │ ├── none.xml │ ├── slide_down.xml │ └── slide_up.xml │ ├── drawable │ ├── ic_add.xml │ ├── ic_arrow_back.xml │ ├── ic_avatar_default.xml │ ├── ic_bio.xml │ ├── ic_blog.xml │ ├── ic_bug.xml │ ├── ic_cancel.xml │ ├── ic_changelog.xml │ ├── ic_character.xml │ ├── ic_check.xml │ ├── ic_check_box_checked.xml │ ├── ic_check_box_empty.xml │ ├── ic_chevron_down.xml │ ├── ic_chevron_right.xml │ ├── ic_column.xml │ ├── ic_comment_white.xml │ ├── ic_company.xml │ ├── ic_database.xml │ ├── ic_date.xml │ ├── ic_delete.xml │ ├── ic_done.xml │ ├── ic_edit.xml │ ├── ic_email.xml │ ├── ic_email_grey.xml │ ├── ic_emoticon.xml │ ├── ic_failure.xml │ ├── ic_file.xml │ ├── ic_filter.xml │ ├── ic_folder.xml │ ├── ic_forked.xml │ ├── ic_format_bold.xml │ ├── ic_format_code.xml │ ├── ic_format_italic.xml │ ├── ic_format_list_bulleted.xml │ ├── ic_format_list_numbered.xml │ ├── ic_format_quote.xml │ ├── ic_format_strikethrough.xml │ ├── ic_gist.xml │ ├── ic_github.xml │ ├── ic_group_add_white.xml │ ├── ic_horizontal_rule.xml │ ├── ic_insert_link.xml │ ├── ic_issue.xml │ ├── ic_issue_white.xml │ ├── ic_license.xml │ ├── ic_licenses.xml │ ├── ic_loading.xml │ ├── ic_location.xml │ ├── ic_mention_white.xml │ ├── ic_not_pinned.xml │ ├── ic_note.xml │ ├── ic_person.xml │ ├── ic_person_grey.xml │ ├── ic_person_white.xml │ ├── ic_photo.xml │ ├── ic_pinned.xml │ ├── ic_preview.xml │ ├── ic_reply.xml │ ├── ic_repo.xml │ ├── ic_search.xml │ ├── ic_stars.xml │ ├── ic_state_closed.xml │ ├── ic_state_open.xml │ ├── ic_version.xml │ ├── ic_watchers.xml │ ├── ic_watchers_white.xml │ └── shape_badge.xml │ ├── layout │ ├── activity_commit.xml │ ├── activity_content.xml │ ├── activity_file.xml │ ├── activity_issue.xml │ ├── activity_login.xml │ ├── activity_markdown_editor.xml │ ├── activity_milestone.xml │ ├── activity_milestones.xml │ ├── activity_project.xml │ ├── activity_repo.xml │ ├── activity_settings.xml │ ├── activity_simple_search.xml │ ├── activity_user.xml │ ├── dialog_new_column.xml │ ├── dialog_project.xml │ ├── dialog_save_shortcut.xml │ ├── fragment_column.xml │ ├── fragment_commit_info.xml │ ├── fragment_issue_info.xml │ ├── fragment_recycler.xml │ ├── fragment_repo_commits.xml │ ├── fragment_repo_info.xml │ ├── fragment_repo_issues.xml │ ├── fragment_repo_readme.xml │ ├── fragment_user_info.xml │ ├── shard_markdown_button.xml │ ├── shard_milestone.xml │ ├── shard_ribbon_item.xml │ ├── shard_user.xml │ ├── shard_user_info.xml │ ├── stub_card_editor.xml │ ├── stub_comment_editor.xml │ ├── stub_issue_editor.xml │ ├── stub_milestone_editor.xml │ ├── stub_project_editor.xml │ ├── viewholder_card.xml │ ├── viewholder_comment.xml │ ├── viewholder_commit.xml │ ├── viewholder_diff.xml │ ├── viewholder_event.xml │ ├── viewholder_gist.xml │ ├── viewholder_issue.xml │ ├── viewholder_milestone.xml │ ├── viewholder_node.xml │ ├── viewholder_project.xml │ ├── viewholder_repo.xml │ ├── viewholder_search_suggestion.xml │ ├── viewholder_text.xml │ └── viewholder_user.xml │ ├── menu │ ├── menu_activity.xml │ ├── menu_activity_search.xml │ ├── menu_card.xml │ ├── menu_card_issue.xml │ ├── menu_comment.xml │ ├── menu_issue.xml │ ├── menu_issues_filter.xml │ ├── menu_milestones_filter.xml │ └── menu_project.xml │ ├── mipmap-hdpi │ └── ic_launcher.png │ ├── mipmap-mdpi │ └── ic_launcher.png │ ├── mipmap-xhdpi │ └── ic_launcher.png │ ├── mipmap-xxhdpi │ └── ic_launcher.png │ ├── mipmap-xxxhdpi │ └── ic_launcher.png │ ├── values │ ├── attrs.xml │ ├── colors.xml │ ├── dimens.xml │ ├── ids.xml │ ├── strings.xml │ └── styles.xml │ └── xml │ └── image_paths.xml ├── build.gradle ├── codeiris └── codeIrisExport.json ├── contributionsview ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ └── main │ ├── AndroidManifest.xml │ ├── java │ └── com │ │ └── tpb │ │ └── contributionsview │ │ ├── ContributionsLoader.java │ │ └── ContributionsView.java │ └── res │ └── values │ ├── attrs.xml │ └── strings.xml ├── gitapi ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ └── main │ ├── AndroidManifest.xml │ ├── java │ └── com │ │ └── tpb │ │ └── github │ │ └── data │ │ ├── APIHandler.java │ │ ├── Editor.java │ │ ├── FileLoader.java │ │ ├── Loader.java │ │ ├── Uploader.java │ │ ├── Util.java │ │ ├── auth │ │ ├── GitHubSession.java │ │ └── OAuthHandler.java │ │ └── models │ │ ├── Card.java │ │ ├── Column.java │ │ ├── Comment.java │ │ ├── Commit.java │ │ ├── CompleteStatus.java │ │ ├── DataModel.java │ │ ├── DiffFile.java │ │ ├── Event.java │ │ ├── Gist.java │ │ ├── GistFile.java │ │ ├── Issue.java │ │ ├── IssueEvent.java │ │ ├── Label.java │ │ ├── MergedModel.java │ │ ├── Milestone.java │ │ ├── Notification.java │ │ ├── Page.java │ │ ├── Project.java │ │ ├── Reaction.java │ │ ├── Repository.java │ │ ├── State.java │ │ ├── Status.java │ │ ├── User.java │ │ └── content │ │ └── Node.java │ └── res │ └── values │ └── strings.xml ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── markdowntextview ├── .gitignore ├── .travis.yml ├── build.gradle └── src │ └── main │ ├── AndroidManifest.xml │ ├── assets │ ├── html │ │ ├── css │ │ │ ├── github-dark.css │ │ │ ├── github-gist.css │ │ │ └── github.css │ │ ├── js │ │ │ ├── highlight.pack.js │ │ │ └── md_preview.js │ │ ├── md_preview.html │ │ └── md_preview_dark.html │ └── json │ │ └── emojis.json │ ├── java │ └── com │ │ └── tpb │ │ └── mdtext │ │ ├── ClickableMovementMethod.java │ │ ├── HtmlTagHandler.java │ │ ├── MDPattern.java │ │ ├── Markdown.java │ │ ├── SpanCache.java │ │ ├── TextUtils.java │ │ ├── dialogs │ │ ├── CodeDialog.java │ │ ├── FillingImageView.java │ │ ├── ImageDialog.java │ │ └── TableDialog.java │ │ ├── emoji │ │ ├── Emoji.java │ │ └── EmojiLoader.java │ │ ├── handlers │ │ ├── CodeClickHandler.java │ │ ├── ImageClickHandler.java │ │ ├── LinkClickHandler.java │ │ └── TableClickHandler.java │ │ ├── imagegetter │ │ ├── AssetsImageGetter.java │ │ ├── HttpImageGetter.java │ │ └── ResImageGetter.java │ │ ├── views │ │ ├── MarkdownEditText.java │ │ ├── MarkdownTextView.java │ │ └── spans │ │ │ ├── CleanURLSpan.java │ │ │ ├── ClickableImageSpan.java │ │ │ ├── CodeSpan.java │ │ │ ├── HorizontalRuleSpan.java │ │ │ ├── InlineCodeSpan.java │ │ │ ├── ListNumberSpan.java │ │ │ ├── QuoteSpan.java │ │ │ ├── RoundedBackgroundEndSpan.java │ │ │ ├── TableSpan.java │ │ │ └── WrappingClickableSpan.java │ │ └── webview │ │ └── MarkdownWebView.java │ └── res │ ├── drawable │ ├── ic_code.xml │ └── ic_table.xml │ ├── layout │ ├── dialog_code.xml │ ├── dialog_image.xml │ └── dialog_table.xml │ └── values │ └── strings.xml ├── project.png ├── screenshots ├── assignment.png ├── editing.png ├── issue.png ├── issues.png ├── license.png ├── project.png ├── repo.png ├── repos.png └── user.png └── settings.gradle /.gitignore: -------------------------------------------------------------------------------- 1 | # Built application files 2 | *.apk 3 | *.ap_ 4 | 5 | # Files for the ART/Dalvik VM 6 | *.dex 7 | 8 | # Java class files 9 | *.class 10 | 11 | # Generated files 12 | bin/ 13 | gen/ 14 | out/ 15 | 16 | # Gradle files 17 | .gradle/ 18 | build/ 19 | 20 | # Local configuration file (sdk path, etc) 21 | local.properties 22 | 23 | gradle.properties 24 | 25 | # Proguard folder generated by Eclipse 26 | proguard/ 27 | 28 | # Log Files 29 | *.log 30 | 31 | # Android Studio Navigation editor temp files 32 | .navigation/ 33 | 34 | # Android Studio captures folder 35 | captures/ 36 | 37 | # Intellij 38 | *.iml 39 | .idea/workspace.xml 40 | 41 | # Keystore files 42 | *.jks 43 | 44 | github.pub 45 | github_projects 46 | github_projects.pub 47 | /app/google-services.json 48 | .idea/vcs.xml 49 | animatingrecycler/libs/ 50 | animatingrecycler/src/main/res/drawable/ 51 | app/google-services.json 52 | !/github/ 53 | !/github/src/main/java/ 54 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "CWDoc"] 2 | path = CWDoc 3 | url = git@github.com:tpb1908/CWDoc 4 | -------------------------------------------------------------------------------- /.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 23 | -------------------------------------------------------------------------------- /.idea/copyright/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /.idea/dictionaries/theo.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | usernames 5 | 6 | 7 | -------------------------------------------------------------------------------- /.idea/encodings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/gradle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 21 | 22 | -------------------------------------------------------------------------------- /.idea/inspectionProfiles/Project_Default.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 10 | -------------------------------------------------------------------------------- /.idea/inspectionProfiles/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | -------------------------------------------------------------------------------- /.idea/libraries/android_networking_1_0_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /.idea/libraries/animated_vector_drawable_25_3_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /.idea/libraries/appcompat_v7_25_3_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /.idea/libraries/butterknife_8_5_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /.idea/libraries/butterknife_annotations_8_5_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /.idea/libraries/cardview_v7_25_3_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /.idea/libraries/commonmark_0_8_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /.idea/libraries/commonmark_ext_gfm_strikethrough_0_8_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /.idea/libraries/commonmark_ext_gfm_tables_0_8_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /.idea/libraries/cwac_pager_0_2_5.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.idea/libraries/design_25_3_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /.idea/libraries/firebase_analytics_10_2_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /.idea/libraries/firebase_analytics_impl_10_2_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /.idea/libraries/firebase_common_10_2_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /.idea/libraries/firebase_core_10_2_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /.idea/libraries/firebase_crash_10_2_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /.idea/libraries/firebase_iid_10_2_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /.idea/libraries/gson_2_8_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /.idea/libraries/haha_2_0_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.idea/libraries/hamcrest_core_1_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /.idea/libraries/highlightjs_android_1_5_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /.idea/libraries/junit_4_12.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /.idea/libraries/leakcanary_analyzer_1_5.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.idea/libraries/leakcanary_android_1_5.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /.idea/libraries/leakcanary_android_no_op_1_5.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /.idea/libraries/leakcanary_watcher_1_5.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.idea/libraries/okhttp_3_6_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /.idea/libraries/okio_1_11_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /.idea/libraries/play_services_basement_10_2_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /.idea/libraries/play_services_tasks_10_2_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /.idea/libraries/recyclerview_animators_2_2_5.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/recyclerview_v7_25_3_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /.idea/libraries/support_annotations_25_3_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /.idea/libraries/support_compat_25_3_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /.idea/libraries/support_core_ui_25_3_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /.idea/libraries/support_core_utils_25_3_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /.idea/libraries/support_fragment_25_3_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /.idea/libraries/support_media_compat_25_3_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /.idea/libraries/support_v4_25_3_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /.idea/libraries/support_vector_drawable_25_3_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /.idea/libraries/transition_25_3_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /.idea/libraries/volley_1_0_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/markdown-exported-files.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.idea/markdown-navigator/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/runConfigurations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 12 | -------------------------------------------------------------------------------- /.idea/statistic.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 25 | 26 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: android 2 | jdk: oraclejdk8 3 | 4 | sudo: true 5 | 6 | # Handle git submodules yourself 7 | git: 8 | submodules: false 9 | # Use sed to replace the SSH URL with the public URL, then initialize submodules 10 | before_install: 11 | - sed -i 's/git@github.com:/https:\/\/github.com\//' .gitmodules 12 | - git submodule update --init --recursive 13 | 14 | android: 15 | components: 16 | 17 | - platform-tools 18 | - tools 19 | 20 | # The BuildTools version 21 | - build-tools-25.0.2 22 | 23 | # The SDK version 24 | - android-25 25 | 26 | # Additional components 27 | - extra-google-m2repository 28 | - extra-android-m2repository 29 | - addon-google_apis-google-25 30 | 31 | - sys-img-armeabi-v7a-android-23 32 | 33 | licenses: 34 | - 'android-sdk-preview-license-.+' 35 | - 'android-sdk-license-.+' 36 | - 'google-gdk-license-.+' 37 | - ".+" 38 | 39 | script: ./gradlew build 40 | 41 | cache: 42 | directories: 43 | - $HOME/.gradle/caches/ 44 | - $HOME/.gradle/wrapper/ 45 | - $HOME/.android/build-cache 46 | 47 | -------------------------------------------------------------------------------- /animatingrecycler/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /animatingrecycler/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.library' 2 | 3 | android { 4 | compileSdkVersion 25 5 | buildToolsVersion "25.0.2" 6 | 7 | lintOptions { 8 | abortOnError false 9 | } 10 | 11 | defaultConfig { 12 | minSdkVersion 16 13 | targetSdkVersion 25 14 | versionCode 1 15 | versionName "1.0" 16 | } 17 | buildTypes { 18 | release { 19 | minifyEnabled false 20 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 21 | } 22 | } 23 | } 24 | 25 | dependencies { 26 | compile fileTree(dir: 'libs', include: ['*.jar']) 27 | compile 'com.android.support:appcompat-v7:25.3.0' 28 | compile 'com.android.support:recyclerview-v7:25.3.0' 29 | compile 'jp.wasabeef:recyclerview-animators:2.2.5' 30 | } 31 | 32 | ext { 33 | PUBLISH_GROUP_ID = 'tpb.lib.animating-recycler' 34 | PUBLISH_ARTIFACT_ID = 'animating-recycler' 35 | PUBLISH_VERSION = '1.0' 36 | } 37 | 38 | 39 | -------------------------------------------------------------------------------- /animatingrecycler/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/theo/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 | -------------------------------------------------------------------------------- /animatingrecycler/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /animatingrecycler/src/main/java/com/tpb/animatingrecyclerview/AnimatingRecyclerView.java: -------------------------------------------------------------------------------- 1 | package com.tpb.animatingrecyclerview; 2 | 3 | import android.content.Context; 4 | import android.support.v7.widget.DividerItemDecoration; 5 | import android.support.v7.widget.RecyclerView; 6 | import android.util.AttributeSet; 7 | 8 | import jp.wasabeef.recyclerview.animators.FadeInDownAnimator; 9 | 10 | /** 11 | * Created by theo on 17/12/16. 12 | */ 13 | 14 | public class AnimatingRecyclerView extends RecyclerView { 15 | 16 | private ItemDecoration mItemDecoration; 17 | 18 | public AnimatingRecyclerView(Context context) { 19 | super(context); 20 | setItemAnimator(new FadeInDownAnimator()); 21 | } 22 | 23 | public AnimatingRecyclerView(Context context, AttributeSet attrs) { 24 | this(context, attrs, 0); 25 | setItemAnimator(new FadeInDownAnimator()); 26 | } 27 | 28 | public AnimatingRecyclerView(Context context, AttributeSet attrs, int defStyle) { 29 | super(context, attrs, defStyle); 30 | setItemAnimator(new FadeInDownAnimator()); 31 | } 32 | 33 | public void enableLineDecoration() { 34 | disableItemDecoration(); 35 | mItemDecoration = new DividerItemDecoration(getContext(), DividerItemDecoration.VERTICAL); 36 | addItemDecoration(mItemDecoration); 37 | } 38 | 39 | public void disableItemDecoration() { 40 | removeItemDecoration(mItemDecoration); 41 | } 42 | 43 | } 44 | -------------------------------------------------------------------------------- /animatingrecycler/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | AnimatingRecyclerView 3 | 4 | -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /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/theo/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 | -------------------------------------------------------------------------------- /app/src/main/java/com/tpb/projects/commits/fragments/CommitFragment.java: -------------------------------------------------------------------------------- 1 | package com.tpb.projects.commits.fragments; 2 | 3 | import com.tpb.github.data.models.Commit; 4 | import com.tpb.projects.commits.CommitActivity; 5 | import com.tpb.projects.common.ViewSafeFragment; 6 | 7 | /** 8 | * Created by theo on 30/03/17. 9 | */ 10 | 11 | public abstract class CommitFragment extends ViewSafeFragment { 12 | 13 | protected Commit mCommit; 14 | 15 | public abstract void commitLoaded(Commit commit); 16 | 17 | public CommitActivity getParent() { 18 | return (CommitActivity) getActivity(); 19 | } 20 | 21 | @Override 22 | public void onDestroyView() { 23 | super.onDestroyView(); 24 | mAreViewsValid = false; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /app/src/main/java/com/tpb/projects/common/FixedLinearLayoutManger.java: -------------------------------------------------------------------------------- 1 | package com.tpb.projects.common; 2 | 3 | import android.content.Context; 4 | import android.support.v7.widget.LinearLayoutManager; 5 | 6 | /** 7 | * Created by theo on 31/03/17. 8 | */ 9 | 10 | public class FixedLinearLayoutManger extends LinearLayoutManager { 11 | 12 | public FixedLinearLayoutManger(Context context) { 13 | super(context); 14 | } 15 | 16 | 17 | @Override 18 | public boolean supportsPredictiveItemAnimations() { 19 | return false; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /app/src/main/java/com/tpb/projects/common/LockableViewPager.java: -------------------------------------------------------------------------------- 1 | package com.tpb.projects.common; 2 | 3 | import android.content.Context; 4 | import android.support.v4.view.ViewPager; 5 | import android.util.AttributeSet; 6 | import android.view.MotionEvent; 7 | 8 | /** 9 | * Created by theo on 15/04/17. 10 | */ 11 | 12 | public class LockableViewPager extends ViewPager { 13 | 14 | private boolean isPagingEnabled = true; 15 | 16 | public LockableViewPager(Context context) { 17 | super(context); 18 | } 19 | 20 | public LockableViewPager(Context context, AttributeSet attrs) { 21 | super(context, attrs); 22 | } 23 | 24 | @Override 25 | public boolean onTouchEvent(MotionEvent event) { 26 | return this.isPagingEnabled && super.onTouchEvent(event); 27 | } 28 | 29 | @Override 30 | public boolean onInterceptTouchEvent(MotionEvent event) { 31 | return this.isPagingEnabled && super.onInterceptTouchEvent(event); 32 | } 33 | 34 | public void setPagingEnabled(boolean b) { 35 | this.isPagingEnabled = b; 36 | } 37 | 38 | } 39 | -------------------------------------------------------------------------------- /app/src/main/java/com/tpb/projects/common/ViewSafeFragment.java: -------------------------------------------------------------------------------- 1 | package com.tpb.projects.common; 2 | 3 | import android.support.v4.app.Fragment; 4 | 5 | /** 6 | * Created by theo on 11/04/17. 7 | */ 8 | 9 | public class ViewSafeFragment extends Fragment { 10 | 11 | protected boolean mAreViewsValid; 12 | 13 | protected boolean areViewsValid() { 14 | return mAreViewsValid && getActivity() != null; 15 | } 16 | 17 | @Override 18 | public void onDestroyView() { 19 | super.onDestroyView(); 20 | mAreViewsValid = false; 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /app/src/main/java/com/tpb/projects/common/fab/FabHideScrollListener.java: -------------------------------------------------------------------------------- 1 | package com.tpb.projects.common.fab; 2 | 3 | import android.support.v7.widget.RecyclerView; 4 | 5 | /** 6 | * Created by theo on 25/03/17. 7 | */ 8 | 9 | public class FabHideScrollListener extends RecyclerView.OnScrollListener { 10 | 11 | private FloatingActionButton mFab; 12 | 13 | public FabHideScrollListener(FloatingActionButton fab) { 14 | mFab = fab; 15 | } 16 | 17 | public void setFab(FloatingActionButton fab) { 18 | mFab = fab; 19 | } 20 | 21 | @Override 22 | public void onScrolled(RecyclerView recyclerView, int dx, int dy) { 23 | super.onScrolled(recyclerView, dx, dy); 24 | if(mFab == null) return; 25 | if(dy > 10) { 26 | mFab.hide(true); 27 | } else if(dy < -10) { 28 | mFab.show(true); 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /app/src/main/java/com/tpb/projects/editors/KeyboardDismissingDialogFragment.java: -------------------------------------------------------------------------------- 1 | package com.tpb.projects.editors; 2 | 3 | import android.content.Context; 4 | import android.os.Bundle; 5 | import android.support.v4.app.DialogFragment; 6 | import android.view.inputmethod.InputMethodManager; 7 | 8 | import com.tpb.projects.R; 9 | 10 | /** 11 | * Created by theo on 31/12/16. 12 | */ 13 | 14 | public abstract class KeyboardDismissingDialogFragment extends DialogFragment { 15 | 16 | 17 | @Override 18 | public void dismiss() { 19 | //Check if a text input is focused 20 | if(getDialog().getCurrentFocus() != null) { 21 | final InputMethodManager imm = (InputMethodManager) getContext() 22 | .getSystemService(Context.INPUT_METHOD_SERVICE); 23 | //Close the keyboard with the window token of the focused text input 24 | imm.hideSoftInputFromWindow(getDialog().getCurrentFocus().getWindowToken(), 25 | InputMethodManager.HIDE_NOT_ALWAYS 26 | ); 27 | } 28 | super.dismiss(); 29 | } 30 | 31 | //Does the same as dismiss 32 | @Override 33 | public void dismissAllowingStateLoss() { 34 | if(getDialog().getCurrentFocus() != null) { 35 | final InputMethodManager imm = (InputMethodManager) getContext() 36 | .getSystemService(Context.INPUT_METHOD_SERVICE); 37 | imm.hideSoftInputFromWindow(getDialog().getCurrentFocus().getWindowToken(), 38 | InputMethodManager.HIDE_NOT_ALWAYS 39 | ); 40 | } 41 | super.dismissAllowingStateLoss(); 42 | } 43 | 44 | @Override 45 | public void onActivityCreated(Bundle savedInstanceState) { 46 | super.onActivityCreated(savedInstanceState); 47 | //Enable the slide in animation 48 | getDialog().getWindow().getAttributes().windowAnimations = R.style.DialogAnimation; 49 | } 50 | 51 | } 52 | -------------------------------------------------------------------------------- /app/src/main/java/com/tpb/projects/flow/ProjectsApplication.java: -------------------------------------------------------------------------------- 1 | package com.tpb.projects.flow; 2 | 3 | import android.app.Application; 4 | 5 | import com.androidnetworking.AndroidNetworking; 6 | import com.google.firebase.analytics.FirebaseAnalytics; 7 | import com.squareup.leakcanary.LeakCanary; 8 | import com.tpb.mdtext.emoji.EmojiLoader; 9 | import com.tpb.projects.BuildConfig; 10 | import com.tpb.projects.util.Logger; 11 | import com.tpb.projects.util.SettingsActivity; 12 | 13 | import okhttp3.OkHttpClient; 14 | 15 | /** 16 | * Created by theo on 05/03/17. 17 | */ 18 | 19 | public class ProjectsApplication extends Application { 20 | 21 | public static FirebaseAnalytics mAnalytics; 22 | 23 | @Override 24 | public void onCreate() { 25 | super.onCreate(); 26 | if(LeakCanary.isInAnalyzerProcess(this)) return; //Heap analysis process, not our stuff 27 | if(BuildConfig.IS_IN_DEBUG) { 28 | LeakCanary.install(this); 29 | AndroidNetworking.initialize(this, new OkHttpClient.Builder() 30 | .addNetworkInterceptor(new Logger.LoggingInterceptor()).build()); 31 | } else { 32 | AndroidNetworking.initialize(this); 33 | } 34 | EmojiLoader.loadEmojis(getAssets()); 35 | mAnalytics = FirebaseAnalytics.getInstance(this); 36 | mAnalytics.setAnalyticsCollectionEnabled(SettingsActivity.Preferences.getPreferences(this).areAnalyticsEnabled()); 37 | } 38 | 39 | } 40 | -------------------------------------------------------------------------------- /app/src/main/java/com/tpb/projects/issues/fragments/IssueFragment.java: -------------------------------------------------------------------------------- 1 | package com.tpb.projects.issues.fragments; 2 | 3 | import com.tpb.github.data.models.Issue; 4 | import com.tpb.github.data.models.Repository; 5 | import com.tpb.projects.common.ViewSafeFragment; 6 | 7 | /** 8 | * Created by theo on 14/03/17. 9 | */ 10 | 11 | public abstract class IssueFragment extends ViewSafeFragment { 12 | 13 | public abstract void issueLoaded(Issue issue); 14 | 15 | public abstract void setAccessLevel(Repository.AccessLevel level); 16 | 17 | } 18 | -------------------------------------------------------------------------------- /app/src/main/java/com/tpb/projects/notifications/receivers/NotificationEventReceiver.java: -------------------------------------------------------------------------------- 1 | package com.tpb.projects.notifications.receivers; 2 | 3 | import android.app.AlarmManager; 4 | import android.app.PendingIntent; 5 | import android.content.Context; 6 | import android.content.Intent; 7 | import android.support.annotation.IntRange; 8 | import android.support.v4.content.WakefulBroadcastReceiver; 9 | 10 | import com.tpb.projects.notifications.NotificationIntentService; 11 | import com.tpb.projects.util.Logger; 12 | 13 | import java.util.Date; 14 | 15 | /** 16 | * Created by theo on 04/04/17. 17 | */ 18 | 19 | public class NotificationEventReceiver extends WakefulBroadcastReceiver { 20 | 21 | private static final String ACTION_START_NOTIFICATION_SERVICE = "ACTION_START_NOTIFICATION_SERVICE"; 22 | 23 | private static int NOTIFICATIONS_INTERVAL_IN_MINUTES = 1; 24 | 25 | public static void setupAlarm(Context context) { 26 | final AlarmManager alarmManager = (AlarmManager) context 27 | .getSystemService(Context.ALARM_SERVICE); 28 | final PendingIntent alarmIntent = getStartPendingIntent(context); 29 | alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, 30 | new Date().getTime(), 31 | NOTIFICATIONS_INTERVAL_IN_MINUTES * 60000, 32 | alarmIntent 33 | ); 34 | } 35 | 36 | private static PendingIntent getStartPendingIntent(Context context) { 37 | final Intent intent = new Intent(context, NotificationEventReceiver.class); 38 | intent.setAction(ACTION_START_NOTIFICATION_SERVICE); 39 | return PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); 40 | } 41 | 42 | public static void setUpdateInterval(@IntRange(from = 1, to = 60) int minutes) { 43 | NOTIFICATIONS_INTERVAL_IN_MINUTES = minutes; 44 | } 45 | 46 | 47 | @Override 48 | public void onReceive(Context context, Intent intent) { 49 | final String action = intent.getAction(); 50 | if(ACTION_START_NOTIFICATION_SERVICE.equals(action)) { 51 | Logger.i(getClass().getSimpleName(), 52 | "onReceive from alarm, starting notification service" 53 | ); 54 | // Start the service, keeping the device awake while it is launching. 55 | startWakefulService(context, 56 | NotificationIntentService.createIntentStartNotificationService(context) 57 | ); 58 | } 59 | 60 | } 61 | } -------------------------------------------------------------------------------- /app/src/main/java/com/tpb/projects/notifications/receivers/NotificationServiceStartBroadcastReceiver.java: -------------------------------------------------------------------------------- 1 | package com.tpb.projects.notifications.receivers; 2 | 3 | import android.content.BroadcastReceiver; 4 | import android.content.Context; 5 | import android.content.Intent; 6 | 7 | /** 8 | * Created by theo on 04/04/17. 9 | */ 10 | 11 | public final class NotificationServiceStartBroadcastReceiver extends BroadcastReceiver { 12 | 13 | @Override 14 | public void onReceive(Context context, Intent intent) { 15 | NotificationEventReceiver.setupAlarm(context); 16 | } 17 | } -------------------------------------------------------------------------------- /app/src/main/java/com/tpb/projects/repo/fragments/RepoFragment.java: -------------------------------------------------------------------------------- 1 | package com.tpb.projects.repo.fragments; 2 | 3 | import android.os.Bundle; 4 | import android.support.annotation.Nullable; 5 | 6 | import com.tpb.github.data.models.Repository; 7 | import com.tpb.projects.R; 8 | import com.tpb.projects.common.ViewSafeFragment; 9 | import com.tpb.projects.common.fab.FloatingActionButton; 10 | import com.tpb.projects.repo.RepoActivity; 11 | 12 | /** 13 | * Created by theo on 25/03/17. 14 | */ 15 | 16 | public abstract class RepoFragment extends ViewSafeFragment { 17 | 18 | protected Repository mRepo; 19 | 20 | public abstract void repoLoaded(Repository repo); 21 | 22 | public abstract void handleFab(FloatingActionButton fab); 23 | 24 | public abstract void notifyBackPressed(); 25 | 26 | public boolean areViewsValid() { 27 | return mAreViewsValid; 28 | } 29 | 30 | @Override 31 | public void onActivityCreated(@Nullable Bundle savedInstanceState) { 32 | super.onActivityCreated(savedInstanceState); 33 | if(savedInstanceState != null && savedInstanceState 34 | .containsKey(getString(R.string.intent_repo))) { 35 | mRepo = savedInstanceState.getParcelable(getString(R.string.intent_repo)); 36 | repoLoaded(mRepo); 37 | } 38 | } 39 | 40 | @Override 41 | public void onSaveInstanceState(Bundle outState) { 42 | super.onSaveInstanceState(outState); 43 | outState.putParcelable(getString(R.string.intent_repo), mRepo); 44 | } 45 | 46 | protected RepoActivity getParent() { 47 | return (RepoActivity) getActivity(); 48 | } 49 | 50 | } 51 | -------------------------------------------------------------------------------- /app/src/main/java/com/tpb/projects/user/fragments/UserFragment.java: -------------------------------------------------------------------------------- 1 | package com.tpb.projects.user.fragments; 2 | 3 | import android.os.Bundle; 4 | import android.support.annotation.Nullable; 5 | 6 | import com.tpb.github.data.models.User; 7 | import com.tpb.projects.R; 8 | import com.tpb.projects.common.ViewSafeFragment; 9 | import com.tpb.projects.user.UserActivity; 10 | 11 | /** 12 | * Created by theo on 10/03/17. 13 | */ 14 | 15 | public abstract class UserFragment extends ViewSafeFragment { 16 | 17 | protected User mUser; 18 | 19 | public abstract void userLoaded(User user); 20 | 21 | protected UserActivity getParent() { 22 | return (UserActivity) getActivity(); 23 | } 24 | 25 | @Override 26 | public void onActivityCreated(@Nullable Bundle savedInstanceState) { 27 | super.onActivityCreated(savedInstanceState); 28 | if(savedInstanceState != null && savedInstanceState 29 | .containsKey(getString(R.string.parcel_user))) { 30 | mUser = savedInstanceState.getParcelable(getString(R.string.parcel_user)); 31 | userLoaded(mUser); 32 | } 33 | } 34 | 35 | @Override 36 | public void onSaveInstanceState(Bundle outState) { 37 | super.onSaveInstanceState(outState); 38 | outState.putParcelable(getString(R.string.parcel_user), mUser); 39 | } 40 | 41 | } 42 | -------------------------------------------------------------------------------- /app/src/main/java/com/tpb/projects/util/Analytics.java: -------------------------------------------------------------------------------- 1 | package com.tpb.projects.util; 2 | 3 | /** 4 | * Created by theo on 25/12/16. 5 | */ 6 | 7 | public class Analytics { 8 | 9 | public static final String KEY_LOAD_STATUS = "LOAD_STATUS"; 10 | public static final String KEY_EDIT_STATUS = "EDIT_STATUS"; 11 | public static final String VALUE_SUCCESS = "SUCCESS"; 12 | public static final String VALUE_FAILURE = "FAILURE"; 13 | 14 | public static final String TAG_LOGIN = "LOGIN"; 15 | 16 | public static final String TAG_OPEN_REPOS_ACTIVITY = "OPEN_REPOS_ACTIVITY"; 17 | public static final String TAG_OPEN_REPO = "OPEN_REPO"; 18 | 19 | public static final String TAG_REPO_ACTIVITY = "REPO_ACTIVITY"; 20 | public static final String KEY_PROJECT_COUNT = "PROJECT_COUNT"; 21 | 22 | public static final String TAG_PROJECT_CREATION = "PROJECT_CREATION"; 23 | 24 | public static final String TAG_PROJECT_DELETION = "PROJECT_DELETION"; 25 | 26 | public static final String TAG_PROJECT_EDIT = "PROJECT_EDIT"; 27 | 28 | public static final String TAG_PROJECT_LOADED = "PROJECT_LOADED"; 29 | 30 | public static final String TAG_COLUMNS_LOADED = "COLUMNS_LOADED"; 31 | public static final String KEY_COLUMN_COUNT = "COLUMN_COUNT"; 32 | 33 | public static final String TAG_COLUMN_ADD = "COLUMN_ADD"; 34 | 35 | public static final String TAG_COLUMN_DELETE = "COLUMN_DELETE"; 36 | 37 | public static final String TAG_CARD_CREATION = "CARD_CREATION"; 38 | 39 | public static final String TAG_COLUMN_NAME_CHANGE = "COLUMN_NAME_CHANGE"; 40 | public static final String TAG_CARDS_LOADED = "CARDS_LOADED"; 41 | 42 | public static final String TAG_ISSUE_LOADED = "ISSUE_LOADED"; 43 | 44 | public static final String TAG_CARD_TO_ISSUE = "CARD_TO_ISSUE"; 45 | 46 | public static final String TAG_CARD_DELETION = "CARD_DELETION"; 47 | 48 | public static final String TAG_CARD_EDIT = "CARD_EDIT"; 49 | 50 | public static final String TAG_ISSUE_CREATED = "ISSUE_CREATED"; 51 | 52 | public static final String TAG_ISSUE_OPENED = "ISSUE_OPENED"; 53 | 54 | public static final String TAG_ISSUE_CLOSED = "ISSUE_CLOSED"; 55 | 56 | public static final String TAG_ISSUE_EDIT = "ISSUE_EDITED"; 57 | 58 | } 59 | -------------------------------------------------------------------------------- /app/src/main/java/com/tpb/projects/util/input/KeyBoardVisibilityChecker.java: -------------------------------------------------------------------------------- 1 | package com.tpb.projects.util.input; 2 | 3 | import android.graphics.Rect; 4 | import android.support.annotation.NonNull; 5 | import android.support.annotation.Nullable; 6 | import android.view.View; 7 | 8 | /** 9 | * Created by theo on 21/02/17. 10 | * Utility for listening for keyboard state 11 | */ 12 | 13 | public class KeyBoardVisibilityChecker { 14 | 15 | private boolean mIsKeyboardOpen = false; 16 | 17 | public KeyBoardVisibilityChecker(@NonNull View content) { 18 | this(content, null); 19 | } 20 | 21 | public KeyBoardVisibilityChecker(@NonNull View content, @Nullable KeyBoardVisibilityListener listener) { 22 | content.getViewTreeObserver().addOnGlobalLayoutListener(() -> { 23 | final Rect r = new Rect(); 24 | content.getWindowVisibleDisplayFrame(r); 25 | final int screenHeight = content.getRootView().getHeight(); 26 | 27 | // r.bottom is the position above soft keypad or device button. 28 | // if keypad is shown, the r.bottom is smaller than that before. 29 | final int kbHeight = screenHeight - r.bottom; 30 | 31 | if(kbHeight > screenHeight * 0.15) { // 0.15 ratio is perhaps enough to determine keypad height. 32 | mIsKeyboardOpen = true; 33 | if(listener != null) listener.keyboardShown(); 34 | } else { 35 | mIsKeyboardOpen = false; 36 | if(listener != null) listener.keyboardHidden(); 37 | } 38 | }); 39 | } 40 | 41 | public boolean isKeyboardOpen() { 42 | return mIsKeyboardOpen; 43 | } 44 | 45 | /** 46 | * Interface for listening to {@link KeyBoardVisibilityChecker} 47 | */ 48 | public interface KeyBoardVisibilityListener { 49 | 50 | void keyboardShown(); 51 | 52 | void keyboardHidden(); 53 | 54 | } 55 | 56 | } 57 | -------------------------------------------------------------------------------- /app/src/main/java/com/tpb/projects/util/input/SimpleTextChangeWatcher.java: -------------------------------------------------------------------------------- 1 | package com.tpb.projects.util.input; 2 | 3 | import android.text.Editable; 4 | import android.text.TextWatcher; 5 | 6 | /** 7 | * Created by theo on 24/02/17. 8 | * Simplified TextWatcher which updates onTextChanged 9 | */ 10 | 11 | public abstract class SimpleTextChangeWatcher implements TextWatcher { 12 | 13 | @Override 14 | public final void beforeTextChanged(CharSequence s, int start, int count, int after) { 15 | } 16 | 17 | @Override 18 | public final void afterTextChanged(Editable s) { 19 | } 20 | 21 | @Override 22 | public final void onTextChanged(CharSequence s, int start, int before, int count) { 23 | textChanged(); 24 | } 25 | 26 | /** 27 | * Called onTextChanged 28 | */ 29 | public abstract void textChanged(); 30 | } 31 | -------------------------------------------------------------------------------- /app/src/main/java/com/tpb/projects/util/search/ArrayFilter.java: -------------------------------------------------------------------------------- 1 | package com.tpb.projects.util.search; 2 | 3 | import android.widget.ArrayAdapter; 4 | import android.widget.Filter; 5 | 6 | import java.util.ArrayList; 7 | import java.util.List; 8 | 9 | /** 10 | * Created by theo on 05/02/17. 11 | */ 12 | 13 | public class ArrayFilter extends Filter { 14 | 15 | private final ArrayAdapter mParent; 16 | private final FuzzyStringSearcher mSearcher; 17 | private final List mData; 18 | private List mFiltered; 19 | 20 | public ArrayFilter(ArrayAdapter parent, FuzzyStringSearcher searcher, List data) { 21 | mParent = parent; 22 | mSearcher = searcher; 23 | mData = data; 24 | mFiltered = new ArrayList<>(); 25 | } 26 | 27 | public List getFiltered() { 28 | return mFiltered; 29 | } 30 | 31 | @Override 32 | protected FilterResults performFiltering(CharSequence charSequence) { 33 | final FilterResults results = new FilterResults(); 34 | if(charSequence == null) { 35 | results.values = new ArrayList(); 36 | results.count = 0; 37 | } else { 38 | final List positions = mSearcher.search(charSequence.toString()); 39 | final ArrayList items = new ArrayList<>(positions.size()); 40 | 41 | for(int i : positions) { 42 | items.add(mData.get(i)); 43 | } 44 | results.values = items; 45 | results.count = items.size(); 46 | } 47 | return results; 48 | } 49 | 50 | @Override 51 | protected void publishResults(CharSequence charSequence, FilterResults filterResults) { 52 | mFiltered = (List) filterResults.values; 53 | if(filterResults.count > 0) { 54 | mParent.notifyDataSetChanged(); 55 | } else { 56 | mParent.notifyDataSetInvalidated(); 57 | } 58 | } 59 | 60 | } 61 | -------------------------------------------------------------------------------- /app/src/main/lib/cwac-pager-0.2.5.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tpb1908/AndroidProjectsClient/19f874ca5cd17a9802101e92b2f1c3db94869b07/app/src/main/lib/cwac-pager-0.2.5.jar -------------------------------------------------------------------------------- /app/src/main/res/anim/fab_scale_down.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/anim/fab_scale_up.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/anim/fab_slide_in_from_left.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 8 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/anim/fab_slide_in_from_right.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 8 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/anim/fab_slide_out_to_left.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 8 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/anim/fab_slide_out_to_right.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 8 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/anim/none.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/anim/slide_down.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/anim/slide_up.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_add.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_arrow_back.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_avatar_default.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_bio.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_blog.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_bug.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_cancel.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_changelog.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_character.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_check.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_check_box_checked.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_check_box_empty.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_chevron_down.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_chevron_right.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_column.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_comment_white.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_company.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_database.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_date.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_delete.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_done.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_edit.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_email.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_email_grey.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_emoticon.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_failure.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_file.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_filter.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_folder.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_forked.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_format_bold.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_format_code.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_format_italic.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_format_list_bulleted.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_format_list_numbered.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_format_quote.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_format_strikethrough.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_gist.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_github.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_group_add_white.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_horizontal_rule.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_insert_link.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_issue.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_issue_white.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_license.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_licenses.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_loading.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_location.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_mention_white.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_not_pinned.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_note.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_person.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_person_grey.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_person_white.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_photo.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_pinned.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_preview.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_reply.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_repo.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_search.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_stars.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_state_closed.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_state_open.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_version.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_watchers.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_watchers_white.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/shape_badge.xml: -------------------------------------------------------------------------------- 1 | 3 | 5 | 7 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_file.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 12 | 13 | 17 | 18 | 25 | 26 | 36 | 37 | 38 | 39 | 40 | 41 | 47 | 48 | 55 | 56 | 57 | 58 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_login.xml: -------------------------------------------------------------------------------- 1 | 15 | 16 | 17 | 25 | 26 | 31 | 32 | 33 | 34 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_simple_search.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 11 | 12 | 16 | 17 | 24 | 25 | 32 | 33 | 34 | 35 | 36 | 37 | 43 | 44 | 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /app/src/main/res/layout/dialog_new_column.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 18 | 19 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /app/src/main/res/layout/dialog_project.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 11 | 12 | 23 | 24 | 37 | 38 | 46 | 47 | 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /app/src/main/res/layout/dialog_save_shortcut.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 17 | 18 | 25 | 26 | 27 | 28 | 36 | 37 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_recycler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 10 | 11 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_repo_commits.xml: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 | 15 | 16 | 20 | 21 | 26 | 27 | 28 | 29 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_repo_readme.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 9 | 10 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /app/src/main/res/layout/shard_markdown_button.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/layout/shard_milestone.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/layout/shard_ribbon_item.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/src/main/res/layout/shard_user.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 14 | 15 | 21 | 22 | -------------------------------------------------------------------------------- /app/src/main/res/layout/shard_user_info.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 14 | 15 | 22 | 23 | 31 | 32 | 33 | 34 | 42 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /app/src/main/res/layout/stub_card_editor.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 17 | 18 | 27 | 28 | 29 | 30 |