From a8aa669c42e7a982990ce427924a1af64821e2b7 Mon Sep 17 00:00:00 2001 From: Kosh Date: Sat, 24 Jun 2017 18:58:46 +0800 Subject: [PATCH] this commit fixes #696 fixes #694 fixes #693 fixes #587 fixes #507 fixes #444 this commit also adds support for adding inline commit comments as mentioned in #323 it also adds almost finished job as per #496 , it also adds custom themes for code and other overall improvements. --- README.md | 54 ++++--- app/src/main/AndroidManifest.xml | 4 + app/src/main/assets/highlight/js/scrollto.js | 10 +- .../main/assets/highlight/styles/prettify.css | 18 --- .../assets/highlight/styles/prettify_dark.css | 18 --- .../assets/highlight/styles/themes/agate.css | 107 ++++++++++++++ .../highlight/styles/themes/androidstudio.css | 65 +++++++++ .../highlight/styles/themes/arduino-light.css | 87 ++++++++++++ .../assets/highlight/styles/themes/arta.css | 73 ++++++++++ .../highlight/styles/themes/ascetic.css | 44 ++++++ .../styles/themes/atelier-cave-dark.css | 83 +++++++++++ .../styles/themes/atelier-cave-light.css | 85 +++++++++++ .../styles/themes/atelier-dune-dark.css | 69 +++++++++ .../styles/themes/atelier-dune-light.css | 69 +++++++++ .../styles/themes/atelier-estuary-dark.css | 84 +++++++++++ .../styles/themes/atelier-estuary-light.css | 84 +++++++++++ .../styles/themes/atelier-forest-dark.css | 69 +++++++++ .../styles/themes/atelier-forest-light.css | 69 +++++++++ .../styles/themes/atelier-heath-dark.css | 69 +++++++++ .../styles/themes/atelier-heath-light.css | 69 +++++++++ .../styles/themes/atelier-lakeside-dark.css | 69 +++++++++ .../styles/themes/atelier-lakeside-light.css | 69 +++++++++ .../styles/themes/atelier-plateau-dark.css | 84 +++++++++++ .../styles/themes/atelier-plateau-light.css | 84 +++++++++++ .../styles/themes/atelier-savanna-dark.css | 84 +++++++++++ .../styles/themes/atelier-savanna-light.css | 84 +++++++++++ .../styles/themes/atelier-seaside-dark.css | 69 +++++++++ .../styles/themes/atelier-seaside-light.css | 69 +++++++++ .../themes/atelier-sulphurpool-dark.css | 69 +++++++++ .../themes/atelier-sulphurpool-light.css | 69 +++++++++ .../highlight/styles/themes/atom-one-dark.css | 96 +++++++++++++ .../styles/themes/atom-one-light.css | 96 +++++++++++++ .../highlight/styles/themes/brown-paper.css | 63 +++++++++ .../highlight/styles/themes/codepen-embed.css | 60 ++++++++ .../highlight/styles/themes/color-brewer.css | 71 ++++++++++ .../highlight/styles/themes/darcula.css | 77 ++++++++++ .../assets/highlight/styles/themes/dark.css | 63 +++++++++ .../highlight/styles/themes/darkula.css | 6 + .../highlight/styles/themes/default.css | 99 +++++++++++++ .../assets/highlight/styles/themes/docco.css | 97 +++++++++++++ .../highlight/styles/themes/dracula.css | 76 ++++++++++ .../assets/highlight/styles/themes/far.css | 71 ++++++++++ .../highlight/styles/themes/foundation.css | 88 ++++++++++++ .../highlight/styles/themes/github-gist.css | 70 ++++++++++ .../assets/highlight/styles/themes/github.css | 99 +++++++++++++ .../highlight/styles/themes/googlecode.css | 88 ++++++++++++ .../highlight/styles/themes/grayscale.css | 100 +++++++++++++ .../highlight/styles/themes/gruvbox-dark.css | 108 ++++++++++++++ .../highlight/styles/themes/gruvbox-light.css | 108 ++++++++++++++ .../highlight/styles/themes/hopscotch.css | 83 +++++++++++ .../assets/highlight/styles/themes/hybrid.css | 102 ++++++++++++++ .../assets/highlight/styles/themes/idea.css | 97 +++++++++++++ .../highlight/styles/themes/ir-black.css | 73 ++++++++++ .../highlight/styles/themes/kimbie.dark.css | 74 ++++++++++ .../highlight/styles/themes/kimbie.light.css | 74 ++++++++++ .../assets/highlight/styles/themes/magula.css | 69 +++++++++ .../highlight/styles/themes/mono-blue.css | 59 ++++++++ .../styles/themes/monokai-sublime.css | 83 +++++++++++ .../highlight/styles/themes/monokai.css | 70 ++++++++++ .../highlight/styles/themes/obsidian.css | 88 ++++++++++++ .../assets/highlight/styles/themes/ocean.css | 74 ++++++++++ .../highlight/styles/themes/paraiso-dark.css | 72 ++++++++++ .../highlight/styles/themes/paraiso-light.css | 72 ++++++++++ .../highlight/styles/themes/pojoaque.css | 82 +++++++++++ .../highlight/styles/themes/purebasic.css | 96 +++++++++++++ .../styles/themes/qtcreator_dark.css | 83 +++++++++++ .../styles/themes/qtcreator_light.css | 83 +++++++++++ .../highlight/styles/themes/railscasts.css | 106 ++++++++++++++ .../highlight/styles/themes/rainbow.css | 85 +++++++++++ .../highlight/styles/themes/routeros.css | 108 ++++++++++++++ .../highlight/styles/themes/school-book.css | 66 +++++++++ .../styles/themes/solarized-dark.css | 84 +++++++++++ .../styles/themes/solarized-light.css | 84 +++++++++++ .../highlight/styles/themes/sunburst.css | 101 ++++++++++++++ .../styles/themes/tomorrow-night-blue.css | 75 ++++++++++ .../styles/themes/tomorrow-night-bright.css | 73 ++++++++++ .../styles/themes/tomorrow-night-eighties.css | 74 ++++++++++ .../styles/themes/tomorrow-night.css | 75 ++++++++++ .../highlight/styles/themes/tomorrow.css | 71 ++++++++++ .../assets/highlight/styles/themes/vs.css | 67 +++++++++ .../assets/highlight/styles/themes/vs2015.css | 115 +++++++++++++++ .../assets/highlight/styles/themes/xcode.css | 92 ++++++++++++ .../assets/highlight/styles/themes/xt256.css | 92 ++++++++++++ .../highlight/styles/themes/zenburn.css | 80 +++++++++++ app/src/main/java/com/fastaccess/App.java | 5 +- .../data/dao/CommentRequestModel.java | 31 +++- .../data/dao/CommitFileChanges.java | 61 ++++++++ .../fastaccess/data/dao/CommitLinesModel.java | 106 ++++++++++++++ .../data/dao/FragmentPagerAdapterModel.java | 12 +- .../data/dao/MergeRequestModel.java | 1 + .../data/dao/ReviewRequestModel.java | 45 ++++++ .../fastaccess/data/dao/SettingsModel.java | 4 +- .../data/service/PullRequestService.java | 2 +- .../fastaccess/data/service/RepoService.java | 1 + .../data/service/ReviewService.java | 7 +- .../java/com/fastaccess/helper/AppHelper.java | 1 - .../com/fastaccess/helper/PrefGetter.java | 9 ++ .../provider/scheme/SchemeParser.java | 11 +- .../provider/timeline/HtmlHelper.java | 3 +- .../ui/adapter/CommitFilesAdapter.java | 22 +-- .../ui/adapter/CommitLinesAdapter.java | 28 ++++ .../fastaccess/ui/adapter/SpinnerAdapter.java | 74 ++++++++++ .../viewholder/CommitFilesViewHolder.java | 113 --------------- .../viewholder/CommitLinesViewHolder.java | 69 +++++++++ .../PullRequestFilesViewHolder.java | 132 ++++++++++++++++++ .../ui/modules/code/CodeViewerActivity.java | 8 +- .../ui/modules/editor/EditorActivity.java | 4 +- .../gists/create/CreateGistActivity.java | 21 +++ .../ui/modules/repos/RepoPagerActivity.java | 7 +- .../ui/modules/repos/RepoPagerPresenter.java | 2 +- .../repos/code/RepoCodePagerFragment.java | 16 ++- .../commit/details/CommitPagerActivity.java | 14 +- .../code/commit/details/CommitPagerMvp.java | 6 +- .../commit/details/CommitPagerPresenter.java | 4 + ...ments.java => CommitCommentsFragment.java} | 12 +- .../details/comments/CommitCommentsMvp.java | 2 + .../details/files/CommitFilesFragment.java | 47 ++++++- .../commit/details/files/CommitFilesMvp.java | 19 ++- .../details/files/CommitFilesPresenter.java | 47 +++++-- .../details/files/CommitFilesSingleton.java | 3 +- .../repos/code/files/RepoFilesPresenter.java | 4 +- .../repos/code/prettifier/ViewerFragment.java | 11 +- .../code/prettifier/ViewerPresenter.java | 6 +- .../extras/labels/LabelsDialogFragment.java | 2 +- .../issues/create/CreateIssueActivity.java | 20 +++ .../issue/details/IssuePagerPresenter.java | 10 +- .../details/PullRequestPagerActivity.java | 19 ++- .../details/PullRequestPagerMvp.java | 7 +- .../details/PullRequestPagerPresenter.java | 56 +++++--- .../files/PullRequestFilesFragment.java | 51 ++++++- .../details/files/PullRequestFilesMvp.java | 31 +++- .../files/PullRequestFilesPresenter.java | 34 +++-- .../PullRequestTimelinePresenter.java | 4 +- .../merge/MergePullReqeustMvp.java | 2 +- .../merge/MergePullRequestDialogFragment.java | 4 +- .../ui/modules/repos/wiki/WikiActivity.kt | 5 + .../ui/modules/repos/wiki/WikiPresenter.kt | 4 +- .../reviews/AddReviewBottomSheetDialog.kt | 100 +++++++++++++ .../reviews/callback/ReviewCommentListener.kt | 11 ++ .../ui/modules/settings/SettingsActivity.java | 4 + .../ui/modules/theme/ThemeActivity.kt | 17 +-- .../modules/theme/code/ThemeCodeActivity.kt | 72 ++++++++++ .../ui/modules/theme/code/ThemeCodeMvp.kt | 18 +++ .../modules/theme/code/ThemeCodePresenter.kt | 19 +++ .../ui/modules/trending/TrendingMvp.kt | 3 +- .../ui/widgets/CardsPagerTransformerBasic.kt | 17 +++ .../fastaccess/ui/widgets/DiffLineSpan.java | 25 +++- .../ui/widgets/dialog/ListDialogView.java | 1 + .../recyclerview/DynamicRecyclerView.java | 15 +- .../prettifier/pretty/PrettifyWebView.java | 35 +++-- .../pretty/helper/CodeThemesHelper.java | 98 +++++++++++++ .../pretty/helper/GithubHelper.java | 61 ++++---- .../pretty/helper/PrettifyHelper.java | 28 +++- .../layout/commit_pager_activity.xml | 61 +++++++- .../layout/general_viewer_layout.xml | 2 +- .../layout/issue_pager_activity.xml | 63 ++++++++- .../layout/merge_dialog_layout.xml | 12 +- .../layout/review_dialog_layout.xml | 64 +++++++++ .../layout/submit_review_layout.xml | 10 ++ .../main_layouts/layout/theme_code_layout.xml | 69 +++++++++ .../main_layouts/layout/theme_viewpager.xml | 6 +- .../layout/view_pager_activity_layout.xml | 25 ++++ .../layout/commit_line_row_item.xml | 30 ++++ .../layout/pullrequest_file_row_item.xml | 117 ++++++++++++++++ .../row_layouts/layout/simple_row_item.xml | 1 - app/src/main/res/menu/issue_menu.xml | 6 +- app/src/main/res/menu/pull_request_menu.xml | 6 +- app/src/main/res/values/arrays.xml | 13 ++ app/src/main/res/values/strings.xml | 11 +- app/src/main/res/values/theme_dark.xml | 1 + 170 files changed, 8245 insertions(+), 393 deletions(-) create mode 100755 app/src/main/assets/highlight/styles/themes/agate.css create mode 100755 app/src/main/assets/highlight/styles/themes/androidstudio.css create mode 100755 app/src/main/assets/highlight/styles/themes/arduino-light.css create mode 100755 app/src/main/assets/highlight/styles/themes/arta.css create mode 100755 app/src/main/assets/highlight/styles/themes/ascetic.css create mode 100755 app/src/main/assets/highlight/styles/themes/atelier-cave-dark.css create mode 100755 app/src/main/assets/highlight/styles/themes/atelier-cave-light.css create mode 100755 app/src/main/assets/highlight/styles/themes/atelier-dune-dark.css create mode 100755 app/src/main/assets/highlight/styles/themes/atelier-dune-light.css create mode 100755 app/src/main/assets/highlight/styles/themes/atelier-estuary-dark.css create mode 100755 app/src/main/assets/highlight/styles/themes/atelier-estuary-light.css create mode 100755 app/src/main/assets/highlight/styles/themes/atelier-forest-dark.css create mode 100755 app/src/main/assets/highlight/styles/themes/atelier-forest-light.css create mode 100755 app/src/main/assets/highlight/styles/themes/atelier-heath-dark.css create mode 100755 app/src/main/assets/highlight/styles/themes/atelier-heath-light.css create mode 100755 app/src/main/assets/highlight/styles/themes/atelier-lakeside-dark.css create mode 100755 app/src/main/assets/highlight/styles/themes/atelier-lakeside-light.css create mode 100755 app/src/main/assets/highlight/styles/themes/atelier-plateau-dark.css create mode 100755 app/src/main/assets/highlight/styles/themes/atelier-plateau-light.css create mode 100755 app/src/main/assets/highlight/styles/themes/atelier-savanna-dark.css create mode 100755 app/src/main/assets/highlight/styles/themes/atelier-savanna-light.css create mode 100755 app/src/main/assets/highlight/styles/themes/atelier-seaside-dark.css create mode 100755 app/src/main/assets/highlight/styles/themes/atelier-seaside-light.css create mode 100755 app/src/main/assets/highlight/styles/themes/atelier-sulphurpool-dark.css create mode 100755 app/src/main/assets/highlight/styles/themes/atelier-sulphurpool-light.css create mode 100755 app/src/main/assets/highlight/styles/themes/atom-one-dark.css create mode 100755 app/src/main/assets/highlight/styles/themes/atom-one-light.css create mode 100755 app/src/main/assets/highlight/styles/themes/brown-paper.css create mode 100755 app/src/main/assets/highlight/styles/themes/codepen-embed.css create mode 100755 app/src/main/assets/highlight/styles/themes/color-brewer.css create mode 100755 app/src/main/assets/highlight/styles/themes/darcula.css create mode 100755 app/src/main/assets/highlight/styles/themes/dark.css create mode 100755 app/src/main/assets/highlight/styles/themes/darkula.css create mode 100755 app/src/main/assets/highlight/styles/themes/default.css create mode 100755 app/src/main/assets/highlight/styles/themes/docco.css create mode 100755 app/src/main/assets/highlight/styles/themes/dracula.css create mode 100755 app/src/main/assets/highlight/styles/themes/far.css create mode 100755 app/src/main/assets/highlight/styles/themes/foundation.css create mode 100755 app/src/main/assets/highlight/styles/themes/github-gist.css create mode 100755 app/src/main/assets/highlight/styles/themes/github.css create mode 100755 app/src/main/assets/highlight/styles/themes/googlecode.css create mode 100755 app/src/main/assets/highlight/styles/themes/grayscale.css create mode 100755 app/src/main/assets/highlight/styles/themes/gruvbox-dark.css create mode 100755 app/src/main/assets/highlight/styles/themes/gruvbox-light.css create mode 100755 app/src/main/assets/highlight/styles/themes/hopscotch.css create mode 100755 app/src/main/assets/highlight/styles/themes/hybrid.css create mode 100755 app/src/main/assets/highlight/styles/themes/idea.css create mode 100755 app/src/main/assets/highlight/styles/themes/ir-black.css create mode 100755 app/src/main/assets/highlight/styles/themes/kimbie.dark.css create mode 100755 app/src/main/assets/highlight/styles/themes/kimbie.light.css create mode 100755 app/src/main/assets/highlight/styles/themes/magula.css create mode 100755 app/src/main/assets/highlight/styles/themes/mono-blue.css create mode 100755 app/src/main/assets/highlight/styles/themes/monokai-sublime.css create mode 100755 app/src/main/assets/highlight/styles/themes/monokai.css create mode 100755 app/src/main/assets/highlight/styles/themes/obsidian.css create mode 100755 app/src/main/assets/highlight/styles/themes/ocean.css create mode 100755 app/src/main/assets/highlight/styles/themes/paraiso-dark.css create mode 100755 app/src/main/assets/highlight/styles/themes/paraiso-light.css create mode 100755 app/src/main/assets/highlight/styles/themes/pojoaque.css create mode 100755 app/src/main/assets/highlight/styles/themes/purebasic.css create mode 100755 app/src/main/assets/highlight/styles/themes/qtcreator_dark.css create mode 100755 app/src/main/assets/highlight/styles/themes/qtcreator_light.css create mode 100755 app/src/main/assets/highlight/styles/themes/railscasts.css create mode 100755 app/src/main/assets/highlight/styles/themes/rainbow.css create mode 100755 app/src/main/assets/highlight/styles/themes/routeros.css create mode 100755 app/src/main/assets/highlight/styles/themes/school-book.css create mode 100755 app/src/main/assets/highlight/styles/themes/solarized-dark.css create mode 100755 app/src/main/assets/highlight/styles/themes/solarized-light.css create mode 100755 app/src/main/assets/highlight/styles/themes/sunburst.css create mode 100755 app/src/main/assets/highlight/styles/themes/tomorrow-night-blue.css create mode 100755 app/src/main/assets/highlight/styles/themes/tomorrow-night-bright.css create mode 100755 app/src/main/assets/highlight/styles/themes/tomorrow-night-eighties.css create mode 100755 app/src/main/assets/highlight/styles/themes/tomorrow-night.css create mode 100755 app/src/main/assets/highlight/styles/themes/tomorrow.css create mode 100755 app/src/main/assets/highlight/styles/themes/vs.css create mode 100755 app/src/main/assets/highlight/styles/themes/vs2015.css create mode 100755 app/src/main/assets/highlight/styles/themes/xcode.css create mode 100755 app/src/main/assets/highlight/styles/themes/xt256.css create mode 100755 app/src/main/assets/highlight/styles/themes/zenburn.css create mode 100644 app/src/main/java/com/fastaccess/data/dao/CommitFileChanges.java create mode 100644 app/src/main/java/com/fastaccess/data/dao/CommitLinesModel.java create mode 100644 app/src/main/java/com/fastaccess/data/dao/ReviewRequestModel.java create mode 100644 app/src/main/java/com/fastaccess/ui/adapter/CommitLinesAdapter.java create mode 100644 app/src/main/java/com/fastaccess/ui/adapter/SpinnerAdapter.java delete mode 100644 app/src/main/java/com/fastaccess/ui/adapter/viewholder/CommitFilesViewHolder.java create mode 100644 app/src/main/java/com/fastaccess/ui/adapter/viewholder/CommitLinesViewHolder.java create mode 100644 app/src/main/java/com/fastaccess/ui/adapter/viewholder/PullRequestFilesViewHolder.java rename app/src/main/java/com/fastaccess/ui/modules/repos/code/commit/details/comments/{CommitCommentsFragments.java => CommitCommentsFragment.java} (95%) create mode 100644 app/src/main/java/com/fastaccess/ui/modules/reviews/AddReviewBottomSheetDialog.kt create mode 100644 app/src/main/java/com/fastaccess/ui/modules/reviews/callback/ReviewCommentListener.kt create mode 100644 app/src/main/java/com/fastaccess/ui/modules/theme/code/ThemeCodeActivity.kt create mode 100644 app/src/main/java/com/fastaccess/ui/modules/theme/code/ThemeCodeMvp.kt create mode 100644 app/src/main/java/com/fastaccess/ui/modules/theme/code/ThemeCodePresenter.kt create mode 100644 app/src/main/java/com/fastaccess/ui/widgets/CardsPagerTransformerBasic.kt create mode 100644 app/src/main/java/com/prettifier/pretty/helper/CodeThemesHelper.java create mode 100644 app/src/main/res/layouts/main_layouts/layout/review_dialog_layout.xml create mode 100644 app/src/main/res/layouts/main_layouts/layout/submit_review_layout.xml create mode 100644 app/src/main/res/layouts/main_layouts/layout/theme_code_layout.xml create mode 100644 app/src/main/res/layouts/main_layouts/layout/view_pager_activity_layout.xml create mode 100644 app/src/main/res/layouts/row_layouts/layout/commit_line_row_item.xml create mode 100644 app/src/main/res/layouts/row_layouts/layout/pullrequest_file_row_item.xml diff --git a/README.md b/README.md index 98ceaa19..bebe56f3 100644 --- a/README.md +++ b/README.md @@ -77,7 +77,7 @@ We have configurated snapshots of FastHub, which can be downloaded from [AppVeyo ~~> **FastHub** contain Ads, which are disabled by default. You could enable them if you'd like to support the development.~~ _Ads currently not available._ -# Specs / Open-source libraries: +## Specs / Open-source libraries: - Minimum **SDK 21**, _but AppCompat is used all the way ;-)_ - **Kotlin** all new modules starting from 2.5.3 will be written in **#Kotlin**. @@ -99,32 +99,54 @@ _Ads currently not available._ - **Fabric** analytics & crash reporting. - **Android Support Libraries**, the almighty ;-) -# Contribution +## Contribution You love FastHub? You want new features or bug fixes? Please **contribute** to the project either by [_creating a PR_](https://github.com/k0shk0sh/FastHub/compare) or [_submitting an issue_](https://github.com/k0shk0sh/FastHub/issues/new) on GitHub. Read the [**contribution guide**](.github/CONTRIBUTING.md) for more detailed information. -### Language Contributors +## Language Contributors -- Chinese (Simplified) [@Devifish](https://github.com/Devifish) -- Chinese (Traditional) [@maple3142](https://github.com/maple3142) -- German [@failex234](https://github.com/failex234) -- Indonesian [@dikiaap](https://github.com/dikiaap) -- Italian [@Raffaele74](https://github.com/Raffaele74) -- Japanese [@Rintan](https://github.com/Rintan) -- Lithuanian [@mistermantas](https://github.com/mistermantas) -- Russian [@dedepete](https://github.com/dedepete) -- Turkish [@kutsan](https://github.com/kutsan) -- Portuguese [@caiorrs](https://github.com/caiorrs) +
+ +

