/*
IRKitEndingFragment.java
Copyright (c) 2014 NTT DOCOMO,INC.
Released under the MIT license
http://opensource.org/licenses/mit-license.php
*/
package org.deviceconnect.android.deviceplugin.irkit.settings.fragment;
import org.deviceconnect.android.deviceplugin.irkit.IRKitManager;
import org.deviceconnect.android.deviceplugin.irkit.IRKitManager.IRKitConnectionCallback;
import org.deviceconnect.android.deviceplugin.irkit.IRKitManager.IRKitConnectionCheckingCallback;
import org.deviceconnect.android.deviceplugin.irkit.R;
import org.deviceconnect.android.deviceplugin.irkit.settings.activity.IRKitSettingActivity;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
/**
* 最後の画面のフラグメント.
* @author NTT DOCOMO, INC.
*/
public class IRKitEndingFragment extends IRKitBaseFragment implements OnClickListener {
/**
* ステート定数.
*/
private enum State {
/** IDLING. */
IDLING,
/** Connecting to IRKit. */
CONNECTING_TO_IRKIT,
/** Waiting For LAN. */
WAITING_FOR_LAN,
/** Connected. */
CONNECTED,
}
/**
* ステート.
*/
private State mState;
@SuppressLint("InflateParams")
@Override
public View onCreateView(final LayoutInflater inflater, final ViewGroup container,
final Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.irkit_settings_step_4, null);
Button conBtn = (Button) rootView.findViewById(R.id.buttonWiFiSettings);
conBtn.setOnClickListener(this);
return rootView;
}
@Override
public void onClick(final View v) {
synchronized (IRKitEndingFragment.this) {
mState = State.CONNECTING_TO_IRKIT;
}
IRKitSettingActivity a = (IRKitSettingActivity) getActivity();
if (a == null) {
return;
}
showProgress();
v.setEnabled(false);
IRKitManager.INSTANCE.connectIRKitToWiFi(a.getSSID(), a.getPassword(), a.getSecType(), a.getDeviceKey(),
new IRKitConnectionCallback() {
@Override
public void onConnectedToWiFi(final boolean isConnect) {
Activity a = getActivity();
if (a == null) {
return;
}
a.runOnUiThread(new Runnable() {
@Override
public void run() {
synchronized (IRKitEndingFragment.this) {
closeProgress();
if (isConnect) {
showAlert(R.string.alert_title_connection,
R.string.alert_message_connected_with_wifi, R.string.alert_btn_close,
new DialogInterface.OnClickListener() {
@Override
public void onClick(final DialogInterface dialog, final int which) {
synchronized (IRKitEndingFragment.this) {
mState = State.WAITING_FOR_LAN;
}
}
});
} else {
mState = State.IDLING;
showAlert(R.string.alert_title_error, R.string.alert_message_network_error,
R.string.alert_btn_close, new DialogInterface.OnClickListener() {
@Override
public void onClick(final DialogInterface dialog, final int which) {
v.setEnabled(true);
}
});
}
}
}
});
}
});
}
@Override
public synchronized void onEnterForeground() {
super.onEnterForeground();
if (mState == State.WAITING_FOR_LAN) {
IRKitSettingActivity a = (IRKitSettingActivity) getActivity();
if (a == null) {
return;
}
showProgress();
IRKitManager.INSTANCE.checkIfIRKitIsConnectedToInternet(a.getClientKey(), a.getServiceId(),
new IRKitConnectionCheckingCallback() {
@Override
public void onConnectedToInternet(final boolean isConnect) {
Activity a = getActivity();
if (a == null) {
return;
}
a.runOnUiThread(new Runnable() {
@Override
public void run() {
synchronized (IRKitEndingFragment.this) {
closeProgress();
if (isConnect) {
mState = State.CONNECTED;
showAlert(R.string.alert_title_connection,
R.string.alert_message_connected,
R.string.alert_btn_close,
new DialogInterface.OnClickListener() {
@Override
public void onClick(
final DialogInterface dialog,
final int which) {
Activity a = getActivity();
if (a != null) {
a.finish();
}
}
});
} else {
mState = State.IDLING;
showAlert(R.string.alert_title_error,
R.string.alert_message_network_error,
R.string.alert_btn_close,
new DialogInterface.OnClickListener() {
@Override
public void onClick(
final DialogInterface dialog,
final int which) {
View root = getView();
if (root != null) {
Button conBtn = (Button)
root.findViewById(R.id.buttonWiFiSettings);
conBtn.setEnabled(true);
}
}
});
}
}
}
});
}
});
}
}
}