--- /dev/null
+workspace/.metadata\r
+*.class\r
+workspace/EverClip/bin\r
+.DS_Store\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<classpath>\r
+ <classpathentry kind="src" path="src"/>\r
+ <classpathentry kind="src" path="gen"/>\r
+ <classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>\r
+ <classpathentry kind="output" path="bin"/>\r
+</classpath>\r
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<projectDescription>\r
+ <name>EverClip</name>\r
+ <comment></comment>\r
+ <projects>\r
+ </projects>\r
+ <buildSpec>\r
+ <buildCommand>\r
+ <name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name>\r
+ <arguments>\r
+ </arguments>\r
+ </buildCommand>\r
+ <buildCommand>\r
+ <name>com.android.ide.eclipse.adt.PreCompilerBuilder</name>\r
+ <arguments>\r
+ </arguments>\r
+ </buildCommand>\r
+ <buildCommand>\r
+ <name>org.eclipse.jdt.core.javabuilder</name>\r
+ <arguments>\r
+ </arguments>\r
+ </buildCommand>\r
+ <buildCommand>\r
+ <name>com.android.ide.eclipse.adt.ApkBuilder</name>\r
+ <arguments>\r
+ </arguments>\r
+ </buildCommand>\r
+ </buildSpec>\r
+ <natures>\r
+ <nature>com.android.ide.eclipse.adt.AndroidNature</nature>\r
+ <nature>org.eclipse.jdt.core.javanature</nature>\r
+ </natures>\r
+</projectDescription>\r
--- /dev/null
+#Thu Apr 05 15:34:06 JST 2012\r
+eclipse.preferences.version=1\r
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5\r
+org.eclipse.jdt.core.compiler.compliance=1.5\r
+org.eclipse.jdt.core.compiler.source=1.5\r
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.yuji.ec"
+ android:versionCode="1"
+ android:versionName="1.0">
+ <uses-sdk android:minSdkVersion="7" />
+
+ <application android:icon="@drawable/icon" android:label="@string/app_name">
+ <activity android:name=".EverClipActivity"
+ android:label="@string/app_name">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+ <category android:name="android.intent.category.LAUNCHER" />
+ </intent-filter>
+ </activity>
+
+ </application>
+</manifest>
\ No newline at end of file
--- /dev/null
+# This file is automatically generated by Android Tools.
+# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
+#
+# This file must be checked in Version Control Systems.
+#
+# To customize properties used by the Ant build system use,
+# "build.properties", and override values to adapt the script to your
+# project structure.
+
+# Project target.
+target=android-7
--- /dev/null
+/* AUTO-GENERATED FILE. DO NOT MODIFY.\r
+ *\r
+ * This class was automatically generated by the\r
+ * aapt tool from the resource data it found. It\r
+ * should not be modified by hand.\r
+ */\r
+\r
+package com.yuji.ec;\r
+\r
+public final class R {\r
+ public static final class attr {\r
+ }\r
+ public static final class drawable {\r
+ public static final int icon=0x7f020000;\r
+ }\r
+ public static final class layout {\r
+ public static final int main=0x7f030000;\r
+ }\r
+ public static final class string {\r
+ public static final int app_name=0x7f040001;\r
+ public static final int hello=0x7f040000;\r
+ }\r
+}\r
--- /dev/null
+-optimizationpasses 5
+-dontusemixedcaseclassnames
+-dontskipnonpubliclibraryclasses
+-dontpreverify
+-verbose
+-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
+
+-keep public class * extends android.app.Activity
+-keep public class * extends android.app.Application
+-keep public class * extends android.app.Service
+-keep public class * extends android.content.BroadcastReceiver
+-keep public class * extends android.content.ContentProvider
+-keep public class * extends android.app.backup.BackupAgentHelper
+-keep public class * extends android.preference.Preference
+-keep public class com.android.vending.licensing.ILicensingService
+
+-keepclasseswithmembernames class * {
+ native <methods>;
+}
+
+-keepclasseswithmembernames class * {
+ public <init>(android.content.Context, android.util.AttributeSet);
+}
+
+-keepclasseswithmembernames class * {
+ public <init>(android.content.Context, android.util.AttributeSet, int);
+}
+
+-keepclassmembers enum * {
+ public static **[] values();
+ public static ** valueOf(java.lang.String);
+}
+
+-keep class * implements android.os.Parcelable {
+ public static final android.os.Parcelable$Creator *;
+}
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="vertical"
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent"
+ >
+<TextView
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+ android:text="@string/hello"
+ />
+</LinearLayout>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <string name="hello">Hello World, EverClipActivity!</string>
+ <string name="app_name">EverClip</string>
+</resources>
--- /dev/null
+package com.yuji.ec;
+
+import android.os.Bundle;
+
+import com.yuji.ec.utility.BaseActivity;
+
+public class EverClipActivity extends BaseActivity {
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.main);
+ }
+}
\ No newline at end of file
--- /dev/null
+package com.yuji.ec;\r
+\r
+import android.content.Context;\r
+\r
+public class Initialize {\r
+ private static boolean isInit = true;\r
+\r
+ public static void initialize(Context context) {\r
+ if (!isInit) {\r
+ return;\r
+ }\r
+ isInit = false;\r
+ }\r
+\r
+ public static void setInitialize() {\r
+ isInit = true;\r
+ }\r
+}\r
--- /dev/null
+package com.yuji.ec.db;\r
+\r
+import java.util.ArrayList;\r
+import java.util.List;\r
+\r
+import android.content.Context;\r
+import android.database.sqlite.SQLiteDatabase;\r
+import android.database.sqlite.SQLiteOpenHelper;\r
+\r
+import com.yuji.ec.utility.Debug;\r
+import com.yuji.ec.utility.ECException;\r
+\r
+public class DatabaseHelper extends SQLiteOpenHelper {\r
+ private static DatabaseHelper instance = null;\r
+ private static List<IDao> daoList = null;\r
+\r
+ public static DatabaseHelper getInstance() {\r
+ return instance;\r
+ }\r
+\r
+ public static void init(Context context) throws ECException {\r
+ if (instance != null) {\r
+ return;\r
+ }\r
+ daoList = new ArrayList<IDao>();\r
+ daoList.add(NoteDao.getInstance());\r
+\r
+ DatabaseHelper helper = new DatabaseHelper(context);\r
+ SQLiteDatabase db = helper.getWritableDatabase();\r
+\r
+ try {\r
+ for (IDao dao : daoList) {\r
+ dao.start(db);\r
+ }\r
+ } catch (Exception e) {\r
+ // TODO\r
+ // Debug.d(context, null, e);\r
+ }\r
+ }\r
+\r
+ public DatabaseHelper(Context context) {\r
+ super(context, "EverClip.db", null, 1);\r
+ instance = this;\r
+ }\r
+\r
+ @Override\r
+ public void onCreate(SQLiteDatabase db) {\r
+ try {\r
+ for (IDao dao : daoList) {\r
+ dao.onCreate(db);\r
+ dao.init(db);\r
+ }\r
+\r
+ db.beginTransaction();\r
+ try {\r
+ for (IDao dao : daoList) {\r
+ dao.start(db);\r
+ }\r
+ db.setTransactionSuccessful();\r
+ } finally {\r
+ db.endTransaction();\r
+ }\r
+ } catch (Exception e) {\r
+ Debug.d(this, null, e);\r
+ }\r
+ }\r
+\r
+ @Override\r
+ public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {\r
+\r
+ }\r
+\r
+}\r
--- /dev/null
+package com.yuji.ec.db;\r
+\r
+import java.util.List;\r
+\r
+import android.database.sqlite.SQLiteDatabase;\r
+\r
+public interface IDao<T> {\r
+ public void onCreate(SQLiteDatabase db);\r
+ public void init(SQLiteDatabase db);\r
+ public void start(SQLiteDatabase db);\r
+ public List<Note> search();\r
+ public void add(T arg0);\r
+}
\ No newline at end of file
--- /dev/null
+package com.yuji.ec.db;\r
+\r
+public class Note {\r
+ private long id = -1;\r
+ private String guid;\r
+ private String text;\r
+ \r
+ public Note(long id, String guid, String text){\r
+ this.id = id;\r
+ this.guid = guid;\r
+ this.text = text;\r
+ }\r
+\r
+ public Note(String guid, String text){\r
+ this(-1, guid, text);\r
+ }\r
+\r
+ public long getId(){\r
+ return id;\r
+ }\r
+ \r
+ public String getGuid() {\r
+ return guid;\r
+ }\r
+\r
+ public String getText() {\r
+ return text;\r
+ }\r
+}\r
--- /dev/null
+package com.yuji.ec.db;\r
+\r
+import java.util.ArrayList;\r
+import java.util.List;\r
+\r
+import android.database.Cursor;\r
+import android.database.sqlite.SQLiteDatabase;\r
+import android.database.sqlite.SQLiteStatement;\r
+\r
+public class NoteDao implements IDao<Note> {\r
+ private static IDao<Note> instance = null;\r
+ private SQLiteStatement insertStmt = null;\r
+\r
+ public static IDao<Note> getInstance(){\r
+ if (instance == null){\r
+ instance = new NoteDao();\r
+ }\r
+ return instance;\r
+ } \r
+ \r
+ private NoteDao(){\r
+\r
+ }\r
+ \r
+ public void onCreate(SQLiteDatabase db) {\r
+ db.execSQL(\r
+ "CREATE TABLE NOTE ("\r
+ + android.provider.BaseColumns._ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"\r
+ + "GUID TEXT,"\r
+ + "TEXT TEXT"\r
+ + ");");\r
+ }\r
+ \r
+ public void init(SQLiteDatabase db) {\r
+ insertStmt = db.compileStatement(\r
+ "INSERT INTO NOTE ("\r
+ + "GUID,"\r
+ + "TEXT"\r
+ + ") VALUES ("\r
+ + "?,?"\r
+ + ");"); \r
+ }\r
+ \r
+ public void start(SQLiteDatabase db) {\r
+ Note note;\r
+ \r
+ note = new Note("id0", "\83T\83\93\83v\83\8bA");\r
+ add(note);\r
+ note = new Note("id1", "\83T\83\93\83v\83\8bB");\r
+ add(note);\r
+ note = new Note("id2", "\83T\83\93\83v\83\8bC");\r
+ add(note);\r
+ }\r
+\r
+ public List<Note> search(){\r
+ return search(null, null, "TEXT");\r
+ }\r
+ \r
+ private List<Note> search(String selection, String[] selectionArgs, String orderBy){\r
+ List<Note> list = new ArrayList<Note>();\r
+ try {\r
+ DatabaseHelper helper = DatabaseHelper.getInstance();\r
+ SQLiteDatabase db = helper.getReadableDatabase();\r
+\r
+ Cursor cursor = db.query(\r
+ "Note",\r
+ new String[] {\r
+ android.provider.BaseColumns._ID, "GUID", "TEXT"},\r
+ selection, selectionArgs, null, null, orderBy);\r
+ cursor.moveToFirst();\r
+ int size = cursor.getCount();\r
+ for (int i = 0; i < size; i++) {\r
+ Note note = new Note(\r
+ cursor.getInt(0),\r
+ cursor.getString(1),\r
+ cursor.getString(2));\r
+ list.add(note);\r
+ cursor.moveToNext();\r
+ }\r
+ cursor.close();\r
+// } catch (SQLException e){\r
+// // TODO\r
+// Debug.d(this, null, e);\r
+ } catch (Exception e){\r
+ // TODO\r
+// Debug.d(this, null, e);\r
+ }\r
+ finally {\r
+ // TODO\r
+ }\r
+ return list;\r
+ }\r
+\r
+ public void add(Note note) {\r
+ DatabaseHelper helper = DatabaseHelper.getInstance();\r
+ SQLiteDatabase db = helper.getWritableDatabase();\r
+ add(db, note);\r
+ }\r
+ \r
+ private long add(SQLiteDatabase db, Note note) {\r
+ long id = -1;\r
+ db.beginTransaction();\r
+ try {\r
+ int i = 1;\r
+ SQLiteStatement stmt = insertStmt;\r
+ stmt.bindString(i++, note.getGuid());\r
+ stmt.bindString(i++, note.getText());\r
+ id = stmt.executeInsert();\r
+ db.setTransactionSuccessful();\r
+ } finally {\r
+ db.endTransaction();\r
+ }\r
+ return id;\r
+ }\r
+}\r
--- /dev/null
+package com.yuji.ec.utility;\r
+\r
+import android.app.Activity;\r
+import android.app.AlertDialog;\r
+import android.content.Context;\r
+import android.content.DialogInterface;\r
+import android.content.Intent;\r
+import android.os.Bundle;\r
+import android.view.KeyEvent;\r
+import android.view.Window;\r
+import android.view.WindowManager;\r
+\r
+import com.yuji.ec.Initialize;\r
+\r
+public class BaseActivity extends Activity {\r
+ @Override\r
+ public void onCreate(Bundle savedInstanceState) {\r
+ super.onCreate(savedInstanceState);\r
+ Debug.d(this, Debug.ON_CREATE);\r
+\r
+ Context context = getApplicationContext();\r
+ // Thread.setDefaultUncaughtExceptionHandler(new\r
+ // TrainDelayedUncaughtExceptionHandler(\r
+ // context));\r
+ // DatabaseHelper.init(context);\r
+ Initialize.initialize(context);\r
+ }\r
+\r
+ @Override\r
+ protected void onActivityResult(int requestCode, int resultCode, Intent data) {\r
+ super.onActivityResult(requestCode, resultCode, data);\r
+ }\r
+\r
+ @Override\r
+ protected void onRestart() {\r
+ super.onRestart();\r
+ Debug.d(this, Debug.ON_RESTART);\r
+ }\r
+\r
+ @Override\r
+ protected void onResume() {\r
+ super.onResume();\r
+ Debug.d(this, Debug.ON_RESUME);\r
+ }\r
+\r
+ @Override\r
+ protected void onStart() {\r
+ super.onStart();\r
+ Debug.d(this, Debug.ON_START);\r
+ }\r
+\r
+ @Override\r
+ protected void onPause() {\r
+ super.onPause();\r
+ Debug.d(this, Debug.ON_PAUSE);\r
+ }\r
+\r
+ @Override\r
+ protected void onStop() {\r
+ super.onStop();\r
+ Debug.d(this, Debug.ON_STOP);\r
+ }\r
+\r
+ @Override\r
+ protected void onDestroy() {\r
+ super.onDestroy();\r
+ Debug.d(this, Debug.ON_DESTROY);\r
+ }\r
+\r
+ // @Override\r
+ // public boolean onCreateOptionsMenu(Menu menu) {\r
+ // boolean ret = super.onCreateOptionsMenu(menu);\r
+ // menu.add(0, Menu.FIRST, Menu.NONE, R.string.help);\r
+ // return ret;\r
+ // }\r
+ //\r
+ // @Override\r
+ // public boolean onOptionsItemSelected(MenuItem item) {\r
+ // try {\r
+ // Intent intent = new Intent(this, (Class<?>)Help.class);\r
+ // startActivity(intent);\r
+ // }\r
+ // catch (Exception e){\r
+ // terminate(e);\r
+ // }\r
+ // return super.onOptionsItemSelected(item);\r
+ // }\r
+\r
+ @Override\r
+ public boolean dispatchKeyEvent(KeyEvent event) {\r
+ if (event.getAction() == KeyEvent.ACTION_DOWN) {\r
+ switch (event.getKeyCode()) {\r
+ case KeyEvent.KEYCODE_SEARCH:\r
+ return true;\r
+ }\r
+ }\r
+ return super.dispatchKeyEvent(event);\r
+ }\r
+\r
+ protected void setFullscreen() {\r
+ requestWindowFeature(Window.FEATURE_NO_TITLE);\r
+ getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,\r
+ WindowManager.LayoutParams.FLAG_FULLSCREEN);\r
+ }\r
+\r
+ protected void showDialog(String title, String msg, final boolean isFinish) {\r
+ new AlertDialog.Builder(this)\r
+ .setTitle(title)\r
+ .setMessage(msg)\r
+ .setNeutralButton(android.R.string.ok,\r
+ new DialogInterface.OnClickListener() {\r
+ public void onClick(DialogInterface dialog,\r
+ int whichButton) {\r
+ if (isFinish) {\r
+ finish();\r
+ }\r
+ }\r
+ }).show();\r
+ }\r
+\r
+ protected void showDialog(String title, String msg) {\r
+ showDialog(title, msg, false);\r
+ }\r
+\r
+ protected void showDialog(Object target, Throwable t) {\r
+ if (t != null) {\r
+ Debug.d(target, null, t);\r
+ }\r
+ // TODO\r
+// showDialog(getString(R.string.dialogErrorTitle),\r
+// getString(R.string.dialogSystemError));\r
+ }\r
+\r
+ public void terminate(Throwable t) {\r
+ if (t != null) {\r
+ Debug.d(this, null, t);\r
+\r
+ // TODO\r
+// Toast.makeText(\r
+// this,\r
+// getString(R.string.toastSystem) + ":"\r
+// + t.getLocalizedMessage(), Toast.LENGTH_LONG);\r
+ }\r
+ moveTaskToBack(true);\r
+ }\r
+}\r
--- /dev/null
+package com.yuji.ec.utility;\r
+\r
+import android.util.Log;\r
+\r
+public class Debug {\r
+ public static final String ON_CREATE = "onCreate";\r
+ public static final String ON_DESTROY = "onDestroy";\r
+ public static final String ON_START = "onStart";\r
+ public static final String ON_STOP = "onStop";\r
+ public static final String ON_PAUSE = "onPause";\r
+ public static final String ON_RESTART = "onRestart";\r
+ public static final String ON_RESUME = "onResume";\r
+ public static final String ON_REBIND = "onRebind";\r
+ public static final String ON_UNBIND = "onUnbind";\r
+\r
+ private static final String FILTER = "com.yuji.ec";\r
+\r
+ public static void d(Object target, String msg1, String msg2){\r
+ d(target, msg1, msg2, null, null, null);\r
+ }\r
+ \r
+ public static void d(Object target, String msg1, String msg2, String msg3){\r
+ d(target, msg1, msg2, msg3, null, null);\r
+ }\r
+ \r
+ public static void d(Object target, String msg1, String msg2, String msg3, String msg4){\r
+ d(target, msg1, msg2, msg3, msg4, null);\r
+ }\r
+ \r
+ public static void d(Object target, String msg1, String msg2, String msg3, String msg4, String msg5){\r
+ if (!Log.isLoggable(FILTER, Log.DEBUG)){\r
+ return;\r
+ }\r
+ StringBuffer sb = new StringBuffer();\r
+ if (msg1 != null){\r
+ sb.append(msg1);\r
+ }\r
+ if (msg2 != null){\r
+ sb.append(msg2);\r
+ }\r
+ if (msg3 != null){\r
+ sb.append(msg3);\r
+ }\r
+ if (msg4 != null){\r
+ sb.append(msg4);\r
+ }\r
+ if (msg5 != null){\r
+ sb.append(msg5);\r
+ }\r
+ d(target, sb.toString(), (Throwable)null);\r
+ }\r
+ \r
+ public static void d(Object target, String msg){\r
+ d(target, msg, null, Log.DEBUG);\r
+ }\r
+\r
+ public static void d(Object target, String msg, Throwable t){\r
+// if (t != null){\r
+// l(t.getMessage());\r
+// }\r
+ d(target, msg, t, Log.DEBUG);\r
+ }\r
+\r
+ public static void i(Object target, String msg){\r
+ i(target, msg, null);\r
+ }\r
+\r
+ public static void i(Object target, String msg, Throwable t){\r
+ d(target, msg, t, Log.INFO);\r
+ }\r
+\r
+ private static void d(Object target, String msg, Throwable t, int level){\r
+ if (!Log.isLoggable(FILTER, level)){\r
+ return;\r
+ }\r
+ \r
+ String text = target.getClass().getName();\r
+ if (msg != null){\r
+ text += " " + msg; \r
+ }\r
+ if (t == null){\r
+ Log.d(FILTER, text);\r
+ }\r
+ else {\r
+ Log.d(FILTER, text, t); \r
+ }\r
+ }\r
+ \r
+// public static void t(Context context, String msg){\r
+// if (!Log.isLoggable(FILTER, Log.DEBUG)){\r
+// return;\r
+// }\r
+// if (context == null){\r
+// return;\r
+// }\r
+// Intent intent = new Intent(DelayReceiver.DEBUG);\r
+// intent.putExtra("TEXT", msg);\r
+// context.sendBroadcast(intent);\r
+// }\r
+// \r
+// public static void l(String msg){\r
+// if (!Log.isLoggable(FILTER, Log.DEBUG)){\r
+// return;\r
+// }\r
+// Calendar cal = Calendar.getInstance();\r
+// Date date = cal.getTime();\r
+// int ymd = DateUtil.getYmd(date);\r
+// int hm = DateUtil.getHm(date);\r
+// com.td.db.Log log = new com.td.db.Log(ymd, hm, msg);\r
+// \r
+// LogDao dao = LogDao.getInstance();\r
+// dao.add(log);\r
+// }\r
+ \r
+ public static boolean isDebug(){\r
+ return Log.isLoggable(FILTER, Log.DEBUG);\r
+ }\r
+}\r
--- /dev/null
+package com.yuji.ec.utility;\r
+\r
+public class ECException extends Exception {\r
+\r
+}\r
--- /dev/null
+package com.yuji.ec.utility;\r
+\r
+import java.util.HashMap;\r
+import java.util.Iterator;\r
+import java.util.Map;\r
+import java.util.Map.Entry;\r
+import java.util.Set;\r
+\r
+import android.content.Context;\r
+\r
+public class EditPrefUtil implements PrefUtil {\r
+ private static final String DELM = "\t";\r
+ private Map<String, String> hash = new HashMap<String, String>();\r
+ private PrefUtil pref;\r
+ \r
+ public EditPrefUtil(Context context){\r
+ pref = new PrefUtilImpl(context);\r
+ }\r
+ \r
+ public void put(String key, String value) {\r
+ hash.put(key, value);\r
+ }\r
+\r
+ public void put(String key, int value) {\r
+ hash.put(key, String.valueOf(value));\r
+ }\r
+\r
+ public String get(String key) {\r
+ String value = hash.get(key);\r
+ if (value != null){\r
+ return value;\r
+ }\r
+ value = pref.get(key);\r
+ \r
+ return value;\r
+ }\r
+\r
+ public int getInt(String key) {\r
+ return Integer.parseInt(get(key));\r
+ }\r
+\r
+ public String get(String key, String initValue) {\r
+ String value = get(key);\r
+ if (value != null){\r
+ return value;\r
+ }\r
+ hash.put(key, initValue);\r
+ return initValue;\r
+ }\r
+\r
+ public int getInt(String key, int initValue) {\r
+ return Integer.valueOf(get(key, String.valueOf(initValue)));\r
+ }\r
+ \r
+ public void update(){\r
+ Set<Entry<String, String>> set = hash.entrySet();\r
+ for (Iterator<Entry<String, String>> it = set.iterator(); it.hasNext(); ){\r
+ Entry<String, String> entry = it.next();\r
+ String key = entry.getKey();\r
+ String value = entry.getValue();\r
+ pref.put(key, value);\r
+ }\r
+ hash.clear();\r
+ }\r
+\r
+ public void remove(String key) {\r
+ hash.put(key, null);\r
+ }\r
+ \r
+ public void save(String key){\r
+ StringBuffer sb = new StringBuffer();\r
+ \r
+ Set<Entry<String, String>> set = hash.entrySet();\r
+ for (Iterator<Entry<String, String>> it = set.iterator(); it.hasNext(); ){\r
+ Entry<String, String> entry = it.next();\r
+ String prefKey = entry.getKey();\r
+ String prefValue = entry.getValue();\r
+ \r
+ sb.append(prefKey);\r
+ sb.append(DELM);\r
+ sb.append(prefValue);\r
+ sb.append(DELM);\r
+ }\r
+ pref.put(key, sb.toString());\r
+ }\r
+ \r
+ public void restore(String key){\r
+ hash.clear();\r
+\r
+ String data = pref.get(key);\r
+ String[] str = data.split(DELM);\r
+ for (int i = 0; i < str.length / 2; i++){\r
+ String prefKey = str[i * 2];\r
+ String prefValue = str[i * 2 + 1];\r
+ put(prefKey, prefValue);\r
+ }\r
+ }\r
+\r
+}\r
--- /dev/null
+package com.yuji.ec.utility;\r
+\r
+public interface PrefUtil {\r
+ void put(String key, String value);\r
+ void put(String key, int value);\r
+ String get(String key);\r
+ int getInt(String key);\r
+ String get(String key, String initValue);\r
+ int getInt(String key, int initValue);\r
+ void remove(String key);\r
+}\r
--- /dev/null
+package com.yuji.ec.utility;\r
+\r
+import android.content.Context;\r
+import android.content.SharedPreferences;\r
+import android.content.SharedPreferences.Editor;\r
+import android.content.pm.PackageManager.NameNotFoundException;\r
+\r
+public class PrefUtilImpl implements PrefUtil {\r
+ private static final String EVER_CLIP_ACTIVITY = "EverClipActivity";\r
+ private static final String PACKAGE_COM_YUJI_EC = "com.yuji.ec";\r
+ private Context context;\r
+\r
+ public PrefUtilImpl(Context context) {\r
+ this.context = context;\r
+ }\r
+\r
+ public void put(String key, String value) {\r
+ synchronized (this) {\r
+ SharedPreferences pref = null;\r
+ try {\r
+ Context ctxt = context.createPackageContext(PACKAGE_COM_YUJI_EC,\r
+ Context.CONTEXT_RESTRICTED);\r
+ pref = ctxt.getSharedPreferences(EVER_CLIP_ACTIVITY,\r
+ Context.MODE_PRIVATE);\r
+ } catch (NameNotFoundException e) {\r
+ Debug.d(this, null, e);\r
+ return;\r
+ }\r
+\r
+ Editor e = pref.edit();\r
+ e.putString(key, value);\r
+ e.commit();\r
+ }\r
+ }\r
+\r
+ public void put(String key, int value) {\r
+ put(key, String.valueOf(value));\r
+ }\r
+\r
+ public String get(String key) {\r
+ String val;\r
+ \r
+ synchronized (this) {\r
+ SharedPreferences pref = null;\r
+ try {\r
+ Context ctxt = context.createPackageContext(PACKAGE_COM_YUJI_EC,\r
+ Context.CONTEXT_RESTRICTED);\r
+ pref = ctxt.getSharedPreferences(EVER_CLIP_ACTIVITY,\r
+ Context.MODE_WORLD_READABLE);\r
+ } catch (NameNotFoundException e) {\r
+ Debug.d(this, null, e);\r
+ return null;\r
+ }\r
+ val = pref.getString(key, null);\r
+ }\r
+\r
+ return val;\r
+ }\r
+\r
+ public int getInt(String key) {\r
+ return Integer.parseInt(get(key));\r
+ }\r
+\r
+ public String get(String key, String initValue) {\r
+ String value = get(key);\r
+ if (value != null) {\r
+ return value;\r
+ }\r
+ put(key, initValue);\r
+ return initValue;\r
+ }\r
+\r
+ public int getInt(String key, int initValue) {\r
+ return Integer.valueOf(get(key, String.valueOf(initValue)));\r
+ }\r
+\r
+ public void remove(String key) {\r
+ put(key, null);\r
+ }\r
+}\r