package net.osmand.plus.osmedit; import android.content.Context; import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; import android.preference.CheckBoxPreference; import android.preference.DialogPreference; import android.preference.Preference; import android.preference.Preference.OnPreferenceClickListener; import android.preference.PreferenceScreen; import android.util.AttributeSet; import android.view.View; import android.widget.TextView; import android.widget.Toast; import net.osmand.plus.OsmAndAppCustomization; import net.osmand.plus.OsmandApplication; import net.osmand.plus.OsmandPlugin; import net.osmand.plus.R; import net.osmand.plus.activities.SettingsBaseActivity; public class SettingsOsmEditingActivity extends SettingsBaseActivity { @Override public void onCreate(Bundle savedInstanceState) { ((OsmandApplication) getApplication()).applyTheme(this); super.onCreate(savedInstanceState); getToolbar().setTitle(R.string.osm_settings); @SuppressWarnings("deprecation") PreferenceScreen grp = getPreferenceScreen(); DialogPreference loginDialogPreference = new OsmLoginDataDialogPreference(this, null); grp.addPreference(loginDialogPreference); CheckBoxPreference poiEdit = createCheckBoxPreference(settings.OFFLINE_EDITION, R.string.offline_edition, R.string.offline_edition_descr); grp.addPreference(poiEdit); Preference pref = new Preference(this); pref.setTitle(R.string.local_openstreetmap_settings); pref.setSummary(R.string.local_openstreetmap_settings_descr); pref.setKey("local_openstreetmap_points"); pref.setOnPreferenceClickListener(new OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { OsmAndAppCustomization appCustomization = getMyApplication().getAppCustomization(); final Intent favorites = new Intent(SettingsOsmEditingActivity.this, appCustomization.getFavoritesActivity()); favorites.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); getMyApplication().getSettings().FAVORITES_TAB.set(R.string.osm_edits); startActivity(favorites); return true; } }); grp.addPreference(pref); } public class OsmLoginDataDialogPreference extends DialogPreference { private TextView userNameEditText; private TextView passwordEditText; public OsmLoginDataDialogPreference(Context context, AttributeSet attrs) { super(context, attrs); setDialogLayoutResource(R.layout.osm_user_login_details); setPositiveButtonText(android.R.string.ok); setNegativeButtonText(android.R.string.cancel); setDialogTitle(R.string.open_street_map_login_and_pass); setTitle(R.string.open_street_map_login_and_pass); setSummary(R.string.open_street_map_login_descr); setDialogIcon(null); } @Override protected void onBindDialogView(View view) { userNameEditText = (TextView) view.findViewById(R.id.user_name_field); userNameEditText.setText(settings.USER_NAME.get()); passwordEditText = (TextView) view.findViewById(R.id.password_field); passwordEditText.setText(settings.USER_PASSWORD.get()); super.onBindDialogView(view); } @Override protected void onDialogClosed(boolean positiveResult) { if (positiveResult) { settings.USER_NAME.set(userNameEditText.getText().toString()); settings.USER_PASSWORD.set(passwordEditText.getText().toString()); new ValidateOsmLoginDetailsTask(SettingsOsmEditingActivity.this).execute(); } } } private static class ValidateOsmLoginDetailsTask extends AsyncTask<Void, Void, OsmBugsUtil.OsmBugResult> { private final Context context; public ValidateOsmLoginDetailsTask(Context context) { this.context = context; } @Override protected OsmBugsUtil.OsmBugResult doInBackground(Void... params) { OsmEditingPlugin plugin = OsmandPlugin.getPlugin(OsmEditingPlugin.class); assert plugin != null; OsmBugsRemoteUtil remoteUtil = plugin.getOsmNotesRemoteUtil(); return remoteUtil.validateLoginDetails(); } @Override protected void onPostExecute(OsmBugsUtil.OsmBugResult osmBugResult) { if (osmBugResult.warning != null) { Toast.makeText(context, osmBugResult.warning, Toast.LENGTH_LONG).show(); } } } }