Misc. Updates.

This commit is contained in:
Erik C. Thauvin 2015-11-11 13:44:38 -08:00
parent 92ed7cd5f4
commit a0d9ea235f
10 changed files with 297 additions and 174 deletions

27
.gitignore vendored
View file

@ -1,6 +1,29 @@
/.svn/ **/.idea/dictionaries
/bin/ **/.idea/gradle.xml
**/.idea/libraries
**/.idea/tasks.xml
**/.idea/workspace.xml
*.iws
.DS_Store
.classpath
.gradle
.nb-gradle
.project
.settings
/.classpath /.classpath
/.fbprefs /.fbprefs
/.pmd /.pmd
/.project /.project
/.svn/
/bin
/build
/deploy
/dist
/gen
/local.properties
/out
/proguard-project.txt
/project.properties
/test-output
Thumbs.db
ehthumbs.db

View file

@ -1,16 +1,29 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="net.thauvin.erik.android.googsms" android:installLocation="auto" android:installLocation="auto"
android:versionName="0.2" android:versionCode="2"> package="net.thauvin.erik.android.googsms"
<uses-permission android:name="android.permission.SEND_SMS" /> android:versionCode="3"
<application android:icon="@drawable/icon" android:label="@string/app_name"> android:versionName="0.3" >
<activity android:name=".GoogSMS" android:label="@string/app_name">
<intent-filter> <uses-permission android:name="android.permission.SEND_SMS" />
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" /> <uses-sdk android:minSdkVersion="2" />
</intent-filter>
</activity> <application
<activity android:name=".PrefsScreen" android:label="@string/app_name" /> android:icon="@drawable/icon"
</application> android:label="@string/app_name" >
<uses-sdk android:minSdkVersion="2"></uses-sdk> <activity
</manifest> android:name=".GoogSMS"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".PrefsScreen"
android:label="@string/app_name" />
</application>
</manifest>

View file

