diff --git a/.project b/.project
index 5e84fc879..646cc5906 100644
--- a/.project
+++ b/.project
@@ -9,6 +9,54 @@
org.eclipse.cdt.managedbuilder.core.genmakebuilder
full,incremental,
+
+ ?children?
+ ?children?=?name?=entry\\\\\\\|\\\|?name?=entry\\\\\\\|\\\|\|?name?=outputEntries\||
+
+
+ ?name?
+
+
+
+ org.eclipse.cdt.make.core.append_environment
+ true
+
+
+ org.eclipse.cdt.make.core.buildArguments
+ NDK_DEBUG=0
+
+
+ org.eclipse.cdt.make.core.buildCommand
+ ndk-build
+
+
+ org.eclipse.cdt.make.core.cleanBuildTarget
+ clean
+
+
+ org.eclipse.cdt.make.core.contents
+ org.eclipse.cdt.make.core.activeConfigSettings
+
+
+ org.eclipse.cdt.make.core.enableAutoBuild
+ false
+
+
+ org.eclipse.cdt.make.core.enableCleanBuild
+ false
+
+
+ org.eclipse.cdt.make.core.enableFullBuild
+ true
+
+
+ org.eclipse.cdt.make.core.stopOnError
+ true
+
+
+ org.eclipse.cdt.make.core.useDefaultBuildCmd
+ false
+
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index 7cec730e7..a03e43489 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -19,16 +19,14 @@
警告
该应用内容来自互联网,部分内容可能对您的生理及心理造成难以恢复的伤害。该应用作者不会对由该应用造成的后果负责。您是否愿意继续使用该应用?
- 我愿意
- 不!
数据统计
您是否愿意将使用情况发送给开发者?这对开发者维护该应用有很大帮助。在发送使用情况的同时也会发送部分设备信息(譬如设备型号、系统版本)。开发者承诺不收集任何个人身份信息数据(譬如姓名、电话号码、电邮地址)。\n\n数据收集过程采用 Google Analytics。\nGOOGLE ANALYTICS(分析)服务条款:http://www.google.com/analytics/terms/cn.html\nGoogle隐私权和条款:http://www.google.com/intl/zh-CN/policies\n\n您以后可以在设置中修改选择
- 我不在意
- 成
+ 您正在使用移动网络,可能会消耗大量的资费,是否继续使用?
+ 未检测到网络连接,是否继续使用?
再按一次退出
@@ -62,8 +60,6 @@
这很重要
上次该应用崩溃了。你愿意把错误日志发送给开发者以便以后得到更好的用户体验么?(以电子邮件的形式发送)
- 我愿意
- 门儿都没有
请在发送完日志后关闭该窗口
@@ -341,6 +337,7 @@
…
+ 警告
关闭
选择
点击查看更多
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
index dc830572c..ef8c7720b 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -7,16 +7,14 @@
警告
該應用內容來自互聯網,部分內容可能對您的生理及心理造成難以恢復的傷害。該應用作者不會對由該應用造成的後果負責。您是否願意繼續使用該應用?
- 我願意
- 不!
數據統計
您是否願意將使用情況發送給開發者?這對開發者維護該應用有很大幫助。在發送使用情況的同時也會發送部分設備信息(譬如設備型號、系統版本)。開發者承諾不收集任何個人身份信息數據(譬如姓名、電話號碼、電郵地址)。\n\n數據收集過程採用 Google Analytics。\nGOOGLE ANALYTICS(分析)服務條款:http://www.google.com/analytics/terms/cn.html\nGoogle隱私權和條款:http://www.google.com/intl/zh-CN/policies\n\n您以後可以在設置中修改選擇
- 我不在意
- 成
+ 您正在使用移動網絡,可能會消耗大量的資費,是否繼續使用?
+ 未檢測到網絡連接,是否繼續使用?
再按一次退出
@@ -50,8 +48,6 @@
這很重要
上次該應用崩潰了。你願意把錯誤日誌發送給開發者以便以後得到更好的用戶體驗麼?(以電子郵件的形式發送)
- 我願意
- 門兒都沒有
請在發送完日誌後關閉該窗口
@@ -329,6 +325,7 @@
…
+ 警告
關閉
選擇
點擊查看更多
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index 7f071ed53..934779e4b 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -7,16 +7,14 @@
警告
該應用內容來自網際網路,部分內容可能對您的生理及心理造成難以恢復的傷害。該應用作者不會對由該應用造成的後果負責。您是否願意繼續使用該應用?
- 我願意
- 不!
資料統計
您是否願意將使用情況發送給開發者?這對開發者維護該應用有很大幫助。在發送使用情況的同時也會發送部分裝置資訊(譬如裝置型號、系統版本)。開發者承諾不收集任何個人身份資訊資料(譬如姓名、電話號碼、電郵地址)。\n\n資料收集過程採用 Google Analytics。\nGOOGLE ANALYTICS(分析)服務條款:http://www.google.com/analytics/terms/cn.html\nGoogle隱私權和條款:http://www.google.com/intl/zh-CN/policies\n\n您以後可以在設定中修改選擇
- 我不在意
- 成
+ 您正在使用移動網路,可能會消耗大量的資費,是否繼續使用?
+ 未檢測到網路連線,是否繼續使用?
再按一次退出
@@ -50,8 +48,6 @@
這很重要
上次該應用崩潰了。你願意把錯誤日誌發送給開發者以便以後得到更好的使用者體驗麼?(以電子郵件的形式發送)
- 我願意
- 門兒都沒有
請在發送完日誌後關閉該視窗
@@ -329,6 +325,7 @@
…
+ 警告
關閉
選擇
點選檢視更多
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 1bf0f0828..7e42f2d39 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -20,17 +20,15 @@
Waring
- 该应用内容来自互联网,部分内容可能对您的生理及心理造成难以恢复的伤害。该应用作者不会对由该应用造成的后果负责。您是否愿意继续使用该应用?
- Yes, I would
- NO !
+ 本应用中内容来自互联网,部分内容可能对您的生理及心理造成难以恢复的伤害。该应用作者不会对由本应用造成的后果负责。您是否愿意继续使用该应用?
Usage statistics
您是否愿意将使用情况发送给开发者?这对开发者维护该应用有很大帮助。在发送使用情况的同时也会发送部分设备信息(譬如设备型号、系统版本)。开发者承诺不收集任何个人身份信息数据(譬如姓名、电话号码、电邮地址)。\n\n数据收集过程采用 Google Analytics。\nGOOGLE ANALYTICS(分析)服务条款:http://www.google.com/analytics/terms/us.html\nGoogle隐私权和条款:http://www.google.com/intl/us/policies\n\n您以后可以在设置中修改选择
- I don\'t care
- Fine
+ You are using the mobile network, it may consume a large amount of charges, whether to continue to use ?
+ Does not detect a network connection, whether to continue to use ?
Click again to exit
@@ -65,8 +63,6 @@
It is important
This application crashed last time. Would you mind to send logcat to the developer for a better user experience in future ? (via e-mail)
- Never mind
- Yes, I would
Please close the dialog after sending logcat
@@ -363,6 +359,7 @@
DISASTER
+ Warning
Close
Select
Click for more
diff --git a/src/com/hippo/ehviewer/StartActivity.java b/src/com/hippo/ehviewer/StartActivity.java
index 4b6c37389..3e85d0ecf 100644
--- a/src/com/hippo/ehviewer/StartActivity.java
+++ b/src/com/hippo/ehviewer/StartActivity.java
@@ -42,6 +42,10 @@ public class StartActivity extends Activity {
@SuppressWarnings("unused")
private static final String TAG = StartActivity.class.getSimpleName();
+ private static final int NETWORK_STATE_NONE = 0x0;
+ private static final int NETWORK_STATE_MOBILE = 0x1;
+ private static final int NETWORK_STATE_WIFI = 0x2;
+
private static final int CHECK_WARING = 0;
private static final int CHECK_ANALYTICS = 1;
private static final int CHECK_NETWORK = 2;
@@ -55,8 +59,8 @@ public class StartActivity extends Activity {
return new MaterialAlertDialog.Builder(this).setCancelable(false)
.setTitle(R.string.dailog_waring_title)
.setMessage(R.string.dailog_waring_plain)
- .setPositiveButton(R.string.dailog_waring_yes)
- .setNegativeButton(R.string.dailog_waring_no)
+ .setPositiveButton(android.R.string.ok)
+ .setNegativeButton(android.R.string.cancel)
.setButtonListener(new MaterialAlertDialog.OnClickListener() {
@Override
public boolean onClick(MaterialAlertDialog dialog, int which) {
@@ -99,11 +103,22 @@ public class StartActivity extends Activity {
}).create();
}
- private AlertDialog createNetworkErrorDialog() {
+ private AlertDialog createNetworkDialog(int state) {
+ int mesgId;
+ switch (state) {
+ case NETWORK_STATE_MOBILE:
+ mesgId = R.string.dailog_network_mobile_title;
+ break;
+ case NETWORK_STATE_NONE:
+ default:
+ mesgId = R.string.dailog_network_none_title;
+ break;
+ }
+
return new MaterialAlertDialog.Builder(this).setCancelable(false)
- .setTitle(R.string.error).setMessage(R.string.em_no_network)
- .setPositiveButton(R.string.dailog_network_error_yes)
- .setNegativeButton(R.string.dailog_network_error_no)
+ .setTitle(R.string.warning).setMessage(mesgId)
+ .setPositiveButton(android.R.string.ok)
+ .setNegativeButton(android.R.string.cancel)
.setButtonListener(new MaterialAlertDialog.OnClickListener() {
@Override
public boolean onClick(MaterialAlertDialog dialog, int which) {
@@ -124,28 +139,34 @@ public class StartActivity extends Activity {
return new MaterialAlertDialog.Builder(this).setCancelable(false)
.setTitle(R.string.dialog_send_crash_title)
.setMessage(R.string.dialog_send_crash_plain)
- .setPositiveButton(R.string.dialog_send_crash_yes)
- .setNegativeButton(R.string.dialog_send_crash_no)
+ .setPositiveButton(android.R.string.ok)
+ .setNegativeButton(android.R.string.cancel)
.setButtonListener(new MaterialAlertDialog.OnClickListener() {
@Override
public boolean onClick(MaterialAlertDialog dialog, int which) {
switch (which) {
case MaterialAlertDialog.POSITIVE:
// A wait dialog
- new MaterialAlertDialog.Builder(StartActivity.this).setCancelable(false)
+ new MaterialAlertDialog.Builder(StartActivity.this)
+ .setCancelable(false)
.setTitle(R.string.wait)
- .setMessage(R.string.dialog_wait_send_crash_msg)
+ .setMessage(
+ R.string.dialog_wait_send_crash_msg)
.setPositiveButton(android.R.string.ok)
- .setButtonListener(new MaterialAlertDialog.OnClickListener() {
- @Override
- public boolean onClick(MaterialAlertDialog dialog, int which) {
- checkOver();
- return true;
- }
- }).show();
+ .setButtonListener(
+ new MaterialAlertDialog.OnClickListener() {
+ @Override
+ public boolean onClick(
+ MaterialAlertDialog dialog,
+ int which) {
+ checkOver();
+ return true;
+ }
+ }).show();
Intent i = new Intent(Intent.ACTION_SENDTO);
i.setData(Uri.parse("mailto:ehviewersu@gmail.com"));
- i.putExtra(Intent.EXTRA_SUBJECT, "I found a bug in EhViewer !");
+ i.putExtra(Intent.EXTRA_SUBJECT,
+ "I found a bug in EhViewer !");
i.putExtra(Intent.EXTRA_TEXT, lastCrash);
startActivity(i);
lastCrash = null;
@@ -166,13 +187,13 @@ public class StartActivity extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
View wellcome = new View(this);
- wellcome.setBackgroundDrawable(getResources().getDrawable(R.drawable.welcome));
+ wellcome.setBackgroundDrawable(getResources().getDrawable(
+ R.drawable.welcome));
setContentView(wellcome);
// For fullscreen
if (Build.VERSION.SDK_INT >= 19) {
- wellcome.setSystemUiVisibility(
- View.SYSTEM_UI_FLAG_LAYOUT_STABLE
+ wellcome.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
@@ -181,7 +202,7 @@ public class StartActivity extends Activity {
}
// Show welcome in progress
- AlphaAnimation aa = new AlphaAnimation(0.3f,1.0f);
+ AlphaAnimation aa = new AlphaAnimation(0.3f, 1.0f);
aa.setDuration(2000);
aa.setAnimationListener(new AnimationListener() {
@Override
@@ -190,22 +211,22 @@ public class StartActivity extends Activity {
redirectTo();
isAnimationOver = true;
}
+
@Override
- public void onAnimationRepeat(Animation animation) {}
+ public void onAnimationRepeat(Animation animation) {
+ }
+
@Override
- public void onAnimationStart(Animation animation) {}
+ public void onAnimationStart(Animation animation) {
+ }
});
wellcome.startAnimation(aa);
check(CHECK_WARING);
}
/**
- * Order is
- * 1. check waring
- * 2. check analyics
- * 3. check network
- * 4. check crash
- * 5. check external storage
+ * Order is 1. check waring 2. check analyics 3. check network 4. check
+ * crash 5. check external storage
*
* @param order
*/
@@ -223,8 +244,9 @@ public class StartActivity extends Activity {
return;
}
case CHECK_NETWORK:
- if (!isNetworkAvailable()) {
- createNetworkErrorDialog().show();
+ int state = getNetworkState();
+ if (state != NETWORK_STATE_WIFI) {
+ createNetworkDialog(state).show();
return;
}
case CHECK_CRASH:
@@ -242,16 +264,21 @@ public class StartActivity extends Activity {
isCheckOver = true;
}
- private boolean isNetworkAvailable() {
- ConnectivityManager cm = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
- NetworkInfo mNetworkInfo = cm.getActiveNetworkInfo();
- if (mNetworkInfo == null || !mNetworkInfo.isAvailable())
- return false;
+ private int getNetworkState() {
+ ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
+ NetworkInfo mWifi = cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
+ NetworkInfo mMobile = cm
+ .getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
+
+ if (mWifi != null && mWifi.isConnected())
+ return NETWORK_STATE_WIFI;
+ else if (mMobile != null && mMobile.isConnected())
+ return NETWORK_STATE_MOBILE;
else
- return true;
+ return NETWORK_STATE_NONE;
}
- private void redirectTo(){
+ private void redirectTo() {
Intent intent = new Intent(this, GalleryListActivity.class);
startActivity(intent);
finish();
diff --git a/src/com/hippo/ehviewer/app/MaterialAlertDialog.java b/src/com/hippo/ehviewer/app/MaterialAlertDialog.java
index e05ee8f7d..0cd1998cd 100644
--- a/src/com/hippo/ehviewer/app/MaterialAlertDialog.java
+++ b/src/com/hippo/ehviewer/app/MaterialAlertDialog.java
@@ -33,7 +33,8 @@ import android.widget.TextView;
import com.hippo.ehviewer.R;
-public class MaterialAlertDialog extends AlertDialog implements View.OnClickListener, AdapterView.OnItemClickListener {
+public class MaterialAlertDialog extends AlertDialog implements
+ View.OnClickListener, AdapterView.OnItemClickListener {
public final static int ACTION = 0;
public final static int POSITIVE = 1;
@@ -52,7 +53,7 @@ public class MaterialAlertDialog extends AlertDialog implements View.OnClickList
private Button mNeutralButton;
private MaterialAlertDialog(Builder builder) {
- //super(builder.mContext);
+ // super(builder.mContext);
super(new ContextThemeWrapper(builder.mContext, R.style.AppTheme_Main));
mContext = builder.mContext;
mBuilder = builder;
@@ -78,14 +79,16 @@ public class MaterialAlertDialog extends AlertDialog implements View.OnClickList
TextView message = null;
ListView list = null;
if (inScrollView) {
- mRootView.findViewById(R.id.top_panel_noscroll).setVisibility(View.GONE);
+ mRootView.findViewById(R.id.top_panel_noscroll).setVisibility(
+ View.GONE);
mTitle = (TextView) mRootView.findViewById(R.id.title);
topPanel = (LinearLayout) mRootView.findViewById(R.id.top_panel);
message = (TextView) mRootView.findViewById(R.id.message);
} else {
mRootView.findViewById(R.id.scroll_view).setVisibility(View.GONE);
mTitle = (TextView) mRootView.findViewById(R.id.title2);
- topPanel = (LinearLayout) mRootView.findViewById(R.id.top_panel_noscroll);
+ topPanel = (LinearLayout) mRootView
+ .findViewById(R.id.top_panel_noscroll);
list = (ListView) mRootView.findViewById(R.id.list);
}
// Title
@@ -96,8 +99,10 @@ public class MaterialAlertDialog extends AlertDialog implements View.OnClickList
// Content
if (mBuilder.mCustomView != null) {
// CustomView
- if (message != null) message.setVisibility(View.GONE);
- if (list != null) list.setVisibility(View.GONE);
+ if (message != null)
+ message.setVisibility(View.GONE);
+ if (list != null)
+ list.setVisibility(View.GONE);
LinearLayout.LayoutParams lp = mBuilder.mCustomLp;
if (lp == null)
lp = new LinearLayout.LayoutParams(
@@ -107,7 +112,8 @@ public class MaterialAlertDialog extends AlertDialog implements View.OnClickList
topPanel.addView(mBuilder.mCustomView, lp);
} else if (mBuilder.mAdapter != null) {
// List
- if (message != null) message.setVisibility(View.GONE);
+ if (message != null)
+ message.setVisibility(View.GONE);
list.setAdapter(mBuilder.mAdapter);
list.setOnItemClickListener(this);
if (mBuilder.mIsSingleChoice) {
@@ -119,7 +125,8 @@ public class MaterialAlertDialog extends AlertDialog implements View.OnClickList
}
} else {
// Message
- if (list != null) list.setVisibility(View.GONE);
+ if (list != null)
+ list.setVisibility(View.GONE);
if (mBuilder.mAutoLinkMask != -1)
message.setAutoLinkMask(mBuilder.mAutoLinkMask);
message.setText(mBuilder.mMessage);
@@ -222,7 +229,6 @@ public class MaterialAlertDialog extends AlertDialog implements View.OnClickList
dismiss();
}
-
public static interface OnClickListener {
public boolean onClick(MaterialAlertDialog dialog, int which);
}
@@ -314,13 +320,29 @@ public class MaterialAlertDialog extends AlertDialog implements View.OnClickList
return this;
}
+ /**
+ * Custom view id will be R.id.custom
+ *
+ * @param view
+ * @param inScrollView
+ * @return
+ */
public Builder setView(View view, boolean inScrollView) {
mCustomView = view;
mInScrollView = inScrollView;
return this;
}
- public Builder setView(View view, boolean inScrollView, LinearLayout.LayoutParams lp) {
+ /**
+ * Custom view id will be R.id.custom
+ *
+ * @param view
+ * @param inScrollView
+ * @param lp
+ * @return
+ */
+ public Builder setView(View view, boolean inScrollView,
+ LinearLayout.LayoutParams lp) {
mCustomView = view;
mInScrollView = inScrollView;
mCustomLp = lp;
@@ -339,14 +361,15 @@ public class MaterialAlertDialog extends AlertDialog implements View.OnClickList
public Builder setItems(int itemsId, final OnClickListener listener) {
mAdapter = new ArrayAdapter(mContext,
- R.layout.select_dialog_item, android.R.id.text1,
- mContext.getResources().getTextArray(itemsId));
+ R.layout.select_dialog_item, android.R.id.text1, mContext
+ .getResources().getTextArray(itemsId));
mOnClickListener = listener;
mIsSingleChoice = false;
return this;
}
- public Builder setItems(CharSequence[] items, final OnClickListener listener) {
+ public Builder setItems(CharSequence[] items,
+ final OnClickListener listener) {
mAdapter = new ArrayAdapter(mContext,
R.layout.select_dialog_item, android.R.id.text1, items);
mOnClickListener = listener;
@@ -354,7 +377,8 @@ public class MaterialAlertDialog extends AlertDialog implements View.OnClickList
return this;
}
- public Builder setAdapter(final ListAdapter adapter, final OnClickListener listener) {
+ public Builder setAdapter(final ListAdapter adapter,
+ final OnClickListener listener) {
mAdapter = adapter;
mOnClickListener = listener;
mIsSingleChoice = false;
@@ -372,16 +396,19 @@ public class MaterialAlertDialog extends AlertDialog implements View.OnClickList
return this;
}
- public Builder setSingleChoiceItems(CharSequence[] items, int checkedItem, final OnClickListener listener) {
+ public Builder setSingleChoiceItems(CharSequence[] items,
+ int checkedItem, final OnClickListener listener) {
mAdapter = new ArrayAdapter(mContext,
- R.layout.select_dialog_singlechoice, android.R.id.text1, items);
+ R.layout.select_dialog_singlechoice, android.R.id.text1,
+ items);
mOnClickListener = listener;
mCheckedItem = checkedItem;
mIsSingleChoice = true;
return this;
}
- public Builder setSingleChoiceItems(ListAdapter adapter, int checkedItem, final OnClickListener listener) {
+ public Builder setSingleChoiceItems(ListAdapter adapter,
+ int checkedItem, final OnClickListener listener) {
mAdapter = adapter;
mOnClickListener = listener;
mCheckedItem = checkedItem;
diff --git a/src/com/hippo/ehviewer/preference/EditTextPreference.java b/src/com/hippo/ehviewer/preference/EditTextPreference.java
index 2a8911c72..57c3560d2 100644
--- a/src/com/hippo/ehviewer/preference/EditTextPreference.java
+++ b/src/com/hippo/ehviewer/preference/EditTextPreference.java
@@ -43,8 +43,8 @@ public class EditTextPreference extends DialogPreference {
@Override
protected View onCreateDialogView() {
EditText et = new EditText(getContext());
- et.setId(R.id.edittextpreference_edittext);
- et.setTextColor(getContext().getResources().getColor(R.color.secondary_text_dark));
+ et.setTextColor(getContext().getResources().getColor(
+ R.color.secondary_text_dark));
return et;
}
@@ -64,8 +64,10 @@ public class EditTextPreference extends DialogPreference {
}
@Override
- protected void onSetInitialValue(boolean restorePersistedValue, Object defaultValue) {
- setSummary(restorePersistedValue ? getPersistedString((String) defaultValue) : (String) defaultValue);
+ protected void onSetInitialValue(boolean restorePersistedValue,
+ Object defaultValue) {
+ setSummary(restorePersistedValue ? getPersistedString((String) defaultValue)
+ : (String) defaultValue);
if (!restorePersistedValue)
persistString((String) defaultValue);
}
@@ -74,10 +76,8 @@ public class EditTextPreference extends DialogPreference {
public boolean onClick(MaterialAlertDialog dialog, int which) {
super.onClick(dialog, which);
if (which == MaterialAlertDialog.POSITIVE) {
- EditText et = (EditText) dialog.findViewById(R.id.edittextpreference_edittext);
- if (et == null)
- return true;
- String value = et.getText().toString();
+ String value = ((EditText) dialog.findViewById(R.id.custom))
+ .getText().toString();
if (callChangeListener(value)) {
persistString(value);
setSummary(value);