Ray Zhang 12 tahun lalu
induk
melakukan
58c799f5c6
41 mengubah file dengan 1565 tambahan dan 569 penghapusan
  1. 30 17
      Apex/AndroidManifest.xml
  2. 7 7
      Apex/proguard-project.txt
  3. 492 337
      Apex/proguard/dump.txt
  4. 52 0
      Apex/proguard/seeds.txt
  5. TEMPAT SAMPAH
      Apex/res/drawable-xxhdpi/ic_arrow.png
  6. TEMPAT SAMPAH
      Apex/res/drawable-xxhdpi/rect_about.png
  7. TEMPAT SAMPAH
      Apex/res/drawable-xxhdpi/rect_announcements.png
  8. TEMPAT SAMPAH
      Apex/res/drawable-xxhdpi/rect_change_password.png
  9. TEMPAT SAMPAH
      Apex/res/drawable-xxhdpi/rect_history.png
  10. TEMPAT SAMPAH
      Apex/res/drawable-xxhdpi/rect_market_news.png
  11. TEMPAT SAMPAH
      Apex/res/drawable-xxhdpi/rect_search_documents.png
  12. TEMPAT SAMPAH
      Apex/res/drawable-xxhdpi/rect_search_history.png
  13. TEMPAT SAMPAH
      Apex/res/drawable-xxhdpi/rect_setting.png
  14. TEMPAT SAMPAH
      Apex/res/drawable-xxhdpi/rect_view_download_documents.png
  15. 4 2
      Apex/res/layout/activity_about.xml
  16. 29 0
      Apex/res/layout/activity_history.xml
  17. 1 1
      Apex/res/layout/activity_location_detail.xml
  18. 5 3
      Apex/res/layout/fragment_tools.xml
  19. 1 2
      Apex/res/layout/message_list_item.xml
  20. 4 2
      Apex/res/menu/function_select.xml
  21. 7 2
      Apex/res/menu/message.xml
  22. 12 0
      Apex/res/menu/search_history.xml
  23. 28 11
      Apex/res/values-zh-rCN/strings.xml
  24. 28 8
      Apex/res/values/strings.xml
  25. 56 0
      Apex/res/values/strings_activity_settings.xml
  26. 35 4
      Apex/res/xml/setting.xml
  27. 20 20
      Apex/src/com/usai/apex/AboutActivity.java
  28. 77 56
      Apex/src/com/usai/apex/Alarmreceiver.java
  29. 1 1
      Apex/src/com/usai/apex/ApexActivity.java
  30. 43 0
      Apex/src/com/usai/apex/ApexHistoryActivity.java
  31. 6 6
      Apex/src/com/usai/apex/DocumentsFragment.java
  32. 68 56
      Apex/src/com/usai/apex/FavoritesFragment.java
  33. 29 3
      Apex/src/com/usai/apex/FunctionSelectActivity.java
  34. 1 1
      Apex/src/com/usai/apex/HistoryFragment.java
  35. 1 1
      Apex/src/com/usai/apex/InnerMapActivity.java
  36. 5 5
      Apex/src/com/usai/apex/LocationDetailActivity.java
  37. 25 5
      Apex/src/com/usai/apex/MessageActivity.java
  38. 92 8
      Apex/src/com/usai/apex/SearchHistoryActivity.java
  39. 2 2
      Apex/src/com/usai/apex/ServiceLocationFragment.java
  40. 371 0
      Apex/src/com/usai/apex/SettingsActivity.java
  41. 33 9
      Apex/src/com/usai/apex/ToolsFragment.java

+ 30 - 17
Apex/AndroidManifest.xml

@@ -2,7 +2,7 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="com.usai.apex"
     android:versionCode="4"
-    android:versionName="A140412" >
+    android:versionName="A140417" >
 
     <!-- Copied from Google Maps Library/AndroidManifest.xml. -->
     <uses-sdk
@@ -10,8 +10,10 @@
         android:targetSdkVersion="18" />
 
     <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
-<!--     <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
-    <uses-permission android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT" /> -->
+    <!--
+         <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
+    <uses-permission android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT" />
+    -->
     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
     <uses-permission android:name="android.permission.INTERNET" />
@@ -102,17 +104,18 @@
         android:theme="@android:style/Theme.Holo.Light" >
 
         <!-- release key -->
-
-
-        <!--
-             <meta-data
+       <meta-data
             android:name="com.google.android.maps.v2.API_KEY"
             android:value="AIzaSyDdbk58Lx6QzaXcB_hNpSHVp3l_CJeNpoo" />
-        -->
-        <meta-data
-            android:name="com.google.android.maps.v2.API_KEY"
-            android:value="AIzaSyARPN7VaYqWGe1PsgGqp1QlhOoTdiwTqq0" />
         <!-- debug key -->
+
+
+        
+<!--                   <meta-data
+            android:name="com.google.android.maps.v2.API_KEY"
+            android:value="AIzaSyARPN7VaYqWGe1PsgGqp1QlhOoTdiwTqq0" /> -->
+       
+
         <meta-data
             android:name="com.google.android.gms.version"
             android:value="@integer/google_play_services_version" />
@@ -257,18 +260,28 @@
         </activity>
         <activity
             android:name="com.usai.apex.InnerToolsActivity"
-            android:label="@string/title_activity_inner_tools" 
-            android:screenOrientation="portrait">
+            android:label="@string/title_activity_inner_tools"
+            android:screenOrientation="portrait" >
         </activity>
         <activity
             android:name="com.usai.apex.DocumentsActivity"
-            android:label="@string/title_activity_documents" 
-            android:screenOrientation="portrait">
+            android:label="@string/title_activity_documents"
+            android:screenOrientation="portrait" >
         </activity>
         <activity
             android:name="com.usai.apex.LocalDocumentActivity"
-            android:label="@string/title_activity_localdocuments" 
-            android:screenOrientation="portrait">
+            android:label="@string/title_activity_localdocuments"
+            android:screenOrientation="portrait" >
+        </activity>
+        <activity
+            android:name="com.usai.apex.ApexHistoryActivity"
+            android:label="@string/title_activity_apexhistory"
+            android:screenOrientation="portrait" >
+        </activity>
+        <activity
+            android:name="com.usai.apex.SettingsActivity"
+            android:label="@string/title_activity_settings"
+            android:screenOrientation="portrait"  >
         </activity>
     </application>
 

+ 7 - 7
Apex/proguard-project.txt

@@ -26,13 +26,13 @@
 
 
 # Remove all Verbose/Debug logging
-#-optimizations code/removal/simple,code/removal/advanced
-#-dontobfuscate
-#-assumenosideeffects class android.util.Log {
-#    public static *** d(...);
-#    public static *** v(...);
-#    public static *** i(...);
-#}
+-optimizations code/removal/simple,code/removal/advanced
+-dontobfuscate
+-assumenosideeffects class android.util.Log {
+    public static *** d(...);
+    public static *** v(...);
+    public static *** i(...);
+}
 
 
 -keep class com.baidu.** {*;}

File diff ditekan karena terlalu besar
+ 492 - 337
Apex/proguard/dump.txt


+ 52 - 0
Apex/proguard/seeds.txt

@@ -2913,6 +2913,8 @@ com.usai.apex.AnnouncementActivity
 com.usai.apex.AnnouncementActivity: AnnouncementActivity()
 com.usai.apex.ApexActivity
 com.usai.apex.ApexActivity: ApexActivity()
+com.usai.apex.ApexHistoryActivity
+com.usai.apex.ApexHistoryActivity: ApexHistoryActivity()
 com.usai.apex.ApexTrackingApplication
 com.usai.apex.ApexTrackingApplication: ApexTrackingApplication()
 com.usai.apex.BootBroadcastReceiver
@@ -2946,6 +2948,10 @@ com.usai.apex.MessageActivity
 com.usai.apex.MessageActivity: MessageActivity()
 com.usai.apex.MessageDetailActivity
 com.usai.apex.MessageDetailActivity: MessageDetailActivity()
+com.usai.apex.R$array: int pref_example_list_titles
+com.usai.apex.R$array: int pref_example_list_values
+com.usai.apex.R$array: int pref_sync_frequency_titles
+com.usai.apex.R$array: int pref_sync_frequency_values
 com.usai.apex.R$array: int spinner_bool_val
 com.usai.apex.R$attr: int adSize
 com.usai.apex.R$attr: int adSizes
@@ -3012,6 +3018,7 @@ com.usai.apex.R$drawable: int help_fields
 com.usai.apex.R$drawable: int help_result
 com.usai.apex.R$drawable: int help_search
 com.usai.apex.R$drawable: int ic_about
+com.usai.apex.R$drawable: int ic_arrow
 com.usai.apex.R$drawable: int ic_cargo_tracking
 com.usai.apex.R$drawable: int ic_container_detail
 com.usai.apex.R$drawable: int ic_document
@@ -3040,6 +3047,15 @@ com.usai.apex.R$drawable: int ic_tools
 com.usai.apex.R$drawable: int pop_bg9
 com.usai.apex.R$drawable: int popup_down
 com.usai.apex.R$drawable: int popup_middle
+com.usai.apex.R$drawable: int rect_about
+com.usai.apex.R$drawable: int rect_announcements
+com.usai.apex.R$drawable: int rect_change_password
+com.usai.apex.R$drawable: int rect_history
+com.usai.apex.R$drawable: int rect_market_news
+com.usai.apex.R$drawable: int rect_search_documents
+com.usai.apex.R$drawable: int rect_search_history
+com.usai.apex.R$drawable: int rect_setting
+com.usai.apex.R$drawable: int rect_view_download_documents
 com.usai.apex.R$drawable: int tablehead
 com.usai.apex.R$drawable: int tableitem
 com.usai.apex.R$id: int action_addto_favorite
@@ -3047,6 +3063,7 @@ com.usai.apex.R$id: int action_custom_fields
 com.usai.apex.R$id: int action_deleteall
 com.usai.apex.R$id: int action_forgot_password
 com.usai.apex.R$id: int action_help
+com.usai.apex.R$id: int action_markallread
 com.usai.apex.R$id: int action_save_search
 com.usai.apex.R$id: int action_settings
 com.usai.apex.R$id: int aname