@ -31,30 +31,29 @@ public final class R {
public static final int main=0x7f030001; public static final int main=0x7f030001;
} }
public static final class string { public static final class string {
public static final int about_menu_txt=0x7f06000a; public static final int about_menu_txt=0x7f060009;
public static final int about_txt=0x7f060009; public static final int about_txt=0x7f060008;
public static final int alert_dialog_ok=0x7f06000c; public static final int alert_dialog_ok=0x7f06000b;
public static final int app_name=0x7f060001; public static final int app_name=0x7f060000;
public static final int default_google_sms=0x7f060008; public static final int default_google_sms=0x7f060007;
public static final int hello=0x7f060000; public static final int main_location_err_txt=0x7f060006;
public static final int main_location_err_txt=0x7f060007; public static final int main_query_err_txt=0x7f060005;
public static final int main_query_err_txt=0x7f060006; public static final int main_query_lbl_txt=0x7f060001;
public static final int main_query_lbl_txt=0x7f060002; public static final int main_send_btn_txt=0x7f060003;
public static final int main_send_btn_txt=0x7f060004; public static final int main_sms_sent_txt=0x7f060004;
public static final int main_sms_sent_txt=0x7f060005; public static final int main_type_lbl_txt=0x7f060002;
public static final int main_type_lbl_txt=0x7f060003; public static final int prefs_dialog_title=0x7f06000c;
public static final int prefs_dialog_title=0x7f06000d; public static final int prefs_key_loc=0x7f060016;
public static final int prefs_key_loc=0x7f060017; public static final int prefs_key_sms=0x7f060015;
public static final int prefs_key_sms=0x7f060016; public static final int prefs_location_dialog_title=0x7f06000d;
public static final int prefs_location_dialog_title=0x7f06000e; public static final int prefs_location_hint=0x7f060010;
public static final int prefs_location_hint=0x7f060011; public static final int prefs_location_summary=0x7f06000f;
public static final int prefs_location_summary=0x7f060010; public static final int prefs_location_title=0x7f06000e;
public static final int prefs_location_title=0x7f06000f; public static final int prefs_menu_txt=0x7f06000a;
public static final int prefs_menu_txt=0x7f06000b; public static final int prefs_sms_dialog_title=0x7f060011;
public static final int prefs_sms_dialog_title=0x7f060012; public static final int prefs_sms_hint=0x7f060014;
public static final int prefs_sms_hint=0x7f060015; public static final int prefs_sms_summary=0x7f060013;
public static final int prefs_sms_summary=0x7f060014; public static final int prefs_sms_title=0x7f060012;
public static final int prefs_sms_title=0x7f060013;
} }
public static final class xml { public static final class xml {
public static final int prefs=0x7f040000; public static final int prefs=0x7f040000;

View file

@ -1,26 +1,53 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:padding="10dip"> android:layout_height="fill_parent"
android:orientation="vertical"
android:padding="10dip" >
<TextView android:layout_width="wrap_content" <TextView
android:layout_height="wrap_content" android:id="@+id/main_query_lbl" android:id="@+id/main_query_lbl"
android:text="@string/main_query_lbl_txt" android:textAppearance="?android:attr/textAppearanceMedium"></TextView> android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/main_query_lbl_txt"
android:textAppearance="?android:attr/textAppearanceMedium" >
</TextView>
<AutoCompleteTextView android:layout_width="fill_parent" <AutoCompleteTextView
android:layout_height="wrap_content" android:id="@+id/main_query_fld" android:id="@+id/main_query_fld"
android:singleLine="true"></AutoCompleteTextView> android:layout_width="fill_parent"
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_height="wrap_content" android:id="@+id/main_type_lbl" android:singleLine="true" >
android:text="@string/main_type_lbl_txt" android:textAppearance="?android:attr/textAppearanceMedium"></TextView> </AutoCompleteTextView>
<Spinner android:layout_width="fill_parent"
android:layout_height="wrap_content" android:id="@+id/main_type_spin"></Spinner>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" <TextView
android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/main_type_lbl"
android:paddingTop="10dip"> android:layout_width="wrap_content"
<Button android:text="@string/main_send_btn_txt" android:id="@+id/main_send_btn" android:layout_height="wrap_content"
android:minEms="8" android:layout_width="wrap_content" android:text="@string/main_type_lbl_txt"
android:layout_height="wrap_content" android:layout_alignParentRight="true"></Button> android:textAppearance="?android:attr/textAppearanceMedium" >
</RelativeLayout> </TextView>
</LinearLayout>
<Spinner
android:id="@+id/main_type_spin"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
</Spinner>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingTop="10dip" >
<Button
android:id="@+id/main_send_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:minEms="8"
android:text="@string/main_send_btn_txt" >
</Button>
</RelativeLayout>
</LinearLayout>

View file

@ -1,86 +1,68 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources> <resources>
<string-array name="main_type_array">
<item>Search</item>
<item>Web Snippets</item>
<item>Local Search</item>
<item>Local Movies</item>
<item>Local Weather</item>
<item>Airlines</item>
<item>Airports</item>
<item>Area Codes</item>
<item>Calculator</item>
<item>Currency Conversion</item>
<item>Directions</item>
<item>Flights</item>
<item>Glossary</item>
<item>METAR</item>
<item>Maps</item>
<item>Movies</item>
<item>Products</item>
<item>Q&amp;A</item>
<item>Sports</item>
<item>Stocks</item>
<item>Time</item>
<item>Translation</item>
<item>Weather</item>
<item>Zip Codes</item>
<item>Help</item>
</string-array>
<string-array name="main_cmd_array"> <string-array name="main_type_array">
<item>%s</item> <item>Search</item>
<item>web %s</item> <item>Web Snippets</item>
<item>%s %l</item> <item>Local Search</item>
<item>movies %%s %l</item> <item>Local Movies</item>
<item>weather %l</item> <item>Local Weather</item>
<item>%s</item> <item>Calculator</item>
<item>%s airport</item> <item>Currency Conversion</item>
<item>area code %s</item> <item>Directions</item>
<item>%s</item> <item>Glossary</item>
<item>%s</item> <item>Maps</item>
<item>directions %s</item> <item>Movies</item>
<item>flight %s</item> <item>Products</item>
<item>define %s</item> <item>Sports</item>
<item>metar %s</item> <item>Stocks</item>
<item>map %s</item> <item>Time</item>
<item>movies %s</item> <item>Translation</item>
<item>price %s</item> <item>Weather</item>
<item>%s</item> <item>Zip Codes</item>
<item>score %s</item> <item>Help</item>
<item>stock %s</item> </string-array>
<item>time %s</item> <string-array name="main_cmd_array" formatted="false">
<item>translate %s</item> <item>%s</item>
<item>weather %s</item> <item>WEB %s</item>
<item>zip code %s</item> <item>%s %l</item>
<item>help %s</item> <item>MOVIES %%s %l</item>
</string-array> <item>WEATHER %l</item>
<item>%s</item>
<item>%s</item>
<item>DIRECTIONS %s</item>
<item>DEFINE %s</item>
<item>MAP %s</item>
<item>%s</item>
<item>PRICE %s</item>
<item>SCORE %s</item>
<item>STOCK %s</item>
<item>TIME %s</item>
<item>TRANSLATE %s</item>
<item>WEATHER %s</item>
<item>ZIP CODE %s</item>
<item>HELP %s</item>
</string-array>
<string-array name="main_hint_array">
<item>blockbuster seattle wa</item>
<item>search terms, e.g.: galaxy nexus</item>
<item>business listing, sushi, pizza, etc.</item>
<item>No query or current movie name</item>
<item>No query required</item>
<item>1 us pint in liters, 5+2/2, etc.</item>
<item>8 usd in yen</item>
<item>pasadena ca to 94043</item>
<item>word to define, e.g.: zenith</item>
<item>5th avenue new york</item>
<item>current movie name boston, ma</item>
<item>ipod 40gb, UPC/ISBN, etc.</item>
<item>NBA/NHL/MLB/NFL/NCAA team</item>
<item>ticker symbol, e.g.: goog</item>
<item>new york, ny</item>
<item>hello in french</item>
<item>new york, ny</item>
<item>90210</item>
<item>search feature, e.g.: local, etc.</item>
</string-array>
<string-array name="main_hint_array"> </resources>
<item>blockbuster seattle wa</item>
<item>search terms, e.g.: nexus one</item>
<item>business listing, sushi, pizza, etc.</item>
<item>No query or current movie name</item>
<item>No query required</item>
<item>united airlines</item>
<item>airport code, e.g.: sfo</item>
<item>area code, e.g.: 650</item>
<item>1 us pint in liters, 5+2/2, etc.</item>
<item>8 usd in yen</item>
<item>pasadena ca to 94043</item>
<item>aa 2111, ua 14, etc.</item>
<item>word to define, e.g.: zenith</item>
<item>ICAO airport code, e.g.: khio</item>
<item>5th avenue new york</item>
<item>current movie name boston, ma</item>
<item>ipod 40gb, UPC/ISBN, etc.</item>
<item>india population</item>
<item>NBA/NHL/MLB/NFL/NCAA team</item>
<item>ticker symbol, e.g.: goog</item>
<item>new york, ny</item>
<item>hello in french</item>
<item>new york, ny</item>
<item>90210</item>
<item>search feature, e.g.: local, etc.</item>
</string-array>
</resources>

View file

@ -1,27 +1,28 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources> <resources>
<string name="hello">Hello World, GoogSMS</string>
<string name="app_name">GoogSMS</string> <string name="app_name">GoogSMS</string>
<string name="main_query_lbl_txt">Query:</string> <string name="main_query_lbl_txt">Query:</string>
<string name="main_type_lbl_txt">Type:</string> <string name="main_type_lbl_txt">Type:</string>
<string name="main_send_btn_txt">Send via SMS</string> <string name="main_send_btn_txt">Send via SMS</string>
<string name="main_sms_sent_txt">Your message was sent.</string> <string name="main_sms_sent_txt">Your message was sent.</string>
<string name="main_query_err_txt">Please enter a query...</string> <string name="main_query_err_txt">Please enter a query!</string>
<string name="main_location_err_txt">Please set your location...</string> <string name="main_location_err_txt">Please set your location&#8230;</string>
<string name="default_google_sms">466453</string> <string name="default_google_sms">466453</string>
<string name="about_txt">© 2008-10 Erik C. Thauvin\nAll Rights Reserved\n\nerik@thauvin.net\n\nhttp://mobile.thauvin.net/</string> <string name="about_txt">© 2008&#8211;12 Erik C. Thauvin\nAll Rights Reserved\n\nerik@thauvin.net\nhttp://m.thauvin.net/android/</string>
<string name="about_menu_txt">About</string> <string name="about_menu_txt">About</string>
<string name="prefs_menu_txt">Preferences</string> <string name="prefs_menu_txt">Preferences</string>
<string name="alert_dialog_ok">OK</string> <string name="alert_dialog_ok">OK</string>
<string name="prefs_dialog_title">Preferences</string> <string name="prefs_dialog_title">Preferences</string>
<string name="prefs_location_dialog_title">Set Your Location...</string> <string name="prefs_location_dialog_title">Set Your Location&#8230;</string>
<string name="prefs_location_title">Location</string> <string name="prefs_location_title">Location</string>
<string name="prefs_location_summary">Your current city and state or zip.</string> <string name="prefs_location_summary">Your current city and state or zip.</string>
<string name="prefs_location_hint">e.g.: san francisco ca or 94123</string> <string name="prefs_location_hint">e.g.: san francisco ca or 94123</string>
<string name="prefs_sms_dialog_title">Set SMS Number...</string> <string name="prefs_sms_dialog_title">Set SMS Number&#8230;</string>
<string name="prefs_sms_title">Google SMS</string> <string name="prefs_sms_title">Google SMS</string>
<string name="prefs_sms_summary">The short code or number of the Google SMS service.</string> <string name="prefs_sms_summary">The short code or number of the Google SMS service.</string>
<string name="prefs_sms_hint">e.g.: 466453</string> <string name="prefs_sms_hint">e.g.: 466453</string>
<string name="prefs_key_sms">prefs_sms</string> <string name="prefs_key_sms">prefs_sms</string>
<string name="prefs_key_loc">prefs_loc</string> <string name="prefs_key_loc">prefs_loc</string>
</resources>
</resources>

BIN
screenshots/feature.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

BIN
screenshots/icon-hi.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

BIN
screenshots/promo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

View file

@ -31,7 +31,7 @@
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
* *
* $Id$ * $Id: GoogSMS.java 81 2010-06-29 12:59:19Z erik $
* *
*/ */
package net.thauvin.erik.android.googsms; package net.thauvin.erik.android.googsms;
@ -46,26 +46,32 @@ import android.content.DialogInterface;
import android.content.Intent; import android.content.Intent;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.PackageManager.NameNotFoundException;
import android.graphics.drawable.Drawable;
import android.os.Bundle; import android.os.Bundle;
import android.telephony.gsm.SmsManager; import android.telephony.gsm.SmsManager;
import android.text.ClipboardManager; import android.text.ClipboardManager;
import android.text.Editable;
import android.text.TextUtils; import android.text.TextUtils;
import android.text.TextWatcher;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.Menu; import android.view.Menu;
import android.view.MenuItem; import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View; import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.AdapterView; import android.widget.AdapterView;
import android.widget.ArrayAdapter; import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView; import android.widget.AutoCompleteTextView;
import android.widget.Button; import android.widget.Button;
import android.widget.Spinner; import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast; import android.widget.Toast;
/** /**
* The <code>GoogSMS</code> class implements a simple front-end for Google SMS. * The <code>GoogSMS</code> class implements a simple front-end for Google SMS.
* *
* @author <a href="mailto:erik@thauvin.net">Erik C. Thauvin</a> * @author <a href="mailto:erik@thauvin.net">Erik C. Thauvin</a>
* @version $Revision$, $Date$ * @version $Revision: 81 $, $Date: 2010-06-29 05:59:19 -0700 (Tue, 29 Jun 2010) $
* @created Nov 2, 2008 * @created Nov 2, 2008
* @since 1.0 * @since 1.0
*/ */
@ -73,7 +79,7 @@ import android.widget.Toast;
public class GoogSMS extends Activity public class GoogSMS extends Activity
{ {
private static final boolean DEBUG = false; private static final boolean DEBUG = false;
private static final int MAX_HISTORY_SIZE = 15; private static final int MAX_HISTORY_SIZE = 15;
private static final int MENU_ABOUT = 0; private static final int MENU_ABOUT = 0;
private static final int MENU_PREFS = 1; private static final int MENU_PREFS = 1;
@ -198,6 +204,58 @@ public class GoogSMS extends Activity
} }
}); });
final Drawable imgX = getResources().getDrawable(android.R.drawable.presence_offline);
manageClearButton(queryFld, imgX);
queryFld.setOnTouchListener(new OnTouchListener()
{
@Override
public boolean onTouch(View v, MotionEvent event)
{
// Is there an X showing?
if (queryFld.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() > queryFld.getWidth() - queryFld.getPaddingRight() - imgX.getIntrinsicWidth())
{
queryFld.requestFocusFromTouch();
queryFld.setText("");
}
return false;
}
});
queryFld.addTextChangedListener(new TextWatcher()
{
@Override
public void onTextChanged(CharSequence s, int start, int before, int count)
{
manageClearButton(queryFld, imgX);
}
@Override
public void afterTextChanged(Editable s)
{
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after)
{
}
});
sendBtn.setOnClickListener(new Button.OnClickListener() sendBtn.setOnClickListener(new Button.OnClickListener()
{ {
public void onClick(View view) public void onClick(View view)
@ -322,9 +380,9 @@ public class GoogSMS extends Activity
final LayoutInflater factory = LayoutInflater.from(this); final LayoutInflater factory = LayoutInflater.from(this);
final View aboutView = factory.inflate(R.layout.about, null); final View aboutView = factory.inflate(R.layout.about, null);
new AlertDialog.Builder(this).setView(aboutView).setIcon(android.R.drawable.ic_dialog_info).setTitle( new AlertDialog.Builder(this).setView(aboutView).setIcon(android.R.drawable.ic_dialog_info)
getString(R.string.app_name) + ' ' + getVersionNumber()).setPositiveButton(R.string.alert_dialog_ok, .setTitle(getString(R.string.app_name) + ' ' + getVersionNumber())
new DialogInterface.OnClickListener() .setPositiveButton(R.string.alert_dialog_ok, new DialogInterface.OnClickListener()
{ {
public void onClick(DialogInterface dialog, int whichButton) public void onClick(DialogInterface dialog, int whichButton)
{ {
@ -394,4 +452,24 @@ public class GoogSMS extends Activity
{ {
mSmsNumber = smsNumber; mSmsNumber = smsNumber;
} }
/**
* 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]);
}
}
} }