/*
* Tweetings - Twitter client for Android
*
* Copyright (C) 2012-2013 RBD Solutions Limited <apps@tweetings.net>
* Copyright (C) 2012 Mariotaku Lee <mariotaku.lee@gmail.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.dwdesign.tweetings.activity;
import com.dwdesign.tweetings.R;
import com.dwdesign.tweetings.provider.TweetStore.Accounts;
import android.content.Intent;
import android.os.Bundle;
import android.text.Editable;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.RadioGroup.OnCheckedChangeListener;
import android.widget.TextView;
public class EditAPIActivity extends BaseDialogActivity implements OnCheckedChangeListener, OnClickListener {
private EditText mEditRestBaseURL, mEditSearchBaseURL, mEditUploadBaseURL, mEditSigningRESTBaseURL,
mEditOAuthBaseURL, mEditSigningOAuthBaseURL;
private RadioGroup mEditAuthType;
private RadioButton mButtonOAuth, mButtonxAuth, mButtonBasic, mButtonTwipOMode;
private Button mSaveButton;
private String mRestBaseURL, mSearchBaseURL, mUploadBaseURL, mSigningRESTBaseURL, mOAuthBaseURL,
mSigningOAuthBaseURL;
private TextView mAdvancedAPIConfigLabel;
private int mAuthType;
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId) {
case R.id.oauth: {
mAuthType = Accounts.AUTH_TYPE_OAUTH;
break;
}
case R.id.xauth: {
mAuthType = Accounts.AUTH_TYPE_XAUTH;
break;
}
case R.id.basic: {
mAuthType = Accounts.AUTH_TYPE_BASIC;
break;
}
case R.id.twip_o: {
mAuthType = Accounts.AUTH_TYPE_TWIP_O_MODE;
break;
}
}
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.save: {
saveEditedText();
final Bundle bundle = new Bundle();
bundle.putString(Accounts.REST_BASE_URL, mRestBaseURL);
bundle.putString(Accounts.SEARCH_BASE_URL, mSearchBaseURL);
bundle.putString(Accounts.UPLOAD_BASE_URL, mUploadBaseURL);
bundle.putString(Accounts.SIGNING_REST_BASE_URL, mSigningRESTBaseURL);
bundle.putString(Accounts.OAUTH_BASE_URL, mOAuthBaseURL);
bundle.putString(Accounts.SIGNING_OAUTH_BASE_URL, mSigningOAuthBaseURL);
bundle.putInt(Accounts.AUTH_TYPE, mAuthType);
setResult(RESULT_OK, new Intent().putExtras(bundle));
finish();
break;
}
case R.id.advanced_api_config_label: {
final View stub_view = findViewById(R.id.stub_advanced_api_config);
final View inflated_view = findViewById(R.id.advanced_api_config);
if (stub_view != null) {
stub_view.setVisibility(View.VISIBLE);
mAdvancedAPIConfigLabel.setCompoundDrawablesWithIntrinsicBounds(R.drawable.expander_open_holo, 0,
0, 0);
mEditSearchBaseURL = (EditText) findViewById(R.id.search_base_url);
mEditSearchBaseURL.setText(mSearchBaseURL != null ? mSearchBaseURL : DEFAULT_SEARCH_BASE_URL);
mEditUploadBaseURL = (EditText) findViewById(R.id.upload_base_url);
mEditUploadBaseURL.setText(mUploadBaseURL != null ? mUploadBaseURL : DEFAULT_UPLOAD_BASE_URL);
mEditSigningRESTBaseURL = (EditText) findViewById(R.id.signing_rest_base_url);
mEditSigningRESTBaseURL.setText(mSigningRESTBaseURL != null ? mSigningRESTBaseURL
: DEFAULT_SIGNING_REST_BASE_URL);
mEditOAuthBaseURL = (EditText) findViewById(R.id.oauth_base_url);
mEditOAuthBaseURL.setText(mOAuthBaseURL != null ? mOAuthBaseURL : DEFAULT_OAUTH_BASE_URL);
mEditSigningOAuthBaseURL = (EditText) findViewById(R.id.signing_oauth_base_url);
mEditSigningOAuthBaseURL.setText(mSigningOAuthBaseURL != null ? mSigningOAuthBaseURL
: DEFAULT_SIGNING_OAUTH_BASE_URL);
} else if (inflated_view != null) {
final boolean is_visible = inflated_view.getVisibility() == View.VISIBLE;
final int compound_res = is_visible ? R.drawable.expander_close_holo
: R.drawable.expander_open_holo;
mAdvancedAPIConfigLabel.setCompoundDrawablesWithIntrinsicBounds(compound_res, 0, 0, 0);
inflated_view.setVisibility(is_visible ? View.GONE : View.VISIBLE);
}
break;
}
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.edit_api);
mEditRestBaseURL = (EditText) findViewById(R.id.rest_base_url);
mEditAuthType = (RadioGroup) findViewById(R.id.auth_type);
mButtonOAuth = (RadioButton) findViewById(R.id.oauth);
mButtonxAuth = (RadioButton) findViewById(R.id.xauth);
mButtonBasic = (RadioButton) findViewById(R.id.basic);
mButtonTwipOMode = (RadioButton) findViewById(R.id.twip_o);
mAdvancedAPIConfigLabel = (TextView) findViewById(R.id.advanced_api_config_label);
mSaveButton = (Button) findViewById(R.id.save);
Bundle bundle = savedInstanceState == null ? getIntent().getExtras() : savedInstanceState;
if (bundle == null) {
bundle = new Bundle();
}
mRestBaseURL = bundle.getString(Accounts.REST_BASE_URL);
mSearchBaseURL = bundle.getString(Accounts.SEARCH_BASE_URL);
mUploadBaseURL = bundle.getString(Accounts.UPLOAD_BASE_URL);
mSigningRESTBaseURL = bundle.getString(Accounts.SIGNING_REST_BASE_URL);
mOAuthBaseURL = bundle.getString(Accounts.OAUTH_BASE_URL);
mSigningOAuthBaseURL = bundle.getString(Accounts.SIGNING_OAUTH_BASE_URL);
mAuthType = bundle.getInt(Accounts.AUTH_TYPE);
mEditAuthType.setOnCheckedChangeListener(this);
mAdvancedAPIConfigLabel.setOnClickListener(this);
mSaveButton.setOnClickListener(this);
mEditRestBaseURL.setText(mRestBaseURL != null ? mRestBaseURL : DEFAULT_REST_BASE_URL);
mButtonOAuth.setChecked(mAuthType == Accounts.AUTH_TYPE_OAUTH);
mButtonxAuth.setChecked(mAuthType == Accounts.AUTH_TYPE_XAUTH);
mButtonBasic.setChecked(mAuthType == Accounts.AUTH_TYPE_BASIC);
mButtonTwipOMode.setChecked(mAuthType == Accounts.AUTH_TYPE_TWIP_O_MODE);
}
@Override
public void onSaveInstanceState(Bundle outState) {
saveEditedText();
outState.putString(Accounts.REST_BASE_URL, mRestBaseURL);
outState.putString(Accounts.SEARCH_BASE_URL, mSearchBaseURL);
outState.putString(Accounts.UPLOAD_BASE_URL, mUploadBaseURL);
outState.putString(Accounts.SIGNING_REST_BASE_URL, mSigningRESTBaseURL);
outState.putString(Accounts.OAUTH_BASE_URL, mOAuthBaseURL);
outState.putString(Accounts.SIGNING_OAUTH_BASE_URL, mSigningOAuthBaseURL);
outState.putInt(Accounts.AUTH_TYPE, mAuthType);
super.onSaveInstanceState(outState);
}
private void saveEditedText() {
if (mEditRestBaseURL != null) {
final Editable ed = mEditRestBaseURL.getText();
if (ed != null) {
mRestBaseURL = ed.toString();
}
}
if (mEditSearchBaseURL != null) {
final Editable ed = mEditSearchBaseURL.getText();
if (ed != null) {
mSearchBaseURL = ed.toString();
}
}
if (mEditUploadBaseURL != null) {
final Editable ed = mEditUploadBaseURL.getText();
if (ed != null) {
mUploadBaseURL = ed.toString();
}
}
if (mEditSigningRESTBaseURL != null) {
final Editable ed = mEditSigningRESTBaseURL.getText();
if (ed != null) {
mSigningRESTBaseURL = ed.toString();
}
}
if (mEditOAuthBaseURL != null) {
final Editable ed = mEditOAuthBaseURL.getText();
if (ed != null) {
mOAuthBaseURL = ed.toString();
}
}
if (mEditSigningOAuthBaseURL != null) {
final Editable ed = mEditSigningOAuthBaseURL.getText();
if (ed != null) {
mSigningOAuthBaseURL = ed.toString();
}
}
}
}