@@ -3179,6 +3196,7 @@ com.usai.apex.R$layout: int activity_customize_fields
 com.usai.apex.R$layout: int activity_detail
 com.usai.apex.R$layout: int activity_function_select
 com.usai.apex.R$layout: int activity_help
+com.usai.apex.R$layout: int activity_history
 com.usai.apex.R$layout: int activity_inner_map
 com.usai.apex.R$layout: int activity_inner_tools
 com.usai.apex.R$layout: int activity_location_detail
@@ -3232,6 +3250,7 @@ com.usai.apex.R$menu: int message
 com.usai.apex.R$menu: int result
 com.usai.apex.R$menu: int retrieve_password
 com.usai.apex.R$menu: int search
+com.usai.apex.R$menu: int search_history
 com.usai.apex.R$menu: int search_list
 com.usai.apex.R$menu: int web
 com.usai.apex.R$raw: int about
@@ -3240,7 +3259,9 @@ com.usai.apex.R$string: int action_deleteall
 com.usai.apex.R$string: int action_forget_password
 com.usai.apex.R$string: int action_forgot_password
 com.usai.apex.R$string: int action_help
+com.usai.apex.R$string: int action_markallread
 com.usai.apex.R$string: int action_saved_detail
+com.usai.apex.R$string: int action_saved_search
 com.usai.apex.R$string: int action_search_history
 com.usai.apex.R$string: int action_settings
 com.usai.apex.R$string: int action_sign_in_register
@@ -3287,6 +3308,27 @@ com.usai.apex.R$string: int msg_net_error
 com.usai.apex.R$string: int msg_net_passwordchangedremote
 com.usai.apex.R$string: int msg_net_resulterror
 com.usai.apex.R$string: int msg_ver_low
+com.usai.apex.R$string: int pref_default_display_name
+com.usai.apex.R$string: int pref_description_social_recommendations
+com.usai.apex.R$string: int pref_header_data_sync
+com.usai.apex.R$string: int pref_header_general
+com.usai.apex.R$string: int pref_header_notifications
+com.usai.apex.R$string: int pref_notifications_summary_off
+com.usai.apex.R$string: int pref_notifications_summary_on
+com.usai.apex.R$string: int pref_ringtone_silent
+com.usai.apex.R$string: int pref_sound_off
+com.usai.apex.R$string: int pref_sound_on
+com.usai.apex.R$string: int pref_title_add_friends_to_messages
+com.usai.apex.R$string: int pref_title_display_name
+com.usai.apex.R$string: int pref_title_new_message_notifications
+com.usai.apex.R$string: int pref_title_ringtone
+com.usai.apex.R$string: int pref_title_social_recommendations
+com.usai.apex.R$string: int pref_title_sound
+com.usai.apex.R$string: int pref_title_sync_frequency
+com.usai.apex.R$string: int pref_title_system_sync_settings
+com.usai.apex.R$string: int pref_title_vibrate
+com.usai.apex.R$string: int pref_vibrate_off
+com.usai.apex.R$string: int pref_vibrate_on
 com.usai.apex.R$string: int prompt_email
 com.usai.apex.R$string: int prompt_password
 com.usai.apex.R$string: int prompt_search_criterion
@@ -3295,12 +3337,15 @@ com.usai.apex.R$string: int search
 com.usai.apex.R$string: int str_0
 com.usai.apex.R$string: int str_2000
 com.usai.apex.R$string: int str_Loading
+com.usai.apex.R$string: int str_add_contact
+com.usai.apex.R$string: int str_address
 com.usai.apex.R$string: int str_cancel
 com.usai.apex.R$string: int str_change_success
 com.usai.apex.R$string: int str_clear
 com.usai.apex.R$string: int str_click_for_more
 com.usai.apex.R$string: int str_confirmdelete
 com.usai.apex.R$string: int str_confirmdownload
+com.usai.apex.R$string: int str_contact
 com.usai.apex.R$string: int str_containerstatus
 com.usai.apex.R$string: int str_createname
 com.usai.apex.R$string: int str_del
@@ -3309,9 +3354,11 @@ com.usai.apex.R$string: int str_detail
 com.usai.apex.R$string: int str_displayitem
 com.usai.apex.R$string: int str_download
 com.usai.apex.R$string: int str_downloadmessage
+com.usai.apex.R$string: int str_email
 com.usai.apex.R$string: int str_email_sent
 com.usai.apex.R$string: int str_failed_to_changepassword
 com.usai.apex.R$string: int str_false
+com.usai.apex.R$string: int str_fax
 com.usai.apex.R$string: int str_from
 com.usai.apex.R$string: int str_hideitem
 com.usai.apex.R$string: int str_invalid_password
@@ -3335,6 +3382,7 @@ com.usai.apex.R$string: int str_search
 com.usai.apex.R$string: int str_search_by
 com.usai.apex.R$string: int str_sendto
 com.usai.apex.R$string: int str_tech_support
+com.usai.apex.R$string: int str_tel
 com.usai.apex.R$string: int str_to
 com.usai.apex.R$string: int str_tool
 com.usai.apex.R$string: int str_true
@@ -3344,6 +3392,7 @@ com.usai.apex.R$string: int time_format
 com.usai.apex.R$string: int title_activity_about
 com.usai.apex.R$string: int title_activity_announcements
 com.usai.apex.R$string: int title_activity_apex
+com.usai.apex.R$string: int title_activity_apexhistory
 com.usai.apex.R$string: int title_activity_blank
 com.usai.apex.R$string: int title_activity_cargo_tracking
 com.usai.apex.R$string: int title_activity_customize_fields
@@ -3364,6 +3413,7 @@ com.usai.apex.R$string: int title_activity_retrieve_password
 com.usai.apex.R$string: int title_activity_search
 com.usai.apex.R$string: int title_activity_search_history
 com.usai.apex.R$string: int title_activity_search_list
+com.usai.apex.R$string: int title_activity_settings
 com.usai.apex.R$string: int title_activity_web
 com.usai.apex.R$style: int AppBaseTheme
 com.usai.apex.R$style: int AppTheme
@@ -3400,6 +3450,8 @@ com.usai.apex.SearchHistoryActivity: SearchHistoryActivity()
 com.usai.apex.SearchListActivity
 com.usai.apex.SearchListActivity: SearchListActivity()
 com.usai.apex.SearchListActivity: void onClick(android.view.View)
+com.usai.apex.SettingsActivity
+com.usai.apex.SettingsActivity: SettingsActivity()
 com.usai.apex.WebActivity
 com.usai.apex.WebActivity: WebActivity()
 org.apache.http.entity.mime.HttpMultipartMode: org.apache.http.entity.mime.HttpMultipartMode[] values()

TEMPAT SAMPAH
Apex/res/drawable-xxhdpi/ic_arrow.png


TEMPAT SAMPAH
Apex/res/drawable-xxhdpi/rect_about.png


TEMPAT SAMPAH
Apex/res/drawable-xxhdpi/rect_announcements.png


TEMPAT SAMPAH
Apex/res/drawable-xxhdpi/rect_change_password.png


TEMPAT SAMPAH
Apex/res/drawable-xxhdpi/rect_history.png


TEMPAT SAMPAH
Apex/res/drawable-xxhdpi/rect_market_news.png


TEMPAT SAMPAH
Apex/res/drawable-xxhdpi/rect_search_documents.png


TEMPAT SAMPAH
Apex/res/drawable-xxhdpi/rect_search_history.png


TEMPAT SAMPAH
Apex/res/drawable-xxhdpi/rect_setting.png


TEMPAT SAMPAH
Apex/res/drawable-xxhdpi/rect_view_download_documents.png


+ 4 - 2
Apex/res/layout/activity_about.xml

@@ -18,12 +18,14 @@
             android:id="@+id/iv_thumb"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:src="@drawable/apexlogo_2" />
+            android:src="@drawable/apexlogo_2" 
+            android:visibility="gone"/>
 
         <WebView
             android:id="@+id/webView1"
             android:layout_width="match_parent"
-            android:layout_height="wrap_content" />
+            android:layout_height="wrap_content" 
+            android:visibility="gone"/>
 
         <TextView
             android:id="@+id/tv_version"

+ 29 - 0
Apex/res/layout/activity_history.xml

@@ -0,0 +1,29 @@
+<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:id="@+id/scrollView1"
+    android:layout_width="fill_parent"
+    android:layout_height="wrap_content"
+    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" >
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="vertical" >
+
+        <ImageView
+            android:id="@+id/iv_thumb"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:src="@drawable/apexlogo_2" />
+
+        <WebView
+            android:id="@+id/webView1"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content" />
+    </LinearLayout>
+
+</ScrollView>

+ 1 - 1
Apex/res/layout/activity_location_detail.xml

@@ -70,6 +70,6 @@
         android:id="@+id/btn_addcontact"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:text="Add to contact" />
+        android:text="@string/str_add_contact" />
 
 </LinearLayout>

+ 5 - 3
Apex/res/layout/fragment_tools.xml

@@ -7,7 +7,8 @@
         android:id="@+id/iv_icon"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:src="@drawable/ic_launcher" />
+        android:src="@drawable/ic_launcher" 
+        />
 
     <TextView
         android:id="@+id/tv_toolname"
@@ -16,13 +17,14 @@
         android:layout_gravity="center"
         android:layout_weight="1"
         android:gravity="center"
-        android:text="Tool name" />
+        android:text="Tool name" 
+        android:textSize="20sp"/>
 
     <ImageView
         android:id="@+id/imageView3"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_gravity="center"
-        android:src="@android:drawable/ic_menu_info_details" />
+        android:src="@drawable/ic_arrow" />
 
 </LinearLayout>

+ 1 - 2
Apex/res/layout/message_list_item.xml

@@ -13,7 +13,7 @@
 
         android:layout_toLeftOf="@+id/btn_del"
         android:text="message"
-        android:textAppearance="?android:attr/textAppearanceMedium"  />
+        android:textAppearance="?android:attr/textAppearanceMedium" />
 
     <Button
         android:id="@+id/btn_del"
