diff --git a/src/net/thauvin/erik/android/googsms/GoogSMS.java b/src/net/thauvin/erik/android/googsms/GoogSMS.java deleted file mode 100644 index 534ca47..0000000 --- a/src/net/thauvin/erik/android/googsms/GoogSMS.java +++ /dev/null @@ -1,390 +0,0 @@ -/* - * @(#)GoogSMS.java - * - * Copyright (c) 2008, Erik C. Thauvin (http://erik.thauvin.net/) - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * Neither the name of the authors nor the names of its contributors may be - * used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, - * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $Id$ - * - */ -package net.thauvin.erik.android.googsms; - -import java.util.ArrayList; -import java.util.List; - -import android.app.Activity; -import android.app.AlertDialog; -import android.content.Context; -import android.content.DialogInterface; -import android.content.Intent; -import android.content.SharedPreferences; -import android.content.pm.PackageManager.NameNotFoundException; -import android.os.Bundle; -import android.telephony.gsm.SmsManager; -import android.text.ClipboardManager; -import android.text.TextUtils; -import android.util.Log; -import android.view.LayoutInflater; -import android.view.Menu; -import android.view.MenuItem; -import android.view.View; -import android.widget.AdapterView; -import android.widget.ArrayAdapter; -import android.widget.AutoCompleteTextView; -import android.widget.Button; -import android.widget.Spinner; -import android.widget.Toast; - -/** - * The GoogSMS class implements a simple front-end for Google SMS. - * - * @author Erik C. Thauvin - * @version $Revision$, $Date$ - * @created Nov 2, 2008 - * @since 1.0 - */ -public class GoogSMS extends Activity -{ - private static final int MAX_HISTORY_SIZE = 15; - private static final int MENU_ABOUT = 0; - private static final int MENU_PREFS = 1; - private static final String PREFS_HISTORY = "history"; - - private final List mHistory = new ArrayList(MAX_HISTORY_SIZE); - - private String mLocation; - private String mSmsNumber; - - /** - * Adds to the history. - * - * @param entry The entry to add. - */ - private void addHistory(String entry) - { - if (!mHistory.contains(entry)) - { - if (mHistory.size() >= MAX_HISTORY_SIZE) - { - mHistory.remove(0); - } - - mHistory.add(entry); - - final SharedPreferences settings = getSharedPreferences(getString(R.string.app_name), Context.MODE_PRIVATE); - final SharedPreferences.Editor editor = settings.edit(); - editor.putString(PREFS_HISTORY, TextUtils.join(",", mHistory)); - editor.commit(); - } - } - - /** - * Returns the location. - * - * @return the location - */ - private String getLocation() - { - return mLocation; - } - - /** - * Returns the SMS service number. - * - * @return the SMS number - */ - private String getSmsNumber() - { - return mSmsNumber; - } - - /** - * Returns the current version number. - * - * @return The current version number or empty. - */ - private String getVersionNumber() - { - try - { - return getPackageManager().getPackageInfo(getPackageName(), 0).versionName; - } - catch (final NameNotFoundException e) - { - return ""; - } - } - - /** - * Returns whether the location has been set. - * - * @return true if set, false otherwise. - */ - private boolean hasLocation() - { - return !TextUtils.isEmpty(mLocation); - } - - /** - * Initializes the various controls. - */ - private void init() - { - loadPrefs(); - - final AutoCompleteTextView queryFld = (AutoCompleteTextView) findViewById(R.id.main_query_fld); - final Spinner typeSpin = (Spinner) findViewById(R.id.main_type_spin); - final Button sendBtn = (Button) findViewById(R.id.main_send_btn); - - final SharedPreferences settings = getSharedPreferences(getString(R.string.app_name), Context.MODE_PRIVATE); - setHistory(settings.getString(PREFS_HISTORY, "")); - setAutoComplete(queryFld); - - final ArrayAdapter typeAdapter = ArrayAdapter.createFromResource(this, R.array.main_type_array, - android.R.layout.simple_spinner_item); - typeAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); - typeSpin.setAdapter(typeAdapter); - - final ClipboardManager clip = (ClipboardManager) getSystemService(android.content.Context.CLIPBOARD_SERVICE); - if (clip.hasText()) - { - queryFld.setText(clip.getText()); - } - - final String[] hints = getResources().getStringArray(R.array.main_hint_array); - final String[] cmds = getResources().getStringArray(R.array.main_cmd_array); - - typeSpin.setOnItemSelectedListener(new Spinner.OnItemSelectedListener() - { - @Override - public void onItemSelected(AdapterView parent, View view, int position, long id) - { - queryFld.setHint(hints[position]); - } - - @Override - public void onNothingSelected(AdapterView parent) - { - ; // do nothing - } - }); - - sendBtn.setOnClickListener(new Button.OnClickListener() - { - public void onClick(View view) - { - final String localToken = "%l"; - final String searchToken = "%s"; - final String optSearchToken = "%%s"; - - final String cmd = cmds[typeSpin.getSelectedItemPosition()]; - final String query = queryFld.getText().toString(); - - final boolean isLocal = (cmd.indexOf(localToken) != -1); - final boolean isQuery = (cmd.indexOf(searchToken) != -1); - final boolean isOptQuery = (cmd.indexOf(optSearchToken) != -1); - - if ((!isOptQuery) && TextUtils.isEmpty(query) && isQuery) - { - Toast.makeText(GoogSMS.this, R.string.main_query_err_txt, Toast.LENGTH_SHORT).show(); - } - else if (!hasLocation() && isLocal) - { - Toast.makeText(GoogSMS.this, R.string.main_location_err_txt, Toast.LENGTH_SHORT).show(); - launchPrefs(); - } - else - { - final String s1; - - if (isLocal) - { - s1 = cmd.replace(localToken, getLocation()); - } - else - { - s1 = cmd; - } - - final String s2; - - if (isOptQuery) - { - if (TextUtils.isEmpty(query)) - { - s2 = s1.replace(' ' + optSearchToken, ""); - } - else - { - s2 = s1.replace(optSearchToken, query); - } - } - else if (isQuery) - { - s2 = s1.replace(searchToken, query); - } - else - { - s2 = s1; - } - - final SmsManager sms = SmsManager.getDefault(); - sms.sendTextMessage(getSmsNumber(), null, s2, null, null); - - addHistory(query); - setAutoComplete(queryFld); - - Toast.makeText(GoogSMS.this, R.string.main_sms_sent_txt, Toast.LENGTH_SHORT).show(); - - Log.v("SMS SENT: ", s2); - } - } - - }); - } - - /** - * Launches the preferences screen. - */ - private void launchPrefs() - { - startActivity(new Intent(this, PrefsScreen.class)); - } - - /** - * Loads the preferences. - * - * @param isFirst The first call flag. - */ - public void loadPrefs() - { - final SharedPreferences settings = getSharedPreferences(getString(R.string.app_name), Context.MODE_PRIVATE); - setLocation(settings.getString(getString(R.string.prefs_key_loc), "")); - setSmsNumber(settings.getString(getString(R.string.prefs_key_sms), getString(R.string.default_google_sms))); - } - - /** Called when the activity is first created. */ - @Override - public void onCreate(Bundle savedInstanceState) - { - super.onCreate(savedInstanceState); - setContentView(R.layout.main); - init(); - } - - @Override - public boolean onCreateOptionsMenu(Menu menu) - { - menu.add(0, MENU_ABOUT, 0, R.string.about_menu_txt).setIcon(android.R.drawable.ic_menu_info_details); - menu.add(0, MENU_PREFS, 0, R.string.prefs_menu_txt).setIcon(android.R.drawable.ic_menu_preferences); - return super.onCreateOptionsMenu(menu); - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) - { - if (item.getItemId() == MENU_ABOUT) - { - 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() - { - public void onClick(DialogInterface dialog, int whichButton) - { - // do nothing - } - }).show(); - - return true; - } - else if (item.getItemId() == MENU_PREFS) - { - launchPrefs(); - return true; - } - return super.onOptionsItemSelected(item); - } - - @Override - protected void onResume() - { - super.onResume(); - - loadPrefs(); - } - - /** - * Sets the auto-complete values of the specified field. - * - * @param field The field to the auto-complete for. - */ - private void setAutoComplete(AutoCompleteTextView field) - { - final ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_dropdown_item_1line, mHistory); - field.setAdapter(adapter); - } - - /** - * Sets the history. - * - * @param history The comma-delimited history string. - */ - private void setHistory(String history) - { - final String[] entries = TextUtils.split(history, ","); - for (final String entry : entries) - { - mHistory.add(entry); - } - } - - /** - * Sets the location. - * - * @param location the location to set - */ - private void setLocation(String location) - { - mLocation = location; - } - - /** - * Sets the SMS service number. - * - * @param smsNumber the SMS number to set - */ - private void setSmsNumber(String smsNumber) - { - mSmsNumber = smsNumber; - } -} \ No newline at end of file diff --git a/src/net/thauvin/erik/android/googsms/PrefsScreen.java b/src/net/thauvin/erik/android/googsms/PrefsScreen.java deleted file mode 100644 index 7b4618f..0000000 --- a/src/net/thauvin/erik/android/googsms/PrefsScreen.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * @(#)PrefsScreen.java - * - * Copyright (c) 2008, Erik C. Thauvin (http://erik.thauvin.net/) - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are - * met: - * - * Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * Neither the name of the authors nor the names of its contributors may be - * used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS - * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, - * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * $Id$ - * - */ -package net.thauvin.erik.android.googsms; - -import android.os.Bundle; -import android.preference.PreferenceActivity; -import android.widget.TextView; - -/** - * The GoogSMS class implements a the preferences screen for Google SMS. - * - * @author Erik C. Thauvin - * @version $Revision$, $Date$ - * @created Nov 2, 2008 - * @since 1.0 - */ -public class PrefsScreen extends PreferenceActivity -{ - public TextView mLocationHint; - - /** - * Called when the activity is first created. - */ - @Override - public void onCreate(Bundle savedInstanceState) - { - super.onCreate(savedInstanceState); - getPreferenceManager().setSharedPreferencesName(getString(R.string.app_name)); - addPreferencesFromResource(R.xml.prefs); - } -} diff --git a/src/net/thauvin/erik/android/googsms/R.java b/src/net/thauvin/erik/android/googsms/R.java deleted file mode 100644 index 7d16384..0000000 --- a/src/net/thauvin/erik/android/googsms/R.java +++ /dev/null @@ -1,62 +0,0 @@ -/* AUTO-GENERATED FILE. DO NOT MODIFY. - * - * This class was automatically generated by the - * aapt tool from the resource data it found. It - * should not be modified by hand. - */ - -package net.thauvin.erik.android.googsms; - -public final class R { - public static final class array { - public static final int main_cmd_array=0x7f050001; - public static final int main_hint_array=0x7f050002; - public static final int main_type_array=0x7f050000; - } - public static final class attr { - } - public static final class drawable { - public static final int icon=0x7f020000; - } - public static final class id { - public static final int about_text_fld=0x7f070000; - public static final int main_query_fld=0x7f070002; - public static final int main_query_lbl=0x7f070001; - public static final int main_send_btn=0x7f070005; - public static final int main_type_lbl=0x7f070003; - public static final int main_type_spin=0x7f070004; - } - public static final class layout { - public static final int about=0x7f030000; - public static final int main=0x7f030001; - } - public static final class string { - public static final int about_menu_txt=0x7f06000a; - public static final int about_txt=0x7f060009; - public static final int alert_dialog_ok=0x7f06000c; - public static final int app_name=0x7f060001; - public static final int default_google_sms=0x7f060008; - public static final int hello=0x7f060000; - public static final int main_location_err_txt=0x7f060007; - public static final int main_query_err_txt=0x7f060006; - public static final int main_query_lbl_txt=0x7f060002; - public static final int main_send_btn_txt=0x7f060004; - public static final int main_sms_sent_txt=0x7f060005; - public static final int main_type_lbl_txt=0x7f060003; - public static final int prefs_dialog_title=0x7f06000d; - public static final int prefs_key_loc=0x7f060017; - public static final int prefs_key_sms=0x7f060016; - public static final int prefs_location_dialog_title=0x7f06000e; - public static final int prefs_location_hint=0x7f060011; - public static final int prefs_location_summary=0x7f060010; - public static final int prefs_location_title=0x7f06000f; - public static final int prefs_menu_txt=0x7f06000b; - public static final int prefs_sms_dialog_title=0x7f060012; - public static final int prefs_sms_hint=0x7f060015; - public static final int prefs_sms_summary=0x7f060014; - public static final int prefs_sms_title=0x7f060013; - } - public static final class xml { - public static final int prefs=0x7f040000; - } -}