├── .github
├── FUNDING.yml
└── dependabot.yml
├── .gitignore
├── .idea
├── $CACHE_FILE$
├── codeStyles
│ ├── Project.xml
│ └── codeStyleConfig.xml
├── compiler.xml
├── dictionaries
├── gradle.xml
├── jarRepositories.xml
├── markdown-navigator-enh.xml
├── markdown-navigator.xml
├── misc.xml
├── scopes
│ └── ReadMe.xml
└── vcs.xml
├── LICENSE
├── README.md
├── _config.yml
├── app
├── .gitignore
├── build.gradle
├── proguard-rules.pro
└── src
│ ├── androidTest
│ └── java
│ │ └── com
│ │ └── programmersbox
│ │ └── helpfultools
│ │ └── ExampleInstrumentedTest.kt
│ ├── main
│ ├── AndroidManifest.xml
│ ├── java
│ │ └── com
│ │ │ └── programmersbox
│ │ │ └── helpfultools
│ │ │ ├── ColorApi.kt
│ │ │ ├── JavaDslBuilder.java
│ │ │ ├── JavaDslMarker.java
│ │ │ ├── Linting.java
│ │ │ ├── MainActivity.kt
│ │ │ ├── MoreActivity.kt
│ │ │ ├── Names.kt
│ │ │ ├── TestApp.kt
│ │ │ ├── TypeToGo.kt
│ │ │ ├── Utils.kt
│ │ │ ├── broadcast
│ │ │ └── BroadcastActivity.kt
│ │ │ └── contextutility
│ │ │ └── ContextActivity.kt
│ └── res
│ │ ├── drawable-v24
│ │ └── ic_launcher_foreground.xml
│ │ ├── drawable
│ │ └── ic_launcher_background.xml
│ │ ├── layout
│ │ ├── activity_broadcast.xml
│ │ ├── activity_context.xml
│ │ ├── activity_main.xml
│ │ ├── activity_more.xml
│ │ ├── layout_item.xml
│ │ └── layout_item_two.xml
│ │ ├── mipmap-anydpi-v26
│ │ ├── ic_launcher.xml
│ │ └── ic_launcher_round.xml
│ │ ├── mipmap-hdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-mdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-xhdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-xxhdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-xxxhdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ └── values
│ │ ├── colors.xml
│ │ ├── strings.xml
│ │ └── styles.xml
│ └── test
│ └── java
│ └── com
│ └── programmersbox
│ └── helpfultools
│ └── ExampleUnitTest.kt
├── build.gradle
├── dragswipe
├── .gitignore
├── README.md
├── build.gradle
├── consumer-rules.pro
├── proguard-rules.pro
└── src
│ ├── androidTest
│ └── java
│ │ └── com
│ │ └── programmersbox
│ │ └── dragswipe
│ │ └── ExampleInstrumentedTest.kt
│ ├── main
│ ├── AndroidManifest.xml
│ └── java
│ │ └── com
│ │ └── programmersbox
│ │ └── dragswipe
│ │ ├── DragSwipeActionsBuilder.kt
│ │ ├── DragSwipeDiffUtil.kt
│ │ ├── DragSwipeExtensions.kt
│ │ └── DragSwipeUtils.kt
│ └── test
│ └── java
│ └── com
│ └── programmersbox
│ └── dragswipe
│ └── ExampleUnitTest.kt
├── dslannotations
├── .gitignore
├── README.md
├── build.gradle
└── src
│ └── main
│ └── java
│ └── com
│ └── programmersbox
│ └── dslannotations
│ ├── DslClass.kt
│ └── DslField.kt
├── dslprocessor
├── .gitignore
├── README.md
├── build.gradle
└── src
│ └── main
│ └── java
│ └── com
│ └── programmersbox
│ └── dslprocessor
│ ├── DslClassProcessor.kt
│ ├── DslFieldsProcessor.kt
│ └── ProcessorExtensions.kt
├── flowutils
├── .gitignore
├── README.md
├── build.gradle
├── consumer-rules.pro
├── proguard-rules.pro
└── src
│ ├── androidTest
│ └── java
│ │ └── com
│ │ └── programmersbox
│ │ └── flowutils
│ │ └── ExampleInstrumentedTest.kt
│ ├── main
│ ├── AndroidManifest.xml
│ └── java
│ │ └── com
│ │ └── programmersbox
│ │ └── flowutils
│ │ ├── FlowExtensions.kt
│ │ ├── FlowItem.kt
│ │ ├── FlowItemExtensions.kt
│ │ ├── JobExtensions.kt
│ │ └── UIFlowExtensions.kt
│ └── test
│ └── java
│ └── com
│ └── programmersbox
│ └── flowutils
│ └── ExampleUnitTest.kt
├── funutils
├── .gitignore
├── README.md
├── build.gradle
├── consumer-rules.pro
├── proguard-rules.pro
└── src
│ ├── androidTest
│ └── java
│ │ └── com
│ │ └── programmersbox
│ │ └── funutils
│ │ └── ExampleInstrumentedTest.kt
│ ├── main
│ ├── AndroidManifest.xml
│ ├── java
│ │ └── com
│ │ │ └── programmersbox
│ │ │ └── funutils
│ │ │ ├── cards
│ │ │ ├── AbstractDeck.kt
│ │ │ ├── Card.kt
│ │ │ └── DeckOfCards.kt
│ │ │ ├── funutilities
│ │ │ ├── SequenceMaker.kt
│ │ │ └── TimedSequenceMaker.kt
│ │ │ └── views
│ │ │ ├── BubbleEmitter.kt
│ │ │ ├── CheckBoxGroup.kt
│ │ │ ├── DiamondLoader.kt
│ │ │ ├── ExpandingSlider.kt
│ │ │ ├── FingerDetector.kt
│ │ │ ├── Flash.kt
│ │ │ ├── SlideValuePicker.kt
│ │ │ └── TableAdapter.kt
│ └── res
│ │ ├── drawable
│ │ ├── checkbox_selector.xml
│ │ ├── ic_check_box_black_24dp.xml
│ │ ├── ic_check_box_outline_blank_black_24dp.xml
│ │ └── ic_indeterminate_check_box_black_24dp.xml
│ │ ├── layout
│ │ └── table_adapter_item.xml
│ │ └── values
│ │ └── attrs.xml
│ └── test
│ └── java
│ └── com
│ └── programmersbox
│ └── funutils
│ └── ExampleUnitTest.kt
├── gradle.properties
├── gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── gsonutils
├── .gitignore
├── README.md
├── build.gradle
├── consumer-rules.pro
├── proguard-rules.pro
└── src
│ ├── androidTest
│ └── java
│ │ └── com
│ │ └── programmersbox
│ │ └── gsonutils
│ │ └── ExampleInstrumentedTest.kt
│ ├── main
│ ├── AndroidManifest.xml
│ └── java
│ │ └── com
│ │ └── programmersbox
│ │ └── gsonutils
│ │ ├── ApiUtils.kt
│ │ ├── GsonUtils.kt
│ │ └── HelpfulGsonUtils.kt
│ └── test
│ └── java
│ └── com
│ └── programmersbox
│ └── gsonutils
│ └── ExampleUnitTest.kt
├── helpfulutils
├── .gitignore
├── README.md
├── build.gradle
├── consumer-rules.pro
├── proguard-rules.pro
└── src
│ ├── androidTest
│ └── java
│ │ └── com
│ │ └── programmersbox
│ │ └── helpfulutils
│ │ └── ExampleInstrumentedTest.kt
│ ├── main
│ ├── AndroidManifest.xml
│ └── java
│ │ └── com
│ │ └── programmersbox
│ │ └── helpfulutils
│ │ ├── ActivityUtils.kt
│ │ ├── AlarmUtils.kt
│ │ ├── BiometricUtils.kt
│ │ ├── BroadcastReceiverUtils.kt
│ │ ├── CollectionUtils.kt
│ │ ├── ContextUtils.kt
│ │ ├── DateUtils.kt
│ │ ├── DownloadUtils.kt
│ │ ├── ManagerUtils.kt
│ │ ├── NotificationUtils.kt
│ │ ├── NumberAndroidUtils.kt
│ │ ├── NumberUtils.kt
│ │ ├── QuickAdapter.kt
│ │ ├── RangeUtils.kt
│ │ ├── Utils.kt
│ │ ├── ViewUtils.kt
│ │ └── views
│ │ └── OverScrollBehavior.kt
│ └── test
│ └── java
│ └── com
│ └── programmersbox
│ └── helpfulutils
│ └── ExampleUnitTest.kt
├── loggingutils
├── .gitignore
├── README.md
├── build.gradle
├── consumer-rules.pro
├── proguard-rules.pro
└── src
│ ├── androidTest
│ └── java
│ │ └── com
│ │ └── programmersbox
│ │ └── loggingutils
│ │ └── ExampleInstrumentedTest.kt
│ ├── main
│ ├── AndroidManifest.xml
│ └── java
│ │ └── com
│ │ └── programmersbox
│ │ └── loggingutils
│ │ ├── Framing.kt
│ │ ├── Loged.kt
│ │ └── LogedInterceptor.kt
│ └── test
│ └── java
│ └── com
│ └── programmersbox
│ └── loggingutils
│ └── ExampleUnitTest.kt
├── loggingutilslint
├── .gitignore
├── build.gradle
├── consumer-rules.pro
├── proguard-rules.pro
└── src
│ ├── androidTest
│ └── java
│ │ └── com
│ │ └── programmersbox
│ │ └── loggingutilslint
│ │ └── ExampleInstrumentedTest.kt
│ ├── main
│ ├── AndroidManifest.xml
│ ├── java
│ │ └── com
│ │ │ └── programmersbox
│ │ │ └── loggingutilslint
│ │ │ ├── AndroidLogDetector.kt
│ │ │ └── LogedIssueRegistry.kt
│ └── res
│ │ └── META-INF
│ │ └── services
│ │ └── com.android.tools.lint.client.api.IssueRegistry
│ └── test
│ └── java
│ └── com
│ └── programmersbox
│ └── loggingutilslint
│ └── ExampleUnitTest.kt
├── publish.gradle
├── rxutils
├── .gitignore
├── README.md
├── build.gradle
├── consumer-rules.pro
├── proguard-rules.pro
└── src
│ ├── androidTest
│ └── java
│ │ └── com
│ │ └── programmersbox
│ │ └── rxutils
│ │ └── ExampleInstrumentedTest.kt
│ ├── main
│ ├── AndroidManifest.xml
│ └── java
│ │ └── com
│ │ └── programmersbox
│ │ └── rxutils
│ │ ├── RxContextUtils.kt
│ │ ├── RxControlsProviderService.kt
│ │ └── RxUtils.kt
│ └── test
│ └── java
│ └── com
│ └── programmersbox
│ └── rxutils
│ └── ExampleUnitTest.kt
├── settings.gradle
├── testingplayground
├── .gitignore
├── build.gradle
├── consumer-rules.pro
├── proguard-rules.pro
├── sampledata
│ └── sample_colors
└── src
│ ├── androidTest
│ └── java
│ │ └── com
│ │ └── programmersbox
│ │ └── testingplayground
│ │ └── ExampleInstrumentedTest.kt
│ ├── main
│ ├── AndroidManifest.xml
│ └── java
│ │ └── com
│ │ └── programmersbox
│ │ └── testingplayground
│ │ ├── AnsiColor.kt
│ │ ├── FlowDeckOfCards.kt
│ │ └── RxDeckOfCards.kt
│ └── test
│ └── java
│ └── com
│ └── programmersbox
│ └── testingplayground
│ └── ExampleUnitTest.kt
├── testingplaygroundapp
├── .gitignore
├── build.gradle
├── proguard-rules.pro
└── src
│ ├── androidTest
│ └── java
│ │ └── com
│ │ └── programmersbox
│ │ └── testingplaygroundapp
│ │ └── ExampleInstrumentedTest.kt
│ ├── main
│ ├── AndroidManifest.xml
│ ├── java
│ │ └── com
│ │ │ └── programmersbox
│ │ │ └── testingplaygroundapp
│ │ │ ├── BindingActivity.kt
│ │ │ ├── CheckboxTestActivity.kt
│ │ │ ├── CustomViewActivity.kt
│ │ │ ├── Games.kt
│ │ │ ├── JavaDslBuilder.java
│ │ │ ├── JavaDslMarker.java
│ │ │ ├── Linting.java
│ │ │ ├── MainActivity.kt
│ │ │ ├── Names.kt
│ │ │ ├── PeopleBuilder.kt
│ │ │ ├── TableActivity.kt
│ │ │ ├── TestApp.kt
│ │ │ ├── TestingControlService.kt
│ │ │ ├── Views.kt
│ │ │ ├── WIPUtils.kt
│ │ │ └── cardgames
│ │ │ ├── CardUtils.kt
│ │ │ ├── blackjack
│ │ │ └── BlackjackActivity.kt
│ │ │ ├── poker
│ │ │ └── PokerHand.kt
│ │ │ └── uno
│ │ │ ├── Uno.kt
│ │ │ └── UnoActivity.kt
│ └── res
│ │ ├── drawable-v24
│ │ └── ic_launcher_foreground.xml
│ │ ├── drawable
│ │ ├── ace1.png
│ │ ├── ace2.png
│ │ ├── ace3.png
│ │ ├── ace4.png
│ │ ├── b1fv.png
│ │ ├── border.xml
│ │ ├── clear.png
│ │ ├── eight1.png
│ │ ├── eight2.png
│ │ ├── eight3.png
│ │ ├── eight4.png
│ │ ├── five1.png
│ │ ├── five2.png
│ │ ├── five3.png
│ │ ├── five4.png
│ │ ├── four1.png
│ │ ├── four2.png
│ │ ├── four3.png
│ │ ├── four4.png
│ │ ├── ic_launcher_background.xml
│ │ ├── jack1.png
│ │ ├── jack2.png
│ │ ├── jack3.png
│ │ ├── jack4.png
│ │ ├── king1.png
│ │ ├── king2.png
│ │ ├── king3.png
│ │ ├── king4.png
│ │ ├── nine1.png
│ │ ├── nine2.png
│ │ ├── nine3.png
│ │ ├── nine4.png
│ │ ├── queen1.png
│ │ ├── queen2.png
│ │ ├── queen3.png
│ │ ├── queen4.png
│ │ ├── seven1.png
│ │ ├── seven2.png
│ │ ├── seven3.png
│ │ ├── seven4.png
│ │ ├── six1.png
│ │ ├── six2.png
│ │ ├── six3.png
│ │ ├── six4.png
│ │ ├── ten1.png
│ │ ├── ten2.png
│ │ ├── ten3.png
│ │ ├── ten4.png
│ │ ├── three1.png
│ │ ├── three2.png
│ │ ├── three3.png
│ │ ├── three4.png
│ │ ├── two1.png
│ │ ├── two2.png
│ │ ├── two3.png
│ │ └── two4.png
│ │ ├── layout
│ │ ├── activity_binding.xml
│ │ ├── activity_blackjack.xml
│ │ ├── activity_checkbox_test.xml
│ │ ├── activity_custom_view.xml
│ │ ├── activity_main.xml
│ │ ├── activity_table.xml
│ │ ├── activity_uno.xml
│ │ ├── binding_test_item.xml
│ │ ├── card_item.xml
│ │ ├── collapsed_notification.xml
│ │ ├── expanded_notification.xml
│ │ ├── test_item.xml
│ │ └── ui_test_file.xml
│ │ ├── mipmap-anydpi-v26
│ │ ├── ic_launcher.xml
│ │ └── ic_launcher_round.xml
│ │ ├── mipmap-hdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-mdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-xhdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-xxhdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ ├── mipmap-xxxhdpi
│ │ ├── ic_launcher.png
│ │ └── ic_launcher_round.png
│ │ ├── values
│ │ ├── colors.xml
│ │ ├── dimen.xml
│ │ ├── strings.xml
│ │ └── styles.xml
│ │ └── xml
│ │ └── pref_ui_test.xml
│ └── test
│ └── java
│ └── com
│ └── programmersbox
│ └── testingplaygroundapp
│ ├── ClassInfoExtensions.kt
│ ├── ClassInformationGetter.kt
│ ├── ExampleUnitTest.kt
│ ├── ExampleUnitTestThree.kt
│ ├── ExampleUnitTestTwo.kt
│ └── ResourceMaker.kt
├── thirdpartyutils
├── .gitignore
├── README.md
├── build.gradle
├── consumer-rules.pro
├── proguard-rules.pro
└── src
│ ├── androidTest
│ └── java
│ │ └── com
│ │ └── programmersbox
│ │ └── thirdpartyutils
│ │ └── ExampleInstrumentedTest.kt
│ ├── main
│ ├── AndroidManifest.xml
│ └── java
│ │ └── com
│ │ └── programmersbox
│ │ └── thirdpartyutils
│ │ ├── BrowserUtils.kt
│ │ ├── GlideUtils.kt
│ │ ├── LottieUtils.kt
│ │ ├── PaletteUtils.kt
│ │ └── RetrofitUtils.kt
│ └── test
│ └── java
│ └── com
│ └── programmersbox
│ └── thirdpartyutils
│ └── ExampleUnitTest.kt
└── versions.gradle
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | # These are supported funding model platforms
2 |
3 | github: jakepurple13 # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
4 | patreon: # Replace with a single Patreon username
5 | open_collective: # Replace with a single Open Collective username
6 | ko_fi: V7V3D3JI
7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
9 | liberapay: # Replace with a single Liberapay username
10 | issuehunt: # Replace with a single IssueHunt username
11 | otechie: # Replace with a single Otechie username
12 | custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
13 |
--------------------------------------------------------------------------------
/.github/dependabot.yml:
--------------------------------------------------------------------------------
1 | version: 2
2 | updates:
3 | - package-ecosystem: gradle
4 | directory: "/"
5 | schedule:
6 | interval: daily
7 | time: '08:00'
8 | timezone: America/New_York
9 | open-pull-requests-limit: 10
10 | reviewers:
11 | - jakepurple13
12 | ignore:
13 | - dependency-name: com.android.tools.build:gradle
14 | versions:
15 | - ">= 4.1.a, < 4.2"
16 | - dependency-name: com.squareup.okhttp3:okhttp
17 | versions:
18 | - "> 4.7.0, < 4.8"
19 | - dependency-name: org.jetbrains.kotlinx:kotlinx-coroutines-android
20 | versions:
21 | - "> 1.3.5, < 2"
22 | - dependency-name: org.jetbrains.kotlinx:kotlinx-coroutines-core
23 | versions:
24 | - "> 1.3.5, < 2"
25 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea/caches
5 | /.idea/libraries
6 | /.idea/modules.xml
7 | /.idea/workspace.xml
8 | /.idea/navEditor.xml
9 | /.idea/assetWizardSettings.xml
10 | .DS_Store
11 | /build
12 | /captures
13 | .externalNativeBuild
14 | .cxx
15 |
--------------------------------------------------------------------------------
/.idea/$CACHE_FILE$:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 | Android
10 |
11 |
12 | JUnitJava
13 |
14 |
15 | Java
16 |
17 |
18 | LintAndroid
19 |
20 |
21 | PerformanceLintAndroid
22 |
23 |
24 |
25 |
26 | Android
27 |
28 |
29 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/.idea/codeStyles/codeStyleConfig.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/.idea/dictionaries:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idea/gradle.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
34 |
35 |
--------------------------------------------------------------------------------
/.idea/jarRepositories.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
--------------------------------------------------------------------------------
/.idea/markdown-navigator-enh.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/.idea/scopes/ReadMe.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # [HelpfulTools](https://github.com/jakepurple13/HelpfulTools/wiki)
2 |
3 | 
4 | 
5 | 
6 |
7 | 
8 |
9 | Just some small simple tools that I have found myself copying+pasting to almost all projects I do.
10 |
11 | First, add JitPack:
12 | ```groovy
13 | allprojects {
14 | repositories {
15 | //...
16 | maven { url 'https://jitpack.io' }
17 | }
18 | }
19 | ```
20 |
21 | [](https://jitpack.io/#jakepurple13/HelpfulTools)
22 |
23 | ```groovy
24 | implementation 'com.github.jakepurple13.HelpfulTools:flowutils:{version}'
25 | implementation 'com.github.jakepurple13.HelpfulTools:gsonutils:{version}'
26 | implementation 'com.github.jakepurple13.HelpfulTools:helpfulutils:{version}'
27 | implementation 'com.github.jakepurple13.HelpfulTools:loggingutils:{version}'
28 | implementation 'com.github.jakepurple13.HelpfulTools:rxutils:{version}'
29 | implementation 'com.github.jakepurple13.HelpfulTools:dragswipe:{version}'
30 | implementation 'com.github.jakepurple13.HelpfulTools:funutils:{version}'
31 | implementation "com.github.jakepurple13.HelpfulTools:thirdpartyutils:{version}"
32 | ```
33 |
34 | These aren't working right now. Use version 10.2.3 if you want to use them
35 | For the dslprocessor module, also include:
36 | ```groovy
37 | //To allow kapt
38 | apply plugin: 'kotlin-kapt'
39 | //For the Annotations
40 | implementation 'com.github.jakepurple13.HelpfulTools:dslannotations:{version}'
41 | //For the actual generation
42 | kapt "com.github.jakepurple13.HelpfulTools:dslprocessor:{version}"
43 | ```
44 |
--------------------------------------------------------------------------------
/_config.yml:
--------------------------------------------------------------------------------
1 | theme: jekyll-theme-midnight
--------------------------------------------------------------------------------
/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
--------------------------------------------------------------------------------
/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 |
19 | # If you keep the line number information, uncomment this to
20 | # hide the original source file name.
21 | #-renamesourcefileattribute SourceFile
--------------------------------------------------------------------------------
/app/src/androidTest/java/com/programmersbox/helpfultools/ExampleInstrumentedTest.kt:
--------------------------------------------------------------------------------
1 | package com.programmersbox.helpfultools
2 |
3 | import androidx.test.platform.app.InstrumentationRegistry
4 | import androidx.test.ext.junit.runners.AndroidJUnit4
5 |
6 | import org.junit.Test
7 | import org.junit.runner.RunWith
8 |
9 | import org.junit.Assert.*
10 |
11 | /**
12 | * Instrumented test, which will execute on an Android device.
13 | *
14 | * See [testing documentation](http://d.android.com/tools/testing).
15 | */
16 | @RunWith(AndroidJUnit4::class)
17 | class ExampleInstrumentedTest {
18 | @Test
19 | fun useAppContext() {
20 | // Context of the app under test.
21 | val appContext = InstrumentationRegistry.getInstrumentation().targetContext
22 | assertEquals("com.programmersbox.helpfultools", appContext.packageName)
23 | }
24 | }
--------------------------------------------------------------------------------
/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/app/src/main/java/com/programmersbox/helpfultools/ColorApi.kt:
--------------------------------------------------------------------------------
1 | package com.programmersbox.helpfultools
2 |
3 | data class ColorApi(
4 | val hex: Hex?,
5 | val rgb: Rgb?,
6 | val hsl: Hsl?,
7 | val hsv: Hsv?,
8 | val name: Name?,
9 | val cmyk: Cmyk?,
10 | val XYZ: XYZ?,
11 | val image: Image?,
12 | val contrast: Contrast?,
13 | val _links: _links?,
14 | val _embedded: _embedded?
15 | )
16 |
17 | data class Cmyk(val fraction: Fraction?, val value: String?, val c: Number?, val m: Number?, val y: Number?, val k: Number?)
18 |
19 | data class Contrast(val value: String?)
20 |
21 | data class Fraction(val c: Number?, val m: Number?, val y: Number?, val k: Number?)
22 |
23 | data class Hex(val value: String?, val clean: String?)
24 |
25 | data class Hsl(val fraction: Fraction?, val h: Number?, val s: Number?, val l: Number?, val value: String?)
26 |
27 | data class Hsv(val fraction: Fraction?, val value: String?, val h: Number?, val s: Number?, val v: Number?)
28 |
29 | data class Image(val bare: String?, val named: String?)
30 |
31 | data class Name(val value: String?, val closest_named_hex: String?, val exact_match_name: Boolean?, val distance: Number?)
32 |
33 | data class Rgb(val fraction: Fraction?, val r: Number?, val g: Number?, val b: Number?, val value: String?)
34 |
35 | data class Self(val href: String?)
36 |
37 | data class XYZ(val fraction: Fraction?, val value: String?, val X: Number?, val Y: Number?, val Z: Number?)
38 |
39 | class _embedded()
40 |
41 | data class _links(val self: Self?)
--------------------------------------------------------------------------------
/app/src/main/java/com/programmersbox/helpfultools/JavaDslBuilder.java:
--------------------------------------------------------------------------------
1 | package com.programmersbox.helpfultools;
2 |
3 | //import com.programmersbox.dslannotations.DslClass;
4 | //import com.programmersbox.dslannotations.DslField;
5 |
6 | import kotlin.Unit;
7 | import kotlin.jvm.functions.Function0;
8 | import kotlin.jvm.functions.Function1;
9 |
10 | //@DslClass(dslMarker = JavaDslMarker.class)
11 | public class JavaDslBuilder {
12 | int num = 4;
13 |
14 | //@DslField(name = "javaName", comment = "This is a java one")
15 | String name = "";
16 |
17 | Function0 function = () -> null;
18 |
19 | //@DslField(name = "functionOne", comment = "This is a java one")
20 | Function0 function1 = new Function0() {
21 | @Override
22 | public Unit invoke() {
23 | return null;
24 | }
25 | };
26 |
27 | static void javaDslBuild(Function1 block) {
28 | JavaDslBuilder dsl = new JavaDslBuilder();
29 | block.invoke(dsl);
30 | dsl.function.invoke();
31 | dsl.function1.invoke();
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/app/src/main/java/com/programmersbox/helpfultools/JavaDslMarker.java:
--------------------------------------------------------------------------------
1 | package com.programmersbox.helpfultools;
2 |
3 | import kotlin.DslMarker;
4 |
5 | @DslMarker
6 | public @interface JavaDslMarker {
7 |
8 | }
9 |
--------------------------------------------------------------------------------
/app/src/main/java/com/programmersbox/helpfultools/Linting.java:
--------------------------------------------------------------------------------
1 | package com.programmersbox.helpfultools;
2 |
3 | import android.os.CountDownTimer;
4 | import android.util.Log;
5 |
6 | import com.programmersbox.funutils.cards.Card;
7 | import com.programmersbox.funutils.cards.Deck;
8 | import com.programmersbox.helpfulutils.DeviceInfo;
9 | import com.programmersbox.helpfulutils.EasyCountDownTimer;
10 | import com.programmersbox.loggingutils.Loged;
11 |
12 | class Linting {
13 | void test() {
14 | Log.w("Hello", "World");
15 | Log.wtf("Hello", "World");
16 | Log.i("Hello", "World");
17 | Log.v("Hello", "World");
18 | Log.e("Hello", "World");
19 | Log.d("Hello", "World");
20 |
21 | Loged.w("World", "Hello");
22 | Loged.a("World", "Hello", true);
23 | Loged.i("World", "Hello", true, true);
24 | Loged.v("World", "Hello", true, true);
25 | Loged.e("World");
26 | Loged.d();
27 | Loged.wtf("World", "Hello", true, true);
28 | Loged.r("World", "Hello", true, true, 2, 3, 4, 5, 6, 7);
29 | }
30 |
31 | void test2() {
32 | Log.d("Gson", new DeviceInfo.Info().toString());
33 | Loged.d(new DeviceInfo.Info(), "Gson", true, true);
34 | }
35 |
36 | void test3() {
37 | CountDownTimer timer = EasyCountDownTimer.invoke(1000L, () -> {
38 | System.out.println("Finished");
39 | return null;
40 | });
41 |
42 | Deck deck = Deck.defaultDeck();
43 | }
44 |
45 | }
46 |
--------------------------------------------------------------------------------
/app/src/main/java/com/programmersbox/helpfultools/MoreActivity.kt:
--------------------------------------------------------------------------------
1 | package com.programmersbox.helpfultools
2 |
3 | import android.os.Bundle
4 | import android.widget.Button
5 | import android.widget.Toast
6 | import androidx.appcompat.app.AppCompatActivity
7 | import com.programmersbox.flowutils.clicks
8 | import com.programmersbox.flowutils.collectOnUi
9 | import com.programmersbox.funutils.funutilities.SequenceListener
10 | import com.programmersbox.funutils.funutilities.SequenceMaker
11 | import com.programmersbox.funutils.funutilities.TimedSequenceMaker
12 | import kotlinx.android.synthetic.main.activity_more.*
13 | import kotlinx.coroutines.flow.map
14 |
15 | class MoreActivity : AppCompatActivity() {
16 |
17 | private val sequenceList = listOf(Directions.UP, Directions.DOWN, Directions.LEFT, Directions.RIGHT)
18 | private val achieved = { Toast.makeText(this, "You did it!", Toast.LENGTH_SHORT).show() }
19 | private val sequenceReset = { Toast.makeText(this, "Sequenced Reset", Toast.LENGTH_SHORT).show() }
20 |
21 | private val sequenceMaker = SequenceMaker(sequenceList, object : SequenceListener {
22 | override fun onAchieved() = achieved()
23 | override fun onReset() = sequenceReset()
24 | })
25 | private val timedSequenceMaker = TimedSequenceMaker(sequenceList, 2000, object : SequenceListener {
26 | override fun onAchieved() = achieved()
27 | override fun onReset() = sequenceReset()
28 | })
29 |
30 | private var sequence: SequenceMaker? = null
31 |
32 | override fun onCreate(savedInstanceState: Bundle?) {
33 | super.onCreate(savedInstanceState)
34 | setContentView(R.layout.activity_more)
35 |
36 | useSequence
37 | .clicks()
38 | .map { sequence = sequenceMaker }
39 | .collectOnUi { sequence?.resetSequence() }
40 |
41 | useTimed
42 | .clicks()
43 | .map { sequence = timedSequenceMaker }
44 | .collectOnUi { sequence?.resetSequence() }
45 |
46 | resetSequence
47 | .clicks()
48 | .collectOnUi { sequence?.resetSequence() }
49 |
50 | arrowSetup(
51 | upArrow to Directions.UP,
52 | downArrow to Directions.DOWN,
53 | leftArrow to Directions.LEFT,
54 | rightArrow to Directions.RIGHT
55 | )
56 |
57 | }
58 |
59 | private fun arrowSetup(vararg pairs: Pair