@@ -35,5 +35,4 @@
         android:text="time" />
 
 
-
 </RelativeLayout>

+ 4 - 2
Apex/res/menu/function_select.xml

@@ -3,7 +3,9 @@
     <item
         android:id="@+id/action_settings"
         android:orderInCategory="100"
-        android:showAsAction="never"
-        android:title="@string/action_settings"/>
+        android:showAsAction="always"
+        android:title="@string/action_settings"
+
+        android:icon="@drawable/rect_setting"/>
 
 </menu>

+ 7 - 2
Apex/res/menu/message.xml

@@ -1,10 +1,15 @@
 <menu xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
     tools:context="com.usai.apex.BlankActivity" >
-
+   <item
+        android:id="@+id/action_markallread"
+        android:orderInCategory="100"
+        android:showAsAction="never"
+        android:title="@string/action_markallread"/>
+    
     <item
         android:id="@+id/action_deleteall"
-        android:orderInCategory="100"
+        android:orderInCategory="200"
         android:showAsAction="never"
         android:title="@string/action_deleteall"/>
 

+ 12 - 0
Apex/res/menu/search_history.xml

@@ -0,0 +1,12 @@
+<menu xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    tools:context="com.usai.apex.BlankActivity" >
+
+    
+    <item
+        android:id="@+id/action_deleteall"
+        android:orderInCategory="200"
+        android:showAsAction="never"
+        android:title="@string/action_deleteall"/>
+
+</menu>

+ 28 - 11
Apex/res/values-zh-rCN/strings.xml

@@ -4,15 +4,17 @@
     <string name="app_name">Apex Mobile</string>
     <string name="action_settings">设置</string>
     <string name="actoin_lock_scroll">滚屏锁定</string>
-    <string name="actoin_add_favorite">收藏</string>
+    <string name="actoin_add_favorite">保存详单</string>
     <string name="actoin_save_search">保存搜索</string>
-    <string name="action_deleteall">清空消息</string>
+    <string name="action_deleteall">全部删除</string>
+    <string name="action_markallread">全部标记已读</string>
     <string name="action_forget_password">忘记密码</string>
     <string name="action_custom_fields">自定义字段</string>
     <string name="action_sign_in_register"><b>登录</b></string>
     <string name="action_sign_in_short">登录</string>
     <string name="action_search_history">搜索历史</string>
-    <string name="action_saved_detail">保存的Detail</string>
+    <string name="action_saved_search">保存的搜索</string>
+    <string name="action_saved_detail">保存的详单</string>
     <string name="action_forgot_password">Recover lost password</string>
     <string name="action_help">帮助</string>
     <string name="error_invalid_email">email地址无效</string>
@@ -31,6 +33,16 @@
     <string name="prompt_user">用户名</string>
     <string name="prompt_password">密码</string>
     <string name="search">搜索</string>
+    <string name="pref_title_vibrate">震动</string>
+    <string name="pref_vibrate_off">通知震动关</string>
+    <string name="pref_vibrate_on">通知震动开</string>
+    <string name="pref_title_sound">提示音</string>
+    <string name="pref_sound_off">示音关</string>
+    <string name="pref_sound_on">通知提示音开</string>
+    <string name="pref_header_notifications">消息通知设置</string>
+    <string name="pref_title_new_message_notifications">消息通知</string>
+    <string name="pref_notifications_summary_off">有新消息时不通知用户</string>
+    <string name="pref_notifications_summary_on">有新消息时通知用户</string>
     <string name="str_failed_to_changepassword">操作失败</string>
     <string name="str_invalid_password">密码无效</string>
     <string name="str_password_changed">密码已修改</string>
@@ -42,7 +54,7 @@
     <string name="str_click_for_more">单击查看更多信息</string>
     <string name="str_del">删除</string>
     <string name="str_tool">工具</string>
-    <string name="str_createname">为收藏项起名</string>
+    <string name="str_createname">为保存项起名</string>
     <string name="str_location">服务网点</string>
     <string name="str_savepass">保存密码</string>
     <string name="str_retrievepass">找回密码</string>
@@ -51,10 +63,16 @@
     <string name="str_false">false</string>
     <string name="str_cancel">取消</string>
     <string name="str_search">搜索</string>
+    <string name="str_address">地址:\n</string>
+    <string name="str_tel">电话:\n</string>
+    <string name="str_fax">传真:\n</string>
+    <string name="str_contact">联系人:\n</string>
+    <string name="str_email">电子邮件:\n</string>
+    <string name="str_add_contact">添加联系人</string>
     <string name="str_ver">ver:</string>
     <string name="str_notification_title">来自Apex的新消息</string>
     <string name="str_mnotification_title">条来自Apex的新消息</string>
-    <string name="str_notification_text">集装箱状态改变 @</string>
+    <string name="str_notification_text">集装箱状态改变</string>
     <string name="str_from">起始日期</string>
     <string name="str_to">结束日志</string>
     <string name="str_reset">全部清除</string>
@@ -73,17 +91,16 @@
     <string name="str_confirmdelete">确认删除</string>
     <string name="str_downloadmessage">单击下载按钮开始下载</string>
     <string name="str_localdir_error">无法访问本地目录,取消下载</string>
-    <string name="str_deletemessage">单击删除按钮开始下载</string>
+    <string name="str_deletemessage">单击删除按钮清除所有内容</string>
     <string name="str_download">下载</string>
     <string name="str_records"> 记录</string>
     <string name="str_Loading">载入中</string>
     <string name="time_format">yyyy年 MM月dd日 kk:mm:ss</string>
-     <string name="str_sendto">发送到</string>
-      <string name="str_openfile">打开方式</string>
+    <string name="str_sendto">发送到</string>
+    <string name="str_openfile">打开方式</string>
     <string name="title_activity_apex">Apex Mobile</string>
     <string name="title_activity_announcements">Announcements</string>
     <string name="title_activity_direct_tracking">DirectTracking</string>
-    <string name="title_activity_function_select">Apex</string>
     <string name="title_activity_search">Search</string>
     <string name="title_activity_customize_fields">Customize Fields</string>
     <string name="title_activity_result">Result</string>
@@ -96,11 +113,11 @@
     <string name="title_activity_search_list">Search</string>
     <string name="title_activity_retrieve_password">RetrievePassword</string>
     <string name="title_activity_message">消息</string>
-    <string name="title_activity_search_history">搜索历史</string>
-    <string name="title_activity_about">About</string>
+    <string name="title_activity_about">关于此App</string>
     <string name="title_activity_web">WebActivity</string>
     <string name="title_activity_message_detail">消息内容</string>
     <string name="title_activity_documents">文档</string>
     <string name="title_activity_localdocuments">本地文档</string>
+    <string name="title_activity_settings">设置</string>
 
 </resources>

+ 28 - 8
Apex/res/values/strings.xml

@@ -4,14 +4,16 @@
     <string name="app_name">Apex Mobile</string>
     <string name="action_settings">Settings</string>
     <string name="actoin_lock_scroll">Lock Scroll</string>
-    <string name="actoin_add_favorite">Add to favorite</string>
+    <string name="actoin_add_favorite">Save Detail</string>
     <string name="actoin_save_search">Save search</string>
-    <string name="action_deleteall">Delete All</string>
+    <string name="action_deleteall">Delete all</string>
+    <string name="action_markallread">Mark all read</string>
     <string name="action_forget_password">Forget password</string>
     <string name="action_custom_fields">Customize Fields</string>
     <string name="action_sign_in_register"><b>Login</b></string>
     <string name="action_sign_in_short">Sign in</string>
     <string name="action_search_history">Search history</string>
+    <string name="action_saved_search">Saved Search</string>
     <string name="action_saved_detail">Saved Detail</string>
     <string name="action_forgot_password">Recover lost password</string>
     <string name="action_help">Help</string>
@@ -31,6 +33,16 @@
     <string name="prompt_user">User</string>
     <string name="prompt_password">Password</string>
     <string name="search">Search</string>
+    <string name="pref_vibrate_off">Notify without vibrate</string>
+    <string name="pref_vibrate_on">Notify with vibrate</string>
+    <string name="pref_title_vibrate">Vibrate</string>
+    <string name="pref_title_sound">Sound</string>
+    <string name="pref_sound_off">Notify without sound</string>
+    <string name="pref_sound_on">Notify with sound</string>
+    <string name="pref_header_notifications">Notification setting</string>
+    <string name="pref_title_new_message_notifications">Notification</string>
+    <string name="pref_notifications_summary_off">Do not notify user when new messages received</string>
+    <string name="pref_notifications_summary_on">Notify user when new messages received</string>
     <string name="str_click_for_more">Click for more info</string>
     <string name="str_failed_to_changepassword">Failed to change password</string>
     <string name="str_invalid_password">Invalid password</string>
@@ -40,7 +52,7 @@
     <string name="str_retrieve_failed">Retrieve failed</string>
     <string name="str_invalid_pore">Invalid user name or email</string>
     <string name="str_email_sent">Email has been sent.</string>
-    <string name="str_del">del</string>
+    <string name="str_del">Del</string>
     <string name="str_true">true</string>
     <string name="str_false">false</string>
     <string name="str_cancel">Cancel</string>
@@ -50,7 +62,7 @@
     <string name="str_ver">ver:</string>
     <string name="str_notification_title">New message from Apex</string>
     <string name="str_mnotification_title"> new messages from Apex</string>
-    <string name="str_notification_text">Container status changed @</string>
+    <string name="str_notification_text">Container status changed</string>
     <string name="str_tool">Tools</string>
     <string name="str_location">Service Location</string>
     <string name="str_savepass">Save Password</string>
@@ -70,6 +82,12 @@
     <string name="str_download">Download</string>
     <string name="str_from">from</string>
     <string name="str_to">to</string>
+    <string name="str_address">Address:\n</string>
+    <string name="str_tel">Tel:\n</string>
+    <string name="str_fax">Fax:\n</string>
+    <string name="str_contact">Contact:\n</string>
+    <string name="str_email">Email:\n</string>
+    <string name="str_add_contact">Add to contact</string>
     <string name="str_version">version:</string>
     <string name="str_search_by">Search by</string>
     <string name="str_tech_support">Tech support:\nusairedant@united-us.net</string>
