Android Open Source - DroidUPnP Upnp Device List Fragment






From Project

Back to project page DroidUPnP.

License

The source code is released under:

GNU General Public License

If you think the Android project DroidUPnP listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/**
 * Copyright (C) 2013 Aurlien Chabot <aurelien@chabot.fr>
 * //from w  w w  .  j ava2  s.  com
 * This file is part of DroidUPNP.
 * 
 * DroidUPNP is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * DroidUPNP is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with DroidUPNP.  If not, see <http://www.gnu.org/licenses/>.
 */

package org.droidupnp.view;

import org.droidupnp.R;
import org.droidupnp.model.upnp.IDeviceDiscoveryObserver;
import org.droidupnp.model.upnp.IUpnpDevice;

import android.app.DialogFragment;
import android.app.FragmentTransaction;
import android.app.ListFragment;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;

public abstract class UpnpDeviceListFragment extends ListFragment implements IDeviceDiscoveryObserver {

  protected static final String TAG = "UpnpDeviceListFragment";

  protected ArrayAdapter<DeviceDisplay> list;

  private final boolean extendedInformation;

  public UpnpDeviceListFragment()
  {
    this(false);
  }

  public UpnpDeviceListFragment(boolean extendedInformation)
  {
    this.extendedInformation = extendedInformation;
  }

  @Override
  public void onActivityCreated(Bundle savedInstanceState)
  {
    super.onActivityCreated(savedInstanceState);
    list = new ArrayAdapter<>(this.getView().getContext(), R.layout.device_list_item);
    setListAdapter(list);

    Log.d(TAG, "Activity created");
  }

  @Override
  public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
  {
    // Inflate the layout for this fragment
    return inflater.inflate(R.layout.sub_device_fragment, container, false);
  }

  @Override
  public void onCreate(Bundle savedInstanceState)
  {
    super.onCreate(savedInstanceState);
    Log.d(TAG, "onCreated");
  }

  @Override
  public void onViewCreated(View view, Bundle savedInstanceState)
  {
    this.getListView().setOnItemLongClickListener(new OnItemLongClickListener() {

      @Override
      public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id)
      {
        showInfoDialog(position);
        return true;
      }
    });
  }

  private void showInfoDialog(int position)
  {
    FragmentTransaction ft = getFragmentManager().beginTransaction();
    DialogFragment newFragment = DeviceInfoDialog.newInstance(list.getItem(position));
    newFragment.show(ft, "dialog");
  }

  @Override
  public void onDestroy()
  {
    super.onDestroy();
    Log.d(TAG, "onDestroy");
  }

  @Override
  public void onListItemClick(ListView l, View v, int position, long id)
  {
    super.onListItemClick(l, v, position, id);
  }

  @Override
  public void addedDevice(IUpnpDevice device)
  {
    Log.v(TAG, "New device detected : " + device.getDisplayString());

    final DeviceDisplay d = new DeviceDisplay(device, extendedInformation);

    if (getActivity() != null) // Visible
      getActivity().runOnUiThread(new Runnable() {
        @Override
        public void run()
        {
          try {
            int position = list.getPosition(d);
            if (position >= 0)
            {
              // Device already in the list, re-set new value at same position
              list.remove(d);
              list.insert(d, position);
            }
            else
            {
              list.add(d);
            }
            if (isSelected(d.getDevice()))
            {
              position = list.getPosition(d);
              getListView().setItemChecked(position, true);

              Log.i(TAG, d.toString() + " is selected at position " + position);
            }
          } catch (Exception e) {
            e.printStackTrace();
          }
        }
      });
  }

  @Override
  public void removedDevice(IUpnpDevice device)
  {
    Log.v(TAG, "Device removed : " + device.getFriendlyName());

    final DeviceDisplay d = new DeviceDisplay(device, extendedInformation);

    if (getActivity() != null) // Visible
      getActivity().runOnUiThread(new Runnable() {
        @Override
        public void run()
        {
          try {
            // Remove device from list
            list.remove(d);
          } catch (Exception e) {
            e.printStackTrace();
          }
        }
      });
  }

  /**
   * Filter to know if device is selected
   * 
   * @param d
   * @return
   */
  protected abstract boolean isSelected(IUpnpDevice d);

  /**
   * Select a device
   * 
   * @param device
   */
  protected abstract void select(IUpnpDevice device);

  /**
   * Select a device
   * 
   * @param device
   * @param force
   */
  protected abstract void select(IUpnpDevice device, boolean force);
}




Java Source Code List

