package com.facebook.android;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.Activity;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class FQLQuery extends Dialog {
private EditText mFQLQuery;
private TextView mFQLOutput;
private Button mSubmitButton;
private Activity activity;
private Handler mHandler;
private ProgressDialog dialog;
public FQLQuery(Activity activity) {
super(activity);
this.activity = activity;
setTitle(R.string.fqlquery);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mHandler = new Handler();
setContentView(R.layout.fql_query);
LayoutParams params = getWindow().getAttributes();
params.width = LayoutParams.FILL_PARENT;
params.height = LayoutParams.FILL_PARENT;
getWindow().setAttributes((android.view.WindowManager.LayoutParams) params);
mFQLQuery = (EditText) findViewById(R.id.fqlquery);
mFQLOutput = (TextView) findViewById(R.id.fqlOutput);
mSubmitButton = (Button) findViewById(R.id.submit_button);
mSubmitButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
((InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE))
.hideSoftInputFromWindow(mFQLQuery.getWindowToken(), 0);
dialog = ProgressDialog.show(FQLQuery.this.activity, "",
FQLQuery.this.activity.getString(R.string.please_wait), true, true);
/*
* Source tag: fql_query_tag
*/
String query = mFQLQuery.getText().toString();
Bundle params = new Bundle();
params.putString("method", "fql.query");
params.putString("query", query);
Utility.mAsyncRunner.request(null, params, new FQLRequestListener());
}
});
}
public class FQLRequestListener extends BaseRequestListener {
@Override
public void onComplete(final String response, final Object state) {
dialog.dismiss();
/*
* Output can be a JSONArray or a JSONObject.
* Try JSONArray and if there's a JSONException, parse to JSONObject
*/
try {
JSONArray json = new JSONArray(response);
setText(json.toString(2));
} catch (JSONException e) {
try {
/*
* JSONObject probably indicates there was some error
* Display that error, but for end user you should parse the
* error and show appropriate message
*/
JSONObject json = new JSONObject(response);
setText(json.toString(2));
} catch (JSONException e1) {
setText(activity.getString(R.string.exception) + e1.getMessage());
}
}
}
public void onFacebookError(FacebookError error) {
dialog.dismiss();
setText(activity.getString(R.string.facebook_error) + error.getMessage());
}
}
public void setText(final String txt) {
mHandler.post(new Runnable() {
@Override
public void run() {
mFQLOutput.setText(txt);
mFQLOutput.setVisibility(View.VISIBLE);
}
});
}
}