am 735f312b: Merge "Update p2p settings UI"

* commit '735f312beb39fd45b8cce0544042487968a30e18':
  Update p2p settings UI
This commit is contained in:
Irfan Sheriff
2011-09-16 16:08:39 -07:00
committed by Android Git Automerger
2 changed files with 74 additions and 2 deletions

View File

@@ -1344,8 +1344,12 @@
<string name="wifi_p2p_menu_search">Search</string>
<!-- Menu option to create a group-->
<string name="wifi_p2p_menu_create_group">Create group</string>
<!-- Menu option to remove a group-->
<string name="wifi_p2p_menu_remove_group">Remove group</string>
<!-- Menu option to Wi-Fi p2p advanced settings -->
<string name="wifi_p2p_menu_advanced">Advanced</string>
<!-- Title for available p2p devices -->
<string name="wifi_p2p_available_devices">Available Devices</string>
<!-- Wifi AP settings-->
<!-- Label for wifi tether checkbox. Toggles Access Point on/off -->

View File

@@ -36,7 +36,10 @@ import android.os.Bundle;
import android.os.Message;
import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.preference.PreferenceCategory;
import android.preference.PreferenceGroup;
import android.preference.PreferenceScreen;
import android.text.TextUtils;
import android.util.Log;
import android.view.Gravity;
import android.view.Menu;
@@ -59,7 +62,8 @@ public class WifiP2pSettings extends SettingsPreferenceFragment
private static final String TAG = "WifiP2pSettings";
private static final int MENU_ID_SEARCH = Menu.FIRST;
private static final int MENU_ID_CREATE_GROUP = Menu.FIRST + 1;
private static final int MENU_ID_ADVANCED = Menu.FIRST +2;
private static final int MENU_ID_REMOVE_GROUP = Menu.FIRST + 2;
private static final int MENU_ID_ADVANCED = Menu.FIRST +3;
private final IntentFilter mIntentFilter = new IntentFilter();
@@ -70,9 +74,15 @@ public class WifiP2pSettings extends SettingsPreferenceFragment
private OnClickListener mDisconnectListener;
private WifiP2pPeer mSelectedWifiPeer;
private PreferenceGroup mPeersGroup;
private Preference mThisDevicePref;
private static final int DIALOG_CONNECT = 1;
private static final int DIALOG_DISCONNECT = 2;
private WifiP2pDevice mThisDevice;
private WifiP2pDeviceList mPeers = new WifiP2pDeviceList();
private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
@@ -91,6 +101,11 @@ public class WifiP2pSettings extends SettingsPreferenceFragment
if (networkInfo.isConnected()) {
Log.d(TAG, "Connected");
}
} else if (WifiP2pManager.WIFI_P2P_THIS_DEVICE_CHANGED_ACTION.equals(action)) {
mThisDevice = (WifiP2pDevice) intent.getParcelableExtra(
WifiP2pManager.EXTRA_WIFI_P2P_DEVICE);
Log.d(TAG, "Update device info: " + mThisDevice);
updateDevicePref();
}
}
};
@@ -103,6 +118,7 @@ public class WifiP2pSettings extends SettingsPreferenceFragment
mIntentFilter.addAction(WifiP2pManager.WIFI_P2P_STATE_CHANGED_ACTION);
mIntentFilter.addAction(WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION);
mIntentFilter.addAction(WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION);
mIntentFilter.addAction(WifiP2pManager.WIFI_P2P_THIS_DEVICE_CHANGED_ACTION);
final Activity activity = getActivity();
mWifiP2pManager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE);
@@ -188,6 +204,8 @@ public class WifiP2pSettings extends SettingsPreferenceFragment
.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
menu.add(Menu.NONE, MENU_ID_CREATE_GROUP, 0, R.string.wifi_p2p_menu_create_group)
.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
menu.add(Menu.NONE, MENU_ID_REMOVE_GROUP, 0, R.string.wifi_p2p_menu_remove_group)
.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
menu.add(Menu.NONE, MENU_ID_ADVANCED, 0, R.string.wifi_p2p_menu_advanced)
.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
super.onCreateOptionsMenu(menu, inflater);
@@ -220,6 +238,18 @@ public class WifiP2pSettings extends SettingsPreferenceFragment
});
}
return true;
case MENU_ID_REMOVE_GROUP:
if (mWifiP2pManager != null) {
mWifiP2pManager.removeGroup(mChannel, new WifiP2pManager.ActionListener() {
public void onSuccess() {
Log.d(TAG, " remove group success");
}
public void onFailure(int reason) {
Log.d(TAG, " remove group fail " + reason);
}
});
}
return true;
case MENU_ID_ADVANCED:
//TODO: add advanced settings for p2p
return true;
@@ -259,11 +289,49 @@ public class WifiP2pSettings extends SettingsPreferenceFragment
}
public void onPeersAvailable(WifiP2pDeviceList peers) {
final PreferenceScreen preferenceScreen = getPreferenceScreen();
preferenceScreen.removeAll();
preferenceScreen.setOrderingAsAdded(true);
if (mPeersGroup == null) {
mPeersGroup = new PreferenceCategory(getActivity());
} else {
mPeersGroup.removeAll();
}
preferenceScreen.addPreference(mThisDevicePref);
mPeersGroup.setTitle(R.string.wifi_p2p_available_devices);
mPeersGroup.setEnabled(true);
preferenceScreen.addPreference(mPeersGroup);
mPeers = peers;
for (WifiP2pDevice peer: peers.getDeviceList()) {
preferenceScreen.addPreference(new WifiP2pPeer(getActivity(), peer));
mPeersGroup.addPreference(new WifiP2pPeer(getActivity(), peer));
}
}
private void updateDevicePref() {
mThisDevicePref = new Preference(getActivity());
if (mThisDevice != null) {
if (TextUtils.isEmpty(mThisDevice.deviceName)) {
mThisDevicePref.setTitle(mThisDevice.deviceAddress);
} else {
mThisDevicePref.setTitle(mThisDevice.deviceName);
}
if (mThisDevice.status == WifiP2pDevice.CONNECTED) {
String[] statusArray = getActivity().getResources().getStringArray(
R.array.wifi_p2p_status);
mThisDevicePref.setSummary(statusArray[mThisDevice.status]);
}
mThisDevicePref.setPersistent(false);
mThisDevicePref.setEnabled(true);
mThisDevicePref.setSelectable(false);
}
onPeersAvailable(mPeers); //update UI
}
}