├── .gitignore ├── .idea ├── .name ├── SudoQ.iml ├── compiler.xml ├── copyright │ └── profiles_settings.xml ├── misc.xml ├── modules.xml ├── vcs.xml └── workspace.xml ├── LICENSE ├── README ├── sudoq-app ├── .gradle │ └── 2.2.1 │ │ └── taskArtifacts │ │ ├── cache.properties │ │ └── cache.properties.lock ├── .idea │ ├── .name │ ├── compiler.xml │ ├── copyright │ │ └── profiles_settings.xml │ ├── gradle.xml │ ├── libraries │ │ ├── appcompat_v7_23_0_0.xml │ │ ├── cardview_v7_23_0_0.xml │ │ ├── commons_io_2_4.xml │ │ ├── commons_lang3_3_1.xml │ │ ├── design_23_0_0.xml │ │ ├── hamcrest_core_1_3.xml │ │ ├── junit_4_11.xml │ │ ├── org_apache_commons_io_2_4.xml │ │ ├── robotium_solo_4_1.xml │ │ ├── robotium_solo_5_4_1.xml │ │ ├── sudoqmodel_sudoqmodel.xml │ │ ├── support_annotations_23_0_0.xml │ │ └── support_v4_23_0_0.xml │ ├── misc.xml │ ├── modules.xml │ ├── runConfigurations.xml │ ├── vcs.xml │ └── workspace.xml ├── build.gradle ├── build │ └── intermediates │ │ └── model_data.bin ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── import-summary.txt ├── res │ ├── compromised.xml │ ├── game.dtd │ ├── game_example.xml │ ├── games.dtd │ ├── games_example.xml │ ├── profile.dtd │ ├── profiles.dtd │ ├── sudoku.dtd │ ├── sudoku_1.xml │ ├── sudoku_example.xml │ ├── tmp.xml │ └── tmp2.xml ├── settings.gradle ├── sudoq-app.iml ├── sudoq-app │ └── .idea │ │ ├── compiler.xml │ │ ├── copyright │ │ └── profiles_settings.xml │ │ ├── misc.xml │ │ ├── modules.xml │ │ ├── vcs.xml │ │ └── workspace.xml ├── sudoqapp │ ├── build.gradle │ ├── build │ │ ├── generated │ │ │ └── source │ │ │ │ ├── buildConfig │ │ │ │ ├── androidTest │ │ │ │ │ └── debug │ │ │ │ │ │ └── de │ │ │ │ │ │ └── sudoq │ │ │ │ │ │ └── test │ │ │ │ │ │ └── BuildConfig.java │ │ │ │ └── debug │ │ │ │ │ └── de │ │ │ │ │ └── sudoq │ │ │ │ │ └── BuildConfig.java │ │ │ │ └── r │ │ │ │ └── androidTest │ │ │ │ └── debug │ │ │ │ └── de │ │ │ │ └── sudoq │ │ │ │ └── test │ │ │ │ └── R.java │ │ └── intermediates │ │ │ ├── assets │ │ │ └── debug │ │ │ │ └── sudokus │ │ │ │ ├── HyperSudoku │ │ │ │ ├── HyperSudoku.xml │ │ │ │ ├── difficult │ │ │ │ │ ├── sudoku_1.xml │ │ │ │ │ ├── sudoku_10.xml │ │ │ │ │ ├── sudoku_2.xml │ │ │ │ │ ├── sudoku_3.xml │ │ │ │ │ ├── sudoku_4.xml │ │ │ │ │ ├── sudoku_5.xml │ │ │ │ │ ├── sudoku_6.xml │ │ │ │ │ ├── sudoku_7.xml │ │ │ │ │ ├── sudoku_8.xml │ │ │ │ │ └── sudoku_9.xml │ │ │ │ ├── easy │ │ │ │ │ ├── sudoku_1.xml │ │ │ │ │ ├── sudoku_10.xml │ │ │ │ │ ├── sudoku_2.xml │ │ │ │ │ ├── sudoku_3.xml │ │ │ │ │ ├── sudoku_4.xml │ │ │ │ │ ├── sudoku_5.xml │ │ │ │ │ ├── sudoku_6.xml │ │ │ │ │ ├── sudoku_7.xml │ │ │ │ │ ├── sudoku_8.xml │ │ │ │ │ └── sudoku_9.xml │ │ │ │ ├── infernal │ │ │ │ │ ├── sudoku_1.xml │ │ │ │ │ ├── sudoku_10.xml │ │ │ │ │ ├── sudoku_2.xml │ │ │ │ │ ├── sudoku_3.xml │ │ │ │ │ ├── sudoku_4.xml │ │ │ │ │ ├── sudoku_5.xml │ │ │ │ │ ├── sudoku_6.xml │ │ │ │ │ ├── sudoku_7.xml │ │ │ │ │ ├── sudoku_8.xml │ │ │ │ │ └── sudoku_9.xml │ │ │ │ └── medium │ │ │ │ │ ├── sudoku_1.xml │ │ │ │ │ ├── sudoku_10.xml │ │ │ │ │ ├── sudoku_2.xml │ │ │ │ │ ├── sudoku_3.xml │ │ │ │ │ ├── sudoku_4.xml │ │ │ │ │ ├── sudoku_5.xml │ │ │ │ │ ├── sudoku_6.xml │ │ │ │ │ ├── sudoku_7.xml │ │ │ │ │ ├── sudoku_8.xml │ │ │ │ │ └── sudoku_9.xml │ │ │ │ ├── Xsudoku │ │ │ │ ├── Xsudoku.xml │ │ │ │ ├── difficult │ │ │ │ │ ├── sudoku_1.xml │ │ │ │ │ ├── sudoku_10.xml │ │ │ │ │ ├── sudoku_2.xml │ │ │ │ │ ├── sudoku_3.xml │ │ │ │ │ ├── sudoku_4.xml │ │ │ │ │ ├── sudoku_5.xml │ │ │ │ │ ├── sudoku_6.xml │ │ │ │ │ ├── sudoku_7.xml │ │ │ │ │ ├── sudoku_8.xml │ │ │ │ │ └── sudoku_9.xml │ │ │ │ ├── easy │ │ │ │ │ ├── sudoku_1.xml │ │ │ │ │ ├── sudoku_10.xml │ │ │ │ │ ├── sudoku_2.xml │ │ │ │ │ ├── sudoku_3.xml │ │ │ │ │ ├── sudoku_4.xml │ │ │ │ │ ├── sudoku_5.xml │ │ │ │ │ ├── sudoku_6.xml │ │ │ │ │ ├── sudoku_7.xml │ │ │ │ │ ├── sudoku_8.xml │ │ │ │ │ └── sudoku_9.xml │ │ │ │ ├── infernal │ │ │ │ │ ├── sudoku_1.xml │ │ │ │ │ ├── sudoku_10.xml │ │ │ │ │ ├── sudoku_2.xml │ │ │ │ │ ├── sudoku_3.xml │ │ │ │ │ ├── sudoku_4.xml │ │ │ │ │ ├── sudoku_5.xml │ │ │ │ │ ├── sudoku_6.xml │ │ │ │ │ ├── sudoku_7.xml │ │ │ │ │ ├── sudoku_8.xml │ │ │ │ │ └── sudoku_9.xml │ │ │ │ └── medium │ │ │ │ │ ├── sudoku_1.xml │ │ │ │ │ ├── sudoku_10.xml │ │ │ │ │ ├── sudoku_2.xml │ │ │ │ │ ├── sudoku_3.xml │ │ │ │ │ ├── sudoku_4.xml │ │ │ │ │ ├── sudoku_5.xml │ │ │ │ │ ├── sudoku_6.xml │ │ │ │ │ ├── sudoku_7.xml │ │ │ │ │ ├── sudoku_8.xml │ │ │ │ │ └── sudoku_9.xml │ │ │ │ ├── samurai │ │ │ │ ├── difficult │ │ │ │ │ ├── sudoku_1.xml │ │ │ │ │ ├── sudoku_10.xml │ │ │ │ │ ├── sudoku_2.xml │ │ │ │ │ ├── sudoku_3.xml │ │ │ │ │ ├── sudoku_4.xml │ │ │ │ │ ├── sudoku_5.xml │ │ │ │ │ ├── sudoku_6.xml │ │ │ │ │ ├── sudoku_7.xml │ │ │ │ │ ├── sudoku_8.xml │ │ │ │ │ └── sudoku_9.xml │ │ │ │ ├── easy │ │ │ │ │ ├── sudoku_1.xml │ │ │ │ │ ├── sudoku_10.xml │ │ │ │ │ ├── sudoku_2.xml │ │ │ │ │ ├── sudoku_3.xml │ │ │ │ │ ├── sudoku_4.xml │ │ │ │ │ ├── sudoku_5.xml │ │ │ │ │ ├── sudoku_6.xml │ │ │ │ │ ├── sudoku_7.xml │ │ │ │ │ ├── sudoku_8.xml │ │ │ │ │ └── sudoku_9.xml │ │ │ │ ├── infernal │ │ │ │ │ ├── sudoku_1.xml │ │ │ │ │ ├── sudoku_10.xml │ │ │ │ │ ├── sudoku_2.xml │ │ │ │ │ ├── sudoku_3.xml │ │ │ │ │ ├── sudoku_4.xml │ │ │ │ │ ├── sudoku_5.xml │ │ │ │ │ ├── sudoku_6.xml │ │ │ │ │ ├── sudoku_7.xml │ │ │ │ │ ├── sudoku_8.xml │ │ │ │ │ └── sudoku_9.xml │ │ │ │ ├── medium │ │ │ │ │ ├── sudoku_1.xml │ │ │ │ │ ├── sudoku_10.xml │ │ │ │ │ ├── sudoku_2.xml │ │ │ │ │ ├── sudoku_3.xml │ │ │ │ │ ├── sudoku_4.xml │ │ │ │ │ ├── sudoku_5.xml │ │ │ │ │ ├── sudoku_6.xml │ │ │ │ │ ├── sudoku_7.xml │ │ │ │ │ ├── sudoku_8.xml │ │ │ │ │ └── sudoku_9.xml │ │ │ │ └── samurai.xml │ │ │ │ ├── squigglya │ │ │ │ ├── difficult │ │ │ │ │ ├── sudoku_1.xml │ │ │ │ │ ├── sudoku_10.xml │ │ │ │ │ ├── sudoku_2.xml │ │ │ │ │ ├── sudoku_3.xml │ │ │ │ │ ├── sudoku_4.xml │ │ │ │ │ ├── sudoku_5.xml │ │ │ │ │ ├── sudoku_6.xml │ │ │ │ │ ├── sudoku_7.xml │ │ │ │ │ ├── sudoku_8.xml │ │ │ │ │ └── sudoku_9.xml │ │ │ │ ├── easy │ │ │ │ │ ├── sudoku_1.xml │ │ │ │ │ ├── sudoku_10.xml │ │ │ │ │ ├── sudoku_2.xml │ │ │ │ │ ├── sudoku_3.xml │ │ │ │ │ ├── sudoku_4.xml │ │ │ │ │ ├── sudoku_5.xml │ │ │ │ │ ├── sudoku_6.xml │ │ │ │ │ ├── sudoku_7.xml │ │ │ │ │ ├── sudoku_8.xml │ │ │ │ │ └── sudoku_9.xml │ │ │ │ ├── infernal │ │ │ │ │ ├── sudoku_1.xml │ │ │ │ │ ├── sudoku_10.xml │ │ │ │ │ ├── sudoku_2.xml │ │ │ │ │ ├── sudoku_3.xml │ │ │ │ │ ├── sudoku_4.xml │ │ │ │ │ ├── sudoku_5.xml │ │ │ │ │ ├── sudoku_6.xml │ │ │ │ │ ├── sudoku_7.xml │ │ │ │ │ ├── sudoku_8.xml │ │ │ │ │ └── sudoku_9.xml │ │ │ │ ├── medium │ │ │ │ │ ├── sudoku_1.xml │ │ │ │ │ ├── sudoku_10.xml │ │ │ │ │ ├── sudoku_2.xml │ │ │ │ │ ├── sudoku_3.xml │ │ │ │ │ ├── sudoku_4.xml │ │ │ │ │ ├── sudoku_5.xml │ │ │ │ │ ├── sudoku_6.xml │ │ │ │ │ ├── sudoku_7.xml │ │ │ │ │ ├── sudoku_8.xml │ │ │ │ │ └── sudoku_9.xml │ │ │ │ └── squigglya.xml │ │ │ │ ├── squigglyb │ │ │ │ ├── difficult │ │ │ │ │ ├── sudoku_1.xml │ │ │ │ │ ├── sudoku_10.xml │ │ │ │ │ ├── sudoku_2.xml │ │ │ │ │ ├── sudoku_3.xml │ │ │ │ │ ├── sudoku_4.xml │ │ │ │ │ ├── sudoku_5.xml │ │ │ │ │ ├── sudoku_6.xml │ │ │ │ │ ├── sudoku_7.xml │ │ │ │ │ ├── sudoku_8.xml │ │ │ │ │ └── sudoku_9.xml │ │ │ │ ├── easy │ │ │ │ │ ├── sudoku_1.xml │ │ │ │ │ ├── sudoku_10.xml │ │ │ │ │ ├── sudoku_2.xml │ │ │ │ │ ├── sudoku_3.xml │ │ │ │ │ ├── sudoku_4.xml │ │ │ │ │ ├── sudoku_5.xml │ │ │ │ │ ├── sudoku_6.xml │ │ │ │ │ ├── sudoku_7.xml │ │ │ │ │ ├── sudoku_8.xml │ │ │ │ │ └── sudoku_9.xml │ │ │ │ ├── infernal │ │ │ │ │ ├── sudoku_1.xml │ │ │ │ │ ├── sudoku_10.xml │ │ │ │ │ ├── sudoku_2.xml │ │ │ │ │ ├── sudoku_3.xml │ │ │ │ │ ├── sudoku_4.xml │ │ │ │ │ ├── sudoku_5.xml │ │ │ │ │ ├── sudoku_6.xml │ │ │ │ │ ├── sudoku_7.xml │ │ │ │ │ ├── sudoku_8.xml │ │ │ │ │ └── sudoku_9.xml │ │ │ │ ├── medium │ │ │ │ │ ├── sudoku_1.xml │ │ │ │ │ ├── sudoku_10.xml │ │ │ │ │ ├── sudoku_2.xml │ │ │ │ │ ├── sudoku_3.xml │ │ │ │ │ ├── sudoku_4.xml │ │ │ │ │ ├── sudoku_5.xml │ │ │ │ │ ├── sudoku_6.xml │ │ │ │ │ ├── sudoku_7.xml │ │ │ │ │ ├── sudoku_8.xml │ │ │ │ │ └── sudoku_9.xml │ │ │ │ └── squigglyb.xml │ │ │ │ ├── stairstep │ │ │ │ ├── difficult │ │ │ │ │ ├── sudoku_1.xml │ │ │ │ │ ├── sudoku_10.xml │ │ │ │ │ ├── sudoku_2.xml │ │ │ │ │ ├── sudoku_3.xml │ │ │ │ │ ├── sudoku_4.xml │ │ │ │ │ ├── sudoku_5.xml │ │ │ │ │ ├── sudoku_6.xml │ │ │ │ │ ├── sudoku_7.xml │ │ │ │ │ ├── sudoku_8.xml │ │ │ │ │ └── sudoku_9.xml │ │ │ │ ├── easy │ │ │ │ │ ├── sudoku_1.xml │ │ │ │ │ ├── sudoku_10.xml │ │ │ │ │ ├── sudoku_2.xml │ │ │ │ │ ├── sudoku_3.xml │ │ │ │ │ ├── sudoku_4.xml │ │ │ │ │ ├── sudoku_5.xml │ │ │ │ │ ├── sudoku_6.xml │ │ │ │ │ ├── sudoku_7.xml │ │ │ │ │ ├── sudoku_8.xml │ │ │ │ │ └── sudoku_9.xml │ │ │ │ ├── infernal │ │ │ │ │ ├── sudoku_1.xml │ │ │ │ │ ├── sudoku_10.xml │ │ │ │ │ ├── sudoku_2.xml │ │ │ │ │ ├── sudoku_3.xml │ │ │ │ │ ├── sudoku_4.xml │ │ │ │ │ ├── sudoku_5.xml │ │ │ │ │ ├── sudoku_6.xml │ │ │ │ │ ├── sudoku_7.xml │ │ │ │ │ ├── sudoku_8.xml │ │ │ │ │ └── sudoku_9.xml │ │ │ │ ├── medium │ │ │ │ │ ├── sudoku_1.xml │ │ │ │ │ ├── sudoku_10.xml │ │ │ │ │ ├── sudoku_2.xml │ │ │ │ │ ├── sudoku_3.xml │ │ │ │ │ ├── sudoku_4.xml │ │ │ │ │ ├── sudoku_5.xml │ │ │ │ │ ├── sudoku_6.xml │ │ │ │ │ ├── sudoku_7.xml │ │ │ │ │ ├── sudoku_8.xml │ │ │ │ │ └── sudoku_9.xml │ │ │ │ └── stairstep.xml │ │ │ │ ├── standard16x16 │ │ │ │ ├── difficult │ │ │ │ │ ├── sudoku_1.xml │ │ │ │ │ ├── sudoku_10.xml │ │ │ │ │ ├── sudoku_2.xml │ │ │ │ │ ├── sudoku_3.xml │ │ │ │ │ ├── sudoku_4.xml │ │ │ │ │ ├── sudoku_5.xml │ │ │ │ │ ├── sudoku_6.xml │ │ │ │ │ ├── sudoku_7.xml │ │ │ │ │ ├── sudoku_8.xml │ │ │ │ │ └── sudoku_9.xml │ │ │ │ ├── easy │ │ │ │ │ ├── sudoku_1.xml │ │ │ │ │ ├── sudoku_10.xml │ │ │ │ │ ├── sudoku_2.xml │ │ │ │ │ ├── sudoku_3.xml │ │ │ │ │ ├── sudoku_4.xml │ │ │ │ │ ├── sudoku_5.xml │ │ │ │ │ ├── sudoku_6.xml │ │ │ │ │ ├── sudoku_7.xml │ │ │ │ │ ├── sudoku_8.xml │ │ │ │ │ └── sudoku_9.xml │ │ │ │ ├── infernal │ │ │ │ │ ├── sudoku_1.xml │ │ │ │ │ ├── sudoku_10.xml │ │ │ │ │ ├── sudoku_2.xml │ │ │ │ │ ├── sudoku_3.xml │ │ │ │ │ ├── sudoku_4.xml │ │ │ │ │ ├── sudoku_5.xml │ │ │ │ │ ├── sudoku_6.xml │ │ │ │ │ ├── sudoku_7.xml │ │ │ │ │ ├── sudoku_8.xml │ │ │ │ │ └── sudoku_9.xml │ │ │ │ ├── medium │ │ │ │ │ ├── sudoku_1.xml │ │ │ │ │ ├── sudoku_10.xml │ │ │ │ │ ├── sudoku_2.xml │ │ │ │ │ ├── sudoku_3.xml │ │ │ │ │ ├── sudoku_4.xml │ │ │ │ │ ├── sudoku_5.xml │ │ │ │ │ ├── sudoku_6.xml │ │ │ │ │ ├── sudoku_7.xml │ │ │ │ │ ├── sudoku_8.xml │ │ │ │ │ └── sudoku_9.xml │ │ │ │ └── standard16x16.xml │ │ │ │ ├── standard4x4 │ │ │ │ ├── difficult │ │ │ │ │ ├── sudoku_1.xml │ │ │ │ │ ├── sudoku_10.xml │ │ │ │ │ ├── sudoku_2.xml │ │ │ │ │ ├── sudoku_3.xml │ │ │ │ │ ├── sudoku_4.xml │ │ │ │ │ ├── sudoku_5.xml │ │ │ │ │ ├── sudoku_6.xml │ │ │ │ │ ├── sudoku_7.xml │ │ │ │ │ ├── sudoku_8.xml │ │ │ │ │ └── sudoku_9.xml │ │ │ │ ├── easy │ │ │ │ │ ├── sudoku_1.xml │ │ │ │ │ ├── sudoku_10.xml │ │ │ │ │ ├── sudoku_2.xml │ │ │ │ │ ├── sudoku_3.xml │ │ │ │ │ ├── sudoku_4.xml │ │ │ │ │ ├── sudoku_5.xml │ │ │ │ │ ├── sudoku_6.xml │ │ │ │ │ ├── sudoku_7.xml │ │ │ │ │ ├── sudoku_8.xml │ │ │ │ │ └── sudoku_9.xml │ │ │ │ ├── infernal │ │ │ │ │ ├── sudoku_1.xml │ │ │ │ │ ├── sudoku_10.xml │ │ │ │ │ ├── sudoku_2.xml │ │ │ │ │ ├── sudoku_3.xml │ │ │ │ │ ├── sudoku_4.xml │ │ │ │ │ ├── sudoku_5.xml │ │ │ │ │ ├── sudoku_6.xml │ │ │ │ │ ├── sudoku_7.xml │ │ │ │ │ ├── sudoku_8.xml │ │ │ │ │ └── sudoku_9.xml │ │ │ │ ├── medium │ │ │ │ │ ├── sudoku_1.xml │ │ │ │ │ ├── sudoku_10.xml │ │ │ │ │ ├── sudoku_2.xml │ │ │ │ │ ├── sudoku_3.xml │ │ │ │ │ ├── sudoku_4.xml │ │ │ │ │ ├── sudoku_5.xml │ │ │ │ │ ├── sudoku_6.xml │ │ │ │ │ ├── sudoku_7.xml │ │ │ │ │ ├── sudoku_8.xml │ │ │ │ │ └── sudoku_9.xml │ │ │ │ └── standard4x4.xml │ │ │ │ ├── standard6x6 │ │ │ │ ├── difficult │ │ │ │ │ ├── sudoku_1.xml │ │ │ │ │ ├── sudoku_10.xml │ │ │ │ │ ├── sudoku_2.xml │ │ │ │ │ ├── sudoku_3.xml │ │ │ │ │ ├── sudoku_4.xml │ │ │ │ │ ├── sudoku_5.xml │ │ │ │ │ ├── sudoku_6.xml │ │ │ │ │ ├── sudoku_7.xml │ │ │ │ │ ├── sudoku_8.xml │ │ │ │ │ └── sudoku_9.xml │ │ │ │ ├── easy │ │ │ │ │ ├── sudoku_1.xml │ │ │ │ │ ├── sudoku_10.xml │ │ │ │ │ ├── sudoku_2.xml │ │ │ │ │ ├── sudoku_3.xml │ │ │ │ │ ├── sudoku_4.xml │ │ │ │ │ ├── sudoku_5.xml │ │ │ │ │ ├── sudoku_6.xml │ │ │ │ │ ├── sudoku_7.xml │ │ │ │ │ ├── sudoku_8.xml │ │ │ │ │ └── sudoku_9.xml │ │ │ │ ├── infernal │ │ │ │ │ ├── sudoku_1.xml │ │ │ │ │ ├── sudoku_10.xml │ │ │ │ │ ├── sudoku_2.xml │ │ │ │ │ ├── sudoku_3.xml │ │ │ │ │ ├── sudoku_4.xml │ │ │ │ │ ├── sudoku_5.xml │ │ │ │ │ ├── sudoku_6.xml │ │ │ │ │ ├── sudoku_7.xml │ │ │ │ │ ├── sudoku_8.xml │ │ │ │ │ └── sudoku_9.xml │ │ │ │ ├── medium │ │ │ │ │ ├── sudoku_1.xml │ │ │ │ │ ├── sudoku_10.xml │ │ │ │ │ ├── sudoku_2.xml │ │ │ │ │ ├── sudoku_3.xml │ │ │ │ │ ├── sudoku_4.xml │ │ │ │ │ ├── sudoku_5.xml │ │ │ │ │ ├── sudoku_6.xml │ │ │ │ │ ├── sudoku_7.xml │ │ │ │ │ ├── sudoku_8.xml │ │ │ │ │ └── sudoku_9.xml │ │ │ │ └── standard6x6.xml │ │ │ │ └── standard9x9 │ │ │ │ ├── difficult │ │ │ │ ├── sudoku_1.xml │ │ │ │ ├── sudoku_10.xml │ │ │ │ ├── sudoku_2.xml │ │ │ │ ├── sudoku_3.xml │ │ │ │ ├── sudoku_4.xml │ │ │ │ ├── sudoku_5.xml │ │ │ │ ├── sudoku_6.xml │ │ │ │ ├── sudoku_7.xml │ │ │ │ ├── sudoku_8.xml │ │ │ │ └── sudoku_9.xml │ │ │ │ ├── easy │ │ │ │ ├── sudoku_1.xml │ │ │ │ ├── sudoku_10.xml │ │ │ │ ├── sudoku_2.xml │ │ │ │ ├── sudoku_3.xml │ │ │ │ ├── sudoku_4.xml │ │ │ │ ├── sudoku_5.xml │ │ │ │ ├── sudoku_6.xml │ │ │ │ ├── sudoku_7.xml │ │ │ │ ├── sudoku_8.xml │ │ │ │ └── sudoku_9.xml │ │ │ │ ├── infernal │ │ │ │ ├── sudoku_1.xml │ │ │ │ ├── sudoku_10.xml │ │ │ │ ├── sudoku_2.xml │ │ │ │ ├── sudoku_3.xml │ │ │ │ ├── sudoku_4.xml │ │ │ │ ├── sudoku_5.xml │ │ │ │ ├── sudoku_6.xml │ │ │ │ ├── sudoku_7.xml │ │ │ │ ├── sudoku_8.xml │ │ │ │ └── sudoku_9.xml │ │ │ │ ├── medium │ │ │ │ ├── sudoku_1.xml │ │ │ │ ├── sudoku_10.xml │ │ │ │ ├── sudoku_2.xml │ │ │ │ ├── sudoku_3.xml │ │ │ │ ├── sudoku_4.xml │ │ │ │ ├── sudoku_5.xml │ │ │ │ ├── sudoku_6.xml │ │ │ │ ├── sudoku_7.xml │ │ │ │ ├── sudoku_8.xml │ │ │ │ └── sudoku_9.xml │ │ │ │ └── standard9x9.xml │ │ │ ├── incremental │ │ │ ├── aidl │ │ │ │ ├── androidTest │ │ │ │ │ └── debug │ │ │ │ │ │ └── dependency.store │ │ │ │ └── debug │ │ │ │ │ └── dependency.store │ │ │ ├── mergeAssets │ │ │ │ └── androidTest │ │ │ │ │ └── debug │ │ │ │ │ └── merger.xml │ │ │ └── mergeResources │ │ │ │ └── androidTest │ │ │ │ └── debug │ │ │ │ └── merger.xml │ │ │ └── res │ │ │ ├── androidTest │ │ │ └── debug │ │ │ │ ├── drawable-hdpi-v4 │ │ │ │ └── ic_launcher.png │ │ │ │ ├── drawable-ldpi-v4 │ │ │ │ └── ic_launcher.png │ │ │ │ ├── drawable-mdpi-v4 │ │ │ │ └── ic_launcher.png │ │ │ │ ├── layout │ │ │ │ └── main.xml │ │ │ │ └── values │ │ │ │ └── values.xml │ │ │ └── debug │ │ │ ├── drawable-hdpi-v4 │ │ │ ├── background.png │ │ │ ├── help.png │ │ │ ├── ic_launcher.png │ │ │ ├── launcher.png │ │ │ ├── redo.png │ │ │ ├── tutorial_bookmark.png │ │ │ ├── tutorial_branching.png │ │ │ ├── tutorial_current_state.png │ │ │ ├── tutorial_state.png │ │ │ └── undo.png │ │ │ ├── drawable-ldpi-v4 │ │ │ ├── tutorial_bookmark.png │ │ │ ├── tutorial_branching.png │ │ │ ├── tutorial_current_state.png │ │ │ └── tutorial_state.png │ │ │ ├── drawable-mdpi-v4 │ │ │ ├── background.png │ │ │ ├── help.png │ │ │ ├── ic_launcher.png │ │ │ ├── launcher.png │ │ │ ├── redo.png │ │ │ ├── tutorial_bookmark.png │ │ │ ├── tutorial_branching.png │ │ │ ├── tutorial_current_state.png │ │ │ ├── tutorial_state.png │ │ │ └── undo.png │ │ │ ├── drawable-xhdpi-v4 │ │ │ ├── background.png │ │ │ ├── help.png │ │ │ ├── launcher.png │ │ │ ├── redo.png │ │ │ ├── tutorial_bookmark.png │ │ │ ├── tutorial_branching.png │ │ │ ├── tutorial_current_state.png │ │ │ ├── tutorial_state.png │ │ │ └── undo.png │ │ │ ├── drawable-xxxhdpi-v4 │ │ │ └── help.png │ │ │ ├── drawable │ │ │ ├── action_tree.png │ │ │ ├── action_tree_tutorial.png │ │ │ ├── background_gradient.xml │ │ │ ├── background_serious.xml │ │ │ ├── empty_sudoku.png │ │ │ ├── gesture_button_selector.xml │ │ │ ├── gesture_checked.png │ │ │ ├── gesture_unchecked.png │ │ │ ├── help.png │ │ │ ├── help_tutorial.png │ │ │ ├── launcher.png │ │ │ ├── redo.png │ │ │ ├── rootkuh.png │ │ │ ├── squiggly.png │ │ │ ├── sudoku_tutorial.png │ │ │ ├── tutorial_bookmark.png │ │ │ ├── tutorial_branching.png │ │ │ ├── tutorial_current_state.png │ │ │ ├── tutorial_state.png │ │ │ ├── undo.png │ │ │ └── xsudoku.png │ │ │ ├── layout-land │ │ │ └── sudokuloadingitem.xml │ │ │ ├── layout │ │ │ ├── gametypeselection.xml │ │ │ ├── list.xml │ │ │ ├── restricttypes_item.xml │ │ │ ├── splash.xml │ │ │ ├── sudoku_for_lefties_debug.xml │ │ │ ├── sudokuloadingitem.xml │ │ │ └── tutorial.xml │ │ │ ├── menu │ │ │ ├── action_bar_gesture_builder.xml │ │ │ ├── action_bar_player_preferences.xml │ │ │ ├── action_bar_restrict_types.xml │ │ │ ├── action_bar_standard.xml │ │ │ ├── action_bar_sudoku.xml │ │ │ └── action_bar_sudoku_loading.xml │ │ │ └── raw │ │ │ └── gestures │ ├── libs │ │ ├── robotium-solo-4.1-javadoc.jar │ │ └── robotium-solo-4.1.jar │ ├── src │ │ ├── androidTest │ │ │ ├── java │ │ │ │ └── de │ │ │ │ │ └── sudoq │ │ │ │ │ └── test │ │ │ │ │ ├── CrossActivityTests.java │ │ │ │ │ ├── MenuTest.java │ │ │ │ │ ├── NormalFlowTest.java │ │ │ │ │ ├── SplashTest.java │ │ │ │ │ ├── SudokuActivityTests.java │ │ │ │ │ ├── SudokuInteractionTest.java │ │ │ │ │ ├── SudokuUtilities.java │ │ │ │ │ └── SudoqTestCase.java │ │ │ └── res │ │ │ │ ├── drawable-hdpi │ │ │ │ └── ic_launcher.png │ │ │ │ ├── drawable-ldpi │ │ │ │ └── ic_launcher.png │ │ │ │ ├── drawable-mdpi │ │ │ │ └── ic_launcher.png │ │ │ │ ├── layout │ │ │ │ └── main.xml │ │ │ │ └── values │ │ │ │ └── strings.xml │ │ └── main │ │ │ ├── AndroidManifest.xml │ │ │ ├── assets │ │ │ └── sudokus │ │ │ │ ├── HyperSudoku │ │ │ │ ├── HyperSudoku.xml │ │ │ │ ├── difficult │ │ │ │ │ ├── sudoku_1.xml │ │ │ │ │ ├── sudoku_10.xml │ │ │ │ │ ├── sudoku_2.xml │ │ │ │ │ ├── sudoku_3.xml │ │ │ │ │ ├── sudoku_4.xml │ │ │ │ │ ├── sudoku_5.xml │ │ │ │ │ ├── sudoku_6.xml │ │ │ │ │ ├── sudoku_7.xml │ │ │ │ │ ├── sudoku_8.xml │ │ │ │ │ └── sudoku_9.xml │ │ │ │ ├── easy │ │ │ │ │ ├── sudoku_1.xml │ │ │ │ │ ├── sudoku_10.xml │ │ │ │ │ ├── sudoku_2.xml │ │ │ │ │ ├── sudoku_3.xml │ │ │ │ │ ├── sudoku_4.xml │ │ │ │ │ ├── sudoku_5.xml │ │ │ │ │ ├── sudoku_6.xml │ │ │ │ │ ├── sudoku_7.xml │ │ │ │ │ ├── sudoku_8.xml │ │ │ │ │ └── sudoku_9.xml │ │ │ │ ├── infernal │ │ │ │ │ ├── sudoku_1.xml │ │ │ │ │ ├── sudoku_10.xml │ │ │ │ │ ├── sudoku_2.xml │ │ │ │ │ ├── sudoku_3.xml │ │ │ │ │ ├── sudoku_4.xml │ │ │ │ │ ├── sudoku_5.xml │ │ │ │ │ ├── sudoku_6.xml │ │ │ │ │ ├── sudoku_7.xml │ │ │ │ │ ├── sudoku_8.xml │ │ │ │ │ └── sudoku_9.xml │ │ │ │ └── medium │ │ │ │ │ ├── sudoku_1.xml │ │ │ │ │ ├── sudoku_10.xml │ │ │ │ │ ├── sudoku_2.xml │ │ │ │ │ ├── sudoku_3.xml │ │ │ │ │ ├── sudoku_4.xml │ │ │ │ │ ├── sudoku_5.xml │ │ │ │ │ ├── sudoku_6.xml │ │ │ │ │ ├── sudoku_7.xml │ │ │ │ │ ├── sudoku_8.xml │ │ │ │ │ └── sudoku_9.xml │ │ │ │ ├── Xsudoku │ │ │ │ ├── Xsudoku.xml │ │ │ │ ├── difficult │ │ │ │ │ ├── sudoku_1.xml │ │ │ │ │ ├── sudoku_10.xml │ │ │ │ │ ├── sudoku_2.xml │ │ │ │ │ ├── sudoku_3.xml │ │ │ │ │ ├── sudoku_4.xml │ │ │ │ │ ├── sudoku_5.xml │ │ │ │ │ ├── sudoku_6.xml │ │ │ │ │ ├── sudoku_7.xml │ │ │ │ │ ├── sudoku_8.xml │ │ │ │ │ └── sudoku_9.xml │ │ │ │ ├── easy │ │ │ │ │ ├── sudoku_1.xml │ │ │ │ │ ├── sudoku_10.xml │ │ │ │ │ ├── sudoku_2.xml │ │ │ │ │ ├── sudoku_3.xml │ │ │ │ │ ├── sudoku_4.xml │ │ │ │ │ ├── sudoku_5.xml │ │ │ │ │ ├── sudoku_6.xml │ │ │ │ │ ├── sudoku_7.xml │ │ │ │ │ ├── sudoku_8.xml │ │ │ │ │ └── sudoku_9.xml │ │ │ │ ├── infernal │ │ │ │ │ ├── sudoku_1.xml │ │ │ │ │ ├── sudoku_10.xml │ │ │ │ │ ├── sudoku_2.xml │ │ │ │ │ ├── sudoku_3.xml │ │ │ │ │ ├── sudoku_4.xml │ │ │ │ │ ├── sudoku_5.xml │ │ │ │ │ ├── sudoku_6.xml │ │ │ │ │ ├── sudoku_7.xml │ │ │ │ │ ├── sudoku_8.xml │ │ │ │ │ └── sudoku_9.xml │ │ │ │ └── medium │ │ │ │ │ ├── sudoku_1.xml │ │ │ │ │ ├── sudoku_10.xml │ │ │ │ │ ├── sudoku_2.xml │ │ │ │ │ ├── sudoku_3.xml │ │ │ │ │ ├── sudoku_4.xml │ │ │ │ │ ├── sudoku_5.xml │ │ │ │ │ ├── sudoku_6.xml │ │ │ │ │ ├── sudoku_7.xml │ │ │ │ │ ├── sudoku_8.xml │ │ │ │ │ └── sudoku_9.xml │ │ │ │ ├── samurai │ │ │ │ ├── difficult │ │ │ │ │ ├── sudoku_1.xml │ │ │ │ │ ├── sudoku_10.xml │ │ │ │ │ ├── sudoku_2.xml │ │ │ │ │ ├── sudoku_3.xml │ │ │ │ │ ├── sudoku_4.xml │ │ │ │ │ ├── sudoku_5.xml │ │ │ │ │ ├── sudoku_6.xml │ │ │ │ │ ├── sudoku_7.xml │ │ │ │ │ ├── sudoku_8.xml │ │ │ │ │ └── sudoku_9.xml │ │ │ │ ├── easy │ │ │ │ │ ├── sudoku_1.xml │ │ │ │ │ ├── sudoku_10.xml │ │ │ │ │ ├── sudoku_2.xml │ │ │ │ │ ├── sudoku_3.xml │ │ │ │ │ ├── sudoku_4.xml │ │ │ │ │ ├── sudoku_5.xml │ │ │ │ │ ├── sudoku_6.xml │ │ │ │ │ ├── sudoku_7.xml │ │ │ │ │ ├── sudoku_8.xml │ │ │ │ │ └── sudoku_9.xml │ │ │ │ ├── infernal │ │ │ │ │ ├── sudoku_1.xml │ │ │ │ │ ├── sudoku_10.xml │ │ │ │ │ ├── sudoku_2.xml │ │ │ │ │ ├── sudoku_3.xml │ │ │ │ │ ├── sudoku_4.xml │ │ │ │ │ ├── sudoku_5.xml │ │ │ │ │ ├── sudoku_6.xml │ │ │ │ │ ├── sudoku_7.xml │ │ │ │ │ ├── sudoku_8.xml │ │ │ │ │ └── sudoku_9.xml │ │ │ │ ├── medium │ │ │ │ │ ├── sudoku_1.xml │ │ │ │ │ ├── sudoku_10.xml │ │ │ │ │ ├── sudoku_2.xml │ │ │ │ │ ├── sudoku_3.xml │ │ │ │ │ ├── sudoku_4.xml │ │ │ │ │ ├── sudoku_5.xml │ │ │ │ │ ├── sudoku_6.xml │ │ │ │ │ ├── sudoku_7.xml │ │ │ │ │ ├── sudoku_8.xml │ │ │ │ │ └── sudoku_9.xml │ │ │ │ └── samurai.xml │ │ │ │ ├── squigglya │ │ │ │ ├── difficult │ │ │ │ │ ├── sudoku_1.xml │ │ │ │ │ ├── sudoku_10.xml │ │ │ │ │ ├── sudoku_2.xml │ │ │ │ │ ├── sudoku_3.xml │ │ │ │ │ ├── sudoku_4.xml │ │ │ │ │ ├── sudoku_5.xml │ │ │ │ │ ├── sudoku_6.xml │ │ │ │ │ ├── sudoku_7.xml │ │ │ │ │ ├── sudoku_8.xml │ │ │ │ │ └── sudoku_9.xml │ │ │ │ ├── easy │ │ │ │ │ ├── sudoku_1.xml │ │ │ │ │ ├── sudoku_10.xml │ │ │ │ │ ├── sudoku_2.xml │ │ │ │ │ ├── sudoku_3.xml │ │ │ │ │ ├── sudoku_4.xml │ │ │ │ │ ├── sudoku_5.xml │ │ │ │ │ ├── sudoku_6.xml │ │ │ │ │ ├── sudoku_7.xml │ │ │ │ │ ├── sudoku_8.xml │ │ │ │ │ └── sudoku_9.xml │ │ │ │ ├── infernal │ │ │ │ │ ├── sudoku_1.xml │ │ │ │ │ ├── sudoku_10.xml │ │ │ │ │ ├── sudoku_2.xml │ │ │ │ │ ├── sudoku_3.xml │ │ │ │ │ ├── sudoku_4.xml │ │ │ │ │ ├── sudoku_5.xml │ │ │ │ │ ├── sudoku_6.xml │ │ │ │ │ ├── sudoku_7.xml │ │ │ │ │ ├── sudoku_8.xml │ │ │ │ │ └── sudoku_9.xml │ │ │ │ ├── medium │ │ │ │ │ ├── sudoku_1.xml │ │ │ │ │ ├── sudoku_10.xml │ │ │ │ │ ├── sudoku_2.xml │ │ │ │ │ ├── sudoku_3.xml │ │ │ │ │ ├── sudoku_4.xml │ │ │ │ │ ├── sudoku_5.xml │ │ │ │ │ ├── sudoku_6.xml │ │ │ │ │ ├── sudoku_7.xml │ │ │ │ │ ├── sudoku_8.xml │ │ │ │ │ └── sudoku_9.xml │ │ │ │ └── squigglya.xml │ │ │ │ ├── squigglyb │ │ │ │ ├── difficult │ │ │ │ │ ├── sudoku_1.xml │ │ │ │ │ ├── sudoku_10.xml │ │ │ │ │ ├── sudoku_2.xml │ │ │ │ │ ├── sudoku_3.xml │ │ │ │ │ ├── sudoku_4.xml │ │ │ │ │ ├── sudoku_5.xml │ │ │ │ │ ├── sudoku_6.xml │ │ │ │ │ ├── sudoku_7.xml │ │ │ │ │ ├── sudoku_8.xml │ │ │ │ │ └── sudoku_9.xml │ │ │ │ ├── easy │ │ │ │ │ ├── sudoku_1.xml │ │ │ │ │ ├── sudoku_10.xml │ │ │ │ │ ├── sudoku_2.xml │ │ │ │ │ ├── sudoku_3.xml │ │ │ │ │ ├── sudoku_4.xml │ │ │ │ │ ├── sudoku_5.xml │ │ │ │ │ ├── sudoku_6.xml │ │ │ │ │ ├── sudoku_7.xml │ │ │ │ │ ├── sudoku_8.xml │ │ │ │ │ └── sudoku_9.xml │ │ │ │ ├── infernal │ │ │ │ │ ├── sudoku_1.xml │ │ │ │ │ ├── sudoku_10.xml │ │ │ │ │ ├── sudoku_2.xml │ │ │ │ │ ├── sudoku_3.xml │ │ │ │ │ ├── sudoku_4.xml │ │ │ │ │ ├── sudoku_5.xml │ │ │ │ │ ├── sudoku_6.xml │ │ │ │ │ ├── sudoku_7.xml │ │ │ │ │ ├── sudoku_8.xml │ │ │ │ │ └── sudoku_9.xml │ │ │ │ ├── medium │ │ │ │ │ ├── sudoku_1.xml │ │ │ │ │ ├── sudoku_10.xml │ │ │ │ │ ├── sudoku_2.xml │ │ │ │ │ ├── sudoku_3.xml │ │ │ │ │ ├── sudoku_4.xml │ │ │ │ │ ├── sudoku_5.xml │ │ │ │ │ ├── sudoku_6.xml │ │ │ │ │ ├── sudoku_7.xml │ │ │ │ │ ├── sudoku_8.xml │ │ │ │ │ └── sudoku_9.xml │ │ │ │ └── squigglyb.xml │ │ │ │ ├── stairstep │ │ │ │ ├── difficult │ │ │ │ │ ├── sudoku_1.xml │ │ │ │ │ ├── sudoku_10.xml │ │ │ │ │ ├── sudoku_2.xml │ │ │ │ │ ├── sudoku_3.xml │ │ │ │ │ ├── sudoku_4.xml │ │ │ │ │ ├── sudoku_5.xml │ │ │ │ │ ├── sudoku_6.xml │ │ │ │ │ ├── sudoku_7.xml │ │ │ │ │ ├── sudoku_8.xml │ │ │ │ │ └── sudoku_9.xml │ │ │ │ ├── easy │ │ │ │ │ ├── sudoku_1.xml │ │ │ │ │ ├── sudoku_10.xml │ │ │ │ │ ├── sudoku_2.xml │ │ │ │ │ ├── sudoku_3.xml │ │ │ │ │ ├── sudoku_4.xml │ │ │ │ │ ├── sudoku_5.xml │ │ │ │ │ ├── sudoku_6.xml │ │ │ │ │ ├── sudoku_7.xml │ │ │ │ │ ├── sudoku_8.xml │ │ │ │ │ └── sudoku_9.xml │ │ │ │ ├── infernal │ │ │ │ │ ├── sudoku_1.xml │ │ │ │ │ ├── sudoku_10.xml │ │ │ │ │ ├── sudoku_2.xml │ │ │ │ │ ├── sudoku_3.xml │ │ │ │ │ ├── sudoku_4.xml │ │ │ │ │ ├── sudoku_5.xml │ │ │ │ │ ├── sudoku_6.xml │ │ │ │ │ ├── sudoku_7.xml │ │ │ │ │ ├── sudoku_8.xml │ │ │ │ │ └── sudoku_9.xml │ │ │ │ ├── medium │ │ │ │ │ ├── sudoku_1.xml │ │ │ │ │ ├── sudoku_10.xml │ │ │ │ │ ├── sudoku_2.xml │ │ │ │ │ ├── sudoku_3.xml │ │ │ │ │ ├── sudoku_4.xml │ │ │ │ │ ├── sudoku_5.xml │ │ │ │ │ ├── sudoku_6.xml │ │ │ │ │ ├── sudoku_7.xml │ │ │ │ │ ├── sudoku_8.xml │ │ │ │ │ └── sudoku_9.xml │ │ │ │ └── stairstep.xml │ │ │ │ ├── standard16x16 │ │ │ │ ├── difficult │ │ │ │ │ ├── sudoku_1.xml │ │ │ │ │ ├── sudoku_10.xml │ │ │ │ │ ├── sudoku_2.xml │ │ │ │ │ ├── sudoku_3.xml │ │ │ │ │ ├── sudoku_4.xml │ │ │ │ │ ├── sudoku_5.xml │ │ │ │ │ ├── sudoku_6.xml │ │ │ │ │ ├── sudoku_7.xml │ │ │ │ │ ├── sudoku_8.xml │ │ │ │ │ └── sudoku_9.xml │ │ │ │ ├── easy │ │ │ │ │ ├── sudoku_1.xml │ │ │ │ │ ├── sudoku_10.xml │ │ │ │ │ ├── sudoku_2.xml │ │ │ │ │ ├── sudoku_3.xml │ │ │ │ │ ├── sudoku_4.xml │ │ │ │ │ ├── sudoku_5.xml │ │ │ │ │ ├── sudoku_6.xml │ │ │ │ │ ├── sudoku_7.xml │ │ │ │ │ ├── sudoku_8.xml │ │ │ │ │ └── sudoku_9.xml │ │ │ │ ├── infernal │ │ │ │ │ ├── sudoku_1.xml │ │ │ │ │ ├── sudoku_10.xml │ │ │ │ │ ├── sudoku_2.xml │ │ │ │ │ ├── sudoku_3.xml │ │ │ │ │ ├── sudoku_4.xml │ │ │ │ │ ├── sudoku_5.xml │ │ │ │ │ ├── sudoku_6.xml │ │ │ │ │ ├── sudoku_7.xml │ │ │ │ │ ├── sudoku_8.xml │ │ │ │ │ └── sudoku_9.xml │ │ │ │ ├── medium │ │ │ │ │ ├── sudoku_1.xml │ │ │ │ │ ├── sudoku_10.xml │ │ │ │ │ ├── sudoku_2.xml │ │ │ │ │ ├── sudoku_3.xml │ │ │ │ │ ├── sudoku_4.xml │ │ │ │ │ ├── sudoku_5.xml │ │ │ │ │ ├── sudoku_6.xml │ │ │ │ │ ├── sudoku_7.xml │ │ │ │ │ ├── sudoku_8.xml │ │ │ │ │ └── sudoku_9.xml │ │ │ │ └── standard16x16.xml │ │ │ │ ├── standard4x4 │ │ │ │ ├── difficult │ │ │ │ │ ├── sudoku_1.xml │ │ │ │ │ ├── sudoku_10.xml │ │ │ │ │ ├── sudoku_2.xml │ │ │ │ │ ├── sudoku_3.xml │ │ │ │ │ ├── sudoku_4.xml │ │ │ │ │ ├── sudoku_5.xml │ │ │ │ │ ├── sudoku_6.xml │ │ │ │ │ ├── sudoku_7.xml │ │ │ │ │ ├── sudoku_8.xml │ │ │ │ │ └── sudoku_9.xml │ │ │ │ ├── easy │ │ │ │ │ ├── sudoku_1.xml │ │ │ │ │ ├── sudoku_10.xml │ │ │ │ │ ├── sudoku_2.xml │ │ │ │ │ ├── sudoku_3.xml │ │ │ │ │ ├── sudoku_4.xml │ │ │ │ │ ├── sudoku_5.xml │ │ │ │ │ ├── sudoku_6.xml │ │ │ │ │ ├── sudoku_7.xml │ │ │ │ │ ├── sudoku_8.xml │ │ │ │ │ └── sudoku_9.xml │ │ │ │ ├── infernal │ │ │ │ │ ├── sudoku_1.xml │ │ │ │ │ ├── sudoku_10.xml │ │ │ │ │ ├── sudoku_2.xml │ │ │ │ │ ├── sudoku_3.xml │ │ │ │ │ ├── sudoku_4.xml │ │ │ │ │ ├── sudoku_5.xml │ │ │ │ │ ├── sudoku_6.xml │ │ │ │ │ ├── sudoku_7.xml │ │ │ │ │ ├── sudoku_8.xml │ │ │ │ │ └── sudoku_9.xml │ │ │ │ ├── medium │ │ │ │ │ ├── sudoku_1.xml │ │ │ │ │ ├── sudoku_10.xml │ │ │ │ │ ├── sudoku_2.xml │ │ │ │ │ ├── sudoku_3.xml │ │ │ │ │ ├── sudoku_4.xml │ │ │ │ │ ├── sudoku_5.xml │ │ │ │ │ ├── sudoku_6.xml │ │ │ │ │ ├── sudoku_7.xml │ │ │ │ │ ├── sudoku_8.xml │ │ │ │ │ └── sudoku_9.xml │ │ │ │ └── standard4x4.xml │ │ │ │ ├── standard6x6 │ │ │ │ ├── difficult │ │ │ │ │ ├── sudoku_1.xml │ │ │ │ │ ├── sudoku_10.xml │ │ │ │ │ ├── sudoku_2.xml │ │ │ │ │ ├── sudoku_3.xml │ │ │ │ │ ├── sudoku_4.xml │ │ │ │ │ ├── sudoku_5.xml │ │ │ │ │ ├── sudoku_6.xml │ │ │ │ │ ├── sudoku_7.xml │ │ │ │ │ ├── sudoku_8.xml │ │ │ │ │ └── sudoku_9.xml │ │ │ │ ├── easy │ │ │ │ │ ├── sudoku_1.xml │ │ │ │ │ ├── sudoku_10.xml │ │ │ │ │ ├── sudoku_2.xml │ │ │ │ │ ├── sudoku_3.xml │ │ │ │ │ ├── sudoku_4.xml │ │ │ │ │ ├── sudoku_5.xml │ │ │ │ │ ├── sudoku_6.xml │ │ │ │ │ ├── sudoku_7.xml │ │ │ │ │ ├── sudoku_8.xml │ │ │ │ │ └── sudoku_9.xml │ │ │ │ ├── infernal │ │ │ │ │ ├── sudoku_1.xml │ │ │ │ │ ├── sudoku_10.xml │ │ │ │ │ ├── sudoku_2.xml │ │ │ │ │ ├── sudoku_3.xml │ │ │ │ │ ├── sudoku_4.xml │ │ │ │ │ ├── sudoku_5.xml │ │ │ │ │ ├── sudoku_6.xml │ │ │ │ │ ├── sudoku_7.xml │ │ │ │ │ ├── sudoku_8.xml │ │ │ │ │ └── sudoku_9.xml │ │ │ │ ├── medium │ │ │ │ │ ├── sudoku_1.xml │ │ │ │ │ ├── sudoku_10.xml │ │ │ │ │ ├── sudoku_2.xml │ │ │ │ │ ├── sudoku_3.xml │ │ │ │ │ ├── sudoku_4.xml │ │ │ │ │ ├── sudoku_5.xml │ │ │ │ │ ├── sudoku_6.xml │ │ │ │ │ ├── sudoku_7.xml │ │ │ │ │ ├── sudoku_8.xml │ │ │ │ │ └── sudoku_9.xml │ │ │ │ └── standard6x6.xml │ │ │ │ └── standard9x9 │ │ │ │ ├── difficult │ │ │ │ ├── sudoku_1.xml │ │ │ │ ├── sudoku_10.xml │ │ │ │ ├── sudoku_2.xml │ │ │ │ ├── sudoku_3.xml │ │ │ │ ├── sudoku_4.xml │ │ │ │ ├── sudoku_5.xml │ │ │ │ ├── sudoku_6.xml │ │ │ │ ├── sudoku_7.xml │ │ │ │ ├── sudoku_8.xml │ │ │ │ └── sudoku_9.xml │ │ │ │ ├── easy │ │ │ │ ├── sudoku_1.xml │ │ │ │ ├── sudoku_10.xml │ │ │ │ ├── sudoku_2.xml │ │ │ │ ├── sudoku_3.xml │ │ │ │ ├── sudoku_4.xml │ │ │ │ ├── sudoku_5.xml │ │ │ │ ├── sudoku_6.xml │ │ │ │ ├── sudoku_7.xml │ │ │ │ ├── sudoku_8.xml │ │ │ │ └── sudoku_9.xml │ │ │ │ ├── infernal │ │ │ │ ├── sudoku_1.xml │ │ │ │ ├── sudoku_10.xml │ │ │ │ ├── sudoku_2.xml │ │ │ │ ├── sudoku_3.xml │ │ │ │ ├── sudoku_4.xml │ │ │ │ ├── sudoku_5.xml │ │ │ │ ├── sudoku_6.xml │ │ │ │ ├── sudoku_7.xml │ │ │ │ ├── sudoku_8.xml │ │ │ │ └── sudoku_9.xml │ │ │ │ ├── medium │ │ │ │ ├── sudoku_1.xml │ │ │ │ ├── sudoku_10.xml │ │ │ │ ├── sudoku_2.xml │ │ │ │ ├── sudoku_3.xml │ │ │ │ ├── sudoku_4.xml │ │ │ │ ├── sudoku_5.xml │ │ │ │ ├── sudoku_6.xml │ │ │ │ ├── sudoku_7.xml │ │ │ │ ├── sudoku_8.xml │ │ │ │ └── sudoku_9.xml │ │ │ │ └── standard9x9.xml │ │ │ ├── java │ │ │ └── de │ │ │ │ └── sudoq │ │ │ │ ├── controller │ │ │ │ ├── AppBarLayoutBehavior.java │ │ │ │ ├── SudoqActivity.java │ │ │ │ ├── SudoqActivitySherlock.java │ │ │ │ ├── SudoqListActivity.java │ │ │ │ ├── menus │ │ │ │ │ ├── GestureBuilder.java │ │ │ │ │ ├── MainActivity.java │ │ │ │ │ ├── NewSudokuConfigurationActivity.java │ │ │ │ │ ├── ProfileListActivity.java │ │ │ │ │ ├── SplashActivity.java │ │ │ │ │ ├── StatisticsActivity.java │ │ │ │ │ ├── SudokuLoadingActivity.java │ │ │ │ │ ├── SudokuLoadingAdapter.java │ │ │ │ │ ├── Utility.java │ │ │ │ │ └── preferences │ │ │ │ │ │ ├── AdvancedPreferencesActivity.java │ │ │ │ │ │ ├── NewSudokuPreferencesActivity.java │ │ │ │ │ │ ├── PlayerPreferencesActivity.java │ │ │ │ │ │ ├── PreferencesActivity.java │ │ │ │ │ │ ├── RestrictTypesActivity.java │ │ │ │ │ │ └── RestrictTypesAdapter.java │ │ │ │ ├── sudoku │ │ │ │ │ ├── ActionListener.java │ │ │ │ │ ├── ActionTreeController.java │ │ │ │ │ ├── ActionTreeNavListener.java │ │ │ │ │ ├── AssistanceRequestListener.java │ │ │ │ │ ├── FieldInteractionListener.java │ │ │ │ │ ├── FieldViewPainter.java │ │ │ │ │ ├── FieldViewStates.java │ │ │ │ │ ├── InputListener.java │ │ │ │ │ ├── ObservableActionCaster.java │ │ │ │ │ ├── ObservableFieldInteraction.java │ │ │ │ │ ├── ObservableInput.java │ │ │ │ │ ├── SudokuActivity.java │ │ │ │ │ ├── SudokuController.java │ │ │ │ │ ├── Symbol.java │ │ │ │ │ └── UserInteractionMediator.java │ │ │ │ └── tutorial │ │ │ │ │ ├── FragmentActionTree.java │ │ │ │ │ ├── FragmentAssistances.java │ │ │ │ │ ├── FragmentSudoku.java │ │ │ │ │ └── TutorialActivity.java │ │ │ │ └── view │ │ │ │ ├── FullScrollLayout.java │ │ │ │ ├── SquareImageButton.java │ │ │ │ ├── SudokuFieldView.java │ │ │ │ ├── SudokuLayout.java │ │ │ │ ├── VirtualKeyboardButtonView.java │ │ │ │ ├── VirtualKeyboardLayout.java │ │ │ │ ├── ZoomableView.java │ │ │ │ └── actionTree │ │ │ │ ├── ActionElement.java │ │ │ │ ├── ActionTreeElementView.java │ │ │ │ ├── ActiveElement.java │ │ │ │ ├── BookmarkedElement.java │ │ │ │ ├── BranchingElement.java │ │ │ │ └── BranchingLine.java │ │ │ └── res │ │ │ ├── drawable-hdpi │ │ │ ├── background.png │ │ │ ├── help.png │ │ │ ├── ic_arrow_back_black_24dp.png │ │ │ ├── ic_arrow_back_white_24dp.png │ │ │ ├── ic_close_white_24dp.png │ │ │ ├── ic_delete_white_24dp.png │ │ │ ├── ic_launcher.png │ │ │ ├── launcher.png │ │ │ ├── redo.png │ │ │ ├── tutorial_bookmark.png │ │ │ ├── tutorial_branching.png │ │ │ ├── tutorial_current_state.png │ │ │ ├── tutorial_state.png │ │ │ └── undo.png │ │ │ ├── drawable-ldpi │ │ │ ├── ic_dashboard.png │ │ │ ├── ic_discuss.png │ │ │ ├── ic_done.png │ │ │ ├── ic_event.png │ │ │ ├── ic_forum.png │ │ │ ├── ic_headset.png │ │ │ ├── tutorial_bookmark.png │ │ │ ├── tutorial_branching.png │ │ │ ├── tutorial_current_state.png │ │ │ └── tutorial_state.png │ │ │ ├── drawable-mdpi │ │ │ ├── background.png │ │ │ ├── help.png │ │ │ ├── ic_arrow_back_black_24dp.png │ │ │ ├── ic_arrow_back_white_24dp.png │ │ │ ├── ic_close_white_24dp.png │ │ │ ├── ic_delete_white_24dp.png │ │ │ ├── ic_launcher.png │ │ │ ├── launcher.png │ │ │ ├── redo.png │ │ │ ├── tutorial_bookmark.png │ │ │ ├── tutorial_branching.png │ │ │ ├── tutorial_current_state.png │ │ │ ├── tutorial_state.png │ │ │ └── undo.png │ │ │ ├── drawable-xhdpi │ │ │ ├── background.png │ │ │ ├── help.png │ │ │ ├── ic_arrow_back_black_24dp.png │ │ │ ├── ic_arrow_back_white_24dp.png │ │ │ ├── ic_close_white_24dp.png │ │ │ ├── ic_delete_white_24dp.png │ │ │ ├── launcher.png │ │ │ ├── redo.png │ │ │ ├── tutorial_bookmark.png │ │ │ ├── tutorial_branching.png │ │ │ ├── tutorial_current_state.png │ │ │ ├── tutorial_state.png │ │ │ └── undo.png │ │ │ ├── drawable-xxhdpi │ │ │ ├── ic_arrow_back_black_24dp.png │ │ │ └── ic_arrow_back_white_24dp.png │ │ │ ├── drawable-xxxhdpi │ │ │ ├── help.png │ │ │ ├── ic_arrow_back_black_24dp.png │ │ │ ├── ic_arrow_back_white_24dp.png │ │ │ ├── ic_close_white_24dp.png │ │ │ └── ic_delete_white_24dp.png │ │ │ ├── drawable │ │ │ ├── action_tree.png │ │ │ ├── action_tree_tutorial.png │ │ │ ├── background_gradient.xml │ │ │ ├── background_serious.xml │ │ │ ├── empty_sudoku.png │ │ │ ├── gesture_button_selector.xml │ │ │ ├── gesture_checked.png │ │ │ ├── gesture_unchecked.png │ │ │ ├── help.png │ │ │ ├── help_tutorial.png │ │ │ ├── ic_clear_white_24px.svg │ │ │ ├── ic_close_white_24dp.zip │ │ │ ├── ic_close_white_24dp │ │ │ │ └── android │ │ │ │ │ ├── drawable-xxhdpi │ │ │ │ │ └── ic_close_white_24dp.png │ │ │ │ │ └── drawable-xxxhdpi │ │ │ │ │ └── ic_close_white_24dp.png │ │ │ ├── ic_close_white_24px.svg │ │ │ ├── ic_delete_white_24px.svg │ │ │ ├── launcher.png │ │ │ ├── redo.png │ │ │ ├── rootkuh.png │ │ │ ├── squiggly.png │ │ │ ├── sudoku_tutorial.png │ │ │ ├── tutorial_bookmark.png │ │ │ ├── tutorial_branching.png │ │ │ ├── tutorial_current_state.png │ │ │ ├── tutorial_state.png │ │ │ ├── undo.png │ │ │ └── xsudoku.png │ │ │ ├── layout-land │ │ │ ├── mainmenu.xml │ │ │ ├── preferences_newsudoku.xml │ │ │ ├── preferences_player.xml │ │ │ ├── statistics.xml │ │ │ ├── sudoku.xml │ │ │ ├── sudoku_for_lefties.xml │ │ │ ├── sudokuloadingitem.xml │ │ │ └── sudokupreferences.xml │ │ │ ├── layout-large-land │ │ │ └── tutorial_sudoku.xml │ │ │ ├── layout-large-port │ │ │ └── tutorial_sudoku.xml │ │ │ ├── layout │ │ │ ├── activity_detail.xml │ │ │ ├── activity_main.xml │ │ │ ├── gametypeselection.xml │ │ │ ├── gesturebuilder.xml │ │ │ ├── include_list_viewpager.xml │ │ │ ├── include_list_viewpager2.xml │ │ │ ├── list.xml │ │ │ ├── mainmenu.xml │ │ │ ├── nav_header.xml │ │ │ ├── preferences_advanced.xml │ │ │ ├── preferences_newsudoku.xml │ │ │ ├── preferences_player.xml │ │ │ ├── profilelist.xml │ │ │ ├── profilelist_item.xml │ │ │ ├── restricttypes.xml │ │ │ ├── restricttypes_item.xml │ │ │ ├── splash.xml │ │ │ ├── statistics.xml │ │ │ ├── sudoku.xml │ │ │ ├── sudoku_for_lefties.xml │ │ │ ├── sudoku_for_lefties_debug.xml │ │ │ ├── sudokuloading.xml │ │ │ ├── sudokuloadingitem.xml │ │ │ ├── sudokupreferences.xml │ │ │ ├── toolbar │ │ │ ├── tutorial.xml │ │ │ ├── tutorial2.xml │ │ │ ├── tutorial_actiontree.xml │ │ │ ├── tutorial_assistances.xml │ │ │ └── tutorial_sudoku.xml │ │ │ ├── menu │ │ │ ├── action_bar_gesture_builder.xml │ │ │ ├── action_bar_player_preferences.xml │ │ │ ├── action_bar_restrict_types.xml │ │ │ ├── action_bar_standard.xml │ │ │ ├── action_bar_sudoku.xml │ │ │ ├── action_bar_sudoku_loading.xml │ │ │ ├── drawer_view.xml │ │ │ └── sample_actions.xml │ │ │ ├── raw │ │ │ └── gestures │ │ │ ├── values-de │ │ │ ├── strings.xml │ │ │ └── tutorial.xml │ │ │ ├── values-fr │ │ │ ├── strings.xml │ │ │ └── tutorial.xml │ │ │ └── values │ │ │ ├── colors.xml │ │ │ ├── dimens.xml │ │ │ ├── strings.xml │ │ │ ├── styles.xml │ │ │ ├── sudoku_preferences_arrays.xml │ │ │ └── tutorial.xml │ └── sudoqapp.iml └── sudoqmodel │ ├── build.gradle │ ├── libs │ ├── commons-io-1.3.jar │ └── junit-4.7.jar │ ├── res │ ├── compromised.xml │ ├── game.dtd │ ├── game_example.xml │ ├── games.dtd │ ├── games_example.xml │ ├── profile.dtd │ ├── profiles.dtd │ ├── sudoku.dtd │ ├── sudoku_1.xml │ ├── sudoku_example.xml │ ├── tmp.xml │ └── tmp2.xml │ ├── src │ ├── main │ │ └── java │ │ │ └── de │ │ │ └── sudoq │ │ │ └── model │ │ │ ├── ModelChangeListener.java │ │ │ ├── ObservableModel.java │ │ │ ├── ObservableModelImpl.java │ │ │ ├── actionTree │ │ │ ├── Action.java │ │ │ ├── ActionFactory.java │ │ │ ├── ActionTree.java │ │ │ ├── ActionTreeElement.java │ │ │ ├── ActionTreeIterator.java │ │ │ ├── NoteAction.java │ │ │ ├── NoteActionFactory.java │ │ │ ├── SolveAction.java │ │ │ └── SolveActionFactory.java │ │ │ ├── files │ │ │ └── FileManager.java │ │ │ ├── game │ │ │ ├── Assistances.java │ │ │ ├── Game.java │ │ │ ├── GameData.java │ │ │ ├── GameManager.java │ │ │ ├── GameSettings.java │ │ │ └── GameStateHandler.java │ │ │ ├── profile │ │ │ ├── Profile.java │ │ │ └── Statistics.java │ │ │ ├── solverGenerator │ │ │ ├── Generator.java │ │ │ ├── GeneratorCallback.java │ │ │ ├── solution │ │ │ │ ├── DerivationBlock.java │ │ │ │ ├── DerivationField.java │ │ │ │ ├── Solution.java │ │ │ │ └── SolveDerivation.java │ │ │ ├── solver │ │ │ │ ├── BranchingPool.java │ │ │ │ ├── ComplexityRelation.java │ │ │ │ ├── Solver.java │ │ │ │ ├── SolverSudoku.java │ │ │ │ └── helper │ │ │ │ │ ├── Backtracking.java │ │ │ │ │ ├── Helpers.java │ │ │ │ │ ├── HiddenHelper.java │ │ │ │ │ ├── NakedHelper.java │ │ │ │ │ ├── SolveHelper.java │ │ │ │ │ └── SubsetHelper.java │ │ │ └── transformations │ │ │ │ ├── HorizontalBlockPermutation.java │ │ │ │ ├── InBlockColumnPermutation.java │ │ │ │ ├── InBlockRowPermutation.java │ │ │ │ ├── MirrorDiagonallyDown.java │ │ │ │ ├── MirrorDiagonallyUp.java │ │ │ │ ├── MirrorHorizontally.java │ │ │ │ ├── MirrorVertically.java │ │ │ │ ├── Permutation.java │ │ │ │ ├── Rotate180.java │ │ │ │ ├── Rotate270.java │ │ │ │ ├── Rotate90.java │ │ │ │ ├── TransformationUtilities.java │ │ │ │ ├── Transformer.java │ │ │ │ └── VerticalBlockPermutation.java │ │ │ ├── sudoku │ │ │ ├── Constraint.java │ │ │ ├── ConstraintBehavior.java │ │ │ ├── ConstraintType.java │ │ │ ├── Field.java │ │ │ ├── Position.java │ │ │ ├── PositionMap.java │ │ │ ├── Sudoku.java │ │ │ ├── SudokuBuilder.java │ │ │ ├── SudokuManager.java │ │ │ ├── SumConstraintBehavior.java │ │ │ ├── UniqueConstraintBehavior.java │ │ │ ├── complexity │ │ │ │ ├── Complexity.java │ │ │ │ ├── ComplexityConstraint.java │ │ │ │ └── ComplexityFactory.java │ │ │ └── sudokuTypes │ │ │ │ ├── ComplexityConstraintBuilder.java │ │ │ │ ├── HyperSudoku.java │ │ │ │ ├── PermutationProperties.java │ │ │ │ ├── SamuraiSudokuType.java │ │ │ │ ├── SetOfPermutationProperties.java │ │ │ │ ├── SquigglyASudokuType9x9.java │ │ │ │ ├── SquigglyBSudokuType9x9.java │ │ │ │ ├── StairStepSudokuType9x9.java │ │ │ │ ├── StandardSudokuType16x16.java │ │ │ │ ├── StandardSudokuType4x4.java │ │ │ │ ├── StandardSudokuType6x6.java │ │ │ │ ├── StandardSudokuType9x9.java │ │ │ │ ├── SudokuType.java │ │ │ │ ├── SudokuTypes.java │ │ │ │ ├── TypeBasic.java │ │ │ │ ├── TypeSquiggly.java │ │ │ │ ├── TypeStandard.java │ │ │ │ ├── TypeUniversal.java │ │ │ │ └── XSudoku.java │ │ │ └── xml │ │ │ ├── GameXmlHandler.java │ │ │ ├── ProfileXmlHandler.java │ │ │ ├── SudokuTypesList.java │ │ │ ├── SudokuXmlHandler.java │ │ │ ├── XmlAttribute.java │ │ │ ├── XmlHandler.java │ │ │ ├── XmlHelper.java │ │ │ ├── XmlTree.java │ │ │ ├── Xmlable.java │ │ │ └── XmlableEnumList.java │ └── test │ │ └── java │ │ └── de │ │ └── sudoq │ │ └── model │ │ ├── ObservableModelTest.java │ │ ├── Utility.java │ │ ├── actionTree │ │ ├── ActionTests.java │ │ ├── ActionTreeElementTests.java │ │ ├── ActionTreeIteratorTests.java │ │ └── ActionTreeTests.java │ │ ├── files │ │ └── FileManagerTests.java │ │ ├── game │ │ ├── AssistanceSetTests.java │ │ ├── AssistancesTests.java │ │ ├── GameDataTests.java │ │ ├── GameManagerTests.java │ │ ├── GameStateHandlerTests.java │ │ └── GameTests.java │ │ ├── profile │ │ ├── ProfileTests.java │ │ └── StatisticsTests.java │ │ ├── solverGenerator │ │ ├── GeneratorTests.java │ │ ├── GeneratorUnitTests.java │ │ ├── TransformerTests.java │ │ ├── solution │ │ │ ├── DerivationBlockTests.java │ │ │ ├── DerivationFieldTests.java │ │ │ ├── SolutionTests.java │ │ │ └── SolveDerivationTests.java │ │ └── solver │ │ │ ├── BacktrackingTests.java │ │ │ ├── BranchingPoolTests.java │ │ │ ├── ComplexityRelationTests.java │ │ │ ├── SolverIntegrationTests.java │ │ │ ├── SolverSudokuTests.java │ │ │ ├── SolverTests.java │ │ │ ├── SubsetHelperTests.java │ │ │ └── SudokuTestUtilities.java │ │ ├── sudoku │ │ ├── ConstraintTests.java │ │ ├── ConstraintTypeTests.java │ │ ├── FieldTests.java │ │ ├── PositionMapTests.java │ │ ├── PositionTests.java │ │ ├── SudokuBuilderTests.java │ │ ├── SudokuManagerTests.java │ │ ├── SudokuTests.java │ │ ├── SumConstraintBehaviorTests.java │ │ ├── UniqueConstraintBehaviorTests.java │ │ ├── complexity │ │ │ ├── ComplexityConstraintTests.java │ │ │ └── ComplexityTests.java │ │ └── sudokuTypes │ │ │ ├── HyperSudokuTests.java │ │ │ ├── PermutationPropertiesTests.java │ │ │ ├── Pseudotest.java │ │ │ ├── SamuraiSudokuTypeTests.java │ │ │ ├── SquigglyASudokuTests.java │ │ │ ├── SquigglyBSudokuTest.java │ │ │ ├── SquigglySudokuTypesTest.java │ │ │ ├── StairStepSudokuTests.java │ │ │ ├── StandardSudokuType16x16Tests.java │ │ │ ├── StandardSudokuType4x4Tests.java │ │ │ ├── StandardSudokuType6x6Tests.java │ │ │ ├── StandardSudokuTypeTest.java │ │ │ ├── SudokuTypesTests.java │ │ │ ├── TypeBasicTests.java │ │ │ ├── TypeBuilder.java │ │ │ ├── TypeUniversalTests.java │ │ │ └── XSudokuTests.java │ │ └── xml │ │ ├── XmlAttributeTests.java │ │ ├── XmlHandlerTests.java │ │ ├── XmlHelperTests.java │ │ └── XmlTreeTests.java │ └── sudoqmodel.iml └── utilities ├── README ├── compareStringFiles.py ├── ignore_strings └── svgs ├── backward.svg ├── help_button.png ├── help_button.svg ├── tutorial_bookmark.svg ├── tutorial_branching.svg ├── tutorial_current_state.svg └── tutorial_state.svg /.gitignore: -------------------------------------------------------------------------------- 1 | *~ 2 | *.synctex.gz 3 | *.checkstyle 4 | local.properties 5 | *.tex~ 6 | *.dvi 7 | *.glo 8 | *.gls 9 | *.glg 10 | *.ist 11 | *.lyx 12 | *.log 13 | *.backup 14 | *.aux 15 | *.out 16 | *.toc 17 | *.kilepr 18 | *.nav 19 | *.snm 20 | *.class 21 | *.cfg 22 | *.bin 23 | lint.xml 24 | sudoq-model/bin 25 | test-model/bin 26 | sudoq-app/bin 27 | sudoq-app/gen 28 | sudoq-app/assets 29 | sudoq-app/libs/model.jar 30 | sudoq-app/sudoqapp/build/intermediates/ 31 | test-app/bin 32 | test-app/gen 33 | test-app/coverage/ 34 | tmp 35 | .metadata/ 36 | -------------------------------------------------------------------------------- /.idea/.name: -------------------------------------------------------------------------------- 1 | SudoQ -------------------------------------------------------------------------------- /.idea/SudoQ.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 22 | -------------------------------------------------------------------------------- /.idea/copyright/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 1.7 19 | 20 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /README: -------------------------------------------------------------------------------- 1 | SUDOQ README 2 | 3 | ANDROID STUFF 4 | 5 | All you need you get over here http://developer.android.com/index.html 6 | The SDK -> http://developer.android.com/sdk/index.html 7 | 8 | SETUP 9 | 10 | Since all sub-directories are eclipse-projects you can import them as such. 11 | Eclipse -> http://www.eclipse.org/ 12 | 13 | To run the app on the emulator or a phone you have to … 14 | … compile to the target SDK (Not min SDK) otherwise you'll get compile errors. 15 | … add the sudoq-model to your sudoq-app project's buildpath in case eclipse got that wrong. 16 | … create an assets folder called assets within the sudoq-app project and put the Sudokus folder which contains pre-generated Sudokus in it. 17 | 18 | WORKING THE CODE 19 | 20 | Some advise: 21 | 22 | Keep any android specific code away from the model. 23 | In case you got stuck: http://xkcd.com/ or http://stackoverflow.com/questions/tagged/android 24 | 25 | That should be all. In case of emergencies Don't Panic, and call one of the devs. 26 | 27 | And don't forget your towel! 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /sudoq-app/.gradle/2.2.1/taskArtifacts/cache.properties: -------------------------------------------------------------------------------- 1 | #Fri Aug 28 00:08:23 CEST 2015 2 | -------------------------------------------------------------------------------- /sudoq-app/.gradle/2.2.1/taskArtifacts/cache.properties.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/.gradle/2.2.1/taskArtifacts/cache.properties.lock -------------------------------------------------------------------------------- /sudoq-app/.idea/.name: -------------------------------------------------------------------------------- 1 | sudoq-app -------------------------------------------------------------------------------- /sudoq-app/.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 22 | -------------------------------------------------------------------------------- /sudoq-app/.idea/copyright/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /sudoq-app/.idea/gradle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 18 | 19 | -------------------------------------------------------------------------------- /sudoq-app/.idea/libraries/appcompat_v7_23_0_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /sudoq-app/.idea/libraries/cardview_v7_23_0_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /sudoq-app/.idea/libraries/commons_io_2_4.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /sudoq-app/.idea/libraries/commons_lang3_3_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /sudoq-app/.idea/libraries/design_23_0_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /sudoq-app/.idea/libraries/hamcrest_core_1_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /sudoq-app/.idea/libraries/junit_4_11.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /sudoq-app/.idea/libraries/org_apache_commons_io_2_4.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /sudoq-app/.idea/libraries/robotium_solo_4_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /sudoq-app/.idea/libraries/robotium_solo_5_4_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /sudoq-app/.idea/libraries/sudoqmodel_sudoqmodel.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /sudoq-app/.idea/libraries/support_annotations_23_0_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /sudoq-app/.idea/libraries/support_v4_23_0_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /sudoq-app/.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /sudoq-app/.idea/runConfigurations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 12 | -------------------------------------------------------------------------------- /sudoq-app/.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /sudoq-app/build.gradle: -------------------------------------------------------------------------------- 1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. 2 | buildscript { 3 | repositories { 4 | jcenter() 5 | } 6 | dependencies { 7 | classpath 'com.android.tools.build:gradle:1.1.0' 8 | } 9 | } 10 | 11 | allprojects { 12 | repositories { 13 | jcenter() 14 | } 15 | } 16 | 17 | -------------------------------------------------------------------------------- /sudoq-app/build/intermediates/model_data.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/build/intermediates/model_data.bin -------------------------------------------------------------------------------- /sudoq-app/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /sudoq-app/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Wed Apr 10 15:27:10 PDT 2013 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-2.2.1-all.zip 7 | -------------------------------------------------------------------------------- /sudoq-app/res/compromised.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /sudoq-app/res/game.dtd: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 9 | 13 | 14 | 15 | 19 | 20 | 21 | 26 | 27 | 28 | 31 | -------------------------------------------------------------------------------- /sudoq-app/res/game_example.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /sudoq-app/res/games.dtd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | -------------------------------------------------------------------------------- /sudoq-app/res/games_example.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /sudoq-app/res/profile.dtd: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | -------------------------------------------------------------------------------- /sudoq-app/res/profiles.dtd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | 17 | -------------------------------------------------------------------------------- /sudoq-app/res/sudoku.dtd: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 12 | 13 | 14 | 17 | -------------------------------------------------------------------------------- /sudoq-app/res/sudoku_example.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /sudoq-app/res/tmp.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /sudoq-app/res/tmp2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | xyz 4 | -------------------------------------------------------------------------------- /sudoq-app/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':sudoqmodel' 2 | include ':sudoqapp' 3 | -------------------------------------------------------------------------------- /sudoq-app/sudoq-app.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /sudoq-app/sudoq-app/.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /sudoq-app/sudoq-app/.idea/copyright/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /sudoq-app/sudoq-app/.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /sudoq-app/sudoq-app/.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /sudoq-app/sudoq-app/.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.application' 2 | 3 | android { 4 | compileSdkVersion 21 5 | buildToolsVersion "22.0.1" 6 | 7 | defaultConfig { 8 | applicationId "de.sudoq" 9 | minSdkVersion 8 10 | targetSdkVersion 21 11 | 12 | testApplicationId "de.sudoq.test" 13 | testInstrumentationRunner "android.test.InstrumentationTestRunner" 14 | } 15 | 16 | buildTypes { 17 | release { 18 | minifyEnabled false 19 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' 20 | } 21 | } 22 | } 23 | 24 | dependencies { 25 | compile project(':sudoqmodel') 26 | compile "com.android.support:appcompat-v7:21.0.+" 27 | compile 'com.android.support:support-v4:21.0.0' 28 | compile 'org.apache.directory.studio:org.apache.commons.io:2.4' 29 | androidTestCompile 'com.jayway.android.robotium:robotium-solo:5.4.1' 30 | androidTestCompile files('libs/robotium-solo-4.1.jar') 31 | } 32 | -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/generated/source/buildConfig/androidTest/debug/de/sudoq/test/BuildConfig.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Automatically generated file. DO NOT MODIFY 3 | */ 4 | package de.sudoq.test; 5 | 6 | public final class BuildConfig { 7 | public static final boolean DEBUG = Boolean.parseBoolean("true"); 8 | public static final String APPLICATION_ID = "de.sudoq.test"; 9 | public static final String BUILD_TYPE = "debug"; 10 | public static final String FLAVOR = ""; 11 | public static final int VERSION_CODE = -1; 12 | public static final String VERSION_NAME = ""; 13 | } 14 | -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/generated/source/buildConfig/debug/de/sudoq/BuildConfig.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Automatically generated file. DO NOT MODIFY 3 | */ 4 | package de.sudoq; 5 | 6 | public final class BuildConfig { 7 | public static final boolean DEBUG = Boolean.parseBoolean("true"); 8 | public static final String APPLICATION_ID = "de.sudoq"; 9 | public static final String BUILD_TYPE = "debug"; 10 | public static final String FLAVOR = ""; 11 | public static final int VERSION_CODE = 13; 12 | public static final String VERSION_NAME = ""; 13 | } 14 | -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/generated/source/r/androidTest/debug/de/sudoq/test/R.java: -------------------------------------------------------------------------------- 1 | /* AUTO-GENERATED FILE. DO NOT MODIFY. 2 | * 3 | * This class was automatically generated by the 4 | * aapt tool from the resource data it found. It 5 | * should not be modified by hand. 6 | */ 7 | 8 | package de.sudoq.test; 9 | 10 | public final class R { 11 | public static final class attr { 12 | } 13 | public static final class drawable { 14 | public static final int ic_launcher=0x7f020000; 15 | } 16 | public static final class layout { 17 | public static final int main=0x7f030000; 18 | } 19 | public static final class string { 20 | public static final int app_name=0x7f040000; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/intermediates/incremental/aidl/androidTest/debug/dependency.store: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/intermediates/incremental/aidl/debug/dependency.store: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/intermediates/incremental/mergeAssets/androidTest/debug/merger.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/intermediates/incremental/mergeResources/androidTest/debug/merger.xml: -------------------------------------------------------------------------------- 1 | 2 | SudoQRobotiumTests -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/intermediates/res/androidTest/debug/drawable-hdpi-v4/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/build/intermediates/res/androidTest/debug/drawable-hdpi-v4/ic_launcher.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/intermediates/res/androidTest/debug/drawable-ldpi-v4/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/build/intermediates/res/androidTest/debug/drawable-ldpi-v4/ic_launcher.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/intermediates/res/androidTest/debug/drawable-mdpi-v4/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/build/intermediates/res/androidTest/debug/drawable-mdpi-v4/ic_launcher.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/intermediates/res/androidTest/debug/layout/main.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/intermediates/res/androidTest/debug/values/values.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SudoQRobotiumTests 6 | -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/intermediates/res/debug/drawable-hdpi-v4/background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/build/intermediates/res/debug/drawable-hdpi-v4/background.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/intermediates/res/debug/drawable-hdpi-v4/help.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/build/intermediates/res/debug/drawable-hdpi-v4/help.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/intermediates/res/debug/drawable-hdpi-v4/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/build/intermediates/res/debug/drawable-hdpi-v4/ic_launcher.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/intermediates/res/debug/drawable-hdpi-v4/launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/build/intermediates/res/debug/drawable-hdpi-v4/launcher.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/intermediates/res/debug/drawable-hdpi-v4/redo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/build/intermediates/res/debug/drawable-hdpi-v4/redo.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/intermediates/res/debug/drawable-hdpi-v4/tutorial_bookmark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/build/intermediates/res/debug/drawable-hdpi-v4/tutorial_bookmark.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/intermediates/res/debug/drawable-hdpi-v4/tutorial_branching.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/build/intermediates/res/debug/drawable-hdpi-v4/tutorial_branching.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/intermediates/res/debug/drawable-hdpi-v4/tutorial_current_state.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/build/intermediates/res/debug/drawable-hdpi-v4/tutorial_current_state.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/intermediates/res/debug/drawable-hdpi-v4/tutorial_state.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/build/intermediates/res/debug/drawable-hdpi-v4/tutorial_state.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/intermediates/res/debug/drawable-hdpi-v4/undo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/build/intermediates/res/debug/drawable-hdpi-v4/undo.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/intermediates/res/debug/drawable-ldpi-v4/tutorial_bookmark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/build/intermediates/res/debug/drawable-ldpi-v4/tutorial_bookmark.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/intermediates/res/debug/drawable-ldpi-v4/tutorial_branching.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/build/intermediates/res/debug/drawable-ldpi-v4/tutorial_branching.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/intermediates/res/debug/drawable-ldpi-v4/tutorial_current_state.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/build/intermediates/res/debug/drawable-ldpi-v4/tutorial_current_state.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/intermediates/res/debug/drawable-ldpi-v4/tutorial_state.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/build/intermediates/res/debug/drawable-ldpi-v4/tutorial_state.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/intermediates/res/debug/drawable-mdpi-v4/background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/build/intermediates/res/debug/drawable-mdpi-v4/background.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/intermediates/res/debug/drawable-mdpi-v4/help.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/build/intermediates/res/debug/drawable-mdpi-v4/help.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/intermediates/res/debug/drawable-mdpi-v4/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/build/intermediates/res/debug/drawable-mdpi-v4/ic_launcher.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/intermediates/res/debug/drawable-mdpi-v4/launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/build/intermediates/res/debug/drawable-mdpi-v4/launcher.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/intermediates/res/debug/drawable-mdpi-v4/redo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/build/intermediates/res/debug/drawable-mdpi-v4/redo.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/intermediates/res/debug/drawable-mdpi-v4/tutorial_bookmark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/build/intermediates/res/debug/drawable-mdpi-v4/tutorial_bookmark.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/intermediates/res/debug/drawable-mdpi-v4/tutorial_branching.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/build/intermediates/res/debug/drawable-mdpi-v4/tutorial_branching.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/intermediates/res/debug/drawable-mdpi-v4/tutorial_current_state.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/build/intermediates/res/debug/drawable-mdpi-v4/tutorial_current_state.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/intermediates/res/debug/drawable-mdpi-v4/tutorial_state.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/build/intermediates/res/debug/drawable-mdpi-v4/tutorial_state.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/intermediates/res/debug/drawable-mdpi-v4/undo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/build/intermediates/res/debug/drawable-mdpi-v4/undo.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/intermediates/res/debug/drawable-xhdpi-v4/background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/build/intermediates/res/debug/drawable-xhdpi-v4/background.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/intermediates/res/debug/drawable-xhdpi-v4/help.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/build/intermediates/res/debug/drawable-xhdpi-v4/help.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/intermediates/res/debug/drawable-xhdpi-v4/launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/build/intermediates/res/debug/drawable-xhdpi-v4/launcher.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/intermediates/res/debug/drawable-xhdpi-v4/redo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/build/intermediates/res/debug/drawable-xhdpi-v4/redo.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/intermediates/res/debug/drawable-xhdpi-v4/tutorial_bookmark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/build/intermediates/res/debug/drawable-xhdpi-v4/tutorial_bookmark.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/intermediates/res/debug/drawable-xhdpi-v4/tutorial_branching.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/build/intermediates/res/debug/drawable-xhdpi-v4/tutorial_branching.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/intermediates/res/debug/drawable-xhdpi-v4/tutorial_current_state.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/build/intermediates/res/debug/drawable-xhdpi-v4/tutorial_current_state.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/intermediates/res/debug/drawable-xhdpi-v4/tutorial_state.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/build/intermediates/res/debug/drawable-xhdpi-v4/tutorial_state.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/intermediates/res/debug/drawable-xhdpi-v4/undo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/build/intermediates/res/debug/drawable-xhdpi-v4/undo.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/intermediates/res/debug/drawable-xxxhdpi-v4/help.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/build/intermediates/res/debug/drawable-xxxhdpi-v4/help.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/intermediates/res/debug/drawable/action_tree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/build/intermediates/res/debug/drawable/action_tree.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/intermediates/res/debug/drawable/action_tree_tutorial.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/build/intermediates/res/debug/drawable/action_tree_tutorial.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/intermediates/res/debug/drawable/background_gradient.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/intermediates/res/debug/drawable/background_serious.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/intermediates/res/debug/drawable/empty_sudoku.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/build/intermediates/res/debug/drawable/empty_sudoku.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/intermediates/res/debug/drawable/gesture_button_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | 10 | -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/intermediates/res/debug/drawable/gesture_checked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/build/intermediates/res/debug/drawable/gesture_checked.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/intermediates/res/debug/drawable/gesture_unchecked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/build/intermediates/res/debug/drawable/gesture_unchecked.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/intermediates/res/debug/drawable/help.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/build/intermediates/res/debug/drawable/help.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/intermediates/res/debug/drawable/help_tutorial.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/build/intermediates/res/debug/drawable/help_tutorial.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/intermediates/res/debug/drawable/launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/build/intermediates/res/debug/drawable/launcher.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/intermediates/res/debug/drawable/redo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/build/intermediates/res/debug/drawable/redo.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/intermediates/res/debug/drawable/rootkuh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/build/intermediates/res/debug/drawable/rootkuh.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/intermediates/res/debug/drawable/squiggly.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/build/intermediates/res/debug/drawable/squiggly.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/intermediates/res/debug/drawable/sudoku_tutorial.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/build/intermediates/res/debug/drawable/sudoku_tutorial.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/intermediates/res/debug/drawable/tutorial_bookmark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/build/intermediates/res/debug/drawable/tutorial_bookmark.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/intermediates/res/debug/drawable/tutorial_branching.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/build/intermediates/res/debug/drawable/tutorial_branching.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/intermediates/res/debug/drawable/tutorial_current_state.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/build/intermediates/res/debug/drawable/tutorial_current_state.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/intermediates/res/debug/drawable/tutorial_state.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/build/intermediates/res/debug/drawable/tutorial_state.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/intermediates/res/debug/drawable/undo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/build/intermediates/res/debug/drawable/undo.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/intermediates/res/debug/drawable/xsudoku.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/build/intermediates/res/debug/drawable/xsudoku.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/intermediates/res/debug/layout/list.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/intermediates/res/debug/layout/tutorial.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 11 | 16 | 20 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/intermediates/res/debug/menu/action_bar_gesture_builder.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 10 | 11 | 12 | 15 | 16 | 17 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/intermediates/res/debug/menu/action_bar_player_preferences.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 10 | 11 | 12 | 15 | 16 | 17 | 20 | 21 | 22 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/intermediates/res/debug/menu/action_bar_restrict_types.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 9 | 10 | 11 | 14 | 15 | -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/intermediates/res/debug/menu/action_bar_standard.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/intermediates/res/debug/menu/action_bar_sudoku.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 10 | 11 | 12 | 13 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/intermediates/res/debug/menu/action_bar_sudoku_loading.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 9 | 10 | 11 | 14 | 15 | 16 | 19 | 20 | -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/build/intermediates/res/debug/raw/gestures: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/build/intermediates/res/debug/raw/gestures -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/libs/robotium-solo-4.1-javadoc.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/libs/robotium-solo-4.1-javadoc.jar -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/libs/robotium-solo-4.1.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/libs/robotium-solo-4.1.jar -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/androidTest/java/de/sudoq/test/SplashTest.java: -------------------------------------------------------------------------------- 1 | package de.sudoq.test; 2 | 3 | import android.app.Activity; 4 | import android.test.ActivityInstrumentationTestCase2; 5 | 6 | import com.jayway.android.robotium.solo.Solo; 7 | 8 | import de.sudoq.controller.menus.MainActivity; 9 | import de.sudoq.controller.menus.SplashActivity; 10 | 11 | public class SplashTest extends ActivityInstrumentationTestCase2 { 12 | private Solo solo; 13 | 14 | public SplashTest() { 15 | super("de.sudoq", SplashActivity.class); 16 | } 17 | 18 | public void setUp() throws Exception { 19 | solo = new Solo(getInstrumentation(), getActivity()); 20 | } 21 | 22 | public void testSplashFinish() throws Exception { 23 | /* 24 | * ok this is kinda silly but it is a way to get the inizialization done 25 | * so that the mainmenu wont throw exceptions. Just run the whole 26 | * project to prevent this. 27 | */ 28 | Activity a = this.getActivity(); 29 | // wait for initialization to finish 30 | while (solo.getCurrentActivity() == a) { 31 | solo.sleep(100); 32 | } 33 | 34 | solo.assertCurrentActivity("Should be MainAcitivty", MainActivity.class); 35 | } 36 | 37 | @Override 38 | public void tearDown() throws Exception { 39 | solo.finishOpenedActivities(); 40 | } 41 | } -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/androidTest/java/de/sudoq/test/SudokuUtilities.java: -------------------------------------------------------------------------------- 1 | package de.sudoq.test; 2 | 3 | import android.widget.LinearLayout; 4 | import de.sudoq.R; 5 | import de.sudoq.controller.sudoku.SudokuActivity; 6 | import de.sudoq.model.sudoku.Position; 7 | import de.sudoq.view.SudokuFieldView; 8 | import de.sudoq.view.VirtualKeyboardButtonView; 9 | import de.sudoq.view.VirtualKeyboardLayout; 10 | 11 | public class SudokuUtilities { 12 | 13 | public static SudokuFieldView[][] getViewArray(SudokuActivity a) { 14 | Position dim = a.getGame().getSudoku().getSudokuType().getSize(); 15 | SudokuFieldView[][] oldViews = a.getSudokuLayout().getSudokuFieldViews(); 16 | SudokuFieldView[][] views = new SudokuFieldView[dim.getX()][dim.getY()]; 17 | for (int i = 0; i < dim.getX(); i++) { 18 | for (int j = 0; j < dim.getY(); j++) { 19 | views[i][j] = oldViews[i][j]; 20 | } 21 | } 22 | return views; 23 | } 24 | 25 | /** 26 | * Gets a Button of the VirtualKeyboard with the given symbol. It expects a real value and the transformation to abstract is done automatically. 27 | * 28 | * @param a The current {@link SudokuActivity} 29 | * @param value The value, of the Button (Not the abstract symbol!) 30 | * @return The View of the {@link VirtualKeyboardButtonView} 31 | */ 32 | public static VirtualKeyboardButtonView getKeyboardButton(SudokuActivity a, int value) { 33 | if (value > 0) { 34 | VirtualKeyboardLayout view = (VirtualKeyboardLayout) a.findViewById(R.id.virtual_keyboard); 35 | int columns = (int) Math.ceil(Math.sqrt(a.getGame().getSudoku().getSudokuType().getNumberOfSymbols())); 36 | LinearLayout linearLayout = (LinearLayout) view.getChildAt((value - 1) / columns); 37 | VirtualKeyboardButtonView virtualKeyboardButtonView = (VirtualKeyboardButtonView) linearLayout.getChildAt((value - 1) % columns); 38 | return virtualKeyboardButtonView; 39 | } else { 40 | return null; 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/androidTest/java/de/sudoq/test/SudoqTestCase.java: -------------------------------------------------------------------------------- 1 | package de.sudoq.test; 2 | 3 | import android.test.ActivityInstrumentationTestCase2; 4 | 5 | import com.jayway.android.robotium.solo.Solo; 6 | 7 | import de.sudoq.R; 8 | import de.sudoq.controller.menus.MainActivity; 9 | import de.sudoq.controller.menus.SplashActivity; 10 | 11 | /** 12 | * Diese Klasse stellt eine basis für alle unsere Robotium Tests dar. Sie stellt sicher, dass die App richtig 13 | * initialisiert ist und dass für jeden Test ein sauberes neues Profil genutzt wird. Jeder Test startet im Hauptmenü 14 | */ 15 | public class SudoqTestCase extends ActivityInstrumentationTestCase2 { 16 | protected Solo solo; 17 | 18 | public SudoqTestCase() { 19 | super("de.sudoq", SplashActivity.class); 20 | } 21 | 22 | public void setUp() { 23 | solo = new Solo(getInstrumentation(), getActivity()); 24 | int save = SplashActivity.splashTime; 25 | SplashActivity.splashTime = 0; 26 | // wait for initialization to finish 27 | while (solo.getCurrentActivity().getClass() == SplashActivity.class) { 28 | solo.sleep(100); 29 | } 30 | SplashActivity.splashTime = save; 31 | 32 | /* AT 150 (create profile) */ 33 | solo.assertCurrentActivity("Should be MainAcitivty", MainActivity.class); 34 | solo.clickOnButton(solo.getCurrentActivity().getString(R.string.sf_mainmenu_profile)); 35 | solo.sendKey(Solo.MENU); 36 | solo.clickOnText(solo.getCurrentActivity().getString(R.string.action_new_profile)); 37 | solo.goBack(); 38 | } 39 | 40 | @Override 41 | public void tearDown() { 42 | solo.goBackToActivity("MainActivity"); 43 | solo.waitForActivity("MainActivity",15000); 44 | solo.clickOnButton(solo.getString(R.string.sf_mainmenu_profile));//faster? 45 | solo.sendKey(Solo.MENU); 46 | solo.clickOnText(solo.getCurrentActivity().getString(R.string.action_delete_profile)); 47 | solo.finishOpenedActivities(); 48 | } 49 | } -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/androidTest/res/drawable-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/androidTest/res/drawable-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/androidTest/res/drawable-ldpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/androidTest/res/drawable-ldpi/ic_launcher.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/androidTest/res/drawable-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/androidTest/res/drawable-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/androidTest/res/layout/main.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/androidTest/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | SudoQRobotiumTests 4 | 5 | -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/assets/sudokus/standard4x4/easy/sudoku_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/assets/sudokus/standard4x4/easy/sudoku_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/assets/sudokus/standard4x4/easy/sudoku_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/java/de/sudoq/controller/AppBarLayoutBehavior.java: -------------------------------------------------------------------------------- 1 | package de.sudoq.controller; 2 | 3 | import android.support.design.widget.AppBarLayout; 4 | import android.support.design.widget.CoordinatorLayout; 5 | import android.view.MotionEvent; 6 | 7 | /** 8 | * Created by timo on 02.09.15. 9 | */ 10 | 11 | public class AppBarLayoutBehavior extends AppBarLayout.Behavior { 12 | 13 | @Override 14 | public boolean onInterceptTouchEvent(CoordinatorLayout parent, AppBarLayout child, MotionEvent ev) { 15 | return !(parent != null && child != null && ev != null) || super.onInterceptTouchEvent(parent, child, ev); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/java/de/sudoq/controller/sudoku/FieldInteractionListener.java: -------------------------------------------------------------------------------- 1 | /* 2 | * SudoQ is a Sudoku-App for Adroid Devices with Version 2.2 at least. 3 | * Copyright (C) 2012 Heiko Klare, Julian Geppert, Jan-Bernhard Kordaß, Jonathan Kieling, Tim Zeitz, Timo Abele 4 | * This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. 5 | * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. 6 | * You should have received a copy of the GNU General Public License along with this program; if not, see . 7 | */ 8 | package de.sudoq.controller.sudoku; 9 | 10 | import de.sudoq.view.SudokuFieldView; 11 | 12 | /** 13 | * Ein Listener für Änderungen an Sudoku-Feldern, wie das Auswählen eines Feld 14 | * bzw. die Änderung des Feldinhaltes. 15 | */ 16 | public interface FieldInteractionListener { 17 | 18 | /** 19 | * Wird aufgerufen, falls ein neues Feld ausgewählt wurde. 20 | * 21 | * @param view 22 | * Die View, welche neu ausgewählt wurde 23 | */ 24 | public void onFieldSelected(SudokuFieldView view); 25 | 26 | /** 27 | * Wird aufgerufen, falls ein Feld geändert wurde. 28 | * 29 | * @param view 30 | * Die View, welche geändert wurde 31 | */ 32 | public void onFieldChanged(SudokuFieldView view); 33 | 34 | } 35 | -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/java/de/sudoq/controller/sudoku/InputListener.java: -------------------------------------------------------------------------------- 1 | /* 2 | * SudoQ is a Sudoku-App for Adroid Devices with Version 2.2 at least. 3 | * Copyright (C) 2012 Heiko Klare, Julian Geppert, Jan-Bernhard Kordaß, Jonathan Kieling, Tim Zeitz, Timo Abele 4 | * This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. 5 | * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. 6 | * You should have received a copy of the GNU General Public License along with this program; if not, see . 7 | */ 8 | package de.sudoq.controller.sudoku; 9 | 10 | /** 11 | * Dieses Interface ermöglicht es Klassen zu reagieren, sobald ein Wert auf der 12 | * Tastatur eingegeben wurde. 13 | */ 14 | public interface InputListener { 15 | /** 16 | * Wird aufgerufen, falls etwas eingegeben wird. 17 | * 18 | * @param symbol 19 | * Das eingegebene Symbol 20 | */ 21 | public void onInput(int symbol); 22 | 23 | } 24 | -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/java/de/sudoq/controller/sudoku/ObservableActionCaster.java: -------------------------------------------------------------------------------- 1 | /* 2 | * SudoQ is a Sudoku-App for Adroid Devices with Version 2.2 at least. 3 | * Copyright (C) 2012 Heiko Klare, Julian Geppert, Jan-Bernhard Kordaß, Jonathan Kieling, Tim Zeitz, Timo Abele 4 | * This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. 5 | * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. 6 | * You should have received a copy of the GNU General Public License along with this program; if not, see . 7 | */ 8 | package de.sudoq.controller.sudoku; 9 | 10 | /** 11 | * Interface, welches von Klassen implementiert werden kann, die Actions in 12 | * einem Sudoku ausführen. 13 | * 14 | * @see ActionListener 15 | */ 16 | public interface ObservableActionCaster { 17 | 18 | /** 19 | * Benachrichtigt die Listener. 20 | */ 21 | void notifyListener(); 22 | 23 | /** 24 | * Registriert einen Listener. Ist dieser null, so wird nichts getan. 25 | * 26 | * @param listener 27 | * Der Listener der hinzugefügt werden soll. 28 | */ 29 | void registerListener(ActionListener listener); 30 | 31 | /** 32 | * Entfernt einen Listener. Ist dieser nicht registriert, so wird nichts 33 | * getan. 34 | * 35 | * @param listener 36 | * Der Listener der entfernt werden soll. 37 | */ 38 | void removeListener(ActionListener listener); 39 | } 40 | -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/java/de/sudoq/controller/sudoku/ObservableFieldInteraction.java: -------------------------------------------------------------------------------- 1 | /* 2 | * SudoQ is a Sudoku-App for Adroid Devices with Version 2.2 at least. 3 | * Copyright (C) 2012 Heiko Klare, Julian Geppert, Jan-Bernhard Kordaß, Jonathan Kieling, Tim Zeitz, Timo Abele 4 | * This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. 5 | * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. 6 | * You should have received a copy of the GNU General Public License along with this program; if not, see . 7 | */ 8 | package de.sudoq.controller.sudoku; 9 | 10 | /** 11 | * Interface, welches von Klassen implementiert werden kann, die auf denen 12 | * Feld-Interaktionen ausgeführt werden. einem Sudoku ausführen. 13 | * 14 | * @see FieldInteractionListener 15 | */ 16 | public interface ObservableFieldInteraction { 17 | 18 | /** 19 | * Benachrichtigt die Listener. 20 | */ 21 | void notifyListener(); 22 | 23 | /** 24 | * Registriert einen Listener. Ist dieser null, so wird nichts getan. 25 | * 26 | * @param listener 27 | * Der Listener der hinzugefügt werden soll. 28 | */ 29 | void registerListener(FieldInteractionListener listener); 30 | 31 | /** 32 | * Entfernt einen Listener. Ist dieser nicht registriert, so wird nichts 33 | * getan. 34 | * 35 | * @param listener 36 | * Der Listener der entfernt werden soll. 37 | */ 38 | void removeListener(FieldInteractionListener listener); 39 | } 40 | -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/java/de/sudoq/controller/tutorial/FragmentActionTree.java: -------------------------------------------------------------------------------- 1 | package de.sudoq.controller.tutorial; 2 | 3 | import de.sudoq.R; 4 | import android.os.Bundle; 5 | import android.support.v4.app.Fragment; 6 | import android.view.LayoutInflater; 7 | import android.view.View; 8 | import android.view.ViewGroup; 9 | 10 | public class FragmentActionTree extends Fragment { 11 | @Override 12 | public View onCreateView(LayoutInflater inflater, ViewGroup group, Bundle saved) 13 | { 14 | return inflater.inflate(R.layout.tutorial_actiontree, group, false); 15 | } 16 | 17 | } -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/java/de/sudoq/controller/tutorial/FragmentAssistances.java: -------------------------------------------------------------------------------- 1 | package de.sudoq.controller.tutorial; 2 | 3 | import de.sudoq.R; 4 | import android.os.Bundle; 5 | import android.support.v4.app.Fragment; 6 | import android.view.LayoutInflater; 7 | import android.view.View; 8 | import android.view.ViewGroup; 9 | 10 | public class FragmentAssistances extends Fragment { 11 | @Override 12 | public View onCreateView(LayoutInflater inflater, ViewGroup group, Bundle saved) 13 | { 14 | return inflater.inflate(R.layout.tutorial_assistances, group, false); 15 | } 16 | } -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/java/de/sudoq/controller/tutorial/FragmentSudoku.java: -------------------------------------------------------------------------------- 1 | package de.sudoq.controller.tutorial; 2 | 3 | import de.sudoq.R; 4 | import android.os.Bundle; 5 | import android.support.v4.app.Fragment; 6 | import android.view.LayoutInflater; 7 | import android.view.View; 8 | import android.view.ViewGroup; 9 | 10 | public class FragmentSudoku extends Fragment { 11 | @Override 12 | public View onCreateView(LayoutInflater inflater, ViewGroup group, Bundle saved) 13 | { 14 | return inflater.inflate(R.layout.tutorial_sudoku, group, false); 15 | } 16 | } -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/java/de/sudoq/view/SquareImageButton.java: -------------------------------------------------------------------------------- 1 | package de.sudoq.view; 2 | 3 | import android.content.Context; 4 | import android.util.AttributeSet; 5 | import android.widget.ImageButton; 6 | 7 | public class SquareImageButton extends ImageButton { 8 | 9 | public SquareImageButton(Context context, AttributeSet attrs) { 10 | super(context, attrs); 11 | } 12 | 13 | @Override 14 | protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 15 | int temp = Math.max(widthMeasureSpec, heightMeasureSpec); 16 | super.onMeasure(temp, temp); 17 | } 18 | 19 | 20 | } 21 | -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/java/de/sudoq/view/ZoomableView.java: -------------------------------------------------------------------------------- 1 | package de.sudoq.view; 2 | 3 | /** 4 | * Ein Interface für eine zoombare View, die einem FullScrollLayout als Child übergeben werden kann. 5 | */ 6 | public interface ZoomableView { 7 | /** 8 | * Setzt den aktuellen Zoom-Faktor für diese View und refresht sie. 9 | * 10 | * @param factor 11 | * Der Zoom-Faktor 12 | * @return Gibt zurück, ob das Zoom-Event verarbeitet wurde 13 | */ 14 | boolean zoom(float factor); 15 | 16 | /** 17 | * Gibt den minimalen Zoomfaktor für die View zurück. 18 | * @return den minimalen Zoomfaktor für die View 19 | */ 20 | float getMinZoomFactor(); 21 | 22 | /** 23 | * Gibt den maximalen Zoomfaktor für die View zurück. 24 | * @return den maximalen Zoomfaktor für die View 25 | */ 26 | float getMaxZoomFactor(); 27 | } 28 | -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable-hdpi/background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable-hdpi/background.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable-hdpi/help.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable-hdpi/help.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable-hdpi/ic_arrow_back_black_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable-hdpi/ic_arrow_back_black_24dp.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable-hdpi/ic_arrow_back_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable-hdpi/ic_arrow_back_white_24dp.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable-hdpi/ic_close_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable-hdpi/ic_close_white_24dp.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable-hdpi/ic_delete_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable-hdpi/ic_delete_white_24dp.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable-hdpi/launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable-hdpi/launcher.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable-hdpi/redo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable-hdpi/redo.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable-hdpi/tutorial_bookmark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable-hdpi/tutorial_bookmark.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable-hdpi/tutorial_branching.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable-hdpi/tutorial_branching.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable-hdpi/tutorial_current_state.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable-hdpi/tutorial_current_state.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable-hdpi/tutorial_state.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable-hdpi/tutorial_state.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable-hdpi/undo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable-hdpi/undo.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable-ldpi/ic_dashboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable-ldpi/ic_dashboard.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable-ldpi/ic_discuss.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable-ldpi/ic_discuss.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable-ldpi/ic_done.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable-ldpi/ic_done.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable-ldpi/ic_event.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable-ldpi/ic_event.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable-ldpi/ic_forum.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable-ldpi/ic_forum.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable-ldpi/ic_headset.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable-ldpi/ic_headset.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable-ldpi/tutorial_bookmark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable-ldpi/tutorial_bookmark.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable-ldpi/tutorial_branching.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable-ldpi/tutorial_branching.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable-ldpi/tutorial_current_state.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable-ldpi/tutorial_current_state.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable-ldpi/tutorial_state.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable-ldpi/tutorial_state.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable-mdpi/background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable-mdpi/background.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable-mdpi/help.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable-mdpi/help.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable-mdpi/ic_arrow_back_black_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable-mdpi/ic_arrow_back_black_24dp.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable-mdpi/ic_arrow_back_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable-mdpi/ic_arrow_back_white_24dp.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable-mdpi/ic_close_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable-mdpi/ic_close_white_24dp.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable-mdpi/ic_delete_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable-mdpi/ic_delete_white_24dp.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable-mdpi/launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable-mdpi/launcher.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable-mdpi/redo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable-mdpi/redo.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable-mdpi/tutorial_bookmark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable-mdpi/tutorial_bookmark.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable-mdpi/tutorial_branching.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable-mdpi/tutorial_branching.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable-mdpi/tutorial_current_state.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable-mdpi/tutorial_current_state.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable-mdpi/tutorial_state.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable-mdpi/tutorial_state.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable-mdpi/undo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable-mdpi/undo.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable-xhdpi/background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable-xhdpi/background.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable-xhdpi/help.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable-xhdpi/help.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable-xhdpi/ic_arrow_back_black_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable-xhdpi/ic_arrow_back_black_24dp.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable-xhdpi/ic_arrow_back_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable-xhdpi/ic_arrow_back_white_24dp.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable-xhdpi/ic_close_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable-xhdpi/ic_close_white_24dp.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable-xhdpi/ic_delete_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable-xhdpi/ic_delete_white_24dp.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable-xhdpi/launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable-xhdpi/launcher.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable-xhdpi/redo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable-xhdpi/redo.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable-xhdpi/tutorial_bookmark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable-xhdpi/tutorial_bookmark.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable-xhdpi/tutorial_branching.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable-xhdpi/tutorial_branching.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable-xhdpi/tutorial_current_state.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable-xhdpi/tutorial_current_state.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable-xhdpi/tutorial_state.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable-xhdpi/tutorial_state.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable-xhdpi/undo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable-xhdpi/undo.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable-xxhdpi/ic_arrow_back_black_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable-xxhdpi/ic_arrow_back_black_24dp.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable-xxhdpi/ic_arrow_back_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable-xxhdpi/ic_arrow_back_white_24dp.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable-xxxhdpi/help.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable-xxxhdpi/help.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable-xxxhdpi/ic_arrow_back_black_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable-xxxhdpi/ic_arrow_back_black_24dp.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable-xxxhdpi/ic_arrow_back_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable-xxxhdpi/ic_arrow_back_white_24dp.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable-xxxhdpi/ic_close_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable-xxxhdpi/ic_close_white_24dp.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable-xxxhdpi/ic_delete_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable-xxxhdpi/ic_delete_white_24dp.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable/action_tree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable/action_tree.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable/action_tree_tutorial.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable/action_tree_tutorial.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable/background_gradient.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable/background_serious.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable/empty_sudoku.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable/empty_sudoku.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable/gesture_button_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | 10 | -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable/gesture_checked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable/gesture_checked.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable/gesture_unchecked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable/gesture_unchecked.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable/help.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable/help.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable/help_tutorial.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable/help_tutorial.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable/ic_clear_white_24px.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable/ic_close_white_24dp.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable/ic_close_white_24dp.zip -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable/ic_close_white_24dp/android/drawable-xxhdpi/ic_close_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable/ic_close_white_24dp/android/drawable-xxhdpi/ic_close_white_24dp.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable/ic_close_white_24dp/android/drawable-xxxhdpi/ic_close_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable/ic_close_white_24dp/android/drawable-xxxhdpi/ic_close_white_24dp.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable/ic_close_white_24px.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable/ic_delete_white_24px.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable/launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable/launcher.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable/redo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable/redo.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable/rootkuh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable/rootkuh.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable/squiggly.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable/squiggly.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable/sudoku_tutorial.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable/sudoku_tutorial.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable/tutorial_bookmark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable/tutorial_bookmark.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable/tutorial_branching.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable/tutorial_branching.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable/tutorial_current_state.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable/tutorial_current_state.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable/tutorial_state.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable/tutorial_state.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable/undo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable/undo.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/drawable/xsudoku.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/drawable/xsudoku.png -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 26 | 27 | 35 | 36 | -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/layout/gesturebuilder.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 11 | 12 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/layout/list.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/layout/nav_header.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 26 | 27 | 32 | 33 | -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/layout/profilelist.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 13 | 14 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/layout/profilelist_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/layout/restricttypes.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 11 | 12 | 13 | 14 | 24 | 25 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/layout/splash.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 12 | 22 | 23 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/layout/toolbar: -------------------------------------------------------------------------------- 1 | 14 | -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/layout/tutorial.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 11 | 16 | 20 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/layout/tutorial2.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 24 | 25 | 26 | 27 | 28 | 29 | 37 | 38 | -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/menu/action_bar_gesture_builder.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 10 | 11 | 12 | 15 | 16 | 17 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/menu/action_bar_player_preferences.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 10 | 11 | 12 | 15 | 16 | 17 | 20 | 21 | 22 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/menu/action_bar_restrict_types.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 9 | 10 | 11 | 14 | 15 | -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/menu/action_bar_standard.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/menu/action_bar_sudoku.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 10 | 11 | 12 | 13 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/menu/action_bar_sudoku_loading.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 9 | 10 | 11 | 14 | 15 | 16 | 19 | 20 | -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/menu/drawer_view.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 20 | 24 | 28 | 32 | 36 | 37 | 38 | 39 | 40 | 43 | 46 | 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/menu/sample_actions.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 9 | -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/raw/gestures: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqapp/src/main/res/raw/gestures -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | #FFF5F5F5 20 | #d5e8e6 21 | #FFFFFF 22 | #FFFFFF 23 | #FF0000 24 | #0000FF 25 | #00FF00 26 | #00FFFF 27 | #FF00FF 28 | #00695c 29 | 30 | -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 17 | 18 | 19 | 256dp 20 | 16dp 21 | 16dp 22 | 40dp 23 | -------------------------------------------------------------------------------- /sudoq-app/sudoqapp/src/main/res/values/sudoku_preferences_arrays.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | @string/sudoku_type_standard_9x9 9 | @string/sudoku_type_standard_4x4 10 | @string/sudoku_type_standard_6x6 11 | @string/sudoku_type_standard_16x16 12 | @string/sudoku_type_squiggly_a_9x9 13 | @string/sudoku_type_squiggly_b_9x9 14 | @string/sudoku_type_stairstep_9x9 15 | @string/sudoku_type_samurai 16 | @string/sudoku_type_hyper 17 | @string/sudoku_type_xsudoku 18 | 19 | 20 | 21 | @string/complexity_easy 22 | @string/complexity_medium 23 | @string/complexity_difficult 24 | @string/complexity_infernal 25 | 26 | -------------------------------------------------------------------------------- /sudoq-app/sudoqmodel/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'java' 2 | 3 | 4 | dependencies { 5 | testCompile 'junit:junit:4.7' 6 | testCompile 'org.apache.directory.studio:org.apache.commons.io:2.4' 7 | testCompile 'org.kie.modules:org-apache-commons-lang3:6.3.0.CR1' 8 | } 9 | -------------------------------------------------------------------------------- /sudoq-app/sudoqmodel/libs/commons-io-1.3.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqmodel/libs/commons-io-1.3.jar -------------------------------------------------------------------------------- /sudoq-app/sudoqmodel/libs/junit-4.7.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tim3z/SudoQ/8c734d6c68e75c13fb92f7bdf734d447933c6e78/sudoq-app/sudoqmodel/libs/junit-4.7.jar -------------------------------------------------------------------------------- /sudoq-app/sudoqmodel/res/compromised.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /sudoq-app/sudoqmodel/res/game.dtd: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 9 | 13 | 14 | 15 | 19 | 20 | 21 | 26 | 27 | 28 | 31 | -------------------------------------------------------------------------------- /sudoq-app/sudoqmodel/res/game_example.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /sudoq-app/sudoqmodel/res/games.dtd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | -------------------------------------------------------------------------------- /sudoq-app/sudoqmodel/res/games_example.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /sudoq-app/sudoqmodel/res/profile.dtd: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | -------------------------------------------------------------------------------- /sudoq-app/sudoqmodel/res/profiles.dtd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | 17 | -------------------------------------------------------------------------------- /sudoq-app/sudoqmodel/res/sudoku.dtd: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 12 | 13 | 14 | 17 | -------------------------------------------------------------------------------- /sudoq-app/sudoqmodel/res/sudoku_example.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /sudoq-app/sudoqmodel/res/tmp.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /sudoq-app/sudoqmodel/res/tmp2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | xyz 4 | -------------------------------------------------------------------------------- /sudoq-app/sudoqmodel/src/main/java/de/sudoq/model/ModelChangeListener.java: -------------------------------------------------------------------------------- 1 | /* 2 | * SudoQ is a Sudoku-App for Adroid Devices with Version 2.2 at least. 3 | * Copyright (C) 2012 Heiko Klare, Julian Geppert, Jan-Bernhard Kordaß, Jonathan Kieling, Tim Zeitz, Timo Abele 4 | * This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. 5 | * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. 6 | * You should have received a copy of the GNU General Public License along with this program; if not, see . 7 | */ 8 | package de.sudoq.model; 9 | 10 | /** 11 | * Dieses Interface definiert die Schnittstelle für alle Klassen die über 12 | * Änderungen in einer Model-Klasse benachrichtigt werden wollen. 13 | * 14 | * @param 15 | * der Typ des Objekts welches bei Änderungen mitgegeben wird 16 | */ 17 | public interface ModelChangeListener { 18 | /** Methods */ 19 | 20 | /** 21 | * Diese Methode wird aufgerufen, falls sich etwas im beobachteten Model 22 | * ändert. 23 | * 24 | * @param obj 25 | * Das Objekt, das sich geaendert hat. Kann auch null sein 26 | */ 27 | public void onModelChanged(T obj); 28 | 29 | } 30 | -------------------------------------------------------------------------------- /sudoq-app/sudoqmodel/src/main/java/de/sudoq/model/actionTree/ActionFactory.java: -------------------------------------------------------------------------------- 1 | /* 2 | * SudoQ is a Sudoku-App for Adroid Devices with Version 2.2 at least. 3 | * Copyright (C) 2012 Heiko Klare, Julian Geppert, Jan-Bernhard Kordaß, Jonathan Kieling, Tim Zeitz, Timo Abele 4 | * This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. 5 | * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. 6 | * You should have received a copy of the GNU General Public License along with this program; if not, see . 7 | */ 8 | package de.sudoq.model.actionTree; 9 | 10 | import de.sudoq.model.sudoku.Field; 11 | 12 | /** 13 | * Dieses Interface definiert die Schnittstelle für Klassen, die konkrete 14 | * Actions für das Arbeiten auf bestimmten Eigenschaften eines Sudoku-Feldes 15 | * erzeugen und instanziieren können. Auf welcher Eigenschaft sie arbeitet 16 | * definiert die implementierende Klasse. 17 | */ 18 | public interface ActionFactory { 19 | 20 | /** 21 | * Erzeugt eine neue Action die bei Ausführung den gegebenen Wert in die 22 | * zugehörige Eigenschaft (die der implementierenden Klasse) des gegebenen 23 | * Feldes einträgt. 24 | * 25 | * @param value 26 | * Der einzutragende Wert 27 | * @param field 28 | * Das von der Action zu bearbeitende Feld 29 | * @return Die erzeugt Aktion 30 | */ 31 | public Action createAction(int value, Field field); 32 | 33 | } 34 | -------------------------------------------------------------------------------- /sudoq-app/sudoqmodel/src/main/java/de/sudoq/model/actionTree/NoteActionFactory.java: -------------------------------------------------------------------------------- 1 | /* 2 | * SudoQ is a Sudoku-App for Adroid Devices with Version 2.2 at least. 3 | * Copyright (C) 2012 Heiko Klare, Julian Geppert, Jan-Bernhard Kordaß, Jonathan Kieling, Tim Zeitz, Timo Abele 4 | * This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. 5 | * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. 6 | * You should have received a copy of the GNU General Public License along with this program; if not, see . 7 | */ 8 | package de.sudoq.model.actionTree; 9 | 10 | import de.sudoq.model.sudoku.Field; 11 | 12 | /** 13 | * Diese Klasse dient der Erzeugung von NoteActions. 14 | * 15 | * @see NoteAction 16 | */ 17 | public class NoteActionFactory implements ActionFactory { 18 | 19 | /** 20 | * {@inheritDoc} 21 | */ 22 | public Action createAction(int value, Field field) { 23 | return new NoteAction(value, field); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /sudoq-app/sudoqmodel/src/main/java/de/sudoq/model/actionTree/SolveActionFactory.java: -------------------------------------------------------------------------------- 1 | /* 2 | * SudoQ is a Sudoku-App for Adroid Devices with Version 2.2 at least. 3 | * Copyright (C) 2012 Heiko Klare, Julian Geppert, Jan-Bernhard Kordaß, Jonathan Kieling, Tim Zeitz, Timo Abele 4 | * This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. 5 | * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. 6 | * You should have received a copy of the GNU General Public License along with this program; if not, see . 7 | */ 8 | package de.sudoq.model.actionTree; 9 | 10 | import de.sudoq.model.sudoku.Field; 11 | 12 | /** 13 | * Diese Klasse dient der Erzeugung von NoteActions. 14 | * 15 | * @see NoteAction 16 | */ 17 | public class SolveActionFactory implements ActionFactory { 18 | 19 | /** 20 | * {@inheritDoc} 21 | */ 22 | public Action createAction(int value, Field field) { 23 | if (field != null) { 24 | return new SolveAction(value - field.getCurrentValue(), field); 25 | } else { 26 | throw new IllegalArgumentException(); 27 | } 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /sudoq-app/sudoqmodel/src/main/java/de/sudoq/model/solverGenerator/GeneratorCallback.java: -------------------------------------------------------------------------------- 1 | /* 2 | * SudoQ is a Sudoku-App for Adroid Devices with Version 2.2 at least. 3 | * Copyright (C) 2012 Heiko Klare, Julian Geppert, Jan-Bernhard Kordaß, Jonathan Kieling, Tim Zeitz, Timo Abele 4 | * This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. 5 | * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. 6 | * You should have received a copy of the GNU General Public License along with this program; if not, see . 7 | */ 8 | package de.sudoq.model.solverGenerator; 9 | 10 | import de.sudoq.model.sudoku.Sudoku; 11 | 12 | /** 13 | * Dieses Interface muss implementiert werden, um die generate-Methode des 14 | * Generator zu benutzen. Dieser führt die Generierung in einem anderen Thread 15 | * aus und ruft die generationFinished-Methode dieses Callback-Objektes auf, 16 | * sobald er fertig ist. 17 | */ 18 | public interface GeneratorCallback { 19 | /** Methods */ 20 | 21 | /** 22 | * Diese Methode wird vom Generator aufgerufen, nachdem er die Generierung 23 | * eines Sudokus abgeschlossen hat. Das übergebene Sudoku soll dabei ein 24 | * generiertes, valides Sudoku sein. Ist das spezifizierte Sudoku null, so 25 | * wird nichts ausgeführt. 26 | * 27 | * @param sudoku 28 | * Das vom Generator erzeugte, valide Sudoku 29 | */ 30 | public void generationFinished(Sudoku sudoku); 31 | } 32 | -------------------------------------------------------------------------------- /sudoq-app/sudoqmodel/src/main/java/de/sudoq/model/solverGenerator/solution/DerivationBlock.java: -------------------------------------------------------------------------------- 1 | package de.sudoq.model.solverGenerator.solution; 2 | 3 | import de.sudoq.model.sudoku.Constraint; 4 | 5 | /** 6 | * Ein DerivationBlock stellt ein Constraint dar, welches für einen 7 | * Lössungsschritt zum Lösen eines Sudoku-Feldes relevant ist. 8 | */ 9 | public class DerivationBlock { 10 | /** Attributes */ 11 | 12 | /** 13 | * Das Constraint, welches von diesem DerivationBlock als relevant für den 14 | * zugehörigen Lösungsschritt repräsentiert wird 15 | */ 16 | private Constraint block; 17 | 18 | /** Constructors */ 19 | 20 | /** 21 | * Dies Methode initiiert einen neuen DerivationBlock für das 22 | * spezifiziertem, für einen Lössungsschritt relevante Constraint. Ist 23 | * dieses null, so wird eine IllegalArgumentException geworfen. 24 | * 25 | * @param block 26 | * Das Constraint, welches von diesem DerivationBlock als für 27 | * einen Lössungsschritt relevant repräsentiert werden soll 28 | * @throws IllegalArgumentException 29 | * Wird geworfen, falls das spezifizierten Constraint null ist 30 | */ 31 | public DerivationBlock(Constraint block) { 32 | if (block == null) 33 | throw new IllegalArgumentException("specified block was null"); 34 | this.block = block; 35 | } 36 | 37 | /** Methods */ 38 | 39 | /** 40 | * Diese Methode gibt das Constraint zurück, welches diesem DerivationBlock 41 | * zugewiesen wurde. 42 | * 43 | * @return Das Constraint, welches diesem DerivationBlock zugewiesen wurde 44 | */ 45 | public Constraint getBlock() { 46 | return block; 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /sudoq-app/sudoqmodel/src/main/java/de/sudoq/model/solverGenerator/solver/ComplexityRelation.java: -------------------------------------------------------------------------------- 1 | package de.sudoq.model.solverGenerator.solver; 2 | 3 | /** 4 | * Ein Enum um die Relationen zwischen Schwierigkeiten zu klassifizieren 5 | */ 6 | public enum ComplexityRelation { 7 | /** 8 | * Das Sudoku war gemäß den Constraints ungültig 9 | */ 10 | INVALID, 11 | 12 | /** 13 | * Das Sudoku ist innerhalb der Constraints lösbar 14 | */ 15 | CONSTRAINT_SATURATION, 16 | 17 | /** 18 | * Das Sudoku ist einfacher als die Constraints erlauben 19 | */ 20 | TO_EASY, 21 | 22 | /** 23 | * Das Sudoku ist viel einfacher als die Constraints erlauben 24 | */ 25 | MUCH_TO_EASY, 26 | 27 | /** 28 | * Das Sudoku ist schwieriger als die Constraints erlauben 29 | */ 30 | TO_DIFFICULT, 31 | 32 | /** 33 | * Das Sudoku ist viel schwieriger als die Constraints erlauben 34 | */ 35 | MUCH_TO_DIFFICULT 36 | } 37 | -------------------------------------------------------------------------------- /sudoq-app/sudoqmodel/src/main/java/de/sudoq/model/solverGenerator/solver/helper/Helpers.java: -------------------------------------------------------------------------------- 1 | package de.sudoq.model.solverGenerator.solver.helper; 2 | 3 | public enum Helpers { 4 | HiddenHelper, NakedHelper, SubsetHelper, Backtracking 5 | } 6 | -------------------------------------------------------------------------------- /sudoq-app/sudoqmodel/src/main/java/de/sudoq/model/solverGenerator/transformations/HorizontalBlockPermutation.java: -------------------------------------------------------------------------------- 1 | /* 2 | * SudoQ is a Sudoku-App for Adroid Devices with Version 2.2 at least. 3 | * Copyright (C) 2012 Heiko Klare, Julian Geppert, Jan-Bernhard Kordaß, Jonathan Kieling, Tim Zeitz, Timo Abele 4 | * This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. 5 | * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. 6 | * You should have received a copy of the GNU General Public License along with this program; if not, see . 7 | */ 8 | package de.sudoq.model.solverGenerator.transformations; 9 | 10 | import de.sudoq.model.sudoku.Sudoku; 11 | import de.sudoq.model.sudoku.sudokuTypes.PermutationProperties; 12 | 13 | public class HorizontalBlockPermutation implements Permutation { 14 | 15 | @Override 16 | public void permutate(Sudoku sudoku) { 17 | TransformationUtilities.horizontalBlockPermutation(sudoku); 18 | } 19 | 20 | @Override 21 | public PermutationProperties getCondition() { 22 | return PermutationProperties.horizontal_Blockshift; 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /sudoq-app/sudoqmodel/src/main/java/de/sudoq/model/solverGenerator/transformations/InBlockColumnPermutation.java: -------------------------------------------------------------------------------- 1 | /* 2 | * SudoQ is a Sudoku-App for Adroid Devices with Version 2.2 at least. 3 | * Copyright (C) 2012 Heiko Klare, Julian Geppert, Jan-Bernhard Kordaß, Jonathan Kieling, Tim Zeitz, Timo Abele 4 | * This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. 5 | * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. 6 | * You should have received a copy of the GNU General Public License along with this program; if not, see . 7 | */ 8 | package de.sudoq.model.solverGenerator.transformations; 9 | 10 | import de.sudoq.model.sudoku.Sudoku; 11 | import de.sudoq.model.sudoku.sudokuTypes.PermutationProperties; 12 | 13 | public class InBlockColumnPermutation implements Permutation { 14 | 15 | @Override 16 | public void permutate(Sudoku sudoku) { 17 | TransformationUtilities.inBlockCollumnPermutation(sudoku); 18 | } 19 | 20 | @Override 21 | public PermutationProperties getCondition() { 22 | return PermutationProperties.inBlock_Collumnshift; 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /sudoq-app/sudoqmodel/src/main/java/de/sudoq/model/solverGenerator/transformations/InBlockRowPermutation.java: -------------------------------------------------------------------------------- 1 | /* 2 | * SudoQ is a Sudoku-App for Adroid Devices with Version 2.2 at least. 3 | * Copyright (C) 2012 Heiko Klare, Julian Geppert, Jan-Bernhard Kordaß, Jonathan Kieling, Tim Zeitz, Timo Abele 4 | * This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. 5 | * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. 6 | * You should have received a copy of the GNU General Public License along with this program; if not, see . 7 | */ 8 | package de.sudoq.model.solverGenerator.transformations; 9 | 10 | import de.sudoq.model.sudoku.Sudoku; 11 | import de.sudoq.model.sudoku.sudokuTypes.PermutationProperties; 12 | 13 | public class InBlockRowPermutation implements Permutation { 14 | 15 | @Override 16 | public void permutate(Sudoku sudoku) { 17 | TransformationUtilities.inBlockRowPermutation(sudoku); 18 | } 19 | 20 | @Override 21 | public PermutationProperties getCondition() { 22 | return PermutationProperties.inBlock_Rowshift; 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /sudoq-app/sudoqmodel/src/main/java/de/sudoq/model/solverGenerator/transformations/MirrorDiagonallyDown.java: -------------------------------------------------------------------------------- 1 | /* 2 | * SudoQ is a Sudoku-App for Adroid Devices with Version 2.2 at least. 3 | * Copyright (C) 2012 Heiko Klare, Julian Geppert, Jan-Bernhard Kordaß, Jonathan Kieling, Tim Zeitz, Timo Abele 4 | * This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. 5 | * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. 6 | * You should have received a copy of the GNU General Public License along with this program; if not, see . 7 | */ 8 | package de.sudoq.model.solverGenerator.transformations; 9 | 10 | import de.sudoq.model.sudoku.Sudoku; 11 | import de.sudoq.model.sudoku.sudokuTypes.PermutationProperties; 12 | 13 | public class MirrorDiagonallyDown implements Permutation { 14 | 15 | @Override 16 | public void permutate(Sudoku sudoku) { 17 | TransformationUtilities.mirrorDiagonallyDown(sudoku); 18 | } 19 | 20 | @Override 21 | public PermutationProperties getCondition() { 22 | return PermutationProperties.diagonal_down; 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /sudoq-app/sudoqmodel/src/main/java/de/sudoq/model/solverGenerator/transformations/MirrorDiagonallyUp.java: -------------------------------------------------------------------------------- 1 | /* 2 | * SudoQ is a Sudoku-App for Adroid Devices with Version 2.2 at least. 3 | * Copyright (C) 2012 Heiko Klare, Julian Geppert, Jan-Bernhard Kordaß, Jonathan Kieling, Tim Zeitz, Timo Abele 4 | * This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. 5 | * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. 6 | * You should have received a copy of the GNU General Public License along with this program; if not, see . 7 | */ 8 | package de.sudoq.model.solverGenerator.transformations; 9 | 10 | import de.sudoq.model.sudoku.Sudoku; 11 | import de.sudoq.model.sudoku.sudokuTypes.PermutationProperties; 12 | 13 | public class MirrorDiagonallyUp implements Permutation { 14 | 15 | @Override 16 | public void permutate(Sudoku sudoku) { 17 | TransformationUtilities.mirrorDiagonallyUp(sudoku); 18 | } 19 | 20 | @Override 21 | public PermutationProperties getCondition() { 22 | return PermutationProperties.diagonal_up; 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /sudoq-app/sudoqmodel/src/main/java/de/sudoq/model/solverGenerator/transformations/MirrorHorizontally.java: -------------------------------------------------------------------------------- 1 | /* 2 | * SudoQ is a Sudoku-App for Adroid Devices with Version 2.2 at least. 3 | * Copyright (C) 2012 Heiko Klare, Julian Geppert, Jan-Bernhard Kordaß, Jonathan Kieling, Tim Zeitz, Timo Abele 4 | * This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. 5 | * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. 6 | * You should have received a copy of the GNU General Public License along with this program; if not, see . 7 | */ 8 | package de.sudoq.model.solverGenerator.transformations; 9 | 10 | import de.sudoq.model.sudoku.Sudoku; 11 | import de.sudoq.model.sudoku.sudokuTypes.PermutationProperties; 12 | 13 | public class MirrorHorizontally implements Permutation { 14 | 15 | @Override 16 | public void permutate(Sudoku sudoku) { 17 | TransformationUtilities.mirrorHorizontally(sudoku); 18 | } 19 | 20 | @Override 21 | public PermutationProperties getCondition() { 22 | return PermutationProperties.mirror_horizontal; 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /sudoq-app/sudoqmodel/src/main/java/de/sudoq/model/solverGenerator/transformations/MirrorVertically.java: -------------------------------------------------------------------------------- 1 | /* 2 | * SudoQ is a Sudoku-App for Adroid Devices with Version 2.2 at least. 3 | * Copyright (C) 2012 Heiko Klare, Julian Geppert, Jan-Bernhard Kordaß, Jonathan Kieling, Tim Zeitz, Timo Abele 4 | * This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. 5 | * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. 6 | * You should have received a copy of the GNU General Public License along with this program; if not, see . 7 | */ 8 | package de.sudoq.model.solverGenerator.transformations; 9 | 10 | import de.sudoq.model.sudoku.Sudoku; 11 | import de.sudoq.model.sudoku.sudokuTypes.PermutationProperties; 12 | 13 | public class MirrorVertically implements Permutation { 14 | 15 | @Override 16 | public void permutate(Sudoku sudoku) { 17 | TransformationUtilities.mirrorVertically(sudoku); 18 | } 19 | 20 | @Override 21 | public PermutationProperties getCondition() { 22 | return PermutationProperties.mirror_vertical; 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /sudoq-app/sudoqmodel/src/main/java/de/sudoq/model/solverGenerator/transformations/Permutation.java: -------------------------------------------------------------------------------- 1 | /* 2 | * SudoQ is a Sudoku-App for Adroid Devices with Version 2.2 at least. 3 | * Copyright (C) 2012 Heiko Klare, Julian Geppert, Jan-Bernhard Kordaß, Jonathan Kieling, Tim Zeitz, Timo Abele 4 | * This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. 5 | * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. 6 | * You should have received a copy of the GNU General Public License along with this program; if not, see . 7 | */ 8 | package de.sudoq.model.solverGenerator.transformations; 9 | 10 | import de.sudoq.model.sudoku.Sudoku; 11 | import de.sudoq.model.sudoku.sudokuTypes.PermutationProperties; 12 | 13 | public interface Permutation { 14 | 15 | void permutate(Sudoku sudoku); 16 | 17 | PermutationProperties getCondition(); 18 | } 19 | -------------------------------------------------------------------------------- /sudoq-app/sudoqmodel/src/main/java/de/sudoq/model/solverGenerator/transformations/Rotate180.java: -------------------------------------------------------------------------------- 1 | /* 2 | * SudoQ is a Sudoku-App for Adroid Devices with Version 2.2 at least. 3 | * Copyright (C) 2012 Heiko Klare, Julian Geppert, Jan-Bernhard Kordaß, Jonathan Kieling, Tim Zeitz, Timo Abele 4 | * This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. 5 | * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. 6 | * You should have received a copy of the GNU General Public License along with this program; if not, see . 7 | */ 8 | package de.sudoq.model.solverGenerator.transformations; 9 | 10 | import de.sudoq.model.sudoku.Sudoku; 11 | import de.sudoq.model.sudoku.sudokuTypes.PermutationProperties; 12 | 13 | public class Rotate180 implements Permutation { 14 | 15 | @Override 16 | public void permutate(Sudoku sudoku) { 17 | TransformationUtilities.rotate180(sudoku); 18 | } 19 | 20 | @Override 21 | public PermutationProperties getCondition() { 22 | return PermutationProperties.rotate180; 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /sudoq-app/sudoqmodel/src/main/java/de/sudoq/model/solverGenerator/transformations/Rotate270.java: -------------------------------------------------------------------------------- 1 | /* 2 | * SudoQ is a Sudoku-App for Adroid Devices with Version 2.2 at least. 3 | * Copyright (C) 2012 Heiko Klare, Julian Geppert, Jan-Bernhard Kordaß, Jonathan Kieling, Tim Zeitz, Timo Abele 4 | * This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. 5 | * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. 6 | * You should have received a copy of the GNU General Public License along with this program; if not, see . 7 | */ 8 | package de.sudoq.model.solverGenerator.transformations; 9 | 10 | import de.sudoq.model.sudoku.Sudoku; 11 | import de.sudoq.model.sudoku.sudokuTypes.PermutationProperties; 12 | 13 | public class Rotate270 implements Permutation { 14 | 15 | @Override 16 | public void permutate(Sudoku sudoku) { 17 | TransformationUtilities.rotate270(sudoku); 18 | } 19 | 20 | @Override 21 | public PermutationProperties getCondition() { 22 | return PermutationProperties.rotate90; 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /sudoq-app/sudoqmodel/src/main/java/de/sudoq/model/solverGenerator/transformations/Rotate90.java: -------------------------------------------------------------------------------- 1 | /* 2 | * SudoQ is a Sudoku-App for Adroid Devices with Version 2.2 at least. 3 | * Copyright (C) 2012 Heiko Klare, Julian Geppert, Jan-Bernhard Kordaß, Jonathan Kieling, Tim Zeitz, Timo Abele 4 | * This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. 5 | * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. 6 | * You should have received a copy of the GNU General Public License along with this program; if not, see . 7 | */ 8 | package de.sudoq.model.solverGenerator.transformations; 9 | 10 | import de.sudoq.model.sudoku.Sudoku; 11 | import de.sudoq.model.sudoku.sudokuTypes.PermutationProperties; 12 | 13 | public class Rotate90 implements Permutation { 14 | 15 | @Override 16 | public void permutate(Sudoku sudoku) { 17 | TransformationUtilities.rotate90(sudoku); 18 | } 19 | 20 | @Override 21 | public PermutationProperties getCondition() { 22 | return PermutationProperties.rotate90; 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /sudoq-app/sudoqmodel/src/main/java/de/sudoq/model/solverGenerator/transformations/VerticalBlockPermutation.java: -------------------------------------------------------------------------------- 1 | /* 2 | * SudoQ is a Sudoku-App for Adroid Devices with Version 2.2 at least. 3 | * Copyright (C) 2012 Heiko Klare, Julian Geppert, Jan-Bernhard Kordaß, Jonathan Kieling, Tim Zeitz, Timo Abele 4 | * This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. 5 | * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. 6 | * You should have received a copy of the GNU General Public License along with this program; if not, see . 7 | */ 8 | package de.sudoq.model.solverGenerator.transformations; 9 | 10 | import de.sudoq.model.sudoku.Sudoku; 11 | import de.sudoq.model.sudoku.sudokuTypes.PermutationProperties; 12 | 13 | public class VerticalBlockPermutation implements Permutation { 14 | 15 | @Override 16 | public void permutate(Sudoku sudoku) { 17 | TransformationUtilities.verticalBlockPermutation(sudoku); 18 | } 19 | 20 | @Override 21 | public PermutationProperties getCondition() { 22 | return PermutationProperties.vertical_Blockshift; 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /sudoq-app/sudoqmodel/src/main/java/de/sudoq/model/sudoku/ConstraintBehavior.java: -------------------------------------------------------------------------------- 1 | /* 2 | * SudoQ is a Sudoku-App for Adroid Devices with Version 2.2 at least. 3 | * Copyright (C) 2012 Heiko Klare, Julian Geppert, Jan-Bernhard Kordaß, Jonathan Kieling, Tim Zeitz, Timo Abele 4 | * This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. 5 | * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. 6 | * You should have received a copy of the GNU General Public License along with this program; if not, see . 7 | */ 8 | package de.sudoq.model.sudoku; 9 | 10 | /** 11 | * Dieses Interface definiert eine check Methode, welche überprüft, ob ein 12 | * spezifiziertes Constraint ein bestimmtes Verhalten erfüllt. 13 | */ 14 | public interface ConstraintBehavior { 15 | /** Methods */ 16 | 17 | /** 18 | * Diese Methode überprüft, ob ein bestimmtes (durch die Methode 19 | * implementiertes) Verhalten auf den durch das Constraint spezifizierten 20 | * Feldern des uebergebenen Sudokus erfüllt ist. Ist das Constraint oder das 21 | * Sudoku null, so wird false zurückgegeben. 22 | * 23 | * @param constraint 24 | * Das Constraint, welches auf ein bestimmtes Verhalten überprüft 25 | * werden soll 26 | * @param sudoku 27 | * Sudoku, auf welchem das Constraint ueberprueft werden soll 28 | * @return true, falls das Constraint die Vorgaben erfüllt, false falls es 29 | * dies nicht tut oder null ist 30 | */ 31 | public abstract boolean check(Constraint constraint, Sudoku sudoku); 32 | } 33 | -------------------------------------------------------------------------------- /sudoq-app/sudoqmodel/src/main/java/de/sudoq/model/sudoku/ConstraintType.java: -------------------------------------------------------------------------------- 1 | /* 2 | * SudoQ is a Sudoku-App for Adroid Devices with Version 2.2 at least. 3 | * Copyright (C) 2012 Heiko Klare, Julian Geppert, Jan-Bernhard Kordaß, Jonathan Kieling, Tim Zeitz, Timo Abele 4 | * This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. 5 | * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. 6 | * You should have received a copy of the GNU General Public License along with this program; if not, see . 7 | */ 8 | package de.sudoq.model.sudoku; 9 | 10 | /** 11 | * Definiert die Typen von Constraints. 12 | */ 13 | public enum ConstraintType { 14 | /** 15 | * Eine Zeile oder Spalte 16 | */ 17 | LINE, 18 | 19 | /** 20 | * Ein Block, wobei alle Blöcke eines Sudokus sich nicht überschneiden 21 | */ 22 | BLOCK, 23 | 24 | /** 25 | * Ein gesondertes Constraints, das sich mit Blöcken überschneiden kann. 26 | */ 27 | EXTRA 28 | 29 | } 30 | -------------------------------------------------------------------------------- /sudoq-app/sudoqmodel/src/main/java/de/sudoq/model/sudoku/sudokuTypes/ComplexityConstraintBuilder.java: -------------------------------------------------------------------------------- 1 | package de.sudoq.model.sudoku.sudokuTypes; 2 | 3 | import java.util.HashMap; 4 | import java.util.Iterator; 5 | import java.util.Map; 6 | import java.util.Map.Entry; 7 | 8 | import de.sudoq.model.sudoku.complexity.Complexity; 9 | import de.sudoq.model.sudoku.complexity.ComplexityConstraint; 10 | import de.sudoq.model.xml.XmlTree; 11 | import de.sudoq.model.xml.Xmlable; 12 | 13 | public class ComplexityConstraintBuilder implements Xmlable { 14 | 15 | public Map specimen = new HashMap(); 16 | 17 | public ComplexityConstraintBuilder(){ 18 | 19 | } 20 | 21 | public ComplexityConstraintBuilder(Map specimen){ 22 | this.specimen = specimen; 23 | } 24 | 25 | public ComplexityConstraint getComplexityConstraint(Complexity complexity){ 26 | if (complexity != null && specimen.containsKey(complexity)) { 27 | return (ComplexityConstraint) specimen.get(complexity).clone(); 28 | } 29 | return null; 30 | } 31 | 32 | 33 | public static final String TITLE = "ComplexityConstraintBuilder"; 34 | 35 | @Override 36 | public XmlTree toXmlTree() { 37 | XmlTree representation = new XmlTree(TITLE); 38 | for (ComplexityConstraint v : specimen.values()){ 39 | representation.addChild( v.toXmlTree() ); 40 | } 41 | return representation; 42 | } 43 | 44 | @Override 45 | public void fillFromXml(XmlTree xmlTreeRepresentation) throws IllegalArgumentException { 46 | specimen = new HashMap(); 47 | for (XmlTree sub : xmlTreeRepresentation) { 48 | ComplexityConstraint cc = new ComplexityConstraint(); 49 | cc.fillFromXml(sub); 50 | specimen.put(cc.getComplexity(), cc); 51 | } 52 | 53 | } 54 | 55 | } 56 | -------------------------------------------------------------------------------- /sudoq-app/sudoqmodel/src/main/java/de/sudoq/model/xml/GameXmlHandler.java: -------------------------------------------------------------------------------- 1 | /* 2 | * SudoQ is a Sudoku-App for Adroid Devices with Version 2.2 at least. 3 | * Copyright (C) 2012 Heiko Klare, Julian Geppert, Jan-Bernhard Kordaß, Jonathan Kieling, Tim Zeitz, Timo Abele 4 | * This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. 5 | * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. 6 | * You should have received a copy of the GNU General Public License along with this program; if not, see . 7 | */ 8 | package de.sudoq.model.xml; 9 | 10 | import java.io.File; 11 | 12 | import de.sudoq.model.files.FileManager; 13 | import de.sudoq.model.game.Game; 14 | 15 | /** 16 | * Eine Klasse um konkret Games aus Xml zu bekommen bzw in Xml umzuwandeln 17 | */ 18 | public class GameXmlHandler extends XmlHandler { 19 | 20 | private int id; 21 | 22 | /** 23 | * Erzeugt einen GameXmlHandler um ein Game zu speichern 24 | */ 25 | public GameXmlHandler() { 26 | this(-1); 27 | } 28 | 29 | /** 30 | * Erzeugt einen GameXmlHandler, der auf das Game mit der gegebenen ID 31 | * schreibt und liest. 32 | * 33 | * @param loadingId 34 | * die id des zu aendernden/erstellenden games 35 | */ 36 | public GameXmlHandler(int loadingId) { 37 | this.id = loadingId; 38 | } 39 | 40 | /** 41 | * {@inheritDoc} 42 | */ 43 | @Override 44 | protected File getFileFor(Game g) { 45 | return FileManager.getGameFile(id > 0 ? id : g.getId()); 46 | } 47 | 48 | } 49 | -------------------------------------------------------------------------------- /sudoq-app/sudoqmodel/src/main/java/de/sudoq/model/xml/ProfileXmlHandler.java: -------------------------------------------------------------------------------- 1 | /* 2 | * SudoQ is a Sudoku-App for Adroid Devices with Version 2.2 at least. 3 | * Copyright (C) 2012 Heiko Klare, Julian Geppert, Jan-Bernhard Kordaß, Jonathan Kieling, Tim Zeitz, Timo Abele 4 | * This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. 5 | * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. 6 | * You should have received a copy of the GNU General Public License along with this program; if not, see . 7 | */ 8 | package de.sudoq.model.xml; 9 | 10 | import java.io.File; 11 | 12 | import de.sudoq.model.files.FileManager; 13 | import de.sudoq.model.profile.Profile; 14 | 15 | /** 16 | * Der konkrete XmlHandler für Profile 17 | */ 18 | public class ProfileXmlHandler extends XmlHandler { 19 | 20 | /** 21 | * {@inheritDoc} 22 | */ 23 | @Override 24 | protected File getFileFor(Profile obj) { 25 | return FileManager.getProfileXmlFor(obj.getCurrentProfileID()); 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /sudoq-app/sudoqmodel/src/main/java/de/sudoq/model/xml/Xmlable.java: -------------------------------------------------------------------------------- 1 | /* 2 | * SudoQ is a Sudoku-App for Adroid Devices with Version 2.2 at least. 3 | * Copyright (C) 2012 Heiko Klare, Julian Geppert, Jan-Bernhard Kordaß, Jonathan Kieling, Tim Zeitz, Timo Abele 4 | * This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. 5 | * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. 6 | * You should have received a copy of the GNU General Public License along with this program; if not, see . 7 | */ 8 | package de.sudoq.model.xml; 9 | 10 | /** 11 | * Dieses Interface definiert eine Schnittstelle für Klassen, die durch XML 12 | * Dateien repräsentiert werden können müssen. 13 | */ 14 | public interface Xmlable { 15 | 16 | /** Methods */ 17 | 18 | /** 19 | * Erzeugt ein XmlTree Objekt, welches die, für eine Speicherrepräsentation 20 | * notwendigen, Daten enthält. 21 | * 22 | * @return XML-Baum-Repräsentation der implementierenden Klasse 23 | */ 24 | public XmlTree toXmlTree(); 25 | 26 | /** 27 | * Lädt Daten aus einer XML Repräsentation der Klasse in die 28 | * implementierende Klasse 29 | * 30 | * @param xmlTreeRepresentation 31 | * Repräsentation der implementierenden Klasse. 32 | * @throws IllegalArgumentException 33 | * Wird geworfen, falls die Xml Repräsentation eine nicht 34 | * unterstützte Struktur aufweist. 35 | */ 36 | public void fillFromXml(XmlTree xmlTreeRepresentation) throws IllegalArgumentException; 37 | 38 | } 39 | -------------------------------------------------------------------------------- /sudoq-app/sudoqmodel/src/test/java/de/sudoq/model/ObservableModelTest.java: -------------------------------------------------------------------------------- 1 | package de.sudoq.model; 2 | 3 | import static org.junit.Assert.assertTrue; 4 | import static org.junit.Assert.fail; 5 | 6 | import org.junit.Test; 7 | 8 | import de.sudoq.model.ModelChangeListener; 9 | import de.sudoq.model.ObservableModel; 10 | import de.sudoq.model.ObservableModelImpl; 11 | 12 | public class ObservableModelTest { 13 | 14 | @Test 15 | public void test() { 16 | ObservableModel observable = new ObservableModelImpl() { 17 | }; 18 | Listener listener = new Listener<>(); 19 | 20 | testNotification(observable, listener); 21 | } 22 | 23 | @SuppressWarnings("unchecked") 24 | public void testNotification(@SuppressWarnings("rawtypes") ObservableModel observable, @SuppressWarnings("rawtypes") Listener listener) { 25 | try { 26 | observable.registerListener(null); 27 | fail("No Exception thrown"); 28 | } catch (IllegalArgumentException e) { 29 | } 30 | 31 | observable.registerListener(listener); 32 | assertTrue(listener.callCount == 0); 33 | 34 | observable.notifyListeners(null); 35 | assertTrue(listener.callCount == 1); 36 | 37 | observable.removeListener(listener); 38 | observable.notifyListeners(null); 39 | assertTrue(listener.callCount == 1); 40 | } 41 | 42 | class Listener implements ModelChangeListener { 43 | int callCount = 0; 44 | 45 | @Override 46 | public void onModelChanged(T obj) { 47 | callCount++; 48 | } 49 | 50 | } 51 | 52 | } 53 | -------------------------------------------------------------------------------- /sudoq-app/sudoqmodel/src/test/java/de/sudoq/model/Utility.java: -------------------------------------------------------------------------------- 1 | package de.sudoq.model; 2 | 3 | import org.apache.commons.io.FileUtils; 4 | 5 | import java.io.File; 6 | import java.io.IOException; 7 | 8 | import de.sudoq.model.files.FileManager; 9 | 10 | /** 11 | * abstract utility class for operations shared by several tests 12 | */ 13 | public abstract class Utility { 14 | 15 | public static File sudokus; 16 | public static File profiles; 17 | 18 | /* 19 | * Copy files from assets to temporary dir for testing 20 | * also init Filemanager 21 | * */ 22 | public static void copySudokus() { 23 | String res = "res" + File.separator; 24 | sudokus = new File(res + "tmp_suds"); 25 | profiles = new File(res + "tmp_profiles"); 26 | sudokus.mkdir(); 27 | 28 | try { 29 | String path = "sudoqapp/src/main/assets/sudokus/".replaceAll("/",File.separator); 30 | FileUtils.copyDirectory(new File(path), sudokus); 31 | System.out.println("path:"); 32 | System.out.println((new File(res)).getAbsolutePath()); 33 | } catch (IOException e) { 34 | e.printStackTrace(); 35 | } 36 | profiles.mkdir(); 37 | FileManager.initialize(profiles, sudokus); 38 | } 39 | } -------------------------------------------------------------------------------- /sudoq-app/sudoqmodel/src/test/java/de/sudoq/model/game/AssistancesTests.java: -------------------------------------------------------------------------------- 1 | package de.sudoq.model.game; 2 | 3 | import static org.junit.Assert.assertTrue; 4 | 5 | import org.junit.Test; 6 | 7 | import de.sudoq.model.game.Assistances; 8 | 9 | public class AssistancesTests { 10 | 11 | @Test 12 | public void test() { 13 | Assistances[] types = Assistances.values(); 14 | for (Assistances type : types) { 15 | assertTrue(Assistances.valueOf(type.toString()).equals(type)); 16 | } 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /sudoq-app/sudoqmodel/src/test/java/de/sudoq/model/profile/StatisticsTests.java: -------------------------------------------------------------------------------- 1 | package de.sudoq.model.profile; 2 | 3 | import static org.junit.Assert.assertTrue; 4 | 5 | import org.junit.Test; 6 | 7 | import de.sudoq.model.profile.Statistics; 8 | 9 | public class StatisticsTests { 10 | 11 | @Test 12 | public void test() { 13 | Statistics[] types = Statistics.values(); 14 | for (Statistics type : types) { 15 | assertTrue(Statistics.valueOf(type.toString()).equals(type)); 16 | } 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /sudoq-app/sudoqmodel/src/test/java/de/sudoq/model/solverGenerator/GeneratorUnitTests.java: -------------------------------------------------------------------------------- 1 | package de.sudoq.model.solverGenerator; 2 | 3 | import static org.junit.Assert.assertFalse; 4 | 5 | import org.junit.Test; 6 | 7 | import de.sudoq.model.solverGenerator.Generator; 8 | import de.sudoq.model.solverGenerator.GeneratorCallback; 9 | import de.sudoq.model.sudoku.Sudoku; 10 | import de.sudoq.model.sudoku.complexity.Complexity; 11 | import de.sudoq.model.sudoku.sudokuTypes.SudokuTypes; 12 | 13 | public class GeneratorUnitTests implements GeneratorCallback { 14 | 15 | @Test 16 | public void testNull() { 17 | assertFalse(new Generator().generate(null, Complexity.arbitrary, this)); 18 | assertFalse(new Generator().generate(SudokuTypes.standard9x9, null, this)); 19 | assertFalse(new Generator().generate(SudokuTypes.standard9x9, Complexity.arbitrary, null)); 20 | } 21 | 22 | @Override 23 | public void generationFinished(Sudoku sudoku) { 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /sudoq-app/sudoqmodel/src/test/java/de/sudoq/model/solverGenerator/solution/DerivationBlockTests.java: -------------------------------------------------------------------------------- 1 | package de.sudoq.model.solverGenerator.solution; 2 | 3 | import static org.junit.Assert.assertEquals; 4 | 5 | import org.junit.Test; 6 | 7 | import de.sudoq.model.solverGenerator.solution.DerivationBlock; 8 | import de.sudoq.model.sudoku.Constraint; 9 | import de.sudoq.model.sudoku.ConstraintType; 10 | import de.sudoq.model.sudoku.UniqueConstraintBehavior; 11 | 12 | public class DerivationBlockTests { 13 | 14 | @Test 15 | public void standardTest() { 16 | Constraint constr = new Constraint(new UniqueConstraintBehavior(), ConstraintType.LINE); 17 | DerivationBlock block = new DerivationBlock(constr); 18 | assertEquals(block.getBlock(), constr); 19 | } 20 | 21 | @Test(expected = IllegalArgumentException.class) 22 | public void constraintNull() { 23 | new DerivationBlock(null); 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /sudoq-app/sudoqmodel/src/test/java/de/sudoq/model/solverGenerator/solution/DerivationFieldTests.java: -------------------------------------------------------------------------------- 1 | package de.sudoq.model.solverGenerator.solution; 2 | 3 | import static org.junit.Assert.assertEquals; 4 | 5 | import java.util.BitSet; 6 | 7 | import org.junit.Test; 8 | 9 | import de.sudoq.model.solverGenerator.solution.DerivationField; 10 | import de.sudoq.model.sudoku.Position; 11 | 12 | public class DerivationFieldTests { 13 | 14 | @Test 15 | public void standardTest() { 16 | BitSet relevantCandidates = new BitSet(); 17 | relevantCandidates.set(5); 18 | relevantCandidates.set(3); 19 | BitSet irrelevantCandidates = new BitSet(); 20 | irrelevantCandidates.set(1); 21 | irrelevantCandidates.set(2); 22 | DerivationField derivation = new DerivationField(Position.get(1, 1), relevantCandidates, irrelevantCandidates); 23 | assertEquals(derivation.getPosition(), Position.get(1, 1)); 24 | assertEquals(derivation.getRelevantCandidates(), relevantCandidates); 25 | assertEquals(derivation.getIrrelevantCandidates(), irrelevantCandidates); 26 | } 27 | 28 | @Test(expected = IllegalArgumentException.class) 29 | public void positionNull() { 30 | new DerivationField(null, new BitSet(), new BitSet()); 31 | } 32 | 33 | @Test(expected = IllegalArgumentException.class) 34 | public void candidatesNull() { 35 | new DerivationField(Position.get(1, 1), null, null); 36 | } 37 | 38 | } 39 | -------------------------------------------------------------------------------- /sudoq-app/sudoqmodel/src/test/java/de/sudoq/model/solverGenerator/solver/BranchingPoolTests.java: -------------------------------------------------------------------------------- 1 | package de.sudoq.model.solverGenerator.solver; 2 | 3 | import static org.junit.Assert.assertEquals; 4 | 5 | import org.junit.Test; 6 | 7 | import de.sudoq.model.solverGenerator.solver.BranchingPool; 8 | import de.sudoq.model.sudoku.Position; 9 | 10 | public class BranchingPoolTests { 11 | 12 | @Test(expected = IllegalArgumentException.class) 13 | public void testComplete() { 14 | BranchingPool pool = new BranchingPool(); 15 | assertEquals(pool.getBranching(Position.get(1, 5), 1).candidate, 1); 16 | assertEquals(pool.getBranching(Position.get(1, 5), 2).position, Position.get(1, 5)); 17 | // new branchings to be initialized 18 | pool.getBranching(Position.get(1, 5), 4); 19 | 20 | pool.returnAll(); 21 | // return another branching 22 | pool.returnBranching(); 23 | 24 | // should throw exception 25 | pool.getBranching(null, 5); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /sudoq-app/sudoqmodel/src/test/java/de/sudoq/model/solverGenerator/solver/ComplexityRelationTests.java: -------------------------------------------------------------------------------- 1 | package de.sudoq.model.solverGenerator.solver; 2 | 3 | import static org.junit.Assert.assertTrue; 4 | 5 | import org.junit.Test; 6 | 7 | import de.sudoq.model.solverGenerator.solver.ComplexityRelation; 8 | 9 | public class ComplexityRelationTests { 10 | 11 | @Test 12 | public void test() { 13 | ComplexityRelation[] types = ComplexityRelation.values(); 14 | for (ComplexityRelation type : types) { 15 | assertTrue(ComplexityRelation.valueOf(type.toString()).equals(type)); 16 | } 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /sudoq-app/sudoqmodel/src/test/java/de/sudoq/model/solverGenerator/solver/SudokuTestUtilities.java: -------------------------------------------------------------------------------- 1 | package de.sudoq.model.solverGenerator.solver; 2 | 3 | import de.sudoq.model.sudoku.Position; 4 | import de.sudoq.model.sudoku.Sudoku; 5 | 6 | public final class SudokuTestUtilities { 7 | 8 | private SudokuTestUtilities() { 9 | 10 | } 11 | 12 | public static void printSudoku(Sudoku sudoku) { 13 | StringBuilder sb = new StringBuilder(); 14 | for (int j = 0; j < sudoku.getSudokuType().getSize().getY(); j++) { 15 | for (int i = 0; i < sudoku.getSudokuType().getSize().getX(); i++) { 16 | int value = sudoku.getField(Position.get(i, j)).getCurrentValue(); 17 | String op = value + ""; 18 | if (String.valueOf(value).length() < 2) 19 | op = " " + value; 20 | if (value == -1) 21 | op = "--"; 22 | sb.append(op + ", "); 23 | } 24 | sb.append("\n"); 25 | } 26 | System.out.println(sb); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /sudoq-app/sudoqmodel/src/test/java/de/sudoq/model/sudoku/ConstraintTypeTests.java: -------------------------------------------------------------------------------- 1 | package de.sudoq.model.sudoku; 2 | 3 | import static org.junit.Assert.assertTrue; 4 | 5 | import org.junit.Test; 6 | 7 | import de.sudoq.model.sudoku.ConstraintType; 8 | 9 | public class ConstraintTypeTests { 10 | 11 | @Test 12 | public void test() { 13 | ConstraintType[] types = ConstraintType.values(); 14 | for (ConstraintType type : types) { 15 | assertTrue(ConstraintType.valueOf(type.toString()).equals(type)); 16 | } 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /sudoq-app/sudoqmodel/src/test/java/de/sudoq/model/sudoku/complexity/ComplexityTests.java: -------------------------------------------------------------------------------- 1 | package de.sudoq.model.sudoku.complexity; 2 | 3 | import static org.junit.Assert.assertTrue; 4 | 5 | import org.junit.Test; 6 | 7 | import de.sudoq.model.sudoku.complexity.Complexity; 8 | 9 | public class ComplexityTests { 10 | 11 | @Test 12 | public void test() { 13 | Complexity[] types = Complexity.values(); 14 | for (Complexity type : types) { 15 | assertTrue(Complexity.valueOf(type.toString()).equals(type)); 16 | } 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /sudoq-app/sudoqmodel/src/test/java/de/sudoq/model/sudoku/sudokuTypes/PermutationPropertiesTests.java: -------------------------------------------------------------------------------- 1 | package de.sudoq.model.sudoku.sudokuTypes; 2 | 3 | import static org.junit.Assert.assertTrue; 4 | 5 | import org.junit.Test; 6 | 7 | import de.sudoq.model.sudoku.sudokuTypes.PermutationProperties; 8 | 9 | public class PermutationPropertiesTests { 10 | 11 | @Test 12 | public void test() { 13 | PermutationProperties[] types = PermutationProperties.values(); 14 | for (PermutationProperties type : types) { 15 | assertTrue(PermutationProperties.valueOf(type.toString()).equals(type)); 16 | } 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /sudoq-app/sudoqmodel/src/test/java/de/sudoq/model/sudoku/sudokuTypes/SudokuTypesTests.java: -------------------------------------------------------------------------------- 1 | package de.sudoq.model.sudoku.sudokuTypes; 2 | 3 | import static org.junit.Assert.assertTrue; 4 | 5 | import org.junit.Test; 6 | 7 | import de.sudoq.model.sudoku.sudokuTypes.SudokuTypes; 8 | 9 | public class SudokuTypesTests { 10 | 11 | @Test 12 | public void test() { 13 | SudokuTypes[] types = SudokuTypes.values(); 14 | for (SudokuTypes type : types) { 15 | assertTrue(SudokuTypes.valueOf(type.toString()).equals(type)); 16 | } 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /sudoq-app/sudoqmodel/src/test/java/de/sudoq/model/sudoku/sudokuTypes/TypeBuilder.java: -------------------------------------------------------------------------------- 1 | package de.sudoq.model.sudoku.sudokuTypes; 2 | 3 | import java.io.File; 4 | 5 | import de.sudoq.model.files.FileManager; 6 | 7 | public class TypeBuilder { 8 | 9 | public static SudokuType getType(SudokuTypes st){ 10 | 11 | File profiles = new File("res" + File.separator + "tmp_profiles"); 12 | profiles.mkdirs(); 13 | 14 | File sudokus = new File("res" + File.separator + "sudokus"); 15 | 16 | FileManager.initialize(profiles, sudokus); 17 | 18 | return SudokuType.getSudokuType(st); 19 | } 20 | 21 | public static SudokuType get99(){ 22 | 23 | File profiles = new File("res" + File.separator + "tmp_profiles"); 24 | profiles.mkdirs(); 25 | 26 | File sudokus = new File("res" + File.separator + "sudokus"); 27 | 28 | FileManager.initialize(profiles, sudokus); 29 | 30 | return SudokuType.getSudokuType(SudokuTypes.standard9x9); 31 | } 32 | 33 | 34 | } 35 | -------------------------------------------------------------------------------- /sudoq-app/sudoqmodel/src/test/java/de/sudoq/model/xml/XmlAttributeTests.java: -------------------------------------------------------------------------------- 1 | package de.sudoq.model.xml; 2 | 3 | import static org.junit.Assert.assertEquals; 4 | import static org.junit.Assert.assertTrue; 5 | 6 | import org.junit.Rule; 7 | import org.junit.Test; 8 | import org.junit.rules.ExpectedException; 9 | 10 | import de.sudoq.model.xml.XmlAttribute; 11 | 12 | public class XmlAttributeTests { 13 | 14 | @Rule 15 | public ExpectedException thrown = ExpectedException.none(); 16 | 17 | @Test 18 | public void testConstructorStringStringIllegalArgumentException1() { 19 | thrown.expect(IllegalArgumentException.class); 20 | new XmlAttribute("name", null); 21 | } 22 | 23 | @Test 24 | public void testConstructorStringStringIllegalArgumentException2() { 25 | thrown.expect(IllegalArgumentException.class); 26 | new XmlAttribute("", "value"); 27 | } 28 | 29 | @Test 30 | public void testConstructorStringStringIllegalArgumentException3() { 31 | thrown.expect(IllegalArgumentException.class); 32 | new XmlAttribute(null, "value"); 33 | } 34 | 35 | @Test 36 | public void testGetName() { 37 | XmlAttribute attribute = new XmlAttribute("xyzName", ""); 38 | assertEquals(attribute.getName(), "xyzName"); 39 | } 40 | 41 | @Test 42 | public void testGetValue() { 43 | XmlAttribute attribute = new XmlAttribute("xyzName", "xyzValue"); 44 | assertEquals(attribute.getValue(), "xyzValue"); 45 | } 46 | 47 | @Test 48 | public void testIsSameAttribute() { 49 | assertTrue(new XmlAttribute("xyzName", "value").isSameAttribute(new XmlAttribute("xyzName", "differentvalue"))); 50 | } 51 | 52 | @Test 53 | public void testIsSameAttributeIllegalArgumentException() { 54 | thrown.expect(IllegalArgumentException.class); 55 | new XmlAttribute("xyzName", "value").isSameAttribute(null); 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /utilities/README: -------------------------------------------------------------------------------- 1 | This folder contains all things related to the app but not immediate part of it, e.g. promotional material, svgs, scripts to check which strings need to be translated... 2 | -------------------------------------------------------------------------------- /utilities/compareStringFiles.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | # -*- coding: utf-8 -*- 3 | 4 | #aufruf: python comparebla.py english foreign ignore 5 | 6 | import sys 7 | import datetime 8 | import re 9 | from collections import defaultdict 10 | 11 | englishLinesRaw = open(sys.argv[1]).readlines() 12 | #fill a dictionary variable_name:string_value for english 13 | only_english_strings =[l.strip() for l in filter(lambda x:'(.*)<') 17 | 18 | for line in only_english_strings: 19 | key = line.split('"')[1] 20 | value = p_value.search(line).group(1) 21 | engDic[key]=value 22 | 23 | 24 | #delete all keys found in foreign 25 | foreignLinesRaw = open(sys.argv[2]).readlines() 26 | only_foreign_strings =[l.strip() for l in filter(lambda x:' 2 | 3 | 4 | 5 | Layer 1 6 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /utilities/svgs/tutorial_branching.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Layer 1 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /utilities/svgs/tutorial_current_state.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Layer 1 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /utilities/svgs/tutorial_state.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Layer 1 6 | 7 | 9 | 10 | 11 | 12 | --------------------------------------------------------------------------------