Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Switch to GitLab Next
Sign in / Register
Toggle navigation
C
cw-andexplore
Project overview
Project overview
Details
Activity
Releases
Cycle Analytics
Insights
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Locked Files
Security & Compliance
Security & Compliance
Dependency List
Packages
Packages
List
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Commits
Open sidebar
Mark Murphy
cw-andexplore
Commits
432ba666
Commit
432ba666
authored
Jun 02, 2019
by
Mark Murphy
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add new tutorials
parent
d66a1af8
Changes
321
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
321 changed files
with
9378 additions
and
0 deletions
+9378
-0
T33-Report/ToDo/.gitignore
T33-Report/ToDo/.gitignore
+13
-0
T33-Report/ToDo/app/.gitignore
T33-Report/ToDo/app/.gitignore
+1
-0
T33-Report/ToDo/app/build.gradle
T33-Report/ToDo/app/build.gradle
+67
-0
T33-Report/ToDo/app/proguard-rules.pro
T33-Report/ToDo/app/proguard-rules.pro
+21
-0
T33-Report/ToDo/app/src/androidTest/java/com/commonsware/todo/ui/roster/RosterListFragmentTest.kt
.../com/commonsware/todo/ui/roster/RosterListFragmentTest.kt
+51
-0
T33-Report/ToDo/app/src/main/AndroidManifest.xml
T33-Report/ToDo/app/src/main/AndroidManifest.xml
+29
-0
T33-Report/ToDo/app/src/main/assets/about.html
T33-Report/ToDo/app/src/main/assets/about.html
+17
-0
T33-Report/ToDo/app/src/main/java/com/commonsware/todo/ToDoApp.kt
...rt/ToDo/app/src/main/java/com/commonsware/todo/ToDoApp.kt
+47
-0
T33-Report/ToDo/app/src/main/java/com/commonsware/todo/repo/ToDoDatabase.kt
...p/src/main/java/com/commonsware/todo/repo/ToDoDatabase.kt
+23
-0
T33-Report/ToDo/app/src/main/java/com/commonsware/todo/repo/ToDoEntity.kt
...app/src/main/java/com/commonsware/todo/repo/ToDoEntity.kt
+51
-0
T33-Report/ToDo/app/src/main/java/com/commonsware/todo/repo/ToDoModel.kt
.../app/src/main/java/com/commonsware/todo/repo/ToDoModel.kt
+12
-0
T33-Report/ToDo/app/src/main/java/com/commonsware/todo/repo/ToDoRepository.kt
...src/main/java/com/commonsware/todo/repo/ToDoRepository.kt
+28
-0
T33-Report/ToDo/app/src/main/java/com/commonsware/todo/repo/TypeTransmogrifier.kt
...main/java/com/commonsware/todo/repo/TypeTransmogrifier.kt
+14
-0
T33-Report/ToDo/app/src/main/java/com/commonsware/todo/report/RosterReport.kt
...src/main/java/com/commonsware/todo/report/RosterReport.kt
+24
-0
T33-Report/ToDo/app/src/main/java/com/commonsware/todo/ui/AboutActivity.kt
...pp/src/main/java/com/commonsware/todo/ui/AboutActivity.kt
+17
-0
T33-Report/ToDo/app/src/main/java/com/commonsware/todo/ui/MainActivity.kt
...app/src/main/java/com/commonsware/todo/ui/MainActivity.kt
+47
-0
T33-Report/ToDo/app/src/main/java/com/commonsware/todo/ui/SingleModelMotor.kt
...src/main/java/com/commonsware/todo/ui/SingleModelMotor.kt
+34
-0
T33-Report/ToDo/app/src/main/java/com/commonsware/todo/ui/display/DisplayFragment.kt
...n/java/com/commonsware/todo/ui/display/DisplayFragment.kt
+59
-0
T33-Report/ToDo/app/src/main/java/com/commonsware/todo/ui/edit/EditFragment.kt
...rc/main/java/com/commonsware/todo/ui/edit/EditFragment.kt
+101
-0
T33-Report/ToDo/app/src/main/java/com/commonsware/todo/ui/roster/RosterAdapter.kt
...main/java/com/commonsware/todo/ui/roster/RosterAdapter.kt
+39
-0
T33-Report/ToDo/app/src/main/java/com/commonsware/todo/ui/roster/RosterListFragment.kt
...java/com/commonsware/todo/ui/roster/RosterListFragment.kt
+177
-0
T33-Report/ToDo/app/src/main/java/com/commonsware/todo/ui/roster/RosterMotor.kt
...c/main/java/com/commonsware/todo/ui/roster/RosterMotor.kt
+57
-0
T33-Report/ToDo/app/src/main/java/com/commonsware/todo/ui/roster/RosterRowHolder.kt
...in/java/com/commonsware/todo/ui/roster/RosterRowHolder.kt
+18
-0
T33-Report/ToDo/app/src/main/java/com/commonsware/todo/ui/util/BindingAdapters.kt
...main/java/com/commonsware/todo/ui/util/BindingAdapters.kt
+19
-0
T33-Report/ToDo/app/src/main/java/com/commonsware/todo/ui/util/Event.kt
...o/app/src/main/java/com/commonsware/todo/ui/util/Event.kt
+20
-0
T33-Report/ToDo/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
.../app/src/main/res/drawable-v24/ic_launcher_foreground.xml
+34
-0
T33-Report/ToDo/app/src/main/res/drawable/ic_add_black_24dp.xml
...port/ToDo/app/src/main/res/drawable/ic_add_black_24dp.xml
+9
-0
T33-Report/ToDo/app/src/main/res/drawable/ic_check_circle_black_24dp.xml
.../app/src/main/res/drawable/ic_check_circle_black_24dp.xml
+9
-0
T33-Report/ToDo/app/src/main/res/drawable/ic_delete_black_24dp.xml
...t/ToDo/app/src/main/res/drawable/ic_delete_black_24dp.xml
+9
-0
T33-Report/ToDo/app/src/main/res/drawable/ic_filter_list_black_24dp.xml
...o/app/src/main/res/drawable/ic_filter_list_black_24dp.xml
+9
-0
T33-Report/ToDo/app/src/main/res/drawable/ic_info_outline_black_24dp.xml
.../app/src/main/res/drawable/ic_info_outline_black_24dp.xml
+9
-0
T33-Report/ToDo/app/src/main/res/drawable/ic_launcher_background.xml
...ToDo/app/src/main/res/drawable/ic_launcher_background.xml
+170
-0
T33-Report/ToDo/app/src/main/res/drawable/ic_mode_edit_black_24dp.xml
...oDo/app/src/main/res/drawable/ic_mode_edit_black_24dp.xml
+9
-0
T33-Report/ToDo/app/src/main/res/drawable/ic_save_black_24dp.xml
...ort/ToDo/app/src/main/res/drawable/ic_save_black_24dp.xml
+9
-0
T33-Report/ToDo/app/src/main/res/layout/activity_about.xml
T33-Report/ToDo/app/src/main/res/layout/activity_about.xml
+29
-0
T33-Report/ToDo/app/src/main/res/layout/activity_main.xml
T33-Report/ToDo/app/src/main/res/layout/activity_main.xml
+30
-0
T33-Report/ToDo/app/src/main/res/layout/todo_display.xml
T33-Report/ToDo/app/src/main/res/layout/todo_display.xml
+85
-0
T33-Report/ToDo/app/src/main/res/layout/todo_edit.xml
T33-Report/ToDo/app/src/main/res/layout/todo_edit.xml
+60
-0
T33-Report/ToDo/app/src/main/res/layout/todo_roster.xml
T33-Report/ToDo/app/src/main/res/layout/todo_roster.xml
+44
-0
T33-Report/ToDo/app/src/main/res/layout/todo_row.xml
T33-Report/ToDo/app/src/main/res/layout/todo_row.xml
+50
-0
T33-Report/ToDo/app/src/main/res/menu/actions.xml
T33-Report/ToDo/app/src/main/res/menu/actions.xml
+11
-0
T33-Report/ToDo/app/src/main/res/menu/actions_display.xml
T33-Report/ToDo/app/src/main/res/menu/actions_display.xml
+10
-0
T33-Report/ToDo/app/src/main/res/menu/actions_edit.xml
T33-Report/ToDo/app/src/main/res/menu/actions_edit.xml
+15
-0
T33-Report/ToDo/app/src/main/res/menu/actions_roster.xml
T33-Report/ToDo/app/src/main/res/menu/actions_roster.xml
+38
-0
T33-Report/ToDo/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
...t/ToDo/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
+5
-0
T33-Report/ToDo/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
.../app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
+5
-0
T33-Report/ToDo/app/src/main/res/mipmap-hdpi/ic_launcher.png
T33-Report/ToDo/app/src/main/res/mipmap-hdpi/ic_launcher.png
+0
-0
T33-Report/ToDo/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png
...o/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png
+0
-0
T33-Report/ToDo/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
...t/ToDo/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
+0
-0
T33-Report/ToDo/app/src/main/res/mipmap-mdpi/ic_launcher.png
T33-Report/ToDo/app/src/main/res/mipmap-mdpi/ic_launcher.png
+0
-0
T33-Report/ToDo/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png
...o/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png
+0
-0
T33-Report/ToDo/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
...t/ToDo/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
+0
-0
T33-Report/ToDo/app/src/main/res/mipmap-xhdpi/ic_launcher.png
...Report/ToDo/app/src/main/res/mipmap-xhdpi/ic_launcher.png
+0
-0
T33-Report/ToDo/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png
.../app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png
+0
-0
T33-Report/ToDo/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
.../ToDo/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
+0
-0
T33-Report/ToDo/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
...eport/ToDo/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
+0
-0
T33-Report/ToDo/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png
...app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png
+0
-0
T33-Report/ToDo/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
...ToDo/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
+0
-0
T33-Report/ToDo/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
...port/ToDo/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
+0
-0
T33-Report/ToDo/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png
...pp/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png
+0
-0
T33-Report/ToDo/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
...oDo/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
+0
-0
T33-Report/ToDo/app/src/main/res/navigation/nav_graph.xml
T33-Report/ToDo/app/src/main/res/navigation/nav_graph.xml
+44
-0
T33-Report/ToDo/app/src/main/res/values/colors.xml
T33-Report/ToDo/app/src/main/res/values/colors.xml
+6
-0
T33-Report/ToDo/app/src/main/res/values/dimens.xml
T33-Report/ToDo/app/src/main/res/values/dimens.xml
+5
-0
T33-Report/ToDo/app/src/main/res/values/ic_launcher_background.xml
...t/ToDo/app/src/main/res/values/ic_launcher_background.xml
+4
-0
T33-Report/ToDo/app/src/main/res/values/strings.xml
T33-Report/ToDo/app/src/main/res/values/strings.xml
+26
-0
T33-Report/ToDo/app/src/main/res/values/styles.xml
T33-Report/ToDo/app/src/main/res/values/styles.xml
+24
-0
T33-Report/ToDo/app/src/test/java/com/commonsware/todo/repo/ToDoRepositoryTest.kt
...test/java/com/commonsware/todo/repo/ToDoRepositoryTest.kt
+110
-0
T33-Report/ToDo/app/src/test/java/com/commonsware/todo/ui/SingleModelMotorTest.kt
...test/java/com/commonsware/todo/ui/SingleModelMotorTest.kt
+46
-0
T33-Report/ToDo/build.gradle
T33-Report/ToDo/build.gradle
+36
-0
T33-Report/ToDo/gradle.properties
T33-Report/ToDo/gradle.properties
+21
-0
T33-Report/ToDo/gradle/wrapper/gradle-wrapper.jar
T33-Report/ToDo/gradle/wrapper/gradle-wrapper.jar
+0
-0
T33-Report/ToDo/gradle/wrapper/gradle-wrapper.properties
T33-Report/ToDo/gradle/wrapper/gradle-wrapper.properties
+6
-0
T33-Report/ToDo/gradlew
T33-Report/ToDo/gradlew
+172
-0
T33-Report/ToDo/gradlew.bat
T33-Report/ToDo/gradlew.bat
+84
-0
T33-Report/ToDo/settings.gradle
T33-Report/ToDo/settings.gradle
+1
-0
T34-Share/ToDo/.gitignore
T34-Share/ToDo/.gitignore
+13
-0
T34-Share/ToDo/app/.gitignore
T34-Share/ToDo/app/.gitignore
+1
-0
T34-Share/ToDo/app/build.gradle
T34-Share/ToDo/app/build.gradle
+67
-0
T34-Share/ToDo/app/proguard-rules.pro
T34-Share/ToDo/app/proguard-rules.pro
+21
-0
T34-Share/ToDo/app/src/androidTest/java/com/commonsware/todo/ui/roster/RosterListFragmentTest.kt
.../com/commonsware/todo/ui/roster/RosterListFragmentTest.kt
+51
-0
T34-Share/ToDo/app/src/main/AndroidManifest.xml
T34-Share/ToDo/app/src/main/AndroidManifest.xml
+39
-0
T34-Share/ToDo/app/src/main/assets/about.html
T34-Share/ToDo/app/src/main/assets/about.html
+17
-0
T34-Share/ToDo/app/src/main/java/com/commonsware/todo/ToDoApp.kt
...re/ToDo/app/src/main/java/com/commonsware/todo/ToDoApp.kt
+47
-0
T34-Share/ToDo/app/src/main/java/com/commonsware/todo/repo/ToDoDatabase.kt
...p/src/main/java/com/commonsware/todo/repo/ToDoDatabase.kt
+23
-0
T34-Share/ToDo/app/src/main/java/com/commonsware/todo/repo/ToDoEntity.kt
...app/src/main/java/com/commonsware/todo/repo/ToDoEntity.kt
+51
-0
T34-Share/ToDo/app/src/main/java/com/commonsware/todo/repo/ToDoModel.kt
.../app/src/main/java/com/commonsware/todo/repo/ToDoModel.kt
+12
-0
T34-Share/ToDo/app/src/main/java/com/commonsware/todo/repo/ToDoRepository.kt
...src/main/java/com/commonsware/todo/repo/ToDoRepository.kt
+28
-0
T34-Share/ToDo/app/src/main/java/com/commonsware/todo/repo/TypeTransmogrifier.kt
...main/java/com/commonsware/todo/repo/TypeTransmogrifier.kt
+14
-0
T34-Share/ToDo/app/src/main/java/com/commonsware/todo/report/RosterReport.kt
...src/main/java/com/commonsware/todo/report/RosterReport.kt
+24
-0
T34-Share/ToDo/app/src/main/java/com/commonsware/todo/ui/AboutActivity.kt
...pp/src/main/java/com/commonsware/todo/ui/AboutActivity.kt
+17
-0
T34-Share/ToDo/app/src/main/java/com/commonsware/todo/ui/MainActivity.kt
...app/src/main/java/com/commonsware/todo/ui/MainActivity.kt
+47
-0
T34-Share/ToDo/app/src/main/java/com/commonsware/todo/ui/SingleModelMotor.kt
...src/main/java/com/commonsware/todo/ui/SingleModelMotor.kt
+34
-0
T34-Share/ToDo/app/src/main/java/com/commonsware/todo/ui/display/DisplayFragment.kt
...n/java/com/commonsware/todo/ui/display/DisplayFragment.kt
+59
-0
T34-Share/ToDo/app/src/main/java/com/commonsware/todo/ui/edit/EditFragment.kt
...rc/main/java/com/commonsware/todo/ui/edit/EditFragment.kt
+101
-0
T34-Share/ToDo/app/src/main/java/com/commonsware/todo/ui/roster/RosterAdapter.kt
...main/java/com/commonsware/todo/ui/roster/RosterAdapter.kt
+39
-0
T34-Share/ToDo/app/src/main/java/com/commonsware/todo/ui/roster/RosterListFragment.kt
...java/com/commonsware/todo/ui/roster/RosterListFragment.kt
+196
-0
T34-Share/ToDo/app/src/main/java/com/commonsware/todo/ui/roster/RosterMotor.kt
...c/main/java/com/commonsware/todo/ui/roster/RosterMotor.kt
+82
-0
T34-Share/ToDo/app/src/main/java/com/commonsware/todo/ui/roster/RosterRowHolder.kt
...in/java/com/commonsware/todo/ui/roster/RosterRowHolder.kt
+18
-0
T34-Share/ToDo/app/src/main/java/com/commonsware/todo/ui/util/BindingAdapters.kt
...main/java/com/commonsware/todo/ui/util/BindingAdapters.kt
+19
-0
T34-Share/ToDo/app/src/main/java/com/commonsware/todo/ui/util/Event.kt
...o/app/src/main/java/com/commonsware/todo/ui/util/Event.kt
+20
-0
T34-Share/ToDo/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
.../app/src/main/res/drawable-v24/ic_launcher_foreground.xml
+34
-0
T34-Share/ToDo/app/src/main/res/drawable/ic_add_black_24dp.xml
...hare/ToDo/app/src/main/res/drawable/ic_add_black_24dp.xml
+9
-0
T34-Share/ToDo/app/src/main/res/drawable/ic_check_circle_black_24dp.xml
.../app/src/main/res/drawable/ic_check_circle_black_24dp.xml
+9
-0
T34-Share/ToDo/app/src/main/res/drawable/ic_delete_black_24dp.xml
...e/ToDo/app/src/main/res/drawable/ic_delete_black_24dp.xml
+9
-0
T34-Share/ToDo/app/src/main/res/drawable/ic_filter_list_black_24dp.xml
...o/app/src/main/res/drawable/ic_filter_list_black_24dp.xml
+9
-0
T34-Share/ToDo/app/src/main/res/drawable/ic_info_outline_black_24dp.xml
.../app/src/main/res/drawable/ic_info_outline_black_24dp.xml
+9
-0
T34-Share/ToDo/app/src/main/res/drawable/ic_launcher_background.xml
...ToDo/app/src/main/res/drawable/ic_launcher_background.xml
+170
-0
T34-Share/ToDo/app/src/main/res/drawable/ic_mode_edit_black_24dp.xml
...oDo/app/src/main/res/drawable/ic_mode_edit_black_24dp.xml
+9
-0
T34-Share/ToDo/app/src/main/res/drawable/ic_save_black_24dp.xml
...are/ToDo/app/src/main/res/drawable/ic_save_black_24dp.xml
+9
-0
T34-Share/ToDo/app/src/main/res/drawable/ic_share_black_24dp.xml
...re/ToDo/app/src/main/res/drawable/ic_share_black_24dp.xml
+9
-0
T34-Share/ToDo/app/src/main/res/layout/activity_about.xml
T34-Share/ToDo/app/src/main/res/layout/activity_about.xml
+29
-0
T34-Share/ToDo/app/src/main/res/layout/activity_main.xml
T34-Share/ToDo/app/src/main/res/layout/activity_main.xml
+30
-0
T34-Share/ToDo/app/src/main/res/layout/todo_display.xml
T34-Share/ToDo/app/src/main/res/layout/todo_display.xml
+85
-0
T34-Share/ToDo/app/src/main/res/layout/todo_edit.xml
T34-Share/ToDo/app/src/main/res/layout/todo_edit.xml
+60
-0
T34-Share/ToDo/app/src/main/res/layout/todo_roster.xml
T34-Share/ToDo/app/src/main/res/layout/todo_roster.xml
+44
-0
T34-Share/ToDo/app/src/main/res/layout/todo_row.xml
T34-Share/ToDo/app/src/main/res/layout/todo_row.xml
+50
-0
T34-Share/ToDo/app/src/main/res/menu/actions.xml
T34-Share/ToDo/app/src/main/res/menu/actions.xml
+11
-0
T34-Share/ToDo/app/src/main/res/menu/actions_display.xml
T34-Share/ToDo/app/src/main/res/menu/actions_display.xml
+10
-0
T34-Share/ToDo/app/src/main/res/menu/actions_edit.xml
T34-Share/ToDo/app/src/main/res/menu/actions_edit.xml
+15
-0
T34-Share/ToDo/app/src/main/res/menu/actions_roster.xml
T34-Share/ToDo/app/src/main/res/menu/actions_roster.xml
+43
-0
T34-Share/ToDo/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
...e/ToDo/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
+5
-0
T34-Share/ToDo/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
.../app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
+5
-0
T34-Share/ToDo/app/src/main/res/mipmap-hdpi/ic_launcher.png
T34-Share/ToDo/app/src/main/res/mipmap-hdpi/ic_launcher.png
+0
-0
T34-Share/ToDo/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png
...o/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png
+0
-0
T34-Share/ToDo/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
...e/ToDo/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
+0
-0
T34-Share/ToDo/app/src/main/res/mipmap-mdpi/ic_launcher.png
T34-Share/ToDo/app/src/main/res/mipmap-mdpi/ic_launcher.png
+0
-0
T34-Share/ToDo/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png
...o/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png
+0
-0
T34-Share/ToDo/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
...e/ToDo/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
+0
-0
T34-Share/ToDo/app/src/main/res/mipmap-xhdpi/ic_launcher.png
T34-Share/ToDo/app/src/main/res/mipmap-xhdpi/ic_launcher.png
+0
-0
T34-Share/ToDo/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png
.../app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png
+0
-0
T34-Share/ToDo/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
.../ToDo/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
+0
-0
T34-Share/ToDo/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
...Share/ToDo/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
+0
-0
T34-Share/ToDo/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png
...app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png
+0
-0
T34-Share/ToDo/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
...ToDo/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
+0
-0
T34-Share/ToDo/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
...hare/ToDo/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
+0
-0
T34-Share/ToDo/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png
...pp/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png
+0
-0
T34-Share/ToDo/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
...oDo/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
+0
-0
T34-Share/ToDo/app/src/main/res/navigation/nav_graph.xml
T34-Share/ToDo/app/src/main/res/navigation/nav_graph.xml
+44
-0
T34-Share/ToDo/app/src/main/res/values/colors.xml
T34-Share/ToDo/app/src/main/res/values/colors.xml
+6
-0
T34-Share/ToDo/app/src/main/res/values/dimens.xml
T34-Share/ToDo/app/src/main/res/values/dimens.xml
+5
-0
T34-Share/ToDo/app/src/main/res/values/ic_launcher_background.xml
...e/ToDo/app/src/main/res/values/ic_launcher_background.xml
+4
-0
T34-Share/ToDo/app/src/main/res/values/strings.xml
T34-Share/ToDo/app/src/main/res/values/strings.xml
+28
-0
T34-Share/ToDo/app/src/main/res/values/styles.xml
T34-Share/ToDo/app/src/main/res/values/styles.xml
+24
-0
T34-Share/ToDo/app/src/main/res/xml/provider_paths.xml
T34-Share/ToDo/app/src/main/res/xml/provider_paths.xml
+4
-0
T34-Share/ToDo/app/src/test/java/com/commonsware/todo/repo/ToDoRepositoryTest.kt
...test/java/com/commonsware/todo/repo/ToDoRepositoryTest.kt
+110
-0
T34-Share/ToDo/app/src/test/java/com/commonsware/todo/ui/SingleModelMotorTest.kt
...test/java/com/commonsware/todo/ui/SingleModelMotorTest.kt
+46
-0
T34-Share/ToDo/build.gradle
T34-Share/ToDo/build.gradle
+36
-0
T34-Share/ToDo/gradle.properties
T34-Share/ToDo/gradle.properties
+21
-0
T34-Share/ToDo/gradle/wrapper/gradle-wrapper.jar
T34-Share/ToDo/gradle/wrapper/gradle-wrapper.jar
+0
-0
T34-Share/ToDo/gradle/wrapper/gradle-wrapper.properties
T34-Share/ToDo/gradle/wrapper/gradle-wrapper.properties
+6
-0
T34-Share/ToDo/gradlew
T34-Share/ToDo/gradlew
+172
-0
T34-Share/ToDo/gradlew.bat
T34-Share/ToDo/gradlew.bat
+84
-0
T34-Share/ToDo/settings.gradle
T34-Share/ToDo/settings.gradle
+1
-0
T35-Prefs/ToDo/.gitignore
T35-Prefs/ToDo/.gitignore
+13
-0
T35-Prefs/ToDo/app/.gitignore
T35-Prefs/ToDo/app/.gitignore
+1
-0
T35-Prefs/ToDo/app/build.gradle
T35-Prefs/ToDo/app/build.gradle
+68
-0
T35-Prefs/ToDo/app/proguard-rules.pro
T35-Prefs/ToDo/app/proguard-rules.pro
+21
-0
T35-Prefs/ToDo/app/src/androidTest/java/com/commonsware/todo/ui/roster/RosterListFragmentTest.kt
.../com/commonsware/todo/ui/roster/RosterListFragmentTest.kt
+51
-0
T35-Prefs/ToDo/app/src/main/AndroidManifest.xml
T35-Prefs/ToDo/app/src/main/AndroidManifest.xml
+39
-0
T35-Prefs/ToDo/app/src/main/assets/about.html
T35-Prefs/ToDo/app/src/main/assets/about.html
+17
-0
T35-Prefs/ToDo/app/src/main/java/com/commonsware/todo/ToDoApp.kt
...fs/ToDo/app/src/main/java/com/commonsware/todo/ToDoApp.kt
+47
-0
T35-Prefs/ToDo/app/src/main/java/com/commonsware/todo/repo/ToDoDatabase.kt
...p/src/main/java/com/commonsware/todo/repo/ToDoDatabase.kt
+23
-0
T35-Prefs/ToDo/app/src/main/java/com/commonsware/todo/repo/ToDoEntity.kt
...app/src/main/java/com/commonsware/todo/repo/ToDoEntity.kt
+51
-0
T35-Prefs/ToDo/app/src/main/java/com/commonsware/todo/repo/ToDoModel.kt
.../app/src/main/java/com/commonsware/todo/repo/ToDoModel.kt
+12
-0
T35-Prefs/ToDo/app/src/main/java/com/commonsware/todo/repo/ToDoRepository.kt
...src/main/java/com/commonsware/todo/repo/ToDoRepository.kt
+28
-0
T35-Prefs/ToDo/app/src/main/java/com/commonsware/todo/repo/TypeTransmogrifier.kt
...main/java/com/commonsware/todo/repo/TypeTransmogrifier.kt
+14
-0
T35-Prefs/ToDo/app/src/main/java/com/commonsware/todo/report/RosterReport.kt
...src/main/java/com/commonsware/todo/report/RosterReport.kt
+24
-0
T35-Prefs/ToDo/app/src/main/java/com/commonsware/todo/ui/AboutActivity.kt
...pp/src/main/java/com/commonsware/todo/ui/AboutActivity.kt
+17
-0
T35-Prefs/ToDo/app/src/main/java/com/commonsware/todo/ui/MainActivity.kt
...app/src/main/java/com/commonsware/todo/ui/MainActivity.kt
+50
-0
T35-Prefs/ToDo/app/src/main/java/com/commonsware/todo/ui/SingleModelMotor.kt
...src/main/java/com/commonsware/todo/ui/SingleModelMotor.kt
+34
-0
T35-Prefs/ToDo/app/src/main/java/com/commonsware/todo/ui/display/DisplayFragment.kt
...n/java/com/commonsware/todo/ui/display/DisplayFragment.kt
+59
-0
T35-Prefs/ToDo/app/src/main/java/com/commonsware/todo/ui/edit/EditFragment.kt
...rc/main/java/com/commonsware/todo/ui/edit/EditFragment.kt
+101
-0
T35-Prefs/ToDo/app/src/main/java/com/commonsware/todo/ui/prefs/PrefsFragment.kt
.../main/java/com/commonsware/todo/ui/prefs/PrefsFragment.kt
+11
-0
T35-Prefs/ToDo/app/src/main/java/com/commonsware/todo/ui/roster/RosterAdapter.kt
...main/java/com/commonsware/todo/ui/roster/RosterAdapter.kt
+39
-0
T35-Prefs/ToDo/app/src/main/java/com/commonsware/todo/ui/roster/RosterListFragment.kt
...java/com/commonsware/todo/ui/roster/RosterListFragment.kt
+196
-0
T35-Prefs/ToDo/app/src/main/java/com/commonsware/todo/ui/roster/RosterMotor.kt
...c/main/java/com/commonsware/todo/ui/roster/RosterMotor.kt
+82
-0
T35-Prefs/ToDo/app/src/main/java/com/commonsware/todo/ui/roster/RosterRowHolder.kt
...in/java/com/commonsware/todo/ui/roster/RosterRowHolder.kt
+18
-0
T35-Prefs/ToDo/app/src/main/java/com/commonsware/todo/ui/util/BindingAdapters.kt
...main/java/com/commonsware/todo/ui/util/BindingAdapters.kt
+19
-0
T35-Prefs/ToDo/app/src/main/java/com/commonsware/todo/ui/util/Event.kt
...o/app/src/main/java/com/commonsware/todo/ui/util/Event.kt
+20
-0
T35-Prefs/ToDo/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
.../app/src/main/res/drawable-v24/ic_launcher_foreground.xml
+34
-0
T35-Prefs/ToDo/app/src/main/res/drawable/ic_add_black_24dp.xml
...refs/ToDo/app/src/main/res/drawable/ic_add_black_24dp.xml
+9
-0
T35-Prefs/ToDo/app/src/main/res/drawable/ic_check_circle_black_24dp.xml
.../app/src/main/res/drawable/ic_check_circle_black_24dp.xml
+9
-0
T35-Prefs/ToDo/app/src/main/res/drawable/ic_delete_black_24dp.xml
...s/ToDo/app/src/main/res/drawable/ic_delete_black_24dp.xml
+9
-0
T35-Prefs/ToDo/app/src/main/res/drawable/ic_filter_list_black_24dp.xml
...o/app/src/main/res/drawable/ic_filter_list_black_24dp.xml
+9
-0
T35-Prefs/ToDo/app/src/main/res/drawable/ic_info_outline_black_24dp.xml
.../app/src/main/res/drawable/ic_info_outline_black_24dp.xml
+9
-0
T35-Prefs/ToDo/app/src/main/res/drawable/ic_launcher_background.xml
...ToDo/app/src/main/res/drawable/ic_launcher_background.xml
+170
-0
T35-Prefs/ToDo/app/src/main/res/drawable/ic_mode_edit_black_24dp.xml
...oDo/app/src/main/res/drawable/ic_mode_edit_black_24dp.xml
+9
-0
T35-Prefs/ToDo/app/src/main/res/drawable/ic_save_black_24dp.xml
...efs/ToDo/app/src/main/res/drawable/ic_save_black_24dp.xml
+9
-0
T35-Prefs/ToDo/app/src/main/res/drawable/ic_settings_black_24dp.xml
...ToDo/app/src/main/res/drawable/ic_settings_black_24dp.xml
+9
-0
T35-Prefs/ToDo/app/src/main/res/drawable/ic_share_black_24dp.xml
...fs/ToDo/app/src/main/res/drawable/ic_share_black_24dp.xml
+9
-0
T35-Prefs/ToDo/app/src/main/res/layout/activity_about.xml
T35-Prefs/ToDo/app/src/main/res/layout/activity_about.xml
+29
-0
T35-Prefs/ToDo/app/src/main/res/layout/activity_main.xml
T35-Prefs/ToDo/app/src/main/res/layout/activity_main.xml
+30
-0
T35-Prefs/ToDo/app/src/main/res/layout/todo_display.xml
T35-Prefs/ToDo/app/src/main/res/layout/todo_display.xml
+85
-0
T35-Prefs/ToDo/app/src/main/res/layout/todo_edit.xml
T35-Prefs/ToDo/app/src/main/res/layout/todo_edit.xml
+60
-0
T35-Prefs/ToDo/app/src/main/res/layout/todo_roster.xml
T35-Prefs/ToDo/app/src/main/res/layout/todo_roster.xml
+44
-0
T35-Prefs/ToDo/app/src/main/res/layout/todo_row.xml
T35-Prefs/ToDo/app/src/main/res/layout/todo_row.xml
+50
-0
T35-Prefs/ToDo/app/src/main/res/menu/actions.xml
T35-Prefs/ToDo/app/src/main/res/menu/actions.xml
+17
-0
T35-Prefs/ToDo/app/src/main/res/menu/actions_display.xml
T35-Prefs/ToDo/app/src/main/res/menu/actions_display.xml
+10
-0
T35-Prefs/ToDo/app/src/main/res/menu/actions_edit.xml
T35-Prefs/ToDo/app/src/main/res/menu/actions_edit.xml
+15
-0
T35-Prefs/ToDo/app/src/main/res/menu/actions_roster.xml
T35-Prefs/ToDo/app/src/main/res/menu/actions_roster.xml
+43
-0
T35-Prefs/ToDo/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
...s/ToDo/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
+5
-0
T35-Prefs/ToDo/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
.../app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
+5
-0
T35-Prefs/ToDo/app/src/main/res/mipmap-hdpi/ic_launcher.png
T35-Prefs/ToDo/app/src/main/res/mipmap-hdpi/ic_launcher.png
+0
-0
T35-Prefs/ToDo/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png
...o/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png
+0
-0
T35-Prefs/ToDo/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
...s/ToDo/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
+0
-0
T35-Prefs/ToDo/app/src/main/res/mipmap-mdpi/ic_launcher.png
T35-Prefs/ToDo/app/src/main/res/mipmap-mdpi/ic_launcher.png
+0
-0
T35-Prefs/ToDo/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png
...o/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png
+0
-0
T35-Prefs/ToDo/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
...s/ToDo/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
+0
-0
T35-Prefs/ToDo/app/src/main/res/mipmap-xhdpi/ic_launcher.png
T35-Prefs/ToDo/app/src/main/res/mipmap-xhdpi/ic_launcher.png
+0
-0
T35-Prefs/ToDo/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png
.../app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png
+0
-0
T35-Prefs/ToDo/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
.../ToDo/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
+0
-0
T35-Prefs/ToDo/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
...Prefs/ToDo/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
+0
-0
T35-Prefs/ToDo/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png
...app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png
+0
-0
T35-Prefs/ToDo/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
...ToDo/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
+0
-0
T35-Prefs/ToDo/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
...refs/ToDo/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
+0
-0
T35-Prefs/ToDo/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png
...pp/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png
+0
-0
T35-Prefs/ToDo/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
...oDo/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
+0
-0
T35-Prefs/ToDo/app/src/main/res/navigation/nav_graph.xml
T35-Prefs/ToDo/app/src/main/res/navigation/nav_graph.xml
+49
-0
T35-Prefs/ToDo/app/src/main/res/values/colors.xml
T35-Prefs/ToDo/app/src/main/res/values/colors.xml
+6
-0
T35-Prefs/ToDo/app/src/main/res/values/dimens.xml
T35-Prefs/ToDo/app/src/main/res/values/dimens.xml
+5
-0
T35-Prefs/ToDo/app/src/main/res/values/ic_launcher_background.xml
...s/ToDo/app/src/main/res/values/ic_launcher_background.xml
+4
-0
T35-Prefs/ToDo/app/src/main/res/values/strings.xml
T35-Prefs/ToDo/app/src/main/res/values/strings.xml
+32
-0
T35-Prefs/ToDo/app/src/main/res/values/styles.xml
T35-Prefs/ToDo/app/src/main/res/values/styles.xml
+24
-0
T35-Prefs/ToDo/app/src/main/res/xml/prefs.xml
T35-Prefs/ToDo/app/src/main/res/xml/prefs.xml
+10
-0
T35-Prefs/ToDo/app/src/main/res/xml/provider_paths.xml
T35-Prefs/ToDo/app/src/main/res/xml/provider_paths.xml
+4
-0
T35-Prefs/ToDo/app/src/test/java/com/commonsware/todo/repo/ToDoRepositoryTest.kt
...test/java/com/commonsware/todo/repo/ToDoRepositoryTest.kt
+110
-0
T35-Prefs/ToDo/app/src/test/java/com/commonsware/todo/ui/SingleModelMotorTest.kt
...test/java/com/commonsware/todo/ui/SingleModelMotorTest.kt
+46
-0
T35-Prefs/ToDo/build.gradle
T35-Prefs/ToDo/build.gradle
+36
-0
T35-Prefs/ToDo/gradle.properties
T35-Prefs/ToDo/gradle.properties
+21
-0
T35-Prefs/ToDo/gradle/wrapper/gradle-wrapper.jar
T35-Prefs/ToDo/gradle/wrapper/gradle-wrapper.jar
+0
-0
T35-Prefs/ToDo/gradle/wrapper/gradle-wrapper.properties
T35-Prefs/ToDo/gradle/wrapper/gradle-wrapper.properties
+6
-0
T35-Prefs/ToDo/gradlew
T35-Prefs/ToDo/gradlew
+172
-0
T35-Prefs/ToDo/gradlew.bat
T35-Prefs/ToDo/gradlew.bat
+84
-0
T35-Prefs/ToDo/settings.gradle
T35-Prefs/ToDo/settings.gradle
+1
-0
T36-Internet/ToDo/.gitignore
T36-Internet/ToDo/.gitignore
+13
-0
T36-Internet/ToDo/app/.gitignore
T36-Internet/ToDo/app/.gitignore
+1
-0
T36-Internet/ToDo/app/build.gradle
T36-Internet/ToDo/app/build.gradle
+71
-0
T36-Internet/ToDo/app/proguard-rules.pro
T36-Internet/ToDo/app/proguard-rules.pro
+21
-0
T36-Internet/ToDo/app/src/androidTest/java/com/commonsware/todo/ui/roster/RosterListFragmentTest.kt
.../com/commonsware/todo/ui/roster/RosterListFragmentTest.kt
+53
-0
T36-Internet/ToDo/app/src/main/AndroidManifest.xml
T36-Internet/ToDo/app/src/main/AndroidManifest.xml
+41
-0
T36-Internet/ToDo/app/src/main/assets/about.html
T36-Internet/ToDo/app/src/main/assets/about.html
+17
-0
T36-Internet/ToDo/app/src/main/java/com/commonsware/todo/ToDoApp.kt
...et/ToDo/app/src/main/java/com/commonsware/todo/ToDoApp.kt
+53
-0
T36-Internet/ToDo/app/src/main/java/com/commonsware/todo/repo/PrefsRepository.kt
...rc/main/java/com/commonsware/todo/repo/PrefsRepository.kt
+18
-0
T36-Internet/ToDo/app/src/main/java/com/commonsware/todo/repo/ToDoDatabase.kt
...p/src/main/java/com/commonsware/todo/repo/ToDoDatabase.kt
+23
-0
T36-Internet/ToDo/app/src/main/java/com/commonsware/todo/repo/ToDoEntity.kt
...app/src/main/java/com/commonsware/todo/repo/ToDoEntity.kt
+54
-0
T36-Internet/ToDo/app/src/main/java/com/commonsware/todo/repo/ToDoModel.kt
.../app/src/main/java/com/commonsware/todo/repo/ToDoModel.kt
+12
-0
T36-Internet/ToDo/app/src/main/java/com/commonsware/todo/repo/ToDoRemoteDataSource.kt
...in/java/com/commonsware/todo/repo/ToDoRemoteDataSource.kt
+31
-0
T36-Internet/ToDo/app/src/main/java/com/commonsware/todo/repo/ToDoRepository.kt
...src/main/java/com/commonsware/todo/repo/ToDoRepository.kt
+32
-0
T36-Internet/ToDo/app/src/main/java/com/commonsware/todo/repo/ToDoServerItem.kt
...src/main/java/com/commonsware/todo/repo/ToDoServerItem.kt
+40
-0
T36-Internet/ToDo/app/src/main/java/com/commonsware/todo/repo/TypeTransmogrifier.kt
...main/java/com/commonsware/todo/repo/TypeTransmogrifier.kt
+14
-0
T36-Internet/ToDo/app/src/main/java/com/commonsware/todo/report/RosterReport.kt
...src/main/java/com/commonsware/todo/report/RosterReport.kt
+24
-0
T36-Internet/ToDo/app/src/main/java/com/commonsware/todo/ui/AboutActivity.kt
...pp/src/main/java/com/commonsware/todo/ui/AboutActivity.kt
+17
-0
T36-Internet/ToDo/app/src/main/java/com/commonsware/todo/ui/MainActivity.kt
...app/src/main/java/com/commonsware/todo/ui/MainActivity.kt
+50
-0
T36-Internet/ToDo/app/src/main/java/com/commonsware/todo/ui/SingleModelMotor.kt
...src/main/java/com/commonsware/todo/ui/SingleModelMotor.kt
+34
-0
T36-Internet/ToDo/app/src/main/java/com/commonsware/todo/ui/display/DisplayFragment.kt
...n/java/com/commonsware/todo/ui/display/DisplayFragment.kt
+59
-0
T36-Internet/ToDo/app/src/main/java/com/commonsware/todo/ui/edit/EditFragment.kt
...rc/main/java/com/commonsware/todo/ui/edit/EditFragment.kt
+101
-0
T36-Internet/ToDo/app/src/main/java/com/commonsware/todo/ui/prefs/PrefsFragment.kt
.../main/java/com/commonsware/todo/ui/prefs/PrefsFragment.kt
+11
-0
T36-Internet/ToDo/app/src/main/java/com/commonsware/todo/ui/roster/RosterAdapter.kt
...main/java/com/commonsware/todo/ui/roster/RosterAdapter.kt
+39
-0
T36-Internet/ToDo/app/src/main/java/com/commonsware/todo/ui/roster/RosterListFragment.kt
...java/com/commonsware/todo/ui/roster/RosterListFragment.kt
+200
-0
T36-Internet/ToDo/app/src/main/java/com/commonsware/todo/ui/roster/RosterMotor.kt
...c/main/java/com/commonsware/todo/ui/roster/RosterMotor.kt
+94
-0
T36-Internet/ToDo/app/src/main/java/com/commonsware/todo/ui/roster/RosterRowHolder.kt
...in/java/com/commonsware/todo/ui/roster/RosterRowHolder.kt
+18
-0
T36-Internet/ToDo/app/src/main/java/com/commonsware/todo/ui/util/BindingAdapters.kt
...main/java/com/commonsware/todo/ui/util/BindingAdapters.kt
+19
-0
T36-Internet/ToDo/app/src/main/java/com/commonsware/todo/ui/util/Event.kt
...o/app/src/main/java/com/commonsware/todo/ui/util/Event.kt
+20
-0
T36-Internet/ToDo/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
.../app/src/main/res/drawable-v24/ic_launcher_foreground.xml
+34
-0
T36-Internet/ToDo/app/src/main/res/drawable/ic_add_black_24dp.xml
...rnet/ToDo/app/src/main/res/drawable/ic_add_black_24dp.xml
+9
-0
T36-Internet/ToDo/app/src/main/res/drawable/ic_check_circle_black_24dp.xml
.../app/src/main/res/drawable/ic_check_circle_black_24dp.xml
+9
-0
T36-Internet/ToDo/app/src/main/res/drawable/ic_delete_black_24dp.xml
...t/ToDo/app/src/main/res/drawable/ic_delete_black_24dp.xml
+9
-0
T36-Internet/ToDo/app/src/main/res/drawable/ic_file_download_black_24dp.xml
...app/src/main/res/drawable/ic_file_download_black_24dp.xml
+9
-0
T36-Internet/ToDo/app/src/main/res/drawable/ic_filter_list_black_24dp.xml
...o/app/src/main/res/drawable/ic_filter_list_black_24dp.xml
+9
-0
T36-Internet/ToDo/app/src/main/res/drawable/ic_info_outline_black_24dp.xml
.../app/src/main/res/drawable/ic_info_outline_black_24dp.xml
+9
-0
T36-Internet/ToDo/app/src/main/res/drawable/ic_launcher_background.xml
...ToDo/app/src/main/res/drawable/ic_launcher_background.xml
+170
-0
T36-Internet/ToDo/app/src/main/res/drawable/ic_mode_edit_black_24dp.xml
...oDo/app/src/main/res/drawable/ic_mode_edit_black_24dp.xml
+9
-0
T36-Internet/ToDo/app/src/main/res/drawable/ic_save_black_24dp.xml
...net/ToDo/app/src/main/res/drawable/ic_save_black_24dp.xml
+9
-0
T36-Internet/ToDo/app/src/main/res/drawable/ic_settings_black_24dp.xml
...ToDo/app/src/main/res/drawable/ic_settings_black_24dp.xml
+9
-0
T36-Internet/ToDo/app/src/main/res/drawable/ic_share_black_24dp.xml
...et/ToDo/app/src/main/res/drawable/ic_share_black_24dp.xml
+9
-0
T36-Internet/ToDo/app/src/main/res/layout/activity_about.xml
T36-Internet/ToDo/app/src/main/res/layout/activity_about.xml
+29
-0
T36-Internet/ToDo/app/src/main/res/layout/activity_main.xml
T36-Internet/ToDo/app/src/main/res/layout/activity_main.xml
+30
-0
T36-Internet/ToDo/app/src/main/res/layout/todo_display.xml
T36-Internet/ToDo/app/src/main/res/layout/todo_display.xml
+85
-0
T36-Internet/ToDo/app/src/main/res/layout/todo_edit.xml
T36-Internet/ToDo/app/src/main/res/layout/todo_edit.xml
+60
-0
T36-Internet/ToDo/app/src/main/res/layout/todo_roster.xml
T36-Internet/ToDo/app/src/main/res/layout/todo_roster.xml
+44
-0
T36-Internet/ToDo/app/src/main/res/layout/todo_row.xml
T36-Internet/ToDo/app/src/main/res/layout/todo_row.xml
+50
-0
T36-Internet/ToDo/app/src/main/res/menu/actions.xml
T36-Internet/ToDo/app/src/main/res/menu/actions.xml
+17
-0
T36-Internet/ToDo/app/src/main/res/menu/actions_display.xml
T36-Internet/ToDo/app/src/main/res/menu/actions_display.xml
+10
-0
T36-Internet/ToDo/app/src/main/res/menu/actions_edit.xml
T36-Internet/ToDo/app/src/main/res/menu/actions_edit.xml
+15
-0
T36-Internet/ToDo/app/src/main/res/menu/actions_roster.xml
T36-Internet/ToDo/app/src/main/res/menu/actions_roster.xml
+48
-0
T36-Internet/ToDo/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
...t/ToDo/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
+5
-0
T36-Internet/ToDo/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
.../app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
+5
-0
T36-Internet/ToDo/app/src/main/res/mipmap-hdpi/ic_launcher.png
...nternet/ToDo/app/src/main/res/mipmap-hdpi/ic_launcher.png
+0
-0
T36-Internet/ToDo/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png
...o/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png
+0
-0
T36-Internet/ToDo/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
...t/ToDo/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
+0
-0
T36-Internet/ToDo/app/src/main/res/mipmap-mdpi/ic_launcher.png
...nternet/ToDo/app/src/main/res/mipmap-mdpi/ic_launcher.png
+0
-0
T36-Internet/ToDo/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png
...o/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png
+0
-0
T36-Internet/ToDo/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
...t/ToDo/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
+0
-0
T36-Internet/ToDo/app/src/main/res/mipmap-xhdpi/ic_launcher.png
...ternet/ToDo/app/src/main/res/mipmap-xhdpi/ic_launcher.png
+0
-0
T36-Internet/ToDo/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png
.../app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png
+0
-0
T36-Internet/ToDo/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
.../ToDo/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
+0
-0
T36-Internet/ToDo/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
...ernet/ToDo/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
+0
-0
T36-Internet/ToDo/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png
...app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png
+0
-0
T36-Internet/ToDo/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
...ToDo/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
+0
-0
T36-Internet/ToDo/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
...rnet/ToDo/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
+0
-0
T36-Internet/ToDo/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png
...pp/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png
+0
-0
T36-Internet/ToDo/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
...oDo/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
+0
-0
T36-Internet/ToDo/app/src/main/res/navigation/nav_graph.xml
T36-Internet/ToDo/app/src/main/res/navigation/nav_graph.xml
+49
-0
T36-Internet/ToDo/app/src/main/res/values/colors.xml
T36-Internet/ToDo/app/src/main/res/values/colors.xml
+6
-0
T36-Internet/ToDo/app/src/main/res/values/dimens.xml
T36-Internet/ToDo/app/src/main/res/values/dimens.xml
+5
-0
T36-Internet/ToDo/app/src/main/res/values/ic_launcher_background.xml
...t/ToDo/app/src/main/res/values/ic_launcher_background.xml
+4
-0
T36-Internet/ToDo/app/src/main/res/values/strings.xml
T36-Internet/ToDo/app/src/main/res/values/strings.xml
+33
-0
T36-Internet/ToDo/app/src/main/res/values/styles.xml
T36-Internet/ToDo/app/src/main/res/values/styles.xml
+24
-0
T36-Internet/ToDo/app/src/main/res/xml/prefs.xml
T36-Internet/ToDo/app/src/main/res/xml/prefs.xml
+10
-0
T36-Internet/ToDo/app/src/main/res/xml/provider_paths.xml
T36-Internet/ToDo/app/src/main/res/xml/provider_paths.xml
+4
-0
T36-Internet/ToDo/app/src/test/java/com/commonsware/todo/repo/ToDoRepositoryTest.kt
...test/java/com/commonsware/todo/repo/ToDoRepositoryTest.kt
+132
-0
T36-Internet/ToDo/app/src/test/java/com/commonsware/todo/ui/SingleModelMotorTest.kt
...test/java/com/commonsware/todo/ui/SingleModelMotorTest.kt
+46
-0
T36-Internet/ToDo/build.gradle
T36-Internet/ToDo/build.gradle
+36
-0
T36-Internet/ToDo/gradle.properties
T36-Internet/ToDo/gradle.properties
+21
-0
T36-Internet/ToDo/gradle/wrapper/gradle-wrapper.jar
T36-Internet/ToDo/gradle/wrapper/gradle-wrapper.jar
+0
-0
T36-Internet/ToDo/gradle/wrapper/gradle-wrapper.properties
T36-Internet/ToDo/gradle/wrapper/gradle-wrapper.properties
+6
-0
T36-Internet/ToDo/gradlew
T36-Internet/ToDo/gradlew
+172
-0
T36-Internet/ToDo/gradlew.bat
T36-Internet/ToDo/gradlew.bat
+84
-0
T36-Internet/ToDo/settings.gradle
T36-Internet/ToDo/settings.gradle
+1
-0
items.json
items.json
+16
-0
No files found.
T33-Report/ToDo/.gitignore
0 → 100644
View file @
432ba666
*.iml
.gradle
/local.properties
/.idea/caches
/.idea/libraries
/.idea/modules.xml
/.idea/workspace.xml
/.idea/navEditor.xml
/.idea/assetWizardSettings.xml
.DS_Store
/build
/captures
.externalNativeBuild
T33-Report/ToDo/app/.gitignore
0 → 100644
View file @
432ba666
/build
T33-Report/ToDo/app/build.gradle
0 → 100644
View file @
432ba666
apply
plugin:
'com.android.application'
apply
plugin:
'kotlin-android'
apply
plugin:
'kotlin-android-extensions'
apply
plugin:
'kotlin-kapt'
apply
plugin:
'androidx.navigation.safeargs.kotlin'
android
{
compileSdkVersion
28
defaultConfig
{
applicationId
"com.commonsware.todo"
minSdkVersion
21
targetSdkVersion
28
versionCode
1
versionName
"1.0"
testInstrumentationRunner
"androidx.test.runner.AndroidJUnitRunner"
}
buildTypes
{
release
{
minifyEnabled
false
proguardFiles
getDefaultProguardFile
(
'proguard-android-optimize.txt'
),
'proguard-rules.pro'
}
}
androidExtensions
{
experimental
=
true
}
dataBinding
{
enabled
=
true
}
compileOptions
{
sourceCompatibility
JavaVersion
.
VERSION_1_8
targetCompatibility
JavaVersion
.
VERSION_1_8
}
}
dependencies
{
implementation
"org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation
'androidx.appcompat:appcompat:1.0.2'
implementation
'androidx.core:core-ktx:1.0.2'
implementation
'androidx.constraintlayout:constraintlayout:1.1.3'
implementation
'androidx.recyclerview:recyclerview:1.0.0'
implementation
'androidx.fragment:fragment-ktx:1.0.0'
implementation
"androidx.lifecycle:lifecycle-livedata:2.0.0"
implementation
"androidx.lifecycle:lifecycle-viewmodel-ktx:2.1.0-beta01"
implementation
"androidx.navigation:navigation-fragment-ktx:$nav_version"
implementation
"androidx.navigation:navigation-ui-ktx:$nav_version"
implementation
"org.koin:koin-core:$koin_version"
implementation
"org.koin:koin-android:$koin_version"
implementation
"org.koin:koin-androidx-viewmodel:$koin_version"
implementation
"androidx.room:room-runtime:$room_version"
implementation
"androidx.room:room-coroutines:$room_version"
implementation
"com.github.jknack:handlebars:4.1.2"
kapt
"androidx.room:room-compiler:$room_version"
testImplementation
'junit:junit:4.12'
testImplementation
"androidx.arch.core:core-testing:2.0.0"
testImplementation
"org.amshove.kluent:kluent-android:1.49"
testImplementation
"org.mockito:mockito-inline:2.21.0"
testImplementation
"com.nhaarman.mockitokotlin2:mockito-kotlin:2.1.0"
testImplementation
'com.jraska.livedata:testing-ktx:1.1.0'
androidTestImplementation
'androidx.test.espresso:espresso-contrib:3.1.1'
androidTestImplementation
"androidx.arch.core:core-testing:2.0.0"
androidTestImplementation
'androidx.test.ext:junit:1.1.0'
}
T33-Report/ToDo/app/proguard-rules.pro
0 → 100644
View file @
432ba666
# Add project specific ProGuard rules here.
#
You
can
control
the
set
of
applied
configuration
files
using
the
#
proguardFiles
setting
in
build
.
gradle
.
#
#
For
more
details
,
see
#
http
://
developer
.
android
.
com
/
guide
/
developing
/
tools
/
proguard
.
html
#
If
your
project
uses
WebView
with
JS
,
uncomment
the
following
#
and
specify
the
fully
qualified
class
name
to
the
JavaScript
interface
#
class
:
#-
keepclassmembers
class
fqcn
.
of
.
javascript
.
interface
.
for
.
webview
{
#
public
*
;
#
}
#
Uncomment
this
to
preserve
the
line
number
information
for
#
debugging
stack
traces
.
#-
keepattributes
SourceFile
,
LineNumberTable
#
If
you
keep
the
line
number
information
,
uncomment
this
to
#
hide
the
original
source
file
name
.
#-
renamesourcefileattribute
SourceFile
T33-Report/ToDo/app/src/androidTest/java/com/commonsware/todo/ui/roster/RosterListFragmentTest.kt
0 → 100644
View file @
432ba666
package
com.commonsware.todo.ui.roster
import
androidx.test.core.app.ActivityScenario
import
androidx.test.espresso.Espresso.onView
import
androidx.test.espresso.assertion.ViewAssertions.matches
import
androidx.test.espresso.matcher.ViewMatchers.hasChildCount
import
androidx.test.espresso.matcher.ViewMatchers.withId
import
androidx.test.ext.junit.runners.AndroidJUnit4
import
androidx.test.platform.app.InstrumentationRegistry
import
com.commonsware.todo.R
import
com.commonsware.todo.repo.ToDoDatabase
import
com.commonsware.todo.repo.ToDoModel
import
com.commonsware.todo.repo.ToDoRepository
import
com.commonsware.todo.ui.MainActivity
import
kotlinx.coroutines.runBlocking
import
org.junit.Before
import
org.junit.Test
import
org.junit.runner.RunWith
import
org.koin.dsl.module.module
import
org.koin.standalone.StandAloneContext.loadKoinModules
@RunWith
(
AndroidJUnit4
::
class
)
class
RosterListFragmentTest
{
private
lateinit
var
repo
:
ToDoRepository
private
val
items
=
listOf
(
ToDoModel
(
"this is a test"
),
ToDoModel
(
"this is another test"
),
ToDoModel
(
"this is... wait for it... yet another test"
)
)
@Before
fun
setUp
()
{
val
context
=
InstrumentationRegistry
.
getInstrumentation
().
targetContext
val
db
=
ToDoDatabase
.
newTestInstance
(
context
)
repo
=
ToDoRepository
(
db
.
todoStore
())
loadKoinModules
(
module
{
single
(
override
=
true
)
{
repo
}
})
runBlocking
{
items
.
forEach
{
repo
.
save
(
it
)
}
}
}
@Test
fun
testListContents
()
{
ActivityScenario
.
launch
(
MainActivity
::
class
.
java
)
onView
(
withId
(
R
.
id
.
items
)).
check
(
matches
(
hasChildCount
(
3
)))
}
}
T33-Report/ToDo/app/src/main/AndroidManifest.xml
0 → 100644
View file @
432ba666
<?xml version="1.0" encoding="utf-8"?>
<manifest
package=
"com.commonsware.todo"
xmlns:android=
"http://schemas.android.com/apk/res/android"
>
<supports-screens
android:largeScreens=
"true"
android:normalScreens=
"true"
android:smallScreens=
"true"
android:xlargeScreens=
"true"
/>
<application
android:name=
".ToDoApp"
android:allowBackup=
"false"
android:icon=
"@mipmap/ic_launcher"
android:label=
"@string/app_name"
android:roundIcon=
"@mipmap/ic_launcher_round"
android:supportsRtl=
"true"
android:theme=
"@style/AppTheme"
>
<activity
android:name=
".ui.AboutActivity"
></activity>
<activity
android:name=
".ui.MainActivity"
>
<intent-filter>
<action
android:name=
"android.intent.action.MAIN"
/>
<category
android:name=
"android.intent.category.LAUNCHER"
/>
</intent-filter>
</activity>
</application>
</manifest>
\ No newline at end of file
T33-Report/ToDo/app/src/main/assets/about.html
0 → 100644
View file @
432ba666
<h1>
About This App
</h1>
<p>
This app is cool!
</p>
<p>
No, really
—
this app is awesome!
</p>
<div>
.
<br/>
.
<br/>
.
<br/>
.
</div>
<p>
OK, this app isn't all that much. But, hey, it's mine!
</p>
\ No newline at end of file
T33-Report/ToDo/app/src/main/java/com/commonsware/todo/ToDoApp.kt
0 → 100644
View file @
432ba666
package
com.commonsware.todo
import
android.app.Application
import
android.text.format.DateUtils
import
com.commonsware.todo.repo.ToDoDatabase
import
com.commonsware.todo.repo.ToDoRepository
import
com.commonsware.todo.report.RosterReport
import
com.commonsware.todo.ui.SingleModelMotor
import
com.commonsware.todo.ui.roster.RosterMotor
import
com.github.jknack.handlebars.Handlebars
import
com.github.jknack.handlebars.Helper
import
org.koin.android.ext.android.startKoin
import
org.koin.android.ext.koin.androidContext
import
org.koin.androidx.viewmodel.ext.koin.viewModel
import
org.koin.dsl.module.module
import
java.util.*
class
ToDoApp
:
Application
()
{
private
val
koinModule
=
module
{
single
{
ToDoDatabase
.
newInstance
(
androidContext
())
}
single
{
val
db
:
ToDoDatabase
=
get
()
ToDoRepository
(
db
.
todoStore
())
}
single
{
Handlebars
().
apply
{
registerHelper
(
"dateFormat"
,
Helper
<
Calendar
>
{
value
,
_
->
DateUtils
.
getRelativeDateTimeString
(
androidContext
(),
value
.
timeInMillis
,
DateUtils
.
MINUTE_IN_MILLIS
,
DateUtils
.
WEEK_IN_MILLIS
,
0
)
})
}
}
single
{
RosterReport
(
androidContext
(),
get
())
}
viewModel
{
RosterMotor
(
get
(),
get
())
}
viewModel
{
(
modelId
:
String
)
->
SingleModelMotor
(
get
(),
modelId
)
}
}
override
fun
onCreate
()
{
super
.
onCreate
()
startKoin
(
this
,
listOf
(
koinModule
))
}
}
\ No newline at end of file
T33-Report/ToDo/app/src/main/java/com/commonsware/todo/repo/ToDoDatabase.kt
0 → 100644
View file @
432ba666
package
com.commonsware.todo.repo
import
android.content.Context
import
androidx.room.Database
import
androidx.room.Room
import
androidx.room.RoomDatabase
import
androidx.room.TypeConverters
private
const
val
DB_NAME
=
"stuff.db"
@Database
(
entities
=
[
ToDoEntity
::
class
],
version
=
1
)
@TypeConverters
(
TypeTransmogrifier
::
class
)
abstract
class
ToDoDatabase
:
RoomDatabase
()
{
abstract
fun
todoStore
():
ToDoEntity
.
Store
companion
object
{
fun
newInstance
(
context
:
Context
)
=
Room
.
databaseBuilder
(
context
,
ToDoDatabase
::
class
.
java
,
DB_NAME
).
build
()
fun
newTestInstance
(
context
:
Context
)
=
Room
.
inMemoryDatabaseBuilder
(
context
,
ToDoDatabase
::
class
.
java
).
build
()
}
}
T33-Report/ToDo/app/src/main/java/com/commonsware/todo/repo/ToDoEntity.kt
0 → 100644
View file @
432ba666
package
com.commonsware.todo.repo
import
androidx.lifecycle.LiveData
import
androidx.room.*
import
java.util.*
@Entity
(
tableName
=
"todos"
,
indices
=
[
Index
(
value
=
[
"id"
])])
data class
ToDoEntity
(
val
description
:
String
,
@
field
:
PrimaryKey
val
id
:
String
=
UUID
.
randomUUID
().
toString
(),
val
notes
:
String
=
""
,
val
createdOn
:
Calendar
=
Calendar
.
getInstance
(),
val
isCompleted
:
Boolean
=
false
)
{
constructor
(
model
:
ToDoModel
):
this
(
id
=
model
.
id
,
description
=
model
.
description
,
isCompleted
=
model
.
isCompleted
,
notes
=
model
.
notes
,
createdOn
=
model
.
createdOn
)
fun
toModel
():
ToDoModel
{
return
ToDoModel
(
id
=
id
,
description
=
description
,
isCompleted
=
isCompleted
,
notes
=
notes
,
createdOn
=
createdOn
)
}
@Dao
interface
Store
{
@Query
(
"SELECT * FROM todos ORDER BY description"
)
fun
all
():
LiveData
<
List
<
ToDoEntity
>>
@Query
(
"SELECT * FROM todos WHERE isCompleted = :isCompleted ORDER BY description"
)
fun
filtered
(
isCompleted
:
Boolean
):
LiveData
<
List
<
ToDoEntity
>>
@Query
(
"SELECT * FROM todos WHERE id = :modelId ORDER BY description"
)
fun
find
(
modelId
:
String
):
LiveData
<
ToDoEntity
>
@Insert
(
onConflict
=
OnConflictStrategy
.
REPLACE
)
suspend
fun
save
(
vararg
entities
:
ToDoEntity
)
@Delete
suspend
fun
delete
(
vararg
entities
:
ToDoEntity
)
}
}
\ No newline at end of file
T33-Report/ToDo/app/src/main/java/com/commonsware/todo/repo/ToDoModel.kt
0 → 100644
View file @
432ba666
package
com.commonsware.todo.repo
import
java.util.*
data class
ToDoModel
(
val
description
:
String
,
val
id
:
String
=
UUID
.
randomUUID
().
toString
(),
val
isCompleted
:
Boolean
=
false
,
val
notes
:
String
=
""
,
val
createdOn
:
Calendar
=
Calendar
.
getInstance
()
)
{
}
\ No newline at end of file
T33-Report/ToDo/app/src/main/java/com/commonsware/todo/repo/ToDoRepository.kt
0 → 100644
View file @
432ba666
package
com.commonsware.todo.repo
import
androidx.lifecycle.LiveData
import
androidx.lifecycle.Transformations
enum
class
FilterMode
{
ALL
,
OUTSTANDING
,
COMPLETED
}
class
ToDoRepository
(
private
val
store
:
ToDoEntity
.
Store
)
{
fun
items
(
filterMode
:
FilterMode
=
FilterMode
.
ALL
):
LiveData
<
List
<
ToDoModel
>>
=
Transformations
.
map
(
filteredEntities
(
filterMode
))
{
all
->
all
.
map
{
it
.
toModel
()
}
}
fun
find
(
id
:
String
):
LiveData
<
ToDoModel
>
=
Transformations
.
map
(
store
.
find
(
id
))
{
it
.
toModel
()
}
suspend
fun
save
(
model
:
ToDoModel
)
{
store
.
save
(
ToDoEntity
(
model
))
}
suspend
fun
delete
(
model
:
ToDoModel
)
{
store
.
delete
(
ToDoEntity
(
model
))
}
private
fun
filteredEntities
(
filterMode
:
FilterMode
)
=
when
(
filterMode
)
{
FilterMode
.
ALL
->
store
.
all
()
FilterMode
.
OUTSTANDING
->
store
.
filtered
(
isCompleted
=
false
)
FilterMode
.
COMPLETED
->
store
.
filtered
(
isCompleted
=
true
)
}
}
\ No newline at end of file
T33-Report/ToDo/app/src/main/java/com/commonsware/todo/repo/TypeTransmogrifier.kt
0 → 100644
View file @
432ba666
package
com.commonsware.todo.repo
import
androidx.room.TypeConverter
import
java.util.*
class
TypeTransmogrifier
{
@TypeConverter
fun
fromCalendar
(
date
:
Calendar
?):
Long
?
=
date
?.
timeInMillis
@TypeConverter
fun
toCalendar
(
millisSinceEpoch
:
Long
?):
Calendar
?
=
millisSinceEpoch
?.
let
{
Calendar
.
getInstance
().
apply
{
timeInMillis
=
millisSinceEpoch
}
}
}
\ No newline at end of file
T33-Report/ToDo/app/src/main/java/com/commonsware/todo/report/RosterReport.kt
0 → 100644
View file @
432ba666
package
com.commonsware.todo.report
import
android.content.Context
import
android.net.Uri
import
com.commonsware.todo.R
import
com.commonsware.todo.repo.ToDoModel
import
com.github.jknack.handlebars.Handlebars
import
kotlinx.coroutines.Dispatchers
import
kotlinx.coroutines.withContext
import
java.io.OutputStreamWriter
class
RosterReport
(
private
val
context
:
Context
,
engine
:
Handlebars
)
{
private
val
template
=
engine
.
compileInline
(
context
.
getString
(
R
.
string
.
report_template
))
suspend
fun
generate
(
content
:
List
<
ToDoModel
>,
doc
:
Uri
)
{
withContext
(
Dispatchers
.
IO
)
{
OutputStreamWriter
(
context
.
contentResolver
.
openOutputStream
(
doc
)).
use
{
osw
->
osw
.
write
(
template
.
apply
(
content
))
osw
.
flush
()
}
}
}
}
\ No newline at end of file
T33-Report/ToDo/app/src/main/java/com/commonsware/todo/ui/AboutActivity.kt
0 → 100644
View file @
432ba666
package
com.commonsware.todo.ui
import
androidx.appcompat.app.AppCompatActivity
import
android.os.Bundle
import
com.commonsware.todo.R
import
kotlinx.android.synthetic.main.activity_about.*
class
AboutActivity
:
AppCompatActivity
()
{
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
super
.
onCreate
(
savedInstanceState
)
setContentView
(
R
.
layout
.
activity_about
)
toolbar
.
title
=
getString
(
R
.
string
.
app_name
)
about
.
loadUrl
(
"file:///android_asset/about.html"
)
}
}
T33-Report/ToDo/app/src/main/java/com/commonsware/todo/ui/MainActivity.kt
0 → 100644
View file @
432ba666
package
com.commonsware.todo.ui
import
android.content.Intent
import
android.os.Bundle
import
android.view.Menu
import
android.view.MenuItem
import
androidx.appcompat.app.AppCompatActivity
import
androidx.navigation.findNavController
import
androidx.navigation.ui.AppBarConfiguration
import
androidx.navigation.ui.NavigationUI.navigateUp
import
androidx.navigation.ui.setupActionBarWithNavController
import
com.commonsware.todo.R
import
kotlinx.android.synthetic.main.activity_main.*
class
MainActivity
:
AppCompatActivity
()
{
private
lateinit
var
appBarConfiguration
:
AppBarConfiguration
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
super
.
onCreate
(
savedInstanceState
)
setContentView
(
R
.
layout
.
activity_main
)
setSupportActionBar
(
toolbar
)
findNavController
(
R
.
id
.
nav_host
).
let
{
nav
->
appBarConfiguration
=
AppBarConfiguration
(
nav
.
graph
)
setupActionBarWithNavController
(
nav
,
appBarConfiguration
)
}
}
override
fun
onCreateOptionsMenu
(
menu
:
Menu
):
Boolean
{
menuInflater
.
inflate
(
R
.
menu
.
actions
,
menu
)
return
super
.
onCreateOptionsMenu
(
menu
)
}
override
fun
onOptionsItemSelected
(
item
:
MenuItem
):
Boolean
{
if
(
item
.
itemId
==
R
.
id
.
about
)
{
startActivity
(
Intent
(
this
,
AboutActivity
::
class
.
java
))
return
true
}
return
super
.
onOptionsItemSelected
(
item
)
}
override
fun
onSupportNavigateUp
()
=
navigateUp
(
findNavController
(
R
.
id
.
nav_host
),
appBarConfiguration
)
}
T33-Report/ToDo/app/src/main/java/com/commonsware/todo/ui/SingleModelMotor.kt
0 → 100644
View file @
432ba666
package
com.commonsware.todo.ui
import
androidx.lifecycle.*
import
com.commonsware.todo.repo.ToDoModel
import
com.commonsware.todo.repo.ToDoRepository
import
kotlinx.coroutines.Dispatchers
import
kotlinx.coroutines.launch
import
kotlin.coroutines.CoroutineContext
class
SingleModelViewState
(
val
item
:
ToDoModel
?
=
null
)
class
SingleModelMotor
(
private
val
repo
:
ToDoRepository
,
modelId
:
String
?,
private
val
uiContext
:
CoroutineContext
=
Dispatchers
.
Main
)
:
ViewModel
()
{
val
states
:
LiveData
<
SingleModelViewState
>
=
modelId
?.
let
{
Transformations
.
map
(
repo
.
find
(
modelId
))
{
SingleModelViewState
(
it
)
}
}
?:
MutableLiveData
<
SingleModelViewState
>().
apply
{
value
=
SingleModelViewState
(
null
)
}
fun
save
(
model
:
ToDoModel
)
{
viewModelScope
.
launch
(
uiContext
)
{
repo
.
save
(
model
)
}
}
fun
delete
(
model
:
ToDoModel
)
{
viewModelScope
.
launch
(
uiContext
)
{
repo
.
delete
(
model
)
}
}
}
\ No newline at end of file
T33-Report/ToDo/app/src/main/java/com/commonsware/todo/ui/display/DisplayFragment.kt
0 → 100644
View file @
432ba666
package
com.commonsware.todo.ui.display
import
android.os.Bundle
import
android.view.*
import
androidx.fragment.app.Fragment
import
androidx.lifecycle.Observer
import
androidx.navigation.fragment.findNavController
import
androidx.navigation.fragment.navArgs
import
com.commonsware.todo.R
import
com.commonsware.todo.databinding.TodoDisplayBinding
import
com.commonsware.todo.ui.SingleModelMotor