aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/cgeo/geocaching/settings/RegisterSend2CgeoPreference.java
diff options
context:
space:
mode:
Diffstat (limited to 'main/src/cgeo/geocaching/settings/RegisterSend2CgeoPreference.java')
-rw-r--r--main/src/cgeo/geocaching/settings/RegisterSend2CgeoPreference.java122
1 files changed, 122 insertions, 0 deletions
diff --git a/main/src/cgeo/geocaching/settings/RegisterSend2CgeoPreference.java b/main/src/cgeo/geocaching/settings/RegisterSend2CgeoPreference.java
new file mode 100644
index 0000000..70c2c44
--- /dev/null
+++ b/main/src/cgeo/geocaching/settings/RegisterSend2CgeoPreference.java
@@ -0,0 +1,122 @@
+package cgeo.geocaching.settings;
+
+import cgeo.geocaching.R;
+import cgeo.geocaching.activity.ActivityMixin;
+import cgeo.geocaching.network.Network;
+import cgeo.geocaching.network.Parameters;
+import cgeo.geocaching.utils.Log;
+
+import ch.boye.httpclientandroidlib.HttpResponse;
+
+import org.apache.commons.lang3.StringUtils;
+
+import android.app.ProgressDialog;
+import android.content.Context;
+import android.os.Handler;
+import android.os.Message;
+import android.preference.Preference;
+import android.util.AttributeSet;
+import android.view.View;
+import android.view.ViewGroup;
+
+public class RegisterSend2CgeoPreference extends Preference {
+
+ ProgressDialog progressDialog;
+ NewSettingsActivity activity;
+
+ public RegisterSend2CgeoPreference(Context context) {
+ super(context);
+ }
+
+ public RegisterSend2CgeoPreference(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ public RegisterSend2CgeoPreference(Context context, AttributeSet attrs, int defStyle) {
+ super(context, attrs, defStyle);
+ }
+
+ private Handler webAuthHandler = new Handler() {
+ @Override
+ public void handleMessage(Message msg) {
+ try {
+ if (progressDialog != null && progressDialog.isShowing()) {
+ progressDialog.dismiss();
+ }
+
+ if (msg.what > 0) {
+ ActivityMixin.helpDialog(activity,
+ activity.getString(R.string.init_sendToCgeo),
+ activity.getString(R.string.init_sendToCgeo_register_ok)
+ .replace("####", String.valueOf(msg.what)));
+ } else {
+ ActivityMixin.helpDialog(activity,
+ activity.getString(R.string.init_sendToCgeo),
+ activity.getString(R.string.init_sendToCgeo_register_fail));
+ }
+ } catch (Exception e) {
+ ActivityMixin.showToast(activity, R.string.init_sendToCgeo_register_fail);
+ Log.e("SettingsActivity.webHandler", e);
+ }
+
+ if (progressDialog != null && progressDialog.isShowing()) {
+ progressDialog.dismiss();
+ }
+ }
+ };
+
+ @Override
+ protected View onCreateView(ViewGroup parent) {
+ activity = (NewSettingsActivity) getContext();
+
+ setOnPreferenceClickListener(new OnPreferenceClickListener() {
+ @Override
+ public boolean onPreferenceClick(Preference preference) {
+ final String deviceName = Settings.getWebDeviceName();
+ final String deviceCode = Settings.getWebDeviceCode();
+
+ if (StringUtils.isBlank(deviceName)) {
+ ActivityMixin.showToast(activity, R.string.err_missing_device_name);
+ return false;
+ }
+
+ progressDialog = ProgressDialog.show(activity,
+ activity.getString(R.string.init_sendToCgeo),
+ activity.getString(R.string.init_sendToCgeo_registering), true);
+ progressDialog.setCancelable(false);
+
+ (new Thread() {
+
+ @Override
+ public void run() {
+ int pin = 0;
+
+ final String nam = StringUtils.defaultString(deviceName);
+ final String cod = StringUtils.defaultString(deviceCode);
+
+ final Parameters params = new Parameters("name", nam, "code", cod);
+ HttpResponse response = Network.getRequest("http://send2.cgeo.org/auth.html", params);
+
+ if (response != null && response.getStatusLine().getStatusCode() == 200) {
+ //response was OK
+ String[] strings = Network.getResponseData(response).split(",");
+ try {
+ pin = Integer.parseInt(strings[1].trim());
+ } catch (Exception e) {
+ Log.e("webDialog", e);
+ }
+ String code = strings[0];
+ Settings.setWebNameCode(nam, code);
+ }
+
+ webAuthHandler.sendEmptyMessage(pin);
+ }
+ }).start();
+
+ return true;
+ }
+ });
+ return super.onCreateView(parent);
+ }
+
+}