@@ -83,7 +101,7 @@
     <string name="title_activity_apex">Apex Mobile</string>
     <string name="title_activity_announcements">Announcements</string>
     <string name="title_activity_direct_tracking">DirectTracking</string>
-    <string name="title_activity_function_select">Apex</string>
+    <string name="title_activity_function_select">Apex Mobile</string>
     <string name="title_activity_search">Search</string>
     <string name="title_activity_customize_fields">Customize Fields</string>
     <string name="title_activity_result">Result</string>
@@ -96,14 +114,16 @@
     <string name="title_activity_search_list">Search</string>
     <string name="title_activity_retrieve_password">RetrievePassword</string>
     <string name="title_activity_message">Message</string>
-    <string name="title_activity_search_history">Search History</string>
-    <string name="title_activity_about">About</string>
+    <string name="title_activity_search_history">Saved Detail/Search</string>
+    <string name="title_activity_about">About this app</string>
     <string name="title_activity_web">WebActivity</string>
     <string name="title_activity_blank">BlankActivity</string>
     <string name="title_activity_message_detail">Message Detail</string>
-    <string name="title_activity_inner_tools">InnerToolsActivity</string>
+    <string name="title_activity_inner_tools">Tools</string>
     <string name="title_activity_documents">Documents</string>
     <string name="title_activity_localdocuments">Local documents</string>
+    <string name="title_activity_apexhistory">Apex History</string>
+    <string name="title_activity_settings">Settings</string>
     <!-- RELEASE KEY -->
     <string name="baidu_key">nqBQoSDbxrslhuzW91uViQX7</string>
     <!-- DEBUG KEY -->

+ 56 - 0
Apex/res/values/strings_activity_settings.xml

@@ -0,0 +1,56 @@
+<resources>
+
+    
+
+    <!-- Strings related to Settings -->
+
+
+    <!-- Example General settings -->
+    <string name="pref_header_general">General</string>
+    <string name="pref_title_social_recommendations">Enable social recommendations</string>
+    <string name="pref_description_social_recommendations">Recommendations for people to contact based on your message history</string>
+    <string name="pref_title_display_name">Display name</string>
+    <string name="pref_default_display_name">John Smith</string>
+    <string name="pref_title_add_friends_to_messages">Add friends to messages</string>
+
+    <string-array name="pref_example_list_titles">
+        <item>Always</item>
+        <item>When possible</item>
+        <item>Never</item>
+    </string-array>
+    <string-array name="pref_example_list_values">
+        <item>1</item>
+        <item>0</item>
+        <item>-1</item>
+    </string-array>
+
+    <!-- Example settings for Data & Sync -->
+    <string name="pref_header_data_sync">Data &amp; sync</string>
+    <string name="pref_title_sync_frequency">Sync frequency</string>
+
+    <string-array name="pref_sync_frequency_titles">
+        <item>15 minutes</item>
+        <item>30 minutes</item>
+        <item>1 hour</item>
+        <item>3 hours</item>
+        <item>6 hours</item>
+        <item>Never</item>
+    </string-array>
+    <string-array name="pref_sync_frequency_values">
+        <item>15</item>
+        <item>30</item>
+        <item>60</item>
+        <item>180</item>
+        <item>360</item>
+        <item>-1</item>
+    </string-array>
+
+    <string name="pref_title_system_sync_settings">System sync settings</string>
+
+    <!-- Example settings for Notifications -->
+
+    <string name="pref_title_ringtone">Ringtone</string>
+    <string name="pref_ringtone_silent">Silent</string>
+
+
+</resources>

+ 35 - 4
Apex/res/xml/setting.xml

@@ -1,8 +1,39 @@
 <?xml version="1.0" encoding="utf-8"?>
 <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
-    <PreferenceCategory android:title="aaa">
-        <PreferenceCategory></PreferenceCategory>
+
+    <PreferenceCategory
+        android:key="notification_setting"
+        android:title="@string/pref_header_notifications" >
+        <SwitchPreference
+            android:defaultValue="true"
+            android:key="notifications_new_message"
+            android:summary="@string/pref_notifications_summary_on"
+            android:summaryOff="@string/pref_notifications_summary_off"
+            android:summaryOn="@string/pref_notifications_summary_on"
+            android:title="@string/pref_title_new_message_notifications" />
+
+        <!-- Allows the user to choose a ringtone in the 'notification' category. -->
+        <!-- NOTE: This preference will be enabled only when the checkbox above is checked. -->
+
+
+        <!-- NOTE: This preference will be enabled only when the checkbox above is checked. -->
+        <SwitchPreference
+            android:defaultValue="true"
+            android:dependency="notifications_new_message"
+            android:key="notifications_new_message_sound"
+            android:summary="@string/pref_sound_on"
+            android:summaryOff="@string/pref_sound_off"
+            android:summaryOn="@string/pref_sound_on"
+            android:title="@string/pref_title_sound" />
+        <!-- NOTE: This preference will be enabled only when the checkbox above is checked. -->
+        <SwitchPreference
+            android:defaultValue="true"
+            android:dependency="notifications_new_message"
+            android:key="notifications_new_message_vibrate"
+            android:summary="@string/pref_vibrate_on"
+            android:summaryOff="@string/pref_vibrate_off"
+            android:summaryOn="@string/pref_vibrate_on"
+            android:title="@string/pref_title_vibrate" />
     </PreferenceCategory>
-    
 
-</PreferenceScreen>
+</PreferenceScreen>

+ 20 - 20
Apex/src/com/usai/apex/AboutActivity.java

@@ -26,26 +26,26 @@ public class AboutActivity extends Activity
 		// String str =
 		// "<a href='https://ra.apexshipping.com/main.php?action=handset_search&action_type=download_doc&sessionid=hjqvgilu0o64d22qfqgat1afk2&url=QVRwVUswa3ZFNlBFTzhLbFpYcC9rVEhSZ1h0MGd6ekpwZ2ZqTkhXNnN2SytGM0FhRkhyNG5QbkdtV2tPMXZrK2p3' target=_blank>A1303540085F.pdf</a>";
 
-		WebView wv = (WebView) findViewById(R.id.webView1);
-		String content = "";
-		try
-		{
-			InputStream in = getResources().openRawResource(R.raw.about);
-			// 获取文件的字节数
-			int lenght = in.available();
-			// 创建byte数组
-			byte[] buffer = new byte[lenght];
-			// 将文件中的数据读到byte数组中
-			in.read(buffer);
-			content = EncodingUtils.getString(buffer, "UTF-8");
-		}
-		catch (Exception e)
-		{
-			e.printStackTrace();
-		}
-		wv.getSettings().setDefaultTextEncodingName("UTF-8");
-		wv.loadData(content, "text/html", null);
-		
+//		WebView wv = (WebView) findViewById(R.id.webView1);
+//		String content = "";
+//		try
+//		{
+//			InputStream in = getResources().openRawResource(R.raw.about);
+//			// 获取文件的字节数
+//			int lenght = in.available();
+//			// 创建byte数组
+//			byte[] buffer = new byte[lenght];
+//			// 将文件中的数据读到byte数组中
+//			in.read(buffer);
+//			content = EncodingUtils.getString(buffer, "UTF-8");
+//		}
+//		catch (Exception e)
+//		{
+//			e.printStackTrace();
+//		}
+//		wv.getSettings().setDefaultTextEncodingName("UTF-8");
+//		wv.loadData(content, "text/html", null);
+//		
 		
 		try
 		{

+ 77 - 56
Apex/src/com/usai/apex/Alarmreceiver.java

@@ -158,64 +158,85 @@ public class Alarmreceiver extends BroadcastReceiver
 							+ System.currentTimeMillis() + ",0)");
 					dbUtil.CloseDB(db);
 