- Chinese (Simplified) [@Devifish](https://github.com/Devifish)

+

- Chinese (Traditional) [@maple3142](https://github.com/maple3142)

+

- German [@failex234](https://github.com/failex234)

+

- Indonesian [@dikiaap](https://github.com/dikiaap)

+

- Italian [@Raffaele74](https://github.com/Raffaele74)

+

- Japanese [@Rintan](https://github.com/Rintan)

+

- Lithuanian [@mistermantas](https://github.com/mistermantas)

+

- Russian [@dedepete](https://github.com/dedepete)

+

- Turkish [@kutsan](https://github.com/kutsan)

+

- Portuguese [@caiorrs](https://github.com/caiorrs)

+
+
-# License +## FAQ + +
+ Why can't I see my **Organizations** either _Private_ or _Public ones_? +

Open up https://github.com/settings/applications and look for FastHub, open it then scroll to Organization access and click on Grant Button, + alternatively login via **Access Token** which will ease this setup.

+
+ +
+ I tried to login via Access Token & OTP but it does not work? +

You can't login via Access Token & OTP all together due to the lifetime of the OTP code, you'll be required to login in every few seconds.

+
+ +
+ Why my Private Repo Wiki does not show up? +

It's due to FastHub scraping GitHub Wiki page & transform it to something Android does.

+
+ +## License > Copyright (C) 2017 Kosh. > Licensed under the [GPL-3.0](https://www.gnu.org/licenses/gpl.html) license. > (See the [LICENSE](https://github.com/k0shk0sh/FastHub/blob/master/LICENSE) file for the whole license text.) -# Screenshots +## Screenshots | Mobile Light | Mobile Dark | |:-:|:-:| @@ -134,7 +156,7 @@ Read the [**contribution guide**](.github/CONTRIBUTING.md) for more detailed inf |:-:|:-:| | ![Main Screen Light](/.github/assets/tablet_light.png?raw=true) | ![Main Screen Dark](/.github/assets/tablet_night.png?raw=true) | -# FastHub Logo +## FastHub Logo **FastHub** logo is designed by **Kevin Aguilar**. [Google+](https://plus.google.com/+KevinAguilarC) | [Twitter](https://twitter.com/kevttob) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 34fa636d..fcdb15ae 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -188,6 +188,10 @@ + + lineNo ? secondLineNo : lineNo; var div = document.querySelector('div[data-line-number="' + scrollTo + '"]'); - var scrollToPosition = scrollTo - 5; + var scrollToPosition = scrollTo > 5 ? (scrollTo - 5) : scrollTo; var toScrollTo = document.querySelector('div[data-line-number="' + scrollToPosition + '"]'); if (secondLineNo > lineNo) { for (var i = lineNo; i < secondLineNo + 1; i++) { var highlighted = document.querySelector('div[data-line-number="' + i + '"]'); if(highlighted != null) - highlighted.parentElement.style.backgroundColor = "rgb(248, 238, 199)"; + highlighted.parentElement.style.backgroundColor = "rgb(3, 102, 214)"; if(secondLineNo == i) break; } @@ -19,12 +19,6 @@ function scrollToLineNumber(lineNo, secondLineNo) { } function currentYPosition() { - // Firefox, Chrome, Opera, Safari - if (self.pageYOffset) return self.pageYOffset; - // Internet Explorer 6 - standards mode - if (document.documentElement && document.documentElement.scrollTop) - return document.documentElement.scrollTop; - // Internet Explorer 6, 7 and 8 if (document.body.scrollTop) return document.body.scrollTop; return 0; } diff --git a/app/src/main/assets/highlight/styles/prettify.css b/app/src/main/assets/highlight/styles/prettify.css index c989b314..e3e6606f 100644 --- a/app/src/main/assets/highlight/styles/prettify.css +++ b/app/src/main/assets/highlight/styles/prettify.css @@ -95,22 +95,4 @@ Original highlight.js style (c) Ivan Sagalaev .hljs-strong { font-weight: bold; -} - -td.hljs-ln-numbers { - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - text-align: center; - color: #ccc; - border-right: 1px solid #CCC; - vertical-align: top; - padding-right: 5px; -} - -.hljs-ln-line { - margin-left: 10px !important; } \ No newline at end of file diff --git a/app/src/main/assets/highlight/styles/prettify_dark.css b/app/src/main/assets/highlight/styles/prettify_dark.css index 9c9df4be..b7ae2f3d 100644 --- a/app/src/main/assets/highlight/styles/prettify_dark.css +++ b/app/src/main/assets/highlight/styles/prettify_dark.css @@ -71,22 +71,4 @@ Original highlight.js style (c) Ivan Sagalaev .hljs-strong { font-weight: bold; -} - -td.hljs-ln-numbers { - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - text-align: center; - color: #ccc; - border-right: 1px solid #CCC; - vertical-align: top; - padding-right: 5px; -} - -.hljs-ln-line { - margin-left: 10px !important; } \ No newline at end of file diff --git a/app/src/main/assets/highlight/styles/themes/agate.css b/app/src/main/assets/highlight/styles/themes/agate.css new file mode 100755 index 00000000..6021c901 --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/agate.css @@ -0,0 +1,107 @@ +/*! + * Agate by Taufik Nurrohman + * ---------------------------------------------------- + * + * #ade5fc + * #a2fca2 + * #c6b4f0 + * #d36363 + * #fcc28c + * #fc9b9b + * #ffa + * #fff + * #333 + * #62c8f3 + * #888 + * + */ + +.hljs { + display: block; + overflow-x: auto; + padding: 0px; + color: white; +} + +.hljs-name, +.hljs-strong { + font-weight: bold; +} + +.hljs-code, +.hljs-emphasis { + font-style: italic; +} + +.hljs-tag { + color: #62c8f3; +} + +.hljs-variable, +.hljs-template-variable, +.hljs-selector-id, +.hljs-selector-class { + color: #ade5fc; +} + +.hljs-string, +.hljs-bullet { + color: #a2fca2; +} + +.hljs-type, +.hljs-title, +.hljs-section, +.hljs-attribute, +.hljs-quote, +.hljs-built_in, +.hljs-builtin-name { + color: #ffa; +} + +.hljs-number, +.hljs-symbol, +.hljs-bullet { + color: #d36363; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal { + color: #fcc28c; +} + +.hljs-comment, +.hljs-deletion, +.hljs-code { + color: #888; +} + +.hljs-regexp, +.hljs-link { + color: #c6b4f0; +} + +.hljs-meta { + color: #fc9b9b; +} + +.hljs-deletion { + background-color: #fc9b9b; + color: #333; +} + +.hljs-addition { + background-color: #a2fca2; + color: #333; +} + +.hljs a { + color: inherit; +} + +.hljs a:focus, +.hljs a:hover { + color: inherit; + text-decoration: underline; +} diff --git a/app/src/main/assets/highlight/styles/themes/androidstudio.css b/app/src/main/assets/highlight/styles/themes/androidstudio.css new file mode 100755 index 00000000..c1ce9d37 --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/androidstudio.css @@ -0,0 +1,65 @@ +/* +Date: 24 Fev 2015 +Author: Pedro Oliveira +*/ + +.hljs { + color: #a9b7c6; + display: block; + overflow-x: auto; + padding: 0px; +} + +.hljs-number, +.hljs-literal, +.hljs-symbol, +.hljs-bullet { + color: #6897BB; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-deletion { + color: #cc7832; +} + +.hljs-variable, +.hljs-template-variable, +.hljs-link { + color: #629755; +} + +.hljs-comment, +.hljs-quote { + color: #808080; +} + +.hljs-meta { + color: #bbb529; +} + +.hljs-string, +.hljs-attribute, +.hljs-addition { + color: #6A8759; +} + +.hljs-section, +.hljs-title, +.hljs-type { + color: #ffc66d; +} + +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #e8bf6a; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/app/src/main/assets/highlight/styles/themes/arduino-light.css b/app/src/main/assets/highlight/styles/themes/arduino-light.css new file mode 100755 index 00000000..a80f5f7a --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/arduino-light.css @@ -0,0 +1,87 @@ +/* + +Arduino® Light Theme - Stefania Mellai + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0px; +} + +.hljs, +.hljs-subst { + color: #434f54; +} + +.hljs-keyword, +.hljs-attribute, +.hljs-selector-tag, +.hljs-doctag, +.hljs-name { + color: #00979D; +} + +.hljs-built_in, +.hljs-literal, +.hljs-bullet, +.hljs-code, +.hljs-addition { + color: #D35400; +} + +.hljs-regexp, +.hljs-symbol, +.hljs-variable, +.hljs-template-variable, +.hljs-link, +.hljs-selector-attr, +.hljs-selector-pseudo { + color: #00979D; +} + +.hljs-type, +.hljs-string, +.hljs-selector-id, +.hljs-selector-class, +.hljs-quote, +.hljs-template-tag, +.hljs-deletion { + color: #005C5F; +} + +.hljs-title, +.hljs-section { + color: #880000; + font-weight: bold; +} + +.hljs-comment { + color: rgba(149,165,166,.8); +} + +.hljs-meta-keyword { + color: #728E00; +} + +.hljs-meta { + color: #728E00; + color: #434f54; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} + +.hljs-function { + color: #728E00; +} + +.hljs-number { + color: #8A7B52; +} diff --git a/app/src/main/assets/highlight/styles/themes/arta.css b/app/src/main/assets/highlight/styles/themes/arta.css new file mode 100755 index 00000000..7b3bad03 --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/arta.css @@ -0,0 +1,73 @@ +/* +Date: 17.V.2011 +Author: pumbur +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0px; + +} + +.hljs, +.hljs-subst { + color: #aaa; +} + +.hljs-section { + color: #fff; +} + +.hljs-comment, +.hljs-quote, +.hljs-meta { + color: #444; +} + +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-regexp { + color: #ffcc33; +} + +.hljs-number, +.hljs-addition { + color: #00cc66; +} + +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-template-variable, +.hljs-attribute, +.hljs-link { + color: #32aaee; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #6644aa; +} + +.hljs-title, +.hljs-variable, +.hljs-deletion, +.hljs-template-tag { + color: #bb1166; +} + +.hljs-section, +.hljs-doctag, +.hljs-strong { + font-weight: bold; +} + +.hljs-emphasis { + font-style: italic; +} diff --git a/app/src/main/assets/highlight/styles/themes/ascetic.css b/app/src/main/assets/highlight/styles/themes/ascetic.css new file mode 100755 index 00000000..a668b8e3 --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/ascetic.css @@ -0,0 +1,44 @@ +/* + +Original style from softwaremaniacs.org (c) Ivan Sagalaev + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0px; + color: black; +} + +.hljs-string, +.hljs-variable, +.hljs-template-variable, +.hljs-symbol, +.hljs-bullet, +.hljs-section, +.hljs-addition, +.hljs-attribute, +.hljs-link { + color: #888; +} + +.hljs-comment, +.hljs-quote, +.hljs-meta, +.hljs-deletion { + color: #ccc; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-section, +.hljs-name, +.hljs-type, +.hljs-strong { + font-weight: bold; +} + +.hljs-emphasis { + font-style: italic; +} diff --git a/app/src/main/assets/highlight/styles/themes/atelier-cave-dark.css b/app/src/main/assets/highlight/styles/themes/atelier-cave-dark.css new file mode 100755 index 00000000..110e1440 --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/atelier-cave-dark.css @@ -0,0 +1,83 @@ +/* Base16 Atelier Cave Dark - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/cave) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Cave Comment */ +.hljs-comment, +.hljs-quote { + color: #7e7887; +} + +/* Atelier-Cave Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-regexp, +.hljs-link, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #be4678; +} + +/* Atelier-Cave Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #aa573c; +} + +/* Atelier-Cave Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #2a9292; +} + +/* Atelier-Cave Blue */ +.hljs-title, +.hljs-section { + color: #576ddb; +} + +/* Atelier-Cave Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #955ae7; +} + +.hljs-deletion, +.hljs-addition { + color: #19171c; + display: inline-block; + width: 100%; +} + +.hljs-deletion { + background-color: #be4678; +} + +.hljs-addition { + background-color: #2a9292; +} + +.hljs { + display: block; + overflow-x: auto; + + color: #8b8792; + padding: 0px; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/app/src/main/assets/highlight/styles/themes/atelier-cave-light.css b/app/src/main/assets/highlight/styles/themes/atelier-cave-light.css new file mode 100755 index 00000000..67ea1c31 --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/atelier-cave-light.css @@ -0,0 +1,85 @@ +/* Base16 Atelier Cave Light - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/cave) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Cave Comment */ +.hljs-comment, +.hljs-quote { + color: #655f6d; +} + +/* Atelier-Cave Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #be4678; +} + +/* Atelier-Cave Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #aa573c; +} + +/* Atelier-Cave Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #2a9292; +} + +/* Atelier-Cave Blue */ +.hljs-title, +.hljs-section { + color: #576ddb; +} + +/* Atelier-Cave Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #955ae7; +} + +.hljs-deletion, +.hljs-addition { + color: #19171c; + display: inline-block; + width: 100%; +} + +.hljs-deletion { + background-color: #be4678; +} + +.hljs-addition { + background-color: #2a9292; +} + +.hljs { + display: block; + overflow-x: auto; + + color: #585260; + padding: 0px; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/app/src/main/assets/highlight/styles/themes/atelier-dune-dark.css b/app/src/main/assets/highlight/styles/themes/atelier-dune-dark.css new file mode 100755 index 00000000..1c0312f8 --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/atelier-dune-dark.css @@ -0,0 +1,69 @@ +/* Base16 Atelier Dune Dark - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/dune) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Dune Comment */ +.hljs-comment, +.hljs-quote { + color: #999580; +} + +/* Atelier-Dune Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #d73737; +} + +/* Atelier-Dune Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #b65611; +} + +/* Atelier-Dune Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #60ac39; +} + +/* Atelier-Dune Blue */ +.hljs-title, +.hljs-section { + color: #6684e1; +} + +/* Atelier-Dune Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #b854d4; +} + +.hljs { + display: block; + overflow-x: auto; + + color: #a6a28c; + padding: 0px; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/app/src/main/assets/highlight/styles/themes/atelier-dune-light.css b/app/src/main/assets/highlight/styles/themes/atelier-dune-light.css new file mode 100755 index 00000000..f7815d92 --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/atelier-dune-light.css @@ -0,0 +1,69 @@ +/* Base16 Atelier Dune Light - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/dune) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Dune Comment */ +.hljs-comment, +.hljs-quote { + color: #7d7a68; +} + +/* Atelier-Dune Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #d73737; +} + +/* Atelier-Dune Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #b65611; +} + +/* Atelier-Dune Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #60ac39; +} + +/* Atelier-Dune Blue */ +.hljs-title, +.hljs-section { + color: #6684e1; +} + +/* Atelier-Dune Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #b854d4; +} + +.hljs { + display: block; + overflow-x: auto; + + color: #6e6b5e; + padding: 0px; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/app/src/main/assets/highlight/styles/themes/atelier-estuary-dark.css b/app/src/main/assets/highlight/styles/themes/atelier-estuary-dark.css new file mode 100755 index 00000000..23263941 --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/atelier-estuary-dark.css @@ -0,0 +1,84 @@ +/* Base16 Atelier Estuary Dark - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/estuary) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Estuary Comment */ +.hljs-comment, +.hljs-quote { + color: #878573; +} + +/* Atelier-Estuary Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #ba6236; +} + +/* Atelier-Estuary Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #ae7313; +} + +/* Atelier-Estuary Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #7d9726; +} + +/* Atelier-Estuary Blue */ +.hljs-title, +.hljs-section { + color: #36a166; +} + +/* Atelier-Estuary Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #5f9182; +} + +.hljs-deletion, +.hljs-addition { + color: #22221b; + display: inline-block; + width: 100%; +} + +.hljs-deletion { + background-color: #ba6236; +} + +.hljs-addition { + background-color: #7d9726; +} + +.hljs { + display: block; + overflow-x: auto; + + color: #929181; + padding: 0px; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/app/src/main/assets/highlight/styles/themes/atelier-estuary-light.css b/app/src/main/assets/highlight/styles/themes/atelier-estuary-light.css new file mode 100755 index 00000000..13c5164f --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/atelier-estuary-light.css @@ -0,0 +1,84 @@ +/* Base16 Atelier Estuary Light - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/estuary) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Estuary Comment */ +.hljs-comment, +.hljs-quote { + color: #6c6b5a; +} + +/* Atelier-Estuary Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #ba6236; +} + +/* Atelier-Estuary Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #ae7313; +} + +/* Atelier-Estuary Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #7d9726; +} + +/* Atelier-Estuary Blue */ +.hljs-title, +.hljs-section { + color: #36a166; +} + +/* Atelier-Estuary Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #5f9182; +} + +.hljs-deletion, +.hljs-addition { + color: #22221b; + display: inline-block; + width: 100%; +} + +.hljs-deletion { + background-color: #ba6236; +} + +.hljs-addition { + background-color: #7d9726; +} + +.hljs { + display: block; + overflow-x: auto; + + color: #5f5e4e; + padding: 0px; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/app/src/main/assets/highlight/styles/themes/atelier-forest-dark.css b/app/src/main/assets/highlight/styles/themes/atelier-forest-dark.css new file mode 100755 index 00000000..9f485444 --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/atelier-forest-dark.css @@ -0,0 +1,69 @@ +/* Base16 Atelier Forest Dark - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/forest) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Forest Comment */ +.hljs-comment, +.hljs-quote { + color: #9c9491; +} + +/* Atelier-Forest Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #f22c40; +} + +/* Atelier-Forest Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #df5320; +} + +/* Atelier-Forest Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #7b9726; +} + +/* Atelier-Forest Blue */ +.hljs-title, +.hljs-section { + color: #407ee7; +} + +/* Atelier-Forest Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #6666ea; +} + +.hljs { + display: block; + overflow-x: auto; + + color: #a8a19f; + padding: 0px; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/app/src/main/assets/highlight/styles/themes/atelier-forest-light.css b/app/src/main/assets/highlight/styles/themes/atelier-forest-light.css new file mode 100755 index 00000000..748643c4 --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/atelier-forest-light.css @@ -0,0 +1,69 @@ +/* Base16 Atelier Forest Light - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/forest) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Forest Comment */ +.hljs-comment, +.hljs-quote { + color: #766e6b; +} + +/* Atelier-Forest Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #f22c40; +} + +/* Atelier-Forest Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #df5320; +} + +/* Atelier-Forest Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #7b9726; +} + +/* Atelier-Forest Blue */ +.hljs-title, +.hljs-section { + color: #407ee7; +} + +/* Atelier-Forest Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #6666ea; +} + +.hljs { + display: block; + overflow-x: auto; + + color: #68615e; + padding: 0px; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/app/src/main/assets/highlight/styles/themes/atelier-heath-dark.css b/app/src/main/assets/highlight/styles/themes/atelier-heath-dark.css new file mode 100755 index 00000000..e9a67614 --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/atelier-heath-dark.css @@ -0,0 +1,69 @@ +/* Base16 Atelier Heath Dark - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/heath) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Heath Comment */ +.hljs-comment, +.hljs-quote { + color: #9e8f9e; +} + +/* Atelier-Heath Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #ca402b; +} + +/* Atelier-Heath Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #a65926; +} + +/* Atelier-Heath Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #918b3b; +} + +/* Atelier-Heath Blue */ +.hljs-title, +.hljs-section { + color: #516aec; +} + +/* Atelier-Heath Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #7b59c0; +} + +.hljs { + display: block; + overflow-x: auto; + + color: #ab9bab; + padding: 0px; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/app/src/main/assets/highlight/styles/themes/atelier-heath-light.css b/app/src/main/assets/highlight/styles/themes/atelier-heath-light.css new file mode 100755 index 00000000..e4d7a297 --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/atelier-heath-light.css @@ -0,0 +1,69 @@ +/* Base16 Atelier Heath Light - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/heath) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Heath Comment */ +.hljs-comment, +.hljs-quote { + color: #776977; +} + +/* Atelier-Heath Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #ca402b; +} + +/* Atelier-Heath Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #a65926; +} + +/* Atelier-Heath Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #918b3b; +} + +/* Atelier-Heath Blue */ +.hljs-title, +.hljs-section { + color: #516aec; +} + +/* Atelier-Heath Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #7b59c0; +} + +.hljs { + display: block; + overflow-x: auto; + + color: #695d69; + padding: 0px; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/app/src/main/assets/highlight/styles/themes/atelier-lakeside-dark.css b/app/src/main/assets/highlight/styles/themes/atelier-lakeside-dark.css new file mode 100755 index 00000000..e448ea4b --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/atelier-lakeside-dark.css @@ -0,0 +1,69 @@ +/* Base16 Atelier Lakeside Dark - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/lakeside) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Lakeside Comment */ +.hljs-comment, +.hljs-quote { + color: #7195a8; +} + +/* Atelier-Lakeside Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #d22d72; +} + +/* Atelier-Lakeside Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #935c25; +} + +/* Atelier-Lakeside Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #568c3b; +} + +/* Atelier-Lakeside Blue */ +.hljs-title, +.hljs-section { + color: #257fad; +} + +/* Atelier-Lakeside Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #6b6bb8; +} + +.hljs { + display: block; + overflow-x: auto; + + color: #7ea2b4; + padding: 0px; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/app/src/main/assets/highlight/styles/themes/atelier-lakeside-light.css b/app/src/main/assets/highlight/styles/themes/atelier-lakeside-light.css new file mode 100755 index 00000000..bdca412f --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/atelier-lakeside-light.css @@ -0,0 +1,69 @@ +/* Base16 Atelier Lakeside Light - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/lakeside) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Lakeside Comment */ +.hljs-comment, +.hljs-quote { + color: #5a7b8c; +} + +/* Atelier-Lakeside Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #d22d72; +} + +/* Atelier-Lakeside Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #935c25; +} + +/* Atelier-Lakeside Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #568c3b; +} + +/* Atelier-Lakeside Blue */ +.hljs-title, +.hljs-section { + color: #257fad; +} + +/* Atelier-Lakeside Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #6b6bb8; +} + +.hljs { + display: block; + overflow-x: auto; + + color: #516d7b; + padding: 0px; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/app/src/main/assets/highlight/styles/themes/atelier-plateau-dark.css b/app/src/main/assets/highlight/styles/themes/atelier-plateau-dark.css new file mode 100755 index 00000000..22f970ea --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/atelier-plateau-dark.css @@ -0,0 +1,84 @@ +/* Base16 Atelier Plateau Dark - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/plateau) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Plateau Comment */ +.hljs-comment, +.hljs-quote { + color: #7e7777; +} + +/* Atelier-Plateau Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #ca4949; +} + +/* Atelier-Plateau Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #b45a3c; +} + +/* Atelier-Plateau Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #4b8b8b; +} + +/* Atelier-Plateau Blue */ +.hljs-title, +.hljs-section { + color: #7272ca; +} + +/* Atelier-Plateau Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #8464c4; +} + +.hljs-deletion, +.hljs-addition { + color: #1b1818; + display: inline-block; + width: 100%; +} + +.hljs-deletion { + background-color: #ca4949; +} + +.hljs-addition { + background-color: #4b8b8b; +} + +.hljs { + display: block; + overflow-x: auto; + + color: #8a8585; + padding: 0px; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/app/src/main/assets/highlight/styles/themes/atelier-plateau-light.css b/app/src/main/assets/highlight/styles/themes/atelier-plateau-light.css new file mode 100755 index 00000000..a7a29335 --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/atelier-plateau-light.css @@ -0,0 +1,84 @@ +/* Base16 Atelier Plateau Light - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/plateau) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Plateau Comment */ +.hljs-comment, +.hljs-quote { + color: #655d5d; +} + +/* Atelier-Plateau Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #ca4949; +} + +/* Atelier-Plateau Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #b45a3c; +} + +/* Atelier-Plateau Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #4b8b8b; +} + +/* Atelier-Plateau Blue */ +.hljs-title, +.hljs-section { + color: #7272ca; +} + +/* Atelier-Plateau Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #8464c4; +} + +.hljs-deletion, +.hljs-addition { + color: #1b1818; + display: inline-block; + width: 100%; +} + +.hljs-deletion { + background-color: #ca4949; +} + +.hljs-addition { + background-color: #4b8b8b; +} + +.hljs { + display: block; + overflow-x: auto; + + color: #585050; + padding: 0px; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/app/src/main/assets/highlight/styles/themes/atelier-savanna-dark.css b/app/src/main/assets/highlight/styles/themes/atelier-savanna-dark.css new file mode 100755 index 00000000..089ea7c2 --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/atelier-savanna-dark.css @@ -0,0 +1,84 @@ +/* Base16 Atelier Savanna Dark - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/savanna) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Savanna Comment */ +.hljs-comment, +.hljs-quote { + color: #78877d; +} + +/* Atelier-Savanna Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #b16139; +} + +/* Atelier-Savanna Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #9f713c; +} + +/* Atelier-Savanna Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #489963; +} + +/* Atelier-Savanna Blue */ +.hljs-title, +.hljs-section { + color: #478c90; +} + +/* Atelier-Savanna Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #55859b; +} + +.hljs-deletion, +.hljs-addition { + color: #171c19; + display: inline-block; + width: 100%; +} + +.hljs-deletion { + background-color: #b16139; +} + +.hljs-addition { + background-color: #489963; +} + +.hljs { + display: block; + overflow-x: auto; + + color: #87928a; + padding: 0px; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/app/src/main/assets/highlight/styles/themes/atelier-savanna-light.css b/app/src/main/assets/highlight/styles/themes/atelier-savanna-light.css new file mode 100755 index 00000000..c2177a8c --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/atelier-savanna-light.css @@ -0,0 +1,84 @@ +/* Base16 Atelier Savanna Light - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/savanna) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Savanna Comment */ +.hljs-comment, +.hljs-quote { + color: #5f6d64; +} + +/* Atelier-Savanna Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #b16139; +} + +/* Atelier-Savanna Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #9f713c; +} + +/* Atelier-Savanna Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #489963; +} + +/* Atelier-Savanna Blue */ +.hljs-title, +.hljs-section { + color: #478c90; +} + +/* Atelier-Savanna Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #55859b; +} + +.hljs-deletion, +.hljs-addition { + color: #171c19; + display: inline-block; + width: 100%; +} + +.hljs-deletion { + background-color: #b16139; +} + +.hljs-addition { + background-color: #489963; +} + +.hljs { + display: block; + overflow-x: auto; + + color: #526057; + padding: 0px; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/app/src/main/assets/highlight/styles/themes/atelier-seaside-dark.css b/app/src/main/assets/highlight/styles/themes/atelier-seaside-dark.css new file mode 100755 index 00000000..a2cfce24 --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/atelier-seaside-dark.css @@ -0,0 +1,69 @@ +/* Base16 Atelier Seaside Dark - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/seaside) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Seaside Comment */ +.hljs-comment, +.hljs-quote { + color: #809980; +} + +/* Atelier-Seaside Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #e6193c; +} + +/* Atelier-Seaside Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #87711d; +} + +/* Atelier-Seaside Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #29a329; +} + +/* Atelier-Seaside Blue */ +.hljs-title, +.hljs-section { + color: #3d62f5; +} + +/* Atelier-Seaside Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #ad2bee; +} + +.hljs { + display: block; + overflow-x: auto; + + color: #8ca68c; + padding: 0px; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/app/src/main/assets/highlight/styles/themes/atelier-seaside-light.css b/app/src/main/assets/highlight/styles/themes/atelier-seaside-light.css new file mode 100755 index 00000000..5854b0b5 --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/atelier-seaside-light.css @@ -0,0 +1,69 @@ +/* Base16 Atelier Seaside Light - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/seaside) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Seaside Comment */ +.hljs-comment, +.hljs-quote { + color: #687d68; +} + +/* Atelier-Seaside Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #e6193c; +} + +/* Atelier-Seaside Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #87711d; +} + +/* Atelier-Seaside Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #29a329; +} + +/* Atelier-Seaside Blue */ +.hljs-title, +.hljs-section { + color: #3d62f5; +} + +/* Atelier-Seaside Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #ad2bee; +} + +.hljs { + display: block; + overflow-x: auto; + + color: #5e6e5e; + padding: 0px; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/app/src/main/assets/highlight/styles/themes/atelier-sulphurpool-dark.css b/app/src/main/assets/highlight/styles/themes/atelier-sulphurpool-dark.css new file mode 100755 index 00000000..ecb87243 --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/atelier-sulphurpool-dark.css @@ -0,0 +1,69 @@ +/* Base16 Atelier Sulphurpool Dark - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/sulphurpool) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Sulphurpool Comment */ +.hljs-comment, +.hljs-quote { + color: #898ea4; +} + +/* Atelier-Sulphurpool Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #c94922; +} + +/* Atelier-Sulphurpool Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #c76b29; +} + +/* Atelier-Sulphurpool Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #ac9739; +} + +/* Atelier-Sulphurpool Blue */ +.hljs-title, +.hljs-section { + color: #3d8fd1; +} + +/* Atelier-Sulphurpool Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #6679cc; +} + +.hljs { + display: block; + overflow-x: auto; + + color: #979db4; + padding: 0px; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/app/src/main/assets/highlight/styles/themes/atelier-sulphurpool-light.css b/app/src/main/assets/highlight/styles/themes/atelier-sulphurpool-light.css new file mode 100755 index 00000000..4b3d2ac0 --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/atelier-sulphurpool-light.css @@ -0,0 +1,69 @@ +/* Base16 Atelier Sulphurpool Light - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/sulphurpool) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Sulphurpool Comment */ +.hljs-comment, +.hljs-quote { + color: #6b7394; +} + +/* Atelier-Sulphurpool Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #c94922; +} + +/* Atelier-Sulphurpool Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #c76b29; +} + +/* Atelier-Sulphurpool Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #ac9739; +} + +/* Atelier-Sulphurpool Blue */ +.hljs-title, +.hljs-section { + color: #3d8fd1; +} + +/* Atelier-Sulphurpool Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #6679cc; +} + +.hljs { + display: block; + overflow-x: auto; + + color: #5e6687; + padding: 0px; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/app/src/main/assets/highlight/styles/themes/atom-one-dark.css b/app/src/main/assets/highlight/styles/themes/atom-one-dark.css new file mode 100755 index 00000000..4fd1695f --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/atom-one-dark.css @@ -0,0 +1,96 @@ +/* + +Atom One Dark by Daniel Gamage +Original One Dark Syntax theme from https://github.com/atom/one-dark-syntax + +base: #282c34 +mono-1: #abb2bf +mono-2: #818896 +mono-3: #5c6370 +hue-1: #56b6c2 +hue-2: #61aeee +hue-3: #c678dd +hue-4: #98c379 +hue-5: #e06c75 +hue-5-2: #be5046 +hue-6: #d19a66 +hue-6-2: #e6c07b + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0px; + color: #abb2bf; + +} + +.hljs-comment, +.hljs-quote { + color: #5c6370; + font-style: italic; +} + +.hljs-doctag, +.hljs-keyword, +.hljs-formula { + color: #c678dd; +} + +.hljs-section, +.hljs-name, +.hljs-selector-tag, +.hljs-deletion, +.hljs-subst { + color: #e06c75; +} + +.hljs-literal { + color: #56b6c2; +} + +.hljs-string, +.hljs-regexp, +.hljs-addition, +.hljs-attribute, +.hljs-meta-string { + color: #98c379; +} + +.hljs-built_in, +.hljs-class .hljs-title { + color: #e6c07b; +} + +.hljs-attr, +.hljs-variable, +.hljs-template-variable, +.hljs-type, +.hljs-selector-class, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-number { + color: #d19a66; +} + +.hljs-symbol, +.hljs-bullet, +.hljs-link, +.hljs-meta, +.hljs-selector-id, +.hljs-title { + color: #61aeee; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} + +.hljs-link { + text-decoration: underline; +} diff --git a/app/src/main/assets/highlight/styles/themes/atom-one-light.css b/app/src/main/assets/highlight/styles/themes/atom-one-light.css new file mode 100755 index 00000000..7dddf2d3 --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/atom-one-light.css @@ -0,0 +1,96 @@ +/* + +Atom One Light by Daniel Gamage +Original One Light Syntax theme from https://github.com/atom/one-light-syntax + +base: #fafafa +mono-1: #383a42 +mono-2: #686b77 +mono-3: #a0a1a7 +hue-1: #0184bb +hue-2: #4078f2 +hue-3: #a626a4 +hue-4: #50a14f +hue-5: #e45649 +hue-5-2: #c91243 +hue-6: #986801 +hue-6-2: #c18401 + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0px; + color: #383a42; + +} + +.hljs-comment, +.hljs-quote { + color: #a0a1a7; + font-style: italic; +} + +.hljs-doctag, +.hljs-keyword, +.hljs-formula { + color: #a626a4; +} + +.hljs-section, +.hljs-name, +.hljs-selector-tag, +.hljs-deletion, +.hljs-subst { + color: #e45649; +} + +.hljs-literal { + color: #0184bb; +} + +.hljs-string, +.hljs-regexp, +.hljs-addition, +.hljs-attribute, +.hljs-meta-string { + color: #50a14f; +} + +.hljs-built_in, +.hljs-class .hljs-title { + color: #c18401; +} + +.hljs-attr, +.hljs-variable, +.hljs-template-variable, +.hljs-type, +.hljs-selector-class, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-number { + color: #986801; +} + +.hljs-symbol, +.hljs-bullet, +.hljs-link, +.hljs-meta, +.hljs-selector-id, +.hljs-title { + color: #4078f2; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} + +.hljs-link { + text-decoration: underline; +} diff --git a/app/src/main/assets/highlight/styles/themes/brown-paper.css b/app/src/main/assets/highlight/styles/themes/brown-paper.css new file mode 100755 index 00000000..e168ddc1 --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/brown-paper.css @@ -0,0 +1,63 @@ +/* + +Brown Paper style from goldblog.com.ua (c) Zaripov Yura + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0px; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal { + color:#005599; + font-weight:bold; +} + +.hljs, +.hljs-subst { + color: #363c69; +} + +.hljs-string, +.hljs-title, +.hljs-section, +.hljs-type, +.hljs-attribute, +.hljs-symbol, +.hljs-bullet, +.hljs-built_in, +.hljs-addition, +.hljs-variable, +.hljs-template-tag, +.hljs-template-variable, +.hljs-link, +.hljs-name { + color: #2c009f; +} + +.hljs-comment, +.hljs-quote, +.hljs-meta, +.hljs-deletion { + color: #802022; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-doctag, +.hljs-title, +.hljs-section, +.hljs-type, +.hljs-name, +.hljs-strong { + font-weight: bold; +} + +.hljs-emphasis { + font-style: italic; +} diff --git a/app/src/main/assets/highlight/styles/themes/codepen-embed.css b/app/src/main/assets/highlight/styles/themes/codepen-embed.css new file mode 100755 index 00000000..199d4890 --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/codepen-embed.css @@ -0,0 +1,60 @@ +/* + codepen.io Embed Theme + Author: Justin Perry + Original theme - https://github.com/chriskempson/tomorrow-theme +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0px; + + color: #fff; +} + +.hljs-comment, +.hljs-quote { + color: #777; +} + +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-regexp, +.hljs-meta, +.hljs-number, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-params, +.hljs-symbol, +.hljs-bullet, +.hljs-link, +.hljs-deletion { + color: #ab875d; +} + +.hljs-section, +.hljs-title, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-type, +.hljs-attribute { + color: #9b869b; +} + +.hljs-string, +.hljs-keyword, +.hljs-selector-tag, +.hljs-addition { + color: #8f9c6c; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/app/src/main/assets/highlight/styles/themes/color-brewer.css b/app/src/main/assets/highlight/styles/themes/color-brewer.css new file mode 100755 index 00000000..5f1b1307 --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/color-brewer.css @@ -0,0 +1,71 @@ +/* + +Colorbrewer theme +Original: https://github.com/mbostock/colorbrewer-theme (c) Mike Bostock +Ported by Fabrício Tavares de Oliveira + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0px; + +} + +.hljs, +.hljs-subst { + color: #000; +} + +.hljs-string, +.hljs-meta, +.hljs-symbol, +.hljs-template-tag, +.hljs-template-variable, +.hljs-addition { + color: #756bb1; +} + +.hljs-comment, +.hljs-quote { + color: #636363; +} + +.hljs-number, +.hljs-regexp, +.hljs-literal, +.hljs-bullet, +.hljs-link { + color: #31a354; +} + +.hljs-deletion, +.hljs-variable { + color: #88f; +} + + + +.hljs-keyword, +.hljs-selector-tag, +.hljs-title, +.hljs-section, +.hljs-built_in, +.hljs-doctag, +.hljs-type, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-strong { + color: #3182bd; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-attribute { + color: #e6550d; +} diff --git a/app/src/main/assets/highlight/styles/themes/darcula.css b/app/src/main/assets/highlight/styles/themes/darcula.css new file mode 100755 index 00000000..eb40ab08 --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/darcula.css @@ -0,0 +1,77 @@ +/* + +Darcula color scheme from the JetBrains family of IDEs + +*/ + + +.hljs { + display: block; + overflow-x: auto; + padding: 0px; + +} + +.hljs { + color: #bababa; +} + +.hljs-strong, +.hljs-emphasis { + color: #a8a8a2; +} + +.hljs-bullet, +.hljs-quote, +.hljs-link, +.hljs-number, +.hljs-regexp, +.hljs-literal { + color: #6896ba; +} + +.hljs-code, +.hljs-selector-class { + color: #a6e22e; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-section, +.hljs-attribute, +.hljs-name, +.hljs-variable { + color: #cb7832; +} + +.hljs-params { + color: #b9b9b9; +} + +.hljs-string { + color: #6a8759; +} + +.hljs-subst, +.hljs-type, +.hljs-built_in, +.hljs-builtin-name, +.hljs-symbol, +.hljs-selector-id, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-template-tag, +.hljs-template-variable, +.hljs-addition { + color: #e0c46c; +} + +.hljs-comment, +.hljs-deletion, +.hljs-meta { + color: #7f7f7f; +} diff --git a/app/src/main/assets/highlight/styles/themes/dark.css b/app/src/main/assets/highlight/styles/themes/dark.css new file mode 100755 index 00000000..e99826c4 --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/dark.css @@ -0,0 +1,63 @@ +/* + +Dark style from softwaremaniacs.org (c) Ivan Sagalaev + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0px; + +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-section, +.hljs-link { + color: white; +} + +.hljs, +.hljs-subst { + color: #ddd; +} + +.hljs-string, +.hljs-title, +.hljs-name, +.hljs-type, +.hljs-attribute, +.hljs-symbol, +.hljs-bullet, +.hljs-built_in, +.hljs-addition, +.hljs-variable, +.hljs-template-tag, +.hljs-template-variable { + color: #d88; +} + +.hljs-comment, +.hljs-quote, +.hljs-deletion, +.hljs-meta { + color: #777; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-title, +.hljs-section, +.hljs-doctag, +.hljs-type, +.hljs-name, +.hljs-strong { + font-weight: bold; +} + +.hljs-emphasis { + font-style: italic; +} diff --git a/app/src/main/assets/highlight/styles/themes/darkula.css b/app/src/main/assets/highlight/styles/themes/darkula.css new file mode 100755 index 00000000..f4646c3c --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/darkula.css @@ -0,0 +1,6 @@ +/* + Deprecated due to a typo in the name and left here for compatibility purpose only. + Please use darcula.css instead. +*/ + +@import url('darcula.css'); diff --git a/app/src/main/assets/highlight/styles/themes/default.css b/app/src/main/assets/highlight/styles/themes/default.css new file mode 100755 index 00000000..b27a2ff8 --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/default.css @@ -0,0 +1,99 @@ +/* + +Original highlight.js style (c) Ivan Sagalaev + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0px; + +} + + +/* Base color: saturation 0; */ + +.hljs, +.hljs-subst { + color: #444; +} + +.hljs-comment { + color: #888888; +} + +.hljs-keyword, +.hljs-attribute, +.hljs-selector-tag, +.hljs-meta-keyword, +.hljs-doctag, +.hljs-name { + font-weight: bold; +} + + +/* User color: hue: 0 */ + +.hljs-type, +.hljs-string, +.hljs-number, +.hljs-selector-id, +.hljs-selector-class, +.hljs-quote, +.hljs-template-tag, +.hljs-deletion { + color: #880000; +} + +.hljs-title, +.hljs-section { + color: #880000; + font-weight: bold; +} + +.hljs-regexp, +.hljs-symbol, +.hljs-variable, +.hljs-template-variable, +.hljs-link, +.hljs-selector-attr, +.hljs-selector-pseudo { + color: #BC6060; +} + + +/* Language color: hue: 90; */ + +.hljs-literal { + color: #78A960; +} + +.hljs-built_in, +.hljs-bullet, +.hljs-code, +.hljs-addition { + color: #397300; +} + + +/* Meta color: hue: 200 */ + +.hljs-meta { + color: #1f7199; +} + +.hljs-meta-string { + color: #4d99bf; +} + + +/* Misc effects */ + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/app/src/main/assets/highlight/styles/themes/docco.css b/app/src/main/assets/highlight/styles/themes/docco.css new file mode 100755 index 00000000..f4e1cabc --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/docco.css @@ -0,0 +1,97 @@ +/* +Docco style used in http://jashkenas.github.com/docco/ converted by Simon Madine (@thingsinjars) +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0px; + color: #000; + +} + +.hljs-comment, +.hljs-quote { + color: #408080; + font-style: italic; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-subst { + color: #954121; +} + +.hljs-number { + color: #40a070; +} + +.hljs-string, +.hljs-doctag { + color: #219161; +} + +.hljs-selector-id, +.hljs-selector-class, +.hljs-section, +.hljs-type { + color: #19469d; +} + +.hljs-params { + color: #00f; +} + +.hljs-title { + color: #458; + font-weight: bold; +} + +.hljs-tag, +.hljs-name, +.hljs-attribute { + color: #000080; + font-weight: normal; +} + +.hljs-variable, +.hljs-template-variable { + color: #008080; +} + +.hljs-regexp, +.hljs-link { + color: #b68; +} + +.hljs-symbol, +.hljs-bullet { + color: #990073; +} + +.hljs-built_in, +.hljs-builtin-name { + color: #0086b3; +} + +.hljs-meta { + color: #999; + font-weight: bold; +} + +.hljs-deletion { + +} + +.hljs-addition { + +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/app/src/main/assets/highlight/styles/themes/dracula.css b/app/src/main/assets/highlight/styles/themes/dracula.css new file mode 100755 index 00000000..ed96263e --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/dracula.css @@ -0,0 +1,76 @@ +/* + +Dracula Theme v1.2.0 + +https://github.com/zenorocha/dracula-theme + +Copyright 2015, All rights reserved + +Code licensed under the MIT license +http://zenorocha.mit-license.org + +@author Éverton Ribeiro +@author Zeno Rocha + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0px; + +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-section, +.hljs-link { + color: #8be9fd; +} + +.hljs-function .hljs-keyword { + color: #ff79c6; +} + +.hljs, +.hljs-subst { + color: #f8f8f2; +} + +.hljs-string, +.hljs-title, +.hljs-name, +.hljs-type, +.hljs-attribute, +.hljs-symbol, +.hljs-bullet, +.hljs-addition, +.hljs-variable, +.hljs-template-tag, +.hljs-template-variable { + color: #f1fa8c; +} + +.hljs-comment, +.hljs-quote, +.hljs-deletion, +.hljs-meta { + color: #6272a4; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-title, +.hljs-section, +.hljs-doctag, +.hljs-type, +.hljs-name, +.hljs-strong { + font-weight: bold; +} + +.hljs-emphasis { + font-style: italic; +} diff --git a/app/src/main/assets/highlight/styles/themes/far.css b/app/src/main/assets/highlight/styles/themes/far.css new file mode 100755 index 00000000..454937e5 --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/far.css @@ -0,0 +1,71 @@ +/* + +FAR Style (c) MajestiC + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0px; + +} + +.hljs, +.hljs-subst { + color: #0ff; +} + +.hljs-string, +.hljs-attribute, +.hljs-symbol, +.hljs-bullet, +.hljs-built_in, +.hljs-builtin-name, +.hljs-template-tag, +.hljs-template-variable, +.hljs-addition { + color: #ff0; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-section, +.hljs-type, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-variable { + color: #fff; +} + +.hljs-comment, +.hljs-quote, +.hljs-doctag, +.hljs-deletion { + color: #888; +} + +.hljs-number, +.hljs-regexp, +.hljs-literal, +.hljs-link { + color: #0f0; +} + +.hljs-meta { + color: #008080; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-title, +.hljs-section, +.hljs-name, +.hljs-strong { + font-weight: bold; +} + +.hljs-emphasis { + font-style: italic; +} diff --git a/app/src/main/assets/highlight/styles/themes/foundation.css b/app/src/main/assets/highlight/styles/themes/foundation.css new file mode 100755 index 00000000..92509c6b --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/foundation.css @@ -0,0 +1,88 @@ +/* +Description: Foundation 4 docs style for highlight.js +Author: Dan Allen +Website: http://foundation.zurb.com/docs/ +Version: 1.0 +Date: 2013-04-02 +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0px; + color: black; +} + +.hljs-link, +.hljs-emphasis, +.hljs-attribute, +.hljs-addition { + color: #070; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong, +.hljs-string, +.hljs-deletion { + color: #d14; +} + +.hljs-strong { + font-weight: bold; +} + +.hljs-quote, +.hljs-comment { + color: #998; + font-style: italic; +} + +.hljs-section, +.hljs-title { + color: #900; +} + +.hljs-class .hljs-title, +.hljs-type { + color: #458; +} + +.hljs-variable, +.hljs-template-variable { + color: #336699; +} + +.hljs-bullet { + color: #997700; +} + +.hljs-meta { + color: #3344bb; +} + +.hljs-code, +.hljs-number, +.hljs-literal, +.hljs-keyword, +.hljs-selector-tag { + color: #099; +} + +.hljs-regexp { + background-color: #fff0ff; + color: #880088; +} + +.hljs-symbol { + color: #990073; +} + +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #007700; +} diff --git a/app/src/main/assets/highlight/styles/themes/github-gist.css b/app/src/main/assets/highlight/styles/themes/github-gist.css new file mode 100755 index 00000000..218b52d4 --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/github-gist.css @@ -0,0 +1,70 @@ +/** + * GitHub Gist Theme + * Author : Louis Barranqueiro - https://github.com/LouisBarranqueiro + */ + +.hljs { + display: block; + padding: 0px; + color: #333333; + overflow-x: auto; +} + +.hljs-comment, +.hljs-meta { + color: #969896; +} + +.hljs-string, +.hljs-variable, +.hljs-template-variable, +.hljs-strong, +.hljs-emphasis, +.hljs-quote { + color: #df5000; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-type { + color: #a71d5d; +} + +.hljs-literal, +.hljs-symbol, +.hljs-bullet, +.hljs-attribute { + color: #0086b3; +} + +.hljs-section, +.hljs-name { + color: #63a35c; +} + +.hljs-tag { + color: #333333; +} + +.hljs-title, +.hljs-attr, +.hljs-selector-id, +.hljs-selector-class, +.hljs-selector-attr, +.hljs-selector-pseudo { + color: #795da3; +} + +.hljs-addition { + color: #55a532; + background-color: #eaffea; +} + +.hljs-deletion { + color: #bd2c00; + background-color: #ffecec; +} + +.hljs-link { + text-decoration: underline; +} diff --git a/app/src/main/assets/highlight/styles/themes/github.css b/app/src/main/assets/highlight/styles/themes/github.css new file mode 100755 index 00000000..ebddd786 --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/github.css @@ -0,0 +1,99 @@ +/* + +github.com style (c) Vasily Polovnyov + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0px; + color: #333; + +} + +.hljs-comment, +.hljs-quote { + color: #998; + font-style: italic; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-subst { + color: #333; + font-weight: bold; +} + +.hljs-number, +.hljs-literal, +.hljs-variable, +.hljs-template-variable, +.hljs-tag .hljs-attr { + color: #008080; +} + +.hljs-string, +.hljs-doctag { + color: #d14; +} + +.hljs-title, +.hljs-section, +.hljs-selector-id { + color: #900; + font-weight: bold; +} + +.hljs-subst { + font-weight: normal; +} + +.hljs-type, +.hljs-class .hljs-title { + color: #458; + font-weight: bold; +} + +.hljs-tag, +.hljs-name, +.hljs-attribute { + color: #000080; + font-weight: normal; +} + +.hljs-regexp, +.hljs-link { + color: #009926; +} + +.hljs-symbol, +.hljs-bullet { + color: #990073; +} + +.hljs-built_in, +.hljs-builtin-name { + color: #0086b3; +} + +.hljs-meta { + color: #999; + font-weight: bold; +} + +.hljs-deletion { + +} + +.hljs-addition { + +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/app/src/main/assets/highlight/styles/themes/googlecode.css b/app/src/main/assets/highlight/styles/themes/googlecode.css new file mode 100755 index 00000000..9453ecb9 --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/googlecode.css @@ -0,0 +1,88 @@ +/* + +Google Code style (c) Aahan Krish + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0px; + color: black; +} + +.hljs-comment, +.hljs-quote { + color: #800; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-section, +.hljs-title, +.hljs-name { + color: #008; +} + +.hljs-variable, +.hljs-template-variable { + color: #660; +} + +.hljs-string, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-regexp { + color: #080; +} + +.hljs-literal, +.hljs-symbol, +.hljs-bullet, +.hljs-meta, +.hljs-number, +.hljs-link { + color: #066; +} + +.hljs-title, +.hljs-doctag, +.hljs-type, +.hljs-attr, +.hljs-built_in, +.hljs-builtin-name, +.hljs-params { + color: #606; +} + +.hljs-attribute, +.hljs-subst { + color: #000; +} + +.hljs-formula { + background-color: #eee; + font-style: italic; +} + +.hljs-selector-id, +.hljs-selector-class { + color: #9B703F +} + +.hljs-addition { + background-color: #baeeba; +} + +.hljs-deletion { + background-color: #ffc8bd; +} + +.hljs-doctag, +.hljs-strong { + font-weight: bold; +} + +.hljs-emphasis { + font-style: italic; +} diff --git a/app/src/main/assets/highlight/styles/themes/grayscale.css b/app/src/main/assets/highlight/styles/themes/grayscale.css new file mode 100755 index 00000000..a4eb3aac --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/grayscale.css @@ -0,0 +1,100 @@ +/* + +grayscale style (c) MY Sun + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0px; + color: #333; + +} + +.hljs-comment, +.hljs-quote { + color: #777; + font-style: italic; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-subst { + color: #333; + font-weight: bold; +} + +.hljs-number, +.hljs-literal { + color: #777; +} + +.hljs-string, +.hljs-doctag, +.hljs-formula { + color: #333; +} + +.hljs-title, +.hljs-section, +.hljs-selector-id { + color: #000; + font-weight: bold; +} + +.hljs-subst { + font-weight: normal; +} + +.hljs-class .hljs-title, +.hljs-type, +.hljs-name { + color: #333; + font-weight: bold; +} + +.hljs-tag { + color: #333; +} + +.hljs-regexp { + color: #333; + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAICAYAAADA+m62AAAAPUlEQVQYV2NkQAN37979r6yszIgujiIAU4RNMVwhuiQ6H6wQl3XI4oy4FMHcCJPHcDS6J2A2EqUQpJhohQDexSef15DBCwAAAABJRU5ErkJggg==) repeat; +} + +.hljs-symbol, +.hljs-bullet, +.hljs-link { + color: #000; + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAKElEQVQIW2NkQAO7d+/+z4gsBhJwdXVlhAvCBECKwIIwAbhKZBUwBQA6hBpm5efZsgAAAABJRU5ErkJggg==) repeat; +} + +.hljs-built_in, +.hljs-builtin-name { + color: #000; + text-decoration: underline; +} + +.hljs-meta { + color: #999; + font-weight: bold; +} + +.hljs-deletion { + color: #fff; + background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAADCAYAAABS3WWCAAAAE0lEQVQIW2MMDQ39zzhz5kwIAQAyxweWgUHd1AAAAABJRU5ErkJggg==) repeat; +} + +.hljs-addition { + color: #000; + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAALUlEQVQYV2N89+7dfwYk8P79ewZBQUFkIQZGOiu6e/cuiptQHAPl0NtNxAQBAM97Oejj3Dg7AAAAAElFTkSuQmCC) repeat; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/app/src/main/assets/highlight/styles/themes/gruvbox-dark.css b/app/src/main/assets/highlight/styles/themes/gruvbox-dark.css new file mode 100755 index 00000000..5695ef60 --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/gruvbox-dark.css @@ -0,0 +1,108 @@ +/* + +Gruvbox style (dark) (c) Pavel Pertsev (original style at https://github.com/morhetz/gruvbox) + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0px; + +} + +.hljs, +.hljs-subst { + color: #ebdbb2; +} + +/* Gruvbox Red */ +.hljs-deletion, +.hljs-formula, +.hljs-keyword, +.hljs-link, +.hljs-selector-tag { + color: #fb4934; +} + +/* Gruvbox Blue */ +.hljs-built_in, +.hljs-emphasis, +.hljs-name, +.hljs-quote, +.hljs-strong, +.hljs-title, +.hljs-variable { + color: #83a598; +} + +/* Gruvbox Yellow */ +.hljs-attr, +.hljs-params, +.hljs-template-tag, +.hljs-type { + color: #fabd2f; +} + +/* Gruvbox Purple */ +.hljs-builtin-name, +.hljs-doctag, +.hljs-literal, +.hljs-number { + color: #8f3f71; +} + +/* Gruvbox Orange */ +.hljs-code, +.hljs-meta, +.hljs-regexp, +.hljs-selector-id, +.hljs-template-variable { + color: #fe8019; +} + +/* Gruvbox Green */ +.hljs-addition, +.hljs-meta-string, +.hljs-section, +.hljs-selector-attr, +.hljs-selector-class, +.hljs-string, +.hljs-symbol { + color: #b8bb26; +} + +/* Gruvbox Aqua */ +.hljs-attribute, +.hljs-bullet, +.hljs-class, +.hljs-function, +.hljs-function .hljs-keyword, +.hljs-meta-keyword, +.hljs-selector-pseudo, +.hljs-tag { + color: #8ec07c; +} + +/* Gruvbox Gray */ +.hljs-comment { + color: #928374; +} + +/* Gruvbox Purple */ +.hljs-link_label, +.hljs-literal, +.hljs-number { + color: #d3869b; +} + +.hljs-comment, +.hljs-emphasis { + font-style: italic; +} + +.hljs-section, +.hljs-strong, +.hljs-tag { + font-weight: bold; +} diff --git a/app/src/main/assets/highlight/styles/themes/gruvbox-light.css b/app/src/main/assets/highlight/styles/themes/gruvbox-light.css new file mode 100755 index 00000000..38152214 --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/gruvbox-light.css @@ -0,0 +1,108 @@ +/* + +Gruvbox style (light) (c) Pavel Pertsev (original style at https://github.com/morhetz/gruvbox) + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0px; + +} + +.hljs, +.hljs-subst { + color: #3c3836; +} + +/* Gruvbox Red */ +.hljs-deletion, +.hljs-formula, +.hljs-keyword, +.hljs-link, +.hljs-selector-tag { + color: #9d0006; +} + +/* Gruvbox Blue */ +.hljs-built_in, +.hljs-emphasis, +.hljs-name, +.hljs-quote, +.hljs-strong, +.hljs-title, +.hljs-variable { + color: #076678; +} + +/* Gruvbox Yellow */ +.hljs-attr, +.hljs-params, +.hljs-template-tag, +.hljs-type { + color: #b57614; +} + +/* Gruvbox Purple */ +.hljs-builtin-name, +.hljs-doctag, +.hljs-literal, +.hljs-number { + color: #8f3f71; +} + +/* Gruvbox Orange */ +.hljs-code, +.hljs-meta, +.hljs-regexp, +.hljs-selector-id, +.hljs-template-variable { + color: #af3a03; +} + +/* Gruvbox Green */ +.hljs-addition, +.hljs-meta-string, +.hljs-section, +.hljs-selector-attr, +.hljs-selector-class, +.hljs-string, +.hljs-symbol { + color: #79740e; +} + +/* Gruvbox Aqua */ +.hljs-attribute, +.hljs-bullet, +.hljs-class, +.hljs-function, +.hljs-function .hljs-keyword, +.hljs-meta-keyword, +.hljs-selector-pseudo, +.hljs-tag { + color: #427b58; +} + +/* Gruvbox Gray */ +.hljs-comment { + color: #928374; +} + +/* Gruvbox Purple */ +.hljs-link_label, +.hljs-literal, +.hljs-number { + color: #8f3f71; +} + +.hljs-comment, +.hljs-emphasis { + font-style: italic; +} + +.hljs-section, +.hljs-strong, +.hljs-tag { + font-weight: bold; +} diff --git a/app/src/main/assets/highlight/styles/themes/hopscotch.css b/app/src/main/assets/highlight/styles/themes/hopscotch.css new file mode 100755 index 00000000..0f82c0bd --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/hopscotch.css @@ -0,0 +1,83 @@ +/* + * Hopscotch + * by Jan T. Sott + * https://github.com/idleberg/Hopscotch + * + * This work is licensed under the Creative Commons CC0 1.0 Universal License + */ + +/* Comment */ +.hljs-comment, +.hljs-quote { + color: #989498; +} + +/* Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-link, +.hljs-deletion { + color: #dd464c; +} + +/* Orange */ +.hljs-number, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #fd8b19; +} + +/* Yellow */ +.hljs-class .hljs-title { + color: #fdcc59; +} + +/* Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #8fc13e; +} + +/* Aqua */ +.hljs-meta { + color: #149b93; +} + +/* Blue */ +.hljs-function, +.hljs-section, +.hljs-title { + color: #1290bf; +} + +/* Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #c85e7c; +} + +.hljs { + display: block; + + color: #b9b5b8; + padding: 0px; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/app/src/main/assets/highlight/styles/themes/hybrid.css b/app/src/main/assets/highlight/styles/themes/hybrid.css new file mode 100755 index 00000000..488b20db --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/hybrid.css @@ -0,0 +1,102 @@ +/* + +vim-hybrid theme by w0ng (https://github.com/w0ng/vim-hybrid) + +*/ + +/*background color*/ +.hljs { + display: block; + overflow-x: auto; + padding: 0px; + +} + +/*selection color*/ +.hljs::selection, +.hljs span::selection { + +} + +.hljs::-moz-selection, +.hljs span::-moz-selection { + +} + +/*foreground color*/ +.hljs { + color: #c5c8c6; +} + +/*color: fg_yellow*/ +.hljs-title, +.hljs-name { + color: #f0c674; +} + +/*color: fg_comment*/ +.hljs-comment, +.hljs-meta, +.hljs-meta .hljs-keyword { + color: #707880; +} + +/*color: fg_red*/ +.hljs-number, +.hljs-symbol, +.hljs-literal, +.hljs-deletion, +.hljs-link { + color: #cc6666 +} + +/*color: fg_green*/ +.hljs-string, +.hljs-doctag, +.hljs-addition, +.hljs-regexp, +.hljs-selector-attr, +.hljs-selector-pseudo { + color: #b5bd68; +} + +/*color: fg_purple*/ +.hljs-attribute, +.hljs-code, +.hljs-selector-id { + color: #b294bb; +} + +/*color: fg_blue*/ +.hljs-keyword, +.hljs-selector-tag, +.hljs-bullet, +.hljs-tag { + color: #81a2be; +} + +/*color: fg_aqua*/ +.hljs-subst, +.hljs-variable, +.hljs-template-tag, +.hljs-template-variable { + color: #8abeb7; +} + +/*color: fg_orange*/ +.hljs-type, +.hljs-built_in, +.hljs-builtin-name, +.hljs-quote, +.hljs-section, +.hljs-selector-class { + color: #de935f; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/app/src/main/assets/highlight/styles/themes/idea.css b/app/src/main/assets/highlight/styles/themes/idea.css new file mode 100755 index 00000000..33ad9940 --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/idea.css @@ -0,0 +1,97 @@ +/* + +Intellij Idea-like styling (c) Vasily Polovnyov + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0px; + color: #000; + +} + +.hljs-subst, +.hljs-title { + font-weight: normal; + color: #000; +} + +.hljs-comment, +.hljs-quote { + color: #808080; + font-style: italic; +} + +.hljs-meta { + color: #808000; +} + +.hljs-tag { + +} + +.hljs-section, +.hljs-name, +.hljs-literal, +.hljs-keyword, +.hljs-selector-tag, +.hljs-type, +.hljs-selector-id, +.hljs-selector-class { + font-weight: bold; + color: #000080; +} + +.hljs-attribute, +.hljs-number, +.hljs-regexp, +.hljs-link { + font-weight: bold; + color: #0000ff; +} + +.hljs-number, +.hljs-regexp, +.hljs-link { + font-weight: normal; +} + +.hljs-string { + color: #008000; + font-weight: bold; +} + +.hljs-symbol, +.hljs-bullet, +.hljs-formula { + color: #000; + + font-style: italic; +} + +.hljs-doctag { + text-decoration: underline; +} + +.hljs-variable, +.hljs-template-variable { + color: #660e7a; +} + +.hljs-addition { + +} + +.hljs-deletion { + +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/app/src/main/assets/highlight/styles/themes/ir-black.css b/app/src/main/assets/highlight/styles/themes/ir-black.css new file mode 100755 index 00000000..633ec753 --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/ir-black.css @@ -0,0 +1,73 @@ +/* + IR_Black style (c) Vasily Mikhailitchenko +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0px; + + color: #f8f8f8; +} + +.hljs-comment, +.hljs-quote, +.hljs-meta { + color: #7c7c7c; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-tag, +.hljs-name { + color: #96cbfe; +} + +.hljs-attribute, +.hljs-selector-id { + color: #ffffb6; +} + +.hljs-string, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-addition { + color: #a8ff60; +} + +.hljs-subst { + color: #daefa3; +} + +.hljs-regexp, +.hljs-link { + color: #e9c062; +} + +.hljs-title, +.hljs-section, +.hljs-type, +.hljs-doctag { + color: #ffffb6; +} + +.hljs-symbol, +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-literal { + color: #c6c5fe; +} + +.hljs-number, +.hljs-deletion { + color:#ff73fd; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/app/src/main/assets/highlight/styles/themes/kimbie.dark.css b/app/src/main/assets/highlight/styles/themes/kimbie.dark.css new file mode 100755 index 00000000..a8a1d20d --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/kimbie.dark.css @@ -0,0 +1,74 @@ +/* + Name: Kimbie (dark) + Author: Jan T. Sott + License: Creative Commons Attribution-ShareAlike 4.0 Unported License + URL: https://github.com/idleberg/Kimbie-highlight.js +*/ + +/* Kimbie Comment */ +.hljs-comment, +.hljs-quote { + color: #d6baad; +} + +/* Kimbie Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-meta { + color: #dc3958; +} + +/* Kimbie Orange */ +.hljs-number, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-deletion, +.hljs-link { + color: #f79a32; +} + +/* Kimbie Yellow */ +.hljs-title, +.hljs-section, +.hljs-attribute { + color: #f06431; +} + +/* Kimbie Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #889b4a; +} + +/* Kimbie Purple */ +.hljs-keyword, +.hljs-selector-tag, +.hljs-function { + color: #98676a; +} + +.hljs { + display: block; + overflow-x: auto; + + color: #d3af86; + padding: 0px; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/app/src/main/assets/highlight/styles/themes/kimbie.light.css b/app/src/main/assets/highlight/styles/themes/kimbie.light.css new file mode 100755 index 00000000..9e2438dd --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/kimbie.light.css @@ -0,0 +1,74 @@ +/* + Name: Kimbie (light) + Author: Jan T. Sott + License: Creative Commons Attribution-ShareAlike 4.0 Unported License + URL: https://github.com/idleberg/Kimbie-highlight.js +*/ + +/* Kimbie Comment */ +.hljs-comment, +.hljs-quote { + color: #a57a4c; +} + +/* Kimbie Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-meta { + color: #dc3958; +} + +/* Kimbie Orange */ +.hljs-number, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-deletion, +.hljs-link { + color: #f79a32; +} + +/* Kimbie Yellow */ +.hljs-title, +.hljs-section, +.hljs-attribute { + color: #f06431; +} + +/* Kimbie Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #889b4a; +} + +/* Kimbie Purple */ +.hljs-keyword, +.hljs-selector-tag, +.hljs-function { + color: #98676a; +} + +.hljs { + display: block; + overflow-x: auto; + + color: #84613d; + padding: 0px; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/app/src/main/assets/highlight/styles/themes/magula.css b/app/src/main/assets/highlight/styles/themes/magula.css new file mode 100755 index 00000000..d92ce9f8 --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/magula.css @@ -0,0 +1,69 @@ +/* +Description: Magula style for highligh.js +Author: Ruslan Keba +Website: http://rukeba.com/ +Version: 1.0 +Date: 2009-01-03 +Music: Aphex Twin / Xtal +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0px; +} + +.hljs, +.hljs-subst { + color: black; +} + +.hljs-string, +.hljs-title, +.hljs-symbol, +.hljs-bullet, +.hljs-attribute, +.hljs-addition, +.hljs-variable, +.hljs-template-tag, +.hljs-template-variable { + color: #050; +} + +.hljs-comment, +.hljs-quote { + color: #777; +} + +.hljs-number, +.hljs-regexp, +.hljs-literal, +.hljs-type, +.hljs-link { + color: #800; +} + +.hljs-deletion, +.hljs-meta { + color: #00e; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-doctag, +.hljs-title, +.hljs-section, +.hljs-built_in, +.hljs-tag, +.hljs-name { + font-weight: bold; + color: navy; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/app/src/main/assets/highlight/styles/themes/mono-blue.css b/app/src/main/assets/highlight/styles/themes/mono-blue.css new file mode 100755 index 00000000..ebf6eff0 --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/mono-blue.css @@ -0,0 +1,59 @@ +/* + Five-color theme from a single blue hue. +*/ +.hljs { + display: block; + overflow-x: auto; + padding: 0px; + +} + +.hljs { + color: #00193a; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-title, +.hljs-section, +.hljs-doctag, +.hljs-name, +.hljs-strong { + font-weight: bold; +} + +.hljs-comment { + color: #738191; +} + +.hljs-string, +.hljs-title, +.hljs-section, +.hljs-built_in, +.hljs-literal, +.hljs-type, +.hljs-addition, +.hljs-tag, +.hljs-quote, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #0048ab; +} + +.hljs-meta, +.hljs-subst, +.hljs-symbol, +.hljs-regexp, +.hljs-attribute, +.hljs-deletion, +.hljs-variable, +.hljs-template-variable, +.hljs-link, +.hljs-bullet { + color: #4c81c9; +} + +.hljs-emphasis { + font-style: italic; +} diff --git a/app/src/main/assets/highlight/styles/themes/monokai-sublime.css b/app/src/main/assets/highlight/styles/themes/monokai-sublime.css new file mode 100755 index 00000000..aaef6b34 --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/monokai-sublime.css @@ -0,0 +1,83 @@ +/* + +Monokai Sublime style. Derived from Monokai by noformnocontent http://nn.mit-license.org/ + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0px; + +} + +.hljs, +.hljs-tag, +.hljs-subst { + color: #f8f8f2; +} + +.hljs-strong, +.hljs-emphasis { + color: #a8a8a2; +} + +.hljs-bullet, +.hljs-quote, +.hljs-number, +.hljs-regexp, +.hljs-literal, +.hljs-link { + color: #ae81ff; +} + +.hljs-code, +.hljs-title, +.hljs-section, +.hljs-selector-class { + color: #a6e22e; +} + +.hljs-strong { + font-weight: bold; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-name, +.hljs-attr { + color: #f92672; +} + +.hljs-symbol, +.hljs-attribute { + color: #66d9ef; +} + +.hljs-params, +.hljs-class .hljs-title { + color: #f8f8f2; +} + +.hljs-string, +.hljs-type, +.hljs-built_in, +.hljs-builtin-name, +.hljs-selector-id, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-addition, +.hljs-variable, +.hljs-template-variable { + color: #e6db74; +} + +.hljs-comment, +.hljs-deletion, +.hljs-meta { + color: #75715e; +} diff --git a/app/src/main/assets/highlight/styles/themes/monokai.css b/app/src/main/assets/highlight/styles/themes/monokai.css new file mode 100755 index 00000000..03b62e45 --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/monokai.css @@ -0,0 +1,70 @@ +/* +Monokai style - ported by Luigi Maselli - http://grigio.org +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0px; + color: #ddd; +} + +.hljs-tag, +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-strong, +.hljs-name { + color: #f92672; +} + +.hljs-code { + color: #66d9ef; +} + +.hljs-class .hljs-title { + color: white; +} + +.hljs-attribute, +.hljs-symbol, +.hljs-regexp, +.hljs-link { + color: #bf79db; +} + +.hljs-string, +.hljs-bullet, +.hljs-subst, +.hljs-title, +.hljs-section, +.hljs-emphasis, +.hljs-type, +.hljs-built_in, +.hljs-builtin-name, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-addition, +.hljs-variable, +.hljs-template-tag, +.hljs-template-variable { + color: #a6e22e; +} + +.hljs-comment, +.hljs-quote, +.hljs-deletion, +.hljs-meta { + color: #75715e; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-doctag, +.hljs-title, +.hljs-section, +.hljs-type, +.hljs-selector-id { + font-weight: bold; +} diff --git a/app/src/main/assets/highlight/styles/themes/obsidian.css b/app/src/main/assets/highlight/styles/themes/obsidian.css new file mode 100755 index 00000000..c32dff9a --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/obsidian.css @@ -0,0 +1,88 @@ +/** + * Obsidian style + * ported by Alexander Marenin (http://github.com/ioncreature) + */ + +.hljs { + display: block; + overflow-x: auto; + padding: 0px; + +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-selector-id { + color: #93c763; +} + +.hljs-number { + color: #ffcd22; +} + +.hljs { + color: #e0e2e4; +} + +.hljs-attribute { + color: #668bb0; +} + +.hljs-code, +.hljs-class .hljs-title, +.hljs-section { + color: white; +} + +.hljs-regexp, +.hljs-link { + color: #d39745; +} + +.hljs-meta { + color: #557182; +} + +.hljs-tag, +.hljs-name, +.hljs-bullet, +.hljs-subst, +.hljs-emphasis, +.hljs-type, +.hljs-built_in, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-addition, +.hljs-variable, +.hljs-template-tag, +.hljs-template-variable { + color: #8cbbad; +} + +.hljs-string, +.hljs-symbol { + color: #ec7600; +} + +.hljs-comment, +.hljs-quote, +.hljs-deletion { + color: #818e96; +} + +.hljs-selector-class { + color: #A082BD +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-doctag, +.hljs-title, +.hljs-section, +.hljs-type, +.hljs-name, +.hljs-strong { + font-weight: bold; +} diff --git a/app/src/main/assets/highlight/styles/themes/ocean.css b/app/src/main/assets/highlight/styles/themes/ocean.css new file mode 100755 index 00000000..a308fbe1 --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/ocean.css @@ -0,0 +1,74 @@ +/* Ocean Dark Theme */ +/* https://github.com/gavsiu */ +/* Original theme - https://github.com/chriskempson/base16 */ + +/* Ocean Comment */ +.hljs-comment, +.hljs-quote { + color: #65737e; +} + +/* Ocean Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-deletion { + color: #bf616a; +} + +/* Ocean Orange */ +.hljs-number, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-meta, +.hljs-link { + color: #d08770; +} + +/* Ocean Yellow */ +.hljs-attribute { + color: #ebcb8b; +} + +/* Ocean Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #a3be8c; +} + +/* Ocean Blue */ +.hljs-title, +.hljs-section { + color: #8fa1b3; +} + +/* Ocean Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #b48ead; +} + +.hljs { + display: block; + overflow-x: auto; + + color: #c0c5ce; + padding: 0px; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/app/src/main/assets/highlight/styles/themes/paraiso-dark.css b/app/src/main/assets/highlight/styles/themes/paraiso-dark.css new file mode 100755 index 00000000..47fbcddb --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/paraiso-dark.css @@ -0,0 +1,72 @@ +/* + Paraíso (dark) + Created by Jan T. Sott (http://github.com/idleberg) + Inspired by the art of Rubens LP (http://www.rubenslp.com.br) +*/ + +/* Paraíso Comment */ +.hljs-comment, +.hljs-quote { + color: #8d8687; +} + +/* Paraíso Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-link, +.hljs-meta { + color: #ef6155; +} + +/* Paraíso Orange */ +.hljs-number, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-deletion { + color: #f99b15; +} + +/* Paraíso Yellow */ +.hljs-title, +.hljs-section, +.hljs-attribute { + color: #fec418; +} + +/* Paraíso Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #48b685; +} + +/* Paraíso Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #815ba4; +} + +.hljs { + display: block; + overflow-x: auto; + + color: #a39e9b; + padding: 0px; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/app/src/main/assets/highlight/styles/themes/paraiso-light.css b/app/src/main/assets/highlight/styles/themes/paraiso-light.css new file mode 100755 index 00000000..3128b642 --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/paraiso-light.css @@ -0,0 +1,72 @@ +/* + Paraíso (light) + Created by Jan T. Sott (http://github.com/idleberg) + Inspired by the art of Rubens LP (http://www.rubenslp.com.br) +*/ + +/* Paraíso Comment */ +.hljs-comment, +.hljs-quote { + color: #776e71; +} + +/* Paraíso Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-link, +.hljs-meta { + color: #ef6155; +} + +/* Paraíso Orange */ +.hljs-number, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-deletion { + color: #f99b15; +} + +/* Paraíso Yellow */ +.hljs-title, +.hljs-section, +.hljs-attribute { + color: #fec418; +} + +/* Paraíso Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #48b685; +} + +/* Paraíso Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #815ba4; +} + +.hljs { + display: block; + overflow-x: auto; + + color: #4f424c; + padding: 0px; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/app/src/main/assets/highlight/styles/themes/pojoaque.css b/app/src/main/assets/highlight/styles/themes/pojoaque.css new file mode 100755 index 00000000..023e5d01 --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/pojoaque.css @@ -0,0 +1,82 @@ +/* + +Pojoaque Style by Jason Tate +http://web-cms-designs.com/ftopict-10-pojoaque-style-for-highlight-js-code-highlighter.html +Based on Solarized Style from http://ethanschoonover.com/solarized + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0px; + color: #dccf8f; +} + +.hljs-comment, +.hljs-quote { + color: #586e75; + font-style: italic; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-addition { + color: #b64926; +} + +.hljs-number, +.hljs-string, +.hljs-doctag, +.hljs-regexp { + color: #468966; +} + +.hljs-title, +.hljs-section, +.hljs-built_in, +.hljs-name { + color: #ffb03b; +} + +.hljs-variable, +.hljs-template-variable, +.hljs-class .hljs-title, +.hljs-type, +.hljs-tag { + color: #b58900; +} + +.hljs-attribute { + color: #b89859; +} + +.hljs-symbol, +.hljs-bullet, +.hljs-link, +.hljs-subst, +.hljs-meta { + color: #cb4b16; +} + +.hljs-deletion { + color: #dc322f; +} + +.hljs-selector-id, +.hljs-selector-class { + color: #d3a60c; +} + +.hljs-formula { + +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/app/src/main/assets/highlight/styles/themes/purebasic.css b/app/src/main/assets/highlight/styles/themes/purebasic.css new file mode 100755 index 00000000..8373bfa5 --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/purebasic.css @@ -0,0 +1,96 @@ +/* + +PureBASIC native IDE style ( version 1.0 - April 2016 ) + +by Tristano Ajmone + +Public Domain + +NOTE_1: PureBASIC code syntax highlighting only applies the following classes: + .hljs-comment + .hljs-function + .hljs-keywords + .hljs-string + .hljs-symbol + + Other classes are added here for the benefit of styling other languages with the look and feel of PureBASIC native IDE style. + If you need to customize a stylesheet for PureBASIC only, remove all non-relevant classes -- PureBASIC-related classes are followed by + a "--- used for PureBASIC ... ---" comment on same line. + +NOTE_2: Color names provided in comments were derived using "Name that Color" online tool: + http://chir.ag/projects/name-that-color +*/ + +.hljs { /* Common set of rules required by highlight.js (don'r remove!) */ + display: block; + overflow-x: auto; + padding: 0px; + /* Half and Half (approx.) */ +/* --- Uncomment to add PureBASIC native IDE styled font! + font-family: Consolas; +*/ +} + +.hljs, /* --- used for PureBASIC base color --- */ +.hljs-type, /* --- used for PureBASIC Procedures return type --- */ +.hljs-function, /* --- used for wrapping PureBASIC Procedures definitions --- */ +.hljs-name, +.hljs-number, +.hljs-attr, +.hljs-params, +.hljs-subst { + color: #000000; /* Black */ +} + +.hljs-comment, /* --- used for PureBASIC Comments --- */ +.hljs-regexp, +.hljs-section, +.hljs-selector-pseudo, +.hljs-addition { + color: #00AAAA; /* Persian Green (approx.) */ +} + +.hljs-title, /* --- used for PureBASIC Procedures Names --- */ +.hljs-tag, +.hljs-variable, +.hljs-code { + color: #006666; /* Blue Stone (approx.) */ +} + +.hljs-keyword, /* --- used for PureBASIC Keywords --- */ +.hljs-class, +.hljs-meta-keyword, +.hljs-selector-class, +.hljs-built_in, +.hljs-builtin-name { + color: #006666; /* Blue Stone (approx.) */ + font-weight: bold; +} + +.hljs-string, /* --- used for PureBASIC Strings --- */ +.hljs-selector-attr { + color: #0080FF; /* Azure Radiance (approx.) */ +} + +.hljs-symbol, /* --- used for PureBASIC Constants --- */ +.hljs-link, +.hljs-deletion, +.hljs-attribute { + color: #924B72; /* Cannon Pink (approx.) */ +} + +.hljs-meta, +.hljs-literal, +.hljs-selector-id { + color: #924B72; /* Cannon Pink (approx.) */ + font-weight: bold; +} + +.hljs-strong, +.hljs-name { + font-weight: bold; +} + +.hljs-emphasis { + font-style: italic; +} diff --git a/app/src/main/assets/highlight/styles/themes/qtcreator_dark.css b/app/src/main/assets/highlight/styles/themes/qtcreator_dark.css new file mode 100755 index 00000000..4ce2781b --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/qtcreator_dark.css @@ -0,0 +1,83 @@ +/* + +Qt Creator dark color scheme + +*/ + + +.hljs { + display: block; + overflow-x: auto; + padding: 0px; + +} + +.hljs, +.hljs-subst, +.hljs-tag, +.hljs-title { + color: #aaaaaa; +} + +.hljs-strong, +.hljs-emphasis { + color: #a8a8a2; +} + +.hljs-bullet, +.hljs-quote, +.hljs-number, +.hljs-regexp, +.hljs-literal { + color: #ff55ff; +} + +.hljs-code +.hljs-selector-class { + color: #aaaaff; +} + +.hljs-emphasis, +.hljs-stronge, +.hljs-type { + font-style: italic; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-function, +.hljs-section, +.hljs-symbol, +.hljs-name { + color: #ffff55; +} + +.hljs-attribute { + color: #ff5555; +} + +.hljs-variable, +.hljs-params, +.hljs-class .hljs-title { + color: #8888ff; +} + +.hljs-string, +.hljs-selector-id, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-type, +.hljs-built_in, +.hljs-builtin-name, +.hljs-template-tag, +.hljs-template-variable, +.hljs-addition, +.hljs-link { + color: #ff55ff; +} + +.hljs-comment, +.hljs-meta, +.hljs-deletion { + color: #55ffff; +} diff --git a/app/src/main/assets/highlight/styles/themes/qtcreator_light.css b/app/src/main/assets/highlight/styles/themes/qtcreator_light.css new file mode 100755 index 00000000..0df3dd82 --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/qtcreator_light.css @@ -0,0 +1,83 @@ +/* + +Qt Creator light color scheme + +*/ + + +.hljs { + display: block; + overflow-x: auto; + padding: 0px; + +} + +.hljs, +.hljs-subst, +.hljs-tag, +.hljs-title { + color: #000000; +} + +.hljs-strong, +.hljs-emphasis { + color: #000000; +} + +.hljs-bullet, +.hljs-quote, +.hljs-number, +.hljs-regexp, +.hljs-literal { + color: #000080; +} + +.hljs-code +.hljs-selector-class { + color: #800080; +} + +.hljs-emphasis, +.hljs-stronge, +.hljs-type { + font-style: italic; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-function, +.hljs-section, +.hljs-symbol, +.hljs-name { + color: #808000; +} + +.hljs-attribute { + color: #800000; +} + +.hljs-variable, +.hljs-params, +.hljs-class .hljs-title { + color: #0055AF; +} + +.hljs-string, +.hljs-selector-id, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-type, +.hljs-built_in, +.hljs-builtin-name, +.hljs-template-tag, +.hljs-template-variable, +.hljs-addition, +.hljs-link { + color: #008000; +} + +.hljs-comment, +.hljs-meta, +.hljs-deletion { + color: #008000; +} diff --git a/app/src/main/assets/highlight/styles/themes/railscasts.css b/app/src/main/assets/highlight/styles/themes/railscasts.css new file mode 100755 index 00000000..be2c15cf --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/railscasts.css @@ -0,0 +1,106 @@ +/* + +Railscasts-like style (c) Visoft, Inc. (Damien White) + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0px; + + color: #e6e1dc; +} + +.hljs-comment, +.hljs-quote { + color: #bc9458; + font-style: italic; +} + +.hljs-keyword, +.hljs-selector-tag { + color: #c26230; +} + +.hljs-string, +.hljs-number, +.hljs-regexp, +.hljs-variable, +.hljs-template-variable { + color: #a5c261; +} + +.hljs-subst { + color: #519f50; +} + +.hljs-tag, +.hljs-name { + color: #e8bf6a; +} + +.hljs-type { + color: #da4939; +} + + +.hljs-symbol, +.hljs-bullet, +.hljs-built_in, +.hljs-builtin-name, +.hljs-attr, +.hljs-link { + color: #6d9cbe; +} + +.hljs-params { + color: #d0d0ff; +} + +.hljs-attribute { + color: #cda869; +} + +.hljs-meta { + color: #9b859d; +} + +.hljs-title, +.hljs-section { + color: #ffc66d; +} + +.hljs-addition { + background-color: #144212; + color: #e6e1dc; + display: inline-block; + width: 100%; +} + +.hljs-deletion { + background-color: #600; + color: #e6e1dc; + display: inline-block; + width: 100%; +} + +.hljs-selector-class { + color: #9b703f; +} + +.hljs-selector-id { + color: #8b98ab; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} + +.hljs-link { + text-decoration: underline; +} diff --git a/app/src/main/assets/highlight/styles/themes/rainbow.css b/app/src/main/assets/highlight/styles/themes/rainbow.css new file mode 100755 index 00000000..5bc848cf --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/rainbow.css @@ -0,0 +1,85 @@ +/* + +Style with support for rainbow parens + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0px; + + color: #d1d9e1; +} + + +.hljs-comment, +.hljs-quote { + color: #969896; + font-style: italic; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-type, +.hljs-addition { + color: #cc99cc; +} + +.hljs-number, +.hljs-selector-attr, +.hljs-selector-pseudo { + color: #f99157; +} + +.hljs-string, +.hljs-doctag, +.hljs-regexp { + color: #8abeb7; +} + +.hljs-title, +.hljs-name, +.hljs-section, +.hljs-built_in { + color: #b5bd68; +} + +.hljs-variable, +.hljs-template-variable, +.hljs-selector-id, +.hljs-class .hljs-title { + color: #ffcc66; +} + +.hljs-section, +.hljs-name, +.hljs-strong { + font-weight: bold; +} + +.hljs-symbol, +.hljs-bullet, +.hljs-subst, +.hljs-meta, +.hljs-link { + color: #f99157; +} + +.hljs-deletion { + color: #dc322f; +} + +.hljs-formula { + +} + +.hljs-attr, +.hljs-attribute { + color: #81a2be; +} + +.hljs-emphasis { + font-style: italic; +} diff --git a/app/src/main/assets/highlight/styles/themes/routeros.css b/app/src/main/assets/highlight/styles/themes/routeros.css new file mode 100755 index 00000000..a7a436e0 --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/routeros.css @@ -0,0 +1,108 @@ +/* + + highlight.js style for Microtik RouterOS script + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0px; + +} + +/* Base color: saturation 0; */ + +.hljs, +.hljs-subst { + color: #444; +} + +.hljs-comment { + color: #888888; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-meta-keyword, +.hljs-doctag, +.hljs-name { + font-weight: bold; +} + +.hljs-attribute { + color: #0E9A00; +} + +.hljs-function { + color: #99069A; +} + +.hljs-builtin-name { + color: #99069A; +} + +/* User color: hue: 0 */ + +.hljs-type, +.hljs-string, +.hljs-number, +.hljs-selector-id, +.hljs-selector-class, +.hljs-quote, +.hljs-template-tag, +.hljs-deletion { + color: #880000; +} + +.hljs-title, +.hljs-section { + color: #880000; + font-weight: bold; +} + +.hljs-regexp, +.hljs-symbol, +.hljs-variable, +.hljs-template-variable, +.hljs-link, +.hljs-selector-attr, +.hljs-selector-pseudo { + color: #BC6060; +} + + +/* Language color: hue: 90; */ + +.hljs-literal { + color: #78A960; +} + +.hljs-built_in, +.hljs-bullet, +.hljs-code, +.hljs-addition { + color: #0C9A9A; +} + + +/* Meta color: hue: 200 */ + +.hljs-meta { + color: #1f7199; +} + +.hljs-meta-string { + color: #4d99bf; +} + + +/* Misc effects */ + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/app/src/main/assets/highlight/styles/themes/school-book.css b/app/src/main/assets/highlight/styles/themes/school-book.css new file mode 100755 index 00000000..3e1afc2f --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/school-book.css @@ -0,0 +1,66 @@ +/* + +School Book style from goldblog.com.ua (c) Zaripov Yura + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 15px 0.5em 0.5em 30px; + font-size: 11px; + line-height:16px; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal { + color:#005599; + font-weight:bold; +} + +.hljs, +.hljs-subst { + color: #3e5915; +} + +.hljs-string, +.hljs-title, +.hljs-section, +.hljs-type, +.hljs-symbol, +.hljs-bullet, +.hljs-attribute, +.hljs-built_in, +.hljs-builtin-name, +.hljs-addition, +.hljs-variable, +.hljs-template-tag, +.hljs-template-variable, +.hljs-link { + color: #2c009f; +} + +.hljs-comment, +.hljs-quote, +.hljs-deletion, +.hljs-meta { + color: #e60415; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-doctag, +.hljs-title, +.hljs-section, +.hljs-type, +.hljs-name, +.hljs-selector-id, +.hljs-strong { + font-weight: bold; +} + +.hljs-emphasis { + font-style: italic; +} diff --git a/app/src/main/assets/highlight/styles/themes/solarized-dark.css b/app/src/main/assets/highlight/styles/themes/solarized-dark.css new file mode 100755 index 00000000..9810cf5c --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/solarized-dark.css @@ -0,0 +1,84 @@ +/* + +Orginal Style from ethanschoonover.com/solarized (c) Jeremy Hull + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0px; + + color: #839496; +} + +.hljs-comment, +.hljs-quote { + color: #586e75; +} + +/* Solarized Green */ +.hljs-keyword, +.hljs-selector-tag, +.hljs-addition { + color: #859900; +} + +/* Solarized Cyan */ +.hljs-number, +.hljs-string, +.hljs-meta .hljs-meta-string, +.hljs-literal, +.hljs-doctag, +.hljs-regexp { + color: #2aa198; +} + +/* Solarized Blue */ +.hljs-title, +.hljs-section, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #268bd2; +} + +/* Solarized Yellow */ +.hljs-attribute, +.hljs-attr, +.hljs-variable, +.hljs-template-variable, +.hljs-class .hljs-title, +.hljs-type { + color: #b58900; +} + +/* Solarized Orange */ +.hljs-symbol, +.hljs-bullet, +.hljs-subst, +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-link { + color: #cb4b16; +} + +/* Solarized Red */ +.hljs-built_in, +.hljs-deletion { + color: #dc322f; +} + +.hljs-formula { + +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/app/src/main/assets/highlight/styles/themes/solarized-light.css b/app/src/main/assets/highlight/styles/themes/solarized-light.css new file mode 100755 index 00000000..8f6c19bf --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/solarized-light.css @@ -0,0 +1,84 @@ +/* + +Orginal Style from ethanschoonover.com/solarized (c) Jeremy Hull + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0px; + + color: #657b83; +} + +.hljs-comment, +.hljs-quote { + color: #93a1a1; +} + +/* Solarized Green */ +.hljs-keyword, +.hljs-selector-tag, +.hljs-addition { + color: #859900; +} + +/* Solarized Cyan */ +.hljs-number, +.hljs-string, +.hljs-meta .hljs-meta-string, +.hljs-literal, +.hljs-doctag, +.hljs-regexp { + color: #2aa198; +} + +/* Solarized Blue */ +.hljs-title, +.hljs-section, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #268bd2; +} + +/* Solarized Yellow */ +.hljs-attribute, +.hljs-attr, +.hljs-variable, +.hljs-template-variable, +.hljs-class .hljs-title, +.hljs-type { + color: #b58900; +} + +/* Solarized Orange */ +.hljs-symbol, +.hljs-bullet, +.hljs-subst, +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-link { + color: #cb4b16; +} + +/* Solarized Red */ +.hljs-built_in, +.hljs-deletion { + color: #dc322f; +} + +.hljs-formula { + +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/app/src/main/assets/highlight/styles/themes/sunburst.css b/app/src/main/assets/highlight/styles/themes/sunburst.css new file mode 100755 index 00000000..75dea3af --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/sunburst.css @@ -0,0 +1,101 @@ +/* + +Sunburst-like style (c) Vasily Polovnyov + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0px; + color: #f8f8f8; +} + +.hljs-comment, +.hljs-quote { + color: #aeaeae; + font-style: italic; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-type { + color: #e28964; +} + +.hljs-string { + color: #65b042; +} + +.hljs-subst { + color: #daefa3; +} + +.hljs-regexp, +.hljs-link { + color: #e9c062; +} + +.hljs-title, +.hljs-section, +.hljs-tag, +.hljs-name { + color: #89bdff; +} + +.hljs-class .hljs-title, +.hljs-doctag { + text-decoration: underline; +} + +.hljs-symbol, +.hljs-bullet, +.hljs-number { + color: #3387cc; +} + +.hljs-params, +.hljs-variable, +.hljs-template-variable { + color: #3e87e3; +} + +.hljs-attribute { + color: #cda869; +} + +.hljs-meta { + color: #8996a8; +} + +.hljs-formula { + background-color: #0e2231; + color: #f8f8f8; + font-style: italic; +} + +.hljs-addition { + background-color: #253b22; + color: #f8f8f8; +} + +.hljs-deletion { + background-color: #420e09; + color: #f8f8f8; +} + +.hljs-selector-class { + color: #9b703f; +} + +.hljs-selector-id { + color: #8b98ab; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/app/src/main/assets/highlight/styles/themes/tomorrow-night-blue.css b/app/src/main/assets/highlight/styles/themes/tomorrow-night-blue.css new file mode 100755 index 00000000..bec1e683 --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/tomorrow-night-blue.css @@ -0,0 +1,75 @@ +/* Tomorrow Night Blue Theme */ +/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ +/* Original theme - https://github.com/chriskempson/tomorrow-theme */ +/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ + +/* Tomorrow Comment */ +.hljs-comment, +.hljs-quote { + color: #7285b7; +} + +/* Tomorrow Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-deletion { + color: #ff9da4; +} + +/* Tomorrow Orange */ +.hljs-number, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-meta, +.hljs-link { + color: #ffc58f; +} + +/* Tomorrow Yellow */ +.hljs-attribute { + color: #ffeead; +} + +/* Tomorrow Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #d1f1a9; +} + +/* Tomorrow Blue */ +.hljs-title, +.hljs-section { + color: #bbdaff; +} + +/* Tomorrow Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #ebbbff; +} + +.hljs { + display: block; + overflow-x: auto; + + color: white; + padding: 0px; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/app/src/main/assets/highlight/styles/themes/tomorrow-night-bright.css b/app/src/main/assets/highlight/styles/themes/tomorrow-night-bright.css new file mode 100755 index 00000000..c7779317 --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/tomorrow-night-bright.css @@ -0,0 +1,73 @@ +/* Tomorrow Night Bright Theme */ +/* Original theme - https://github.com/chriskempson/tomorrow-theme */ +/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ + +/* Tomorrow Comment */ +.hljs-comment, +.hljs-quote { + color: #969896; +} + +/* Tomorrow Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-deletion { + color: #d54e53; +} + +/* Tomorrow Orange */ +.hljs-number, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-meta, +.hljs-link { + color: #e78c45; +} + +/* Tomorrow Yellow */ +.hljs-attribute { + color: #e7c547; +} + +/* Tomorrow Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #b9ca4a; +} + +/* Tomorrow Blue */ +.hljs-title, +.hljs-section { + color: #7aa6da; +} + +/* Tomorrow Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #c397d8; +} + +.hljs { + display: block; + overflow-x: auto; + color: #eaeaea; + padding: 0px; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/app/src/main/assets/highlight/styles/themes/tomorrow-night-eighties.css b/app/src/main/assets/highlight/styles/themes/tomorrow-night-eighties.css new file mode 100755 index 00000000..a31f76bb --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/tomorrow-night-eighties.css @@ -0,0 +1,74 @@ +/* Tomorrow Night Eighties Theme */ +/* Original theme - https://github.com/chriskempson/tomorrow-theme */ +/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ + +/* Tomorrow Comment */ +.hljs-comment, +.hljs-quote { + color: #999999; +} + +/* Tomorrow Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-deletion { + color: #f2777a; +} + +/* Tomorrow Orange */ +.hljs-number, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-meta, +.hljs-link { + color: #f99157; +} + +/* Tomorrow Yellow */ +.hljs-attribute { + color: #ffcc66; +} + +/* Tomorrow Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #99cc99; +} + +/* Tomorrow Blue */ +.hljs-title, +.hljs-section { + color: #6699cc; +} + +/* Tomorrow Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #cc99cc; +} + +.hljs { + display: block; + overflow-x: auto; + + color: #cccccc; + padding: 0px; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/app/src/main/assets/highlight/styles/themes/tomorrow-night.css b/app/src/main/assets/highlight/styles/themes/tomorrow-night.css new file mode 100755 index 00000000..6e9164e0 --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/tomorrow-night.css @@ -0,0 +1,75 @@ +/* Tomorrow Night Theme */ +/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ +/* Original theme - https://github.com/chriskempson/tomorrow-theme */ +/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ + +/* Tomorrow Comment */ +.hljs-comment, +.hljs-quote { + color: #969896; +} + +/* Tomorrow Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-deletion { + color: #cc6666; +} + +/* Tomorrow Orange */ +.hljs-number, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-meta, +.hljs-link { + color: #de935f; +} + +/* Tomorrow Yellow */ +.hljs-attribute { + color: #f0c674; +} + +/* Tomorrow Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #b5bd68; +} + +/* Tomorrow Blue */ +.hljs-title, +.hljs-section { + color: #81a2be; +} + +/* Tomorrow Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #b294bb; +} + +.hljs { + display: block; + overflow-x: auto; + + color: #c5c8c6; + padding: 0px; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/app/src/main/assets/highlight/styles/themes/tomorrow.css b/app/src/main/assets/highlight/styles/themes/tomorrow.css new file mode 100755 index 00000000..82666e06 --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/tomorrow.css @@ -0,0 +1,71 @@ +/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ + +/* Tomorrow Comment */ +.hljs-comment, +.hljs-quote { + color: #8e908c; +} + +/* Tomorrow Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-deletion { + color: #c82829; +} + +/* Tomorrow Orange */ +.hljs-number, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-meta, +.hljs-link { + color: #f5871f; +} + +/* Tomorrow Yellow */ +.hljs-attribute { + color: #eab700; +} + +/* Tomorrow Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #718c00; +} + +/* Tomorrow Blue */ +.hljs-title, +.hljs-section { + color: #4271ae; +} + +/* Tomorrow Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #8959a8; +} + +.hljs { + display: block; + overflow-x: auto; + color: #4d4d4c; + padding: 0px; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/app/src/main/assets/highlight/styles/themes/vs.css b/app/src/main/assets/highlight/styles/themes/vs.css new file mode 100755 index 00000000..76f8e678 --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/vs.css @@ -0,0 +1,67 @@ +/* + +Visual Studio-like style based on original C# coloring by Jason Diamond + +*/ +.hljs { + display: block; + overflow-x: auto; + padding: 0px; + color: black; +} + +.hljs-comment, +.hljs-quote, +.hljs-variable { + color: #008000; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-built_in, +.hljs-name, +.hljs-tag { + color: #00f; +} + +.hljs-string, +.hljs-title, +.hljs-section, +.hljs-attribute, +.hljs-literal, +.hljs-template-tag, +.hljs-template-variable, +.hljs-type, +.hljs-addition { + color: #a31515; +} + +.hljs-deletion, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-meta { + color: #2b91af; +} + +.hljs-doctag { + color: #808080; +} + +.hljs-attr { + color: #f00; +} + +.hljs-symbol, +.hljs-bullet, +.hljs-link { + color: #00b0e8; +} + + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/app/src/main/assets/highlight/styles/themes/vs2015.css b/app/src/main/assets/highlight/styles/themes/vs2015.css new file mode 100755 index 00000000..99cf22d1 --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/vs2015.css @@ -0,0 +1,115 @@ +/* + * Visual Studio 2015 dark style + * Author: Nicolas LLOBERA + */ + +.hljs { + display: block; + overflow-x: auto; + padding: 0px; + + color: #DCDCDC; +} + +.hljs-keyword, +.hljs-literal, +.hljs-symbol, +.hljs-name { + color: #569CD6; +} +.hljs-link { + color: #569CD6; + text-decoration: underline; +} + +.hljs-built_in, +.hljs-type { + color: #4EC9B0; +} + +.hljs-number, +.hljs-class { + color: #B8D7A3; +} + +.hljs-string, +.hljs-meta-string { + color: #D69D85; +} + +.hljs-regexp, +.hljs-template-tag { + color: #9A5334; +} + +.hljs-subst, +.hljs-function, +.hljs-title, +.hljs-params, +.hljs-formula { + color: #DCDCDC; +} + +.hljs-comment, +.hljs-quote { + color: #57A64A; + font-style: italic; +} + +.hljs-doctag { + color: #608B4E; +} + +.hljs-meta, +.hljs-meta-keyword, +.hljs-tag { + color: #9B9B9B; +} + +.hljs-variable, +.hljs-template-variable { + color: #BD63C5; +} + +.hljs-attr, +.hljs-attribute, +.hljs-builtin-name { + color: #9CDCFE; +} + +.hljs-section { + color: gold; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} + +/*.hljs-code { + font-family:'Monospace'; +}*/ + +.hljs-bullet, +.hljs-selector-tag, +.hljs-selector-id, +.hljs-selector-class, +.hljs-selector-attr, +.hljs-selector-pseudo { + color: #D7BA7D; +} + +.hljs-addition { + background-color: #144212; + display: inline-block; + width: 100%; +} + +.hljs-deletion { + background-color: #600; + display: inline-block; + width: 100%; +} diff --git a/app/src/main/assets/highlight/styles/themes/xcode.css b/app/src/main/assets/highlight/styles/themes/xcode.css new file mode 100755 index 00000000..980ec3e4 --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/xcode.css @@ -0,0 +1,92 @@ +/* + +XCode style (c) Angel Garcia + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0px; + color: black; +} + +.hljs-comment, +.hljs-quote { + color: #006a00; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal { + color: #aa0d91; +} + +.hljs-name { + color: #008; +} + +.hljs-variable, +.hljs-template-variable { + color: #660; +} + +.hljs-string { + color: #c41a16; +} + +.hljs-regexp, +.hljs-link { + color: #080; +} + +.hljs-title, +.hljs-tag, +.hljs-symbol, +.hljs-bullet, +.hljs-number, +.hljs-meta { + color: #1c00cf; +} + +.hljs-section, +.hljs-class .hljs-title, +.hljs-type, +.hljs-attr, +.hljs-built_in, +.hljs-builtin-name, +.hljs-params { + color: #5c2699; +} + +.hljs-attribute, +.hljs-subst { + color: #000; +} + +.hljs-formula { + background-color: #eee; + font-style: italic; +} + +.hljs-addition { + background-color: #baeeba; +} + +.hljs-deletion { + background-color: #ffc8bd; +} + +.hljs-selector-id, +.hljs-selector-class { + color: #9b703f; +} + +.hljs-doctag, +.hljs-strong { + font-weight: bold; +} + +.hljs-emphasis { + font-style: italic; +} diff --git a/app/src/main/assets/highlight/styles/themes/xt256.css b/app/src/main/assets/highlight/styles/themes/xt256.css new file mode 100755 index 00000000..82a95239 --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/xt256.css @@ -0,0 +1,92 @@ + +/* + xt256.css + + Contact: initbar [at] protonmail [dot] ch + : github.com/initbar +*/ + +.hljs { + display: block; + overflow-x: auto; + color: #eaeaea; + + padding: 0.5; +} + +.hljs-subst { + color: #eaeaea; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} + +.hljs-builtin-name, +.hljs-type { + color: #eaeaea; +} + +.hljs-params { + color: #da0000; +} + +.hljs-literal, +.hljs-number, +.hljs-name { + color: #ff0000; + font-weight: bolder; +} + +.hljs-comment { + color: #969896; +} + +.hljs-selector-id, +.hljs-quote { + color: #00ffff; +} + +.hljs-template-variable, +.hljs-variable, +.hljs-title { + color: #00ffff; + font-weight: bold; +} + +.hljs-selector-class, +.hljs-keyword, +.hljs-symbol { + color: #fff000; +} + +.hljs-string, +.hljs-bullet { + color: #00ff00; +} + +.hljs-tag, +.hljs-section { + color: #000fff; +} + +.hljs-selector-tag { + color: #000fff; + font-weight: bold; +} + +.hljs-attribute, +.hljs-built_in, +.hljs-regexp, +.hljs-link { + color: #ff00ff; +} + +.hljs-meta { + color: #fff; + font-weight: bolder; +} diff --git a/app/src/main/assets/highlight/styles/themes/zenburn.css b/app/src/main/assets/highlight/styles/themes/zenburn.css new file mode 100755 index 00000000..5e697a3f --- /dev/null +++ b/app/src/main/assets/highlight/styles/themes/zenburn.css @@ -0,0 +1,80 @@ +/* + +Zenburn style from voldmar.ru (c) Vladimir Epifanov +based on dark.css by Ivan Sagalaev + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0px; + + color: #dcdcdc; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-tag { + color: #e3ceab; +} + +.hljs-template-tag { + color: #dcdcdc; +} + +.hljs-number { + color: #8cd0d3; +} + +.hljs-variable, +.hljs-template-variable, +.hljs-attribute { + color: #efdcbc; +} + +.hljs-literal { + color: #efefaf; +} + +.hljs-subst { + color: #8f8f8f; +} + +.hljs-title, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-section, +.hljs-type { + color: #efef8f; +} + +.hljs-symbol, +.hljs-bullet, +.hljs-link { + color: #dca3a3; +} + +.hljs-deletion, +.hljs-string, +.hljs-built_in, +.hljs-builtin-name { + color: #cc9393; +} + +.hljs-addition, +.hljs-comment, +.hljs-quote, +.hljs-meta { + color: #7f9f7f; +} + + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/app/src/main/java/com/fastaccess/App.java b/app/src/main/java/com/fastaccess/App.java index 30451bb1..f0f363b3 100644 --- a/app/src/main/java/com/fastaccess/App.java +++ b/app/src/main/java/com/fastaccess/App.java @@ -5,6 +5,7 @@ import android.support.annotation.NonNull; import android.support.v7.preference.PreferenceManager; import com.crashlytics.android.Crashlytics; +import com.crashlytics.android.core.CrashlyticsCore; import com.fastaccess.data.dao.model.Models; import com.fastaccess.helper.TypeFaceHelper; import com.fastaccess.provider.colors.ColorsProvider; @@ -45,7 +46,9 @@ public class App extends Application { private void init() { Fabric fabric = new Fabric.Builder(this) - .kits(new Crashlytics()) + .kits(new Crashlytics.Builder() + .core(new CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build()) + .build()) .debuggable(BuildConfig.DEBUG) .build(); Fabric.with(fabric); diff --git a/app/src/main/java/com/fastaccess/data/dao/CommentRequestModel.java b/app/src/main/java/com/fastaccess/data/dao/CommentRequestModel.java index f4fc8948..8cdf0ebd 100644 --- a/app/src/main/java/com/fastaccess/data/dao/CommentRequestModel.java +++ b/app/src/main/java/com/fastaccess/data/dao/CommentRequestModel.java @@ -6,28 +6,47 @@ import android.os.Parcelable; import com.google.gson.annotations.SerializedName; import lombok.Getter; -import lombok.NoArgsConstructor; import lombok.Setter; /** * Created by Kosh on 20 Nov 2016, 10:40 AM */ -@Getter @Setter @NoArgsConstructor -public class CommentRequestModel implements Parcelable { +@Getter @Setter public class CommentRequestModel implements Parcelable { private String body; - @SerializedName("in_reply_to") private long inReplyTo; + @SerializedName("in_reply_to") private Long inReplyTo; + private String path; + private int position; + + public CommentRequestModel() {} + + @Override public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + CommentRequestModel that = (CommentRequestModel) o; + return position == that.position && (path != null ? path.equals(that.path) : that.path == null); + } + + @Override public int hashCode() { + int result = path != null ? path.hashCode() : 0; + result = 31 * result + position; + return result; + } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeString(this.body); - dest.writeLong(this.inReplyTo); + dest.writeValue(this.inReplyTo); + dest.writeString(this.path); + dest.writeInt(this.position); } protected CommentRequestModel(Parcel in) { this.body = in.readString(); - this.inReplyTo = in.readLong(); + this.inReplyTo = (Long) in.readValue(Long.class.getClassLoader()); + this.path = in.readString(); + this.position = in.readInt(); } public static final Creator CREATOR = new Creator() { diff --git a/app/src/main/java/com/fastaccess/data/dao/CommitFileChanges.java b/app/src/main/java/com/fastaccess/data/dao/CommitFileChanges.java new file mode 100644 index 00000000..147a2653 --- /dev/null +++ b/app/src/main/java/com/fastaccess/data/dao/CommitFileChanges.java @@ -0,0 +1,61 @@ +package com.fastaccess.data.dao; + +import android.os.Parcel; +import android.os.Parcelable; +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; + +import com.annimon.stream.Stream; + +import java.util.ArrayList; +import java.util.List; + +import lombok.Getter; +import lombok.Setter; + +/** + * Created by Kosh on 20 Jun 2017, 7:32 PM + */ + +@Getter @Setter public class CommitFileChanges implements Parcelable { + + public List linesModel; + public CommitFileModel commitFileModel; + + public CommitFileChanges() {} + + @NonNull public static List construct(@Nullable List files) { + if (files == null || files.isEmpty()) { + return new ArrayList<>(); + } + return Stream.of(files) + .map(m -> { + CommitFileChanges model = new CommitFileChanges(); + model.setLinesModel(CommitLinesModel.getLines(m.getPatch())); + if (m.getPatch() != null) { + m.setPatch("fake"); + } + model.setCommitFileModel(m); + return model; + }) + .toList(); + } + + @Override public int describeContents() { return 0; } + + @Override public void writeToParcel(Parcel dest, int flags) { + dest.writeTypedList(this.linesModel); + dest.writeParcelable(this.commitFileModel, flags); + } + + protected CommitFileChanges(Parcel in) { + this.linesModel = in.createTypedArrayList(CommitLinesModel.CREATOR); + this.commitFileModel = in.readParcelable(CommitFileModel.class.getClassLoader()); + } + + public static final Creator CREATOR = new Creator() { + @Override public CommitFileChanges createFromParcel(Parcel source) {return new CommitFileChanges(source);} + + @Override public CommitFileChanges[] newArray(int size) {return new CommitFileChanges[size];} + }; +} diff --git a/app/src/main/java/com/fastaccess/data/dao/CommitLinesModel.java b/app/src/main/java/com/fastaccess/data/dao/CommitLinesModel.java new file mode 100644 index 00000000..cd418211 --- /dev/null +++ b/app/src/main/java/com/fastaccess/data/dao/CommitLinesModel.java @@ -0,0 +1,106 @@ +package com.fastaccess.data.dao; + +import android.os.Parcel; +import android.os.Parcelable; +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; + +import com.fastaccess.helper.InputHelper; +import com.fastaccess.helper.Logger; + +import java.util.ArrayList; +import java.util.List; +import java.util.regex.Matcher; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.Setter; + +import static com.fastaccess.ui.widgets.DiffLineSpan.HUNK_TITLE; + +/** + * Created by Kosh on 20 Jun 2017, 7:32 PM + */ + +@Getter @Setter @AllArgsConstructor public class CommitLinesModel implements Parcelable { + + public static final int TRANSPARENT = 0; + public static final int ADDITION = 1; + public static final int DELETION = 2; + public static final int PATCH = 3; + + + public String text; + public int color; + public int leftLineNo; + public int rightLineNo; + public boolean noNewLine; + + @Override public int describeContents() { return 0; } + + @Override public void writeToParcel(Parcel dest, int flags) { + dest.writeString(this.text); + dest.writeInt(this.color); + } + + protected CommitLinesModel(Parcel in) { + this.text = in.readString(); + this.color = in.readInt(); + } + + public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { + @Override public CommitLinesModel createFromParcel(Parcel source) {return new CommitLinesModel(source);} + + @Override public CommitLinesModel[] newArray(int size) {return new CommitLinesModel[size];} + }; + + @NonNull public static List getLines(@Nullable String text) { + ArrayList models = new ArrayList<>(); + if (!InputHelper.isEmpty(text)) { + String[] split = text.split("\\r?\\n|\\r"); + if (split.length > 1) { + int leftLineNo = -1; + int rightLineNo = -1; + for (String token : split) { + char firstChar = token.charAt(0); + boolean addLeft = false; + boolean addRight = false; + int color = TRANSPARENT; + if (token.startsWith("@@")) { + color = PATCH; + Matcher matcher = HUNK_TITLE.matcher(token.trim()); + if (matcher.matches()) { + try { + leftLineNo = Math.abs(Integer.parseInt(matcher.group(1))) - 1; + rightLineNo = Integer.parseInt(matcher.group(3)) - 1; + } catch (NumberFormatException e) {e.printStackTrace();} + } + } else if (firstChar == '+') { + color = ADDITION; + ++rightLineNo; + addRight = true; + addLeft = false; + } else if (firstChar == '-') { + color = DELETION; + ++leftLineNo; + addRight = false; + addLeft = true; + } else { + addLeft = true; + addRight = true; + ++rightLineNo; + ++leftLineNo; + } + int index = token.indexOf("\\ No newline at end of file"); + if (index != -1) { + token = token.replace("\\ No newline at end of file", ""); + } + Logger.e(leftLineNo, rightLineNo); + models.add(new CommitLinesModel(token, color, token.startsWith("@@") || !addLeft ? -1 : leftLineNo, + token.startsWith("@@") || !addRight ? -1 : rightLineNo, index != -1)); + } + } + } + return models; + } +} diff --git a/app/src/main/java/com/fastaccess/data/dao/FragmentPagerAdapterModel.java b/app/src/main/java/com/fastaccess/data/dao/FragmentPagerAdapterModel.java index 3be0c841..554015b5 100644 --- a/app/src/main/java/com/fastaccess/data/dao/FragmentPagerAdapterModel.java +++ b/app/src/main/java/com/fastaccess/data/dao/FragmentPagerAdapterModel.java @@ -35,7 +35,7 @@ import com.fastaccess.ui.modules.profile.overview.ProfileOverviewFragment; import com.fastaccess.ui.modules.profile.repos.ProfileReposFragment; import com.fastaccess.ui.modules.profile.starred.ProfileStarredFragment; import com.fastaccess.ui.modules.repos.code.commit.RepoCommitsFragment; -import com.fastaccess.ui.modules.repos.code.commit.details.comments.CommitCommentsFragments; +import com.fastaccess.ui.modules.repos.code.commit.details.comments.CommitCommentsFragment; import com.fastaccess.ui.modules.repos.code.commit.details.files.CommitFilesFragment; import com.fastaccess.ui.modules.repos.code.contributors.RepoContributorsFragment; import com.fastaccess.ui.modules.repos.code.files.paths.RepoFilePathFragment; @@ -86,8 +86,9 @@ import lombok.Setter; public static List buildForRepoCode(@NonNull Context context, @NonNull String repoId, @NonNull String login, @NonNull String url, - @NonNull String defaultBranch) { - return Stream.of(new FragmentPagerAdapterModel(context.getString(R.string.readme), ViewerFragment.newInstance(url, true)), + @NonNull String defaultBranch, + @NonNull String htmlUrl) { + return Stream.of(new FragmentPagerAdapterModel(context.getString(R.string.readme), ViewerFragment.newInstance(url, htmlUrl, true)), new FragmentPagerAdapterModel(context.getString(R.string.files), RepoFilePathFragment.newInstance(login, repoId, null, defaultBranch)), new FragmentPagerAdapterModel(context.getString(R.string.commits), RepoCommitsFragment.newInstance(repoId, login, defaultBranch)), @@ -143,9 +144,8 @@ import lombok.Setter; String login = commitModel.getLogin(); String repoId = commitModel.getRepoId(); String sha = commitModel.getSha(); - return Stream.of(new FragmentPagerAdapterModel(context.getString(R.string.commits), CommitFilesFragment.newInstance(commitModel.getSha(), - commitModel.getFiles())) - , new FragmentPagerAdapterModel(context.getString(R.string.comments), CommitCommentsFragments.newInstance(login, repoId, sha))) + return Stream.of(new FragmentPagerAdapterModel(context.getString(R.string.commits), CommitFilesFragment.newInstance(commitModel.getSha(), commitModel.getFiles())), + new FragmentPagerAdapterModel(context.getString(R.string.comments), CommitCommentsFragment.newInstance(login, repoId, sha))) .collect(Collectors.toList()); } diff --git a/app/src/main/java/com/fastaccess/data/dao/MergeRequestModel.java b/app/src/main/java/com/fastaccess/data/dao/MergeRequestModel.java index fc3a5bf9..70120d55 100644 --- a/app/src/main/java/com/fastaccess/data/dao/MergeRequestModel.java +++ b/app/src/main/java/com/fastaccess/data/dao/MergeRequestModel.java @@ -18,6 +18,7 @@ public class MergeRequestModel implements Parcelable { private String sha; private String base; private String head; + private String mergeMethod = "merge"; @Override public int describeContents() { return 0; } diff --git a/app/src/main/java/com/fastaccess/data/dao/ReviewRequestModel.java b/app/src/main/java/com/fastaccess/data/dao/ReviewRequestModel.java new file mode 100644 index 00000000..918150c7 --- /dev/null +++ b/app/src/main/java/com/fastaccess/data/dao/ReviewRequestModel.java @@ -0,0 +1,45 @@ +package com.fastaccess.data.dao; + +import android.os.Parcel; +import android.os.Parcelable; + +import java.util.List; + +import lombok.Getter; +import lombok.Setter; + +/** + * Created by Kosh on 24 Jun 2017, 4:15 PM + */ + +@Getter @Setter public class ReviewRequestModel implements Parcelable { + private String commitId; + private String body; + private String event; + private List comments; + + @Override public int describeContents() { return 0; } + + @Override public void writeToParcel(Parcel dest, int flags) { + dest.writeString(this.commitId); + dest.writeString(this.body); + dest.writeString(this.event); + dest.writeTypedList(this.comments); + } + + protected ReviewRequestModel(Parcel in) { + this.commitId = in.readString(); + this.body = in.readString(); + this.event = in.readString(); + this.comments = in.createTypedArrayList(CommentRequestModel.CREATOR); + } + + public ReviewRequestModel() { + } + + public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { + @Override public ReviewRequestModel createFromParcel(Parcel source) {return new ReviewRequestModel(source);} + + @Override public ReviewRequestModel[] newArray(int size) {return new ReviewRequestModel[size];} + }; +} diff --git a/app/src/main/java/com/fastaccess/data/dao/SettingsModel.java b/app/src/main/java/com/fastaccess/data/dao/SettingsModel.java index d67811a6..f95ea515 100644 --- a/app/src/main/java/com/fastaccess/data/dao/SettingsModel.java +++ b/app/src/main/java/com/fastaccess/data/dao/SettingsModel.java @@ -22,6 +22,7 @@ import lombok.Setter; public static final int CUSTOMIZATION = 3; public static final int BACKUP = 4; public static final int LANGUAGE = 5; + public static final int CODE_THEME = 6; @IntDef({ THEME, @@ -29,7 +30,8 @@ import lombok.Setter; CUSTOMIZATION, BEHAVIOR, BACKUP, - LANGUAGE + LANGUAGE, + CODE_THEME }) @Retention(RetentionPolicy.SOURCE) public @interface SettingsType {} diff --git a/app/src/main/java/com/fastaccess/data/service/PullRequestService.java b/app/src/main/java/com/fastaccess/data/service/PullRequestService.java index 52bc1e04..999c82b8 100644 --- a/app/src/main/java/com/fastaccess/data/service/PullRequestService.java +++ b/app/src/main/java/com/fastaccess/data/service/PullRequestService.java @@ -73,6 +73,7 @@ public interface PullRequestService { @Body IssueRequestModel issue); @POST("repos/{owner}/{repo}/issues/{number}/assignees") + @Headers("Accept: application/vnd.github.VERSION.full+json, application/vnd.github.squirrel-girl-preview") Observable putAssignees(@Path("owner") String owner, @Path("repo") String repo, @Path("number") int number, @Body AssigneesRequestModel body); @@ -83,5 +84,4 @@ public interface PullRequestService { @Headers("Accept: application/vnd.github.black-cat-preview+json") Observable putReviewers(@Path("owner") String owner, @Path("repo") String repo, @Path("number") int number, @Body AssigneesRequestModel body); - } diff --git a/app/src/main/java/com/fastaccess/data/service/RepoService.java b/app/src/main/java/com/fastaccess/data/service/RepoService.java index d5758916..8a195484 100644 --- a/app/src/main/java/com/fastaccess/data/service/RepoService.java +++ b/app/src/main/java/com/fastaccess/data/service/RepoService.java @@ -117,6 +117,7 @@ public interface RepoService { Observable postCommitComment(@NonNull @Path("owner") String owner, @NonNull @Path("repo") String repo, @NonNull @Path("sha") String ref, @Body CommentRequestModel model); + @NonNull @PATCH("repos/{owner}/{repo}/comments/{id}") @Headers("Accept: application/vnd.github.VERSION.full+json, application/vnd.github.squirrel-girl-preview") Observable editCommitComment(@Path("owner") String owner, @Path("repo") String repo, @Path("id") long id, diff --git a/app/src/main/java/com/fastaccess/data/service/ReviewService.java b/app/src/main/java/com/fastaccess/data/service/ReviewService.java index b20e6f12..29fa5384 100644 --- a/app/src/main/java/com/fastaccess/data/service/ReviewService.java +++ b/app/src/main/java/com/fastaccess/data/service/ReviewService.java @@ -7,6 +7,7 @@ import com.fastaccess.data.dao.Pageable; import com.fastaccess.data.dao.ReviewCommentModel; import com.fastaccess.data.dao.ReviewModel; +import io.reactivex.Observable; import retrofit2.Response; import retrofit2.http.Body; import retrofit2.http.DELETE; @@ -15,7 +16,6 @@ import retrofit2.http.Headers; import retrofit2.http.PATCH; import retrofit2.http.POST; import retrofit2.http.Path; -import io.reactivex.Observable; /** * Created by Kosh on 07 May 2017, 1:01 PM @@ -63,4 +63,9 @@ public interface ReviewService { @DELETE("repos/{owner}/{repo}/pulls/comments/{id}") @Headers("Accept: application/vnd.github.black-cat-preview") Observable> deleteComment(@Path("owner") String owner, @Path("repo") String repo, @Path("id") long id); + // +// @POST("repos/{owner}/{repo}/pulls/{number}/reviews") +// @Headers("Accept: application/vnd.github.black-cat-preview") +// Observable submitPrReview(@Path("owner") String owner, @Path("repo") String repo, +// @Path("number") long number, @NonNull @Body ReviewRequestModel body); } diff --git a/app/src/main/java/com/fastaccess/helper/AppHelper.java b/app/src/main/java/com/fastaccess/helper/AppHelper.java index 1ca619af..b5a48e4e 100644 --- a/app/src/main/java/com/fastaccess/helper/AppHelper.java +++ b/app/src/main/java/com/fastaccess/helper/AppHelper.java @@ -28,7 +28,6 @@ import es.dmoral.toasty.Toasty; public class AppHelper { - public static void hideKeyboard(@NonNull View view) { InputMethodManager inputManager = (InputMethodManager) view.getContext().getSystemService(Context.INPUT_METHOD_SERVICE); inputManager.hideSoftInputFromWindow(view.getWindowToken(), 0); diff --git a/app/src/main/java/com/fastaccess/helper/PrefGetter.java b/app/src/main/java/com/fastaccess/helper/PrefGetter.java index ef5c76f8..3d289a72 100644 --- a/app/src/main/java/com/fastaccess/helper/PrefGetter.java +++ b/app/src/main/java/com/fastaccess/helper/PrefGetter.java @@ -94,6 +94,7 @@ public class PrefGetter { private static final String MIDNIGHTBLUE_THEME_ENABLED = "midnightblue_theme_enabled"; private static final String BLUISH_THEME_ENABLED = "bluish_theme_enabled"; private static final String PRO_ITEMS = "pro_items"; + private static final String CODE_THEME = "code_theme"; public static void setToken(@NonNull String token) { PrefHelper.set(TOKEN, token); @@ -378,4 +379,12 @@ public class PrefGetter { public static boolean hasSupported() { return isProEnabled() || isAmlodEnabled() || isBluishEnabled(); } + + public static String getCodeTheme() { + return PrefHelper.getString(CODE_THEME); + } + + public static void setCodeTheme(@NonNull String theme) { + PrefHelper.set(CODE_THEME, theme); + } } diff --git a/app/src/main/java/com/fastaccess/provider/scheme/SchemeParser.java b/app/src/main/java/com/fastaccess/provider/scheme/SchemeParser.java index aebd04e2..f994448a 100644 --- a/app/src/main/java/com/fastaccess/provider/scheme/SchemeParser.java +++ b/app/src/main/java/com/fastaccess/provider/scheme/SchemeParser.java @@ -213,7 +213,8 @@ public class SchemeParser { if ("wiki".equalsIgnoreCase(segments.get(2))) { String owner = segments.get(0); String repoName = segments.get(1); - return WikiActivity.Companion.getWiki(context, repoName, owner); + return WikiActivity.Companion.getWiki(context, repoName, owner, + "wiki".equalsIgnoreCase(uri.getLastPathSegment()) ? null : uri.getLastPathSegment()); } return null; } @@ -233,6 +234,8 @@ public class SchemeParser { String owner = segments.get(1); String repoName = segments.get(2); return RepoPagerActivity.createIntent(context, repoName, owner); + } else if ("orgs".equalsIgnoreCase(segments.get(0))) { + return null; } else { String owner = segments.get(0); String repoName = segments.get(1); @@ -288,7 +291,11 @@ public class SchemeParser { if (segments != null && !segments.isEmpty() && segments.size() == 1) { return UserPagerActivity.createIntent(context, segments.get(0)); } else if (segments != null && !segments.isEmpty() && segments.size() > 1 && segments.get(0).equalsIgnoreCase("orgs")) { - return UserPagerActivity.createIntent(context, segments.get(1), true); + if ("invitation".equalsIgnoreCase(uri.getLastPathSegment())) { + return null; + } else { + return UserPagerActivity.createIntent(context, segments.get(1), true); + } } return null; } diff --git a/app/src/main/java/com/fastaccess/provider/timeline/HtmlHelper.java b/app/src/main/java/com/fastaccess/provider/timeline/HtmlHelper.java index e22dfaae..4669d97d 100644 --- a/app/src/main/java/com/fastaccess/provider/timeline/HtmlHelper.java +++ b/app/src/main/java/com/fastaccess/provider/timeline/HtmlHelper.java @@ -11,6 +11,7 @@ import android.support.v4.content.ContextCompat; import android.view.WindowManager; import android.widget.TextView; +import com.fastaccess.App; import com.fastaccess.R; import com.fastaccess.helper.PrefGetter; import com.fastaccess.helper.ViewHelper; @@ -81,7 +82,7 @@ public class HtmlHelper { mySpanner.registerHandler("a", new LinkHandler()); TableHandler tableHandler = new TableHandler(); tableHandler.setTextColor(ViewHelper.generateTextColor(windowBackground)); - WindowManager windowManager = (WindowManager) textView.getContext().getSystemService(Context.WINDOW_SERVICE); + WindowManager windowManager = (WindowManager) App.getInstance().getSystemService(Context.WINDOW_SERVICE); Point point = new Point(); windowManager.getDefaultDisplay().getRealSize(point); tableHandler.setTableWidth((int) (point.x / 1.2)); diff --git a/app/src/main/java/com/fastaccess/ui/adapter/CommitFilesAdapter.java b/app/src/main/java/com/fastaccess/ui/adapter/CommitFilesAdapter.java index fe1f8e16..15d40b9c 100644 --- a/app/src/main/java/com/fastaccess/ui/adapter/CommitFilesAdapter.java +++ b/app/src/main/java/com/fastaccess/ui/adapter/CommitFilesAdapter.java @@ -1,11 +1,13 @@ package com.fastaccess.ui.adapter; import android.support.annotation.NonNull; +import android.support.annotation.Nullable; import android.view.ViewGroup; -import com.fastaccess.data.dao.CommitFileModel; +import com.fastaccess.data.dao.CommitFileChanges; import com.fastaccess.ui.adapter.callback.OnToggleView; -import com.fastaccess.ui.adapter.viewholder.CommitFilesViewHolder; +import com.fastaccess.ui.adapter.viewholder.PullRequestFilesViewHolder; +import com.fastaccess.ui.modules.repos.pull_requests.pull_request.details.files.PullRequestFilesMvp; import com.fastaccess.ui.widgets.recyclerview.BaseRecyclerAdapter; import com.fastaccess.ui.widgets.recyclerview.BaseViewHolder; @@ -15,22 +17,26 @@ import java.util.ArrayList; * Created by Kosh on 11 Nov 2016, 2:07 PM */ -public class CommitFilesAdapter extends BaseRecyclerAdapter> { +public class CommitFilesAdapter extends BaseRecyclerAdapter> { @NonNull private OnToggleView onToggleView; + @Nullable private PullRequestFilesMvp.OnPatchClickListener onPatchClickListener; - public CommitFilesAdapter(@NonNull ArrayList eventsModels, @NonNull OnToggleView onToggleView) { + public CommitFilesAdapter(@NonNull ArrayList eventsModels, + @NonNull OnToggleView onToggleView, + @Nullable PullRequestFilesMvp.OnPatchClickListener onPatchClickListener) { super(eventsModels); this.onToggleView = onToggleView; + this.onPatchClickListener = onPatchClickListener; } - @Override protected CommitFilesViewHolder viewHolder(ViewGroup parent, int viewType) { - return CommitFilesViewHolder.newInstance(parent, this, onToggleView); + @Override protected PullRequestFilesViewHolder viewHolder(ViewGroup parent, int viewType) { + return PullRequestFilesViewHolder.newInstance(parent, this, onToggleView, onPatchClickListener); } - @Override protected void onBindView(CommitFilesViewHolder holder, int position) { + @Override protected void onBindView(PullRequestFilesViewHolder holder, int position) { holder.bind(getItem(position)); } } diff --git a/app/src/main/java/com/fastaccess/ui/adapter/CommitLinesAdapter.java b/app/src/main/java/com/fastaccess/ui/adapter/CommitLinesAdapter.java new file mode 100644 index 00000000..a2348d09 --- /dev/null +++ b/app/src/main/java/com/fastaccess/ui/adapter/CommitLinesAdapter.java @@ -0,0 +1,28 @@ +package com.fastaccess.ui.adapter; + +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; +import android.view.ViewGroup; + +import com.fastaccess.data.dao.CommitLinesModel; +import com.fastaccess.ui.adapter.viewholder.CommitLinesViewHolder; +import com.fastaccess.ui.adapter.viewholder.SimpleViewHolder; +import com.fastaccess.ui.widgets.recyclerview.BaseRecyclerAdapter; + +import java.util.List; + +public class CommitLinesAdapter extends BaseRecyclerAdapter> { + + public CommitLinesAdapter(@NonNull List data, @Nullable CommitLinesViewHolder.OnItemClickListener listener) { + super(data, listener); + } + + @Override protected CommitLinesViewHolder viewHolder(ViewGroup parent, int viewType) { + return CommitLinesViewHolder.newInstance(parent, this); + } + + @Override protected void onBindView(CommitLinesViewHolder holder, int position) { + holder.bind(getItem(position)); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/fastaccess/ui/adapter/SpinnerAdapter.java b/app/src/main/java/com/fastaccess/ui/adapter/SpinnerAdapter.java new file mode 100644 index 00000000..46b727ba --- /dev/null +++ b/app/src/main/java/com/fastaccess/ui/adapter/SpinnerAdapter.java @@ -0,0 +1,74 @@ +package com.fastaccess.ui.adapter; + +import android.content.Context; +import android.support.annotation.NonNull; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; +import android.widget.TextView; + +import java.util.List; + +import butterknife.BindView; +import butterknife.ButterKnife; + +/** + * Created by Kosh on 09 Apr 2017, 10:55 AM + */ + +public class SpinnerAdapter extends BaseAdapter { + + private List data; + private Context context; + + public SpinnerAdapter(@NonNull Context context, @NonNull List branches) { + this.data = branches; + this.context = context; + } + + @Override public int getCount() { + return data.size(); + } + + @Override public O getItem(int position) { + return data.get(position); + } + + @Override public long getItemId(int position) { + return position; + } + + @Override public View getView(int position, View convertView, ViewGroup parent) { + return getRowView(position, convertView, parent, false); + } + + @Override public View getDropDownView(int position, View convertView, ViewGroup parent) { + return getRowView(position, convertView, parent, true); + } + + @NonNull private View getRowView(int position, View convertView, ViewGroup parent, boolean isDropDown) { + ViewHolder viewHolder; + if (convertView == null) { + if (!isDropDown) { + convertView = LayoutInflater.from(context).inflate(android.R.layout.simple_list_item_1, parent, false); + } else { + convertView = LayoutInflater.from(context).inflate(android.R.layout.simple_dropdown_item_1line, parent, false); + } + viewHolder = new ViewHolder(convertView); + convertView.setTag(viewHolder); + } else { + viewHolder = (ViewHolder) convertView.getTag(); + } + viewHolder.title.setText(getItem(position).toString()); + return convertView; + } + + static class ViewHolder { + @BindView(android.R.id.text1) TextView title; + + ViewHolder(View view) { + ButterKnife.bind(this, view); + } + } +} diff --git a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/CommitFilesViewHolder.java b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/CommitFilesViewHolder.java deleted file mode 100644 index c866e82d..00000000 --- a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/CommitFilesViewHolder.java +++ /dev/null @@ -1,113 +0,0 @@ -package com.fastaccess.ui.adapter.viewholder; - -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.transition.ChangeBounds; -import android.support.transition.TransitionManager; -import android.view.View; -import android.view.ViewGroup; - -import com.fastaccess.R; -import com.fastaccess.data.dao.CommitFileModel; -import com.fastaccess.helper.ViewHelper; -import com.fastaccess.ui.adapter.callback.OnToggleView; -import com.fastaccess.ui.widgets.DiffLineSpan; -import com.fastaccess.ui.widgets.FontTextView; -import com.fastaccess.ui.widgets.SpannableBuilder; -import com.fastaccess.ui.widgets.recyclerview.BaseRecyclerAdapter; -import com.fastaccess.ui.widgets.recyclerview.BaseViewHolder; - -import butterknife.BindString; -import butterknife.BindView; - -/** - * Created by Kosh on 15 Feb 2017, 10:29 PM - */ - -public class CommitFilesViewHolder extends BaseViewHolder { - @BindView(R.id.name) FontTextView name; - @BindView(R.id.patch) FontTextView patch; - @BindView(R.id.changes) FontTextView changes; - @BindView(R.id.addition) FontTextView addition; - @BindView(R.id.deletion) FontTextView deletion; - @BindView(R.id.status) FontTextView status; - @BindView(R.id.toggle) View toggle; - @BindView(R.id.open) View open; - @BindString(R.string.changes) String changesText; - @BindString(R.string.addition) String additionText; - @BindString(R.string.deletion) String deletionText; - @BindString(R.string.status) String statusText; - private final int patchAdditionColor; - private final int patchDeletionColor; - private final int patchRefColor; - private String pathText; - private OnToggleView onToggleView; - private ViewGroup viewGroup; - - @Override public void onClick(View v) { - if (v.getId() != R.id.open) { - int position = getAdapterPosition(); - onToggleView.onToggle(position, !onToggleView.isCollapsed(position)); - onToggle(onToggleView.isCollapsed(position), true); - } else { - super.onClick(v); - } - } - - private CommitFilesViewHolder(@NonNull View itemView, @NonNull ViewGroup viewGroup, @Nullable BaseRecyclerAdapter adapter, - @NonNull OnToggleView onToggleView) { - super(itemView, adapter); - this.viewGroup = viewGroup; - open.setOnClickListener(this); - this.onToggleView = onToggleView; - patchAdditionColor = ViewHelper.getPatchAdditionColor(itemView.getContext()); - patchDeletionColor = ViewHelper.getPatchDeletionColor(itemView.getContext()); - patchRefColor = ViewHelper.getPatchRefColor(itemView.getContext()); - } - - public static CommitFilesViewHolder newInstance(ViewGroup viewGroup, BaseRecyclerAdapter adapter, - @NonNull OnToggleView onToggleView) { - return new CommitFilesViewHolder(getView(viewGroup, R.layout.commit_file_row_item), viewGroup, adapter, onToggleView); - } - - @Override public void bind(@NonNull CommitFileModel commit) { - this.pathText = commit.getPatch(); - name.setText(commit.getFilename()); - changes.setText(SpannableBuilder.builder() - .append(changesText) - .append("\n") - .bold(String.valueOf(commit.getChanges()))); - addition.setText(SpannableBuilder.builder() - .append(additionText) - .append("\n") - .bold(String.valueOf(commit.getAdditions()))); - deletion.setText(SpannableBuilder.builder() - .append(deletionText) - .append("\n") - .bold(String.valueOf(commit.getDeletions()))); - status.setText(SpannableBuilder.builder() - .append(statusText) - .append("\n") - .bold(String.valueOf(commit.getStatus()))); - onToggle(onToggleView.isCollapsed(getAdapterPosition()), false); - } - - private void setPatchText(@NonNull String text) { - patch.setText(DiffLineSpan.getSpannable(text, patchAdditionColor, patchDeletionColor, patchRefColor)); - } - - private void onToggle(boolean expanded, boolean animate) { - if (animate) { - TransitionManager.beginDelayedTransition(viewGroup, new ChangeBounds()); - } - if (!expanded) { - patch.setText(""); - name.setMaxLines(2); - toggle.setRotation(0.0f); - } else { - name.setMaxLines(5); - setPatchText(pathText); - toggle.setRotation(180f); - } - } -} diff --git a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/CommitLinesViewHolder.java b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/CommitLinesViewHolder.java new file mode 100644 index 00000000..6e89076a --- /dev/null +++ b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/CommitLinesViewHolder.java @@ -0,0 +1,69 @@ +package com.fastaccess.ui.adapter.viewholder; + +import android.graphics.Color; +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; +import android.support.v4.content.ContextCompat; +import android.support.v7.widget.AppCompatTextView; +import android.view.View; +import android.view.ViewGroup; + +import com.fastaccess.R; +import com.fastaccess.data.dao.CommitLinesModel; +import com.fastaccess.helper.InputHelper; +import com.fastaccess.helper.ViewHelper; +import com.fastaccess.ui.widgets.SpannableBuilder; +import com.fastaccess.ui.widgets.recyclerview.BaseRecyclerAdapter; +import com.fastaccess.ui.widgets.recyclerview.BaseViewHolder; + +import butterknife.BindView; + +/** + * Created by Kosh on 31 Dec 2016, 3:12 PM + */ + +public class CommitLinesViewHolder extends BaseViewHolder { + + @BindView(R.id.textView) AppCompatTextView textView; + @BindView(R.id.lineNo) AppCompatTextView lineNo; + private final int patchAdditionColor; + private final int patchDeletionColor; + private final int patchRefColor; + + private CommitLinesViewHolder(@NonNull View itemView, @Nullable BaseRecyclerAdapter adapter) { + super(itemView, adapter); + patchAdditionColor = ViewHelper.getPatchAdditionColor(itemView.getContext()); + patchDeletionColor = ViewHelper.getPatchDeletionColor(itemView.getContext()); + patchRefColor = ViewHelper.getPatchRefColor(itemView.getContext()); + } + + public static CommitLinesViewHolder newInstance(@NonNull ViewGroup viewGroup, @NonNull BaseRecyclerAdapter adapter) { + return new CommitLinesViewHolder(getView(viewGroup, R.layout.commit_line_row_item), adapter); + } + + @Override public void bind(@NonNull CommitLinesModel item) { + lineNo.setText(SpannableBuilder.builder() + .append(item.getLeftLineNo() >= 0 ? item.getLeftLineNo() + "." : "") + .append(item.getRightLineNo() >= 0 ? item.getRightLineNo() + "." : "")); + lineNo.setVisibility(InputHelper.isEmpty(lineNo) ? View.GONE : View.VISIBLE); + switch (item.getColor()) { + case CommitLinesModel.ADDITION: + textView.setBackgroundColor(patchAdditionColor); + break; + case CommitLinesModel.DELETION: + textView.setBackgroundColor(patchDeletionColor); + break; + case CommitLinesModel.PATCH: + textView.setBackgroundColor(patchRefColor); + break; + default: + textView.setBackgroundColor(Color.TRANSPARENT); + } + if (item.isNoNewLine()) { + textView.setText(SpannableBuilder.builder().append(item.getText()).append(" ") + .append(ContextCompat.getDrawable(textView.getContext(), R.drawable.ic_newline))); + } else { + textView.setText(item.getText()); + } + } +} diff --git a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/PullRequestFilesViewHolder.java b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/PullRequestFilesViewHolder.java new file mode 100644 index 00000000..7f7dd337 --- /dev/null +++ b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/PullRequestFilesViewHolder.java @@ -0,0 +1,132 @@ +package com.fastaccess.ui.adapter.viewholder; + +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; +import android.support.transition.ChangeBounds; +import android.support.transition.TransitionManager; +import android.view.View; +import android.view.ViewGroup; + +import com.fastaccess.R; +import com.fastaccess.data.dao.CommitFileModel; +import com.fastaccess.data.dao.CommitLinesModel; +import com.fastaccess.data.dao.CommitFileChanges; +import com.fastaccess.helper.Logger; +import com.fastaccess.ui.adapter.CommitLinesAdapter; +import com.fastaccess.ui.adapter.callback.OnToggleView; +import com.fastaccess.ui.modules.repos.pull_requests.pull_request.details.files.PullRequestFilesMvp; +import com.fastaccess.ui.widgets.FontTextView; +import com.fastaccess.ui.widgets.SpannableBuilder; +import com.fastaccess.ui.widgets.recyclerview.BaseRecyclerAdapter; +import com.fastaccess.ui.widgets.recyclerview.BaseViewHolder; +import com.fastaccess.ui.widgets.recyclerview.DynamicRecyclerView; + +import butterknife.BindString; +import butterknife.BindView; + +/** + * Created by Kosh on 15 Feb 2017, 10:29 PM + */ + +public class PullRequestFilesViewHolder extends BaseViewHolder implements + BaseViewHolder.OnItemClickListener { + + @BindView(R.id.name) FontTextView name; + @BindView(R.id.patchList) DynamicRecyclerView patch; + @BindView(R.id.changes) FontTextView changes; + @BindView(R.id.addition) FontTextView addition; + @BindView(R.id.deletion) FontTextView deletion; + @BindView(R.id.status) FontTextView status; + @BindView(R.id.toggle) View toggle; + @BindView(R.id.open) View open; + @BindString(R.string.changes) String changesText; + @BindString(R.string.addition) String additionText; + @BindString(R.string.deletion) String deletionText; + @BindString(R.string.status) String statusText; + private OnToggleView onToggleView; + private ViewGroup viewGroup; + @Nullable private PullRequestFilesMvp.OnPatchClickListener onPatchClickListener; + + @Override public void onClick(View v) { + if (v.getId() != R.id.open) { + int position = getAdapterPosition(); + onToggleView.onToggle(position, !onToggleView.isCollapsed(position)); + onToggle(onToggleView.isCollapsed(position), true, position); + } else { + super.onClick(v); + } + } + + private PullRequestFilesViewHolder(@NonNull View itemView, @NonNull ViewGroup viewGroup, @Nullable BaseRecyclerAdapter adapter, + @NonNull OnToggleView onToggleView, @Nullable PullRequestFilesMvp.OnPatchClickListener onPatchClickListener) { + super(itemView, adapter); + this.viewGroup = viewGroup; + this.onToggleView = onToggleView; + this.onPatchClickListener = onPatchClickListener; + open.setOnClickListener(this); + patch.setNestedScrollingEnabled(false); + } + + public static PullRequestFilesViewHolder newInstance(ViewGroup viewGroup, BaseRecyclerAdapter adapter, + @NonNull OnToggleView onToggleView, + @Nullable PullRequestFilesMvp.OnPatchClickListener onPatchClickListener) { + return new PullRequestFilesViewHolder(getView(viewGroup, R.layout.pullrequest_file_row_item), viewGroup, adapter, + onToggleView, onPatchClickListener); + } + + @Override public void bind(@NonNull CommitFileChanges commitFileChanges) { + CommitFileModel commit = commitFileChanges.getCommitFileModel(); + name.setText(commit.getFilename()); + changes.setText(SpannableBuilder.builder() + .append(changesText) + .append("\n") + .bold(String.valueOf(commit.getChanges()))); + addition.setText(SpannableBuilder.builder() + .append(additionText) + .append("\n") + .bold(String.valueOf(commit.getAdditions()))); + deletion.setText(SpannableBuilder.builder() + .append(deletionText) + .append("\n") + .bold(String.valueOf(commit.getDeletions()))); + status.setText(SpannableBuilder.builder() + .append(statusText) + .append("\n") + .bold(String.valueOf(commit.getStatus()))); + int position = getAdapterPosition(); + onToggle(onToggleView.isCollapsed(position), false, position); + } + + private void onToggle(boolean expanded, boolean animate, int position) { + if (animate) { + TransitionManager.beginDelayedTransition(viewGroup, new ChangeBounds()); + } + if (!expanded) { + patch.swapAdapter(null, true); + patch.setVisibility(View.GONE); + name.setMaxLines(2); + toggle.setRotation(0.0f); + } else { + if (adapter != null) { + CommitFileChanges model = (CommitFileChanges) adapter.getItem(position); + if (model.getLinesModel() != null && !model.getLinesModel().isEmpty()) { + patch.setAdapter(new CommitLinesAdapter(model.getLinesModel(), this)); + patch.setVisibility(View.VISIBLE); + } + } + name.setMaxLines(5); + toggle.setRotation(180f); + } + } + + @Override public void onItemClick(int position, View v, CommitLinesModel item) { + Logger.e(item.getText()); + if (onPatchClickListener != null && adapter != null) { + int groupPosition = getAdapterPosition(); + CommitFileChanges commitFileChanges = (CommitFileChanges) adapter.getItem(groupPosition); + onPatchClickListener.onPatchClicked(groupPosition, position, v, commitFileChanges.getCommitFileModel(), item); + } + } + + @Override public void onItemLongClick(int position, View v, CommitLinesModel item) {} +} diff --git a/app/src/main/java/com/fastaccess/ui/modules/code/CodeViewerActivity.java b/app/src/main/java/com/fastaccess/ui/modules/code/CodeViewerActivity.java index ef97154d..2f3a1fe0 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/code/CodeViewerActivity.java +++ b/app/src/main/java/com/fastaccess/ui/modules/code/CodeViewerActivity.java @@ -17,6 +17,7 @@ import com.fastaccess.helper.AppHelper; import com.fastaccess.helper.BundleConstant; import com.fastaccess.helper.Bundler; import com.fastaccess.helper.InputHelper; +import com.fastaccess.helper.Logger; import com.fastaccess.provider.rest.RestProvider; import com.fastaccess.ui.base.BaseActivity; import com.fastaccess.ui.base.mvp.presenter.BasePresenter; @@ -40,6 +41,7 @@ public class CodeViewerActivity extends BaseActivity { } public static Intent createIntent(@NonNull Context context, @NonNull String url, @NonNull String htmlUrl) { + Logger.e(url, htmlUrl); Intent intent = new Intent(context, CodeViewerActivity.class); intent.putExtras(Bundler.start() .put(BundleConstant.EXTRA_TWO, htmlUrl) @@ -78,7 +80,7 @@ public class CodeViewerActivity extends BaseActivity { htmlUrl = bundle.getString(BundleConstant.EXTRA_TWO); getSupportFragmentManager() .beginTransaction() - .replace(R.id.container, ViewerFragment.newInstance(url), ViewerFragment.TAG) + .replace(R.id.container, ViewerFragment.newInstance(url, htmlUrl), ViewerFragment.TAG) .commit(); } setTitle(Uri.parse(url).getLastPathSegment()); @@ -97,13 +99,13 @@ public class CodeViewerActivity extends BaseActivity { } return true; } else if (item.getItemId() == R.id.browser) { - ActivityHelper.openChooser(this, htmlUrl != null ? htmlUrl : url); + ActivityHelper.openChooser(this, htmlUrl != null ? htmlUrl : url); return true; } else if (item.getItemId() == R.id.copy) { AppHelper.copyToClipboard(this, htmlUrl != null ? htmlUrl : url); return true; } else if (item.getItemId() == R.id.share) { - ActivityHelper.shareUrl(this, htmlUrl != null ? htmlUrl : url); + ActivityHelper.shareUrl(this, htmlUrl != null ? htmlUrl : url); return true; } else if (item.getItemId() == android.R.id.home) { Uri uri = Uri.parse(url); diff --git a/app/src/main/java/com/fastaccess/ui/modules/editor/EditorActivity.java b/app/src/main/java/com/fastaccess/ui/modules/editor/EditorActivity.java index be7ce24d..74fbc341 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/editor/EditorActivity.java +++ b/app/src/main/java/com/fastaccess/ui/modules/editor/EditorActivity.java @@ -123,8 +123,8 @@ public class EditorActivity extends BaseActivity implements Rep case RepoPagerMvp.CODE: if (codePagerView == null) { onAddAndHide(fragmentManager, RepoCodePagerFragment.newInstance(repoId(), login(), - getRepo().getUrl(), getRepo().getDefaultBranch()), currentVisible); + getRepo().getHtmlUrl(), getRepo().getUrl(), getRepo().getDefaultBranch()), currentVisible); } else { onShowHideFragment(fragmentManager, codePagerView, currentVisible); } diff --git a/app/src/main/java/com/fastaccess/ui/modules/repos/code/RepoCodePagerFragment.java b/app/src/main/java/com/fastaccess/ui/modules/repos/code/RepoCodePagerFragment.java index 1ed711fb..9ce94165 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/repos/code/RepoCodePagerFragment.java +++ b/app/src/main/java/com/fastaccess/ui/modules/repos/code/RepoCodePagerFragment.java @@ -10,6 +10,7 @@ import android.widget.TextView; import com.annimon.stream.Objects; import com.annimon.stream.Stream; +import com.evernote.android.state.State; import com.fastaccess.R; import com.fastaccess.data.dao.FragmentPagerAdapterModel; import com.fastaccess.data.dao.TabsCountStateModel; @@ -26,7 +27,6 @@ import com.fastaccess.ui.widgets.ViewPagerView; import java.util.HashSet; import butterknife.BindView; -import com.evernote.android.state.State; /** * Created by Kosh on 31 Dec 2016, 1:36 AM @@ -40,13 +40,14 @@ public class RepoCodePagerFragment extends BaseFragment counts = new HashSet<>(); public static RepoCodePagerFragment newInstance(@NonNull String repoId, @NonNull String login, - @NonNull String htmlLink, @NonNull String defaultBranch) { + @NonNull String htmlLink, @NonNull String url, @NonNull String defaultBranch) { RepoCodePagerFragment view = new RepoCodePagerFragment(); view.setArguments(Bundler.start() .put(BundleConstant.ID, repoId) .put(BundleConstant.EXTRA, login) - .put(BundleConstant.EXTRA_TWO, htmlLink) + .put(BundleConstant.EXTRA_TWO, url) .put(BundleConstant.EXTRA_THREE, defaultBranch) + .put(BundleConstant.EXTRA_FOUR, htmlLink) .end()); return view; } @@ -59,14 +60,15 @@ public class RepoCodePagerFragment extends BaseFragment implements @com.evernote.android.state.State String login; @com.evernote.android.state.State String repoId; @com.evernote.android.state.State boolean showToRepoBtn; + @com.evernote.android.state.State ArrayList reviewComments = new ArrayList<>(); @Nullable @Override public Commit getCommit() { return commitModel; diff --git a/app/src/main/java/com/fastaccess/ui/modules/repos/code/commit/details/comments/CommitCommentsFragments.java b/app/src/main/java/com/fastaccess/ui/modules/repos/code/commit/details/comments/CommitCommentsFragment.java similarity index 95% rename from app/src/main/java/com/fastaccess/ui/modules/repos/code/commit/details/comments/CommitCommentsFragments.java rename to app/src/main/java/com/fastaccess/ui/modules/repos/code/commit/details/comments/CommitCommentsFragment.java index 9b66d4e7..8780e7a8 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/repos/code/commit/details/comments/CommitCommentsFragments.java +++ b/app/src/main/java/com/fastaccess/ui/modules/repos/code/commit/details/comments/CommitCommentsFragment.java @@ -39,7 +39,7 @@ import butterknife.BindView; * Created by Kosh on 11 Nov 2016, 12:36 PM */ -public class CommitCommentsFragments extends BaseFragment implements CommitCommentsMvp.View { +public class CommitCommentsFragment extends BaseFragment implements CommitCommentsMvp.View { @BindView(R.id.recycler) DynamicRecyclerView recycler; @BindView(R.id.refresh) SwipeRefreshLayout refresh; @@ -49,8 +49,8 @@ public class CommitCommentsFragments extends BaseFragment toggleMap = new LinkedHashMap<>(); + private CommitPagerMvp.View viewCallback; private CommitFilesAdapter adapter; public static CommitFilesFragment newInstance(@NonNull String sha, @Nullable CommitFileListModel commitFileModels) {//TODO fix this @@ -47,7 +54,21 @@ public class CommitFilesFragment extends BaseFragment items) { + @Override public void onAttach(Context context) { + super.onAttach(context); + if (getParentFragment() instanceof CommitPagerMvp.View) { + viewCallback = (CommitPagerMvp.View) getParentFragment(); + } else if (context instanceof CommitPagerMvp.View) { + viewCallback = (CommitPagerMvp.View) context; + } + } + + @Override public void onDetach() { + viewCallback = null; + super.onDetach(); + } + + @Override public void onNotifyAdapter(@Nullable List items) { stateLayout.hideReload(); if (items == null || items.isEmpty()) { adapter.clear(); @@ -56,6 +77,13 @@ public class CommitFilesFragment extends BaseFragment items); + void onNotifyAdapter(@Nullable List items); + void onCommentAdded(@NonNull Comment newComment); } - interface Presenter extends BaseMvp.FAPresenter, BaseViewHolder.OnItemClickListener { + interface Presenter extends BaseMvp.FAPresenter, BaseViewHolder.OnItemClickListener { void onFragmentCreated(@Nullable Bundle bundle); - @NonNull CommitFileListModel getFiles(); + @NonNull ArrayList getFiles(); + + void onSubmitComment(@NonNull String comment, @NonNull CommitLinesModel item, @Nullable Bundle bundle); } diff --git a/app/src/main/java/com/fastaccess/ui/modules/repos/code/commit/details/files/CommitFilesPresenter.java b/app/src/main/java/com/fastaccess/ui/modules/repos/code/commit/details/files/CommitFilesPresenter.java index 52caf651..890e59ac 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/repos/code/commit/details/files/CommitFilesPresenter.java +++ b/app/src/main/java/com/fastaccess/ui/modules/repos/code/commit/details/files/CommitFilesPresenter.java @@ -9,35 +9,42 @@ import android.view.View; import android.widget.PopupMenu; import com.fastaccess.R; +import com.fastaccess.data.dao.CommentRequestModel; +import com.fastaccess.data.dao.CommitFileChanges; import com.fastaccess.data.dao.CommitFileListModel; import com.fastaccess.data.dao.CommitFileModel; +import com.fastaccess.data.dao.CommitLinesModel; +import com.fastaccess.data.dao.NameParser; import com.fastaccess.helper.ActivityHelper; import com.fastaccess.helper.AppHelper; import com.fastaccess.helper.BundleConstant; import com.fastaccess.helper.InputHelper; import com.fastaccess.provider.rest.RestProvider; import com.fastaccess.ui.base.mvp.presenter.BasePresenter; -import com.fastaccess.ui.modules.repos.code.commit.viewer.FullCommitFileActivity; +import com.fastaccess.ui.modules.code.CodeViewerActivity; import java.util.ArrayList; +import io.reactivex.Observable; + /** * Created by Kosh on 15 Feb 2017, 10:10 PM */ class CommitFilesPresenter extends BasePresenter implements CommitFilesMvp.Presenter { + @com.evernote.android.state.State String sha; + private ArrayList files = new ArrayList<>(); - private CommitFileListModel files = new CommitFileListModel(); - - @Override public void onItemClick(int position, View v, CommitFileModel item) { + @Override public void onItemClick(int position, View v, CommitFileChanges model) { if (v.getId() == R.id.open) { + CommitFileModel item = model.getCommitFileModel(); PopupMenu popup = new PopupMenu(v.getContext(), v); MenuInflater inflater = popup.getMenuInflater(); inflater.inflate(R.menu.commit_row_menu, popup.getMenu()); popup.setOnMenuItemClickListener(item1 -> { switch (item1.getItemId()) { case R.id.open: - FullCommitFileActivity.start(v.getContext(), item); + v.getContext().startActivity(CodeViewerActivity.createIntent(v.getContext(), item.getContentsUrl(), item.getBlobUrl())); break; case R.id.share: ActivityHelper.shareUrl(v.getContext(), item.getBlobUrl()); @@ -59,26 +66,42 @@ class CommitFilesPresenter extends BasePresenter implements } } - @Override public void onItemLongClick(int position, View v, CommitFileModel item) {} + @Override public void onItemLongClick(int position, View v, CommitFileChanges item) {} @Override public void onFragmentCreated(@Nullable Bundle bundle) { if (bundle != null) { - String sha = bundle.getString(BundleConstant.ID); + sha = bundle.getString(BundleConstant.ID); if (!InputHelper.isEmpty(sha)) { CommitFileListModel commitFiles = CommitFilesSingleton.getInstance().getByCommitId(sha); - ArrayList fileModels = new ArrayList<>(); if (commitFiles != null) { - fileModels.addAll(commitFiles); - CommitFilesSingleton.getInstance().clear(); + manageObservable(Observable.just(commitFiles) + .map(CommitFileChanges::construct) + .doFinally(() -> CommitFilesSingleton.getInstance().clear()) + .doOnNext(commitFileChanges -> sendToView(view -> view.onNotifyAdapter(commitFileChanges)))); } - sendToView(view -> view.onNotifyAdapter(fileModels)); + } } else { throw new NullPointerException("Bundle is null"); } } - @NonNull @Override public CommitFileListModel getFiles() { + @NonNull @Override public ArrayList getFiles() { return files; } + + @Override public void onSubmitComment(@NonNull String comment, @NonNull CommitLinesModel item, @Nullable Bundle bundle) { + if (bundle != null) { + String blob = bundle.getString(BundleConstant.ITEM); + String path = bundle.getString(BundleConstant.EXTRA); + if (path == null || sha == null) return; + CommentRequestModel commentRequestModel = new CommentRequestModel(); + commentRequestModel.setBody(comment); + commentRequestModel.setPath(path); + commentRequestModel.setPosition(item.getRightLineNo() > 0 ? item.getRightLineNo() : item.getLeftLineNo()); + NameParser nameParser = new NameParser(blob); + makeRestCall(RestProvider.getRepoService().postCommitComment(nameParser.getUsername(), + nameParser.getName(), sha, commentRequestModel), newComment -> sendToView(view -> view.onCommentAdded(newComment))); + } + } } diff --git a/app/src/main/java/com/fastaccess/ui/modules/repos/code/commit/details/files/CommitFilesSingleton.java b/app/src/main/java/com/fastaccess/ui/modules/repos/code/commit/details/files/CommitFilesSingleton.java index 2faaf51c..69c79ada 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/repos/code/commit/details/files/CommitFilesSingleton.java +++ b/app/src/main/java/com/fastaccess/ui/modules/repos/code/commit/details/files/CommitFilesSingleton.java @@ -22,8 +22,7 @@ class CommitFilesSingleton { private Map files = new Hashtable<>(); - private CommitFilesSingleton() { - } + private CommitFilesSingleton() {} void putFiles(@NonNull String id, @NonNull CommitFileListModel commitFiles) { files.clear(); diff --git a/app/src/main/java/com/fastaccess/ui/modules/repos/code/files/RepoFilesPresenter.java b/app/src/main/java/com/fastaccess/ui/modules/repos/code/files/RepoFilesPresenter.java index 34c3505c..9460ea7e 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/repos/code/files/RepoFilesPresenter.java +++ b/app/src/main/java/com/fastaccess/ui/modules/repos/code/files/RepoFilesPresenter.java @@ -53,7 +53,9 @@ class RepoFilesPresenter extends BasePresenter implements Rep manageDisposable(RxHelper.getObserver(RepoFile.getFiles(login, repoId).toObservable()) .flatMap(response -> { if (response != null) { - return Observable.fromIterable(response).sorted((repoFile, repoFile2) -> repoFile2.getType().compareTo(repoFile.getType())); + return Observable.fromIterable(response) + .filter(repoFile -> repoFile != null && repoFile.getType() != null) + .sorted((repoFile, repoFile2) -> repoFile2.getType().compareTo(repoFile.getType())); } return Observable.empty(); }) diff --git a/app/src/main/java/com/fastaccess/ui/modules/repos/code/prettifier/ViewerFragment.java b/app/src/main/java/com/fastaccess/ui/modules/repos/code/prettifier/ViewerFragment.java index d543551c..ed71ce73 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/repos/code/prettifier/ViewerFragment.java +++ b/app/src/main/java/com/fastaccess/ui/modules/repos/code/prettifier/ViewerFragment.java @@ -42,13 +42,18 @@ public class ViewerFragment extends BaseFragment implements ViewerMvp @com.evernote.android.state.State boolean isRepo; @com.evernote.android.state.State boolean isImage; @com.evernote.android.state.State String url; + @com.evernote.android.state.State String htmlUrl; @Override public void onError(@NonNull Throwable throwable) { throwable.printStackTrace(); @@ -49,6 +50,7 @@ class ViewerPresenter extends BasePresenter implements ViewerMvp if (intent == null) return; isRepo = intent.getBoolean(BundleConstant.EXTRA); url = intent.getString(BundleConstant.ITEM); + htmlUrl = intent.getString(BundleConstant.EXTRA_TWO); if (!InputHelper.isEmpty(url)) { if (MarkDownProvider.isArchive(url)) { sendToView(view -> view.onShowError(R.string.archive_file_detected_error)); @@ -114,7 +116,7 @@ class ViewerPresenter extends BasePresenter implements ViewerMvp fileModel.setMarkdown(true); isMarkdown = true; isRepo = true; - sendToView(view -> view.onSetMdText(downloadedStream, url)); + sendToView(view -> view.onSetMdText(downloadedStream, htmlUrl == null ? url : htmlUrl)); } else { isMarkdown = MarkDownProvider.isMarkdown(url); if (isMarkdown) { @@ -134,7 +136,7 @@ class ViewerPresenter extends BasePresenter implements ViewerMvp fileModel.setMarkdown(true); fileModel.setContent(downloadedStream); manageObservable(fileModel.save(fileModel).toObservable()); - sendToView(view -> view.onSetMdText(downloadedStream, url)); + sendToView(view -> view.onSetMdText(downloadedStream, htmlUrl == null ? url : htmlUrl)); }); return; } diff --git a/app/src/main/java/com/fastaccess/ui/modules/repos/extras/labels/LabelsDialogFragment.java b/app/src/main/java/com/fastaccess/ui/modules/repos/extras/labels/LabelsDialogFragment.java index d421345f..2db81cce 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/repos/extras/labels/LabelsDialogFragment.java +++ b/app/src/main/java/com/fastaccess/ui/modules/repos/extras/labels/LabelsDialogFragment.java @@ -92,7 +92,7 @@ public class LabelsDialogFragment extends BaseDialogFragment list = getArguments().getParcelableArrayList(BundleConstant.ITEM); diff --git a/app/src/main/java/com/fastaccess/ui/modules/repos/issues/create/CreateIssueActivity.java b/app/src/main/java/com/fastaccess/ui/modules/repos/issues/create/CreateIssueActivity.java index 8deb0bfb..0469c7c4 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/repos/issues/create/CreateIssueActivity.java +++ b/app/src/main/java/com/fastaccess/ui/modules/repos/issues/create/CreateIssueActivity.java @@ -22,10 +22,12 @@ import com.fastaccess.helper.AppHelper; import com.fastaccess.helper.BundleConstant; import com.fastaccess.helper.Bundler; import com.fastaccess.helper.InputHelper; +import com.fastaccess.helper.ViewHelper; import com.fastaccess.provider.markdown.MarkDownProvider; import com.fastaccess.ui.base.BaseActivity; import com.fastaccess.ui.modules.editor.EditorActivity; import com.fastaccess.ui.widgets.FontTextView; +import com.fastaccess.ui.widgets.dialog.MessageDialogView; import butterknife.BindView; import butterknife.OnClick; @@ -232,6 +234,24 @@ public class CreateIssueActivity extends BaseActivity implements I sendToView(view -> view.onSetupIssue(true)); } }) - .subscribe(issue -> {/**/}, - throwable -> sendToView(view -> view.showErrorIssueActionMsg(currentIssue.getState() == IssueState.open)))); + .subscribe(issue -> {/**/}, this::onError)); } } @@ -196,9 +195,7 @@ class IssuePagerPresenter extends BasePresenter implements I IssueRequestModel issueRequestModel = IssueRequestModel.clone(issueModel, false); makeRestCall(RestProvider.getIssueService().editIssue(login, repoId, issueNumber, issueRequestModel), issue -> { - this.issueModel = issue; - issueModel.setLogin(login); - issueModel.setRepoId(repoId); + this.issueModel.setMilestone(issue.getMilestone()); manageObservable(issue.save(issueModel).toObservable()); sendToView(view -> updateTimeline(view, R.string.labels_added_successfully)); }); @@ -225,9 +222,6 @@ class IssuePagerPresenter extends BasePresenter implements I assigneesRequestModel.setAssignees(assignees); makeRestCall(RestProvider.getIssueService().putAssignees(login, repoId, issueNumber, assigneesRequestModel), issue -> { - this.issueModel = issue; - issueModel.setLogin(login); - issueModel.setRepoId(repoId); UsersListModel assignee = new UsersListModel(); assignee.addAll(users); issueModel.setAssignees(assignee); diff --git a/app/src/main/java/com/fastaccess/ui/modules/repos/pull_requests/pull_request/details/PullRequestPagerActivity.java b/app/src/main/java/com/fastaccess/ui/modules/repos/pull_requests/pull_request/details/PullRequestPagerActivity.java index 3d5cae06..e33466fe 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/repos/pull_requests/pull_request/details/PullRequestPagerActivity.java +++ b/app/src/main/java/com/fastaccess/ui/modules/repos/pull_requests/pull_request/details/PullRequestPagerActivity.java @@ -9,12 +9,14 @@ import android.support.design.widget.FloatingActionButton; import android.support.design.widget.TabLayout; import android.support.v4.app.Fragment; import android.support.v4.view.ViewPager; +import android.support.v7.widget.CardView; import android.view.Menu; import android.view.MenuItem; import android.view.View; import com.evernote.android.state.State; import com.fastaccess.R; +import com.fastaccess.data.dao.CommentRequestModel; import com.fastaccess.data.dao.FragmentPagerAdapterModel; import com.fastaccess.data.dao.LabelModel; import com.fastaccess.data.dao.MilestoneModel; @@ -22,6 +24,7 @@ import com.fastaccess.data.dao.model.PullRequest; import com.fastaccess.data.dao.model.User; import com.fastaccess.data.dao.types.IssueState; import com.fastaccess.helper.ActivityHelper; +import com.fastaccess.helper.AnimHelper; import com.fastaccess.helper.BundleConstant; import com.fastaccess.helper.Bundler; import com.fastaccess.helper.InputHelper; @@ -68,6 +71,9 @@ public class PullRequestPagerActivity extends BaseActivity { + IssuePagerMvp.IssuePrCallback, PullRequestFilesMvp.PatchCallback { void onSetupIssue(boolean update); @@ -45,7 +46,7 @@ public interface PullRequestPagerMvp { void onFinishActivity(); } - interface Presenter extends BaseMvp.FAPresenter { + interface Presenter extends BaseMvp.FAPresenter, PullRequestFilesMvp.CommitCommentCallback { @Nullable PullRequest getPullRequest(); @@ -71,7 +72,7 @@ public interface PullRequestPagerMvp { @NonNull SpannableBuilder getMergeBy(@NonNull PullRequest pullRequest, @NonNull Context context); - void onMerge(String msg); + void onMerge(String s, String msg); void onLoadLabels(); diff --git a/app/src/main/java/com/fastaccess/ui/modules/repos/pull_requests/pull_request/details/PullRequestPagerPresenter.java b/app/src/main/java/com/fastaccess/ui/modules/repos/pull_requests/pull_request/details/PullRequestPagerPresenter.java index 696478de..5dce3849 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/repos/pull_requests/pull_request/details/PullRequestPagerPresenter.java +++ b/app/src/main/java/com/fastaccess/ui/modules/repos/pull_requests/pull_request/details/PullRequestPagerPresenter.java @@ -11,6 +11,7 @@ import com.annimon.stream.Collectors; import com.annimon.stream.Stream; import com.fastaccess.R; import com.fastaccess.data.dao.AssigneesRequestModel; +import com.fastaccess.data.dao.CommentRequestModel; import com.fastaccess.data.dao.IssueRequestModel; import com.fastaccess.data.dao.LabelListModel; import com.fastaccess.data.dao.LabelModel; @@ -46,6 +47,7 @@ class PullRequestPagerPresenter extends BasePresenter @com.evernote.android.state.State String repoId; @com.evernote.android.state.State boolean isCollaborator; @com.evernote.android.state.State boolean showToRepoBtn; + @com.evernote.android.state.State ArrayList reviewComments = new ArrayList<>(); @Nullable @Override public PullRequest getPullRequest() { return pullRequest; @@ -198,9 +200,7 @@ class PullRequestPagerPresenter extends BasePresenter IssueRequestModel issueRequestModel = IssueRequestModel.clone(pullRequest, false); makeRestCall(RestProvider.getPullRequestService().editIssue(login, repoId, issueNumber, issueRequestModel), pr -> { - this.pullRequest = pr; - pullRequest.setLogin(login); - pullRequest.setRepoId(repoId); + this.pullRequest.setMilestone(pr.getMilestone()); manageObservable(pr.save(pullRequest).toObservable()); sendToView(view -> updateTimeline(view, R.string.labels_added_successfully)); }); @@ -216,12 +216,9 @@ class PullRequestPagerPresenter extends BasePresenter assigneesRequestModel.setAssignees(assignees); makeRestCall(RestProvider.getPullRequestService().putAssignees(login, repoId, issueNumber, assigneesRequestModel), pullRequestResponse -> { - this.pullRequest = pullRequestResponse; - pullRequest.setLogin(login); - pullRequest.setRepoId(repoId); - UsersListModel assignee = new UsersListModel(); - assignee.addAll(users); - pullRequest.setAssignees(assignee); + UsersListModel usersListModel = new UsersListModel(); + usersListModel.addAll(users); + this.pullRequest.setAssignees(usersListModel); manageObservable(pullRequest.save(pullRequest).toObservable()); sendToView(view -> updateTimeline(view, R.string.assignee_added)); } @@ -234,22 +231,24 @@ class PullRequestPagerPresenter extends BasePresenter } } - @Override public void onMerge(@NonNull String msg) { + @Override public void onMerge(@NonNull String msg, @NonNull String mergeMethod) { if (isMergeable() && (isCollaborator() || isRepoOwner())) {//double the checking if (getPullRequest() == null || getPullRequest().getHead() == null || getPullRequest().getHead().getSha() == null) return; MergeRequestModel mergeRequestModel = new MergeRequestModel(); mergeRequestModel.setSha(getPullRequest().getHead().getSha()); mergeRequestModel.setCommitMessage(msg); - manageDisposable( - RxHelper.getObserver(RestProvider.getPullRequestService().mergePullRequest(login, repoId, issueNumber, mergeRequestModel)) - .doOnSubscribe(disposable -> sendToView(view -> view.showProgress(0))) - .subscribe(mergeResponseModel -> { - if (mergeResponseModel.isMerged()) { - sendToView(view -> updateTimeline(view, R.string.success_merge)); - } else { - sendToView(view -> view.showErrorMessage(mergeResponseModel.getMessage())); - } - }, throwable -> sendToView(view -> view.showErrorMessage(throwable.getMessage()))) + mergeRequestModel.setMergeMethod(mergeMethod.toLowerCase()); + manageDisposable(RxHelper.getObserver(RestProvider.getPullRequestService() + .mergePullRequest(login, repoId, issueNumber, mergeRequestModel)) + .doOnSubscribe(disposable -> sendToView(view -> view.showProgress(0))) + .subscribe(mergeResponseModel -> { + if (mergeResponseModel.isMerged()) { + pullRequest.setMerged(true); + sendToView(view -> updateTimeline(view, R.string.success_merge)); + } else { + sendToView(view -> view.showErrorMessage(mergeResponseModel.getMessage())); + } + }, throwable -> sendToView(view -> view.showErrorMessage(throwable.getMessage()))) ); } } @@ -280,6 +279,23 @@ class PullRequestPagerPresenter extends BasePresenter callApi(); } + @NonNull @Override public ArrayList getCommitComment() { + return reviewComments; + } + + @Override public void onAddComment(@NonNull CommentRequestModel comment) { + int index = reviewComments.indexOf(comment); + if (index != -1) { + reviewComments.set(index, comment); + } else { + reviewComments.add(comment); + } + } + + @Override public boolean hasReviewComments() { + return reviewComments.size() > 0; + } + private void callApi() { makeRestCall(RxHelper.getObserver(Observable.zip(RestProvider.getPullRequestService() .getPullRequest(login, repoId, issueNumber), diff --git a/app/src/main/java/com/fastaccess/ui/modules/repos/pull_requests/pull_request/details/files/PullRequestFilesFragment.java b/app/src/main/java/com/fastaccess/ui/modules/repos/pull_requests/pull_request/details/files/PullRequestFilesFragment.java index 992fdd81..1b112fd2 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/repos/pull_requests/pull_request/details/files/PullRequestFilesFragment.java +++ b/app/src/main/java/com/fastaccess/ui/modules/repos/pull_requests/pull_request/details/files/PullRequestFilesFragment.java @@ -1,5 +1,6 @@ package com.fastaccess.ui.modules.repos.pull_requests.pull_request.details.files; +import android.content.Context; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; @@ -7,14 +8,19 @@ import android.support.annotation.StringRes; import android.support.v4.widget.SwipeRefreshLayout; import android.view.View; +import com.evernote.android.state.State; import com.fastaccess.R; +import com.fastaccess.data.dao.CommentRequestModel; +import com.fastaccess.data.dao.CommitFileChanges; import com.fastaccess.data.dao.CommitFileModel; +import com.fastaccess.data.dao.CommitLinesModel; import com.fastaccess.helper.ActivityHelper; import com.fastaccess.helper.BundleConstant; import com.fastaccess.helper.Bundler; import com.fastaccess.provider.rest.loadmore.OnLoadMore; import com.fastaccess.ui.adapter.CommitFilesAdapter; import com.fastaccess.ui.base.BaseFragment; +import com.fastaccess.ui.modules.reviews.AddReviewBottomSheetDialog; import com.fastaccess.ui.widgets.StateLayout; import com.fastaccess.ui.widgets.recyclerview.DynamicRecyclerView; @@ -23,7 +29,6 @@ import java.util.LinkedHashMap; import java.util.List; import butterknife.BindView; -import com.evernote.android.state.State; /** * Created by Kosh on 03 Dec 2016, 3:56 PM @@ -35,8 +40,10 @@ public class PullRequestFilesFragment extends BaseFragment toggleMap = new LinkedHashMap<>(); + + private PullRequestFilesMvp.PatchCallback viewCallback; + private OnLoadMore onLoadMore; private CommitFilesAdapter adapter; public static PullRequestFilesFragment newInstance(@NonNull String repoId, @NonNull String login, long number) { @@ -49,7 +56,21 @@ public class PullRequestFilesFragment extends BaseFragment items, int page) { + @Override public void onAttach(Context context) { + super.onAttach(context); + if (getParentFragment() instanceof PullRequestFilesMvp.PatchCallback) { + viewCallback = (PullRequestFilesMvp.PatchCallback) getParentFragment(); + } else if (context instanceof PullRequestFilesMvp.PatchCallback) { + viewCallback = (PullRequestFilesMvp.PatchCallback) context; + } + } + + @Override public void onDetach() { + viewCallback = null; + super.onDetach(); + } + + @Override public void onNotifyAdapter(@Nullable List items, int page) { hideProgress(); if (items == null || items.isEmpty()) { adapter.clear(); @@ -74,7 +95,7 @@ public class PullRequestFilesFragment extends BaseFragment 0 ? item.getRightLineNo() : item.getLeftLineNo()); + if (viewCallback != null) viewCallback.onAddComment(commentRequestModel); + } + } + private void showReload() { hideProgress(); stateLayout.showReload(adapter.getItemCount()); } - } diff --git a/app/src/main/java/com/fastaccess/ui/modules/repos/pull_requests/pull_request/details/files/PullRequestFilesMvp.java b/app/src/main/java/com/fastaccess/ui/modules/repos/pull_requests/pull_request/details/files/PullRequestFilesMvp.java index 134165df..24123bbd 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/repos/pull_requests/pull_request/details/files/PullRequestFilesMvp.java +++ b/app/src/main/java/com/fastaccess/ui/modules/repos/pull_requests/pull_request/details/files/PullRequestFilesMvp.java @@ -5,10 +5,14 @@ import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v4.widget.SwipeRefreshLayout; +import com.fastaccess.data.dao.CommentRequestModel; +import com.fastaccess.data.dao.CommitFileChanges; import com.fastaccess.data.dao.CommitFileModel; +import com.fastaccess.data.dao.CommitLinesModel; import com.fastaccess.provider.rest.loadmore.OnLoadMore; import com.fastaccess.ui.adapter.callback.OnToggleView; import com.fastaccess.ui.base.mvp.BaseMvp; +import com.fastaccess.ui.modules.reviews.callback.ReviewCommentListener; import com.fastaccess.ui.widgets.recyclerview.BaseViewHolder; import java.util.ArrayList; @@ -18,21 +22,38 @@ import java.util.List; * Created by Kosh on 03 Dec 2016, 3:45 PM */ -interface PullRequestFilesMvp { +public interface PullRequestFilesMvp { - interface View extends BaseMvp.FAView, SwipeRefreshLayout.OnRefreshListener, android.view.View.OnClickListener, OnToggleView { - void onNotifyAdapter(@Nullable List items, int page); + interface View extends BaseMvp.FAView, SwipeRefreshLayout.OnRefreshListener, android.view.View.OnClickListener, + OnToggleView, OnPatchClickListener, ReviewCommentListener { + void onNotifyAdapter(@Nullable List items, int page); @NonNull OnLoadMore getLoadMore(); } interface Presenter extends BaseMvp.FAPresenter, - BaseViewHolder.OnItemClickListener, + BaseViewHolder.OnItemClickListener, BaseMvp.PaginationListener { void onFragmentCreated(@NonNull Bundle bundle); - @NonNull ArrayList getFiles(); + @NonNull ArrayList getFiles(); void onWorkOffline(); } + + interface OnPatchClickListener { + void onPatchClicked(int groupPosition, int childPosition, android.view.View v, CommitFileModel commit, CommitLinesModel item); + } + + interface PatchCallback { + void onAddComment(CommentRequestModel comment); + } + + interface CommitCommentCallback { + @NonNull ArrayList getCommitComment(); + + void onAddComment(@NonNull CommentRequestModel comment); + + boolean hasReviewComments(); + } } diff --git a/app/src/main/java/com/fastaccess/ui/modules/repos/pull_requests/pull_request/details/files/PullRequestFilesPresenter.java b/app/src/main/java/com/fastaccess/ui/modules/repos/pull_requests/pull_request/details/files/PullRequestFilesPresenter.java index 07c11979..dc80cdf2 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/repos/pull_requests/pull_request/details/files/PullRequestFilesPresenter.java +++ b/app/src/main/java/com/fastaccess/ui/modules/repos/pull_requests/pull_request/details/files/PullRequestFilesPresenter.java @@ -11,6 +11,7 @@ import android.widget.PopupMenu; import com.fastaccess.R; import com.fastaccess.data.dao.CommitFileModel; +import com.fastaccess.data.dao.CommitFileChanges; import com.fastaccess.helper.ActivityHelper; import com.fastaccess.helper.AppHelper; import com.fastaccess.helper.BundleConstant; @@ -18,11 +19,13 @@ import com.fastaccess.helper.InputHelper; import com.fastaccess.provider.rest.RestProvider; import com.fastaccess.ui.base.mvp.BaseMvp; import com.fastaccess.ui.base.mvp.presenter.BasePresenter; +import com.fastaccess.ui.modules.code.CodeViewerActivity; import com.fastaccess.ui.modules.repos.code.commit.details.CommitPagerActivity; -import com.fastaccess.ui.modules.repos.code.commit.viewer.FullCommitFileActivity; import java.util.ArrayList; +import io.reactivex.Observable; + /** * Created by Kosh on 03 Dec 2016, 3:48 PM */ @@ -32,7 +35,7 @@ class PullRequestFilesPresenter extends BasePresenter @com.evernote.android.state.State String login; @com.evernote.android.state.State String repoId; @com.evernote.android.state.State long number; - private ArrayList files = new ArrayList<>(); + private ArrayList files = new ArrayList<>(); private int page; private int previousTotal; private int lastPage = Integer.MAX_VALUE; @@ -69,11 +72,15 @@ class PullRequestFilesPresenter extends BasePresenter return; } if (repoId == null || login == null) return; - makeRestCall(RestProvider.getPullRequestService().getPullRequestFiles(login, repoId, number, page), - response -> { - lastPage = response.getLast(); - sendToView(view -> view.onNotifyAdapter(response.getItems(), page)); - }); + makeRestCall(RestProvider.getPullRequestService().getPullRequestFiles(login, repoId, number, page) + .flatMap(commitFileModelPageable -> { + if (commitFileModelPageable != null && commitFileModelPageable.getItems() != null) { + lastPage = commitFileModelPageable.getLast(); + return Observable.just(CommitFileChanges.construct(commitFileModelPageable.getItems())); + } + return Observable.empty(); + }), + response -> sendToView(view -> view.onNotifyAdapter(response, page))); } @Override public void onFragmentCreated(@NonNull Bundle bundle) { @@ -85,7 +92,7 @@ class PullRequestFilesPresenter extends BasePresenter } } - @NonNull @Override public ArrayList getFiles() { + @NonNull @Override public ArrayList getFiles() { return files; } @@ -93,15 +100,16 @@ class PullRequestFilesPresenter extends BasePresenter sendToView(BaseMvp.FAView::hideProgress); } - @Override public void onItemClick(int position, View v, CommitFileModel item) { + @Override public void onItemClick(int position, View v, CommitFileChanges model) { if (v.getId() == R.id.open) { + CommitFileModel item = model.getCommitFileModel(); PopupMenu popup = new PopupMenu(v.getContext(), v); MenuInflater inflater = popup.getMenuInflater(); inflater.inflate(R.menu.commit_row_menu, popup.getMenu()); popup.setOnMenuItemClickListener(item1 -> { switch (item1.getItemId()) { case R.id.open: - FullCommitFileActivity.start(v.getContext(), item); + v.getContext().startActivity(CodeViewerActivity.createIntent(v.getContext(), item.getContentsUrl(), item.getBlobUrl())); break; case R.id.share: ActivityHelper.shareUrl(v.getContext(), item.getBlobUrl()); @@ -123,8 +131,8 @@ class PullRequestFilesPresenter extends BasePresenter } } - @Override public void onItemLongClick(int position, View v, CommitFileModel item) { - v.getContext().startActivity(CommitPagerActivity.createIntent(v.getContext(), repoId, login, Uri.parse(item.getContentsUrl()) - .getQueryParameter("ref"))); + @Override public void onItemLongClick(int position, View v, CommitFileChanges item) { + v.getContext().startActivity(CommitPagerActivity.createIntent(v.getContext(), repoId, login, + Uri.parse(item.getCommitFileModel().getContentsUrl()).getQueryParameter("ref"))); } } diff --git a/app/src/main/java/com/fastaccess/ui/modules/repos/pull_requests/pull_request/details/timeline/timeline/PullRequestTimelinePresenter.java b/app/src/main/java/com/fastaccess/ui/modules/repos/pull_requests/pull_request/details/timeline/timeline/PullRequestTimelinePresenter.java index ca89fca3..59f55f04 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/repos/pull_requests/pull_request/details/timeline/timeline/PullRequestTimelinePresenter.java +++ b/app/src/main/java/com/fastaccess/ui/modules/repos/pull_requests/pull_request/details/timeline/timeline/PullRequestTimelinePresenter.java @@ -291,7 +291,9 @@ public class PullRequestTimelinePresenter extends BasePresenter(), WikiMvp.View { companion object { fun getWiki(context: Context, repoId: String?, username: String?): Intent { + return getWiki(context, repoId, username, null) + } + + fun getWiki(context: Context, repoId: String?, username: String?, page: String?): Intent { val intent = Intent(context, WikiActivity::class.java) intent.putExtras(Bundler.start() .put(BundleConstant.ID, repoId) .put(BundleConstant.EXTRA, username) + .put(BundleConstant.EXTRA_TWO, page) .end()) return intent } diff --git a/app/src/main/java/com/fastaccess/ui/modules/repos/wiki/WikiPresenter.kt b/app/src/main/java/com/fastaccess/ui/modules/repos/wiki/WikiPresenter.kt index 30a9408e..ed1b8a27 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/repos/wiki/WikiPresenter.kt +++ b/app/src/main/java/com/fastaccess/ui/modules/repos/wiki/WikiPresenter.kt @@ -25,8 +25,10 @@ class WikiPresenter : BasePresenter(), WikiMvp.Presenter { val bundle = intent.extras repoId = bundle.getString(BundleConstant.ID) login = bundle.getString(BundleConstant.EXTRA) + val page = bundle.getString(BundleConstant.EXTRA_TWO) if (!repoId.isNullOrEmpty() && !login.isNullOrEmpty()) { - onSidebarClicked(WikiSideBarModel("Home", "$login/$repoId/wiki")) + onSidebarClicked(WikiSideBarModel("Home", "$login/$repoId/wiki" + + if (!page.isNullOrEmpty()) "/$page" else "")) } } } diff --git a/app/src/main/java/com/fastaccess/ui/modules/reviews/AddReviewBottomSheetDialog.kt b/app/src/main/java/com/fastaccess/ui/modules/reviews/AddReviewBottomSheetDialog.kt new file mode 100644 index 00000000..f98c59c0 --- /dev/null +++ b/app/src/main/java/com/fastaccess/ui/modules/reviews/AddReviewBottomSheetDialog.kt @@ -0,0 +1,100 @@ +package com.fastaccess.ui.modules.reviews + +import android.content.Context +import android.graphics.Color +import android.os.Bundle +import android.support.design.widget.TextInputLayout +import android.support.v4.content.ContextCompat +import android.support.v7.widget.Toolbar +import android.view.View +import android.widget.TextView +import com.fastaccess.R +import com.fastaccess.data.dao.CommitLinesModel +import com.fastaccess.helper.BundleConstant +import com.fastaccess.helper.Bundler +import com.fastaccess.helper.InputHelper +import com.fastaccess.helper.ViewHelper +import com.fastaccess.ui.base.BaseDialogFragment +import com.fastaccess.ui.base.mvp.BaseMvp +import com.fastaccess.ui.base.mvp.presenter.BasePresenter +import com.fastaccess.ui.modules.reviews.callback.ReviewCommentListener +import com.fastaccess.ui.widgets.SpannableBuilder + +/** + * Created by Kosh on 24 Jun 2017, 12:32 PM + */ +class AddReviewBottomSheetDialog : BaseDialogFragment>() { + + val toolbar: Toolbar by lazy { view!!.findViewById(R.id.toolbar) as Toolbar } + val textView: TextView by lazy { view!!.findViewById(R.id.text) as TextView } + val lineNo: TextView by lazy { view!!.findViewById(R.id.lineNo) as TextView } + val editText: TextInputLayout by lazy { view!!.findViewById(R.id.editText) as TextInputLayout } + val spacePattern = "\\s+".toRegex() + + + private var commentCallback: ReviewCommentListener? = null + + override fun onAttach(context: Context?) { + super.onAttach(context) + if (parentFragment is ReviewCommentListener) { + commentCallback = parentFragment as ReviewCommentListener + } else { + commentCallback = context as ReviewCommentListener + } + } + + override fun onDetach() { + commentCallback = null + super.onDetach() + } + + override fun fragmentLayout(): Int = R.layout.review_dialog_layout + + override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) { + val item = arguments.getParcelable(BundleConstant.ITEM) + lineNo.text = SpannableBuilder.builder() + .append(if (item.leftLineNo >= 0) String.format("%s.", item.leftLineNo) else "") + .append(if (item.rightLineNo >= 0) String.format("%s.", item.rightLineNo) else "") + lineNo.visibility = if (InputHelper.isEmpty(lineNo)) View.GONE else View.VISIBLE + + when (item.color) { + CommitLinesModel.ADDITION -> textView.setBackgroundColor(ViewHelper.getPatchAdditionColor(context)) + CommitLinesModel.DELETION -> textView.setBackgroundColor(ViewHelper.getPatchDeletionColor(context)) + CommitLinesModel.PATCH -> textView.setBackgroundColor(ViewHelper.getPatchRefColor(context)) + else -> textView.setBackgroundColor(Color.TRANSPARENT) + } + if (item.noNewLine) { + textView.text = SpannableBuilder.builder().append(item.text.replace(spacePattern, " ")).append(" ") + .append(ContextCompat.getDrawable(context, R.drawable.ic_newline)) + } else { + textView.text = item.text.replace(spacePattern, " ") + } + toolbar.setTitle(R.string.add_comment) + toolbar.setNavigationIcon(R.drawable.ic_clear) + toolbar.setNavigationOnClickListener { dismiss() } + toolbar.inflateMenu(R.menu.add_menu) + toolbar.setOnMenuItemClickListener { + if (editText.editText?.text.isNullOrEmpty()) { + editText.error = getString(R.string.required_field) + } else { + editText.error = null + commentCallback?.onCommentAdded(InputHelper.toString(editText), item, arguments.getBundle(BundleConstant.EXTRA)) + dismiss() + } + return@setOnMenuItemClickListener true + } + } + + override fun providePresenter(): BasePresenter = BasePresenter() + + companion object { + fun newInstance(commitLinesModel: CommitLinesModel, bundle: Bundle? = null): AddReviewBottomSheetDialog { + val dialog = AddReviewBottomSheetDialog() + dialog.arguments = Bundler.start() + .put(BundleConstant.ITEM, commitLinesModel) + .put(BundleConstant.EXTRA, bundle) + .end() + return dialog + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/fastaccess/ui/modules/reviews/callback/ReviewCommentListener.kt b/app/src/main/java/com/fastaccess/ui/modules/reviews/callback/ReviewCommentListener.kt new file mode 100644 index 00000000..2c9e8ad4 --- /dev/null +++ b/app/src/main/java/com/fastaccess/ui/modules/reviews/callback/ReviewCommentListener.kt @@ -0,0 +1,11 @@ +package com.fastaccess.ui.modules.reviews.callback + +import android.os.Bundle +import com.fastaccess.data.dao.CommitLinesModel + +/** + * Created by Kosh on 24 Jun 2017, 12:38 PM + */ +interface ReviewCommentListener { + fun onCommentAdded(comment: String, item: CommitLinesModel, bundle: Bundle?) +} \ No newline at end of file diff --git a/app/src/main/java/com/fastaccess/ui/modules/settings/SettingsActivity.java b/app/src/main/java/com/fastaccess/ui/modules/settings/SettingsActivity.java index 835322c3..50b9a910 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/settings/SettingsActivity.java +++ b/app/src/main/java/com/fastaccess/ui/modules/settings/SettingsActivity.java @@ -16,6 +16,7 @@ import com.fastaccess.ui.base.BaseActivity; import com.fastaccess.ui.base.mvp.presenter.BasePresenter; import com.fastaccess.ui.modules.settings.category.SettingsCategoryActivity; import com.fastaccess.ui.modules.theme.ThemeActivity; +import com.fastaccess.ui.modules.theme.code.ThemeCodeActivity; import net.grandcentrix.thirtyinch.TiPresenter; @@ -55,6 +56,7 @@ public class SettingsActivity extends BaseActivity implements LanguageBottomShee setResult(RESULT_CANCELED); } settings.add(new SettingsModel(R.drawable.ic_color_lens, getString(R.string.theme_title), SettingsModel.THEME)); + settings.add(new SettingsModel(R.drawable.ic_color_lens, getString(R.string.choose_code_theme), SettingsModel.CODE_THEME)); settings.add(new SettingsModel(R.drawable.ic_edit, getString(R.string.customization), SettingsModel.CUSTOMIZATION)); settings.add(new SettingsModel(R.drawable.ic_ring, getString(R.string.notifications), SettingsModel.NOTIFICATION)); settings.add(new SettingsModel(R.drawable.ic_settings, getString(R.string.behavior), SettingsModel.BEHAVIOR)); @@ -72,6 +74,8 @@ public class SettingsActivity extends BaseActivity implements LanguageBottomShee showLanguageList(); } else if (settingsModel.getSettingsType() == SettingsModel.THEME) { ActivityHelper.startReveal(this, new Intent(this, ThemeActivity.class), view, THEME_CHANGE); + } else if (settingsModel.getSettingsType() == SettingsModel.CODE_THEME) { + ActivityHelper.startReveal(this, new Intent(this, ThemeCodeActivity.class), view, THEME_CHANGE); } else { ActivityHelper.startReveal(this, intent, view); } diff --git a/app/src/main/java/com/fastaccess/ui/modules/theme/ThemeActivity.kt b/app/src/main/java/com/fastaccess/ui/modules/theme/ThemeActivity.kt index 5a55de47..9f41db94 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/theme/ThemeActivity.kt +++ b/app/src/main/java/com/fastaccess/ui/modules/theme/ThemeActivity.kt @@ -2,13 +2,10 @@ package com.fastaccess.ui.modules.theme import android.animation.Animator import android.animation.AnimatorListenerAdapter -import android.app.Activity import android.os.Build import android.os.Bundle -import android.support.v4.view.ViewPager import android.view.View import android.view.ViewAnimationUtils -import com.fastaccess.ui.widgets.bindView import com.fastaccess.R import com.fastaccess.data.dao.FragmentPagerAdapterModel import com.fastaccess.helper.PrefGetter @@ -17,7 +14,9 @@ import com.fastaccess.ui.base.BaseActivity import com.fastaccess.ui.base.mvp.BaseMvp import com.fastaccess.ui.base.mvp.presenter.BasePresenter import com.fastaccess.ui.modules.theme.fragment.ThemeFragmentMvp +import com.fastaccess.ui.widgets.CardsPagerTransformerBasic import com.fastaccess.ui.widgets.ViewPagerView +import com.fastaccess.ui.widgets.bindView /** @@ -95,16 +94,4 @@ class ThemeActivity : BaseActivity onThemeChanged() } - inner class CardsPagerTransformerBasic(private val baseElevation: Int, private val raisingElevation: Int) : ViewPager.PageTransformer { - override fun transformPage(page: View?, position: Float) { - val absPosition = Math.abs(position) - if (absPosition >= 1) { - page?.elevation = baseElevation.toFloat() - } else { - page?.elevation = (1 - absPosition) * raisingElevation + baseElevation - } - } - - - } } \ No newline at end of file diff --git a/app/src/main/java/com/fastaccess/ui/modules/theme/code/ThemeCodeActivity.kt b/app/src/main/java/com/fastaccess/ui/modules/theme/code/ThemeCodeActivity.kt new file mode 100644 index 00000000..d15a2d91 --- /dev/null +++ b/app/src/main/java/com/fastaccess/ui/modules/theme/code/ThemeCodeActivity.kt @@ -0,0 +1,72 @@ +package com.fastaccess.ui.modules.theme.code + +import android.app.Activity +import android.os.Bundle +import android.view.View +import android.widget.ProgressBar +import android.widget.Spinner +import butterknife.OnClick +import butterknife.OnItemSelected +import com.fastaccess.R +import com.fastaccess.helper.PrefGetter +import com.fastaccess.ui.adapter.SpinnerAdapter +import com.fastaccess.ui.base.BaseActivity +import com.fastaccess.ui.widgets.bindView +import com.prettifier.pretty.PrettifyWebView +import com.prettifier.pretty.helper.CodeThemesHelper + +/** + * Created by Kosh on 21 Jun 2017, 2:01 PM + */ + +class ThemeCodeActivity : BaseActivity(), ThemeCodeMvp.View { + + val spinner: Spinner by bindView(R.id.themesList) + val webView: PrettifyWebView by bindView(R.id.webView) + val progress: ProgressBar? by bindView(R.id.readmeLoader) + + override fun layout(): Int = R.layout.theme_code_layout + + override fun isTransparent(): Boolean = false + + override fun canBack(): Boolean = true + + override fun isSecured(): Boolean = false + + override fun providePresenter(): ThemeCodePresenter = ThemeCodePresenter() + + @OnClick(R.id.done) fun onSaveTheme() { + val theme = spinner.selectedItem as String + PrefGetter.setCodeTheme(theme) + setResult(Activity.RESULT_OK) + finish() + } + + override fun onInitAdapter(list: List) { + val adapter = SpinnerAdapter(this, list) + spinner.adapter = adapter + } + + @OnItemSelected(R.id.themesList) fun onItemSelect() { + val theme = spinner.selectedItem as String + progress?.visibility = View.VISIBLE + webView.setThemeSource(CodeThemesHelper.CODE_EXAMPLE, theme) + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + progress?.visibility = View.VISIBLE + webView.setOnContentChangedListener(this) + title = "" + presenter.onLoadThemes() + } + + override fun onContentChanged(p: Int) { + progress?.let { + it.progress = p + if (p == 100) it.visibility = View.GONE + } + } + + override fun onScrollChanged(reachedTop: Boolean, scroll: Int) {} +} diff --git a/app/src/main/java/com/fastaccess/ui/modules/theme/code/ThemeCodeMvp.kt b/app/src/main/java/com/fastaccess/ui/modules/theme/code/ThemeCodeMvp.kt new file mode 100644 index 00000000..02b6de67 --- /dev/null +++ b/app/src/main/java/com/fastaccess/ui/modules/theme/code/ThemeCodeMvp.kt @@ -0,0 +1,18 @@ +package com.fastaccess.ui.modules.theme.code + +import com.fastaccess.ui.base.mvp.BaseMvp +import com.prettifier.pretty.PrettifyWebView + +/** + * Created by Kosh on 22 Jun 2017, 11:50 PM + */ +interface ThemeCodeMvp { + + interface View : BaseMvp.FAView, PrettifyWebView.OnContentChangedListener { + fun onInitAdapter(list: List) + } + + interface Presenter { + fun onLoadThemes() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/fastaccess/ui/modules/theme/code/ThemeCodePresenter.kt b/app/src/main/java/com/fastaccess/ui/modules/theme/code/ThemeCodePresenter.kt new file mode 100644 index 00000000..7659b801 --- /dev/null +++ b/app/src/main/java/com/fastaccess/ui/modules/theme/code/ThemeCodePresenter.kt @@ -0,0 +1,19 @@ +package com.fastaccess.ui.modules.theme.code + +import com.fastaccess.helper.RxHelper +import com.fastaccess.ui.base.mvp.presenter.BasePresenter +import com.prettifier.pretty.helper.CodeThemesHelper +import io.reactivex.Observable + +/** + * Created by Kosh on 22 Jun 2017, 11:52 PM + */ + +class ThemeCodePresenter : BasePresenter(), ThemeCodeMvp.Presenter { + + override fun onLoadThemes() { + manageDisposable(RxHelper.getObserver(Observable.just(CodeThemesHelper.listThemes())) + .subscribe({ list -> sendToView { it.onInitAdapter(list) } }, { onError(it) })) + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/fastaccess/ui/modules/trending/TrendingMvp.kt b/app/src/main/java/com/fastaccess/ui/modules/trending/TrendingMvp.kt index 1bf46c6f..dbd68d5c 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/trending/TrendingMvp.kt +++ b/app/src/main/java/com/fastaccess/ui/modules/trending/TrendingMvp.kt @@ -1,5 +1,6 @@ package com.fastaccess.ui.modules.trending +import android.support.annotation.ColorInt import com.fastaccess.ui.base.mvp.BaseMvp /** @@ -8,7 +9,7 @@ import com.fastaccess.ui.base.mvp.BaseMvp interface TrendingMvp { interface View : BaseMvp.FAView { - fun onAppend(title: String, color: Int) + fun onAppend(title: String, @ColorInt color: Int) fun onClearMenu() } diff --git a/app/src/main/java/com/fastaccess/ui/widgets/CardsPagerTransformerBasic.kt b/app/src/main/java/com/fastaccess/ui/widgets/CardsPagerTransformerBasic.kt new file mode 100644 index 00000000..540fb7b6 --- /dev/null +++ b/app/src/main/java/com/fastaccess/ui/widgets/CardsPagerTransformerBasic.kt @@ -0,0 +1,17 @@ +package com.fastaccess.ui.widgets + +import android.support.v4.view.ViewPager +import android.view.View + +class CardsPagerTransformerBasic(private val baseElevation: Int, private val raisingElevation: Int) : ViewPager.PageTransformer { + override fun transformPage(page: View?, position: Float) { + val absPosition = Math.abs(position) + if (absPosition >= 1) { + page?.elevation = baseElevation.toFloat() + } else { + page?.elevation = (1 - absPosition) * raisingElevation + baseElevation + } + } + + +} \ No newline at end of file diff --git a/app/src/main/java/com/fastaccess/ui/widgets/DiffLineSpan.java b/app/src/main/java/com/fastaccess/ui/widgets/DiffLineSpan.java index 58c3fddb..4b3b183d 100644 --- a/app/src/main/java/com/fastaccess/ui/widgets/DiffLineSpan.java +++ b/app/src/main/java/com/fastaccess/ui/widgets/DiffLineSpan.java @@ -22,9 +22,13 @@ import com.fastaccess.R; import com.fastaccess.helper.InputHelper; import com.fastaccess.helper.Logger; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + public class DiffLineSpan extends MetricAffectingSpan implements LineBackgroundSpan { private Rect rect = new Rect(); private final int color; + public static Pattern HUNK_TITLE = Pattern.compile("@@ -(\\d+),(\\d)+ \\+(\\d+),(\\d)+.*"); private DiffLineSpan(int color) { this.color = color; @@ -68,6 +72,7 @@ public class DiffLineSpan extends MetricAffectingSpan implements LineBackgroundS if (split.length > 0) { int lines = split.length; int index = -1; + int lineNo = -1; for (int i = 0; i < lines; i++) { if (truncate && (lines - i) > 3) continue; String token = split[i]; @@ -76,18 +81,30 @@ public class DiffLineSpan extends MetricAffectingSpan implements LineBackgroundS } char firstChar = token.charAt(0); int color = Color.TRANSPARENT; - if (firstChar == '+') { + if (token.startsWith("@@")) { + color = patchRefColor; + Matcher matcher = HUNK_TITLE.matcher(token.trim()); + if (matcher.matches()) { + try { + int leftLineNo = Math.abs(Integer.parseInt(matcher.group(1))) - 1; + int rightLineNo = Integer.parseInt(matcher.group(1)) - 1; + lineNo = leftLineNo <= 0 ? rightLineNo : leftLineNo; + } catch (NumberFormatException e) {e.printStackTrace();} + } + } else if (firstChar == '+') { + ++lineNo; color = patchAdditionColor; } else if (firstChar == '-') { + ++lineNo; color = patchDeletionColor; - } else if (token.startsWith("@@")) { - color = patchRefColor; + } else { + ++lineNo; } index = token.indexOf("\\ No newline at end of file"); - Logger.e(index); if (index != -1) { token = token.replace("\\ No newline at end of file", ""); } + Logger.e(lineNo); SpannableString spannableDiff = new SpannableString(token); if (color != Color.TRANSPARENT) { DiffLineSpan span = new DiffLineSpan(color); diff --git a/app/src/main/java/com/fastaccess/ui/widgets/dialog/ListDialogView.java b/app/src/main/java/com/fastaccess/ui/widgets/dialog/ListDialogView.java index eb497a35..01561886 100644 --- a/app/src/main/java/com/fastaccess/ui/widgets/dialog/ListDialogView.java +++ b/app/src/main/java/com/fastaccess/ui/widgets/dialog/ListDialogView.java @@ -51,6 +51,7 @@ public class ListDialogView extends BaseDialogFragment imp title.setText(titleText); if (objects != null) { SimpleListAdapter adapter = new SimpleListAdapter<>(objects, this); + recycler.addDivider(true); recycler.setAdapter(adapter); } else { dismiss(); diff --git a/app/src/main/java/com/fastaccess/ui/widgets/recyclerview/DynamicRecyclerView.java b/app/src/main/java/com/fastaccess/ui/widgets/recyclerview/DynamicRecyclerView.java index 0b333793..e7556b61 100644 --- a/app/src/main/java/com/fastaccess/ui/widgets/recyclerview/DynamicRecyclerView.java +++ b/app/src/main/java/com/fastaccess/ui/widgets/recyclerview/DynamicRecyclerView.java @@ -91,7 +91,7 @@ public class DynamicRecyclerView extends RecyclerView { } private void showParentOrSelf(boolean showRecyclerView) { - if(parentView!=null) + if (parentView != null) parentView.setVisibility(VISIBLE); setVisibility(VISIBLE); emptyView.setVisibility(!showRecyclerView ? VISIBLE : GONE); @@ -124,8 +124,17 @@ public class DynamicRecyclerView extends RecyclerView { } public void addDivider() { - if (!ViewHelper.isTablet(getContext())) { - Resources resources = getResources(); + addDivider(false); + } + + public void addDivider(boolean allScreens) { + Resources resources = getResources(); + if (!allScreens) { + if (!ViewHelper.isTablet(getContext())) { + addItemDecoration(new InsetDividerDecoration(resources.getDimensionPixelSize(R.dimen.divider_height), 0, + ViewHelper.getListDivider(getContext()))); + } + } else { addItemDecoration(new InsetDividerDecoration(resources.getDimensionPixelSize(R.dimen.divider_height), 0, ViewHelper.getListDivider(getContext()))); } diff --git a/app/src/main/java/com/prettifier/pretty/PrettifyWebView.java b/app/src/main/java/com/prettifier/pretty/PrettifyWebView.java index cf92f3dd..e883409a 100755 --- a/app/src/main/java/com/prettifier/pretty/PrettifyWebView.java +++ b/app/src/main/java/com/prettifier/pretty/PrettifyWebView.java @@ -118,19 +118,36 @@ public class PrettifyWebView extends NestedWebView { this.onContentChangedListener = onContentChangedListener; } - public void setSource(@NonNull String source, boolean wrap, @Nullable String url) { - WebSettings settings = getSettings(); - settings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.TEXT_AUTOSIZING); - setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY); - settings.setSupportZoom(!wrap); - settings.setBuiltInZoomControls(!wrap); - if (!wrap) settings.setDisplayZoomControls(false); + public void setThemeSource(@NonNull String source, @Nullable String theme) { if (!InputHelper.isEmpty(source)) { - String page = PrettifyHelper.generateContent(source, AppHelper.isNightMode(getResources()), wrap); - post(() -> loadDataWithBaseURL("file:///android_asset/highlight/", page, "text/html", "utf-8", null)); + WebSettings settings = getSettings(); + settings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.TEXT_AUTOSIZING); + setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY); + settings.setSupportZoom(true); + settings.setBuiltInZoomControls(true); + settings.setDisplayZoomControls(false); + String page = PrettifyHelper.generateContent(source, theme); + loadCode(page); } } + public void setSource(@NonNull String source, boolean wrap) { + if (!InputHelper.isEmpty(source)) { + WebSettings settings = getSettings(); + settings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.TEXT_AUTOSIZING); + setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY); + settings.setSupportZoom(!wrap); + settings.setBuiltInZoomControls(!wrap); + if (!wrap) settings.setDisplayZoomControls(false); + String page = PrettifyHelper.generateContent(source, AppHelper.isNightMode(getResources()), wrap); + loadCode(page); + } + } + + private void loadCode(String page) { + post(() -> loadDataWithBaseURL("file:///android_asset/highlight/", page, "text/html", "utf-8", null)); + } + public void scrollToLine(@NonNull String url) { String[] lineNo = getLineNo(url); if (lineNo != null && lineNo.length > 1) { diff --git a/app/src/main/java/com/prettifier/pretty/helper/CodeThemesHelper.java b/app/src/main/java/com/prettifier/pretty/helper/CodeThemesHelper.java new file mode 100644 index 00000000..f00c3cc6 --- /dev/null +++ b/app/src/main/java/com/prettifier/pretty/helper/CodeThemesHelper.java @@ -0,0 +1,98 @@ +package com.prettifier.pretty.helper; + +import android.support.annotation.NonNull; + +import com.annimon.stream.Stream; +import com.fastaccess.App; +import com.fastaccess.helper.InputHelper; +import com.fastaccess.helper.PrefGetter; + +import java.io.IOException; +import java.util.Collections; +import java.util.List; + +/** + * Created by Kosh on 21 Jun 2017, 1:44 PM + */ + +public class CodeThemesHelper { + + @NonNull public static List listThemes() { + try { + List list = Stream.of(App.getInstance().getAssets().list("highlight/styles/themes")) + .map(s -> "themes/" + s) + .toList(); + list.add(0, "prettify.css"); + list.add(1, "prettify_dark.css"); + return list; + } catch (IOException e) { + e.printStackTrace(); + } + return Collections.emptyList(); + } + + @NonNull public static String getTheme(boolean isDark) { + String theme = PrefGetter.getCodeTheme(); + if (InputHelper.isEmpty(theme) || !exists(theme)) { + return !isDark ? "prettify.css" : "prettify_dark.css"; + } + return theme; + } + + private static boolean exists(@NonNull String theme) { + return listThemes().contains(theme); + } + + + public static final String CODE_EXAMPLE = + "class ThemeCodeActivity : BaseActivity(), ThemeCodeMvp.View {\n" + + "\n" + + " val spinner: AppCompatSpinner by bindView(R.id.themesList)\n" + + " val webView: PrettifyWebView by bindView(R.id.webView)\n" + + " val progress: ProgressBar? by bindView(R.id.readmeLoader)\n" + + "\n" + + " override fun layout(): Int = R.layout.theme_code_layout\n" + + "\n" + + " override fun isTransparent(): Boolean = false\n" + + "\n" + + " override fun canBack(): Boolean = true\n" + + "\n" + + " override fun isSecured(): Boolean = false\n" + + "\n" + + " override fun providePresenter(): ThemeCodePresenter = ThemeCodePresenter()\n" + + "\n" + + " @OnClick(R.id.done) fun onSaveTheme() {\n" + + " val theme = spinner.selectedItem as String\n" + + " PrefGetter.setCodeTheme(theme)\n" + + " setResult(Activity.RESULT_OK)\n" + + " finish()\n" + + " }\n" + + "\n" + + " override fun onInitAdapter(list: List) {\n" + + " spinner.adapter = ArrayAdapter(this, android.R.layout.simple_spinner_dropdown_item, list)\n" + + " }\n" + + "\n" + + " @OnItemSelected(R.id.themesList) fun onItemSelect() {\n" + + " val theme = spinner.selectedItem as String\n" + + " webView.setThemeSource(CodeThemesHelper.CODE_EXAMPLE, theme)\n" + + " }\n" + + "\n" + + "\n" + + " override fun onCreate(savedInstanceState: Bundle?) {\n" + + " super.onCreate(savedInstanceState)\n" + + " progress?.visibility = View.VISIBLE\n" + + " webView.setOnContentChangedListener(this)\n" + + " title = \"\"\n" + + " presenter.onLoadThemes()\n" + + " }\n" + + "\n" + + " override fun onContentChanged(p: Int) {\n" + + " progress?.let {\n" + + " it.progress = p\n" + + " if (p == 100) it.visibility = View.GONE\n" + + " }\n" + + " }\n" + + "\n" + + " override fun onScrollChanged(reachedTop: Boolean, scroll: Int) {}\n" + + "}"; +} diff --git a/app/src/main/java/com/prettifier/pretty/helper/GithubHelper.java b/app/src/main/java/com/prettifier/pretty/helper/GithubHelper.java index 0c27bc17..663a95fc 100755 --- a/app/src/main/java/com/prettifier/pretty/helper/GithubHelper.java +++ b/app/src/main/java/com/prettifier/pretty/helper/GithubHelper.java @@ -1,16 +1,16 @@ package com.prettifier.pretty.helper; import android.content.Context; +import android.net.Uri; import android.support.annotation.NonNull; import android.support.annotation.Nullable; -import android.webkit.MimeTypeMap; import com.fastaccess.data.dao.NameParser; -import com.fastaccess.helper.InputHelper; import com.fastaccess.helper.Logger; import com.fastaccess.helper.PrefGetter; import com.fastaccess.helper.ViewHelper; +import java.util.ArrayList; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -35,6 +35,23 @@ public class GithubHelper { NameParser nameParser = new NameParser(baseUrl); String owner = nameParser.getUsername(); String repoName = nameParser.getName(); + Uri uri = Uri.parse(baseUrl); + ArrayList paths = new ArrayList<>(uri.getPathSegments()); + StringBuilder builder = new StringBuilder(); + builder.append(owner).append("/").append(repoName).append("/"); + boolean containsMaster = paths.size() > 3; + if (!containsMaster) { + builder.append("master/"); + } else { + paths.remove("blob"); + } + paths.remove(owner); + paths.remove(repoName); + for (String path : paths) { + if (!path.equalsIgnoreCase(uri.getLastPathSegment())) { + builder.append(path).append("/"); + } + } Matcher matcher = IMAGE_TAG_MATCHER.matcher(source); while (matcher.find()) { String src = matcher.group(1).trim(); @@ -46,8 +63,9 @@ public class GithubHelper { if (src.startsWith("/" + owner + "/" + repoName)) { finalSrc = "https://raw.githubusercontent.com/" + src; } else { - finalSrc = "https://raw.githubusercontent.com/" + owner + "/" + repoName + "/master/" + src; + finalSrc = "https://raw.githubusercontent.com/" + builder.toString() + src; } + Logger.e(finalSrc); source = source.replace("src=\"" + src + "\"", "src=\"" + finalSrc .replace("raw/", "master/").replaceAll("//", "/") + "\""); } @@ -59,31 +77,27 @@ public class GithubHelper { String owner = nameParser.getUsername(); String repoName = nameParser.getName(); Matcher matcher = LINK_TAG_MATCHER.matcher(source); + Uri uri = Uri.parse(baseUrl); + ArrayList paths = new ArrayList<>(uri.getPathSegments()); + StringBuilder builder = new StringBuilder(); + builder.append("https://").append(uri.getAuthority()).append("/").append(owner).append("/").append(repoName).append("/"); + boolean containsMaster = paths.size() > 3 && paths.get(2).equalsIgnoreCase("blob"); + if (!containsMaster) { + builder.append("blob/master/"); + } + paths.remove(owner); + paths.remove(repoName); + for (String path : paths) { + if (!path.equalsIgnoreCase(uri.getLastPathSegment())) { + builder.append(path).append("/"); + } + } while (matcher.find()) { String href = matcher.group(1).trim(); if (href.startsWith("#") || href.startsWith("http://") || href.startsWith("https://") || href.startsWith("mailto:")) { continue; } - String link; - if (href.startsWith("/" + owner + "/" + repoName)) { - if (!InputHelper.isEmpty(MimeTypeMap.getFileExtensionFromUrl(href))) { - link = ("https://raw.githubusercontent.com/" + href) - .replace("blob/", "master/") - .replaceAll("//", "/"); - } else { - String formattedLink = href.replaceFirst("./", "/"); - link = "https://api.github.com/repos/" + formattedLink - .replace("blob/", "master/") - .replaceAll("//", "/"); - } - } else { - if (!InputHelper.isEmpty(MimeTypeMap.getFileExtensionFromUrl(href))) { - link = "https://raw.githubusercontent.com/" + owner + "/" + repoName + "/master/" + href; //assuming always master is bad :'( - } else { - String formattedLink = href.replaceFirst("./", "/"); - link = ("https://api.github.com/repos/" + owner + "/" + repoName + formattedLink).replaceAll("//", "/"); - } - } + String link = builder.toString() + "" + href; source = source.replace("href=\"" + href + "\"", "href=\"" + link + "\""); } return source; @@ -116,7 +130,6 @@ public class GithubHelper { if (!isDark) return ""; String primaryColor = getCodeBackgroundColor(context); String accentColor = "#" + Integer.toHexString(ViewHelper.getAccentColor(context)).substring(2).toUpperCase(); - Logger.e(primaryColor, accentColor); return ""; + private static final String LINE_NO_CSS = ""; + + @NonNull public static String generateContent(@NonNull String source, String theme) { + return getHtmlContent(theme, getFormattedSource(source), "", false); + } + @NonNull public static String generateContent(@NonNull String source, boolean isDark, boolean wrap) { return getHtmlContent(getStyle(isDark), getFormattedSource(source), wrap ? WRAPPED_STYLE : "", isDark); } @@ -57,7 +83,7 @@ public class PrettifyHelper { } @NonNull private static String getStyle(boolean isDark) { - return !isDark ? "prettify.css" : "prettify_dark.css"; + return CodeThemesHelper.getTheme(isDark); } private static boolean textTooLarge(@NonNull String text) { diff --git a/app/src/main/res/layouts/main_layouts/layout/commit_pager_activity.xml b/app/src/main/res/layouts/main_layouts/layout/commit_pager_activity.xml index 82215f32..7d4d9cb0 100644 --- a/app/src/main/res/layouts/main_layouts/layout/commit_pager_activity.xml +++ b/app/src/main/res/layouts/main_layouts/layout/commit_pager_activity.xml @@ -3,13 +3,13 @@ android:id="@+id/drawer" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true"> @@ -95,6 +95,65 @@ android:layout_height="match_parent" app:layout_behavior="@string/scroll_behavior"/> + + + + + + + + + + + + + + @@ -50,8 +51,8 @@ android:id="@+id/forkGist" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginEnd="@dimen/spacing_micro" android:layout_gravity="center|end" + android:layout_marginEnd="@dimen/spacing_micro" android:background="?selectableItemBackgroundBorderless" android:contentDescription="@string/fork" android:padding="@dimen/spacing_micro" @@ -75,6 +76,66 @@ android:layout_height="match_parent" app:layout_behavior="@string/scroll_behavior"/> + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layouts/main_layouts/layout/review_dialog_layout.xml b/app/src/main/res/layouts/main_layouts/layout/review_dialog_layout.xml new file mode 100644 index 00000000..6c01e055 --- /dev/null +++ b/app/src/main/res/layouts/main_layouts/layout/review_dialog_layout.xml @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layouts/main_layouts/layout/submit_review_layout.xml b/app/src/main/res/layouts/main_layouts/layout/submit_review_layout.xml new file mode 100644 index 00000000..e7caa0d4 --- /dev/null +++ b/app/src/main/res/layouts/main_layouts/layout/submit_review_layout.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layouts/main_layouts/layout/theme_code_layout.xml b/app/src/main/res/layouts/main_layouts/layout/theme_code_layout.xml new file mode 100644 index 00000000..db17e045 --- /dev/null +++ b/app/src/main/res/layouts/main_layouts/layout/theme_code_layout.xml @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layouts/main_layouts/layout/theme_viewpager.xml b/app/src/main/res/layouts/main_layouts/layout/theme_viewpager.xml index 64e4e365..a8afbc6e 100644 --- a/app/src/main/res/layouts/main_layouts/layout/theme_viewpager.xml +++ b/app/src/main/res/layouts/main_layouts/layout/theme_viewpager.xml @@ -1,15 +1,11 @@ - - + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layouts/row_layouts/layout/commit_line_row_item.xml b/app/src/main/res/layouts/row_layouts/layout/commit_line_row_item.xml new file mode 100644 index 00000000..8c71813c --- /dev/null +++ b/app/src/main/res/layouts/row_layouts/layout/commit_line_row_item.xml @@ -0,0 +1,30 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layouts/row_layouts/layout/pullrequest_file_row_item.xml b/app/src/main/res/layouts/row_layouts/layout/pullrequest_file_row_item.xml new file mode 100644 index 00000000..cd3faa7d --- /dev/null +++ b/app/src/main/res/layouts/row_layouts/layout/pullrequest_file_row_item.xml @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layouts/row_layouts/layout/simple_row_item.xml b/app/src/main/res/layouts/row_layouts/layout/simple_row_item.xml index 60aa4c3f..6d4234b5 100644 --- a/app/src/main/res/layouts/row_layouts/layout/simple_row_item.xml +++ b/app/src/main/res/layouts/row_layouts/layout/simple_row_item.xml @@ -4,7 +4,6 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content" - android:background="@drawable/bottom_border" android:foreground="?selectableItemBackgroundBorderless" android:minHeight="?listPreferredItemHeightSmall" android:orientation="vertical" diff --git a/app/src/main/res/menu/issue_menu.xml b/app/src/main/res/menu/issue_menu.xml index aceb0fd1..59e93c5e 100644 --- a/app/src/main/res/menu/issue_menu.xml +++ b/app/src/main/res/menu/issue_menu.xml @@ -48,7 +48,7 @@ android:icon="@drawable/ic_subscribe" android:title="@string/subscribe" android:visible="false" - app:showAsAction="always"> + app:showAsAction="ifRoom"> + app:showAsAction="never"/> + app:showAsAction="never"/> \ No newline at end of file diff --git a/app/src/main/res/menu/pull_request_menu.xml b/app/src/main/res/menu/pull_request_menu.xml index 9810f9d4..f0974de6 100644 --- a/app/src/main/res/menu/pull_request_menu.xml +++ b/app/src/main/res/menu/pull_request_menu.xml @@ -59,7 +59,7 @@ android:icon="@drawable/ic_subscribe" android:title="@string/subscribe" android:visible="false" - app:showAsAction="always"> + app:showAsAction="ifRoom"> + app:showAsAction="never"/> + app:showAsAction="never"/> \ No newline at end of file diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml index e83778d2..b2588bf9 100644 --- a/app/src/main/res/values/arrays.xml +++ b/app/src/main/res/values/arrays.xml @@ -154,6 +154,19 @@ Monthly + + @string/merge + @string/squash + @string/rebase + + + + PENDING + APPROVE + REQUEST CHANGES + COMMENT + + @array/com_google_android_gms_fonts_certs_dev diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 3caa78e3..ed9b7daf 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,5 +1,7 @@ + + FastHub FastHub for Android com.fastaccess.ui.widgets.recyclerview.layout_manager.LinearManager @@ -78,6 +80,9 @@ Daily Weekly Monthly + Squash + Rebase + Pull Request Reviews Loading, please wait… Action @@ -292,7 +297,7 @@ Permission Not Granted. Last update: %s Now - Any unsaved changes will be discarded + Discard unsaved changes? Private Use rounded rectangle avatars instead of circular avatars Avatar Appearance @@ -415,7 +420,8 @@ Login via basic auth If you are actually tied to an organizations and you can\'t see them here please follow link below.\nhttps://help.github.com/articles/about-third-party-application-restrictions\nPS: You could use Access token to login which will - grant FastHub access to see list your organizations. + grant FastHub access to see list your organizations.\nYou could also open up https://github.com/settings/applications and look for + FastHub, open it then scroll to Organization access and click on Grant Button. Insert Select Select Picture @@ -484,4 +490,5 @@ Milestone added successfully Feed Premium Theme + Choose Code theme diff --git a/app/src/main/res/values/theme_dark.xml b/app/src/main/res/values/theme_dark.xml index 8eee44cb..3d46e33e 100644 --- a/app/src/main/res/values/theme_dark.xml +++ b/app/src/main/res/values/theme_dark.xml @@ -41,6 +41,7 @@ @style/ToolbarStyleDark false @style/PopupMenuDark + @style/PopupMenuDark