summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/wifi/p2p/WifiP2pPeer.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/settings/wifi/p2p/WifiP2pPeer.java')
-rw-r--r--src/com/android/settings/wifi/p2p/WifiP2pPeer.java104
1 files changed, 104 insertions, 0 deletions
diff --git a/src/com/android/settings/wifi/p2p/WifiP2pPeer.java b/src/com/android/settings/wifi/p2p/WifiP2pPeer.java
new file mode 100644
index 0000000..35ae15a
--- /dev/null
+++ b/src/com/android/settings/wifi/p2p/WifiP2pPeer.java
@@ -0,0 +1,104 @@
+/*
+ * Copyright (C) 2011 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 com.android.settings.R;
+
+import android.content.Context;
+import android.net.wifi.WifiManager;
+import android.net.wifi.p2p.WifiP2pManager;
+import android.net.wifi.p2p.WifiP2pDevice;
+import android.net.wifi.p2p.WifiP2pDevice.Status;
+import android.preference.Preference;
+import android.text.TextUtils;
+import android.view.View;
+import android.widget.ImageView;
+
+import java.util.Comparator;
+
+public class WifiP2pPeer extends Preference {
+
+ private static final int[] STATE_SECURED = {R.attr.state_encrypted};
+ public WifiP2pDevice device;
+
+ private int mRssi;
+ private ImageView mSignal;
+
+ private static final int SIGNAL_LEVELS = 4;
+
+ public WifiP2pPeer(Context context, WifiP2pDevice dev) {
+ super(context);
+ device = dev;
+ setWidgetLayoutResource(R.layout.preference_widget_wifi_signal);
+ mRssi = 60; //TODO: fix
+ }
+
+ @Override
+ protected void onBindView(View view) {
+ if (TextUtils.isEmpty(device.deviceName)) {
+ setTitle(device.deviceAddress);
+ } else {
+ setTitle(device.deviceName);
+ }
+ mSignal = (ImageView) view.findViewById(R.id.signal);
+ if (mRssi == Integer.MAX_VALUE) {
+ mSignal.setImageDrawable(null);
+ } else {
+ mSignal.setImageResource(R.drawable.wifi_signal);
+ mSignal.setImageState(STATE_SECURED, true);
+ }
+ refresh();
+ super.onBindView(view);
+ }
+
+ @Override
+ public int compareTo(Preference preference) {
+ if (!(preference instanceof WifiP2pPeer)) {
+ return 1;
+ }
+ WifiP2pPeer other = (WifiP2pPeer) preference;
+
+ // devices go in the order of the status
+ if (device.status != other.device.status) {
+ return device.status.ordinal() < other.device.status.ordinal() ? -1 : 1;
+ }
+
+ // Sort by name/address
+ if (device.deviceName != null) {
+ return device.deviceName.compareToIgnoreCase(other.device.deviceName);
+ }
+
+ return device.deviceAddress.compareToIgnoreCase(other.device.deviceAddress);
+ }
+
+ int getLevel() {
+ if (mRssi == Integer.MAX_VALUE) {
+ return -1;
+ }
+ return WifiManager.calculateSignalLevel(mRssi, SIGNAL_LEVELS);
+ }
+
+ private void refresh() {
+ if (mSignal == null) {
+ return;
+ }
+ Context context = getContext();
+ mSignal.setImageLevel(getLevel());
+ String[] statusArray = context.getResources().getStringArray(R.array.wifi_p2p_status);
+ setSummary(statusArray[device.status.ordinal()]);
+ }
+}