fi.iki.elonen.NanoHTTPD.java
fi.iki.elonen.ServerRunner.java
fi.iki.elonen.SimpleWebServer.java
org.droidupnp.DrawerFragment.java
org.droidupnp.Main.java
org.droidupnp.controller.cling.ContentDirectoryCommand.java
org.droidupnp.controller.cling.Factory.java
org.droidupnp.controller.cling.RendererCommand.java
org.droidupnp.controller.cling.ServiceController.java
org.droidupnp.controller.cling.ServiceListener.java
org.droidupnp.controller.upnp.IUpnpServiceController.java
org.droidupnp.controller.upnp.UpnpDebugListener.java
org.droidupnp.model.CObservable.java
org.droidupnp.model.cling.CDevice.java
org.droidupnp.model.cling.CRegistryListener.java
org.droidupnp.model.cling.RendererState.java
org.droidupnp.model.cling.TrackMetadata.java
org.droidupnp.model.cling.UpnpRegistry.java
org.droidupnp.model.cling.UpnpServiceController.java
org.droidupnp.model.cling.UpnpService.java
org.droidupnp.model.cling.didl.ClingAudioItem.java
org.droidupnp.model.cling.didl.ClingDIDLContainer.java
org.droidupnp.model.cling.didl.ClingDIDLItem.java
org.droidupnp.model.cling.didl.ClingDIDLObject.java
org.droidupnp.model.cling.didl.ClingDIDLParentContainer.java
org.droidupnp.model.cling.didl.ClingImageItem.java
org.droidupnp.model.cling.didl.ClingVideoItem.java
org.droidupnp.model.cling.localContent.AlbumContainer.java
org.droidupnp.model.cling.localContent.ArtistContainer.java
org.droidupnp.model.cling.localContent.AudioContainer.java
org.droidupnp.model.cling.localContent.CustomContainer.java
org.droidupnp.model.cling.localContent.DynamicContainer.java
org.droidupnp.model.cling.localContent.ImageContainer.java
org.droidupnp.model.cling.localContent.VideoContainer.java
org.droidupnp.model.mediaserver.ContentDirectoryService.java
org.droidupnp.model.mediaserver.MediaServer.java
org.droidupnp.model.upnp.ARendererState.java
org.droidupnp.model.upnp.CallableContentDirectoryFilter.java
org.droidupnp.model.upnp.CallableRendererFilter.java
org.droidupnp.model.upnp.ContentDirectoryDiscovery.java
org.droidupnp.model.upnp.DeviceDiscovery.java
org.droidupnp.model.upnp.DeviceListener.java
org.droidupnp.model.upnp.ICallableFilter.java
org.droidupnp.model.upnp.IContentDirectoryCommand.java
org.droidupnp.model.upnp.IDeviceDiscoveryObserver.java
org.droidupnp.model.upnp.IFactory.java
org.droidupnp.model.upnp.IRegistryListener.java
org.droidupnp.model.upnp.IRendererCommand.java
org.droidupnp.model.upnp.IRendererState.java
org.droidupnp.model.upnp.IServiceListener.java
org.droidupnp.model.upnp.IUpnpDevice.java
org.droidupnp.model.upnp.IUpnpRegistry.java
org.droidupnp.model.upnp.PeeringConnectionManager.java
org.droidupnp.model.upnp.RendererDiscovery.java
org.droidupnp.model.upnp.didl.DIDLDevice.java
org.droidupnp.model.upnp.didl.IDIDLContainer.java
org.droidupnp.model.upnp.didl.IDIDLItem.java
org.droidupnp.model.upnp.didl.IDIDLObject.java
org.droidupnp.model.upnp.didl.IDIDLParentContainer.java
org.droidupnp.view.ContentDirectoryDeviceFragment.java
org.droidupnp.view.ContentDirectoryDialog.java
org.droidupnp.view.ContentDirectoryEnabler.java
org.droidupnp.view.ContentDirectoryFragment.java
org.droidupnp.view.Content.java
org.droidupnp.view.DIDLObjectDisplay.java
org.droidupnp.view.DeviceDisplay.java
org.droidupnp.view.DeviceFragment.java
org.droidupnp.view.DeviceInfoDialog.java
org.droidupnp.view.PlaylistFragment.java
org.droidupnp.view.RendererDeviceFragment.java
org.droidupnp.view.RendererDialog.java
org.droidupnp.view.RendererFragment.java
org.droidupnp.view.ServiceDiscoveryFragment.java
org.droidupnp.view.SettingsActivity.java
org.droidupnp.view.UpnpDeviceListFragment.java