-					NotificationManager nManager = (NotificationManager) mcontext
-							.getSystemService(Context.NOTIFICATION_SERVICE);
+					boolean bnotify = mcontext.getSharedPreferences("setting",
+							0).getBoolean("notifications_new_message", true);
+					if (bnotify)
+					{
+						
+						boolean bsound = mcontext.getSharedPreferences("setting",
+								0).getBoolean("notifications_new_message_sound", true);
+						boolean bvibrate = mcontext.getSharedPreferences("setting",
+								0).getBoolean("notifications_new_message_vibrate", true);
+						NotificationManager nManager = (NotificationManager) mcontext
+								.getSystemService(Context.NOTIFICATION_SERVICE);
 
-					Notification notification = new Notification(
-							R.drawable.ic_launcher,
-							mcontext.getString(R.string.str_notification_title),
-							System.currentTimeMillis());
-					Intent intent = new Intent(mcontext,
-							FunctionSelectActivity.class);
-					intent.putExtra("launcher", "notification");
+						Notification notification = new Notification(
+								R.drawable.ic_launcher,
+								mcontext.getString(R.string.str_notification_title),
+								System.currentTimeMillis());
+						Intent intent = new Intent(mcontext,
+								FunctionSelectActivity.class);
+						intent.putExtra("launcher", "notification");
 
-					PendingIntent pintent = PendingIntent.getActivity(mcontext,
-							0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
-					notification.defaults = Notification.DEFAULT_ALL;
-					notification.flags = Notification.FLAG_AUTO_CANCEL;
-					notification.number = ApexTrackingApplication.ncount++;
-					if (notification.number > 1)
-						notification
-								.setLatestEventInfo(
-										mcontext,
-										notification.number
-												+ ApexTrackingApplication
-														.get_instance()
-														.getString(
-																R.string.str_mnotification_title),
-										ApexTrackingApplication
-												.get_instance()
-												.getString(
-														R.string.str_notification_text)
-												+ date, pintent);
-					else
-						notification
-								.setLatestEventInfo(
-										mcontext,
-										ApexTrackingApplication
-												.get_instance()
-												.getString(
-														R.string.str_notification_title),
-										ApexTrackingApplication
-												.get_instance()
-												.getString(
-														R.string.str_notification_text)
-												+ date, pintent);
-					nManager.notify(R.layout.activity_apex, notification);
-					
-//					 Intent intenticon = new Intent(); 
-//					 intenticon.setClass(ApexTrackingApplication
-//								.get_instance(), FunctionSelectActivity.class); 
-//					 Intent addShortcut = new Intent("com.android.launcher.action.INSTALL_SHORTCUT"); 
-//					 Parcelable icon = Intent.ShortcutIconResource.fromContext(mcontext, 
-//					 R.drawable.ic_launcher_new); 
-//					 addShortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, ApexTrackingApplication
-//								.get_instance().getString(R.string.app_name)); 
-//					 addShortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, intent); 
-//					 addShortcut.putExtra("duplicate", 0); 
-//					 addShortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, icon); 
-//					 ApexTrackingApplication
-//						.get_instance().sendBroadcast(addShortcut); 
+						PendingIntent pintent = PendingIntent.getActivity(
+								mcontext, 0, intent,
+								PendingIntent.FLAG_UPDATE_CURRENT);
+						if(bsound&&bvibrate)
+							notification.defaults = Notification.DEFAULT_ALL;
+						else if(bsound)
+							notification.defaults = Notification.DEFAULT_SOUND|Notification.DEFAULT_LIGHTS;
+						else if(bvibrate)
+							notification.defaults = Notification.DEFAULT_VIBRATE|Notification.DEFAULT_LIGHTS;
+						notification.flags = Notification.FLAG_AUTO_CANCEL;
+						notification.number = ApexTrackingApplication.ncount++;
+						if (notification.number > 1)
+							notification
+									.setLatestEventInfo(
+											mcontext,
+											notification.number
+													+ ApexTrackingApplication
+															.get_instance()
+															.getString(
+																	R.string.str_mnotification_title),
+											ApexTrackingApplication
+													.get_instance()
+													.getString(
+															R.string.str_notification_text)
+													+ date, pintent);
+						else
+							notification
+									.setLatestEventInfo(
+											mcontext,
+											ApexTrackingApplication
+													.get_instance()
+													.getString(
+															R.string.str_notification_title),
+											ApexTrackingApplication
+													.get_instance()
+													.getString(
+															R.string.str_notification_text)
+													+ date, pintent);
+						nManager.notify(R.layout.activity_apex, notification);
+					}
+
+					// Intent intenticon = new Intent();
+					// intenticon.setClass(ApexTrackingApplication
+					// .get_instance(), FunctionSelectActivity.class);
+					// Intent addShortcut = new
+					// Intent("com.android.launcher.action.INSTALL_SHORTCUT");
+					// Parcelable icon =
+					// Intent.ShortcutIconResource.fromContext(mcontext,
+					// R.drawable.ic_launcher_new);
+					// addShortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME,
+					// ApexTrackingApplication
+					// .get_instance().getString(R.string.app_name));
+					// addShortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT,
+					// intent);
+					// addShortcut.putExtra("duplicate", 0);
+					// addShortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,
+					// icon);
+					// ApexTrackingApplication
+					// .get_instance().sendBroadcast(addShortcut);
 
 					// notification
 

+ 1 - 1
Apex/src/com/usai/apex/ApexActivity.java

@@ -122,7 +122,7 @@ public class ApexActivity extends FragmentActivity /*
 		Fragment loginFragment = new LoginFragment();
 		Fragment toolsFragment = new ToolsFragment();
 		Fragment slFragment;
-		 m_bhasgoogleframework=false;
+//		 m_bhasgoogleframework=false;
 		if (m_bhasgoogleframework)
 			slFragment = new ServiceLocationFragment();
 		else

+ 43 - 0
Apex/src/com/usai/apex/ApexHistoryActivity.java

@@ -0,0 +1,43 @@
+package com.usai.apex;
+
+import java.io.InputStream;
+
+import org.apache.http.util.EncodingUtils;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.util.Log;
+import android.webkit.WebView;
+
+public class ApexHistoryActivity extends Activity
+{
+	@Override
+	protected void onCreate(Bundle savedInstanceState)
+	{
+		Log.d("AboutActivity", "onCreate");
+
+		super.onCreate(savedInstanceState);
+		setContentView(R.layout.activity_history);
+
+		WebView wv = (WebView) findViewById(R.id.webView1);
+		String content = "";
+		try
+		{
+			InputStream in = getResources().openRawResource(R.raw.about);
+			// 获取文件的字节数
+			int lenght = in.available();
+			// 创建byte数组
+			byte[] buffer = new byte[lenght];
+			// 将文件中的数据读到byte数组中
+			in.read(buffer);
+			content = EncodingUtils.getString(buffer, "UTF-8");
+		}
+		catch (Exception e)
+		{
+			e.printStackTrace();
+		}
+		wv.getSettings().setDefaultTextEncodingName("UTF-8");
+		wv.loadData(content, "text/html", null);
+		
+	}
+}

+ 6 - 6
Apex/src/com/usai/apex/DocumentsFragment.java

@@ -35,13 +35,13 @@ public class DocumentsFragment extends ListFragment
 		List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
 
 		Map<String, Object> map = new HashMap<String, Object>();
-		map.put("title", "Search documents online");
-		map.put("img", R.drawable.ic_launcher);
+		map.put("title", "Search document online");
+		map.put("img", R.drawable.rect_search_documents);
 		list.add(map);
 
 		map = new HashMap<String, Object>();
-		map.put("title", "View download documents");
-		map.put("img", R.drawable.ic_launcher);
+		map.put("title", "View downloaded document");
+		map.put("img", R.drawable.rect_view_download_documents);
 		list.add(map);
 
 	
@@ -67,7 +67,7 @@ public class DocumentsFragment extends ListFragment
 		
 		String title = (String) getData().get(position).get("title");
 		Intent intent = new Intent();
-		if(title.equals("Search documents online"))
+		if(title.equals("Search document online"))
 		{
 			intent.setClass(getActivity(), SearchListActivity.class);
 	
@@ -75,7 +75,7 @@ public class DocumentsFragment extends ListFragment
 			intent.putExtra("title", "Document Search");
 
 		}
-		else if(title.equals("View download documents"))
+		else if(title.equals("View downloaded document"))
 		{
 			intent.setClass(getActivity(), LocalDocumentActivity.class);
 //			intent.putExtra("module_name", "Announcements");

+ 68 - 56
Apex/src/com/usai/apex/FavoritesFragment.java

@@ -6,10 +6,13 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-
 import com.usai.util.dbUtil;
 
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.app.AlertDialog.Builder;
 import android.content.Context;
+import android.content.DialogInterface;
 import android.content.Intent;
 import android.database.Cursor;
 import android.database.sqlite.SQLiteDatabase;
@@ -20,6 +23,9 @@ import android.support.v4.app.ListFragment;
 import android.text.format.DateFormat;
 import android.util.Log;
 import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
 import android.view.MotionEvent;
 import android.view.View;
 import android.view.ViewGroup;
@@ -30,14 +36,17 @@ import android.widget.ListView;
 import android.widget.SimpleAdapter;
 import android.widget.TextView;
 
-public class FavoritesFragment extends ListFragment implements OnTouchListener
+public class FavoritesFragment extends ListFragment implements OnTouchListener 
 {
-	
+
 	SearchResult	searchresult	= new SearchResult();
 	BaseAdapter		adapter			= null;
 	private int		pointX, pointY, endX, endY;
 	private int		position, newpos;
-	private Button	curDel_btn;	
+	private Button	curDel_btn;
+
+
+
 	@Override
 	public void onActivityCreated(Bundle savedInstanceState)
 	{
@@ -46,7 +55,7 @@ public class FavoritesFragment extends ListFragment implements OnTouchListener
 
 		getListView().setOnTouchListener(this);
 		setListAdapter(adapter);
-//		this.getListView().setBackgroundColor(Color.WHITE);
+		// this.getListView().setBackgroundColor(Color.WHITE);
 	}
 
 	@Override
@@ -54,45 +63,49 @@ public class FavoritesFragment extends ListFragment implements OnTouchListener
 	{
 
 		Intent intent = new Intent();
-//		SQLiteDatabase db = dbUtil.OpenDB(getActivity(), null, false);
-//		Cursor c = db.query("favorites", new String[] {"params"},"_id="+searchresult.getData().get(position).get("_id"),null, null, null, null);
-//		if(c.moveToNext())
-//		{
-			String uri = (String) searchresult.getData().get(position).get("params");
-			try
-			{
-				intent = Intent.parseUri(uri, 0);
-				
-				startActivity(intent);
-			}
-			catch (URISyntaxException e)
-			{
-				// TODO Auto-generated catch block
-				e.printStackTrace();
-			}
-			
-//			intent.setclass
-//		}
-////		searchresult.getData().get(position).put("read", (long) 1);// .get("_id")
-//		dbUtil.CloseCursor(c);
-//		dbUtil.CloseDB(db);
-//		adapter.notifyDataSetChanged();
-//		super.onListItemClick(l, v, position, id);
-//
-//		// Log.i("FragmentList", "Item clicked: " + id);
-//		Intent intent = new Intent();
-//		intent.putExtra("s_id", (String) searchresult.getData().get(position)
-//				.get("s_id"));
-//		intent.putExtra("e_id", (String) searchresult.getData().get(position)
-//				.get("e_id"));
-//		intent.putExtra("msgcount", (Long) searchresult.getData().get(position)
-//				.get("msgcount"));
-//
-//		intent.setClass(this, MessageDetailActivity.class);
-		
+		// SQLiteDatabase db = dbUtil.OpenDB(getActivity(), null, false);
+		// Cursor c = db.query("favorites", new String[]
+		// {"params"},"_id="+searchresult.getData().get(position).get("_id"),null,
+		// null, null, null);
+		// if(c.moveToNext())
+		// {
+		String uri = (String) searchresult.getData().get(position)
+				.get("params");
+		try
+		{
+			intent = Intent.parseUri(uri, 0);
+
+			startActivity(intent);
+		}
+		catch (URISyntaxException e)
+		{
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+
+		// intent.setclass
+		// }
+		// // searchresult.getData().get(position).put("read", (long) 1);//
+		// .get("_id")
+		// dbUtil.CloseCursor(c);
+		// dbUtil.CloseDB(db);
+		// adapter.notifyDataSetChanged();
+		// super.onListItemClick(l, v, position, id);
+		//
+		// // Log.i("FragmentList", "Item clicked: " + id);
+		// Intent intent = new Intent();
+		// intent.putExtra("s_id", (String) searchresult.getData().get(position)
+		// .get("s_id"));
+		// intent.putExtra("e_id", (String) searchresult.getData().get(position)
+		// .get("e_id"));
+		// intent.putExtra("msgcount", (Long)
+		// searchresult.getData().get(position)
+		// .get("msgcount"));
+		//
+		// intent.setClass(this, MessageDetailActivity.class);
 
 	}
-	
+
 	private class FavoritesAdapter extends BaseAdapter
 	{
 		private LayoutInflater	mInflater;	// 动态布局映射
@@ -104,13 +117,11 @@ public class FavoritesFragment extends ListFragment implements OnTouchListener
 		{
 			// this.result = result;
 			this.mInflater = LayoutInflater.from(context);
-			SQLiteDatabase db = dbUtil
-					.OpenDB(getActivity(), null, false);
-			Cursor cursor = db.query("favorites",
-					new String[] { "_id", "create_time", "name",
-							"params" }, "user='"
-							+ ApexTrackingApplication.get_user() + "'", null,
-					null, null, "_id desc", null);
+			SQLiteDatabase db = dbUtil.OpenDB(getActivity(), null, false);
+			Cursor cursor = db.query("favorites", new String[] { "_id",
+					"create_time", "name", "params" }, "user='"
+					+ ApexTrackingApplication.get_user() + "'", null, null,
+					null, "_id desc", null);
 
 			result.add_records(cursor);
 			dbUtil.CloseCursor(cursor);
@@ -130,14 +141,13 @@ public class FavoritesFragment extends ListFragment implements OnTouchListener
 					.findViewById(R.id.tv_message);// 找某个控件
 
 			message.setText(searchresult.getData().get(position).get("name")
-							.toString());// 给该控件设置数据(数据从集合类中来)
+					.toString());// 给该控件设置数据(数据从集合类中来)
 			TextView time = (TextView) convertView.findViewById(R.id.tv_time);
 			time.setText(DateFormat.format(
 					getString(R.string.time_format),
 					(Long) searchresult.getData().get(position)
 							.get("create_time")));
 
-
 			return convertView;
 		}
 
@@ -161,7 +171,8 @@ public class FavoritesFragment extends ListFragment implements OnTouchListener
 			return 0;
 		}
 	}
-	private class SearchResult
+
+	class SearchResult
 	{
 		List<Map<String, Object>>	datalist	= new ArrayList<Map<String, Object>>();
 
@@ -180,10 +191,10 @@ public class FavoritesFragment extends ListFragment implements OnTouchListener
 				String params = c.getString(3);
 				Map<String, Object> map = new HashMap<String, Object>();
 				map.put("_id", _id);
-				
+
 				map.put("create_time", create_time);
 				map.put("name", name);
-				
+
 				map.put("params", params);
 
 				datalist.add(map);
@@ -197,6 +208,7 @@ public class FavoritesFragment extends ListFragment implements OnTouchListener
 			return datalist;
 		}
 	}
+
 	@Override
 	public boolean onTouch(View v, MotionEvent event)
 	{
@@ -247,8 +259,8 @@ public class FavoritesFragment extends ListFragment implements OnTouchListener
 						{
 							// TODO Auto-generated method stub
 
-							SQLiteDatabase db = dbUtil.OpenDB(
-									getActivity(), null, false);
+							SQLiteDatabase db = dbUtil.OpenDB(getActivity(),
+									null, false);
 							db.execSQL("delete from favorites where _id="
 									+ (Long) searchresult.getData()
 											.get(position).get("_id"));

+ 29 - 3
Apex/src/com/usai/apex/FunctionSelectActivity.java

@@ -8,13 +8,12 @@ import android.app.NotificationManager;
 import android.content.Context;
 import android.content.Intent;
 import android.content.SharedPreferences;
-import android.database.Cursor;
 import android.database.sqlite.SQLiteDatabase;
 import android.os.Bundle;
-import android.os.Parcelable;
 import android.support.v4.app.FragmentActivity;
-import android.text.TextUtils;
 import android.util.Log;
+import android.view.Menu;
+import android.view.MenuItem;
 import android.view.View;
 import android.view.View.OnClickListener;
 import android.view.inputmethod.InputMethodManager;
@@ -34,7 +33,34 @@ public class FunctionSelectActivity extends FragmentActivity implements
 	private static final int	REQUEST_CHANGEPASSWORD_ACTIVITY	= 2;
 	private static final int	REQUEST_TOOLS_ACTIVITY			= 3;
 	ArrayAdapter<String>		adapter							= null;
+	
+	@Override
+	public boolean onOptionsItemSelected(MenuItem item)
+	{
+		Intent intent = new Intent();
+		switch (item.getItemId())
+		{
+			case R.id.action_settings:
+				intent.setClass(this, SettingsActivity.class);
+				// intent.putExtra("user", user);
+				// intent.putExtra("password", password);
+//				intent.putExtra("function_name", function_name);
+//				intent.putExtra("behavior", Network.BEHAVIOR_SEARCH);
+				startActivity(intent);
+				break;
 
+			default:
+				break;
+		}
+		return super.onOptionsItemSelected(item);
+	}
+	@Override
+	public boolean onCreateOptionsMenu(Menu menu)
+	{
+		// Inflate the menu; this adds items to the action bar if it is present.
+		getMenuInflater().inflate(R.menu.function_select, menu);
+		return true;
+	}
 	@Override
 	protected void onCreate(Bundle savedInstanceState)
 	{

+ 1 - 1
Apex/src/com/usai/apex/HistoryFragment.java

@@ -172,7 +172,7 @@ public class HistoryFragment extends ListFragment implements OnTouchListener
 			return 0;
 		}
 	}
-	private class SearchResult
+	class SearchResult
 	{
 		List<Map<String, Object>>	datalist	= new ArrayList<Map<String, Object>>();
 

+ 1 - 1
Apex/src/com/usai/apex/InnerMapActivity.java

@@ -118,7 +118,7 @@ public class InnerMapActivity extends FragmentActivity
 		}
 		// setUpMapIfNeeded();
 
-		m_bhasgoogleframework = false;
+//		m_bhasgoogleframework = false;
 		
 		
 		

+ 5 - 5
Apex/src/com/usai/apex/LocationDetailActivity.java

@@ -76,19 +76,19 @@ public class LocationDetailActivity extends Activity
 		tv_name.setText(detail.Name);
 		// tv_name.setMovementMethod(LinkMovementMethod.getInstance());
 		TextView tv_addr = (TextView) findViewById(R.id.tv_addr);
-		tv_addr.setText("Address:\n"+detail.Addr);
+		tv_addr.setText(getString(R.string.str_address)+detail.Addr);
 		// tv_name.setMovementMethod(LinkMovementMethod.getInstance());
 		TextView tv_tel = (TextView) findViewById(R.id.tv_tel);
-		tv_tel.setText("Tel:\n"+detail.Tel);
+		tv_tel.setText(getString(R.string.str_tel)+detail.Tel);
 		// tv_name.setMovementMethod(LinkMovementMethod.getInstance());
 		TextView tv_fax = (TextView) findViewById(R.id.tv_fax);
-		tv_fax.setText("Fax:\n"+detail.Fax);
+		tv_fax.setText(getString(R.string.str_fax)+detail.Fax);
 		// tv_name.setMovementMethod(LinkMovementMethod.getInstance());
 		TextView tv_contact = (TextView) findViewById(R.id.tv_contact);
-		tv_contact.setText("Contact:\n"+detail.Contact);
+		tv_contact.setText(getString(R.string.str_contact)+detail.Contact);
 		// tv_name.setMovementMethod(LinkMovementMethod.getInstance());
 		TextView tv_email = (TextView) findViewById(R.id.tv_email);
-		tv_email.setText("Email:\n"+detail.Email);
+		tv_email.setText(getString(R.string.str_email)+detail.Email);
 		// tv_name.setMovementMethod(LinkMovementMethod.getInstance());
 
 		Button btn = (Button) findViewById(R.id.btn_addcontact);

+ 25 - 5
Apex/src/com/usai/apex/MessageActivity.java

@@ -77,11 +77,12 @@ public class MessageActivity extends ListActivity implements OnTouchListener
 								Log.d("sql delete" + position,
 										"delete from push_message where _id="
 												+ (Long) searchresult.getData()
-														.get(position).get("_id"));
+														.get(position)
+														.get("_id"));
 
 								dbUtil.CloseDB(db);
 								dialog.dismiss();
-								searchresult.getData().clear();//.remove(position);
+								searchresult.getData().clear();// .remove(position);
 								adapter.notifyDataSetChanged();
 							}
 						});
@@ -102,6 +103,27 @@ public class MessageActivity extends ListActivity implements OnTouchListener
 
 				break;
 			}
+			case R.id.action_markallread:
+			{
+				SQLiteDatabase db = dbUtil.OpenDB(
+						MessageActivity.this, null, false);
+				db.execSQL("update push_message set read = 1 where user = '"+ApexTrackingApplication.get_user()+"'");
+				Log.d("sql delete" + position,
+						"delete from push_message where _id="
+								+ (Long) searchresult.getData()
+										.get(position)
+										.get("_id"));
+
+				dbUtil.CloseDB(db);
+				
+				for(int i=0;i<searchresult.getData().size();i++)
+				{
+					searchresult.getData().get(i).put("read", (long) 1);
+
+				}
+//				searchresult.getData().clear();// .remove(position);
+				adapter.notifyDataSetChanged();				
+			}
 			default:
 				break;
 		}
@@ -297,9 +319,7 @@ public class MessageActivity extends ListActivity implements OnTouchListener
 			TextView message = (TextView) convertView
 					.findViewById(R.id.tv_message);// 找某个控件
 
-			message.setText(getString(R.string.str_notification_text)
-					+ searchresult.getData().get(position).get("h_time")
-							.toString());// 给该控件设置数据(数据从集合类中来)
+			message.setText(getString(R.string.str_notification_text));// 给该控件设置数据(数据从集合类中来)
 			TextView time = (TextView) convertView.findViewById(R.id.tv_time);
 			time.setText(DateFormat.format(
 					getString(R.string.time_format),

+ 92 - 8
Apex/src/com/usai/apex/SearchHistoryActivity.java

@@ -1,17 +1,101 @@
 package com.usai.apex;
 
+import com.usai.util.dbUtil;
+
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.app.AlertDialog.Builder;
+import android.content.DialogInterface;
+import android.database.sqlite.SQLiteDatabase;
 import android.os.Bundle;
 import android.support.v4.app.Fragment;
 import android.support.v4.app.FragmentActivity;
 import android.support.v4.app.FragmentTransaction;
 import android.util.Log;
 import android.view.KeyEvent;
+import android.view.Menu;
+import android.view.MenuItem;
 import android.widget.TabHost;
 
 public class SearchHistoryActivity extends FragmentActivity
 {
 	TabHost	mTabHost;
+	@Override
+	public boolean onCreateOptionsMenu(Menu menu)
+	{
+		// Inflate the menu; this adds items to the action bar if it is present.
+		getMenuInflater().inflate(R.menu.search_history, menu);
+		return true;
+	}
+
+	@Override
+	public boolean onOptionsItemSelected(MenuItem item)
+	{
+		// Intent intent = new Intent();
+		switch (item.getItemId())
+		{
+			case R.id.action_deleteall:
+			{
+				AlertDialog.Builder builder = new Builder(this);
+				builder.setMessage(getString(R.string.str_deletemessage));
+
+				builder.setTitle(getString(R.string.str_confirmdelete));
+
+				builder.setPositiveButton(getString(R.string.str_del),
+						new Dialog.OnClickListener()
+						{
 
+							@Override
+							public void onClick(DialogInterface dialog,
+									int which)
+							{
+								SQLiteDatabase db = dbUtil.OpenDB(
+										SearchHistoryActivity.this, null, false);
+								int a=mTabHost.getCurrentTab();
+								if(mTabHost.getCurrentTab()==0)
+								{
+									
+									db.execSQL("delete from history");
+									HistoryFragment f = (HistoryFragment)getSupportFragmentManager().findFragmentById(R.id.tab1);
+									f.searchresult.getData().clear();
+									f.adapter.notifyDataSetChanged();
+								}
+								else
+								{
+									db.execSQL("delete from favorites");
+									FavoritesFragment f = (FavoritesFragment)getSupportFragmentManager().findFragmentById(R.id.tab2);
+									f.searchresult.getData().clear();
+									f.adapter.notifyDataSetChanged();
+								}	
+
+
+								dbUtil.CloseDB(db);
+								dialog.dismiss();
+
+							}
+						});
+
+				builder.setNegativeButton(getString(R.string.str_cancel),
+						new Dialog.OnClickListener()
+						{
+
+							@Override
+							public void onClick(DialogInterface dialog,
+									int which)
+							{
+								dialog.dismiss();
+							}
+						});
+
+				builder.create().show();
+
+				break;
+			}
+			default:
+				break;
+		}
+		return super.onOptionsItemSelected(item);
+	}
 	@Override
 	protected void onCreate(Bundle savedInstanceState)
 	{
@@ -45,8 +129,8 @@ public class SearchHistoryActivity extends FragmentActivity
 		mTabHost.setup();
 
 		mTabHost.addTab(mTabHost
-				.newTabSpec(getString(R.string.action_search_history))
-				.setIndicator(getString(R.string.action_search_history))
+				.newTabSpec(getString(R.string.action_saved_search))
+				.setIndicator(getString(R.string.action_saved_search))
 				.setContent(R.id.tab1));
 
 		mTabHost.addTab(mTabHost.newTabSpec(getString(R.string.action_saved_detail))
@@ -54,20 +138,20 @@ public class SearchHistoryActivity extends FragmentActivity
 				.setContent(R.id.tab2));
 
 
-		Fragment loginFragment = new FavoritesFragment();
-		Fragment toolsFragment = new HistoryFragment();
+		Fragment favorites = new FavoritesFragment();
+		Fragment history = new HistoryFragment();
 
 		// Add the fragment to the activity, pushing this transaction
 		// on to the back stack.
 
 		FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
-		ft.replace(R.id.tab1, loginFragment);
+		ft.replace(R.id.tab1, history);
 		ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
-		ft.addToBackStack("Login");
+		ft.addToBackStack("search");
 
-		ft.replace(R.id.tab2, toolsFragment);
+		ft.replace(R.id.tab2, favorites);
 		ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
-		ft.addToBackStack("Tools");
+		ft.addToBackStack("detail");
 
 		ft.commit();
 

+ 2 - 2
Apex/src/com/usai/apex/ServiceLocationFragment.java

@@ -57,8 +57,8 @@ public class ServiceLocationFragment extends Fragment implements
 	HashMap<String, LocationDetail>	marker_detail		= new HashMap<String, LocationDetail>();
 	static final CameraPosition		US					= new CameraPosition.Builder()
 																.target(new LatLng(
-																		37.646374,
-																		-122.398847))
+																		39.833333,
+																		-98.3583333))
 																.zoom(2.5f)
 																.bearing(0)
 																.tilt(0)

+ 371 - 0
Apex/src/com/usai/apex/SettingsActivity.java

@@ -0,0 +1,371 @@
+package com.usai.apex;
+
+import android.annotation.TargetApi;
+import android.content.Context;
+import android.content.res.Configuration;
+import android.media.Ringtone;
+import android.media.RingtoneManager;
+import android.net.Uri;
+import android.os.Build;
+import android.os.Bundle;
+import android.preference.ListPreference;
+import android.preference.Preference;
+import android.preference.PreferenceActivity;
+import android.preference.PreferenceCategory;
+import android.preference.PreferenceFragment;
+import android.preference.PreferenceManager;
+import android.preference.RingtonePreference;
+import android.text.TextUtils;
+
+import java.util.List;
+
+/**
+ * A {@link PreferenceActivity} that presents a set of application settings. On
+ * handset devices, settings are presented as a single list. On tablets,
+ * settings are split by category, with category headers shown to the left of
+ * the list of settings.
+ * <p>
+ * See <a href="http://developer.android.com/design/patterns/settings.html">
+ * Android Design: Settings</a> for design guidelines and the <a
+ * href="http://developer.android.com/guide/topics/ui/settings.html">Settings
+ * API Guide</a> for more information on developing a Settings UI.
+ */
+public class SettingsActivity extends PreferenceActivity
+{
+	/**
+	 * Determines whether to always show the simplified settings UI, where
+	 * settings are presented in a single list. When false, settings are shown
+	 * as a master/detail two-pane view on tablets. When true, a single pane is
+	 * shown on tablets.
+	 */
+//	private static final boolean	ALWAYS_SIMPLE_PREFS	= false;
+//
+//	@Override
+//	protected void onPostCreate(Bundle savedInstanceState)
+//	{
+//		super.onPostCreate(savedInstanceState);
+//
+//		
+//	}
+
+	@Override
+	protected void onCreate(Bundle savedInstanceState)
+	{
+		
+		super.onCreate(savedInstanceState);
+		setupSimplePreferencesScreen();
+		
+	}
+
+	/**
+	 * Shows the simplified settings UI if the device configuration if the
+	 * device configuration dictates that a simplified, single-pane UI should be
+	 * shown.
+	 */
+	private void setupSimplePreferencesScreen()
+	{
+//		if (!isSimplePreferences(this))
+//		{
+//			return;
+//		}
+
+		getPreferenceManager().setSharedPreferencesName("setting");
+		// In the simplified UI, fragments are not used at all and we instead
+		// use the older PreferenceActivity APIs.
+
+		// Add 'general' preferences.
+		addPreferencesFromResource(R.xml.setting);
+
+//		// Add 'notifications' preferences, and a corresponding header.
+//		PreferenceCategory fakeHeader = new PreferenceCategory(this);
+//		fakeHeader.setTitle(R.string.pref_header_notifications);
+//		getPreferenceScreen().addPreference(fakeHeader);
+//		addPreferencesFromResource(R.xml.pref_notification);
+//
+//		// Add 'data and sync' preferences, and a corresponding header.
+//		fakeHeader = new PreferenceCategory(this);
+//		fakeHeader.setTitle(R.string.pref_header_data_sync);
+//		getPreferenceScreen().addPreference(fakeHeader);
+//		addPreferencesFromResource(R.xml.pref_data_sync);
+//
+//		// Bind the summaries of EditText/List/Dialog/Ringtone preferences to
+//		// their values. When their values change, their summaries are updated
+//		// to reflect the new value, per the Android Design guidelines.
+//		bindPreferenceSummaryToValue(findPreference("example_text"));
+//		bindPreferenceSummaryToValue(findPreference("example_list"));
+//		bindPreferenceSummaryToValue(findPreference("notifications_new_message_ringtone"));
+//		bindPreferenceSummaryToValue(findPreference("sync_frequency"));
+	}
+
+//	/** {@inheritDoc} */
+//	@Override
+//	public boolean onIsMultiPane()
+//	{
+//		return isXLargeTablet(this) && !isSimplePreferences(this);
+//	}
+
+	/**
+	 * Helper method to determine if the device has an extra-large screen. For
+	 * example, 10" tablets are extra-large.
+	 */
+//	private static boolean isXLargeTablet(Context context)
+//	{
+//		return (context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_XLARGE;
+//	}
+
+	/**
+	 * Determines whether the simplified settings UI should be shown. This is
+	 * true if this is forced via {@link #ALWAYS_SIMPLE_PREFS}, or the device
+	 * doesn't have newer APIs like {@link PreferenceFragment}, or the device
+	 * doesn't have an extra-large screen. In these cases, a single-pane
+	 * "simplified" settings UI should be shown.
+	 */
+//	private static boolean isSimplePreferences(Context context)
+//	{
+//		return ALWAYS_SIMPLE_PREFS
+//				|| Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB
+//				|| !isXLargeTablet(context);
+//	}
+
+//	/** {@inheritDoc} */
+//	@Override
+//	@TargetApi(Build.VERSION_CODES.HONEYCOMB)
+//	public void onBuildHeaders(List<Header> target)
+//	{
+//		if (!isSimplePreferences(this))
+//		{
+//			loadHeadersFromResource(R.xml.pref_headers, target);
+//		}
+//	}
+
+	/**
+	 * A preference value change listener that updates the preference's summary
+	 * to reflect its new value.
+	 */
+	// private static Preference.OnPreferenceChangeListener
+	// sBindPreferenceSummaryToValueListener = new
+	// Preference.OnPreferenceChangeListener()
+	// {
+	// @Override
+	// public boolean onPreferenceChange(
+	// Preference preference,
+	// Object value)
+	// {
+	// String stringValue = value
+	// .toString();
+	//
+	// if (preference instanceof ListPreference)
+	// {
+	// // For
+	// // list
+	// // preferences,
+	// // look
+	// // up
+	// // the
+	// // correct
+	// // display
+	// // value
+	// // in
+	// // the
+	// // preference's
+	// // 'entries'
+	// // list.
+	// ListPreference listPreference = (ListPreference) preference;
+	// int index = listPreference
+	// .findIndexOfValue(stringValue);
+	//
+	// // Set
+	// // the
+	// // summary
+	// // to
+	// // reflect
+	// // the
+	// // new
+	// // value.
+	// preference
+	// .setSummary(index >= 0 ? listPreference
+	// .getEntries()[index]
+	// : null);
+	//
+	// }
+	// else if (preference instanceof RingtonePreference)
+	// {
+	// // For
+	// // ringtone
+	// // preferences,
+	// // look
+	// // up
+	// // the
+	// // correct
+	// // display
+	// // value
+	// // using
+	// // RingtoneManager.
+	// if (TextUtils
+	// .isEmpty(stringValue))
+	// {
+	// // Empty
+	// // values
+	// // correspond
+	// // to
+	// // 'silent'
+	// // (no
+	// // ringtone).
+	// preference
+	// .setSummary(R.string.pref_ringtone_silent);
+	//
+	// }
+	// else
+	// {
+	// Ringtone ringtone = RingtoneManager
+	// .getRingtone(
+	// preference
+	// .getContext(),
+	// Uri.parse(stringValue));
+	//
+	// if (ringtone == null)
+	// {
+	// // Clear
+	// // the
+	// // summary
+	// // if
+	// // there
+	// // was
+	// // a
+	// // lookup
+	// // error.
+	// preference
+	// .setSummary(null);
+	// }
+	// else
+	// {
+	// // Set
+	// // the
+	// // summary
+	// // to
+	// // reflect
+	// // the
+	// // new
+	// // ringtone
+	// // display
+	// // name.
+	// String name = ringtone
+	// .getTitle(preference
+	// .getContext());
+	// preference
+	// .setSummary(name);
+	// }
+	// }
+	//
+	// }
+	// else
+	// {
+	// // For
+	// // all
+	// // other
+	// // preferences,
+	// // set
+	// // the
+	// // summary
+	// // to
+	// // the
+	// // value's
+	// // simple
+	// // string
+	// // representation.
+	// preference
+	// .setSummary(stringValue);
+	// }
+	// return true;
+	// }
+	// };
+
+	/**
+	 * Binds a preference's summary to its value. More specifically, when the
+	 * preference's value is changed, its summary (line of text below the
+	 * preference title) is updated to reflect the value. The summary is also
+	 * immediately updated upon calling this method. The exact display format is
+	 * dependent on the type of preference.
+	 * 
+	 * @see #sBindPreferenceSummaryToValueListener
+	 */
+//	private static void bindPreferenceSummaryToValue(Preference preference)
+//	{
+//		// Set the listener to watch for value changes.
+//		preference
+//				.setOnPreferenceChangeListener(sBindPreferenceSummaryToValueListener);
+//
+//		// Trigger the listener immediately with the preference's
+//		// current value.
+//		sBindPreferenceSummaryToValueListener.onPreferenceChange(
+//				preference,
+//				PreferenceManager.getDefaultSharedPreferences(
+//						preference.getContext()).getString(preference.getKey(),
+//						""));
+//	}
+
+	/**
+	 * This fragment shows general preferences only. It is used when the
+	 * activity is showing a two-pane settings UI.
+	 */
+//	@TargetApi(Build.VERSION_CODES.HONEYCOMB)
+//	public static class GeneralPreferenceFragment extends PreferenceFragment
+//	{
+//		@Override
+//		public void onCreate(Bundle savedInstanceState)
+//		{
+//			super.onCreate(savedInstanceState);
+//			addPreferencesFromResource(R.xml.pref_general);
+//
+//			// Bind the summaries of EditText/List/Dialog/Ringtone preferences
+//			// to their values. When their values change, their summaries are
+//			// updated to reflect the new value, per the Android Design
+//			// guidelines.
+//			bindPreferenceSummaryToValue(findPreference("example_text"));
+//			bindPreferenceSummaryToValue(findPreference("example_list"));
+//		}
+//	}
+
+	/**
+	 * This fragment shows notification preferences only. It is used when the
+	 * activity is showing a two-pane settings UI.
+	 */
+//	@TargetApi(Build.VERSION_CODES.HONEYCOMB)
+//	public static class NotificationPreferenceFragment extends
+//			PreferenceFragment
+//	{
+//		@Override
+//		public void onCreate(Bundle savedInstanceState)
+//		{
+//			super.onCreate(savedInstanceState);
+//			addPreferencesFromResource(R.xml.pref_notification);
+//
+//			// Bind the summaries of EditText/List/Dialog/Ringtone preferences
+//			// to their values. When their values change, their summaries are
+//			// updated to reflect the new value, per the Android Design
+//			// guidelines.
+//			bindPreferenceSummaryToValue(findPreference("notifications_new_message_ringtone"));
+//		}
+//	}
+
+	/**
+	 * This fragment shows data and sync preferences only. It is used when the
+	 * activity is showing a two-pane settings UI.
+	 */
+//	@TargetApi(Build.VERSION_CODES.HONEYCOMB)
+//	public static class DataSyncPreferenceFragment extends PreferenceFragment
+//	{
+//		@Override
+//		public void onCreate(Bundle savedInstanceState)
+//		{
+//			super.onCreate(savedInstanceState);
+//			addPreferencesFromResource(R.xml.pref_data_sync);
+//
+//			// Bind the summaries of EditText/List/Dialog/Ringtone preferences
+//			// to their values. When their values change, their summaries are
+//			// updated to reflect the new value, per the Android Design
+//			// guidelines.
+//			bindPreferenceSummaryToValue(findPreference("sync_frequency"));
+//		}
+//	}
+}

+ 33 - 9
Apex/src/com/usai/apex/ToolsFragment.java

@@ -145,32 +145,43 @@ public class ToolsFragment extends ListFragment
 		Map<String, Object> map = new HashMap<String, Object>();
 		map.put("title", "Market news");
 		map.put("info", "google 1");
-		map.put("img", R.drawable.ic_launcher);
+		map.put("img", R.drawable.rect_market_news);
 		list.add(map);
 
 		map = new HashMap<String, Object>();
 		map.put("title", "Announcements");
 		map.put("info", "google 2");
-		map.put("img", R.drawable.ic_launcher);
+		map.put("img", R.drawable.rect_announcements);
 		list.add(map);
 
 		if (login)
 		{
 			map = new HashMap<String, Object>();
-			map.put("title", "Search History");
+			map.put("title", "Saved Detail/Search");
 			map.put("info", "google 2");
-			map.put("img", R.drawable.ic_launcher);
+			map.put("img", R.drawable.rect_search_history);
 			list.add(map);
 
 			map = new HashMap<String, Object>();
 			map.put("title", "Change Password");
-			map.put("img", R.drawable.ic_launcher);
+			map.put("img", R.drawable.rect_change_password);
+			list.add(map);
+			map = new HashMap<String, Object>();
+			map.put("title", "Setting");
+			map.put("img", R.drawable.rect_setting);
 			list.add(map);
 		}
+		
+		map = new HashMap<String, Object>();
+		map.put("title", "Apex History");
+
+		map.put("img", R.drawable.rect_history);
+		list.add(map);
+		
 		map = new HashMap<String, Object>();
-		map.put("title", "About");
+		map.put("title", "About this App");
 		map.put("info", "google 2");
-		map.put("img", R.drawable.ic_launcher);
+		map.put("img", R.drawable.rect_about);
 		list.add(map);
 
 		return list;
@@ -204,11 +215,11 @@ public class ToolsFragment extends ListFragment
 			intent.setClass(getActivity(), AnnouncementActivity.class);
 			intent.putExtra("module_name", "Announcements");
 		}
-		else if (title.equals("About"))
+		else if (title.equals("About this App"))
 		{
 			intent.setClass(getActivity(), AboutActivity.class);
 		}
-		else if (title.equals("Search History"))
+		else if (title.equals("Saved Detail/Search"))
 		{
 			intent.setClass(getActivity(), SearchHistoryActivity.class);
 		}
@@ -219,7 +230,20 @@ public class ToolsFragment extends ListFragment
 			startActivityForResult(intent, REQUEST_CHANGEPASSWORD_ACTIVITY);
 			return;
 		}
+		else if (title.equals("Apex History"))
+		{
+			intent.setClass(getActivity(), ApexHistoryActivity.class);
+
+//			startActivityForResult(intent, REQUEST_CHANGEPASSWORD_ACTIVITY);
+//			return;
+		}
+		else if (title.equals("Setting"))
+		{
+			intent.setClass(getActivity(), SettingsActivity.class);
 
+//			startActivityForResult(intent, REQUEST_CHANGEPASSWORD_ACTIVITY);
+//			return;
+		}
 		startActivity(intent);
 
 	}

Beberapa file tidak ditampilkan karena terlalu banyak file yang berubah dalam diff ini