Compare commits

...

79 Commits
v1.0 ... master

Author SHA1 Message Date
Marcel Kapfer cf9c84d98c Add missing LICENSE 2018-01-22 11:17:08 +00:00
Marcel Kapfer d7b90eb614 Updated Twitter handle 2018-01-03 09:08:21 +01:00
Marcel Kapfer 84556fa038 Updated README 2018-01-03 09:07:08 +01:00
Marcel Kapfer 04a321ed10 Added feature graphic 2018-01-03 09:03:19 +01:00
Marcel Kapfer 77600b4d34 updated about fragment contents 2017-09-17 13:55:00 +02:00
Marcel Kapfer ba286c7267 resize launcher icons to meet developer policy 2017-09-17 13:54:45 +02:00
Marcel Kapfer 961131e7aa updated to gradle 2.3.3 2017-09-17 13:53:56 +02:00
Marcel Kapfer (mmk2410) 160e1aeae8 Updated readme 2016-11-21 17:53:52 +01:00
mmk2410 2424481f8d Release 2.4.0 2015-08-21 16:46:35 +02:00
mmk2410 9c064db05d Release 2.3.0 2015-08-03 17:51:38 +02:00
mmk2410 a5202e89d5 Forgot to add these modules 2015-08-03 17:17:19 +02:00
mmk2410 6edd6ae637 Instant converting 2015-08-03 17:15:36 +02:00
mmk2410 bcd6deab0b Intelligent Code recognization 2015-08-03 16:43:36 +02:00
mmk2410 adccce2f14 Multiple Line support, Fixed issus with appcompat 22 2015-08-03 15:36:59 +02:00
mmk2410 4f25216ce8 Version 2.2.7: Better tablet recognization 2015-06-01 11:36:48 +02:00
mmk2410 cbdd4ec80f Version 2.2.6 2015-05-30 22:29:39 +02:00
Marcel Kapfer 08182f7409 Merge pull request #7 from FriedrichFroebel/patch-1
Fixed typo
2015-05-27 15:28:24 +02:00
FriedrichFroebel 383a2f020a Fixed typo 2015-05-27 07:45:29 +02:00
mmk2410 436be22132 Version 2.2.5: Design fixes for new about section; better tablet recognization; bug fixes (api up to 18) 2015-05-27 00:08:06 +02:00
mmk2410 9acb33c0c4 Version 2.2.4 2015-05-20 12:34:25 +02:00
mmk2410 5d2e0cc9fc Version 2.2.4: New Design for writtenMorse list and about; Fixed links 2015-05-20 12:22:51 +02:00
mmk2410 12d2f20dad Bugfix: Sharing didn't work; Version 2.2.3 2015-05-19 18:25:00 +02:00
mmk2410 7750803cd7 Merge branch 'master' of https://github.com/mmk2410/morse-converter-android 2015-05-19 18:11:01 +02:00
mmk2410 20badbff2b Bugfixes: Keyboard hides after convert; cursor is now shown 2015-05-19 18:10:12 +02:00
Marcel Kapfer 24930ed269 Update README.md 2015-05-19 17:33:42 +02:00
Marcel Kapfer 4be020d15d Update README.md 2015-05-19 11:31:50 +02:00
mmk2410 9a8059577e Version 2.2.2: New icon; drawer graphic without signs 2015-05-18 13:50:00 +02:00
mmk2410 217cf910a6 Version 2.2.1: Donation item only shown, when nothing is donated 2015-05-16 23:19:46 +02:00
mmk2410 d682999421 Version 2.2 2015-05-15 22:19:23 +02:00
mmk2410 2d8bf539ae Better handling of an empty input 2015-04-01 01:21:30 +02:00
mmk2410 93bf3f101c Better Folder & File Structure 2015-04-01 01:12:08 +02:00
mmk2410 cf18cbf7b4 Fixed the Keyboard shown when Drawer is open bug 2015-04-01 00:14:56 +02:00
mmk2410 6f32e71d29 Translucent Statusbar Fixes; Sticked About to bottom 2015-03-31 23:17:08 +02:00
mmk2410 f3b6d15d71 Enabled toolbar shadow 2015-03-31 22:31:04 +02:00
mmk2410 1cc255ba58 Finished writtenMorse List Fragment 2015-03-31 09:28:17 +02:00
mmk2410 0e6b5e610b Implemented Assets File Reader 2015-03-31 00:55:02 +02:00
mmk2410 458aa5e64d Merge branch 'master' of https://github.com/mmk2410/morse-converter-android 2015-03-30 23:42:09 +02:00
mmk2410 22fe5a0fdc Added Recycler List 2015-03-30 23:41:38 +02:00
Marcel Kapfer 4767ed38b5 Update README.md 2015-03-10 23:11:15 +01:00
Marcel Kapfer 7cb94a15ca Fixed broken image 2015-03-10 23:10:33 +01:00
Marcel Kapfer 8104b286d3 Version 2.1 preparations 2015-03-10 23:05:56 +01:00
Marcel Kapfer db75fa878b Landscape Layout 2015-03-07 23:59:49 +01:00
Marcel Kapfer c1a01cfc03 Landscape Layout 2015-03-07 23:49:54 +01:00
Marcel Kapfer ec7cc397e4 updated gitignore 2015-03-07 23:46:47 +01:00
mmk2410 3292aa79ac Updated Readme 2015-02-18 10:50:36 +01:00
mmk2410 faf39e069a Updated Readme 2015-02-18 10:41:49 +01:00
mmk2410 a7b588910a material design 2015-02-18 10:36:29 +01:00
mmk2410 e715ead2d0 updated .gitignore 2015-02-18 10:28:49 +01:00
mmk2410 56e9875720 Updated Release info 2015-02-18 10:10:15 +01:00
mmk2410 1a50799a22 Updated Readme 2015-02-18 00:51:58 +01:00
mmk2410 278ac3e37c updated the drawer image 2015-02-18 00:44:23 +01:00
mmk2410 a084849af2 Changed statusbar color to meet google design guidlines 2015-02-17 23:17:11 +01:00
mmk2410 3153bc6ef6 Updated copyright text 2015-02-17 23:04:57 +01:00
mmk2410 b2daff0bf0 Updated ignore list 2015-02-17 22:57:17 +01:00
mmk2410 924d46442f Removed this f*** folder 2015-02-17 22:55:43 +01:00
mmk2410 a2f6dbd490 Fixed Crash when click Share or Copy in writtenMorse 2015-02-17 22:52:46 +01:00
mmk2410 756605b481 Added drawer image 2015-02-17 22:45:16 +01:00
mmk2410 c336884978 Merge branch 'material' of https://github.com/mmk2410/morse-converter-android into material 2015-02-17 22:41:32 +01:00
mmk2410 bc8038bad8 Possibility for ripple effects on API >= 14 2015-02-17 22:40:41 +01:00
Marcel Kapfer 63f1192b8c Create README.md 2015-02-17 03:28:34 +01:00
mmk2410 966bab857e Imported Converting Engine; Layout Animations; Copy and Share action 2015-02-17 03:13:59 +01:00
Marcel Kapfer c0de40f254 Updated Text
Added 'Contribute' and 'Trello Board' section
2015-02-16 22:57:17 +01:00
mmk2410 86fe38e263 scrollable convert fragments 2015-02-16 00:55:37 +01:00
mmk2410 d2ec5b9d6a designing all clickable objects 2015-02-15 17:58:56 +01:00
mmk2410 1c47c45ebe handling about clicks 2015-02-15 10:04:11 +01:00
mmk2410 fb5123ffec Change dp to sp on fonts 2015-02-15 02:29:22 +01:00
mmk2410 38e17fa041 Finishing Materializing 2015-02-15 02:26:06 +01:00
mmk2410 e1e3b178e8 Language Support 2015-02-14 18:45:28 +01:00
mmk2410 159abc21c8 Better KitKat support 2015-02-14 18:44:24 +01:00
mmk2410 7c084018cc Added the other sections 2015-02-14 17:45:47 +01:00
mmk2410 d503e14358 Added the other sections 2015-02-14 17:45:23 +01:00
mmk2410 9e6d755e45 Materializing 2015-02-14 17:31:42 +01:00
Marcel Kapfer 4ddc3812cb Updated text 2015-01-05 17:29:14 +01:00
mmk2410 3b4b62197c Release preparation and correctly applied GNU GPLv3 License 2015-01-05 11:37:54 +01:00
mmk2410 e5c39eb203 Fixed BUG0003 2015-01-05 11:03:09 +01:00
mmk2410 f884a89ad6 Fixed BUG0004 2015-01-04 21:17:15 +01:00
mmk2410 18bb894aea Fixed BUG0001 and BUG0002 2015-01-04 20:50:43 +01:00
mmk2410 330edfdb10 Updated Text 2015-01-02 17:40:17 +01:00
mmk2410 2a768dd01e Updated Text 2015-01-02 17:38:31 +01:00
107 changed files with 3917 additions and 3386 deletions

18
.gitignore vendored
View File

@ -1,26 +1,14 @@
# Built application files
*.apk
*.ap_
# Files for the Dalvik VM
*.dex
# Java class files
*.class
# Generated files
bin/
gen/
# Gradle files
.gradle/
build/
# Local configuration file (sdk path, etc)
local.properties
# Proguard folder generated by Eclipse
proguard/
# Log Files
*.log
.idea/
*.iml
app/app.iml

View File

@ -1 +0,0 @@
MorseConverter

View File

@ -1,23 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CompilerConfiguration">
<option name="DEFAULT_COMPILER" value="Javac" />
<resourceExtensions />
<wildcardResourcePatterns>
<entry name="!?*.java" />
<entry name="!?*.form" />
<entry name="!?*.class" />
<entry name="!?*.groovy" />
<entry name="!?*.scala" />
<entry name="!?*.flex" />
<entry name="!?*.kt" />
<entry name="!?*.clj" />
</wildcardResourcePatterns>
<annotationProcessing>
<profile default="true" name="Default" enabled="false">
<processorPath useClasspath="true" />
</profile>
</annotationProcessing>
</component>
</project>

View File

@ -1,3 +0,0 @@
<component name="CopyrightManager">
<settings default="" />
</component>

View File

@ -1,5 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding" useUTFGuessing="true" native2AsciiForPropertiesFiles="false" />
</project>

View File

@ -1,18 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="GradleSettings">
<option name="linkedExternalProjectsSettings">
<GradleProjectSettings>
<option name="distributionType" value="DEFAULT_WRAPPED" />
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="modules">
<set>
<option value="$PROJECT_DIR$" />
<option value="$PROJECT_DIR$/app" />
</set>
</option>
</GradleProjectSettings>
</option>
</component>
</project>

View File

@ -1,8 +0,0 @@
<component name="InspectionProjectProfileManager">
<profile version="1.0" is_locked="false">
<option name="myName" value="Project Default" />
<option name="myLocal" value="false" />
<inspection_tool class="AndroidDomInspection" enabled="false" level="ERROR" enabled_by_default="false" />
<inspection_tool class="AndroidLintGradleOverrides" enabled="false" level="WARNING" enabled_by_default="false" />
</profile>
</component>

View File

@ -1,7 +0,0 @@
<component name="InspectionProjectProfileManager">
<settings>
<option name="PROJECT_PROFILE" value="Project Default" />
<option name="USE_PROJECT_PROFILE" value="true" />
<version value="1.0" />
</settings>
</component>

View File

@ -1,11 +0,0 @@
<component name="libraryTable">
<library name="support-v4-19.1.0">
<CLASSES>
<root url="jar:///opt/android-sdk/extras/android/m2repository/com/android/support/support-v4/19.1.0/support-v4-19.1.0.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar:///opt/android-sdk/extras/android/m2repository/com/android/support/support-v4/19.1.0/support-v4-19.1.0-sources.jar!/" />
</SOURCES>
</library>
</component>

View File

@ -1,10 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="EntryPointsManager">
<entry_points version="2.0" />
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_6" assert-keyword="true" jdk-15="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>
</project>

View File

@ -1,10 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/MorseConverter.iml" filepath="$PROJECT_DIR$/MorseConverter.iml" />
<module fileurl="file://$PROJECT_DIR$/app/app.iml" filepath="$PROJECT_DIR$/app/app.iml" />
</modules>
</component>
</project>

View File

@ -1,5 +0,0 @@
<component name="DependencyValidationManager">
<state>
<option name="SKIP_IMPORT_STATEMENTS" value="false" />
</state>
</component>

View File

