package com.owwlo.courier.s.ui;
import com.actionbarsherlock.app.SherlockDialogFragment;
import com.actionbarsherlock.app.SherlockFragmentActivity;
import com.owwlo.courier.R;
import com.owwlo.courier.s.CourierSService;
import com.owwlo.courier.s.CourierSService.AuthcodeListener;
import com.owwlo.courier.s.poster.MessagePosterManager;
import com.owwlo.courier.s.utils.Utils;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.ComponentName;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.ServiceConnection;
import android.graphics.Typeface;
import android.os.Bundle;
import android.os.IBinder;
import android.util.Log;
import android.view.Gravity;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.ImageButton;
import android.widget.TextView;
public class PopupActivity extends SherlockFragmentActivity {
private static final String TAG = PopupActivity.class.getSimpleName();
private CourierSService mCourierService;
private ServiceConnection mServiceConnection = new ServiceConnection() {
@Override
public void onServiceConnected(
ComponentName paramAnonymousComponentName,
IBinder paramAnonymousIBinder) {
Log.i(TAG, "binder");
mCourierService = ((CourierSService.ServiceBinder) paramAnonymousIBinder)
.getService();
onBindSuccess();
}
@Override
public void onServiceDisconnected(ComponentName arg0) {
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
bindService(new Intent(this, com.owwlo.courier.s.CourierSService.class),
mServiceConnection, Context.BIND_AUTO_CREATE);
}
@Override
protected void onDestroy() {
Log.i(TAG, "destroy");
super.onDestroy();
unbindService(mServiceConnection);
}
private void onBindSuccess() {
Log.i(TAG, "show dialog");
ReadyDialog dialog = new ReadyDialog(this);
dialog.show(this.getSupportFragmentManager(), null);
}
private class ReadyDialog extends SherlockDialogFragment {
private Context mContext;
public Dialog onCreateDialog(Bundle savedInstanceState) {
setCancelable(true);
this.setStyle(R.style.DialogStyle, R.style.TransparentTheme);
return (new DialogContent(mContext));
}
public ReadyDialog(Context context) {
mContext = context;
}
class DialogContent extends AlertDialog {
/**
* ReadyDialog 部分
*/
private TextView mAuthcode;
private TextView mAuthcodeBack;
private ImageButton mRefreshButton;
/**
* StateDialog 部分
*/
private Button mDisconnectBtn;
private CheckBox mAutoConnect;
private AuthcodeListener mAuthcodeListener = new AuthcodeListener() {
@Override
public void onAuthcodeChanged(
String newAuthcode) {
mAuthcode.setText(newAuthcode);
}
};
public DialogContent(Context context) {
super(context);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_NO_TITLE);
prepareView();
getWindow().setGravity(Gravity.CENTER);
}
private void prepareView() {
MessagePosterManager mMessagePosterManager = MessagePosterManager
.getInstance();
if (Utils.isLocalNetConnected(mContext)) {
if (!mMessagePosterManager.isConnectedToHost()) {
// 非连接的状态下
String authcode = mCourierService.getAuthCode();
Log.i(TAG, authcode);
setContentView(R.layout.ready_dialog);
getWindow().setLayout(500, 400);
initForReadyDialog();
// 加载数位字体
Typeface type = Typeface.createFromAsset(getAssets(),
"fonts/DS-DIGIT.TTF");
mAuthcode.setTypeface(type);
mAuthcodeBack.setTypeface(type);
mAuthcode.setText(authcode);
mCourierService.addAuthcodeListener(mAuthcodeListener);
mRefreshButton
.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mCourierService.generateAuthCode();
}
});
} else {
// 连接的状态下
setContentView(R.layout.connected_state_dialog);
getWindow().setLayout(500, 400);
initForStateDialog();
mAutoConnect.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
if (mAutoConnect.isChecked()) {
} else {
}
}
});
mDisconnectBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
}
}
}
private void initForReadyDialog() {
mAuthcode = (TextView) findViewById(R.id.authcodeText);
mAuthcodeBack = (TextView) findViewById(R.id.authcodeTextBack);
mRefreshButton = (ImageButton) findViewById(R.id.refreshButton);
}
private void initForStateDialog() {
mDisconnectBtn = (Button) findViewById(R.id.disconnectButton);
mAutoConnect = (CheckBox) findViewById(R.id.autoConnect);
}
@Override
public void onDetachedFromWindow() {
mCourierService.removeAuthcodeListener(mAuthcodeListener);
PopupActivity.this.finish();
}
}
}
}