From c142118898d07618b84edd626b7f023b86eadfef Mon Sep 17 00:00:00 2001 From: Grisha Kruglov Date: Wed, 13 Dec 2017 10:19:09 -0500 Subject: [PATCH] Android Toodle WIP (#1) * Android app * rust portion of the app * correct symlinks for libtoodle.so, build script * Don't ignore create_item result * Move ctypes into their own module * More rusty result mapping; moving itemscbox into ctypes * remove comment * rename set to list --- android/Greetings/.idea/modules.xml | 9 -- .../mozilla/greetings/GreetingsActivity.java | 22 ---- .../com/mozilla/greetings/RustGreetings.java | 14 --- .../src/main/jniLibs/arm64/libgreetings.so | 1 - .../src/main/jniLibs/armeabi/libgreetings.so | 1 - .../app/src/main/jniLibs/x86/libgreetings.so | 1 - .../main/res/layout/activity_greetings.xml | 18 --- .../app/src/main/res/values/strings.xml | 3 - .../app/src/main/res/values/styles.xml | 11 -- android/{Greetings => Toodle}/.gitignore | 0 .../{Greetings => Toodle}/.idea/compiler.xml | 0 .../.idea/copyright/profiles_settings.xml | 0 .../{Greetings => Toodle}/.idea/gradle.xml | 0 android/{Greetings => Toodle}/.idea/misc.xml | 15 +-- android/Toodle/.idea/modules.xml | 11 ++ .../.idea/runConfigurations.xml | 0 android/Toodle/.idea/vcs.xml | 6 + android/{Greetings => Toodle}/app/.gitignore | 0 .../{Greetings => Toodle}/app/build.gradle | 12 +- .../app/proguard-rules.pro | 0 .../toodle}/ExampleInstrumentedTest.java | 2 +- .../app/src/main/AndroidManifest.xml | 13 +- .../main/java/com/mozilla/toodle/Item.java | 67 +++++++++++ .../java/com/mozilla/toodle/ListAdapter.java | 111 ++++++++++++++++++ .../com/mozilla/toodle/NewItemActivity.java | 46 ++++++++ .../com/mozilla/toodle/ToodleActivity.java | 42 +++++++ .../java/com/mozilla/toodle/rust/JNA.java | 29 +++++ .../com/mozilla/toodle/rust/ListManager.java | 35 ++++++ .../com/mozilla/toodle/rust/NativeItem.java | 30 +++++ .../mozilla/toodle/rust/NativeItemSet.java | 37 ++++++ .../toodle/rust/NativeItemUuidsCallback.java | 7 ++ .../toodle/rust/NativeItemsCallback.java | 7 ++ .../rust/NativeItemsChangedCallback.java | 12 ++ .../com/mozilla/toodle/rust/RustObject.java | 14 +++ .../java/com/mozilla/toodle/rust/Toodle.java | 31 +++++ .../java/com/mozilla/toodle/rust/Uuid.java | 28 +++++ .../java/com/mozilla/toodle/rust/UuidSet.java | 35 ++++++ .../src/main/jniLibs/arm64/libjnidispatch.so | Bin 0 -> 101976 bytes .../app/src/main/jniLibs/arm64/libtoodle.so | 1 + .../main/jniLibs/armeabi/libjnidispatch.so | Bin 0 -> 101596 bytes .../app/src/main/jniLibs/armeabi/libtoodle.so | 1 + .../src/main/jniLibs/x86/libjnidispatch.so | Bin 0 -> 99392 bytes .../app/src/main/jniLibs/x86/libtoodle.so | 1 + .../res/drawable-hdpi/ic_plus_black_18dp.png | Bin 0 -> 451 bytes .../res/drawable-hdpi/ic_plus_black_24dp.png | Bin 0 -> 446 bytes .../res/drawable-hdpi/ic_plus_black_36dp.png | Bin 0 -> 491 bytes .../res/drawable-hdpi/ic_plus_black_48dp.png | Bin 0 -> 460 bytes .../drawable-hdpi/ic_plus_grey600_18dp.png | Bin 0 -> 491 bytes .../drawable-hdpi/ic_plus_grey600_24dp.png | Bin 0 -> 489 bytes .../drawable-hdpi/ic_plus_grey600_36dp.png | Bin 0 -> 525 bytes .../drawable-hdpi/ic_plus_grey600_48dp.png | Bin 0 -> 473 bytes .../res/drawable-hdpi/ic_plus_white_18dp.png | Bin 0 -> 435 bytes .../res/drawable-hdpi/ic_plus_white_24dp.png | Bin 0 -> 453 bytes .../res/drawable-hdpi/ic_plus_white_36dp.png | Bin 0 -> 500 bytes .../res/drawable-hdpi/ic_plus_white_48dp.png | Bin 0 -> 470 bytes .../res/drawable-mdpi/ic_plus_black_18dp.png | Bin 0 -> 386 bytes .../res/drawable-mdpi/ic_plus_black_24dp.png | Bin 0 -> 369 bytes .../res/drawable-mdpi/ic_plus_black_36dp.png | Bin 0 -> 446 bytes .../res/drawable-mdpi/ic_plus_black_48dp.png | Bin 0 -> 401 bytes .../drawable-mdpi/ic_plus_grey600_18dp.png | Bin 0 -> 407 bytes .../drawable-mdpi/ic_plus_grey600_24dp.png | Bin 0 -> 379 bytes .../drawable-mdpi/ic_plus_grey600_36dp.png | Bin 0 -> 489 bytes .../drawable-mdpi/ic_plus_grey600_48dp.png | Bin 0 -> 414 bytes .../res/drawable-mdpi/ic_plus_white_18dp.png | Bin 0 -> 393 bytes .../res/drawable-mdpi/ic_plus_white_24dp.png | Bin 0 -> 373 bytes .../res/drawable-mdpi/ic_plus_white_36dp.png | Bin 0 -> 453 bytes .../res/drawable-mdpi/ic_plus_white_48dp.png | Bin 0 -> 411 bytes .../res/drawable-xhdpi/ic_plus_black_18dp.png | Bin 0 -> 446 bytes .../res/drawable-xhdpi/ic_plus_black_24dp.png | Bin 0 -> 401 bytes .../res/drawable-xhdpi/ic_plus_black_36dp.png | Bin 0 -> 460 bytes .../res/drawable-xhdpi/ic_plus_black_48dp.png | Bin 0 -> 508 bytes .../drawable-xhdpi/ic_plus_grey600_18dp.png | Bin 0 -> 489 bytes .../drawable-xhdpi/ic_plus_grey600_24dp.png | Bin 0 -> 414 bytes .../drawable-xhdpi/ic_plus_grey600_36dp.png | Bin 0 -> 473 bytes .../drawable-xhdpi/ic_plus_grey600_48dp.png | Bin 0 -> 518 bytes .../res/drawable-xhdpi/ic_plus_white_18dp.png | Bin 0 -> 453 bytes .../res/drawable-xhdpi/ic_plus_white_24dp.png | Bin 0 -> 411 bytes .../res/drawable-xhdpi/ic_plus_white_36dp.png | Bin 0 -> 470 bytes .../res/drawable-xhdpi/ic_plus_white_48dp.png | Bin 0 -> 515 bytes .../drawable-xxhdpi/ic_plus_black_18dp.png | Bin 0 -> 491 bytes .../drawable-xxhdpi/ic_plus_black_24dp.png | Bin 0 -> 460 bytes .../drawable-xxhdpi/ic_plus_black_36dp.png | Bin 0 -> 604 bytes .../drawable-xxhdpi/ic_plus_black_48dp.png | Bin 0 -> 615 bytes .../drawable-xxhdpi/ic_plus_grey600_18dp.png | Bin 0 -> 525 bytes .../drawable-xxhdpi/ic_plus_grey600_24dp.png | Bin 0 -> 473 bytes .../drawable-xxhdpi/ic_plus_grey600_36dp.png | Bin 0 -> 663 bytes .../drawable-xxhdpi/ic_plus_grey600_48dp.png | Bin 0 -> 622 bytes .../drawable-xxhdpi/ic_plus_white_18dp.png | Bin 0 -> 500 bytes .../drawable-xxhdpi/ic_plus_white_24dp.png | Bin 0 -> 470 bytes .../drawable-xxhdpi/ic_plus_white_36dp.png | Bin 0 -> 622 bytes .../drawable-xxhdpi/ic_plus_white_48dp.png | Bin 0 -> 619 bytes .../drawable-xxxhdpi/ic_plus_black_18dp.png | Bin 0 -> 460 bytes .../drawable-xxxhdpi/ic_plus_black_24dp.png | Bin 0 -> 508 bytes .../drawable-xxxhdpi/ic_plus_black_36dp.png | Bin 0 -> 615 bytes .../drawable-xxxhdpi/ic_plus_black_48dp.png | Bin 0 -> 735 bytes .../drawable-xxxhdpi/ic_plus_grey600_18dp.png | Bin 0 -> 473 bytes .../drawable-xxxhdpi/ic_plus_grey600_24dp.png | Bin 0 -> 518 bytes .../drawable-xxxhdpi/ic_plus_grey600_36dp.png | Bin 0 -> 622 bytes .../drawable-xxxhdpi/ic_plus_grey600_48dp.png | Bin 0 -> 750 bytes .../drawable-xxxhdpi/ic_plus_white_18dp.png | Bin 0 -> 470 bytes .../drawable-xxxhdpi/ic_plus_white_24dp.png | Bin 0 -> 515 bytes .../drawable-xxxhdpi/ic_plus_white_36dp.png | Bin 0 -> 619 bytes .../drawable-xxxhdpi/ic_plus_white_48dp.png | Bin 0 -> 747 bytes .../Toodle/app/src/main/res/drawable/plus.xml | 8 ++ .../src/main/res/layout/activity_new_item.xml | 52 ++++++++ .../src/main/res/layout/activity_toodle.xml | 28 +++++ .../Toodle/app/src/main/res/layout/item.xml | 20 ++++ .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin .../res/mipmap-hdpi/ic_launcher_round.png | Bin .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin .../res/mipmap-mdpi/ic_launcher_round.png | Bin .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin .../res/mipmap-xhdpi/ic_launcher_round.png | Bin .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin .../app/src/main/res/values/colors.xml | 0 .../Toodle/app/src/main/res/values/dimens.xml | 3 + .../app/src/main/res/values/strings.xml | 4 + .../Toodle/app/src/main/res/values/styles.xml | 15 +++ .../com/mozilla/toodle}/ExampleUnitTest.java | 2 +- android/{Greetings => Toodle}/build.gradle | 6 +- .../{Greetings => Toodle}/gradle.properties | 0 .../gradle/wrapper/gradle-wrapper.jar | Bin .../gradle/wrapper/gradle-wrapper.properties | 4 +- android/{Greetings => Toodle}/gradlew | 0 android/{Greetings => Toodle}/gradlew.bat | 0 android/{Greetings => Toodle}/settings.gradle | 0 rust/android_build_all.sh | 3 + rust/ffi-utils/src/android_ffi.rs | 11 ++ rust/ffi-utils/src/lib.rs | 26 ++++ rust/list/src/ctypes.rs | 76 ++++++++++++ rust/list/src/items.rs | 12 ++ rust/list/src/lib.rs | 93 ++++++++++++++- 135 files changed, 927 insertions(+), 109 deletions(-) delete mode 100644 android/Greetings/.idea/modules.xml delete mode 100644 android/Greetings/app/src/main/java/com/mozilla/greetings/GreetingsActivity.java delete mode 100644 android/Greetings/app/src/main/java/com/mozilla/greetings/RustGreetings.java delete mode 120000 android/Greetings/app/src/main/jniLibs/arm64/libgreetings.so delete mode 120000 android/Greetings/app/src/main/jniLibs/armeabi/libgreetings.so delete mode 120000 android/Greetings/app/src/main/jniLibs/x86/libgreetings.so delete mode 100644 android/Greetings/app/src/main/res/layout/activity_greetings.xml delete mode 100644 android/Greetings/app/src/main/res/values/strings.xml delete mode 100644 android/Greetings/app/src/main/res/values/styles.xml rename android/{Greetings => Toodle}/.gitignore (100%) rename android/{Greetings => Toodle}/.idea/compiler.xml (100%) rename android/{Greetings => Toodle}/.idea/copyright/profiles_settings.xml (100%) rename android/{Greetings => Toodle}/.idea/gradle.xml (100%) rename android/{Greetings => Toodle}/.idea/misc.xml (69%) create mode 100644 android/Toodle/.idea/modules.xml rename android/{Greetings => Toodle}/.idea/runConfigurations.xml (100%) create mode 100644 android/Toodle/.idea/vcs.xml rename android/{Greetings => Toodle}/app/.gitignore (100%) rename android/{Greetings => Toodle}/app/build.gradle (71%) rename android/{Greetings => Toodle}/app/proguard-rules.pro (100%) rename android/{Greetings/app/src/androidTest/java/com/mozilla/greetings => Toodle/app/src/androidTest/java/com/mozilla/toodle}/ExampleInstrumentedTest.java (95%) rename android/{Greetings => Toodle}/app/src/main/AndroidManifest.xml (55%) create mode 100644 android/Toodle/app/src/main/java/com/mozilla/toodle/Item.java create mode 100644 android/Toodle/app/src/main/java/com/mozilla/toodle/ListAdapter.java create mode 100644 android/Toodle/app/src/main/java/com/mozilla/toodle/NewItemActivity.java create mode 100644 android/Toodle/app/src/main/java/com/mozilla/toodle/ToodleActivity.java create mode 100644 android/Toodle/app/src/main/java/com/mozilla/toodle/rust/JNA.java create mode 100644 android/Toodle/app/src/main/java/com/mozilla/toodle/rust/ListManager.java create mode 100644 android/Toodle/app/src/main/java/com/mozilla/toodle/rust/NativeItem.java create mode 100644 android/Toodle/app/src/main/java/com/mozilla/toodle/rust/NativeItemSet.java create mode 100644 android/Toodle/app/src/main/java/com/mozilla/toodle/rust/NativeItemUuidsCallback.java create mode 100644 android/Toodle/app/src/main/java/com/mozilla/toodle/rust/NativeItemsCallback.java create mode 100644 android/Toodle/app/src/main/java/com/mozilla/toodle/rust/NativeItemsChangedCallback.java create mode 100644 android/Toodle/app/src/main/java/com/mozilla/toodle/rust/RustObject.java create mode 100644 android/Toodle/app/src/main/java/com/mozilla/toodle/rust/Toodle.java create mode 100644 android/Toodle/app/src/main/java/com/mozilla/toodle/rust/Uuid.java create mode 100644 android/Toodle/app/src/main/java/com/mozilla/toodle/rust/UuidSet.java create mode 100644 android/Toodle/app/src/main/jniLibs/arm64/libjnidispatch.so create mode 120000 android/Toodle/app/src/main/jniLibs/arm64/libtoodle.so create mode 100644 android/Toodle/app/src/main/jniLibs/armeabi/libjnidispatch.so create mode 120000 android/Toodle/app/src/main/jniLibs/armeabi/libtoodle.so create mode 100644 android/Toodle/app/src/main/jniLibs/x86/libjnidispatch.so create mode 120000 android/Toodle/app/src/main/jniLibs/x86/libtoodle.so create mode 100644 android/Toodle/app/src/main/res/drawable-hdpi/ic_plus_black_18dp.png create mode 100644 android/Toodle/app/src/main/res/drawable-hdpi/ic_plus_black_24dp.png create mode 100644 android/Toodle/app/src/main/res/drawable-hdpi/ic_plus_black_36dp.png create mode 100644 android/Toodle/app/src/main/res/drawable-hdpi/ic_plus_black_48dp.png create mode 100644 android/Toodle/app/src/main/res/drawable-hdpi/ic_plus_grey600_18dp.png create mode 100644 android/Toodle/app/src/main/res/drawable-hdpi/ic_plus_grey600_24dp.png create mode 100644 android/Toodle/app/src/main/res/drawable-hdpi/ic_plus_grey600_36dp.png create mode 100644 android/Toodle/app/src/main/res/drawable-hdpi/ic_plus_grey600_48dp.png create mode 100644 android/Toodle/app/src/main/res/drawable-hdpi/ic_plus_white_18dp.png create mode 100644 android/Toodle/app/src/main/res/drawable-hdpi/ic_plus_white_24dp.png create mode 100644 android/Toodle/app/src/main/res/drawable-hdpi/ic_plus_white_36dp.png create mode 100644 android/Toodle/app/src/main/res/drawable-hdpi/ic_plus_white_48dp.png create mode 100644 android/Toodle/app/src/main/res/drawable-mdpi/ic_plus_black_18dp.png create mode 100644 android/Toodle/app/src/main/res/drawable-mdpi/ic_plus_black_24dp.png create mode 100644 android/Toodle/app/src/main/res/drawable-mdpi/ic_plus_black_36dp.png create mode 100644 android/Toodle/app/src/main/res/drawable-mdpi/ic_plus_black_48dp.png create mode 100644 android/Toodle/app/src/main/res/drawable-mdpi/ic_plus_grey600_18dp.png create mode 100644 android/Toodle/app/src/main/res/drawable-mdpi/ic_plus_grey600_24dp.png create mode 100644 android/Toodle/app/src/main/res/drawable-mdpi/ic_plus_grey600_36dp.png create mode 100644 android/Toodle/app/src/main/res/drawable-mdpi/ic_plus_grey600_48dp.png create mode 100644 android/Toodle/app/src/main/res/drawable-mdpi/ic_plus_white_18dp.png create mode 100644 android/Toodle/app/src/main/res/drawable-mdpi/ic_plus_white_24dp.png create mode 100644 android/Toodle/app/src/main/res/drawable-mdpi/ic_plus_white_36dp.png create mode 100644 android/Toodle/app/src/main/res/drawable-mdpi/ic_plus_white_48dp.png create mode 100644 android/Toodle/app/src/main/res/drawable-xhdpi/ic_plus_black_18dp.png create mode 100644 android/Toodle/app/src/main/res/drawable-xhdpi/ic_plus_black_24dp.png create mode 100644 android/Toodle/app/src/main/res/drawable-xhdpi/ic_plus_black_36dp.png create mode 100644 android/Toodle/app/src/main/res/drawable-xhdpi/ic_plus_black_48dp.png create mode 100644 android/Toodle/app/src/main/res/drawable-xhdpi/ic_plus_grey600_18dp.png create mode 100644 android/Toodle/app/src/main/res/drawable-xhdpi/ic_plus_grey600_24dp.png create mode 100644 android/Toodle/app/src/main/res/drawable-xhdpi/ic_plus_grey600_36dp.png create mode 100644 android/Toodle/app/src/main/res/drawable-xhdpi/ic_plus_grey600_48dp.png create mode 100644 android/Toodle/app/src/main/res/drawable-xhdpi/ic_plus_white_18dp.png create mode 100644 android/Toodle/app/src/main/res/drawable-xhdpi/ic_plus_white_24dp.png create mode 100644 android/Toodle/app/src/main/res/drawable-xhdpi/ic_plus_white_36dp.png create mode 100644 android/Toodle/app/src/main/res/drawable-xhdpi/ic_plus_white_48dp.png create mode 100644 android/Toodle/app/src/main/res/drawable-xxhdpi/ic_plus_black_18dp.png create mode 100644 android/Toodle/app/src/main/res/drawable-xxhdpi/ic_plus_black_24dp.png create mode 100644 android/Toodle/app/src/main/res/drawable-xxhdpi/ic_plus_black_36dp.png create mode 100644 android/Toodle/app/src/main/res/drawable-xxhdpi/ic_plus_black_48dp.png create mode 100644 android/Toodle/app/src/main/res/drawable-xxhdpi/ic_plus_grey600_18dp.png create mode 100644 android/Toodle/app/src/main/res/drawable-xxhdpi/ic_plus_grey600_24dp.png create mode 100644 android/Toodle/app/src/main/res/drawable-xxhdpi/ic_plus_grey600_36dp.png create mode 100644 android/Toodle/app/src/main/res/drawable-xxhdpi/ic_plus_grey600_48dp.png create mode 100644 android/Toodle/app/src/main/res/drawable-xxhdpi/ic_plus_white_18dp.png create mode 100644 android/Toodle/app/src/main/res/drawable-xxhdpi/ic_plus_white_24dp.png create mode 100644 android/Toodle/app/src/main/res/drawable-xxhdpi/ic_plus_white_36dp.png create mode 100644 android/Toodle/app/src/main/res/drawable-xxhdpi/ic_plus_white_48dp.png create mode 100644 android/Toodle/app/src/main/res/drawable-xxxhdpi/ic_plus_black_18dp.png create mode 100644 android/Toodle/app/src/main/res/drawable-xxxhdpi/ic_plus_black_24dp.png create mode 100644 android/Toodle/app/src/main/res/drawable-xxxhdpi/ic_plus_black_36dp.png create mode 100644 android/Toodle/app/src/main/res/drawable-xxxhdpi/ic_plus_black_48dp.png create mode 100644 android/Toodle/app/src/main/res/drawable-xxxhdpi/ic_plus_grey600_18dp.png create mode 100644 android/Toodle/app/src/main/res/drawable-xxxhdpi/ic_plus_grey600_24dp.png create mode 100644 android/Toodle/app/src/main/res/drawable-xxxhdpi/ic_plus_grey600_36dp.png create mode 100644 android/Toodle/app/src/main/res/drawable-xxxhdpi/ic_plus_grey600_48dp.png create mode 100644 android/Toodle/app/src/main/res/drawable-xxxhdpi/ic_plus_white_18dp.png create mode 100644 android/Toodle/app/src/main/res/drawable-xxxhdpi/ic_plus_white_24dp.png create mode 100644 android/Toodle/app/src/main/res/drawable-xxxhdpi/ic_plus_white_36dp.png create mode 100644 android/Toodle/app/src/main/res/drawable-xxxhdpi/ic_plus_white_48dp.png create mode 100644 android/Toodle/app/src/main/res/drawable/plus.xml create mode 100644 android/Toodle/app/src/main/res/layout/activity_new_item.xml create mode 100644 android/Toodle/app/src/main/res/layout/activity_toodle.xml create mode 100644 android/Toodle/app/src/main/res/layout/item.xml rename android/{Greetings => Toodle}/app/src/main/res/mipmap-hdpi/ic_launcher.png (100%) rename android/{Greetings => Toodle}/app/src/main/res/mipmap-hdpi/ic_launcher_round.png (100%) rename android/{Greetings => Toodle}/app/src/main/res/mipmap-mdpi/ic_launcher.png (100%) rename android/{Greetings => Toodle}/app/src/main/res/mipmap-mdpi/ic_launcher_round.png (100%) rename android/{Greetings => Toodle}/app/src/main/res/mipmap-xhdpi/ic_launcher.png (100%) rename android/{Greetings => Toodle}/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png (100%) rename android/{Greetings => Toodle}/app/src/main/res/mipmap-xxhdpi/ic_launcher.png (100%) rename android/{Greetings => Toodle}/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png (100%) rename android/{Greetings => Toodle}/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png (100%) rename android/{Greetings => Toodle}/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png (100%) rename android/{Greetings => Toodle}/app/src/main/res/values/colors.xml (100%) create mode 100644 android/Toodle/app/src/main/res/values/dimens.xml create mode 100644 android/Toodle/app/src/main/res/values/strings.xml create mode 100644 android/Toodle/app/src/main/res/values/styles.xml rename android/{Greetings/app/src/test/java/com/mozilla/greetings => Toodle/app/src/test/java/com/mozilla/toodle}/ExampleUnitTest.java (91%) rename android/{Greetings => Toodle}/build.gradle (68%) rename android/{Greetings => Toodle}/gradle.properties (100%) rename android/{Greetings => Toodle}/gradle/wrapper/gradle-wrapper.jar (100%) rename android/{Greetings => Toodle}/gradle/wrapper/gradle-wrapper.properties (80%) rename android/{Greetings => Toodle}/gradlew (100%) rename android/{Greetings => Toodle}/gradlew.bat (100%) rename android/{Greetings => Toodle}/settings.gradle (100%) create mode 100755 rust/android_build_all.sh create mode 100644 rust/ffi-utils/src/android_ffi.rs create mode 100644 rust/list/src/ctypes.rs diff --git a/android/Greetings/.idea/modules.xml b/android/Greetings/.idea/modules.xml deleted file mode 100644 index dd3342b..0000000 --- a/android/Greetings/.idea/modules.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/android/Greetings/app/src/main/java/com/mozilla/greetings/GreetingsActivity.java b/android/Greetings/app/src/main/java/com/mozilla/greetings/GreetingsActivity.java deleted file mode 100644 index 0f4da95..0000000 --- a/android/Greetings/app/src/main/java/com/mozilla/greetings/GreetingsActivity.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.mozilla.greetings; - -import android.support.v7.app.AppCompatActivity; -import android.os.Bundle; -import android.widget.TextView; - -public class GreetingsActivity extends AppCompatActivity { - - static { - System.loadLibrary("greetings"); - } - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_greetings); - - RustGreetings g = new RustGreetings(); - String r = g.sayHello("world"); - ((TextView)findViewById(R.id.greetingField)).setText(r); - } -} diff --git a/android/Greetings/app/src/main/java/com/mozilla/greetings/RustGreetings.java b/android/Greetings/app/src/main/java/com/mozilla/greetings/RustGreetings.java deleted file mode 100644 index 107ac8f..0000000 --- a/android/Greetings/app/src/main/java/com/mozilla/greetings/RustGreetings.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.mozilla.greetings; - -/** - * Created by emilytoop on 01/09/2017. - */ - -public class RustGreetings { - - private static native String greeting(final String pattern); - - public String sayHello(String to) { - return greeting(to); - } -} diff --git a/android/Greetings/app/src/main/jniLibs/arm64/libgreetings.so b/android/Greetings/app/src/main/jniLibs/arm64/libgreetings.so deleted file mode 120000 index 15a85e7..0000000 --- a/android/Greetings/app/src/main/jniLibs/arm64/libgreetings.so +++ /dev/null @@ -1 +0,0 @@ -/Users/emilytoop/Development/greetings/cargo/target/aarch64-linux-android/release/libgreetings.so \ No newline at end of file diff --git a/android/Greetings/app/src/main/jniLibs/armeabi/libgreetings.so b/android/Greetings/app/src/main/jniLibs/armeabi/libgreetings.so deleted file mode 120000 index cc9e839..0000000 --- a/android/Greetings/app/src/main/jniLibs/armeabi/libgreetings.so +++ /dev/null @@ -1 +0,0 @@ -/Users/emilytoop/Development/greetings/cargo/target/armv7-linux-androideabi/release/libgreetings.so \ No newline at end of file diff --git a/android/Greetings/app/src/main/jniLibs/x86/libgreetings.so b/android/Greetings/app/src/main/jniLibs/x86/libgreetings.so deleted file mode 120000 index 043837f..0000000 --- a/android/Greetings/app/src/main/jniLibs/x86/libgreetings.so +++ /dev/null @@ -1 +0,0 @@ -/Users/emilytoop/Development/greetings/cargo/target/i686-linux-android/release/libgreetings.so \ No newline at end of file diff --git a/android/Greetings/app/src/main/res/layout/activity_greetings.xml b/android/Greetings/app/src/main/res/layout/activity_greetings.xml deleted file mode 100644 index 1ff59f7..0000000 --- a/android/Greetings/app/src/main/res/layout/activity_greetings.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - diff --git a/android/Greetings/app/src/main/res/values/strings.xml b/android/Greetings/app/src/main/res/values/strings.xml deleted file mode 100644 index c0ee68b..0000000 --- a/android/Greetings/app/src/main/res/values/strings.xml +++ /dev/null @@ -1,3 +0,0 @@ - - Greetings - diff --git a/android/Greetings/app/src/main/res/values/styles.xml b/android/Greetings/app/src/main/res/values/styles.xml deleted file mode 100644 index 5885930..0000000 --- a/android/Greetings/app/src/main/res/values/styles.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - diff --git a/android/Greetings/.gitignore b/android/Toodle/.gitignore similarity index 100% rename from android/Greetings/.gitignore rename to android/Toodle/.gitignore diff --git a/android/Greetings/.idea/compiler.xml b/android/Toodle/.idea/compiler.xml similarity index 100% rename from android/Greetings/.idea/compiler.xml rename to android/Toodle/.idea/compiler.xml diff --git a/android/Greetings/.idea/copyright/profiles_settings.xml b/android/Toodle/.idea/copyright/profiles_settings.xml similarity index 100% rename from android/Greetings/.idea/copyright/profiles_settings.xml rename to android/Toodle/.idea/copyright/profiles_settings.xml diff --git a/android/Greetings/.idea/gradle.xml b/android/Toodle/.idea/gradle.xml similarity index 100% rename from android/Greetings/.idea/gradle.xml rename to android/Toodle/.idea/gradle.xml diff --git a/android/Greetings/.idea/misc.xml b/android/Toodle/.idea/misc.xml similarity index 69% rename from android/Greetings/.idea/misc.xml rename to android/Toodle/.idea/misc.xml index 5d19981..ba7052b 100644 --- a/android/Greetings/.idea/misc.xml +++ b/android/Toodle/.idea/misc.xml @@ -1,8 +1,5 @@ - - - - - - - - - - - - - - + diff --git a/android/Toodle/.idea/modules.xml b/android/Toodle/.idea/modules.xml new file mode 100644 index 0000000..4224da7 --- /dev/null +++ b/android/Toodle/.idea/modules.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/android/Greetings/.idea/runConfigurations.xml b/android/Toodle/.idea/runConfigurations.xml similarity index 100% rename from android/Greetings/.idea/runConfigurations.xml rename to android/Toodle/.idea/runConfigurations.xml diff --git a/android/Toodle/.idea/vcs.xml b/android/Toodle/.idea/vcs.xml new file mode 100644 index 0000000..c2365ab --- /dev/null +++ b/android/Toodle/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/android/Greetings/app/.gitignore b/android/Toodle/app/.gitignore similarity index 100% rename from android/Greetings/app/.gitignore rename to android/Toodle/app/.gitignore diff --git a/android/Greetings/app/build.gradle b/android/Toodle/app/build.gradle similarity index 71% rename from android/Greetings/app/build.gradle rename to android/Toodle/app/build.gradle index c24daaa..79e0d8e 100644 --- a/android/Greetings/app/build.gradle +++ b/android/Toodle/app/build.gradle @@ -1,10 +1,10 @@ apply plugin: 'com.android.application' +apply plugin: 'kotlin-android' android { compileSdkVersion 26 - buildToolsVersion "26.0.1" defaultConfig { - applicationId "com.mozilla.greetings" + applicationId "com.mozilla.toodle" minSdkVersion 26 targetSdkVersion 26 versionCode 1 @@ -24,7 +24,13 @@ dependencies { androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) - compile 'com.android.support:appcompat-v7:26.+' + compile 'com.android.support:appcompat-v7:26.1.0' compile 'com.android.support.constraint:constraint-layout:1.0.2' + compile 'com.android.support:design:26.1.0' testCompile 'junit:junit:4.12' + compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version" + compile 'net.java.dev.jna:jna:4.5.0' +} +repositories { + mavenCentral() } diff --git a/android/Greetings/app/proguard-rules.pro b/android/Toodle/app/proguard-rules.pro similarity index 100% rename from android/Greetings/app/proguard-rules.pro rename to android/Toodle/app/proguard-rules.pro diff --git a/android/Greetings/app/src/androidTest/java/com/mozilla/greetings/ExampleInstrumentedTest.java b/android/Toodle/app/src/androidTest/java/com/mozilla/toodle/ExampleInstrumentedTest.java similarity index 95% rename from android/Greetings/app/src/androidTest/java/com/mozilla/greetings/ExampleInstrumentedTest.java rename to android/Toodle/app/src/androidTest/java/com/mozilla/toodle/ExampleInstrumentedTest.java index 63ccc9a..683b2f3 100644 --- a/android/Greetings/app/src/androidTest/java/com/mozilla/greetings/ExampleInstrumentedTest.java +++ b/android/Toodle/app/src/androidTest/java/com/mozilla/toodle/ExampleInstrumentedTest.java @@ -1,4 +1,4 @@ -package com.mozilla.greetings; +package com.mozilla.toodle; import android.content.Context; import android.support.test.InstrumentationRegistry; diff --git a/android/Greetings/app/src/main/AndroidManifest.xml b/android/Toodle/app/src/main/AndroidManifest.xml similarity index 55% rename from android/Greetings/app/src/main/AndroidManifest.xml rename to android/Toodle/app/src/main/AndroidManifest.xml index f7075d9..2959945 100644 --- a/android/Greetings/app/src/main/AndroidManifest.xml +++ b/android/Toodle/app/src/main/AndroidManifest.xml @@ -1,6 +1,6 @@ + package="com.mozilla.toodle"> - + + + + \ No newline at end of file diff --git a/android/Toodle/app/src/main/java/com/mozilla/toodle/Item.java b/android/Toodle/app/src/main/java/com/mozilla/toodle/Item.java new file mode 100644 index 0000000..75b684e --- /dev/null +++ b/android/Toodle/app/src/main/java/com/mozilla/toodle/Item.java @@ -0,0 +1,67 @@ +/* -*- Mode: Java; c-basic-offset: 4; tab-width: 20; indent-tabs-mode: nil; -*- + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +package com.mozilla.toodle; + +import android.content.Context; + +import com.mozilla.toodle.rust.ListManager; +import com.mozilla.toodle.rust.NativeItem; +import com.mozilla.toodle.rust.Toodle; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +public class Item { +// private String uuid; + private String name; + private Long dueDate; + + public String name() { + return name; + } + + Item name(final String name) { + this.name = name; + return this; + } + + public Long dueDate() { + return dueDate; + } + + Item dueDate(final int year, final int month, final int date) { + // TODO pretty sure this is wrong, somehow. + final Date dd = new Date(year, month, date); + dueDate = dd.getTime(); + return this; + } + + private static Item fromNativeItem(NativeItem nativeItem) { + final Item item = new Item(); + item.name = nativeItem.itemName; +// item.uuid = nativeItem.uuid; + return item; + } + + static ArrayList fromNativeItems(List nativeItems) { + final ArrayList items = new ArrayList<>(nativeItems.size()); + + for (NativeItem nativeItem : nativeItems) { + items.add(fromNativeItem(nativeItem)); + } + + return items; + } + + void create(Context context) { + try (final Toodle toodle = new Toodle(context)) { + try (final ListManager listManager = toodle.getListManager()) { + listManager.createItem(this); + } + } + } +} \ No newline at end of file diff --git a/android/Toodle/app/src/main/java/com/mozilla/toodle/ListAdapter.java b/android/Toodle/app/src/main/java/com/mozilla/toodle/ListAdapter.java new file mode 100644 index 0000000..3422f4a --- /dev/null +++ b/android/Toodle/app/src/main/java/com/mozilla/toodle/ListAdapter.java @@ -0,0 +1,111 @@ +/* -*- Mode: Java; c-basic-offset: 4; tab-width: 20; indent-tabs-mode: nil; -*- + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +package com.mozilla.toodle; + +import android.content.Context; +import android.support.v7.widget.RecyclerView; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.ViewGroup; +import android.widget.LinearLayout; +import android.widget.TextView; + +import com.mozilla.toodle.rust.NativeItemSet; +import com.mozilla.toodle.rust.NativeItemsCallback; +import com.mozilla.toodle.rust.NativeItemsChangedCallback; +import com.mozilla.toodle.rust.ListManager; +import com.mozilla.toodle.rust.Toodle; + +import org.jetbrains.annotations.Nullable; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; + +public class ListAdapter extends RecyclerView.Adapter { + private List dataset = new ArrayList<>(0); + private final Context context; + + static class NativeItemsCallbackInner implements NativeItemsChangedCallback { + private final WeakReference listAdapterWeakReference; + + NativeItemsCallbackInner(WeakReference listAdapterWeakReference) { + this.listAdapterWeakReference = listAdapterWeakReference; + } + + @Override + public void items() { + final ListAdapter listAdapter = listAdapterWeakReference.get(); + if (listAdapter == null) { + return; + } + + Log.i("RustyToodleJava", "Items changed!"); + try (final Toodle toodle = new Toodle(listAdapter.context)) { + try (final ListManager listManager = toodle.getListManager()) { + listManager.getAllItems(new NativeItemsCallback() { + @Override + public void items(@Nullable NativeItemSet.ByReference itemSet) { + if (itemSet == null) { + Log.i("RustyToodleJava", "Got no items!"); + listAdapter.dataset = new ArrayList<>(0); + return; + } + Log.i("RustyToodleJava", "Got " + itemSet.size() + " items!"); + listAdapter.dataset = Item.fromNativeItems(itemSet.getItems()); + listAdapter.notifyDataSetChanged(); + itemSet.close(); + } + }); + } + } + } + } + + // We must keep reference to the callback around, otherwise it'll get GC'd and the native code + // will call an empty stub instead of our callback. + private final NativeItemsChangedCallback nativeItemsChangedCallback = new NativeItemsCallbackInner( + new WeakReference<>(this) + ); + + ListAdapter(Context context) { + this.context = context; + + try (final Toodle toodle = new Toodle(context)) { + try (final ListManager listManager = toodle.getListManager()) { + listManager.registerChangedItemsCallback(nativeItemsChangedCallback); + } + } + } + + static class ViewHolder extends RecyclerView.ViewHolder { + private final LinearLayout itemView; + + ViewHolder(LinearLayout v) { + super(v); + itemView = v; + } + } + + @Override + public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + final LinearLayout v = (LinearLayout) LayoutInflater.from(parent.getContext()) + .inflate(R.layout.item, parent, false); + + return new ViewHolder(v); + + } + + @Override + public void onBindViewHolder(ViewHolder holder, int position) { + ((TextView) holder.itemView.findViewById(R.id.itemTitle)).setText(dataset.get(position).name()); + } + + @Override + public int getItemCount() { + return dataset.size(); + } +} diff --git a/android/Toodle/app/src/main/java/com/mozilla/toodle/NewItemActivity.java b/android/Toodle/app/src/main/java/com/mozilla/toodle/NewItemActivity.java new file mode 100644 index 0000000..5885b93 --- /dev/null +++ b/android/Toodle/app/src/main/java/com/mozilla/toodle/NewItemActivity.java @@ -0,0 +1,46 @@ +/* -*- Mode: Java; c-basic-offset: 4; tab-width: 20; indent-tabs-mode: nil; -*- + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +package com.mozilla.toodle; + +import android.os.Bundle; +import android.support.v7.app.AppCompatActivity; +import android.view.View; +import android.widget.Button; +import android.widget.DatePicker; +import android.widget.TextView; + +public class NewItemActivity extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_new_item); + + final TextView itemName = findViewById(R.id.itemName); + final DatePicker itemDueDate = findViewById(R.id.itemDueDate); + final Button addBtn = findViewById(R.id.itemAdd); + + addBtn.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + final String name = itemName.getText().toString(); + final int yearDue = itemDueDate.getYear(); + final int monthDue = itemDueDate.getMonth(); + final int dayDue = itemDueDate.getDayOfMonth(); + + final Item item = new Item(); + + item + .name(name) + .dueDate(yearDue, monthDue, dayDue) + .create(getApplicationContext()); + + finish(); + } + }); + } + +} diff --git a/android/Toodle/app/src/main/java/com/mozilla/toodle/ToodleActivity.java b/android/Toodle/app/src/main/java/com/mozilla/toodle/ToodleActivity.java new file mode 100644 index 0000000..7bcebbc --- /dev/null +++ b/android/Toodle/app/src/main/java/com/mozilla/toodle/ToodleActivity.java @@ -0,0 +1,42 @@ +/* -*- Mode: Java; c-basic-offset: 4; tab-width: 20; indent-tabs-mode: nil; -*- + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +package com.mozilla.toodle; + +import android.app.Activity; +import android.content.Intent; +import android.os.Bundle; +import android.support.design.widget.FloatingActionButton; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.view.View; + +public class ToodleActivity extends Activity { + private RecyclerView listRecyclerView; + private RecyclerView.Adapter listAdapter; + private RecyclerView.LayoutManager layoutManager; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_toodle); + + listRecyclerView = findViewById(R.id.listItems); + + layoutManager = new LinearLayoutManager(this); + listRecyclerView.setLayoutManager(layoutManager); + + listAdapter = new ListAdapter(getApplicationContext()); + listRecyclerView.setAdapter(listAdapter); + + final FloatingActionButton newItemBtn = findViewById(R.id.newItem); + newItemBtn.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + startActivity(new Intent(ToodleActivity.this, NewItemActivity.class)); + } + }); + } +} diff --git a/android/Toodle/app/src/main/java/com/mozilla/toodle/rust/JNA.java b/android/Toodle/app/src/main/java/com/mozilla/toodle/rust/JNA.java new file mode 100644 index 0000000..873c21b --- /dev/null +++ b/android/Toodle/app/src/main/java/com/mozilla/toodle/rust/JNA.java @@ -0,0 +1,29 @@ +/* -*- Mode: Java; c-basic-offset: 4; tab-width: 20; indent-tabs-mode: nil; -*- + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +package com.mozilla.toodle.rust; + +import com.sun.jna.Library; +import com.sun.jna.Native; +import com.sun.jna.NativeLibrary; +import com.sun.jna.Pointer; + +public interface JNA extends Library { + String JNA_LIBRARY_NAME = "toodle"; + NativeLibrary JNA_NATIVE_LIB = NativeLibrary.getInstance(JNA_LIBRARY_NAME); + + JNA INSTANCE = (JNA) Native.loadLibrary(JNA_LIBRARY_NAME, JNA.class); + + Pointer new_toodle(String dbPath); + void toodle_destroy(Pointer toodle); + + Pointer toodle_list(Pointer toodle); + void toodle_list_destroy(Pointer listManager); + + void list_manager_create_item(Pointer listManager, String name, long dueDate); + void list_manager_on_items_changed(NativeItemsChangedCallback callback); + void list_manager_all_items(Pointer listManager, NativeItemsCallback callback); + void item_c_destroy(Pointer item); +} diff --git a/android/Toodle/app/src/main/java/com/mozilla/toodle/rust/ListManager.java b/android/Toodle/app/src/main/java/com/mozilla/toodle/rust/ListManager.java new file mode 100644 index 0000000..14f4279 --- /dev/null +++ b/android/Toodle/app/src/main/java/com/mozilla/toodle/rust/ListManager.java @@ -0,0 +1,35 @@ +/* -*- Mode: Java; c-basic-offset: 4; tab-width: 20; indent-tabs-mode: nil; -*- + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +package com.mozilla.toodle.rust; + +import com.mozilla.toodle.Item; + +public class ListManager extends RustObject { + /* package-private */ ListManager(Toodle toodle) { + rawPointer = JNA.INSTANCE.toodle_list(toodle.rawPointer); + } + + public void createItem(Item item) { + JNA.INSTANCE.list_manager_create_item( + rawPointer, + item.name(), + item.dueDate() + ); + } + + public void registerChangedItemsCallback(NativeItemsChangedCallback callback) { + JNA.INSTANCE.list_manager_on_items_changed(callback); + } + + public void getAllItems(NativeItemsCallback callback) { + JNA.INSTANCE.list_manager_all_items(rawPointer, callback); + } + + @Override + public void close() { + JNA.INSTANCE.toodle_list_destroy(rawPointer); + } +} \ No newline at end of file diff --git a/android/Toodle/app/src/main/java/com/mozilla/toodle/rust/NativeItem.java b/android/Toodle/app/src/main/java/com/mozilla/toodle/rust/NativeItem.java new file mode 100644 index 0000000..4822c86 --- /dev/null +++ b/android/Toodle/app/src/main/java/com/mozilla/toodle/rust/NativeItem.java @@ -0,0 +1,30 @@ +package com.mozilla.toodle.rust; + +import com.sun.jna.Structure; + +import java.io.Closeable; +import java.util.Arrays; +import java.util.List; + +public class NativeItem extends Structure implements Closeable { + public static class ByReference extends NativeItem implements Structure.ByReference { + } + + public static class ByValue extends NativeItem implements Structure.ByValue { + } + +// public String uuid; + public String itemName; +// public Long dueDate; +// public Long completionDate; + + @Override + protected List getFieldOrder() { + return Arrays.asList("uuid", "itemName");//, "dueDate", "completionDate"); + } + + @Override + public void close() { + JNA.INSTANCE.item_c_destroy(this.getPointer()); + } +} diff --git a/android/Toodle/app/src/main/java/com/mozilla/toodle/rust/NativeItemSet.java b/android/Toodle/app/src/main/java/com/mozilla/toodle/rust/NativeItemSet.java new file mode 100644 index 0000000..e8c49f4 --- /dev/null +++ b/android/Toodle/app/src/main/java/com/mozilla/toodle/rust/NativeItemSet.java @@ -0,0 +1,37 @@ +package com.mozilla.toodle.rust; + +import com.sun.jna.Structure; + +import java.io.Closeable; +import java.util.Arrays; +import java.util.List; + + +public class NativeItemSet extends Structure implements Closeable { + public static class ByReference extends NativeItemSet implements Structure.ByReference { + } + + public static class ByValue extends NativeItemSet implements Structure.ByValue { + } + + public NativeItem.ByReference items; + public int numberOfItems; + + public List getItems() { + final NativeItem[] array = (NativeItem[]) items.toArray(numberOfItems); + return Arrays.asList(array); + } + + @Override + protected List getFieldOrder() { + return Arrays.asList("items", "numberOfItems"); + } + + @Override + public void close() { + final NativeItem[] nativeItems = (NativeItem[]) items.toArray(numberOfItems); + for (NativeItem nativeItem : nativeItems) { + nativeItem.close(); + } + } +} diff --git a/android/Toodle/app/src/main/java/com/mozilla/toodle/rust/NativeItemUuidsCallback.java b/android/Toodle/app/src/main/java/com/mozilla/toodle/rust/NativeItemUuidsCallback.java new file mode 100644 index 0000000..d69e43e --- /dev/null +++ b/android/Toodle/app/src/main/java/com/mozilla/toodle/rust/NativeItemUuidsCallback.java @@ -0,0 +1,7 @@ +package com.mozilla.toodle.rust; + +import com.sun.jna.Callback; + +public interface NativeItemUuidsCallback extends Callback { + void uuids(UuidSet.ByReference uuids); +} diff --git a/android/Toodle/app/src/main/java/com/mozilla/toodle/rust/NativeItemsCallback.java b/android/Toodle/app/src/main/java/com/mozilla/toodle/rust/NativeItemsCallback.java new file mode 100644 index 0000000..0e8a49b --- /dev/null +++ b/android/Toodle/app/src/main/java/com/mozilla/toodle/rust/NativeItemsCallback.java @@ -0,0 +1,7 @@ +package com.mozilla.toodle.rust; + +import com.sun.jna.Callback; + +public interface NativeItemsCallback extends Callback { + void items(NativeItemSet.ByReference items); +} diff --git a/android/Toodle/app/src/main/java/com/mozilla/toodle/rust/NativeItemsChangedCallback.java b/android/Toodle/app/src/main/java/com/mozilla/toodle/rust/NativeItemsChangedCallback.java new file mode 100644 index 0000000..046de59 --- /dev/null +++ b/android/Toodle/app/src/main/java/com/mozilla/toodle/rust/NativeItemsChangedCallback.java @@ -0,0 +1,12 @@ +/* -*- Mode: Java; c-basic-offset: 4; tab-width: 20; indent-tabs-mode: nil; -*- + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +package com.mozilla.toodle.rust; + +import com.sun.jna.Callback; + +public interface NativeItemsChangedCallback extends Callback { + void items(); +} diff --git a/android/Toodle/app/src/main/java/com/mozilla/toodle/rust/RustObject.java b/android/Toodle/app/src/main/java/com/mozilla/toodle/rust/RustObject.java new file mode 100644 index 0000000..0c1d951 --- /dev/null +++ b/android/Toodle/app/src/main/java/com/mozilla/toodle/rust/RustObject.java @@ -0,0 +1,14 @@ +/* -*- Mode: Java; c-basic-offset: 4; tab-width: 20; indent-tabs-mode: nil; -*- + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +package com.mozilla.toodle.rust; + +import com.sun.jna.Pointer; + +import java.io.Closeable; + +/* package-private */ abstract class RustObject implements Closeable { + Pointer rawPointer; +} diff --git a/android/Toodle/app/src/main/java/com/mozilla/toodle/rust/Toodle.java b/android/Toodle/app/src/main/java/com/mozilla/toodle/rust/Toodle.java new file mode 100644 index 0000000..0fb1d10 --- /dev/null +++ b/android/Toodle/app/src/main/java/com/mozilla/toodle/rust/Toodle.java @@ -0,0 +1,31 @@ +/* -*- Mode: Java; c-basic-offset: 4; tab-width: 20; indent-tabs-mode: nil; -*- + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +package com.mozilla.toodle.rust; + +import android.content.Context; + +public class Toodle extends RustObject { + static { + System.loadLibrary("toodle"); + } + + private static final String DB_NAME = "toodle.db"; + + public Toodle(Context context) { + this.rawPointer = JNA.INSTANCE.new_toodle( + context.getDatabasePath(DB_NAME).getAbsolutePath() + ); + } + + public ListManager getListManager() { + return new ListManager(this); + } + + @Override + public void close() { + JNA.INSTANCE.toodle_destroy(rawPointer); + } +} \ No newline at end of file diff --git a/android/Toodle/app/src/main/java/com/mozilla/toodle/rust/Uuid.java b/android/Toodle/app/src/main/java/com/mozilla/toodle/rust/Uuid.java new file mode 100644 index 0000000..bb74092 --- /dev/null +++ b/android/Toodle/app/src/main/java/com/mozilla/toodle/rust/Uuid.java @@ -0,0 +1,28 @@ +package com.mozilla.toodle.rust; + +import com.sun.jna.Structure; + +import java.io.Closeable; +import java.io.IOException; +import java.util.Arrays; +import java.util.List; + +public class Uuid extends Structure implements Closeable { + public static class ByReference extends Uuid implements Structure.ByReference { + } + + public static class ByValue extends Uuid implements Structure.ByValue { + } + + public String uuid; + + @Override + protected List getFieldOrder() { + return Arrays.asList("uuid"); + } + + @Override + public void close() throws IOException { + // TODO + } +} diff --git a/android/Toodle/app/src/main/java/com/mozilla/toodle/rust/UuidSet.java b/android/Toodle/app/src/main/java/com/mozilla/toodle/rust/UuidSet.java new file mode 100644 index 0000000..a087315 --- /dev/null +++ b/android/Toodle/app/src/main/java/com/mozilla/toodle/rust/UuidSet.java @@ -0,0 +1,35 @@ +package com.mozilla.toodle.rust; + +import com.sun.jna.Structure; + +import java.io.Closeable; +import java.io.IOException; +import java.util.Arrays; +import java.util.List; + +public class UuidSet extends Structure implements Closeable { + public static class ByReference extends UuidSet implements Structure.ByReference { + } + + public static class ByValue extends UuidSet implements Structure.ByValue { + } + + public Uuid.ByReference uuids; + + public int numberOfUuids; + + public List getUuids() { + Uuid[] array = (Uuid[]) uuids.toArray(numberOfUuids); + return Arrays.asList(array); + } + + @Override + protected List getFieldOrder() { + return Arrays.asList("uuids", "numberOfUuids"); + } + + @Override + public void close() throws IOException { + // TODO + } +} diff --git a/android/Toodle/app/src/main/jniLibs/arm64/libjnidispatch.so b/android/Toodle/app/src/main/jniLibs/arm64/libjnidispatch.so new file mode 100644 index 0000000000000000000000000000000000000000..d2b1a8f281b2432a363f80a208248d885eb4b80e GIT binary patch literal 101976 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 literal 0 HcmV?d00001 diff --git a/android/Toodle/app/src/main/jniLibs/arm64/libtoodle.so b/android/Toodle/app/src/main/jniLibs/arm64/libtoodle.so new file mode 120000 index 0000000..7c9ea63 --- /dev/null +++ b/android/Toodle/app/src/main/jniLibs/arm64/libtoodle.so @@ -0,0 +1 @@ +../../../../../../../rust/target/aarch64-linux-android/debug/libtoodle.so \ No newline at end of file diff --git a/android/Toodle/app/src/main/jniLibs/armeabi/libjnidispatch.so b/android/Toodle/app/src/main/jniLibs/armeabi/libjnidispatch.so new file mode 100644 index 0000000000000000000000000000000000000000..bc16713517105d7d0fcb8baf7dd72fa4fda96a03 GIT binary patch literal 101596 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%0D8?6t?09JHl}muE9|l20iNQQiqzzn@X|P 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%0D)}!VK5XmHO1VsjIUCL#_ma8FG$SHU z(?2#n@qQy4<#oNifXTj&{J#S3(9zx2f$m>N{*e}-UWtjWSNYJ!oltd zSou_jJs$V0Fg}fJT8mXF40>Md(Z=LAaEWzPl3zWK)kBn1s8{oos3?UCe&jc|DbO zT)#DqrxK1yH{L!G!`@ri_`^TI>t+4uq-DtF4o`}lV1J5w{iMF#U&^d)rN8%QwvGJ# z7lgLV+ncaBTN+uV)>l#O&dlgAio02RrFP>*eIvcHtGl(Up}B2?V5{@OJ$6fP&9#Kx zVzesKO1A@UF?t|(Wf`6R_vW^aUTylJt{Pu(-Fq!8U+|@uSXjQ`_i}(=>E#F4OpCl8 zo4uN?l+8D7EbnVBv3tnW6HIU0NSK$ev|UtAKHBzm!V2E!XcuQx)zmrOTD#2ite!h> zZGuP5!syuhksWsT%-hARm630gwks~sc9rGf)g5-ToGrs{Z|m3FX+?i8vTcE*1olKh2U^MpERN+( zO`lN>pBns^YCEihU8GgZR@zN%l}95swB5uOIL85k^k*k*G)^Zt%ivMiQo__{ZqR z;&W;Pt;XAbyLBTwo@U=({N+*3A7;m{!{4peZg*QpODkLHGK2^5xz6-}wb_)BD`oUM zNW4CF%e*wk{f%cI84J6$m!RMw!-9uCv=71_`8Bl6b`Iz`7bE!Anm^6}TwA|*=?cPn zH)$)|x%if*?$UQl>n#`eY&7%OlIyQE`Vi;votP6*QYUI$IPg8meA_hK#Np3=bCZKV zn_fNWf1hf;RYKULlrP7LasG5(C*+(G_^t?io6ooZy-k6)DeyK0-lo9Y6nL8gZ&ToH z3cO8$w<+*81^z#$fP0YNY^~P{hNnM%%xjf_?`?taN4#&Pf6DvT>S|SI$gG8u6u~<= z&Yn7cGZufc=Z5DxPBq^#5>Jtj<6VkQ-gYo6rX}Rls*5)i9Icx6bKA_Uyw0#|ul?uQ z^_7gb!t!Af$$w+2&BLejPMq@aZUxxzHXi=q9DXMPe--ur)(ig~ei!fvzFiHH`1kyK zowiR~9&+}H2Ka~Z58!s;_TUnP?dc6UN2@|k>NMgfhMYrZg`C%LujBOBei1J!*V^x3 z^>1Kv`~S1s`QecB6mA!8H!g$Qk2`>S5tqds#vR4If!p~(j~*Uf5UASS~ZrmQ+UR(yZ54Rup z0`36rAnrxnOSmlV5biMUHQaVw4Rzgx{|N3VE{&@q><#=kaSq?`&xrG(MT@R*Yd>_| z>I>X?b1$EJn|n#3?mdaROD=V5vDJ3BVzujOy};NKWId2gfyB;DogBKZn_I^)aTZ+4 zzoyov^=(cFlZaEXV8ylWEtff`R8CkB3!NISj8;c$LQ_L$My7?PhtH0@Gki|SncK5v zQ*YCH{N8TsZ}h(~)3$bZIdfaKbdbpUz1_}S4!&=6=HAq?d9G(990fGAj0VX7_A11F zbhY<7b9*_S@5}|ixqPU0``OlV8;LqwntGe4j{hcWcjsJVS~D0lZE9<#f=;sAWa~LS zFc;IXF2gu;x%ks+P!nM;D&eQ%xwF*Wwth3ahtOv1UvTt9onMYvD~?SiShC3f6MT*j z;0wNR49uGbr9Z`+%_1*E@RCxj%`b4CheX6kBz`x$1Y7AMS*E{;XNQt3v#_`US&NL) zU&Kg0WGS-A!q%1~S!H2sXOb+nu%xJ!wHCJaDaj5CTiexZ*z7HA?OMEU=E0U)z6^>u zr+hYw3y^Jk>3@Rzjbugi~@#OF7~HD36O7|CxwJyPk?=SN77d+`fq48^Txofidwv0iLm#-yQPu7stfE2E3OIITv5~e}n%L z@G1|kBwyk~yl~>dnmSUzJ3RP8;2M~+#e;bS*trc@`#UOc4e&7VF6LdqEx_xRQ3k$X z;q?+5M{~UN+kj)&IZo1pKL@-7_<)yw7ry@|di^EvG>{XEsl4ZamjTy$@IM0g0{i&9 z0=x_OE-(H+f#)q}AHjq50CN{`mj}-R&I0@C=K*i~QMtUUfc-z=bFI=>AnPgDv>!O} zL;8R?!EL~6$?xNP%b5IqW8hB$Yi_C{|72&9^EqHMZ+Y++fi+k8@n2W|0$^u>qys@Qz%iSGlR!DYH6WeK0B#>9UK zcpdRRzx@#S5#YsM`riOoeaCS!h+gHNSV4WnPxIp63+(?1-z$OZ{}vkat@PK7iEjXY zUG;hNynRgkr^dk2YyCf!|L7R_&wvwu;y6zer}~~B6aW1&@Q=s9F9N?v{+GP`zZnxh ziFW&cs=sCoJOg<5?d9?FkumWNz=w&SLtf#x6S#&S&hf|FKLIZZz-KU}-5!8f0uKk^ z?ZAfu@DG5e{V&FhSN_j|_W}FmUl2og2KMW31)j}=Nq+p}z-t5WzXERyz-KXqW&-eP z;MW82{lK*;%Jk}g26!2;U*C^_{Xfy~Mc~^~WqJ5p;54wG|01U7eZYQxU35JPJm0bO zdlv!-HUj8$g@(%<1^}Qdss=rLX7T`U=wO;xm;4HA8 z{?CD<17-UCE%5vR{4?NoV86bJRg7O?KmQzH|4;PzAaEuSf8&_=n}H7n%KPM)_{V^2 z2FvAV#>5{4o=?0#fBg5Dc&Ru~6Yr1bnZTIJf;`Yw^{oZ2*@H~?(hmW50nhN@zW{#W2W9H_WsH_>A%@F8H=gXaOWm^S>c_^W_pzzh$Q{*QoNV4t5h0Y4Rh{}gx*KPJE5 zOTPoy|8x0xdJO#6z&mGROYr#ThhyRo0lx`-+r9YLfp-MxQw1Rg1MoS(PX*vbz()h{ z$AFgv=-C4tq~})Pb;SGpn;rvy4LB8u-#-Ta3Gh>a_+O2IPn(MV7l@xd2EH8lwLtu} zW8enh*{n~K&{F-=4cr1OeieK-a4)bw-o6059a#LS_zdtP0r)4t{`xb{`u(S4U_Ds8 zx7YHY;)9PPGcE_g8vy^C|q_+;J<1XfA5%-UQIqeUW#=1E8V7 zSa%w1iiYN{F3$1Q9XmMTY%o_wbrV$g6&f0Pu68&J(|PN{E!T0Z%Gm@~oz&Ug+G*?)o;Xw3sThUFQ(J39BrhCLhI#Jd@XEtzUrdM&iP!r6gUNWH#%FDGHj^AElQi$0ayz`ho zH5=@?%@XKe`6>k{o^za|V9s%lf;q=og1vL0CD@)F-C*C%5Fa*oZE;4u%fXRoOLB2R zL#KIS0gm*aWbg@OPCy63MdmV7lGuu(6C)=`4eN_Gt=y_RKBDH3J!g+O8+?M4 z=32mbh1utQEH(Yka%^DvTHbh>C3(hX<=rTx5fSC=UG@N9!zL`Zw;}ovTI1u)iSrI; zbPkigrQO7A+T0rE<+o$)Y}NJc>3ti$X|ZDCWwcv*O3sb%GsP3t?`$5bzALlH8d z_iX9WnbdKsHFBz-FPzsNQ}!QGbrt87InnypB9k-sAP-iSiz=8&8z?c)fU{ zyvOUr6XiW#A0jSwqiozkLA-7EYPPCa(juUUMejO*l4LqUeX;H^XWmA|tfa79=hIFmD z>TtXi$L(}VFr7XgBE+AluSw#~^2aH}65XG#Zf@Pu(85OVak!CE)enA-PCa*XobpYl z_=(Be)78qIA2v{rlgD~SmbRvqKjZ&oAYMcOyf#w}ViE%(C4 zji)I$AhA1dwO51^<0dp?*&C?lk-U@WYp$U6nwKb@wjLH`KH!s4U2FBCacgbsDVH%W z1zLNTq55BST*xmGRsID&EmpK@(es3;+NeP`CMV-()ehRamuhTuc;}+y4v-KW7sZoCGJj_S6 z;<#g@yr^xcGq`KTH*QT5PUdygm3n>BbcKB_wY-?qVsZXxFt`>}w72&2Z5j=mcoMdy zwaa808)(+ELd-^ZlqeZA+FIIfDd*!_P*20kkE~oXCTPvo^(I99(l81zi5nW4IVIB# z(>1ddsmgo?@Y7;bY3SwZdsinbpV3LY5;lWKPury>n~D%il%UN5H+8m@0@_DM8_SJn zm$`&QoRMi*Z3C}H^fa{IrV}os!dJBF!dR=C)3A8lsBt427B|$rx1qPQ;ZoUw0`>Xj z-f-=;YsV>9QHvbx7zP2|t8HKq^*BDtA7U1~dcl}twfrbuwj3RIb!T^TYm05~=opaU zvD#yWHFS12aA{d~sZza*xSVZfK_8LDW>O5)>d|z~ij@r@S;{DQrLlDd2(b|HL!UEI z!XLLaHLORFbQn(Q!02PcjCq6`navwL96bwL>us&gEIYkahV3?YwBE)n%4?sas;%!- zS%GR-@=EKmI@J#!FZDRxX|f%oFH7NzDDW6v+2GS~#h8xsNH{jQoZjm)Kb_x$rSeR` zvAWN8_NbUrsiRrMD|>WcDQ%$Ryo7-eL+Z_TXxS&DeZ*jh6?AcD2eJ)CBoMre=WaH0 z+jOO;1ufPwvp~Gy6|La2mMu~b28M+-*dll(iIbg~k& zZDY=R%>xLS@=ctIIv2;5s7a@DU~(z;+%WH(G*NunvfqtUn99@nFmp!i3;^#>b?NU? zoVMsqy7Nef+shuhVEw5)xyy0>c~+e#lRH2memePbSL1XJR^K{jCMR2Z5I;b3?n>um zl}_i+{gJ9B&dr)k1n}pV z_qTj2dqRQyDP67oH2)PR_jfpsVwC>okxqQ&|M}&;OaRq%`Qi1Xqw7k4DocNCJK8oF x2!1Bruf1=1emeO+uPOZY_3V8zz|P`(CQkJN8r};u&v}XSyT4%X$N%%o`+v)TI#vJx literal 0 HcmV?d00001 diff --git a/android/Toodle/app/src/main/jniLibs/armeabi/libtoodle.so b/android/Toodle/app/src/main/jniLibs/armeabi/libtoodle.so new file mode 120000 index 0000000..7d32bed --- /dev/null +++ b/android/Toodle/app/src/main/jniLibs/armeabi/libtoodle.so @@ -0,0 +1 @@ +../../../../../../../rust/target/armv7-linux-androideabi/debug/libtoodle.so \ No newline at end of file diff --git a/android/Toodle/app/src/main/jniLibs/x86/libjnidispatch.so b/android/Toodle/app/src/main/jniLibs/x86/libjnidispatch.so new file mode 100644 index 0000000000000000000000000000000000000000..a87d08655a4115f3c1ec6914eed2bc72f00189bb GIT binary patch literal 99392 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 literal 0 HcmV?d00001 diff --git a/android/Toodle/app/src/main/res/drawable-hdpi/ic_plus_black_24dp.png b/android/Toodle/app/src/main/res/drawable-hdpi/ic_plus_black_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..267d920b1bbec8c15f298cb2e79d86d5ec26790d GIT binary patch literal 446 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbBSkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+eS5K)hhiu0R{01Y44~ zy9wy$!fk$L9koEv$x0Bg+Kt{c%i(^Q{;kVN+ay1xmxaME1e>(r^@|)AI zb_eL+UL(V^i=Bo25g$h$gW{8PA5PmN%nWB9n|e>WP-a~(G)uT8XrVx>#+BLEl0;&> z*N1Jc+P8RbyG}r`3!}`*gZmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZKG z?d}4kf#9d}?s_1_S>O>_45U54*zIJt9gwlc)5S3)d8r^+KSG#m{(i zz;C|9)do7!hc_8Qh}qXRCoTLtCw$+W+8|CFi~a+}OS5w-FPz=i)s}ks7i(<9w#pdw z&D?LL9b*gpS2TX_P3VX#*}Q&H;!TNZy-?!IkJ~|wzt8wgQt|x%mi1D&e!Zjfz5hUW ztCqM%l%yn!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV z+ua371Hn({-St38;E2k7__F`**AIWb zegDz~lhe6x?fWe$UloroM+KlQ4fQ)2=h-j^d6qe?19DYMTq8&O-#>B&eqM3%yIG!OEX>H%Ps=c!{F)a=d#Wzp$Py! Cl!4L! literal 0 HcmV?d00001 diff --git a/android/Toodle/app/src/main/res/drawable-hdpi/ic_plus_grey600_18dp.png b/android/Toodle/app/src/main/res/drawable-hdpi/ic_plus_grey600_18dp.png new file mode 100644 index 0000000000000000000000000000000000000000..c4fd74775c5c065c2374cae59eb78b226a6246fc GIT binary patch literal 491 zcmeAS@N?(olHy`uVBq!ia0vp^(jd&i1|)m0d!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV z+ua371Hn({-St39LNnQ)q&a)x!x!9-48_CoTS&b3%3E{ZxIqy<1J$xLSELcv}SatTI#D^riOyhLodP z-G*_DckW$oi7abV`fVGz?Uy3U{%dBFa*|k1|%Oc%$NbBSkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+eS5K)hhiu0R{01Y44~ zy9wy$!fk$L9koEv$x0Bg+K*lOh7srr@!*8cKavfF>aQ)A-cexK+1EhbuD@-xlp<)e$pA8N@=%;mAj_x zG`~`v|GKm6=hD=BRX+-Km!5gQt?R_%YgX>B=B`T>StQWfr}k(0y|(8XUpN$>FzYwY zw%u6va^VM{t5r)}BT7;dOH!?pi&B9UgOP!uxvrt1u8~=YfuWU&nU$%jwt<0_fk6P{ z4MP+Sx%nxXX_dG&D8?l80ySuWY$z^Ew@OMZPSq_f%4A5(%t^J<*Viw}Ezr+ROwUZt d)=hOXPsw!5inw)Ij~A$i!PC{xWt~$(69B1zrYHaa literal 0 HcmV?d00001 diff --git a/android/Toodle/app/src/main/res/drawable-hdpi/ic_plus_grey600_36dp.png b/android/Toodle/app/src/main/res/drawable-hdpi/ic_plus_grey600_36dp.png new file mode 100644 index 0000000000000000000000000000000000000000..0f984889d2865c0ffdea451ca8f23dd5eb46483d GIT binary patch literal 525 zcmeAS@N?(olHy`uVBq!ia0vp^W+2SL1|)l2v+e>ZmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZKG z?d}4kf#9d}?s_1_S>O>_45U54*zIJt9guO()5S3)?hie8C`_nm^(0 ziG=SWT$PJIvB@o!&e69$67(Rdx%W?ff3rc|rc>-)K%Eb~v-T=16>&+?IF@_8bn?@C zdrLRW`Ro|l|MX1N`*T$Xqd1=N9^9ii!<^-FTf)7NsSl9f7(8A5 KT-G@yGywoMi?*5o literal 0 HcmV?d00001 diff --git a/android/Toodle/app/src/main/res/drawable-hdpi/ic_plus_grey600_48dp.png b/android/Toodle/app/src/main/res/drawable-hdpi/ic_plus_grey600_48dp.png new file mode 100644 index 0000000000000000000000000000000000000000..b3cb29b503aa57dbd992ca83eb087c2dcde95ed6 GIT binary patch literal 473 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!Ea{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV z+ua371Hn({-St3P{tpXD~L-UVHuK??Rc|&#T|bJ$T2$#l+g!xGdc&DX}!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV z+ua371Hn({-St3SuRgZ>|ICm2X4lm6;?q4@ zbb$7&mbgZgq$HN4S|t~y0x1R~14DCNLqlC7vk(JAD-$y-Q&VjN11kfA0LB}JC>nC} zQ!>*kacfYFN$3S?&;Z#`T$XN?lvtdqTUwOKkd~Q~YNfBQUy@s(pPQJTnVhYgpK6?v XlogTLs?Xa6)WhKE>gTe~DWM4f#)pKD literal 0 HcmV?d00001 diff --git a/android/Toodle/app/src/main/res/drawable-hdpi/ic_plus_white_24dp.png b/android/Toodle/app/src/main/res/drawable-hdpi/ic_plus_white_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..19d22b81ea0d6ac0289962abd42046d076c34735 GIT binary patch literal 453 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbBSkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+eS5K)hhiu0R{01Y44~ zy9wy$!fk$L9koEv$x0Bg+Kt`LVi(^Q{;kVPg`5F{>T$UfJzB&8k#SbZ^ zhYwBo5a{LfXiw;F&0sZ21`b7gXE*j4Gnp=2aTDxR{#@3+ROGw(AD)-t|Yet%=`XZ|bZ?wpglcKPDxS)%&7vv&oiWlPN6J||Vg#ZkmW zy5GK3=SqvfrNg`eQ!6~qu?cMkx=6LeHKHUXu_VKd7a7#Lca zm|2;cY8x0>85jgG-Y`Vbkei>9nO2EggJMiVFHnO9$cEywbgQJq;#A$zqD+Rg%$!s! peSQ6s+yedF#PrPMY+WZmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZKG z?d}4kf#9d}?s_1_S>O>_45U54*zIJt9gwlr)5S3)G$?_!i_$Po*I$QQS^7@9OH^064d`35Y@0(DS z2s2;(7qW*R?_6oCqT74FQ(A8S2HP;UgA#YYZwj9X(k|VU>bxO`W7=84`sgsv_g=g} z%m2S+?#*4x)o^p+eIQS@#5JNMC9x#cD!C{XNHG{07@F%E8tNLEg%}uGnV4Cbnra&u zSQ!`uFy1gk(U6;;l9^VCTZ3XuLN8E*2FQluvUIDY#Nt%l(xOa;w9K4TD}8bP0l+XkKoe-o5 literal 0 HcmV?d00001 diff --git a/android/Toodle/app/src/main/res/drawable-hdpi/ic_plus_white_48dp.png b/android/Toodle/app/src/main/res/drawable-hdpi/ic_plus_white_48dp.png new file mode 100644 index 0000000000000000000000000000000000000000..435a416924b4179c8d501f4f08f6b01cf6ca1190 GIT binary patch literal 470 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!Ea{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV z+ua371Hn({-St3`Y@S8AM2M({!fbc#Z-=@8)V)8r%bzqd4i0~ZgvBCswJ)wB`Jv| zsaDBFsX&Us$iUEC*U(Vc$SlOb(8|Qj%G6Zbz`)ADAb|0PA&Q3F{FKbJO57S0V-k9S z8ZXsH|GNfhZq+03g>zCvf=;tP;XC`Os8iYk;1{Jw_Z506pCIf?~ LtDnm{r-UW|^8SL` literal 0 HcmV?d00001 diff --git a/android/Toodle/app/src/main/res/drawable-mdpi/ic_plus_black_18dp.png b/android/Toodle/app/src/main/res/drawable-mdpi/ic_plus_black_18dp.png new file mode 100644 index 0000000000000000000000000000000000000000..7dac63e727f34f3edf66cd44059cf1fc16adedda GIT binary patch literal 386 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1|-AI^@Rf|mUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZKG z?d}4kf#9d}?s_1_S>O>_45U54*zIJt9gyMd>Eak-aXL9c;^F~@E=@M}1rquRi>7U6 zpYPa{QNzr}*2WoeL;?u(7Ica$bO)YwJ<`C;qilVxgOQCV%)A+6D$z1_l9)Hw;lU!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV z+ua371Hn({-St3`L!+Fkmr_V{_hHpl;O?*NBpo#FA92CkWnd7%c*77yLvDUbW?Cg~4T>=dy+92bARCIy z(yfvbi&J$=i!vF~GILU`^!4>iatrix6Vo%3vvtGM!$PWj%~B>jNN)w|VeoYIb6Mw< G&;$Ut<73SL literal 0 HcmV?d00001 diff --git a/android/Toodle/app/src/main/res/drawable-mdpi/ic_plus_black_36dp.png b/android/Toodle/app/src/main/res/drawable-mdpi/ic_plus_black_36dp.png new file mode 100644 index 0000000000000000000000000000000000000000..4d1d2669b6e791ababf060d156a320576d5283c5 GIT binary patch literal 446 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbBSkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+eS5K)hhiu0R{01Y44~ zy9wy$!fk$L9koEv$x0Bg+Kt{c%i(^Q{;kVN+ay1xmxaME1e>(r^@|)AI zb_eL+UL(V^i=Bo25g$h$gW{8PA5PmN%nWB9n|e>WP-a~(G)uT8XrVx>#+BLEl0;&> z*N1Jc+P8RbyG}r`3!}`*gNS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)pVryh>nTu$sZZAYL$MSD+10f-TA0 z-33Sk!B6Mi^+1ZVz$3C4NPB>>+sSM@AS1}r#W5t~-rMVrdNeZMAs!vj~V z&0_bvd6O9!=B7Ws_xZ@0^5g@8Oj$6f{eJS!4c~6uT(_T*(e!`gtOh7#V0due?y)el z*~W=Go&il)Epd$~Nl7e8wMs5Z1yT$~28QOkhK9OEW+4WKRwiavrl#5k237_J0gN{c zQ8eV{r(~v8;?|%Tlh6y)paHU>xGdc&DX}PvpdJQKS3j3^P6NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZKG z?d}4kf#9d}?s_1_S>O>_45U54*zIJt9gq>>>Eak-aXL9cV&{S_Tdsg`!vrfar8Bb_ zmdbw6OjK literal 0 HcmV?d00001 diff --git a/android/Toodle/app/src/main/res/drawable-mdpi/ic_plus_grey600_24dp.png b/android/Toodle/app/src/main/res/drawable-mdpi/ic_plus_grey600_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..b0bfb7584860c66ae595fbbd7849a232e78f397d GIT binary patch literal 379 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV z+ua371Hn({-St3vHaxR2OC7#SFv>lzyB8kvO{7+RT_S(%z@8yHv_7z8lhFhtRio1c=IR*74K zVoX9WP=f}@hT^hxtE9x@RNc~|Oop_~oK!1)ef^T$0{z^?^vvXJT}#uTtQ5C&|k1|%Oc%$NbBSkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+eS5K)hhiu0R{01Y44~ zy9wy$!fk$L9koEv$x0Bg+K*lOh7srr@!*8cKavfF>aQ)A-cexK+1EhbuD@-xlp<)e$pA8N@=%;mAj_x zG`~`v|GKm6=hD=BRX+-Km!5gQt?R_%YgX>B=B`T>StQWfr}k(0y|(8XUpN$>FzYwY zw%u6va^VM{t5r)}BT7;dOH!?pi&B9UgOP!uxvrt1u8~=YfuWU&nU$%jwt<0_fk6P{ z4MP+Sx%nxXX_dG&D8?l80ySuWY$z^Ew@OMZPSq_f%4A5(%t^J<*Viw}Ezr+ROwUZt d)-?=pa|;dfE@uwvivj9k@O1TaS?83{1OS+hrAGh& literal 0 HcmV?d00001 diff --git a/android/Toodle/app/src/main/res/drawable-mdpi/ic_plus_grey600_48dp.png b/android/Toodle/app/src/main/res/drawable-mdpi/ic_plus_grey600_48dp.png new file mode 100644 index 0000000000000000000000000000000000000000..bbed80dfbe8ca85ffbaf5d37e1ebc9ecad632f83 GIT binary patch literal 414 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTCmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)pVryh>nTu$sZZAYL$MSD+10f-TA0 z-33Sk!B6Mi^+1ZVz$3C4NPB>>+sSM@AS2$>#W5t~-rMVjd<_Z$u8v>MRdeyJ)!n!# zvcAVymUp)JtW+Kbh37AJ?O3($tIhMAnWbf{dt4o6HJC7FGF@U>lKWo${M}`@-@W_t zQ(R!eGy4f@3cgTTh6elHjIX!wnCXQrSp&36wZt`|BqgyV)hf9t6-Y4{85o-D8XD>v znS~e_TA7$xnVM=F7+4t?1Tfw(MA49&pOTqYiCcqWOhPYEg9gZk;<9wBq{QM>-O{2= whP2F_R4aXb{gT`Q{oKU#%;ap{OqV>zBI7iJ&wFjZ0`)L>y85}Sb4q9e00wJ%`v3p{ literal 0 HcmV?d00001 diff --git a/android/Toodle/app/src/main/res/drawable-mdpi/ic_plus_white_18dp.png b/android/Toodle/app/src/main/res/drawable-mdpi/ic_plus_white_18dp.png new file mode 100644 index 0000000000000000000000000000000000000000..42695dd25795d4947153ea3a2e98ed1615b1e964 GIT binary patch literal 393 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1|-AI^@Rf|mUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZKG z?d}4kf#9d}?s_1_S>O>_45U54*zIJt9gyMW>Eak-aXL9cV&{YZ|NpZAvH5~FNA`dJ z|JOH6uu{v~S@S{iNQaml8xIeU@P#W94llVg9MwFx^mZVxG7o`Fz1|tJQb6rD2T_dv)14AnlGb>Y5Z36=<1A_p@ z8-^$va`RI%(<*UmP>f0F1!~X$*-%`TZk3c+oT^(|l*y2mnUiXzudiQ{TcDqtn4X!O dts5TfRi0%Yo`2_)M>|jtgQu&X%Q~loCIGmFa~%Kx literal 0 HcmV?d00001 diff --git a/android/Toodle/app/src/main/res/drawable-mdpi/ic_plus_white_24dp.png b/android/Toodle/app/src/main/res/drawable-mdpi/ic_plus_white_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..c3c1bc90e29d69500e57aa840e8231e46dcd6176 GIT binary patch literal 373 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV z+ua371Hn({-St3aHT2GAc&D6u}g$w+H1dVpb4rat`Q|Ei6yC4 z$wjF^iowXh&|KHhP}j&T#K6$X#LUXnRNKJ7%D^Ci@rEIahTQy=%(P0}8Wdv^dVv}= zKsFSYrCTK>7N_c#7G*M|W#*(>>Fev4|k1|%Oc%$NbBSkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+eS5K)hhiu0R{01Y44~ zy9wy$!fk$L9koEv$x0Bg+Kt`LVi(^Q{;kVPg`5F{>T$UfJzB&8k#SbZ^ zhYwBo5a{LfXiw;F&0sZ21`b7gXE*j4Gnp=2aTDxR{#@3+ROGw(AD)-t|Yet%=`XZ|bZ?wpglcKPDxS)%&7vv&oiWlPN6J||Vg#ZkmW zy5GK3=SqvfrNg`eQ!6~qu?cMkx=6LeHKHUXu_VKd7a7#Lca zm|2;cY8x0>85jgG-Y`Vbkei>9nO2EggJMiVFHnO9$cEywbgQJq;#A$zqD+Rg%$!s! qeSQ6s+yedF#PrPMY+bj?oT6gO(40x#1#^IU7(8A5T-G@yGywp&1&ZbX literal 0 HcmV?d00001 diff --git a/android/Toodle/app/src/main/res/drawable-mdpi/ic_plus_white_48dp.png b/android/Toodle/app/src/main/res/drawable-mdpi/ic_plus_white_48dp.png new file mode 100644 index 0000000000000000000000000000000000000000..546170d2b3b5bd454ba34fb16a9a9fb103f22176 GIT binary patch literal 411 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTCmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)pVryh>nTu$sZZAYL$MSD+10f-TA0 z-33Sk!B6Mi^+1ZVz$3C4NPB>>+sSM@AS1@p#W5t~-rMUNc@HS?xH``HTVD2R$s)t} zz;|p1Y%b2&%Fr-pmer2kzYSMprCc)=E$C`6Va#N@#Il6bRdP`(kYX@0Ff`XSG}JXR3o$UX zGBL9xdKf%i{an^LB{Ts5%@KRP literal 0 HcmV?d00001 diff --git a/android/Toodle/app/src/main/res/drawable-xhdpi/ic_plus_black_18dp.png b/android/Toodle/app/src/main/res/drawable-xhdpi/ic_plus_black_18dp.png new file mode 100644 index 0000000000000000000000000000000000000000..57e7b4113e98884f47c620df0d29b720b426c174 GIT binary patch literal 446 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbBSkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+eS5K)hhiu0R{01Y44~ zy9wy$!fk$L9koEv$x0Bg+Kt{c%i(^Q{;kVN+ay1xmxaME1e>(r^@|)AI zb_eL+UL(V^i=Bo25g$h$gW{8PA5PmN%nWB9n|e>WP-a~(G)uT8XrVx>#+BLEl0;&> z*N1Jc+P8RbyG}r`3!}`*gT@jES8CY4N`uh-24}+(xpUXO@geCytP>1jU literal 0 HcmV?d00001 diff --git a/android/Toodle/app/src/main/res/drawable-xhdpi/ic_plus_black_24dp.png b/android/Toodle/app/src/main/res/drawable-xhdpi/ic_plus_black_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..f6b735452fd6e9d300112ad47c355cbd4edd623a GIT binary patch literal 401 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTCmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)pVryh>nTu$sZZAYL$MSD+10f-TA0 z-33Sk!B6Mi^+1ZVz$3C4NPB>>+sSM@AS1}r#W5t~-rMVrdNeZMAs!vj~V z&0_bvd6O9!=B7Ws_xZ@0^5g@8Oj$6f{eJS!4c~6uT(_T*(e!`gtOh7#V0due?y)el z*~W=Go&il)Epd$~Nl7e8wMs5Z1yT$~28QOkhK9OEW+4WKRwiavrl#5k237_J0gN{c zQ8eV{r(~v8;?|%Tlh6y)paHU>xGdc&DX}!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV z+ua371Hn({-St38;E2k7__F`**AIWb zegDz~lhe6x?fWe$UloroM+KlQ4fQ)2=h-j^d6qe?19DYMTq8&O-#>B&ek<_am&l_Gb@`tQyvr)44$rjF6*2UngBU_ Bfu;Ze literal 0 HcmV?d00001 diff --git a/android/Toodle/app/src/main/res/drawable-xhdpi/ic_plus_black_48dp.png b/android/Toodle/app/src/main/res/drawable-xhdpi/ic_plus_black_48dp.png new file mode 100644 index 0000000000000000000000000000000000000000..b6205e20f5787a3f08368854aa770c26993c0452 GIT binary patch literal 508 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGoEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV z+ua371Hn({-St3iqr;H>wuzx0mk!;ZKku#WbMjA;71Iv1|=7N_c#7G*M|W#*(>>Fev4|k1|%Oc%$NbBSkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+eS5K)hhiu0R{01Y44~ zy9wy$!fk$L9koEv$x0Bg+K*lOh7srr@!*8cKavfF>aQ)A-cexK+1EhbuD@-xlp<)e$pA8N@=%;mAj_x zG`~`v|GKm6=hD=BRX+-Km!5gQt?R_%YgX>B=B`T>StQWfr}k(0y|(8XUpN$>FzYwY zw%u6va^VM{t5r)}BT7;dOH!?pi&B9UgOP!uxvrt1u8~=YfuWU&nU$%jwt<0_fk6P{ z4MP+Sx%nxXX_dG&D8?l80ySuWY$z^Ew@OMZPSq_f%4A5(%t^J<*Viw}Ezr+ROwUZt d*3B~rD)4nO&f9Tlr5jKWgQu&X%Q~loCIGGjri%ao literal 0 HcmV?d00001 diff --git a/android/Toodle/app/src/main/res/drawable-xhdpi/ic_plus_grey600_24dp.png b/android/Toodle/app/src/main/res/drawable-xhdpi/ic_plus_grey600_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..3db30a63cdf7f03832b2e4ad19df142b581bff86 GIT binary patch literal 414 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTCmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)pVryh>nTu$sZZAYL$MSD+10f-TA0 z-33Sk!B6Mi^+1ZVz$3C4NPB>>+sSM@AS2$>#W5t~-rMVjd<_Z$u8v>MRdeyJ)!n!# zvcAVymUp)JtW+Kbh37AJ?O3($tIhMAnWbf{dt4o6HJC7FGF@U>lKWo${M}`@-@W_t zQ(R!eGy4f@3cgTTh6elHjIX!wnCXQrSp&36wZt`|BqgyV)hf9t6-Y4{85o-D8XD>v znS~e_TA7$xnVM=F7+4t?1Tfw(MA49&pOTqYiCcqWOhPYEg9gZk;<9wBq{QM>-O{2= vhP2F_R4aXb{gT`Q{oKU#%;aoc)8rfpOWi literal 0 HcmV?d00001 diff --git a/android/Toodle/app/src/main/res/drawable-xhdpi/ic_plus_grey600_36dp.png b/android/Toodle/app/src/main/res/drawable-xhdpi/ic_plus_grey600_36dp.png new file mode 100644 index 0000000000000000000000000000000000000000..ce09262a9bad7e6b9a8b3f236dfce5d8b78907d8 GIT binary patch literal 473 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!Ea{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV z+ua371Hn({-St3P{tpXD~L-UVHuK??Rc|&#T|bJ$T2$#l+g!xGdc&DX}4sZGc`MhcXe(y PP!EHrtDnm{r-UW|yrhYh literal 0 HcmV?d00001 diff --git a/android/Toodle/app/src/main/res/drawable-xhdpi/ic_plus_grey600_48dp.png b/android/Toodle/app/src/main/res/drawable-xhdpi/ic_plus_grey600_48dp.png new file mode 100644 index 0000000000000000000000000000000000000000..dd06a3060443160ceca59e83e80099a5ae2f7070 GIT binary patch literal 518 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGoEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV z+ua371Hn({-St36P1sEK!*?;DeTWfzI zr|IQ_&~QCxt2=FmKxH8CBQ)IhKy2~3=es{|y%tzrb%ptlHDeOf5ta^40bvC-2cL!+ z42F0Ga(?rjUA}kj<+t~&KQW=`yb-wjOY#r-18Jlf=L2yU&}EavH_YbAOOs+h0Tfa# zag8WRNi0dVN-jzTQVd20hUU74hPp;(AqIw4CT3QqrrHJuRt5$Ej5k1@Lukm&PsvQH z#H~RwCZQLoK?7t%aap=mQettcZfQ{_Lt17|s+GRJeo1bDer{rVW^%T!VPZgLlw*|t TvWE8(AcuOo`njxgN@xNAptzCg literal 0 HcmV?d00001 diff --git a/android/Toodle/app/src/main/res/drawable-xhdpi/ic_plus_white_18dp.png b/android/Toodle/app/src/main/res/drawable-xhdpi/ic_plus_white_18dp.png new file mode 100644 index 0000000000000000000000000000000000000000..07c8e7c4a750273605bfa5a6115d4b7c26eb5130 GIT binary patch literal 453 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbBSkfJR9T^xl_H+M9WCijWi-X*q z7}lMWc?skwBzpw;GB8xBF)%c=FfjZA3N^f7U???UV0e|lz+eS5K)hhiu0R{01Y44~ zy9wy$!fk$L9koEv$x0Bg+Kt`LVi(^Q{;kVPg`5F{>T$UfJzB&8k#SbZ^ zhYwBo5a{LfXiw;F&0sZ21`b7gXE*j4Gnp=2aTDxR{#@3+ROGw(AD)-t|Yet%=`XZ|bZ?wpglcKPDxS)%&7vv&oiWlPN6J||Vg#ZkmW zy5GK3=SqvfrNg`eQ!6~qu?cMkx=6LeHKHUXu_VKd7a7#Lca zm|2;cY8x0>85jgG-Y`Vbkei>9nO2EggJMiVFHnO9$cEywbgQJq;#A$zqD+Rg%$!s! qeSQ6s+yedF#PrPMY~7Nq2=~B(^pxZ!cddbX7(8A5T-G@yGywp%c8c2o literal 0 HcmV?d00001 diff --git a/android/Toodle/app/src/main/res/drawable-xhdpi/ic_plus_white_24dp.png b/android/Toodle/app/src/main/res/drawable-xhdpi/ic_plus_white_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..d013abd0dfcace60de32a93476ba1a378a72402f GIT binary patch literal 411 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTCmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)pVryh>nTu$sZZAYL$MSD+10f-TA0 z-33Sk!B6Mi^+1ZVz$3C4NPB>>+sSM@AS1@p#W5t~-rMUNc@HS?xH``HTVD2R$s)t} zz;|p1Y%b2&%Fr-pmer2kzYSMprCc)=E$C`6Va#N@#Il6bRdP`(kYX@0Ff`XSG}JXR3o$UX zGBL9S6G7^>bP0l+XkK)}efY literal 0 HcmV?d00001 diff --git a/android/Toodle/app/src/main/res/drawable-xhdpi/ic_plus_white_36dp.png b/android/Toodle/app/src/main/res/drawable-xhdpi/ic_plus_white_36dp.png new file mode 100644 index 0000000000000000000000000000000000000000..d8d5c3e5dda5b7908b5c9e88b5d9d565aa9c2b10 GIT binary patch literal 470 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!Ea{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV z+ua371Hn({-St3`Y@S8AM2M({!fbc#Z-=@8)V)8r%bzqd4i0~ZgvBCswJ)wB`Jv| zsaDBFsX&Us$iUEC*U(Vc$SlOb(8|Qj%G6Zbz`)ADAb|0PA&Q3F{FKbJO57S0V-k9S z8ZXsH|GNfhZq+03g>zCvf=;tP;XC`Os8b=xyItNrFE^n9_2-L&i M>FVdQ&MBb@0R2IOqyPW_ literal 0 HcmV?d00001 diff --git a/android/Toodle/app/src/main/res/drawable-xhdpi/ic_plus_white_48dp.png b/android/Toodle/app/src/main/res/drawable-xhdpi/ic_plus_white_48dp.png new file mode 100644 index 0000000000000000000000000000000000000000..044a85fcd8906909ad69de7fc7a7cd10848e2bb8 GIT binary patch literal 515 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGoEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV z+ua371Hn({-St3sQn2c>Xirz^@ZmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZKG z?d}4kf#9d}?s_1_S>O>_45U54*zIJt9gwlc)5S3)d8r^+KSG#m{(i zz;C|9)do7!hc_8Qh}qXRCoTLtCw$+W+8|CFi~a+}OS5w-FPz=i)s}ks7i(<9w#pdw z&D?LL9b*gpS2TX_P3VX#*}Q&H;!TNZy-?!IkJ~|wzt8wgQt|x%mi1D&e!Zjfz5hUW ztCqM%l%ynmdKI;Vst01a%Sr2qf` literal 0 HcmV?d00001 diff --git a/android/Toodle/app/src/main/res/drawable-xxhdpi/ic_plus_black_24dp.png b/android/Toodle/app/src/main/res/drawable-xxhdpi/ic_plus_black_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..453ef48ed070eabf371665c02e1f31e74ae687c7 GIT binary patch literal 460 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!Ea{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV z+ua371Hn({-St38;E2k7__F`**AIWb zegDz~lhe6x?fWe$UloroM+KlQ4fQ)2=h-j^d6qe?19DYMTq8&O-#>B&ejb#t0+nIN{ra}eE(^n9tKZWKbLh*2~7Z5 Cw}Zw2 literal 0 HcmV?d00001 diff --git a/android/Toodle/app/src/main/res/drawable-xxhdpi/ic_plus_black_36dp.png b/android/Toodle/app/src/main/res/drawable-xxhdpi/ic_plus_black_36dp.png new file mode 100644 index 0000000000000000000000000000000000000000..26ae98a008abffa4b18155d39302e18fd665356a GIT binary patch literal 604 zcmeAS@N?(olHy`uVBq!ia0vp^IUvlz1|<8_!p{OJmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZKG z?d}4kf#9d}?s_1_S>O>_45U54*zIJt9ng4LPZ!6Kid%2*26`QK5OKJ;e24yK|+(+1Zo5?X*X=bv2`PWZJXG?4P%7 z7XKB#K3%`zzMziV28n}7EZrnAc0Lb$o0=y-|K8`Q_vX)P&K0WHZ)aY=b#`gmzIi2U zzE`c-b_CVXozK-b-){WA@yz4B7R5)c)c2i{J2_24Iie@Qu<0m=7)gxJ@&EF+yftBm zd9tDX6K~whkX?t4Wz7PLsg}4#l%yntW$i9$Fq+c*{~_C&;Cqu6{1-oD!Mcv7|ftIx;Y9?C1WI$O_~$76-XI zF|0c$^AgBWNcITwWnidMV_;}#VPN_c&H|6fVj%4S#%?FG?SRH>c)B=-RNQ)d*O2S5fdIq7&Hw*D-{F(Y zb51Dbu+Lg2kM2{Kd4TFsKtW#g-bVJHcVgbZNlT00%XrV%L4`?4P@uEHgT+NjL5Oi8 zM~4eVLXnow-@o&5TBp0yTOX&fkIt{w|KIxe05^5)L~=hPig$sWKSvn@M46WfNrv78 z@>EM)BT7;dOH!?pi&B9UgOP!uxvrt1u8~=YfuWU&nU$%jwt<0_fk6P{4MP+Sx%nxX zX_dG&D8?l80ySuWY$z^Ew@OMZPSq_f%4A5(%t^J<*Viw}Ezr+ROwUZt)=l#&s7fn! V5A9#V{|%^z!PC{xWt~$(69D$spaK8@ literal 0 HcmV?d00001 diff --git a/android/Toodle/app/src/main/res/drawable-xxhdpi/ic_plus_grey600_18dp.png b/android/Toodle/app/src/main/res/drawable-xxhdpi/ic_plus_grey600_18dp.png new file mode 100644 index 0000000000000000000000000000000000000000..1858f6f9c595a066a2aaf730feab9c67c1fb3137 GIT binary patch literal 525 zcmeAS@N?(olHy`uVBq!ia0vp^W+2SL1|)l2v+e>ZmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZKG z?d}4kf#9d}?s_1_S>O>_45U54*zIJt9guO()5S3)?hie8C`_nm^(0 ziG=SWT$PJIvB@o!&e69$67(Rdx%W?ff3rc|rc>-)K%Eb~v-T=16>&+?IF@_8bn?@C zdrLRW`Ro|l|MX1N`*T$Xqd1=N9^9ii!<^-FTf)7NsSl!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV z+ua371Hn({-St3P{tpXD~L-UVHuK??Rc|&#T|bJ$T2$#l+g!xGdc&DX}NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZKG z?d}4kf#9d}?s_1_S>O>_45U54*zIJt9nkm)PZ!6Kid%2*9?WWX5NW$8`LggNHc8+%_0AwF>I=BqXwM6DM>z zH}v1#`CkJ;E>KeT&o*8Rz~_O_gmG@YyR_}yUIP+Z>_tNxBd0a&331>4M}hhs;kd<|Ji-f zHv6IN_2uxudGVCn?~5I)TmHjxU|^}1xJHzuB$lLFB^RXvDF!10Lvvk2LtP`Y5CcOi z6EiDQQ*8qSD+7Z7#v6tx8glbfGSez?Yfy|y=ml!f0NGGnmTr}lSe&X`T9nCPi3r literal 0 HcmV?d00001 diff --git a/android/Toodle/app/src/main/res/drawable-xxhdpi/ic_plus_grey600_48dp.png b/android/Toodle/app/src/main/res/drawable-xxhdpi/ic_plus_grey600_48dp.png new file mode 100644 index 0000000000000000000000000000000000000000..693430e516abad178add66bd52e9b430b9285413 GIT binary patch literal 622 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q4M;wBd$a>cv7|ftIx;Y9?C1WI$O_~$76-XI zF|0c$^AgBWNcITwWnidMV_;}#VPN_c&H|6fVj%4S#%?FG?SRJXd%8G=RNQ)d*O2S5fdGS}W&JhnFE5r9 zN-}*DnsUHrty72V)4LKt9Vp;H_3?Myf4VH6e?Ikd>$L6C$u?#24gb{?gcv7sbhtRE zFewQNbT)XfxF}I1lr#Htd8wM>{I|1izF@~`2OC7#SFv>lzyB8kvO{7+RT_S(%z?8yHv_7$m+t zv<5{(ZhlH;S|x4`0$ZvCfEqMFHWZhoTO}nHr|Om#Wiq5?=A>Hb>+6@~7U<_Dre`K+ d>*ks!IcFzEcr{;>k_YNx@O1TaS?83{1OO>%rUC!} literal 0 HcmV?d00001 diff --git a/android/Toodle/app/src/main/res/drawable-xxhdpi/ic_plus_white_18dp.png b/android/Toodle/app/src/main/res/drawable-xxhdpi/ic_plus_white_18dp.png new file mode 100644 index 0000000000000000000000000000000000000000..2f92b27de1ac6dc67297e194491ac6c030831839 GIT binary patch literal 500 zcmeAS@N?(olHy`uVBq!ia0vp^W+2SL1|)l2v+e>ZmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZKG z?d}4kf#9d}?s_1_S>O>_45U54*zIJt9gwlr)5S3)G$?_!i_$Po*I$QQS^7@9OH^064d`35Y@0(DS z2s2;(7qW*R?_6oCqT74FQ(A8S2HP;UgA#YYZwj9X(k|VU>bxO`W7=84`sgsv_g=g} z%m2S+?#*4x)o^p+eIQS@#5JNMC9x#cD!C{XNHG{07@F%E8tNLEg%}uGnV4Cbnra&u zSQ!`uFy1gk(U6;;l9^VCTZ3XuLN8E*2FQluvUIDY#Nt%l(xOa;w9K4TD}8!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV z+ua371Hn({-St3`Y@S8AM2M({!fbc#Z-=@8)V)8r%bzqd4i0~ZgvBCswJ)wB`Jv| zsaDBFsX&Us$iUEC*U(Vc$SlOb(8|Qj%G6Zbz`)ADAb|0PA&Q3F{FKbJO57S0V-k9S z8ZXsH|GNfhZq+03g>zCvf=;tP;XC`OshFNCiMw+@hoeQp00P11z MboFyt=akR{0Qe(=GXMYp literal 0 HcmV?d00001 diff --git a/android/Toodle/app/src/main/res/drawable-xxhdpi/ic_plus_white_36dp.png b/android/Toodle/app/src/main/res/drawable-xxhdpi/ic_plus_white_36dp.png new file mode 100644 index 0000000000000000000000000000000000000000..cd217ab5424c278ec439c4c076597f00bdbede15 GIT binary patch literal 622 zcmeAS@N?(olHy`uVBq!ia0vp^IUvlz1|<8_!p{OJmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZKG z?d}4kf#9d}?s_1_S>O>_45U54*zIJt9ng4vPZ!6Kid%2*zRhfL5OKI@xMcm-%{iIN zjDnlmz9#1voqO*%FGhe(&I05{FgQ?ebl3KP;I-1Z$0a@=+n73Q+0%EC@n0*yGqBG* zE)j2iPPd%@*Q);A><`LWx&?LIHb@*yB8lM_ef8c>yV@z0Js)pae70S8`;Tp|?w>QE zZ!6zK&);_{Img}hQqeKzTA^eVW1pR=zESkB`po0AdgsLVRiEFr?tJO(&+jbzA54}| zj_64+Y&yyzMiS$5_`kd@G9_@IH*EjJY}99cJH_7iCNL;eOI#yLQW8s2t&)pUffR$0 zfuXssp`oskS%`t5m5G^^sj0Ssft7(l0OJiq6b-rgDVb@NxHTxoB=iC`Xn<@eE=#vc zN-R#*EiKAqNXyJgwbIwuFUc*?&rM9vOwQH~w5UpqNGUXB@moF@6hWS@elF{r5}E*J CdeQ>` literal 0 HcmV?d00001 diff --git a/android/Toodle/app/src/main/res/drawable-xxhdpi/ic_plus_white_48dp.png b/android/Toodle/app/src/main/res/drawable-xxhdpi/ic_plus_white_48dp.png new file mode 100644 index 0000000000000000000000000000000000000000..d4d791b072bdce2ec17f64d71e7265fba31dceeb GIT binary patch literal 619 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q4M;wBd$a>cv7|ftIx;Y9?C1WI$O_~$76-XI zF|0c$^AgBWNcITwWnidMV_;}#VPN_c&H|6fVj%4S#%?FG?SRJXc)B=-RNQ)dcOw^*p#a0h-v9s4Z`?Sg zxp;!cp77-yi5@$xnStt2z@F`X@ejh^?EOCXbGB~2xpDtx@dx`kJ6s%8n3MzsIvYG# zT$B`q7$9pC zx%nxXX_dG&2yCem0BX!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV z+ua371Hn({-St38;E2k7__F`**AIWb zegDz~lhe6x?fWe$UloroM+KlQ4fQ)2=h-j^d6qe?19DYMTq8!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV z+ua371Hn({-St3iqr;H>wuzx0mk!;ZKku#WbMjA;71Iv1|=>c*0kWaE zEZr(8u{c$?v?!AyEi)(8N?%{UB)336H!(dkIa@b9(aF55ATM~%r0<~UVeoYIb6Mw< G&;$So0*xR5 literal 0 HcmV?d00001 diff --git a/android/Toodle/app/src/main/res/drawable-xxxhdpi/ic_plus_black_36dp.png b/android/Toodle/app/src/main/res/drawable-xxxhdpi/ic_plus_black_36dp.png new file mode 100644 index 0000000000000000000000000000000000000000..91eb9f6141dfc640eceae93b44aedd24ee4e17a9 GIT binary patch literal 615 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q4M;wBd$a>cv7|ftIx;Y9?C1WI$O_~$76-XI zF|0c$^AgBWNcITwWnidMV_;}#VPN_c&H|6fVj%4S#%?FG?SRH>c)B=-RNQ)d*O2S5fdIq7&Hw*D-{F(Y zb51Dbu+Lg2kM2{Kd4TFsKtW#g-bVJHcVgbZNlT00%XrV%L4`?4P@uEHgT+NjL5Oi8 zM~4eVLXnow-@o&5TBp0yTOX&fkIt{w|KIxe05^5)L~=hPig$sWKSvn@M46WfNrv78 z@>EM)BT7;dOH!?pi&B9UgOP!uxvrt1u8~=YfuWU&nU$%Twt<0_fkEQSLu*hpZtQajI@vp%_pPgQu&X%Q~loCIEdLpb-E7 literal 0 HcmV?d00001 diff --git a/android/Toodle/app/src/main/res/drawable-xxxhdpi/ic_plus_black_48dp.png b/android/Toodle/app/src/main/res/drawable-xxxhdpi/ic_plus_black_48dp.png new file mode 100644 index 0000000000000000000000000000000000000000..e69da0a5e7cffb6b9a87ea771e7be84c5a8850ca GIT binary patch literal 735 zcmeAS@N?(olHy`uVBq!ia0vp^2SAvE4M+yv$zcalEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV z+ua371Hn({-St3;HLMSq)Eg zT7Tx3QSr7rxs4I18aMENdzqPKPWS7#7rXmjGA2x7@DOImWK!^DSi;$0!Z<;V;S!6( zEIJ5o^XD%(Y-!8jZC88j4w076uUq|Bc=dnDHy68!)j|WG;SO7nOn;2PHs*Vo!cTdD z9Muxnh?11Vl2ohYqEsNoU}Ruuu4`zhYh)H;U}$AxW@T!oZD3$!V37Fo&>9pCx%nxX zX_dG&2yCem0BXvxi$a* literal 0 HcmV?d00001 diff --git a/android/Toodle/app/src/main/res/drawable-xxxhdpi/ic_plus_grey600_18dp.png b/android/Toodle/app/src/main/res/drawable-xxxhdpi/ic_plus_grey600_18dp.png new file mode 100644 index 0000000000000000000000000000000000000000..fdb7de9acf1dd48d7e86780bc328c189338cfcac GIT binary patch literal 473 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!Ea{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV z+ua371Hn({-St3P{tpXD~L-UVHuK??Rc|&#T|bJ$T2$#l+g!>`X#vq`nieenaSC@zR8xAmZg3vyb>K= PKs^keu6{1-oD!M!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV z+ua371Hn({-St36P1sEK!*?;DeTWfzI zr|IQ_&~QCxt2=FmKxH8CBQ)IhKy2~3=es{|y%tzrb%ptlHDeOf5ta^40bvC-2cL!+ z42F0Ga(?rjUA}kj<+t~&KQW=`yb-wjOY#r-18Jlf=L2yU&}EavH_YbAOOs+h0Tfa# zag8WRNi0dVN-jzTQVd20hUU74hPp;(AqIw4CT3QqX4(b@Rt5%%FAuFj(U6;;l9^VC zTZ6!sDgmGd4Ui4RW$9K)iN&e9rA3(xX_+~xR{Hw-CAkIqxrynS$=SMIMotAmZf+j; S8V#924)t{Pb6Mw<&;$T1N|IOr literal 0 HcmV?d00001 diff --git a/android/Toodle/app/src/main/res/drawable-xxxhdpi/ic_plus_grey600_36dp.png b/android/Toodle/app/src/main/res/drawable-xxxhdpi/ic_plus_grey600_36dp.png new file mode 100644 index 0000000000000000000000000000000000000000..cacea382524d42fc58f3dec090de5facbc0d012c GIT binary patch literal 622 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q4M;wBd$a>cv7|ftIx;Y9?C1WI$O_~$76-XI zF|0c$^AgBWNcITwWnidMV_;}#VPN_c&H|6fVj%4S#%?FG?SRJXd%8G=RNQ)d*O2S5fdGS}W&JhnFE5r9 zN-}*DnsUHrty72V)4LKt9Vp;H_3?Myf4VH6e?Ikd>$L6C$u?#24gb{?gcv7sbhtRE zFewQNbT)XfxF}I1lr#Htd8wM>{I|1izF@~`2OC7#SFv>lzyB8kvO{7+RT_S(%z?8yHv_7$m+t zv<5{(ZhlH;S|x4`0$ZvCfEqMFHWZhoTO}nHr|Om#Wiq5?=A>Hb>+6@~7U<_Dre`K+ d>qeQERhovCB$mHfF$t)L!PC{xWt~$(6977pr#Jur literal 0 HcmV?d00001 diff --git a/android/Toodle/app/src/main/res/drawable-xxxhdpi/ic_plus_grey600_48dp.png b/android/Toodle/app/src/main/res/drawable-xxxhdpi/ic_plus_grey600_48dp.png new file mode 100644 index 0000000000000000000000000000000000000000..29b1e045ad8c633bf451fd5339f40870f2b6783a GIT binary patch literal 750 zcmeAS@N?(olHy`uVBq!ia0vp^2SAvE4M+yv$zcalEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV z+ua371Hn({-St3F^S`IzZUyde{r6FmHB`dlY%e963zw_#tCW+ zmslKTF?a|wWYR(K*1oC+!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV z+ua371Hn({-St3`Y@S8AM2M({!fbc#Z-=@8)V)8r%bzqd4i0~ZgvBCswJ)wB`Jv| zsaDBFsX&Us$iUEC*U(Vc$SlOb(8|Qj%G6BTz`)ADAo1m)H7FW#^HVa@DsgKN*it0` z)Sv;fp|~vFDk-rzRkyS#lOZiLC)G+{U%w=`KtDGzJu^95x3oMd*&^4}DB;sNNuVAE MPgg&ebxsLQ0G$toGXMYp literal 0 HcmV?d00001 diff --git a/android/Toodle/app/src/main/res/drawable-xxxhdpi/ic_plus_white_24dp.png b/android/Toodle/app/src/main/res/drawable-xxxhdpi/ic_plus_white_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..65e906f392b124f3a062fcec43efc22f2ff52db0 GIT binary patch literal 515 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGoEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV z+ua371Hn({-St3sQn2c>Xirz^@ktK2FQluvUIDY#Nt%l(xOa;w9K4TD}8cv7|ftIx;Y9?C1WI$O_~$76-XI zF|0c$^AgBWNcITwWnidMV_;}#VPN_c&H|6fVj%4S#%?FG?SRJXc)B=-RNQ)dcOw^*p#a0h-v9s4Z`?Sg zxp;!cp77-yi5@$xnStt2z@F`X@ejh^?EOCXbGB~2xpDtx@dx`kJ6s%8n3MzsIvYG# zT$B`q7$9pC zx%nxXX_dG&2yCem0BX!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV z+ua371Hn({-St3+ZY;3<~zB2&sh6WJs zPzK3N-@`DKh3DRG$1h!NO05xcUY$z^Ew@OMZPSq_f%4A5(%t^J<*Viw} lEzr+ROwUZt)-BGh$}I}>E7_HL#uBK9!PC{xWt~$(69D_D#?}A; literal 0 HcmV?d00001 diff --git a/android/Toodle/app/src/main/res/drawable/plus.xml b/android/Toodle/app/src/main/res/drawable/plus.xml new file mode 100644 index 0000000..aed1405 --- /dev/null +++ b/android/Toodle/app/src/main/res/drawable/plus.xml @@ -0,0 +1,8 @@ + + + + \ No newline at end of file diff --git a/android/Toodle/app/src/main/res/layout/activity_new_item.xml b/android/Toodle/app/src/main/res/layout/activity_new_item.xml new file mode 100644 index 0000000..5c1e02a --- /dev/null +++ b/android/Toodle/app/src/main/res/layout/activity_new_item.xml @@ -0,0 +1,52 @@ + + + + + +