@ -1,7 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="" />
</component>
</project>

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,4 @@
GNU GENERAL PUBLIC LICENSE
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
@ -631,8 +631,8 @@ to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
{one line to give the program's name and a brief idea of what it does.}
Copyright (C) {year} {name of author}
morse-converter-android
Copyright (C) 2018 Marcel Kapfer
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
@ -652,7 +652,7 @@ Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
{project} Copyright (C) {year} {fullname}
morse-converter-android Copyright (C) 2018 Marcel Kapfer
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
@ -672,4 +672,3 @@ may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
<http://www.gnu.org/philosophy/why-not-lgpl.html>.

View File

@ -1,15 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<module external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$" external.system.id="GRADLE" type="JAVA_MODULE" version="4">
<module external.linked.project.id="MorseConverter" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$" external.system.id="GRADLE" external.system.module.group="" external.system.module.version="unspecified" type="JAVA_MODULE" version="4">
<component name="FacetManager">
<facet type="java-gradle" name="Java-Gradle">
<configuration>
<option name="BUILD_FOLDER_PATH" value="$MODULE_DIR$/build" />
<option name="BUILDABLE" value="false" />
</configuration>
</facet>
</component>
<component name="NewModuleRootManager" inherit-compiler-output="false">
<output url="file://$MODULE_DIR$/build/classes/main" />
<output-test url="file://$MODULE_DIR$/build/classes/test" />
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/.gradle" />
@ -17,5 +16,4 @@
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>
</module>

View File

@ -1,4 +1,26 @@
Morse Converter Android App
===========================
# writtenMorse Android Converter
A writtenMorse and normal morse code converter for Android
A writtenMorse and normal morse code converter for Android. You can find more information about this app on the [GitLab Wiki](https://gitlab.com/mmk2410/writtenmorse-specs/wikis/Home).
![Image](https://gitlab.com/mmk2410/morse-converter-android/raw/master/feature-graphic.png)
Get it on [Google Play](https://play.google.com/store/apps/details?id=de.marcelkapfer.morseconverter)
## Contribute
1. Fork it
2. Create your feature branch (`git checkout -b my-new-feature`)
3. Commit your changes (`git commit -am 'Add some feature'`)
4. Add yourself to the CONTRIBUTORS file
5. Push to the branch (`git push origin my-new-feature`)
6. **Create a new merge request**
You can always write me a mail at [me@mmk2410.org](mailto:me@mmk2410.org) or contact me on [Twitter](https://twitter.com/mmk2410).
## Beta testing
Would you like to test new features before they land in the public version? Just join the [Google+ community](https://plus.google.com/communities/103668718628585126049).
## Used Libraries
* [Neokree's Material Navigation Drawer](https://github.com/neokree/MaterialNavigationDrawer)

1
app/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
/build

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<module external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$/.." external.system.id="GRADLE" type="JAVA_MODULE" version="4">
<module external.linked.project.id=":app" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$/.." external.system.id="GRADLE" external.system.module.group="MorseConverter" external.system.module.version="unspecified" type="JAVA_MODULE" version="4">
<component name="FacetManager">
<facet type="android-gradle" name="Android-Gradle">
<configuration>
@ -11,9 +11,9 @@
<option name="SELECTED_BUILD_VARIANT" value="debug" />
<option name="ASSEMBLE_TASK_NAME" value="assembleDebug" />
<option name="COMPILE_JAVA_TASK_NAME" value="compileDebugSources" />
<option name="ASSEMBLE_TEST_TASK_NAME" value="assembleDebugTest" />
<option name="SOURCE_GEN_TASK_NAME" value="generateDebugSources" />
<option name="TEST_SOURCE_GEN_TASK_NAME" value="generateDebugTestSources" />
<afterSyncTasks>
<task>generateDebugSources</task>
</afterSyncTasks>
<option name="ALLOW_USER_CONFIGURATION" value="false" />
<option name="MANIFEST_FILE_RELATIVE_PATH" value="/src/main/AndroidManifest.xml" />
<option name="RES_FOLDER_RELATIVE_PATH" value="/src/main/res" />
@ -22,68 +22,100 @@
</configuration>
</facet>
</component>
<component name="NewModuleRootManager" inherit-compiler-output="false">
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7" inherit-compiler-output="false">
<output url="file://$MODULE_DIR$/build/intermediates/classes/debug" />
<output-test url="file://$MODULE_DIR$/build/intermediates/classes/test/debug" />
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/debug" isTestSource="false" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/debug" isTestSource="false" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/debug" isTestSource="false" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/debug" isTestSource="false" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/debug" isTestSource="false" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/debug" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/generated/debug" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/test/debug" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/test/debug" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/test/debug" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/test/debug" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/test/debug" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/generated/test/debug" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/debug" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/androidTest/debug" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/androidTest/debug" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/androidTest/debug" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/androidTest/debug" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/androidTest/debug" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/androidTest/debug" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/androidTest/debug" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/res" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/assets" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/aidl" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/jni" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/rs" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/shaders" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/assets" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/aidl" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/testDebug/shaders" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/main/res" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/main/assets" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/main/aidl" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/jni" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/java/engine" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/shaders" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/aidl" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/assets" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/bundles" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/builds" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/coverage-instrumented-classes" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/dependency-cache" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/dex" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/dex-cache" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/jacoco" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/javaResources" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/libs" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/lint" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-classes" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-runtime-classes" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-safeguard" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-verifier" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant-run-resources" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant-run-support" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/jniLibs" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/manifests" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/ndk" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/pre-dexed" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/proguard" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/reload-dex" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/res" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/restart-dex" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/rs" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/shaders" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/split-apk" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/tmp" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/transforms" />
<excludeFolder url="file://$MODULE_DIR$/build/outputs" />
<excludeFolder url="file://$MODULE_DIR$/build/reports" />
<excludeFolder url="file://$MODULE_DIR$/build/tmp" />
</content>
<orderEntry type="jdk" jdkName="Android API 19 Platform" jdkType="Android SDK" />
<orderEntry type="jdk" jdkName="Android API 22 Platform" jdkType="Android SDK" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" exported="" name="support-v4-19.1.0" level="project" />
<orderEntry type="library" exported="" name="MaterialNavigationDrawer-1.3.3" level="project" />
<orderEntry type="library" exported="" name="material-ripple-1.0.1" level="project" />
<orderEntry type="library" exported="" name="support-v4-22.2.1" level="project" />
<orderEntry type="library" exported="" name="recyclerview-v7-22.2.1" level="project" />
<orderEntry type="library" exported="" name="support-annotations-22.2.1" level="project" />
<orderEntry type="library" exported="" name="library-1.0.44" level="project" />
<orderEntry type="library" exported="" name="cardview-v7-22.2.1" level="project" />
<orderEntry type="library" exported="" name="appcompat-v7-22.2.1" level="project" />
</component>
</module>
</module>

View File

@ -1,23 +1,35 @@
apply plugin: 'com.android.application'
android {
compileSdkVersion 19
buildToolsVersion "21.1.1"
compileSdkVersion 22
buildToolsVersion '25.0.0'
defaultConfig {
applicationId "de.marcelkapfer.morseconverter"
minSdkVersion 14
targetSdkVersion 19
minSdkVersion 15
targetSdkVersion 22
versionCode 241
versionName "2.4.1"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
sourceSets { main { java.srcDirs = ['src/main/java', 'src/main/java/engine'] } }
}
repositories {
mavenCentral()
}
dependencies {
compile 'com.android.support:support-v4:19.1.0'
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.2.1'
compile 'it.neokree:MaterialNavigationDrawer:1.3.3'
compile 'com.android.support:cardview-v7:22.2.1'
compile 'com.android.support:support-v4:22.2.1'
compile 'com.android.support:recyclerview-v7:22.2.1'
compile 'com.anjlab.android.iab.v3:library:1.0.+@aar'
}

View File

@ -1,4 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<lint>
<issue id="DefaultLocale" severity="ignore" />
</lint>

View File

@ -1,69 +1,77 @@
-- Merging decision tree log ---
manifest
ADDED from AndroidManifest.xml:2:1
ADDED from AndroidManifest.xml:23:1
package
ADDED from AndroidManifest.xml:2:11
ADDED from AndroidManifest.xml:24:5
INJECTED from AndroidManifest.xml:0:0
INJECTED from AndroidManifest.xml:0:0
android:versionName
ADDED from AndroidManifest.xml:4:5
android:versionCode
ADDED from AndroidManifest.xml:3:5
INJECTED from AndroidManifest.xml:0:0
INJECTED from AndroidManifest.xml:0:0
xmlns:android
ADDED from AndroidManifest.xml:4:31
uses-sdk
ADDED from AndroidManifest.xml:6:5
android:targetSdkVersion
ADDED from AndroidManifest.xml:8:9
INJECTED from AndroidManifest.xml:0:0
INJECTED from AndroidManifest.xml:0:0
android:minSdkVersion
ADDED from AndroidManifest.xml:7:9
ADDED from AndroidManifest.xml:23:11
android:versionCode
INJECTED from AndroidManifest.xml:0:0
INJECTED from AndroidManifest.xml:0:0
application
ADDED from AndroidManifest.xml:10:5
ADDED from AndroidManifest.xml:26:5
MERGED from com.android.support:appcompat-v7:22.2.1:22:5
MERGED from com.android.support:support-v4:22.2.1:22:5
MERGED from it.neokree:MaterialNavigationDrawer:1.3.3:14:5
MERGED from com.android.support:appcompat-v7:22.2.1:22:5
MERGED from com.android.support:support-v4:22.2.1:22:5
MERGED from com.balysv:material-ripple:1.0.1:12:5
MERGED from com.android.support:cardview-v7:22.2.1:22:5
MERGED from com.android.support:support-v4:22.2.1:22:5
MERGED from com.android.support:support-v4:22.2.1:22:5
MERGED from com.anjlab.android.iab.v3:library:1.0.26:13:5
android:label
ADDED from AndroidManifest.xml:13:9
ADDED from AndroidManifest.xml:29:9
android:allowBackup
ADDED from AndroidManifest.xml:11:9
ADDED from AndroidManifest.xml:27:9
android:icon
ADDED from AndroidManifest.xml:12:9
android:theme
ADDED from AndroidManifest.xml:14:9
ADDED from AndroidManifest.xml:28:9
activity#de.marcelkapfer.morseconverter.MainActivity
ADDED from AndroidManifest.xml:16:8
ADDED from AndroidManifest.xml:30:9
android:label
ADDED from AndroidManifest.xml:18:13
android:windowSoftInputMode
ADDED from AndroidManifest.xml:19:13
ADDED from AndroidManifest.xml:32:13
android:theme
ADDED from AndroidManifest.xml:33:13
android:name
ADDED from AndroidManifest.xml:17:13
ADDED from AndroidManifest.xml:31:13
intent-filter#android.intent.action.MAIN+android.intent.category.LAUNCHER
ADDED from AndroidManifest.xml:20:13
ADDED from AndroidManifest.xml:34:13
action#android.intent.action.MAIN
ADDED from AndroidManifest.xml:21:17
ADDED from AndroidManifest.xml:35:17
android:name
ADDED from AndroidManifest.xml:21:25
ADDED from AndroidManifest.xml:35:25
category#android.intent.category.LAUNCHER
ADDED from AndroidManifest.xml:23:17
ADDED from AndroidManifest.xml:37:17
android:name
ADDED from AndroidManifest.xml:23:27
activity#de.marcelkapfer.morseconverter.DisplayMessageActivity
ADDED from AndroidManifest.xml:26:9
android:label
ADDED from AndroidManifest.xml:28:13
android:parentActivityName
ADDED from AndroidManifest.xml:29:13
android:immersive
ADDED from AndroidManifest.xml:29:86
ADDED from AndroidManifest.xml:37:27
uses-permission#com.android.vending.BILLING
ADDED from AndroidManifest.xml:42:5
MERGED from com.anjlab.android.iab.v3:library:1.0.26:11:5
android:name
ADDED from AndroidManifest.xml:27:13
meta-data#android.support.PARENT_ACTIVITY
ADDED from AndroidManifest.xml:30:13
android:value
ADDED from AndroidManifest.xml:32:17
android:name
ADDED from AndroidManifest.xml:31:17
ADDED from AndroidManifest.xml:42:22
uses-sdk
INJECTED from AndroidManifest.xml:0:0 reason: use-sdk injection requested
MERGED from com.android.support:appcompat-v7:22.2.1:20:5
MERGED from com.android.support:support-v4:22.2.1:20:5
MERGED from it.neokree:MaterialNavigationDrawer:1.3.3:8:5
MERGED from com.android.support:appcompat-v7:22.2.1:20:5
MERGED from com.android.support:support-v4:22.2.1:20:5
MERGED from com.balysv:material-ripple:1.0.1:8:5
MERGED from com.android.support:cardview-v7:22.2.1:20:5
MERGED from com.android.support:support-v4:22.2.1:20:5
MERGED from com.android.support:recyclerview-v7:22.2.1:20:5
MERGED from com.android.support:support-v4:22.2.1:20:5
MERGED from com.anjlab.android.iab.v3:library:1.0.26:7:5
tools:overrideLibrary
ADDED from it.neokree:MaterialNavigationDrawer:1.3.3:11:9
android:targetSdkVersion
INJECTED from AndroidManifest.xml:0:0
INJECTED from AndroidManifest.xml:0:0
android:minSdkVersion
INJECTED from AndroidManifest.xml:0:0
INJECTED from AndroidManifest.xml:0:0

17
app/proguard-rules.pro vendored Normal file
View File

@ -0,0 +1,17 @@
# Add project specific ProGuard rules here.
# By default, the flags in this file are appended to flags specified
# in /home/mmk/android-sdks/tools/proguard/proguard-android.txt
# You can edit the include path and order by changing the proguardFiles
# directive in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# Add any project specific keep options here:
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}

View File

@ -0,0 +1,13 @@
package de.marcelkapfer.morseconverter;
import android.app.Application;
import android.test.ApplicationTestCase;
/**
* <a href="http://d.android.com/tools/testing/testing_android.html">Testing Fundamentals</a>
*/
public class ApplicationTest extends ApplicationTestCase<Application> {
public ApplicationTest() {
super(Application.class);
}
}

View File

@ -1,36 +1,44 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest package="de.marcelkapfer.morseconverter"
android:versionCode="1"
android:versionName="1.0" xmlns:android="http://schemas.android.com/apk/res/android">
<!--
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="19" />
This is a Android application for converting writtenMorse and normal morse code.
Copyright (C) 2014-2015 Marcel Michael Kapfer
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.
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.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Marcel Michael Kapfer
marcelmichaelkapfer@yahoo.co.nz
-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="de.marcelkapfer.morseconverter" >
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/CustomActionBarTheme">
<activity
android:name="de.marcelkapfer.morseconverter.MainActivity"
android:label="@string/app_name" >
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:windowSoftInputMode="adjustResize">
android:theme="@style/AppTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="de.marcelkapfer.morseconverter.DisplayMessageActivity"
android:label="@string/title_activity_display_message"
android:parentActivityName="de.marcelkapfer.morseconverter.MainActivity" android:immersive="true">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="de.marcelkapfer.morseconverter.MainActivity" />
</activity>
</application>
<uses-permission android:name="com.android.vending.BILLING" />
</manifest>

View File

@ -0,0 +1 @@
A:01;B:1000;C:1010;D:100;E:0;F:0010;G:110;H:0000;I:00;J:0111;K:101;L:0100;M:11;N:10;O:111;P:0110;Q:1101;R:010;S:000;T:1;U:001;V:0001;W:011;X:1001;Y:1011;Z:1100;0:11111;1:01111;2:00111;3:00011;4:00001;5:00000;6:10000;7:11000;8:11100;9:11110;Ö:1110;Ü:0011;CH:1111;.:010101;,:110011;?:001100;-:100001;_:001101;(:10110;):101101;':011110;=:10001;+:01010;/:10010;@:011010;BEGIN:10101;BREAK:10001;END:01010;SOS:000111000;ERROR:00000000;

View File

@ -1,87 +0,0 @@
package de.marcelkapfer.morseconverter;
import android.app.Fragment;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
public class DisplayMessageActivity extends FragmentActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Get the message from the intent
Intent intent = getIntent();
String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
// Create the text view
TextView textView = new TextView(this);
textView.setTextSize(20);
textView.setText(message);
textView.setTextIsSelectable(true);
textView.setPadding(10, 10, 10, 10);
// Set the text view as the activity layout
setContentView(textView);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu items for use in the action bar
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.display_message_activity_actions, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle presses on the action bar items
switch (item.getItemId()) {
case R.id.action_share:
share();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
/**
* A placeholder fragment containing a simple view.
*/
public static class PlaceholderFragment extends Fragment {
public PlaceholderFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_display_message,
container, false);
return rootView;
}
}
public void share(){
Intent intent = getIntent();
String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, message);
sendIntent.setType("text/plain");
startActivity(Intent.createChooser(sendIntent, getResources().getText(R.string.send_to)));
}
}

View File

@ -0,0 +1,58 @@
package de.marcelkapfer.morseconverter.adapter;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import de.marcelkapfer.morseconverter.R;
/**
* Created by mmk on 3/30/15.
*/
public class WrittenMorseCodeAdapter extends RecyclerView.Adapter<WrittenMorseCodeAdapter.ViewHolder> {
private String[] mLetter;
private String[] mCode;
private static String mType = "LETTER";
public static class ViewHolder extends RecyclerView.ViewHolder {
// each data item is just a string in this case
public TextView mLetterView;
public TextView mCodeView;
public ViewHolder(View v) {
super(v);
mLetterView = (TextView) v.findViewById(R.id.letterfield);
mCodeView = (TextView) v.findViewById(R.id.codefield);
}
}
public WrittenMorseCodeAdapter(String[] myLetter, String[] myCode) {
mLetter = myLetter;
mCode = myCode;
}
@Override
public WrittenMorseCodeAdapter.ViewHolder onCreateViewHolder(ViewGroup parent,
int viewType) {
// create a new view
View v = LayoutInflater.from(parent.getContext())
.inflate(R.layout.codeview, parent, false);
ViewHolder vh = new ViewHolder(v);
return vh;
}
// Replace the contents of a view (invoked by the layout manager)
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
holder.mLetterView.setText(mLetter[position]);
holder.mCodeView.setText(mCode[position]);
}
@Override
public int getItemCount() {
return mCode.length;
}
}

View File

@ -0,0 +1,248 @@
package de.marcelkapfer.morseconverter.engine;
/*
This is a Java application for converting writtenMorse and normal morse code.
Copyright (C) 2014-2015 Marcel Michael Kapfer
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.
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.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Marcel Michael Kapfer
marcelmichaelkapfer@yahoo.co.nz
*/
public class DecodeNormalMorseManager {
public static String getDecodedString(String inputMessage) {
if(inputMessage.equals("")){
return "Please enter at least one character";
} else {
StringBuffer message = new StringBuffer(inputMessage);
if (message.toString().endsWith(" ")) {
message = message.deleteCharAt(message.length() - 1);
}
// Variables
StringBuffer input = new StringBuffer();
input = input.replace(0, input.length(), message.toString().toUpperCase());
StringBuffer output = new StringBuffer();
if (input.toString().equals("LETTERSPACE")) {
output.replace(0, output.length(), " ");
} else if (input.toString().equals("END OF WORK")) {
output.replace(0, output.length(), "...-.-");
} else if (input.toString().equals("ERROR")) {
output.replace(0, output.length(), "........");
} else if (input.toString().equals("STARTING SIGNAL")) {
output.replace(0, output.length(), "-.-.-");
} else if (input.toString().equals("ENDING SIGNAL")) {
output.replace(0, output.length(), ".-.-.");
} else if (input.toString().equals("UNDERSTOOD")) {
output.replace(0, output.length(), "...-.");
} else if (input.toString().equals("WAIT")) {
output.replace(0, output.length(), ".-...");
} else if (input.toString().equals("SOS")) {
output.replace(0, output.length(), "...---...");
} else if (input.toString().equals("LETTER SPACE")) {
output.replace(0, output.length(), " ");
} else if (input.toString().equals("WORD SPACE")) {
output.replace(0, output.length(), " ");
} else {
for (int c = input.length(); c > 0; c--) {
if (input.toString().startsWith(" ")) {
if (output.toString().endsWith(" ")) {
output.delete(output.length() - 3, output.length());
}
output.append(" ");
input.delete(0, 1);
} else if(input.toString().startsWith("\n")) {
output.append("\n");
input.deleteCharAt(input.indexOf("\n"));
} else if (input.toString().startsWith("A")) {
output.append(".- ");
input.delete(0, 1);
} else if (input.toString().startsWith("B")) {
output.append("-... ");
input.delete(0, 1);
} else if (input.toString().startsWith("C")) {
output.append("-.-. ");
input.delete(0, 1);
} else if (input.toString().startsWith("D")) {
output.append("-.. ");
input.delete(0, 1);
} else if (input.toString().startsWith("E")) {
output.append(". ");
input.delete(0, 1);
} else if (input.toString().startsWith("F")) {
output.append("..-. ");
input.delete(0, 1);
} else if (input.toString().startsWith("G")) {
output.append("--. ");
input.delete(0, 1);
} else if (input.toString().startsWith("H")) {
output.append(".... ");
input.delete(0, 1);
} else if (input.toString().startsWith("I")) {
output.append(".. ");
input.delete(0, 1);
} else if (input.toString().startsWith("J")) {
output.append(".--- ");
input.delete(0, 1);
} else if (input.toString().startsWith("K")) {
output.append("-.- ");
input.delete(0, 1);
} else if (input.toString().startsWith("L")) {
output.append(".-.. ");
input.delete(0, 1);
} else if (input.toString().startsWith("M")) {
output.append("-- ");
input.delete(0, 1);
} else if (input.toString().startsWith("N")) {
output.append("-. ");
input.delete(0, 1);
} else if (input.toString().startsWith("O")) {
output.append("--- ");
input.delete(0, 1);
} else if (input.toString().startsWith("P")) {
output.append(".--. ");
input.delete(0, 1);
} else if (input.toString().startsWith("Q")) {
output.append("--.- ");
input.delete(0, 1);
} else if (input.toString().startsWith("R")) {
output.append(".-. ");
input.delete(0, 1);
} else if (input.toString().startsWith("S")) {
output.append("... ");
input.delete(0, 1);
} else if (input.toString().startsWith("T")) {
output.append("- ");
input.delete(0, 1);
} else if (input.toString().startsWith("U")) {
output.append("..- ");
input.delete(0, 1);
} else if (input.toString().startsWith("V")) {
output.append("...- ");
input.delete(0, 1);
} else if (input.toString().startsWith("W")) {
output.append(".-- ");
input.delete(0, 1);
} else if (input.toString().startsWith("X")) {
output.append("-..- ");
input.delete(0, 1);
} else if (input.toString().startsWith("Y")) {
output.append("-.-- ");
input.delete(0, 1);
} else if (input.toString().startsWith("Z")) {
output.append("--.. ");
input.delete(0, 1);
} else if (input.toString().startsWith("0")) {
output.append("----- ");
input.delete(0, 1);
} else if (input.toString().startsWith("1")) {
output.append(".---- ");
input.delete(0, 1);
} else if (input.toString().startsWith("2")) {
output.append("..--- ");
input.delete(0, 1);
} else if (input.toString().startsWith("3")) {
output.append("...-- ");
input.delete(0, 1);
} else if (input.toString().startsWith("4")) {
output.append("....- ");
input.delete(0, 1);
} else if (input.toString().startsWith("5")) {
output.append("..... ");
input.delete(0, 1);
} else if (input.toString().startsWith("6")) {
output.append("-.... ");
input.delete(0, 1);
} else if (input.toString().startsWith("7")) {
output.append("--... ");
input.delete(0, 1);
} else if (input.toString().startsWith("8")) {
output.append("---.. ");
input.delete(0, 1);
} else if (input.toString().startsWith("9")) {
output.append("----. ");
input.delete(0, 1);
} else if (input.toString().startsWith("Ä")) {
output.append(".-.- ");
input.delete(0, 1);
} else if (input.toString().startsWith("Ö")) {
output.append("---. ");
input.delete(0, 1);
} else if (input.toString().startsWith("Ü")) {
output.append("..-- ");
input.delete(0, 1);
} else if (input.toString().startsWith("ß")) {
output.append("...--... ");
input.delete(0, 1);
} else if (input.toString().startsWith(".")) {
output.append(".-.-.- ");
input.delete(0, 1);
} else if (input.toString().startsWith(",")) {
output.append("--..-- ");
input.delete(0, 1);
} else if (input.toString().startsWith(":")) {
output.append("---... ");
input.delete(0, 1);
} else if (input.toString().startsWith(";")) {
output.append("-.-.-. ");
input.delete(0, 1);
} else if (input.toString().startsWith("?")) {
output.append("..--.. ");
input.delete(0, 1);
} else if (input.toString().startsWith("!")) {
output.append("-.-.-- ");
input.delete(0, 1);
} else if (input.toString().startsWith("-")) {
output.append("-....- ");
input.delete(0, 1);
} else if (input.toString().startsWith("_")) {
output.append("..--.- ");
input.delete(0, 1);
} else if (input.toString().startsWith("(")) {
output.append("-.--. ");
input.delete(0, 1);
} else if (input.toString().startsWith(")")) {
output.append("-.--.- ");
input.delete(0, 1);
} else if (input.toString().startsWith("=")) {
output.append("-...- ");
input.delete(0, 1);
} else if (input.toString().startsWith("+")) {
output.append(".-.-. ");
input.delete(0, 1);
} else if (input.toString().startsWith("/")) {
output.append("-..-. ");
input.delete(0, 1);
} else if (input.toString().startsWith("@")) {
output.append(".--.-. ");
input.delete(0, 1);
} else if (input.toString().startsWith("'")) {
output.append(".----. ");
input.delete(0, 1);
} else if (input.toString().startsWith("$")) {
output.append("...-..- ");
input.delete(0, 1);
} else {
return "Code not listed or wrong.";
}
}
if (output.toString().endsWith(" ")) {
output.delete(output.length() - 3, output.length());
}
}
return output.toString();
}
}
}

View File

@ -0,0 +1,249 @@
package de.marcelkapfer.morseconverter.engine;
/*
This is a Java application for converting writtenMorse and normal morse code.
Copyright (C) 2014-2015 Marcel Michael Kapfer
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.
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.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Marcel Michael Kapfer
marcelmichaelkapfer@yahoo.co.nz
*/
public class DecodeWrittenMorseManager {
public static String getDecodedString(String inputMessage) {
if(inputMessage.equals("")){
return "Please enter at least one character";
} else {
StringBuffer message = new StringBuffer(inputMessage);
if (message.toString().endsWith(" ")) {
message = message.deleteCharAt(message.length() - 1);
}
// Variables
StringBuffer input = new StringBuffer();
input = input.replace(0, input.length(), message.toString().toUpperCase());
StringBuffer output = new StringBuffer();
if (input.toString().equals("LETTERSPACE")) {
output.replace(0, output.length(), "#");
} else if (input.toString().equals("END OF WORK")) {
output.replace(0, output.length(), "000101");
} else if (input.toString().equals("ERROR")) {
output.replace(0, output.length(), "00000000");
} else if (input.toString().equals("STARTING SIGNAL")) {
output.replace(0, output.length(), "10101");
} else if (input.toString().equals("ENDING SIGNAL")) {
output.replace(0, output.length(), "01010");
} else if (input.toString().equals("UNDERSTOOD")) {
output.replace(0, output.length(), "00010");
} else if (input.toString().equals("WAIT")) {
output.replace(0, output.length(), "01000");
} else if (input.toString().equals("SOS")) {
output.replace(0, output.length(), "000111000");
} else if (input.toString().equals("LETTER SPACE")) {
output.replace(0, output.length(), "##");
} else if (input.toString().equals("WORD SPACE")) {
output.replace(0, output.length(), "+");
} else {
while (input.length() > 0) {
if (input.toString().startsWith(" ")) {
if (output.toString().endsWith("#")) {
output.delete(output.length() - 1, output.length());
}
output.append("+");
input.delete(0, 1);
} else if (input.toString().startsWith("\n")) {
output.append("\n");
input.deleteCharAt(input.indexOf("\n"));
} else if (input.toString().startsWith("A")) {
output.append("01#");
input.delete(0, 1);
} else if (input.toString().startsWith("B")) {
output.append("1000#");
input.delete(0, 1);
} else if (input.toString().startsWith("C")) {
output.append("1010#");
input.delete(0, 1);
} else if (input.toString().startsWith("D")) {
output.append("100#");
input.delete(0, 1);
} else if (input.toString().startsWith("E")) {
output.append("0#");
input.delete(0, 1);
} else if (input.toString().startsWith("F")) {
output.append("0010#");
input.delete(0, 1);
} else if (input.toString().startsWith("G")) {
output.append("110#");
input.delete(0, 1);
} else if (input.toString().startsWith("H")) {
output.append("0000#");
input.delete(0, 1);
} else if (input.toString().startsWith("I")) {
output.append("00#");
input.delete(0, 1);
} else if (input.toString().startsWith("J")) {
output.append("0111#");
input.delete(0, 1);
} else if (input.toString().startsWith("K")) {
output.append("101#");
input.delete(0, 1);
} else if (input.toString().startsWith("L")) {
output.append("0100#");
input.delete(0, 1);
} else if (input.toString().startsWith("M")) {
output.append("11#");
input.delete(0, 1);
} else if (input.toString().startsWith("N")) {
output.append("10#");
input.delete(0, 1);
} else if (input.toString().startsWith("O")) {
output.append("111#");
input.delete(0, 1);
} else if (input.toString().startsWith("P")) {
output.append("0110#");
input.delete(0, 1);
} else if (input.toString().startsWith("Q")) {
output.append("1101#");
input.delete(0, 1);
} else if (input.toString().startsWith("R")) {
output.append("010#");
input.delete(0, 1);
} else if (input.toString().startsWith("S")) {
output.append("000#");
input.delete(0, 1);
} else if (input.toString().startsWith("T")) {
output.append("1#");
input.delete(0, 1);
} else if (input.toString().startsWith("U")) {
output.append("001#");
input.delete(0, 1);
} else if (input.toString().startsWith("V")) {
output.append("0001#");
input.delete(0, 1);
} else if (input.toString().startsWith("W")) {
output.append("011#");
input.delete(0, 1);
} else if (input.toString().startsWith("X")) {
output.append("1001#");
input.delete(0, 1);
} else if (input.toString().startsWith("Y")) {
output.append("1011#");
input.delete(0, 1);
} else if (input.toString().startsWith("Z")) {
output.append("1100#");
input.delete(0, 1);
} else if (input.toString().startsWith("0")) {
output.append("11111#");
input.delete(0, 1);
} else if (input.toString().startsWith("1")) {
output.append("01111#");
input.delete(0, 1);
} else if (input.toString().startsWith("2")) {
output.append("00111#");
input.delete(0, 1);
} else if (input.toString().startsWith("3")) {
output.append("00011#");
input.delete(0, 1);
} else if (input.toString().startsWith("4")) {
output.append("00001#");
input.delete(0, 1);
} else if (input.toString().startsWith("5")) {
output.append("00000#");
input.delete(0, 1);
} else if (input.toString().startsWith("6")) {
output.append("10000#");
input.delete(0, 1);
} else if (input.toString().startsWith("7")) {
output.append("11000#");
input.delete(0, 1);
} else if (input.toString().startsWith("8")) {
output.append("11100#");
input.delete(0, 1);
} else if (input.toString().startsWith("9")) {
output.append("11110#");
input.delete(0, 1);
} else if (input.toString().startsWith("Ä")) {
output.append("0101#");
input.delete(0, 1);
} else if (input.toString().startsWith("Ö")) {
output.append("1110#");
input.delete(0, 1);
} else if (input.toString().startsWith("Ü")) {
output.append("0011#");
input.delete(0, 1);
} else if (input.toString().startsWith("ß")) {
output.append("00011000#");
input.delete(0, 1);
} else if (input.toString().startsWith(".")) {
output.append("010101#");
input.delete(0, 1);
} else if (input.toString().startsWith(",")) {
output.append("110011#");
input.delete(0, 1);
} else if (input.toString().startsWith(":")) {
output.append("111000#");
input.delete(0, 1);
} else if (input.toString().startsWith(";")) {
output.append("101010#");
input.delete(0, 1);
} else if (input.toString().startsWith("?")) {
output.append("001100#");
input.delete(0, 1);
} else if (input.toString().startsWith("!")) {
output.append("101011#");
input.delete(0, 1);
} else if (input.toString().startsWith("-")) {
output.append("100001#");
input.delete(0, 1);
} else if (input.toString().startsWith("_")) {
output.append("001101#");
input.delete(0, 1);
} else if (input.toString().startsWith("(")) {
output.append("10110#");
input.delete(0, 1);
} else if (input.toString().startsWith(")")) {
output.append("101101#");
input.delete(0, 1);
} else if (input.toString().startsWith("=")) {
output.append("10001#");
input.delete(0, 1);
} else if (input.toString().startsWith("+")) {
output.append("01010#");
input.delete(0, 1);
} else if (input.toString().startsWith("/")) {
output.append("10010#");
input.delete(0, 1);
} else if (input.toString().startsWith("@")) {
output.append("011010#");
input.delete(0, 1);
} else if (input.toString().startsWith("'")) {
output.append("011110#");
input.delete(0, 1);
} else if (input.toString().startsWith("$")) {
output.append("0001001#");
input.delete(0, 1);
} else {
return "Code not listed or wrong.";
}
}
if (output.toString().endsWith("#")) {
output.delete(output.length() - 1, output.length());
}
}
return output.toString();
}
}
}

View File

@ -0,0 +1,201 @@
package de.marcelkapfer.morseconverter.engine;
/*
This is a Java application for converting writtenMorse and normal morse code.
Copyright (C) 2014-2015 Marcel Michael Kapfer
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.
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.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Marcel Michael Kapfer
marcelmichaelkapfer@yahoo.co.nz
*/
/*
* Code for converting morse code into latin letters
*/
public class EncodeNormalMorseManager {
public static String getEncodedString(String inputMessage) {
if(inputMessage.equals("")){
return "Please enter at least one character";
} else {
// Converts the input string into a StringBuffer
StringBuffer message = new StringBuffer(inputMessage);
// Delete the space at the end which is automatically set through some keyboards
if (message.toString().endsWith(" ")) {
message = message.deleteCharAt(message.length() - 1);
}
// Declaring variables
String input;
StringBuffer output = new StringBuffer();
input = message.toString() + " ";
StringBuffer inputToSign = new StringBuffer(input);
while (!inputToSign.toString().equals(" ")) {
int d = 0;
boolean signFull = true;
StringBuffer sign = new StringBuffer();
while (signFull) {
if (inputToSign.toString().startsWith(" ")) {
output.append(" ");
inputToSign.delete(d, d + 7);
}
if (inputToSign.toString().startsWith("\n")) {
output.append("\n");
inputToSign.deleteCharAt(inputToSign.indexOf("\n"));
}
if (inputToSign.toString().substring(d, d + 3).equals(" ")) {
if (d == 0) {
inputToSign.delete(0, 3);
} else {
sign.replace(0, sign.length(), inputToSign
.toString().substring(0, d));
inputToSign.delete(0, d);
signFull = false;
}
} else {
d++;
}
}
if(sign.toString().equals(".-")) {
output.append("A");
} else if (sign.toString().equals("-...")) {
output.append("B");
} else if (sign.toString().equals("-.-.")) {
output.append("C");
} else if (sign.toString().equals("-..")) {
output.append("D");
} else if (sign.toString().equals(".")) {
output.append("E");
} else if (sign.toString().equals("..-.")) {
output.append("F");
} else if (sign.toString().equals("--.")) {
output.append("G");
} else if (sign.toString().equals("....")) {
output.append("H");
} else if (sign.toString().equals("..")) {
output.append("I");
} else if (sign.toString().equals(".---")) {
output.append("J");
} else if (sign.toString().equals("-.-")) {
output.append("K");
} else if (sign.toString().equals(".-..")) {
output.append("L");
} else if (sign.toString().equals("--")) {
output.append("M");
} else if (sign.toString().equals("-.")) {
output.append("N");
} else if (sign.toString().equals("---")) {
output.append("O");
} else if (sign.toString().equals(".--.")) {
output.append("P");
} else if (sign.toString().equals("--.-")) {
output.append("Q");
} else if (sign.toString().equals(".-.")) {
output.append("R");
} else if (sign.toString().equals("...")) {
output.append("S");
} else if (sign.toString().equals("-")) {
output.append("T");
} else if (sign.toString().equals("..-")) {
output.append("U");
} else if (sign.toString().equals("...-")) {
output.append("V");
} else if (sign.toString().equals(".--")) {
output.append("W");
} else if (sign.toString().equals("-..-")) {
output.append("X");
} else if (sign.toString().equals("-.--")) {
output.append("Y");
} else if (sign.toString().equals("--..")) {
output.append("Z");
} else if (sign.toString().equals("-----")) {
output.append("0");
} else if (sign.toString().equals(".----")) {
output.append("1");
} else if (sign.toString().equals("..---")) {
output.append("2");
} else if (sign.toString().equals("...--")) {
output.append("3");
} else if (sign.toString().equals("....-")) {
output.append("4");
} else if (sign.toString().equals(".....")) {
output.append("5");
} else if (sign.toString().equals("-....")) {
output.append("6");
} else if (sign.toString().equals("--...")) {
output.append("7");
} else if (sign.toString().equals("---..")) {
output.append("8");
} else if (sign.toString().equals("----.")) {
output.append("9");
} else if (sign.toString().equals(".-.-")) {
output.append("Ä");
} else if (sign.toString().equals("---.")) {
output.append("Ö");
} else if (sign.toString().equals("..--")) {
output.append("Ü");
} else if (sign.toString().equals("...--...")) {
output.append("ß");
} else if (sign.toString().equals("----")) {
output.append("CH");
} else if (sign.toString().equals(".-.-.-")) {
output.append(".");
} else if (sign.toString().equals("--..--")) {
output.append(",");
} else if (sign.toString().equals("---...")) {
output.append(":");
} else if (sign.toString().equals("-.-.-.")) {
output.append(";");
} else if (sign.toString().equals("..--..")) {
output.append("?");
} else if (sign.toString().equals("-.-.--")) {
output.append("!");
} else if (sign.toString().equals("-....-")) {
output.append("-");
} else if (sign.toString().equals("..--.-")) {
output.append("_");
} else if (sign.toString().equals("-.--.")) {
output.append("(");
} else if (sign.toString().equals("-.--.-")) {
output.append(")");
} else if (sign.toString().equals(".----.")) {
output.append("'");
} else if (sign.toString().equals("-...-")) {
output.append("=");
} else if (sign.toString().equals(".-.-.")) {
output.append("+ or End of the signal");
} else if (sign.toString().equals("-..-.")) {
output.append("/");
} else if (sign.toString().equals(".--.-.")) {
output.append("@");
} else if (sign.toString().equals("-.-.-")) {
output.append("Begin of the signal");
} else if (sign.toString().equals("-...-")) {
output.append("Wait");
} else if (sign.toString().equals("...-.")) {
output.append("Understood");
} else if (sign.toString().equals("...-.-")) {
output.append("End of work");
} else if (sign.toString().equals("...---...")) {
output.append("SOS");
} else if (sign.toString().equals("........")) {
output.append("Error");
} else {
return "Code not listed or wrong.";
}
}
return output.toString();
}
}
}

View File

@ -0,0 +1,206 @@
package de.marcelkapfer.morseconverter.engine;
/*
This is a Java application for converting writtenMorse and normal morse code.
Copyright (C) 2014-2015 Marcel Michael Kapfer
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.
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.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Marcel Michael Kapfer
marcelmichaelkapfer@yahoo.co.nz
*/
/*
* Code for converting writtenMorse to latin letters
*/
public class EncodeWrittenMorseManager {
public static String getEncodedString(String inputMessage) {
if(inputMessage.equals("")){
return "Please enter at least one character";
} else {
StringBuffer message = new StringBuffer(inputMessage);
if (message.toString().endsWith(" ")) {
message = message.deleteCharAt(message.length() - 1);
}
// Variables
String input;
StringBuffer output = new StringBuffer();
input = message.toString().toUpperCase() + "#";
StringBuffer inputToSign = new StringBuffer(input);
while (!inputToSign.toString().equals("#")) {
int d = 0;
boolean signFull = true;
StringBuffer sign = new StringBuffer();
while (signFull) {
if (inputToSign.toString().charAt(d) == '+'
|| inputToSign.toString().charAt(d) == '#'
|| inputToSign.toString().startsWith("\n")) {
if (d == 0) {
if (inputToSign.toString().startsWith("+")) {
output.append(" ");
inputToSign.deleteCharAt(0);
}
if (inputToSign.toString().startsWith("#")) {
inputToSign.deleteCharAt(0);
}
// Line break support
if (inputToSign.toString().startsWith("\n")) { // Detect line break
output.append("\n"); // Add line break to the output
inputToSign.deleteCharAt(inputToSign.indexOf("\n")); // Remove line break from the input
}
} else {
sign.replace(0, sign.length(), inputToSign
.toString().substring(0, d));
inputToSign.delete(0, d);
signFull = false;
}
} else {
d++;
}
}
if (sign.toString().equals("01")) {
output.append("A");
} else if (sign.toString().equals("1000")) {
output.append("B");
} else if (sign.toString().equals("1010")) {
output.append("C");
} else if (sign.toString().equals("100")) {
output.append("D");
} else if (sign.toString().equals("0")) {
output.append("E");
} else if (sign.toString().equals("0010")) {
output.append("F");
} else if (sign.toString().equals("110")) {
output.append("G");
} else if (sign.toString().equals("0000")) {
output.append("H");
} else if (sign.toString().equals("00")) {
output.append("I");
} else if (sign.toString().equals("0111")) {
output.append("J");
} else if (sign.toString().equals("101")) {
output.append("K");
} else if (sign.toString().equals("0100")) {
output.append("L");
} else if (sign.toString().equals("11")) {
output.append("M");
} else if (sign.toString().equals("10")) {
output.append("N");
} else if (sign.toString().equals("111")) {
output.append("O");
} else if (sign.toString().equals("0110")) {
output.append("P");
} else if (sign.toString().equals("1101")) {
output.append("Q");
} else if (sign.toString().equals("010")) {
output.append("R");
} else if (sign.toString().equals("000")) {
output.append("S");
} else if (sign.toString().equals("1")) {
output.append("T");
} else if (sign.toString().equals("001")) {
output.append("U");
} else if (sign.toString().equals("0001")) {
output.append("V");
} else if (sign.toString().equals("011")) {
output.append("W");
} else if (sign.toString().equals("1001")) {
output.append("X");
} else if (sign.toString().equals("1011")) {
output.append("Y");
} else if (sign.toString().equals("1100")) {
output.append("Z");
} else if (sign.toString().equals("11111")) {
output.append("0");
} else if (sign.toString().equals("01111")) {
output.append("1");
} else if (sign.toString().equals("00111")) {
output.append("2");
} else if (sign.toString().equals("00011")) {
output.append("3");
} else if (sign.toString().equals("00001")) {
output.append("4");
} else if (sign.toString().equals("00000")) {
output.append("5");
} else if (sign.toString().equals("10000")) {
output.append("6");
} else if (sign.toString().equals("11000")) {
output.append("7");
} else if (sign.toString().equals("11100")) {
output.append("8");
} else if (sign.toString().equals("11110")) {
output.append("9");
} else if (sign.toString().equals("0101")) {
output.append("Ä");
} else if (sign.toString().equals("1110")) {
output.append("Ö");
} else if (sign.toString().equals("0011")) {
output.append("Ü");
} else if (sign.toString().equals("00011000")) {
output.append("ß");
} else if (sign.toString().equals("1111")) {
output.append("CH");
} else if (sign.toString().equals("010101")) {
output.append(".");
} else if (sign.toString().equals("110011")) {
output.append(",");
} else if (sign.toString().equals("111000")) {
output.append(":");
} else if (sign.toString().equals("101010")) {
output.append(";");
} else if (sign.toString().equals("001100")) {
output.append("?");
} else if (sign.toString().equals("101011")) {
output.append("!");
} else if (sign.toString().equals("100001")) {
output.append("-");
} else if (sign.toString().equals("001101")) {
output.append("_");
} else if (sign.toString().equals("10110")) {
output.append("(");
} else if (sign.toString().equals("101101")) {
output.append(")");
} else if (sign.toString().equals("011110")) {
output.append("'");
} else if (sign.toString().equals("10001")) {
output.append("=");
} else if (sign.toString().equals("01010")) {
output.append("+ or End of the signal");
} else if (sign.toString().equals("10010")) {
output.append("/");
} else if (sign.toString().equals("011010")) {
output.append("@");
} else if (sign.toString().equals("10101")) {
output.append("Begin of the signal");
} else if (sign.toString().equals("10001")) {
output.append("Wait");
} else if (sign.toString().equals("00010")) {
output.append("Understood");
} else if (sign.toString().equals("000101")) {
output.append("End of work");
} else if (sign.toString().equals("000111000")) {
output.append("SOS");
} else if (sign.toString().equals("00000000")) {
output.append("Error");
} else {
return "Code not listed or wrong.";
}
}
return output.toString();
}
}
}

View File

@ -0,0 +1,210 @@
package de.marcelkapfer.morseconverter.fragments;
/*
This is a Android application for converting writtenMorse and normal morse code.
Copyright (C) 2014-2015 Marcel Michael Kapfer
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.
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.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Marcel Michael Kapfer
marcelmichaelkapfer@yahoo.co.nz
*/
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import de.marcelkapfer.morseconverter.R;
/**
* Created by mmk on 2/14/15.
*/
public class AboutFragment extends Fragment{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
return inflater.inflate(R.layout.fragment_about, container, false);
}
@Override
public void onStart(){
LinearLayout versionEntryButton = (LinearLayout) getActivity().findViewById(R.id.versionEntry);
versionEntryButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
versionEntry();
}
});
LinearLayout developerEntryButton = (LinearLayout) getActivity().findViewById(R.id.developerEntry);
developerEntryButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
developerEntry();
}
});
LinearLayout websiteEntryButton = (LinearLayout) getActivity().findViewById(R.id.websiteEntry);
websiteEntryButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
websiteEntry();
}
});
LinearLayout contactEntryButton = (LinearLayout) getActivity().findViewById(R.id.contactEntry);
contactEntryButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
contactEntry();
}
});
LinearLayout licenseEntryButton = (LinearLayout) getActivity().findViewById(R.id.licenseEntry);
licenseEntryButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
licenseEntry();
}
});
LinearLayout bugEntryButton = (LinearLayout) getActivity().findViewById(R.id.bugEntry);
bugEntryButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
bugEntry();
}
});
LinearLayout howtoEntryButton = (LinearLayout) getActivity().findViewById(R.id.howtoEntry);
howtoEntryButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
howtoEntry();
}
});
LinearLayout missingCodeEntryButton = (LinearLayout) getActivity().findViewById(R.id.missingCodeEntry);
missingCodeEntryButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
missingCodeEntry();
}
});
super.onStart();
}
//called when clicking on the version entry in the about fragment
//opens the GitLab repository
public void versionEntry(){
try{
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://gitlab.com/mmk2410/morse-converter-android"));
startActivity(browserIntent);
} catch(Exception e){
e.printStackTrace();
}
}
//called when clicking on the developer entry in the about fragment
//opens the website of Marcel Kapfer
public void developerEntry(){
try{
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://mmk2410.org"));
startActivity(browserIntent);
} catch(Exception e){
e.printStackTrace();
}
}
//called when clicking on the website entry in the about fragment
//opens the writtenMorse wiki page at phab.mmk2410.org
public void websiteEntry(){
try{
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://phab.mmk2410.org/w/writtenmorse/"));
startActivity(browserIntent);
} catch(Exception e){
e.printStackTrace();
}
}
//called when clicking on the contact entry in the about fragment
//opens mail app with mail to opensource@mmk2410.org
public void contactEntry(){
try{
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("mailto:opensource@mmk2410.org"));
startActivity(browserIntent);
} catch(Exception e){
e.printStackTrace();
}
}
//called when clicking on the license entry in the about fragment
//opens the license web page
public void licenseEntry(){
try{
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://gnu.org/copyleft/gpl.html"));
startActivity(browserIntent);
} catch(Exception e){
e.printStackTrace();
}
}
//called when clicking on the developer entry in the about fragment
//opens mail app with mail to opensource@mmk2410.org
public void bugEntry(){
try{
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("mailto:opensource@mmk2410.org?subject=writtenMorse Bug Report"));
startActivity(browserIntent);
} catch(Exception e){
e.printStackTrace();
}
}
//called when clicking on the developer entry in the about fragment
//opens the writtenMorse wiki page on phab.mmk2410.org
public void howtoEntry(){
try{
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://phab.mmk2410.org/w/writtenmorse/"));
startActivity(browserIntent);
} catch(Exception e){
e.printStackTrace();
}
}
//called when clicking on the developer entry in the about fragment
//opens mail app with mail to marcelmichaelkapfer@yahoo.co.nz
public void missingCodeEntry(){
try{
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("mailto:opensource@mmk2410.org?subject=writtenMorse Missing Code"));
startActivity(browserIntent);
} catch(Exception e){
e.printStackTrace();
}
}
}

