diff --git a/.gitignore b/.gitignore index f913397..66eaa51 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,9 @@ -/.svn/ -/bin/ -/.classpath -/.pmd -/.project +.DS_Store +.gradle +/.idea/libraries +/.idea/workspace.xml +/build +/captures +/local.properties +/versions.properties +Thumbs.db \ No newline at end of file diff --git a/.idea/.name b/.idea/.name new file mode 100644 index 0000000..d6a959b --- /dev/null +++ b/.idea/.name @@ -0,0 +1 @@ +SpellIt \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..9a8b7e5 --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,22 @@ + + + + + \ No newline at end of file diff --git a/.idea/copyright/profiles_settings.xml b/.idea/copyright/profiles_settings.xml new file mode 100644 index 0000000..e7bedf3 --- /dev/null +++ b/.idea/copyright/profiles_settings.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml new file mode 100644 index 0000000..8d2df47 --- /dev/null +++ b/.idea/gradle.xml @@ -0,0 +1,18 @@ + + + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..ccc2a99 --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,37 @@ + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 0000000..3b31283 --- /dev/null +++ b/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..7965fcf --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..bf18285 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/AndroidManifest.xml b/AndroidManifest.xml deleted file mode 100644 index 50b95b6..0000000 --- a/AndroidManifest.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/SpellIt.iml b/SpellIt.iml new file mode 100644 index 0000000..b646eda --- /dev/null +++ b/SpellIt.iml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/.gitignore b/app/.gitignore new file mode 100644 index 0000000..796b96d --- /dev/null +++ b/app/.gitignore @@ -0,0 +1 @@ +/build diff --git a/app/app.iml b/app/app.iml new file mode 100644 index 0000000..0a6bfbf --- /dev/null +++ b/app/app.iml @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle new file mode 100644 index 0000000..fa6e179 --- /dev/null +++ b/app/build.gradle @@ -0,0 +1,27 @@ +apply plugin: 'com.android.application' +apply plugin: 'versionPlugin' + +android { + compileSdkVersion 8 + buildToolsVersion "21.1.2" + + defaultConfig { + applicationId "net.thauvin.erik.android.spellit" + minSdkVersion 3 + targetSdkVersion 3 + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' + } + } + + versionPlugin { + buildTypesMatcher = 'release' + supportBuildNumber = false + + fileNameFormat = '$projectName' + } +} diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..cb8016d --- /dev/null +++ b/app/src/main/AndroidManifest.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/net/thauvin/erik/android/spellit/SpellIt.java b/app/src/main/java/net/thauvin/erik/android/spellit/SpellIt.java similarity index 79% rename from src/net/thauvin/erik/android/spellit/SpellIt.java rename to app/src/main/java/net/thauvin/erik/android/spellit/SpellIt.java index 2db4155..82d3e88 100644 --- a/src/net/thauvin/erik/android/spellit/SpellIt.java +++ b/app/src/main/java/net/thauvin/erik/android/spellit/SpellIt.java @@ -1,7 +1,7 @@ /* * @(#)SpellIt.java * - * Copyright (c) 2008, Erik C. Thauvin (http://erik.thauvin.net/) + * Copyright (c) 2008-2012, Erik C. Thauvin (http://erik.thauvin.net/) * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -31,12 +31,13 @@ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $Id$ + * $Id: SpellIt.java 88 2010-08-05 23:29:48Z erik $ * */ package net.thauvin.erik.android.spellit; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import android.app.Activity; @@ -45,13 +46,19 @@ import android.content.Context; import android.content.DialogInterface; import android.content.SharedPreferences; import android.content.pm.PackageManager.NameNotFoundException; +import android.graphics.drawable.Drawable; import android.os.Bundle; import android.text.ClipboardManager; +import android.text.Editable; import android.text.TextUtils; +import android.text.TextWatcher; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; +import android.view.MotionEvent; import android.view.View; +import android.view.View.OnTouchListener; +import android.view.inputmethod.InputMethodManager; import android.widget.ArrayAdapter; import android.widget.AutoCompleteTextView; import android.widget.Button; @@ -62,7 +69,7 @@ import android.widget.Toast; * SpellIt is a alphabet speller for Android. * * @author Erik C. Thauvin - * @version $Revision$, $Date$ + * @version $Revision: 88 $, $Date: 2010-08-05 16:29:48 -0700 (Thu, 05 Aug 2010) $ * @created Oct 30, 2008 * @since 1.0 */ @@ -172,11 +179,55 @@ public class SpellIt extends Activity entryFld.setText(clip.getText()); } - entryFld.setOnClickListener(new Button.OnClickListener() + final Drawable imgX = getResources().getDrawable(android.R.drawable.presence_offline); + + manageClearButton(entryFld, imgX); + + entryFld.setOnTouchListener(new OnTouchListener() { - public void onClick(View view) + @Override + public boolean onTouch(View v, MotionEvent event) { - spellBtn.performClick(); + // Is there an X showing? + if (entryFld.getCompoundDrawables()[2] == null) + { + return false; + } + + // Only do this for up touches + if (event.getAction() != MotionEvent.ACTION_UP) + { + return false; + } + + // Is touch on our clear button? + if (event.getX() > entryFld.getWidth() - entryFld.getPaddingRight() - imgX.getIntrinsicWidth()) + { + entryFld.requestFocusFromTouch(); + entryFld.setText(""); + } + return false; + } + }); + + entryFld.addTextChangedListener(new TextWatcher() + { + @Override + public void onTextChanged(CharSequence s, int start, int before, int count) + { + manageClearButton(entryFld, imgX); + } + + @Override + public void afterTextChanged(Editable s) + { + + } + + @Override + public void beforeTextChanged(CharSequence s, int start, int count, int after) + { + } }); @@ -188,6 +239,9 @@ public class SpellIt extends Activity if (!TextUtils.isEmpty(newEntry)) { + final InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); + imm.hideSoftInputFromWindow(spellBtn.getWindowToken(), 0); + tapLbl.setText(R.string.main_tap_lbl_txt); if (!newEntry.equals(getEntry())) @@ -239,6 +293,24 @@ public class SpellIt extends Activity return mNato; } + /** + * Manages the clear button. + * + * @param view The text view. + * @param img The image. + */ + private void manageClearButton(TextView view, Drawable img) + { + if (view.getText().toString().equals("")) + { + view.setCompoundDrawablesWithIntrinsicBounds(view.getCompoundDrawables()[0], view.getCompoundDrawables()[1], null, view.getCompoundDrawables()[3]); + } + else + { + view.setCompoundDrawablesWithIntrinsicBounds(view.getCompoundDrawables()[0], view.getCompoundDrawables()[1], img, view.getCompoundDrawables()[3]); + } + } + /** * Called when the activity is first created. */ @@ -266,9 +338,9 @@ public class SpellIt extends Activity final LayoutInflater factory = LayoutInflater.from(this); final View aboutView = factory.inflate(R.layout.about, null); - new AlertDialog.Builder(this).setView(aboutView).setIcon(android.R.drawable.ic_dialog_info).setTitle( - getString(R.string.app_name) + ' ' + getVersionNumber()).setPositiveButton(R.string.alert_dialog_ok, - new DialogInterface.OnClickListener() + new AlertDialog.Builder(this).setView(aboutView).setIcon(android.R.drawable.ic_dialog_info) + .setTitle(getString(R.string.app_name) + ' ' + getVersionNumber()) + .setPositiveButton(R.string.alert_dialog_ok, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { @@ -374,16 +446,13 @@ public class SpellIt extends Activity private void setHistory(String history) { final String[] entries = TextUtils.split(history, ","); - for (final String entry : entries) - { - mHistory.add(entry); - } + Collections.addAll(mHistory, entries); } /** * Sets the NATO flag. * - * @param nato The new NATO flag. + * @param isNato The new NATO flag. */ private void setNato(boolean isNato) { @@ -406,7 +475,7 @@ public class SpellIt extends Activity } view.setText(String.valueOf(c).toUpperCase() + ' ' + getString(R.string.as_in_txt) + ' ' + getAlphabet(c - offset)); - } + } else if ((c < 58) && (c > 47)) { view.setText(getAlphabet(c - 22)); diff --git a/res/drawable/icon.png b/app/src/main/res/drawable/icon.png similarity index 100% rename from res/drawable/icon.png rename to app/src/main/res/drawable/icon.png diff --git a/app/src/main/res/layout/about.xml b/app/src/main/res/layout/about.xml new file mode 100644 index 0000000..e9bdeb1 --- /dev/null +++ b/app/src/main/res/layout/about.xml @@ -0,0 +1,19 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/main.xml b/app/src/main/res/layout/main.xml new file mode 100644 index 0000000..38c3589 --- /dev/null +++ b/app/src/main/res/layout/main.xml @@ -0,0 +1,43 @@ + + + + + + + + - - - - - diff --git a/res/values/arrays.xml b/res/values/arrays.xml deleted file mode 100644 index 4c9e346..0000000 --- a/res/values/arrays.xml +++ /dev/null @@ -1,79 +0,0 @@ - - - - Adam - Boy - Charlie - David - Edward - Frank - George - Henry - Ida - John - King - Lincoln - Mary - Nora - Ocean - Paul - Queen - Robert - Sam - Tom - Union - Victor - William - X-Ray - Young - Zebra - Zero - One - Two - Three - Four - Five - Six - Seven - Eight - Niner - - - Alpha - Bravo - Charlie - Delta - Echo - Foxtrot - Golf - Hotel - India - Juliet - Kilo - Lima - Mike - November - Oscar - Papa - Quebec - Romeo - Sierra - Tango - Uniform - Victor - Whiskey - X-Ray - Yankee - Zulu - Zero - One (Wun) - Two - Three - Four (Fower) - Five (Fife) - Six - Seven - Eight (Ait) - Nine (Niner) - - \ No newline at end of file diff --git a/res/values/strings.xml b/res/values/strings.xml deleted file mode 100644 index 3c216b7..0000000 --- a/res/values/strings.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - SpellIt - Spell It! - Tap to continue... - Tap to repeat... - Start typing for history... - Please type something... - NATO Phonetic - G as in Google - © 2008-10 Erik C. Thauvin\nAll Rights Reserved\n\nerik@thauvin.net\n\nhttp://mobile.thauvin.net/ - About - OK - Cancel - as in - <space> - <done> - diff --git a/screenshots/feature.png b/screenshots/feature.png new file mode 100644 index 0000000..4e037a7 Binary files /dev/null and b/screenshots/feature.png differ diff --git a/screenshots/icon-hi.png b/screenshots/icon-hi.png new file mode 100644 index 0000000..50b2b7b Binary files /dev/null and b/screenshots/icon-hi.png differ diff --git a/screenshots/promo.png b/screenshots/promo.png new file mode 100644 index 0000000..60c47d6 Binary files /dev/null and b/screenshots/promo.png differ diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..e7b4def --- /dev/null +++ b/settings.gradle @@ -0,0 +1 @@ +include ':app' diff --git a/sign.bat b/sign.bat deleted file mode 100644 index 6809692..0000000 --- a/sign.bat +++ /dev/null @@ -1,10 +0,0 @@ -@echo off -"%JAVA_HOME%\bin\jarsigner" -verbose -keystore "%USERPROFILE%\personal\android.keystore" "%1" android -if errorlevel 1 goto ERROR -"%JAVA_HOME%\bin\jarsigner" -verify "%1" -if errorlevel 1 goto ERROR -goto DONE -:ERROR -@pause -:DONE -@echo on \ No newline at end of file