summaryrefslogtreecommitdiffstats
path: root/src/com
diff options
context:
space:
mode:
Diffstat (limited to 'src/com')
-rw-r--r--src/com/android/settings/wifi/p2p/WifiP2pPersistentGroup.java46
-rw-r--r--src/com/android/settings/wifi/p2p/WifiP2pSettings.java74
2 files changed, 119 insertions, 1 deletions
diff --git a/src/com/android/settings/wifi/p2p/WifiP2pPersistentGroup.java b/src/com/android/settings/wifi/p2p/WifiP2pPersistentGroup.java
new file mode 100644
index 0000000..d982653
--- /dev/null
+++ b/src/com/android/settings/wifi/p2p/WifiP2pPersistentGroup.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.wifi.p2p;
+
+import android.content.Context;
+import android.net.wifi.p2p.WifiP2pGroup;
+import android.preference.Preference;
+import android.view.View;
+
+public class WifiP2pPersistentGroup extends Preference {
+
+ public WifiP2pGroup mGroup;
+
+ public WifiP2pPersistentGroup(Context context, WifiP2pGroup group) {
+ super(context);
+ mGroup = group;
+ }
+
+ @Override
+ protected void onBindView(View view) {
+ setTitle(mGroup.getNetworkName());
+ super.onBindView(view);
+ }
+
+ int getNetworkId() {
+ return mGroup.getNetworkId();
+ }
+
+ String getGroupName() {
+ return mGroup.getNetworkName();
+ }
+}
diff --git a/src/com/android/settings/wifi/p2p/WifiP2pSettings.java b/src/com/android/settings/wifi/p2p/WifiP2pSettings.java
index 684ec30..1bb253a 100644
--- a/src/com/android/settings/wifi/p2p/WifiP2pSettings.java
+++ b/src/com/android/settings/wifi/p2p/WifiP2pSettings.java
@@ -30,8 +30,12 @@ import android.net.NetworkInfo;
import android.net.wifi.p2p.WifiP2pConfig;
import android.net.wifi.p2p.WifiP2pDevice;
import android.net.wifi.p2p.WifiP2pDeviceList;
+import android.net.wifi.p2p.WifiP2pGroup;
+import android.net.wifi.p2p.WifiP2pGroupList;
import android.net.wifi.p2p.WifiP2pManager;
+import android.net.wifi.p2p.WifiP2pManager.GroupInfoListener;
import android.net.wifi.p2p.WifiP2pManager.PeerListListener;
+import android.net.wifi.p2p.WifiP2pManager.PersistentGroupInfoListener;
import android.net.wifi.WpsInfo;
import android.os.Bundle;
import android.os.Handler;
@@ -62,7 +66,7 @@ import java.util.Collection;
* Displays Wi-fi p2p settings UI
*/
public class WifiP2pSettings extends SettingsPreferenceFragment
- implements PeerListListener {
+ implements PeerListListener, PersistentGroupInfoListener, GroupInfoListener {
private static final String TAG = "WifiP2pSettings";
private static final boolean DBG = false;
@@ -75,19 +79,24 @@ public class WifiP2pSettings extends SettingsPreferenceFragment
private OnClickListener mRenameListener;
private OnClickListener mDisconnectListener;
private OnClickListener mCancelConnectListener;
+ private OnClickListener mDeleteGroupListener;
private WifiP2pPeer mSelectedWifiPeer;
+ private WifiP2pPersistentGroup mSelectedGroup;
private EditText mDeviceNameText;
private boolean mWifiP2pEnabled;
private boolean mWifiP2pSearching;
private int mConnectedDevices;
+ private WifiP2pGroup mConnectedGroup;
private PreferenceGroup mPeersGroup;
+ private PreferenceGroup mPersistentGroup;
private Preference mThisDevicePref;
private static final int DIALOG_DISCONNECT = 1;
private static final int DIALOG_CANCEL_CONNECT = 2;
private static final int DIALOG_RENAME = 3;
+ private static final int DIALOG_DELETE_GROUP = 4;
private static final String SAVE_DIALOG_PEER = "PEER_STATE";
private static final String SAVE_DEVICE_NAME = "DEV_NAME";
@@ -114,6 +123,9 @@ public class WifiP2pSettings extends SettingsPreferenceFragment
if (mWifiP2pManager == null) return;
NetworkInfo networkInfo = (NetworkInfo) intent.getParcelableExtra(
WifiP2pManager.EXTRA_NETWORK_INFO);
+ if (mWifiP2pManager != null) {
+ mWifiP2pManager.requestGroupInfo(mChannel, WifiP2pSettings.this);
+ }
if (networkInfo.isConnected()) {
if (DBG) Log.d(TAG, "Connected");
} else {
@@ -134,6 +146,10 @@ public class WifiP2pSettings extends SettingsPreferenceFragment
} else {
updateSearchMenu(false);
}
+ } else if (WifiP2pManager.WIFI_P2P_PERSISTENT_GROUPS_CHANGED_ACTION.equals(action)) {
+ if (mWifiP2pManager != null) {
+ mWifiP2pManager.requestPersistentGroupInfo(mChannel, WifiP2pSettings.this);
+ }
}
}
};
@@ -147,6 +163,7 @@ public class WifiP2pSettings extends SettingsPreferenceFragment
mIntentFilter.addAction(WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION);
mIntentFilter.addAction(WifiP2pManager.WIFI_P2P_THIS_DEVICE_CHANGED_ACTION);
mIntentFilter.addAction(WifiP2pManager.WIFI_P2P_DISCOVERY_CHANGED_ACTION);
+ mIntentFilter.addAction(WifiP2pManager.WIFI_P2P_PERSISTENT_GROUPS_CHANGED_ACTION);
final Activity activity = getActivity();
mWifiP2pManager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE);
@@ -230,6 +247,27 @@ public class WifiP2pSettings extends SettingsPreferenceFragment
}
};
+ //delete persistent group dialog listener
+ mDeleteGroupListener = new OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ if (which == DialogInterface.BUTTON_POSITIVE) {
+ if (mWifiP2pManager != null) {
+ mWifiP2pManager.deletePersistentGroup(mChannel,
+ mSelectedGroup.getNetworkId(),
+ new WifiP2pManager.ActionListener() {
+ public void onSuccess() {
+ if (DBG) Log.d(TAG, " delete group success");
+ }
+ public void onFailure(int reason) {
+ if (DBG) Log.d(TAG, " delete group fail " + reason);
+ }
+ });
+ }
+ }
+ }
+ };
+
setHasOptionsMenu(true);
final PreferenceScreen preferenceScreen = getPreferenceScreen();
@@ -242,6 +280,9 @@ public class WifiP2pSettings extends SettingsPreferenceFragment
mPeersGroup = new PreferenceCategory(getActivity());
mPeersGroup.setTitle(R.string.wifi_p2p_peer_devices);
+ mPersistentGroup = new PreferenceCategory(getActivity());
+ mPersistentGroup.setTitle(R.string.wifi_p2p_remembered_groups);
+
super.onActivityCreated(savedInstanceState);
}
@@ -342,6 +383,9 @@ public class WifiP2pSettings extends SettingsPreferenceFragment
}
});
}
+ } else if (preference instanceof WifiP2pPersistentGroup) {
+ mSelectedGroup = (WifiP2pPersistentGroup) preference;
+ showDialog(DIALOG_DELETE_GROUP);
}
return super.onPreferenceTreeClick(screen, preference);
}
@@ -396,6 +440,16 @@ public class WifiP2pSettings extends SettingsPreferenceFragment
.setNegativeButton(getActivity().getString(R.string.dlg_cancel), null)
.create();
return dialog;
+ } else if (id == DIALOG_DELETE_GROUP) {
+ int stringId = R.string.wifi_p2p_delete_group_message;
+
+ AlertDialog dialog = new AlertDialog.Builder(getActivity())
+ .setTitle(R.string.wifi_p2p_delete_group_title)
+ .setMessage(getActivity().getString(stringId, mSelectedGroup.getGroupName()))
+ .setPositiveButton(getActivity().getString(R.string.dlg_ok), mDeleteGroupListener)
+ .setNegativeButton(getActivity().getString(R.string.dlg_cancel), null)
+ .create();
+ return dialog;
}
return null;
}
@@ -423,6 +477,21 @@ public class WifiP2pSettings extends SettingsPreferenceFragment
if (DBG) Log.d(TAG, " mConnectedDevices " + mConnectedDevices);
}
+ public void onPersistentGroupInfoAvailable(WifiP2pGroupList groups) {
+ mPersistentGroup.removeAll();
+
+ for (WifiP2pGroup group: groups.getGroupList()) {
+ if (DBG) Log.d(TAG, " group " + group);
+ mPersistentGroup.addPreference(new WifiP2pPersistentGroup(getActivity(), group));
+ }
+ }
+
+ public void onGroupInfoAvailable(WifiP2pGroup group) {
+ if (DBG) Log.d(TAG, " group " + group);
+ mConnectedGroup = group;
+ updateDevicePref();
+ }
+
private void handleP2pStateChanged() {
updateSearchMenu(false);
if (mWifiP2pEnabled) {
@@ -435,6 +504,9 @@ public class WifiP2pSettings extends SettingsPreferenceFragment
mPeersGroup.setEnabled(true);
preferenceScreen.addPreference(mPeersGroup);
+ mPersistentGroup.setEnabled(true);
+ preferenceScreen.addPreference(mPersistentGroup);
+
/* Request latest set of peers */
mWifiP2pManager.requestPeers(mChannel, WifiP2pSettings.this);
}