package org.deviceconnect.android.deviceplugin.webrtc.setting.fragment;
import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;
import org.deviceconnect.android.deviceplugin.webrtc.R;
import org.deviceconnect.android.deviceplugin.webrtc.WebRTCApplication;
import org.deviceconnect.android.deviceplugin.webrtc.core.Peer;
import org.deviceconnect.android.deviceplugin.webrtc.core.PeerConfig;
import java.util.List;
public class PeerSettingsFragment extends Fragment {
private SettingsAdapter mSettingsAdapter;
@Override
public View onCreateView(final LayoutInflater inflater, final ViewGroup container,
final Bundle savedInstanceState) {
WebRTCApplication app = (WebRTCApplication) getActivity().getApplication();
mSettingsAdapter = new SettingsAdapter(app.getPeerConfig());
View root = inflater.inflate(R.layout.settings_peer, null);
ListView listView = (ListView) root.findViewById(R.id.listView);
listView.setAdapter(mSettingsAdapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
openDialog(position);
}
});
return root;
}
@Override
public void onResume() {
super.onResume();
reload();
}
private void openDialog(final int position) {
String title = getString(R.string.settings_dialog_peer_list_title);
String message = getString(R.string.settings_dialog_peer_list_message);
ConfirmationDialogFragment dialog = ConfirmationDialogFragment.create(title, message);
dialog.setOnConfirmationListener(new ConfirmationDialogFragment.OnConfirmationListener() {
@Override
public void onPositive() {
WebRTCApplication app = (WebRTCApplication) getActivity().getApplication();
PeerConfig config = (PeerConfig) mSettingsAdapter.getItem(position);
app.destroyPeer(config);
mSettingsAdapter.setConfigs(app.getPeerConfig());
}
@Override
public void onNegative() {
}
});
dialog.show(getFragmentManager(), "test");
}
public void reload() {
if (mSettingsAdapter != null) {
WebRTCApplication app = (WebRTCApplication) getActivity().getApplication();
mSettingsAdapter.setConfigs(app.getPeerConfig());
}
}
private class SettingsAdapter extends BaseAdapter {
private LayoutInflater mInflater;
private List<PeerConfig> mConfigs;
private SettingsAdapter(final List<PeerConfig> configs) {
mInflater = (LayoutInflater) getActivity().getSystemService(
Context.LAYOUT_INFLATER_SERVICE);
mConfigs = configs;
}
@Override
public int getCount() {
return mConfigs.size();
}
@Override
public Object getItem(final int position) {
return mConfigs.get(position);
}
@Override
public long getItemId(final int position) {
return position;
}
@Override
public View getView(final int position, final View convertView, final ViewGroup parent) {
View view = convertView;
if (view == null) {
view = mInflater.inflate(R.layout.item_settings_param, parent, false);
}
WebRTCApplication app = (WebRTCApplication) getActivity().getApplication();
String peerId = "";
PeerConfig config = (PeerConfig) getItem(position);
Peer peer = app.getPeer(config);
if (peer != null) {
peerId = peer.getMyAddressId();
if (peerId == null) {
peerId = "";
}
}
setViewText(view, config.getDomain(), peerId);
return view;
}
public void setConfigs(List<PeerConfig> configs) {
mConfigs = configs;
notifyDataSetChanged();
}
private void setViewText(final View view, final String title, final String value) {
TextView titleView = (TextView) view.findViewById(R.id.title);
if (titleView != null) {
titleView.setText(title);
}
TextView valueView = (TextView) view.findViewById(R.id.value);
if (valueView != null) {
valueView.setText(value);
}
}
}
}