View File

@ -0,0 +1,145 @@
package de.marcelkapfer.morseconverter.fragments;
/*
This is a Android application for converting writtenMorse and normal morse code.
Copyright (C) 2014-2015 Marcel Michael Kapfer
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.
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.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Marcel Michael Kapfer
marcelmichaelkapfer@yahoo.co.nz
*/
import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v7.widget.CardView;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;
import de.marcelkapfer.morseconverter.MainActivity;
import de.marcelkapfer.morseconverter.R;
import de.marcelkapfer.morseconverter.engine.DecodeNormalMorseManager;
import de.marcelkapfer.morseconverter.engine.DecodeWrittenMorseManager;
import de.marcelkapfer.morseconverter.engine.EncodeNormalMorseManager;
import de.marcelkapfer.morseconverter.engine.EncodeWrittenMorseManager;
import de.marcelkapfer.morseconverter.intelligentCodeRecognization.NormalMorseCodeRecognization;
import de.marcelkapfer.morseconverter.intelligentCodeRecognization.WrittenMorseCodeRecognization;
/**
* Created by mmk on 2/14/15.
*/
public class MainFragment extends Fragment{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
return inflater.inflate(R.layout.fragment_main, container, false);
}
@Override
public void onStart() {
LinearLayout writtenMorseCopy = (LinearLayout) getActivity().findViewById(R.id.copyWrittenMorse);
writtenMorseCopy.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
copyWrittenMorse(getActivity());
}
});
LinearLayout writtenMorseShare = (LinearLayout) getActivity().findViewById(R.id.shareWrittenMorse);
writtenMorseShare.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
shareWrittenMorse(getActivity());
}
});
EditText input = (EditText) getActivity().findViewById(R.id.editTextWrittenMorse);
final ConvertThread convertThread = new ConvertThread(getActivity());
input.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
convertThread.run();
}
});
super.onStart();
}
class ConvertThread extends Thread {
FragmentActivity fragmentActivity;
ConvertThread(FragmentActivity fA) {
fragmentActivity = fA;
}
public void run() {
writtenMorseConvert(fragmentActivity);
}
public void writtenMorseConvert(FragmentActivity fragmentActivity) {
try {
EditText input = (EditText) fragmentActivity.findViewById(R.id.editTextWrittenMorse);
TextView output = (TextView) fragmentActivity.findViewById(R.id.outputWrittenMorse);
CardView cardView = (CardView) fragmentActivity.findViewById(R.id.cardViewWrittenMorseOutput);
if (cardView.getVisibility() == View.INVISIBLE) {
cardView.setVisibility(View.VISIBLE);
}
String inputString = input.getText().toString();
if (WrittenMorseCodeRecognization.isCode(inputString)) {
output.setText(EncodeWrittenMorseManager.getEncodedString(inputString));
} else {
output.setText(DecodeWrittenMorseManager.getDecodedString(inputString));
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
public void copyWrittenMorse(FragmentActivity fragmentActivity){
TextView message = (TextView) fragmentActivity.findViewById(R.id.outputWrittenMorse);
MainActivity.copy(message.getText().toString(), fragmentActivity);
}
public void shareWrittenMorse(FragmentActivity fragmentActivity){
TextView message = (TextView) fragmentActivity.findViewById(R.id.outputWrittenMorse);
MainActivity.share(message.getText().toString(), fragmentActivity);
}
}

View File

@ -0,0 +1,145 @@
package de.marcelkapfer.morseconverter.fragments;
/*
This is a Android application for converting writtenMorse and normal morse code.
Copyright (C) 2014-2015 Marcel Michael Kapfer
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.
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.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Marcel Michael Kapfer
marcelmichaelkapfer@yahoo.co.nz
*/
import android.app.Activity;
import android.content.Context;
import android.inputmethodservice.KeyboardView;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v7.widget.CardView;
import android.text.Editable;
import android.text.TextWatcher;
import android.text.method.KeyListener;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;
import de.marcelkapfer.morseconverter.MainActivity;
import de.marcelkapfer.morseconverter.R;
import de.marcelkapfer.morseconverter.engine.DecodeNormalMorseManager;
import de.marcelkapfer.morseconverter.engine.EncodeNormalMorseManager;
import de.marcelkapfer.morseconverter.intelligentCodeRecognization.NormalMorseCodeRecognization;
/**
* Created by mmk on 2/14/15.
*/
public class MorseFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_morse, container, false);
}
@Override
public void onStart() {
LinearLayout normalMorseCopy = (LinearLayout) getActivity().findViewById(R.id.copyNormalMorse);
normalMorseCopy.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
copyNormalMorse(getActivity());
}
});
LinearLayout normalMorseShare = (LinearLayout) getActivity().findViewById(R.id.shareNormalMorse);
normalMorseShare.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
shareNormalMorse(getActivity());
}
});
EditText input = (EditText) getActivity().findViewById(R.id.editTextNormalMorse);
final ConvertThread convertThread = new ConvertThread(getActivity());
input.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
convertThread.run();
}
});
super.onStart();
}
class ConvertThread extends Thread {
FragmentActivity fragmentActivity;
ConvertThread(FragmentActivity fA) {
fragmentActivity = fA;
}
public void run() {
normalMorseConvert(fragmentActivity);
}
public void normalMorseConvert(FragmentActivity fragmentActivity) {
try {
EditText input = (EditText) fragmentActivity.findViewById(R.id.editTextNormalMorse);
TextView output = (TextView) fragmentActivity.findViewById(R.id.outputNormalMorse);
CardView cardView = (CardView) fragmentActivity.findViewById(R.id.cardViewNormalMorseOutput);
if (cardView.getVisibility() == View.INVISIBLE) {
cardView.setVisibility(View.VISIBLE);
}
String inputString = input.getText().toString();
if (NormalMorseCodeRecognization.isCode(inputString)) {
output.setText(EncodeNormalMorseManager.getEncodedString(inputString));
} else {
output.setText(DecodeNormalMorseManager.getDecodedString(inputString));
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
public void copyNormalMorse(FragmentActivity fragmentActivity) {
TextView message = (TextView) fragmentActivity.findViewById(R.id.outputNormalMorse);
MainActivity.copy(message.getText().toString(), fragmentActivity);
}
public void shareNormalMorse(FragmentActivity fragmentActivity) {
TextView message = (TextView) fragmentActivity.findViewById(R.id.outputNormalMorse);
MainActivity.share(message.getText().toString(), fragmentActivity);
}
}

View File

@ -0,0 +1,86 @@
package de.marcelkapfer.morseconverter.fragments;
import android.content.res.AssetManager;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import de.marcelkapfer.morseconverter.adapter.WrittenMorseCodeAdapter;
import de.marcelkapfer.morseconverter.R;
public class writtenMorseListFragment extends Fragment {
private RecyclerView mRecyclerView;
private RecyclerView.Adapter mAdapter;
private RecyclerView.LayoutManager mLayoutManager;
private String[] myLetter;
private String[] myCode;
private static final String TAG = "RecyclerViewFragment";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
View rootView = inflater.inflate(R.layout.fragment_written_morse_list, container, false);
rootView.setTag(TAG);
mRecyclerView = (RecyclerView) rootView.findViewById(R.id.wm_recycler);
mRecyclerView.setHasFixedSize(true);
mLayoutManager = new LinearLayoutManager(getActivity());
mRecyclerView.setLayoutManager(mLayoutManager);
getDataset();
mAdapter = new WrittenMorseCodeAdapter(myLetter, myCode);
mRecyclerView.setAdapter(mAdapter);
return rootView;
}
private void getDataset(){
ArrayList<String> letterset = new ArrayList<>();
ArrayList<String> codeset = new ArrayList<>();
String datastring = "";
AssetManager astmgr = getActivity().getAssets();
try {
InputStream data = astmgr.open("codes.txt");
StringBuilder buf = new StringBuilder();
BufferedReader in =
new BufferedReader(new InputStreamReader(data, "UTF-8"));
String str;
while ((str = in.readLine()) != null) {
buf.append(str);
}
in.close();
datastring =buf.toString();
} catch (IOException e) {
e.printStackTrace();
}
for(int c = 0; datastring.length() > 1; c++){
int pos = datastring.indexOf(";");
String datasubstring = datastring.substring(0, pos);
int subpos = datasubstring.indexOf(":");
letterset.add(datasubstring.substring(0, subpos));
codeset.add(datasubstring.substring(subpos + 1, pos));
datastring = datastring.substring(pos + 1);
}
letterset.add(":");
letterset.add(";");
codeset.add("111000");
codeset.add("101010");
myLetter = letterset.toArray(new String[letterset.size()]);
myCode = codeset.toArray(new String[letterset.size()]);
}
}

View File

@ -0,0 +1,60 @@
package de.marcelkapfer.morseconverter.intelligentCodeRecognization;
/*
This is a Java application for converting writtenMorse and normal morse code.
Copyright (C) 2014-2015 Marcel Michael Kapfer
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.
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.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Marcel Michael Kapfer
marcelmichaelkapfer@yahoo.co.nz
*/
/**
* Created by mmk on 5/31/15.
*/
public class NormalMorseCodeRecognization {
public static Boolean isCode(String input){
input = input.toLowerCase();
return !(input.contains("a") || input.contains("b") ||
input.contains("c") || input.contains("d") ||
input.contains("e") || input.contains("f") ||
input.contains("g") || input.contains("h") ||
input.contains("i") || input.contains("j") ||
input.contains("k") || input.contains("l") ||
input.contains("m") || input.contains("n") ||
input.contains("o") || input.contains("p") ||
input.contains("q") || input.contains("r") ||
input.contains("s") || input.contains("t") ||
input.contains("u") || input.contains("v") ||
input.contains("w") || input.contains("x") ||
input.contains("y") || input.contains("z") ||
input.contains("0") || input.contains("1") ||
input.contains("2") || input.contains("3") ||
input.contains("4") || input.contains("5") ||
input.contains("6") || input.contains("7") ||
input.contains("8") || input.contains("9") ||
input.contains("Ä") || input.contains("Ö") ||
input.contains("Ü") || input.contains("ß") ||
input.contains("$") || input.contains(",") ||
input.contains(":") || input.contains(";") ||
input.contains("!") || input.contains("?") ||
input.contains("+") || input.contains("_") ||
input.contains("(") || input.contains(")") ||
input.contains("=") || input.contains("/") ||
input.contains("@") || input.contains("'"));
}
}

View File

@ -0,0 +1,60 @@
package de.marcelkapfer.morseconverter.intelligentCodeRecognization;
/*
This is a Java application for converting writtenMorse and normal morse code.
Copyright (C) 2014-2015 Marcel Michael Kapfer
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.
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.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Marcel Michael Kapfer
marcelmichaelkapfer@yahoo.co.nz
*/
/**
* Created by mmk on 5/31/15.
*/
public class WrittenMorseCodeRecognization {
public static Boolean isCode(String input){
input = input.toLowerCase();
return !(input.contains("a") || input.contains("b") ||
input.contains("c") || input.contains("d") ||
input.contains("e") || input.contains("f") ||
input.contains("g") || input.contains("h") ||
input.contains("i") || input.contains("j") ||
input.contains("k") || input.contains("l") ||
input.contains("m") || input.contains("n") ||
input.contains("o") || input.contains("p") ||
input.contains("q") || input.contains("r") ||
input.contains("s") || input.contains("t") ||
input.contains("u") || input.contains("v") ||
input.contains("w") || input.contains("x") ||
input.contains("y") || input.contains("z") ||
input.contains("2") || input.contains("3") ||
input.contains("4") || input.contains("5") ||
input.contains("6") || input.contains("7") ||
input.contains("8") || input.contains("9") ||
input.contains("Ä") || input.contains("Ö") ||
input.contains("Ü") || input.contains("ß") ||
input.contains(".") || input.contains(",") ||
input.contains(":") || input.contains(";") ||
input.contains("!") || input.contains("?") ||
input.contains("-") || input.contains("_") ||
input.contains("(") || input.contains(")") ||
input.contains("=") || input.contains("/") ||
input.contains("@") || input.contains("'") ||
input.contains("$"));
}
}

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape>
<solid android:color="@color/colorPrimary"></solid>
<size android:height="150dp"></size>
</shape>
</item>
</selector>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 161 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 650 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 513 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

After

Width:  |  Height:  |  Size: 103 KiB

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape>
<solid android:color="@color/colorPrimary"></solid>
<size android:height="80dp"></size>
</shape>
</item>
</selector>

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape>
<solid android:color="@color/colorPrimary"></solid>
<size android:height="130dp"></size>
</shape>
</item>
</selector>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 142 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 449 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 383 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 63 KiB

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape>
<solid android:color="@color/colorPrimary"></solid>
<size android:height="140dp"></size>
</shape>
</item>
</selector>

View File

@ -0,0 +1,31 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
This is a Android application for converting writtenMorse and normal morse code.
Copyright (C) 2014-2015 Marcel Michael Kapfer
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.
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.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Marcel Michael Kapfer
marcelmichaelkapfer@yahoo.co.nz
-->
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="@color/ripple_material_light">
<item>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="1dp" />
<solid android:color="@color/cardview_light_background"/>
</shape>
</item>
</ripple>

View File

@ -0,0 +1,31 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
This is a Android application for converting writtenMorse and normal morse code.
Copyright (C) 2014-2015 Marcel Michael Kapfer
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.
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.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Marcel Michael Kapfer
marcelmichaelkapfer@yahoo.co.nz
-->
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="@color/ripple_material_light">
<item>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="1dp" />
<solid android:color="@color/white"/>
</shape>
</item>
</ripple>

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item >
<shape>
<solid android:color="@color/colorPrimary"/>
<size android:height="200dp"></size>
</shape>
</item>
</selector>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 174 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 827 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 666 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

After

Width:  |  Height:  |  Size: 150 KiB

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item >
<shape>
<solid android:color="@color/colorPrimary"/>
<size android:height="250dp"></size>
</shape>
</item>
</selector>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 208 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 969 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 217 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.3 KiB

After

Width:  |  Height:  |  Size: 259 KiB

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item >
<shape>
<solid android:color="@color/colorPrimary"/>
<size android:height="300dp"></size>
</shape>
</item>
</selector>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.6 KiB

After

Width:  |  Height:  |  Size: 261 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 233 B

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item >
<shape>
<solid android:color="@color/colorPrimary"/>
<size android:height="120dp"></size>
</shape>
</item>
</selector>

View File

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
This is a Android application for converting writtenMorse and normal morse code.
Copyright (C) 2014-2015 Marcel Michael Kapfer
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.
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.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Marcel Michael Kapfer
marcelmichaelkapfer@yahoo.co.nz
-->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/ripple_material_light" android:state_pressed="true"/>
<item android:drawable="@color/cardview_light_background"/>
</selector>

Binary file not shown.

After

Width:  |  Height:  |  Size: 154 KiB

View File

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
This is a Android application for converting writtenMorse and normal morse code.
Copyright (C) 2014-2015 Marcel Michael Kapfer
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.
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.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Marcel Michael Kapfer
marcelmichaelkapfer@yahoo.co.nz
-->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/ripple_material_light" android:state_pressed="true"/>
<item android:drawable="@color/white"/>
</selector>

View File

@ -0,0 +1,236 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
This is a Android application for converting writtenMorse and normal morse code.
Copyright (C) 2014-2015 Marcel Michael Kapfer
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.
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.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Marcel Michael Kapfer
marcelmichaelkapfer@yahoo.co.nz
-->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/about"
android:layout_width="wrap_content"
android:layout_height="match_parent"
tools:context=".AboutActivity$PlaceholderFragment">
<RelativeLayout
android:id="@+id/wml_back"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/blue_background" />
<RelativeLayout
style="@style/LinearLayoutListContainer"
android:background="@color/white"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="30dp"
android:layout_marginRight="125dp"
android:layout_marginBottom="50dp"
android:layout_marginLeft="125dp"
android:layout_gravity="top"
android:elevation="2dp">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
style="@style/LinearLayoutList"
android:id="@+id/versionEntry"
android:clickable="true">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="16sp"
android:text="@string/sectionVersion"
android:textColor="@color/primary_text_default_material_light"
/>
<TextView
android:id="@+id/textView2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/aboutVersion"
android:textColor="@color/primary_text_default_material_light" />
</LinearLayout>
<LinearLayout
style="@style/LinearLayoutList"
android:id="@+id/developerEntry"
android:clickable="true">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="16sp"
android:text="@string/sectionDeveloper"
android:textColor="@color/primary_text_default_material_light"
/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/aboutDeveloper"
android:textColor="@color/primary_text_default_material_light" />
</LinearLayout>
<LinearLayout
style="@style/LinearLayoutList"
android:id="@+id/websiteEntry"
android:clickable="true">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="16sp"
android:text="@string/sectionWebsite"
android:textColor="@color/primary_text_default_material_light"
/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/aboutWebsite"
android:textColor="@color/primary_text_default_material_light" />
</LinearLayout>
<LinearLayout
style="@style/LinearLayoutList"
android:id="@+id/contactEntry"
android:clickable="true">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="16sp"
android:text="@string/sectionContact"
android:textColor="@color/primary_text_default_material_light"
/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/aboutContact"
android:textColor="@color/primary_text_default_material_light" />
</LinearLayout>
<LinearLayout
style="@style/LinearLayoutList"
android:id="@+id/licenseEntry"
android:clickable="true">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="16sp"
android:text="@string/sectionLicense"
android:textColor="@color/primary_text_default_material_light"
/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/aboutLicense"
android:textColor="@color/primary_text_default_material_light" />
</LinearLayout>
<LinearLayout
style="@style/LinearLayoutList"
android:id="@+id/bugEntry"
android:clickable="true">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="16sp"
android:text="@string/sectionBug"
android:textColor="@color/primary_text_default_material_light"
/>
<TextView
android:id="@+id/textView3"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/aboutBug"
android:textColor="@color/primary_text_default_material_light" />
</LinearLayout>
<LinearLayout
style="@style/LinearLayoutList"
android:id="@+id/howtoEntry"
android:clickable="true">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="16sp"
android:text="@string/sectionHow"
android:textColor="@color/primary_text_default_material_light"
/>
<TextView
android:id="@+id/textView4"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/aboutHow"
android:textColor="@color/primary_text_default_material_light" />
</LinearLayout>
<LinearLayout
style="@style/LinearLayoutList"
android:paddingBottom="70dp"
android:id="@+id/missingCodeEntry"
android:clickable="true">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="16sp"
android:text="@string/sectionMissing"
android:textColor="@color/primary_text_default_material_light"
/>
<TextView
android:id="@+id/textView5"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/aboutMissing"
android:textColor="@color/primary_text_default_material_light"/>
</LinearLayout>
</LinearLayout>
</ScrollView>
</RelativeLayout>
</RelativeLayout>

View File

@ -0,0 +1,155 @@
<?xml version="1.0" encoding="utf-8"?><!--
This is a Android application for converting writtenMorse and normal morse code.
Copyright (C) 2014-2015 Marcel Michael Kapfer
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.
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.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Marcel Michael Kapfer
marcelmichaelkapfer@yahoo.co.nz
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:animateLayoutChanges="true"
android:orientation="vertical"
tools:context=".MainActivity">
<ScrollView
android:id="@+id/scrollView2"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:id="@+id/card_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="top">
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="24dp"
android:layout_marginTop="24dp"
android:gravity="center"
android:minHeight="142dp"
android:orientation="vertical">
<EditText
android:id="@+id/editTextWrittenMorse"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:background="@color/cardview_light_background"
android:ems="10"
android:hint="@string/edit_message"
android:minLines="5"
android:scrollbars="vertical"
android:singleLine="false"
android:textColor="@color/primary_text_default_material_light"
android:textColorHint="@color/hint_foreground_material_light" />
</LinearLayout>
</android.support.v7.widget.CardView>
<android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:id="@+id/cardViewWrittenMorseOutput"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="24dp"
android:layout_marginTop="24dp"
android:layout_marginLeft="80dp"
android:layout_marginRight="80dp"
android:visibility="invisible"
card_view:cardCornerRadius="2dp">
<LinearLayout
android:id="@+id/linearLayout2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="24dp"
android:gravity="center"
android:minHeight="48dp"
android:orientation="vertical">
<TextView
android:id="@+id/outputWrittenMorse"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:background="@color/cardview_light_background"
android:gravity="center_vertical"
android:hint="@string/output_message"
android:minHeight="64dp"
android:singleLine="false"
android:textColor="@color/primary_text_default_material_light"
android:textSize="16sp" />
<View style="@style/Divider" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="48dp"
android:layout_gravity="right"
android:layout_marginBottom="8dp"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_marginTop="8dp"
android:baselineAligned="false"
android:gravity="center"
android:orientation="horizontal">
<LinearLayout
android:id="@+id/copyWrittenMorse"
style="@style/LinearLayoutButton"
android:layout_marginRight="8dp"
android:clickable="true">
<TextView
style="@style/LinearLayoutButtonText"
android:text="@string/button_copy" />
</LinearLayout>
<LinearLayout
android:id="@+id/shareWrittenMorse"
style="@style/LinearLayoutButton"
android:clickable="true">
<TextView
style="@style/LinearLayoutButtonText"
android:text="@string/button_share" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
</android.support.v7.widget.CardView>
</LinearLayout>
</ScrollView>
</LinearLayout>

View File

@ -0,0 +1,159 @@
<?xml version="1.0" encoding="utf-8"?><!--
This is a Android application for converting writtenMorse and normal morse code.
Copyright (C) 2014-2015 Marcel Michael Kapfer
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.
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.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Marcel Michael Kapfer
marcelmichaelkapfer@yahoo.co.nz
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:animateLayoutChanges="true"
android:gravity="top"
android:orientation="vertical"
android:scrollbars="vertical"
tools:context=".MainActivity">
<ScrollView
android:id="@+id/scrollView3"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:id="@+id/card_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="top">
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="24dp"
android:layout_marginTop="24dp"
android:gravity="center"
android:minHeight="142dp"
android:orientation="vertical">
<EditText
android:id="@+id/editTextNormalMorse"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:background="@color/cardview_light_background"
android:ems="10"
android:hint="@string/edit_message"
android:minLines="5"
android:scrollbars="vertical"
android:singleLine="false"
android:textColor="@color/primary_text_default_material_light"
android:textColorHint="@color/hint_foreground_material_light" />
</LinearLayout>
</android.support.v7.widget.CardView>
<android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:id="@+id/cardViewNormalMorseOutput"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="24dp"
android:layout_marginTop="24dp"
android:layout_marginLeft="80dp"
android:layout_marginRight="80dp"
android:visibility="invisible"
card_view:cardCornerRadius="2dp">
<LinearLayout
android:id="@+id/linearLayout2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="24dp"
android:gravity="center"
android:minHeight="48dp"
android:orientation="vertical">
<TextView
android:id="@+id/outputNormalMorse"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:background="@color/cardview_light_background"
android:gravity="center_vertical"
android:hint="@string/output_message"
android:minHeight="64dp"
android:scrollbars="vertical"
android:singleLine="false"
android:textColor="@color/primary_text_default_material_light"
android:textSize="16sp" />
<View style="@style/Divider" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="48dp"
android:layout_gravity="right"
android:layout_marginBottom="8dp"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_marginTop="8dp"
android:baselineAligned="false"
android:gravity="center"
android:orientation="horizontal">
<LinearLayout
android:id="@+id/copyNormalMorse"
style="@style/LinearLayoutButton"
android:layout_marginRight="8dp"
android:clickable="true">
<TextView
style="@style/LinearLayoutButtonText"
android:text="@string/button_copy" />
</LinearLayout>
<LinearLayout
android:id="@+id/shareNormalMorse"
style="@style/LinearLayoutButton"
android:clickable="true">
<TextView
style="@style/LinearLayoutButtonText"
android:text="@string/button_share" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
</android.support.v7.widget.CardView>
</LinearLayout>
</ScrollView>
</LinearLayout>

View File

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<RelativeLayout
android:id="@+id/wml_back"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/blue_background" />
<android.support.v7.widget.RecyclerView
android:id="@+id/wm_recycler"
android:background="@color/white"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginTop="30dp"
android:layout_marginRight="125dp"
android:layout_marginBottom="50dp"
android:layout_marginLeft="125dp"
android:layout_gravity="top"
android:elevation="2dp"/>
</RelativeLayout>

View File

@ -0,0 +1,219 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
This is a Android application for converting writtenMorse and normal morse code.
Copyright (C) 2014-2015 Marcel Michael Kapfer
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.
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.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Marcel Michael Kapfer
marcelmichaelkapfer@yahoo.co.nz
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/about"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#fff"
tools:context=".AboutActivity$PlaceholderFragment">
<ScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/scrollView">
<LinearLayout
style="@style/LinearLayoutListContainer"
android:layout_height="fill_parent"
android:layout_gravity="top">
<LinearLayout
style="@style/LinearLayoutList"
android:id="@+id/versionEntry"
android:clickable="true">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="16sp"
android:text="@string/sectionVersion"
android:textColor="@color/primary_text_default_material_light"
/>
<TextView
android:id="@+id/textView2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/aboutVersion"
android:textColor="@color/primary_text_default_material_light" />
</LinearLayout>
<LinearLayout
style="@style/LinearLayoutList"
android:id="@+id/developerEntry"
android:clickable="true">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="16sp"
android:text="@string/sectionDeveloper"
android:textColor="@color/primary_text_default_material_light"
/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/aboutDeveloper"
android:textColor="@color/primary_text_default_material_light" />
</LinearLayout>
<LinearLayout
style="@style/LinearLayoutList"
android:id="@+id/websiteEntry"
android:clickable="true">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="16sp"
android:text="@string/sectionWebsite"
android:textColor="@color/primary_text_default_material_light"
/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/aboutWebsite"
android:textColor="@color/primary_text_default_material_light" />
</LinearLayout>
<LinearLayout
style="@style/LinearLayoutList"
android:id="@+id/contactEntry"
android:clickable="true">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="16sp"
android:text="@string/sectionContact"
android:textColor="@color/primary_text_default_material_light"
/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/aboutContact"
android:textColor="@color/primary_text_default_material_light" />
</LinearLayout>
<LinearLayout
style="@style/LinearLayoutList"
android:id="@+id/licenseEntry"
android:clickable="true">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="16sp"
android:text="@string/sectionLicense"
android:textColor="@color/primary_text_default_material_light"
/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/aboutLicense"
android:textColor="@color/primary_text_default_material_light" />
</LinearLayout>
<LinearLayout
style="@style/LinearLayoutList"
android:id="@+id/bugEntry"
android:clickable="true">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="16sp"
android:text="@string/sectionBug"
android:textColor="@color/primary_text_default_material_light"
/>
<TextView
android:id="@+id/textView3"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/aboutBug"
android:textColor="@color/primary_text_default_material_light" />
</LinearLayout>
<LinearLayout
style="@style/LinearLayoutList"
android:id="@+id/howtoEntry"
android:clickable="true">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="16sp"
android:text="@string/sectionHow"
android:textColor="@color/primary_text_default_material_light"
/>
<TextView
android:id="@+id/textView4"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/aboutHow"
android:textColor="@color/primary_text_default_material_light" />
</LinearLayout>
<LinearLayout
style="@style/LinearLayoutList"
android:paddingBottom="70dp"
android:id="@+id/missingCodeEntry"
android:clickable="true">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="16sp"
android:text="@string/sectionMissing"
android:textColor="@color/primary_text_default_material_light"
/>
<TextView
android:id="@+id/textView5"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/aboutMissing"
android:textColor="@color/primary_text_default_material_light"/>
</LinearLayout>
</LinearLayout>
</ScrollView>
</LinearLayout>

View File

@ -1,7 +0,0 @@
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="de.marcelkapfer.myfirstapp.DisplayMessageActivity"
tools:ignore="MergeRootFrame" />

View File

@ -1,36 +0,0 @@
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- As the main content view, the view below consumes the entire
space available using match_parent in both dimensions. -->
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="de.marcelkapfer.myfirstapp.MainActivity"
tools:ignore="MergeRootFrame" />
<!-- android:layout_gravity="start" tells DrawerLayout to treat
this as a sliding drawer on the left side for left-to-right
languages and on the right side for right-to-left languages.
The drawer is given a fixed width in dp and extends the full height of
the container. A solid background is used for contrast
with the content view. -->
<ListView
android:id="@+id/left_drawer"
android:layout_width="300dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:choiceMode="singleChoice"
android:divider="@android:color/transparent"
android:dividerHeight="0dp"
android:background="#fff"/>
</android.support.v4.widget.DrawerLayout>

View File

@ -0,0 +1,24 @@
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:paddingRight="32dp"
android:paddingLeft="32dp"
android:layout_height="64dp">
<TextView
android:id="@+id/letterfield"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="@string/hello_world"
android:gravity="center_vertical"
android:textColor="@color/primary_text_default_material_light"/>
<TextView
android:id="@+id/codefield"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="@string/hello_world"
android:layout_gravity="right"
android:gravity="center_vertical"
android:textColor="@color/primary_text_default_material_light"/>
</FrameLayout>

View File

@ -1,27 +0,0 @@
<!--
Copyright 2013 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceListItemSmall"
android:gravity="center_vertical"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:textColor="#000"
android:background="?android:attr/activatedBackgroundIndicator"
android:minHeight="?android:attr/listPreferredItemHeightSmall"/>

View File

@ -1,22 +1,225 @@
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
<?xml version="1.0" encoding="utf-8"?>
<!--
This is a Android application for converting writtenMorse and normal morse code.
Copyright (C) 2014-2015 Marcel Michael Kapfer
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.
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.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Marcel Michael Kapfer
marcelmichaelkapfer@yahoo.co.nz
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/about"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".AboutActivity$PlaceholderFragment" >
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#fff"
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:text="@string/about1" />
android:layout_gravity="top"
android:layout_alignParentTop="true"
android:layout_alignTop="@id/about"
android:layout_alignWithParentIfMissing="true"
android:layout_marginTop="-50dp"
tools:context=".AboutActivity$PlaceholderFragment">
</RelativeLayout>
<ScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/scrollView">
<LinearLayout
style="@style/LinearLayoutListContainer"
android:layout_height="fill_parent"
android:layout_gravity="top">
<LinearLayout
style="@style/LinearLayoutList"
android:id="@+id/versionEntry"
android:clickable="true">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="16sp"
android:text="@string/sectionVersion"
android:textColor="@color/primary_text_default_material_light"
/>
<TextView
android:id="@+id/textView2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/aboutVersion"
android:textColor="@color/primary_text_default_material_light" />
</LinearLayout>
<LinearLayout
style="@style/LinearLayoutList"
android:id="@+id/developerEntry"
android:clickable="true">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="16sp"
android:text="@string/sectionDeveloper"
android:textColor="@color/primary_text_default_material_light"
/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/aboutDeveloper"
android:textColor="@color/primary_text_default_material_light" />
</LinearLayout>
<LinearLayout
style="@style/LinearLayoutList"
android:id="@+id/websiteEntry"
android:clickable="true">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="16sp"
android:text="@string/sectionWebsite"
android:textColor="@color/primary_text_default_material_light"
/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/aboutWebsite"
android:textColor="@color/primary_text_default_material_light" />
</LinearLayout>
<LinearLayout
style="@style/LinearLayoutList"
android:id="@+id/contactEntry"
android:clickable="true">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="16sp"
android:text="@string/sectionContact"
android:textColor="@color/primary_text_default_material_light"
/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/aboutContact"
android:textColor="@color/primary_text_default_material_light" />
</LinearLayout>
<LinearLayout
style="@style/LinearLayoutList"
android:id="@+id/licenseEntry"
android:clickable="true">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="16sp"
android:text="@string/sectionLicense"
android:textColor="@color/primary_text_default_material_light"
/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/aboutLicense"
android:textColor="@color/primary_text_default_material_light" />
</LinearLayout>
<LinearLayout
style="@style/LinearLayoutList"
android:id="@+id/bugEntry"
android:clickable="true">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="16sp"
android:text="@string/sectionBug"
android:textColor="@color/primary_text_default_material_light"
/>
<TextView
android:id="@+id/textView3"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/aboutBug"
android:textColor="@color/primary_text_default_material_light" />
</LinearLayout>
<LinearLayout
style="@style/LinearLayoutList"
android:id="@+id/howtoEntry"
android:clickable="true">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="16sp"
android:text="@string/sectionHow"
android:textColor="@color/primary_text_default_material_light"
/>
<TextView
android:id="@+id/textView4"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/aboutHow"
android:textColor="@color/primary_text_default_material_light" />
</LinearLayout>
<LinearLayout
style="@style/LinearLayoutList"
android:paddingBottom="70dp"
android:id="@+id/missingCodeEntry"
android:clickable="true">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="16sp"
android:text="@string/sectionMissing"
android:textColor="@color/primary_text_default_material_light"
/>
<TextView
android:id="@+id/textView5"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/aboutMissing"
android:textColor="@color/primary_text_default_material_light"/>
</LinearLayout>
</LinearLayout>
</ScrollView>
</LinearLayout>

View File

@ -1,26 +0,0 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/display_message_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="10dp" >
<TextView
android:id="@+id/editText1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:hint="@string/output_message"
android:textIsSelectable="true" >
<requestFocus />
</TextView>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:onClick="encode"
android:text="@string/share" />
</LinearLayout>

View File

@ -1,57 +1,152 @@
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
<?xml version="1.0" encoding="utf-8"?><!--
This is a Android application for converting writtenMorse and normal morse code.
Copyright (C) 2014-2015 Marcel Michael Kapfer
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.
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.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Marcel Michael Kapfer
marcelmichaelkapfer@yahoo.co.nz
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical" >
android:layout_height="match_parent"
android:animateLayoutChanges="true"
android:orientation="vertical"
tools:context=".MainActivity">
<LinearLayout
<ScrollView
android:id="@+id/scrollView2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/linearLayout1" >
android:layout_height="match_parent">
<EditText
android:id="@+id/edit_message"
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:hint="@string/edit_message"
android:padding="10dp"
android:scrollbars="vertical" >
</EditText>
</LinearLayout>
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
style="?android:attr/buttonBarStyle"
android:id="@+id/linearLayout1"
android:layout_width="fill_parent"
android:layout_height="48dp"
android:layout_alignParentBottom="true"
android:background="@drawable/actionbar"
android:fitsSystemWindows="true"
android:gravity="center"
android:minHeight="48dp"
android:orientation="horizontal" >
<android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:id="@+id/card_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="top">
<Button
style="?android:attr/buttonBarButtonStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:onClick="decode"
android:text="@string/button_decode"
android:textColor="#FFFFFF"
android:textColorLink="#FFFFFF" />
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="24dp"
android:layout_marginTop="24dp"
android:gravity="center"
android:minHeight="142dp"
android:orientation="vertical">
<Button
style="?android:attr/buttonBarButtonStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:onClick="encode"
android:text="@string/button_encode"
android:textColor="#FFFFFF" />
</LinearLayout>
<EditText
android:id="@+id/editTextWrittenMorse"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:background="@color/cardview_light_background"
android:ems="10"
android:hint="@string/edit_message"
android:minLines="5"
android:scrollbars="vertical"
android:singleLine="false"
android:textColor="@color/primary_text_default_material_light"
android:textColorHint="@color/hint_foreground_material_light" />
</RelativeLayout>
</LinearLayout>
</android.support.v7.widget.CardView>
<android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:id="@+id/cardViewWrittenMorseOutput"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="8dp"
android:visibility="invisible"
card_view:cardCornerRadius="2dp">
<LinearLayout
android:id="@+id/linearLayout2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="24dp"
android:gravity="center"
android:minHeight="48dp"
android:orientation="vertical">
<TextView
android:id="@+id/outputWrittenMorse"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:background="@color/cardview_light_background"
android:gravity="center_vertical"
android:hint="@string/output_message"
android:minHeight="64dp"
android:singleLine="false"
android:textColor="@color/primary_text_default_material_light"
android:textSize="16sp" />
<View style="@style/Divider" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="48dp"
android:layout_gravity="right"
android:layout_marginBottom="8dp"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_marginTop="8dp"
android:baselineAligned="false"
android:gravity="center"
android:orientation="horizontal">
<LinearLayout
android:id="@+id/copyWrittenMorse"
style="@style/LinearLayoutButton"
android:layout_marginRight="8dp"
android:clickable="true">
<TextView
style="@style/LinearLayoutButtonText"
android:text="@string/button_copy" />
</LinearLayout>
<LinearLayout
android:id="@+id/shareWrittenMorse"
style="@style/LinearLayoutButton"
android:clickable="true">
<TextView
style="@style/LinearLayoutButtonText"
android:text="@string/button_share" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
</android.support.v7.widget.CardView>
</LinearLayout>
</ScrollView>
</LinearLayout>

View File

@ -1,61 +1,155 @@
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
<?xml version="1.0" encoding="utf-8"?><!--
This is a Android application for converting writtenMorse and normal morse code.
Copyright (C) 2014-2015 Marcel Michael Kapfer
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.
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.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Marcel Michael Kapfer
marcelmichaelkapfer@yahoo.co.nz
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/morse"
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical" >
android:layout_height="match_parent"
android:animateLayoutChanges="true"
android:gravity="top"
android:orientation="vertical"
android:scrollbars="vertical"
tools:context=".MainActivity">
<LinearLayout
<ScrollView
android:id="@+id/scrollView3"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/linearLayout2" >
android:layout_height="match_parent">
<EditText
android:id="@+id/edit_message"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:hint="@string/edit_message"
android:padding="10dp"
android:scrollbars="vertical" >
</EditText>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<LinearLayout
android:id="@+id/linearLayout2"
style="?android:attr/buttonBarStyle"
android:layout_width="fill_parent"
android:layout_height="48dp"
android:layout_alignParentBottom="true"
android:background="@drawable/actionbar"
android:fitsSystemWindows="true"
android:gravity="center"
android:minHeight="48dp"
android:orientation="horizontal" >
<android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:id="@+id/card_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="top">
<Button
style="?android:attr/buttonBarButtonStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:onClick="llm"
android:text="@string/button_decode"
android:textColor="#FFFFFF"
android:textColorLink="#FFFFFF" />
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="24dp"
android:layout_marginTop="24dp"
android:gravity="center"
android:minHeight="142dp"
android:orientation="vertical">
<Button
style="?android:attr/buttonBarButtonStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:onClick="mll"
android:text="@string/button_encode"
android:textColor="#FFFFFF" />
<EditText
android:id="@+id/editTextNormalMorse"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:background="@color/cardview_light_background"
android:ems="10"
android:hint="@string/edit_message"
android:minLines="5"
android:scrollbars="vertical"
android:singleLine="false"
android:textColor="@color/primary_text_default_material_light"
android:textColorHint="@color/hint_foreground_material_light" />
</LinearLayout>
</RelativeLayout>
</LinearLayout>
</android.support.v7.widget.CardView>
<android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:id="@+id/cardViewNormalMorseOutput"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="8dp"
android:visibility="invisible"
card_view:cardCornerRadius="2dp">
<LinearLayout
android:id="@+id/linearLayout2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="24dp"
android:gravity="center"
android:minHeight="48dp"
android:orientation="vertical">
<TextView
android:id="@+id/outputNormalMorse"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:background="@color/cardview_light_background"
android:gravity="center_vertical"
android:hint="@string/output_message"
android:minHeight="64dp"
android:scrollbars="vertical"
android:singleLine="false"
android:textColor="@color/primary_text_default_material_light"
android:textSize="16sp" />
<View style="@style/Divider" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="48dp"
android:layout_gravity="right"
android:layout_marginBottom="8dp"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_marginTop="8dp"
android:baselineAligned="false"
android:gravity="center"
android:orientation="horizontal">
<LinearLayout
android:id="@+id/copyNormalMorse"
style="@style/LinearLayoutButton"
android:layout_marginRight="8dp"
android:clickable="true">
<TextView
style="@style/LinearLayoutButtonText"
android:text="@string/button_copy" />
</LinearLayout>
<LinearLayout
android:id="@+id/shareNormalMorse"
style="@style/LinearLayoutButton"
android:clickable="true">
<TextView
style="@style/LinearLayoutButtonText"
android:text="@string/button_share" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
</android.support.v7.widget.CardView>
</LinearLayout>
</ScrollView>
</LinearLayout>

View File

@ -0,0 +1,13 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="top"
android:orientation="vertical"
android:scrollbars="vertical">
<android.support.v7.widget.RecyclerView
android:id="@+id/wm_recycler"
android:background="@color/white"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>

View File

@ -1,9 +0,0 @@
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:context="de.marcelkapfer.myfirstapp.AboutActivity" >
<item
android:id="@+id/action_settings"
android:orderInCategory="100"
android:title="@string/action_settings"/>
</menu>

View File

@ -1,10 +0,0 @@
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:context="de.marcelkapfer.myfirstapp.DisplayMessageActivity" >
<item
android:id="@+id/action_settings"
android:orderInCategory="100"
android:title="@string/action_settings"/>
</menu>

View File

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@+id/action_share"
android:title="@string/share"
android:icon="@drawable/ic_action_share"
android:showAsAction="always"/>
</menu>

View File

@ -1,7 +0,0 @@
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:context="de.marcelkapfer.myfirstapp.MainActivity" >
</menu>

View File

@ -1,4 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
</menu>

View File

@ -1,33 +1,52 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
This is a Android application for converting writtenMorse and normal morse code.
Copyright (C) 2014-2015 Marcel Michael Kapfer
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.
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.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Marcel Michael Kapfer
marcelmichaelkapfer@yahoo.co.nz
-->
<!-- German translations -->
<resources>
<string name="app_name">Morse Converter</string>
<string name="action_settings">Einstellungen</string>
<string name="edit_message">Geben Sie einen Text ein</string>
<string name="button_decode">Verschlüsseln</string>
<string name="button_encode">Entschlüsseln</string>
<string name="title_activity_display_message">Ihr Text</string>
<string name="hello_world">Hallo Welt</string>
<string name="action_search">Suche</string>
<string name="output_message">Ihr Text</string>
<string name="share">Teilen</string>
<string name="send_to">Teilen Sie Ihren Text:</string>
<string name="title_activity_about">Über</string>
<string name="title_section1">Version</string>
<string name="title_section2">Entwickler</string>
<string name="title_section3">Spenden</string>
<string name="about1">Über die App \nVersion: 1.0.0 11. Dezember 2014 \Entwickler: Marcel Michael Kapfer \nWebsite: marcel-kapfer.de/projects/morse/ \nKontakt: marcelmichaelkapfer@yahoo.co.nz \nLizens: GNU GPL v3.0
\n \nFehler \nWenn Du einen Fehler gefunden hast, schreibe mit bitte ein Email an marcelmichaelkapfer@yahoo.co.nz mit einer kurzen Problembeschreibung.
\n \nVerwendung \nDu kannst eine ausführliche Anwendung auf marcel-kapfer.de/projects/morse/index.html#howto_android finden.
\n \nFehlender Code \nWenn du auf einen fehlenden Code aufmerksam geworden bist, dann schreibe eine Email an marcelmichaelkapfer@yahoo.co.nz.</string>
<string name="about">Über</string>
<string name="drawer_open">Navigationsmenü öffnen</string>
<string name="drawer_close">Navigationsmenü schließen</string>
<string-array name="menu_array">
<item>writtenMorse</item>
<item>Normal Morse</item>
<item>Über</item>
</string-array>
<string name="normalMorse">Normales Morse</string>
<string name="aboutBug">Wenn Du einen Fehler gefunden hast, schreibe mir bitte ein E-Mail an opensource@mmk2410.org</string>
<string name="aboutHow">Du kannst eine ausführliche Anleitung auf https://phab.mmk2410.org/w/writtenmorse/ finden.</string>
<string name="aboutMissing">Wenn Du auf einen fehlenden Code aufmerksam geworden bist, dann schreibe eine E-Mail an opensource@mmk2410.org.</string>
<string name="aboutVersion">2.4.1 \n17. September 2017</string>
<string name="sectionBug">Fehler</string>
<string name="sectionContact">Kontakt</string>
<string name="sectionDeveloper">Entwickler</string>
<string name="sectionHow">Anleitung</string>
<string name="sectionLicense">Lizenz</string>
<string name="sectionMissing">Fehlender Code</string>
<!--Output Text Buttons-->
<string name="button_share">TEILEN</string>
<string name="button_copy">KOPIEREN</string>
<!--Donate Dialog-->
<string name="donate_title">Unterstütze den Entwickler</string>
</resources>

View File

@ -1,20 +0,0 @@
<resources>
<!--
Base application theme, dependent on API level. This theme is replaced
by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
-->
<style name="AppBaseTheme" parent="@android:style/Theme.Holo.Light">
<!--
Theme customizations available in newer API levels than 13 can go in
res/values-vXX/styles.xml, while customizations related to
backward-compatibility can go here.
-->
</style>
<!-- Application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
<!-- All customizations that are NOT specific to a particular API-level can go here. -->
</style>
</resources>

View File

@ -1,26 +1,89 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
This is a Android application for converting writtenMorse and normal morse code.
Copyright (C) 2014-2015 Marcel Michael Kapfer
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.
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.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Marcel Michael Kapfer
marcelmichaelkapfer@yahoo.co.nz
-->
<resources>
<!--
Base application theme, dependent on API level. This theme is replaced
by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
-->
<style name="AppBaseTheme" parent="@android:style/Theme.Holo.Light">
<!-- Base application theme. -->
<style name="AppTheme" parent="MaterialNavigationDrawerTheme.Light.DarkActionBar.TranslucentKitKatStatusBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorPrimary</item>
<item name="drawerType">@integer/DRAWERTYPE_IMAGE</item>
<item name="rippleBackport">true</item>
<item name="android:windowTranslucentStatus">true</item>
<item name="android:windowTranslucentNavigation">true</item>
<item name="android:windowIsTranslucent">true</item>
<!--
Theme customizations available in newer API levels can go in
res/values-vXX/styles.xml, while customizations related to
backward-compatibility can go here.
-->
</style>
<!-- Application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
<item name="android:windowTranslucentStatus">true</item>
<item name="android:windowTranslucentNavigation">true</item>
<item name="android:windowIsTranslucent">true</item>
<!-- All customizations that are NOT specific to a particular API-level can go here. -->
<style name="LinearLayoutList">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:paddingTop">16dp</item>
<item name="android:paddingBottom">20dp</item>
<item name="android:paddingLeft">16dp</item>
<item name="android:paddingRight">16dp</item>
<item name="android:gravity">center</item>
<item name="android:orientation">vertical</item>
<item name="android:background">@drawable/linearlayout_action</item>
<item name="android:src">@color/white</item>
</style>
</resources>
<style name="LinearLayoutListContainer">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:orientation">vertical</item>
<item name="android:layout_marginTop">8dp</item>
<item name="android:layout_marginBottom">8dp</item>
</style>
<style name="Divider">
<item name="android:layout_width">fill_parent</item>
<item name="android:layout_height">1dp</item>
<item name="android:height">1dp</item>
<item name="android:background">@color/ripple_material_light</item>
</style>
<style name="LinearLayoutButton">
<item name="android:layout_height">36dp</item>
<item name="android:layout_width">wrap_content</item>
<item name="android:minWidth">64dp</item>
<item name="android:layout_marginLeft">4dp</item>
<item name="android:layout_marginRight">4dp</item>
<item name="android:paddingRight">8dp</item>
<item name="android:paddingLeft">8dp</item>
<item name="android:gravity">center</item>
<item name="android:background">@drawable/button_action</item>
<item name="android:src">@color/cardview_light_background</item>
</style>
<style name="LinearLayoutButtonText">
<item name="android:textColor">@color/colorPrimary</item>
<item name="android:gravity">center</item>
<item name="android:layout_height">match_parent</item>
<item name="android:layout_width">match_parent</item>
</style>
<style name="RippleField">
<item name="android:background">@drawable/button_action</item>
<item name="android:src">@color/cardview_light_background</item>
</style>
</resources>

View File

@ -1,10 +1,28 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
This is a Android application for converting writtenMorse and normal morse code.
Copyright (C) 2014-2015 Marcel Michael Kapfer
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.
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.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Marcel Michael Kapfer
marcelmichaelkapfer@yahoo.co.nz
-->
<resources>
<!--
Example customization of dimensions originally defined in res/values/dimens.xml
<!-- Example customization of dimensions originally defined in res/values/dimens.xml
(such as screen margins) for screens with more than 820dp of available width. This
would include 7" and 10" devices in landscape (~960dp and ~1280dp respectively).
-->
would include 7" and 10" devices in landscape (~960dp and ~1280dp respectively). -->
<dimen name="activity_horizontal_margin">64dp</dimen>
</resources>

View File

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
This is a Android application for converting writtenMorse and normal morse code.
Copyright (C) 2014-2015 Marcel Michael Kapfer
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.
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.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Marcel Michael Kapfer
marcelmichaelkapfer@yahoo.co.nz
-->
<resources>
<color name="white">#ffffff</color>
<color name="colorPrimary">#2196F3</color>
<!--The primary dark color is the same as the primary color. Necessary out of a bug in the MaterialDesignDrawer 1.3.3 library.-->
<color name="colorPrimaryDark">#2196F3</color>
</resources>

View File

@ -1,7 +1,27 @@
<resources>
<?xml version="1.0" encoding="utf-8"?>
<!--
This is a Android application for converting writtenMorse and normal morse code.
Copyright (C) 2014-2015 Marcel Michael Kapfer
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.
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.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Marcel Michael Kapfer
marcelmichaelkapfer@yahoo.co.nz
-->
<resources>
<!-- Default screen margins, per the Android Design guidelines. -->
<dimen name="activity_horizontal_margin">16dp</dimen>
<dimen name="activity_vertical_margin">16dp</dimen>
</resources>

View File

@ -1,33 +1,63 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
This is a Android application for converting writtenMorse and normal morse code.
Copyright (C) 2014-2015 Marcel Michael Kapfer
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.
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.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Marcel Michael Kapfer
marcelmichaelkapfer@yahoo.co.nz
-->
<resources>
<string name="app_name">Morse Converter</string>
<string name="action_settings">Settings</string>
<string name="edit_message">Enter a Message</string>
<string name="button_decode">Encrypt</string>
<string name="button_encode">Decrypt</string>
<string name="title_activity_display_message">Your Message</string>
<string name="hello_world">Hello world!</string>
<string name="action_search">Search</string>
<string name="output_message">Your Message</string>
<string name="share">Share</string>
<string name="send_to">Share your text:</string>
<string name="title_activity_about">About Activity</string>
<string name="title_section1">Version</string>
<string name="title_section2">Developer</string>
<string name="title_section3">Donate</string>
<string name="about1">About \nVersion: 1.0.0 11th December 2014 \nDeveloper: Marcel Michael Kapfer \nWebsite: marcel-kapfer.de/projects/morse/ \nContact: marcelmichaelkapfer@yahoo.co.nz \nLicense: GNU GPL v3.0
\n \nBug \nIf you found a bug, please write me a mail to marcelmichaelkapfer@yahoo.co.nz with a short description of the problem.
\n \nHow to \nYou can find a detailed guide on marcel-kapfer.de/projects/morse/index.html#howto_android
\n \nMissing Code \nIf you discovered, that code is missing, then write me a mail to marcelmichaelkapfer@yahoo.co.nz and tell me about it.</string>
<!--About Section Names-->
<string name="sectionVersion" translatable="false">Version</string>
<string name="sectionDeveloper">Developer</string>
<string name="sectionWebsite" translatable="false">Website</string>
<string name="sectionContact">Contact</string>
<string name="sectionLicense">License</string>
<string name="sectionBug">Bug</string>
<string name="sectionHow">How to</string>
<string name="sectionMissing">Missing Code</string>
<!--About Texts-->
<string name="aboutVersion">2.4.1 \n17th September 2017</string>
<string name="aboutDeveloper" translatable="false">Marcel Kapfer</string>
<string name="aboutContact" translatable="false">opensource@mmk2410.org</string>
<string name="aboutLicense" translatable="false">GNU GPL v3.0</string>
<string name="aboutBug">If you found a bug, please write me a mail to opensource@mmk2410.org with a short description of the problem.</string>
<string name="aboutHow">You can find a detailed guide on https://phab.mmk2410.org/w/writtenmorse/</string>
<string name="aboutMissing">If you discovered, that code is missing, then write me a mail to opensource@mmk2410.org and tell me about it.</string>
<string name="aboutWebsite" translatable="false">https://phab.mmk2410.org/w/writtenmorse/</string>
<!--Drawer Titles-->
<string name="about">About</string>
<string name="drawer_open">Open navigation drawer</string>
<string name="drawer_close">Close navigation drawer</string>
<string-array name="menu_array">
<item>writtenMorse</item>
<item>Normal Morse</item>
<item>About</item>
</string-array>
<string name="normalMorse">Normal Morse</string>
<string name="writtenMorse" translatable="false">writtenMorse</string>
<!--Output Text Buttons-->
<string name="button_share">SHARE</string>
<string name="button_copy">COPY</string>
<!--Donate Dialog-->
<string name="donate_title">Donate the developer</string>
</resources>

Some files were not shown because too many files have changed in this diff Show More