I2P Address: [http://git.idk.i2p]

Skip to content
Snippets Groups Projects
Commit bdbc777a authored by str4d's avatar str4d
Browse files

Added TunnelControllerAdapter, filled tunnel lists with names

Router must be started and client tunnels built before loading the I2PTunnel
Activity, or it hangs when switching tabs.
parent 320e8d51
No related branches found
No related tags found
No related merge requests found
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/row_tunnel_name"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="6dp"
......
package net.i2p.android.router.adapter;
import java.util.List;
import net.i2p.android.router.R;
import net.i2p.i2ptunnel.TunnelController;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
public class TunnelControllerAdapter extends ArrayAdapter<TunnelController> {
private final LayoutInflater mInflater;
public TunnelControllerAdapter(Context context) {
super(context, android.R.layout.simple_list_item_2);
mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
public void setData(List<TunnelController> controllers) {
clear();
if (controllers != null) {
for (TunnelController controller : controllers) {
add(controller);
}
}
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = mInflater.inflate(R.layout.listitem_i2ptunnel, parent, false);
TunnelController controller = getItem(position);
TextView name = (TextView) v.findViewById(R.id.row_tunnel_name);
name.setText(controller.getName());
return v;
}
}
package net.i2p.android.router.fragment;
import java.util.ArrayList;
import java.util.List;
import net.i2p.android.router.R;
import net.i2p.android.router.adapter.TunnelControllerAdapter;
import net.i2p.i2ptunnel.TunnelController;
import net.i2p.i2ptunnel.TunnelControllerGroup;
import android.os.Bundle;
import android.support.v4.app.ListFragment;
......@@ -12,6 +17,7 @@ public class I2PTunnelFragment extends ListFragment {
public static final String SHOW_CLIENT_TUNNELS = "show_client_tunnels";
private TunnelControllerGroup mGroup;
private TunnelControllerAdapter mAdapter;
@Override
public void onCreate(Bundle savedInstanceState) {
......@@ -22,6 +28,7 @@ public class I2PTunnelFragment extends ListFragment {
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
mAdapter = new TunnelControllerAdapter(getActivity());
String error;
try {
......@@ -32,17 +39,36 @@ public class I2PTunnelFragment extends ListFragment {
error = iae.toString();
}
boolean clientTunnels = getArguments().getBoolean(SHOW_CLIENT_TUNNELS);
if (mGroup == null) {
setEmptyText(error);
setListAdapter(null);
} else {
boolean clientTunnels = getArguments().getBoolean(SHOW_CLIENT_TUNNELS);
if (clientTunnels)
setEmptyText("No configured client tunnels.");
else
setEmptyText("No configured server tunnels.");
setListAdapter(null);
}
mAdapter.setData(getControllers(clientTunnels));
setListAdapter(mAdapter);
}
private List<TunnelController> getControllers(boolean clientTunnels) {
List<TunnelController> ret = new ArrayList<TunnelController>();
for (TunnelController controller : mGroup.getControllers())
if ( (clientTunnels && isClient(controller.getType())) ||
(!clientTunnels && !isClient(controller.getType())) )
ret.add(controller);
return ret;
}
private static boolean isClient(String type) {
return ( ("client".equals(type)) ||
("httpclient".equals(type)) ||
("sockstunnel".equals(type)) ||
("socksirctunnel".equals(type)) ||
("connectclient".equals(type)) ||
("streamrclient".equals(type)) ||
("ircclient".equals(type)));
}
@Override
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment