TvServerStateActivity.java :  » Media » a-mp-droid » com » mediaportal » ampdroid » activities » tvserver » Android Open Source

Android Open Source » Media » a mp droid 
a mp droid » com » mediaportal » ampdroid » activities » tvserver » TvServerStateActivity.java
package com.mediaportal.ampdroid.activities.tvserver;

import java.util.List;

import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MenuItem.OnMenuItemClickListener;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.Spinner;

import com.mediaportal.ampdroid.R;
import com.mediaportal.ampdroid.activities.BaseActivity;
import com.mediaportal.ampdroid.activities.StatusBarActivityHandler;
import com.mediaportal.ampdroid.api.DataHandler;
import com.mediaportal.ampdroid.data.TvChannel;
import com.mediaportal.ampdroid.data.TvChannelGroup;
import com.mediaportal.ampdroid.data.TvVirtualCard;
import com.mediaportal.ampdroid.lists.ILoadingAdapterItem;
import com.mediaportal.ampdroid.lists.LazyLoadingAdapter;
import com.mediaportal.ampdroid.lists.views.VirtualCardStateAdapterItem;
import com.mediaportal.ampdroid.quickactions.ActionItem;
import com.mediaportal.ampdroid.quickactions.QuickAction;
import com.mediaportal.ampdroid.utils.Util;

public class TvServerStateActivity extends BaseActivity {
   private ListView mListView;
   private Button mStartTimeshift;
   private Button mStartRecording;
   private Spinner mGroups;
   private Spinner mChannels;
   private LazyLoadingAdapter mListItems;
   private DataHandler mService;
   ArrayAdapter<TvChannel> mChannelItems;
   ArrayAdapter<TvChannelGroup> mGroupsItems;

   UpdateGroupsTask mGroupsUpdater;
   UpdateChannelsTask mChannelUpdater;
   UpdateCardsTask mCardsUpdater;
   StartTimeshiftTask mTimeshiftStarter;
   StopTimeshiftTask mTimeshiftStopper;
   ProgressDialog mLoadingDialog;

   boolean mShowAllGroup = false;
   private StatusBarActivityHandler mStatusBarHandler;

   private class UpdateGroupsTask extends AsyncTask<Integer, Integer, List<TvChannelGroup>> {
      @Override
      protected List<TvChannelGroup> doInBackground(Integer... _group) {
         List<TvChannelGroup> groups = mService.getTvChannelGroups();
         return groups;
      }

      @Override
      protected void onPostExecute(List<TvChannelGroup> _result) {
         mGroupsItems.clear();
         if (_result != null) {
            for (TvChannelGroup g : _result) {
               if (mShowAllGroup || g.getIdGroup() != 1) {
                  mGroupsItems.add(g);
               }
            }
         }
      }
   }

   private class UpdateChannelsTask extends AsyncTask<TvChannelGroup, Integer, List<TvChannel>> {
      @Override
      protected List<TvChannel> doInBackground(TvChannelGroup... _group) {
         List<TvChannel> channels = mService.getTvChannelsForGroup(_group[0].getIdGroup()); // get
         return channels;
      }

      @Override
      protected void onPostExecute(List<TvChannel> _result) {
         if (_result != null) {
            mChannelItems.clear();

            for (TvChannel c : _result) {
               mChannelItems.add(c);
            }
         }
         mLoadingDialog.cancel();
      }
   }

   private class UpdateCardsTask extends AsyncTask<Integer, Integer, List<TvVirtualCard>> {
      private Context mContext;

      UpdateCardsTask(Context _context) {
         mContext = _context;
      }

      @Override
      protected List<TvVirtualCard> doInBackground(Integer... _params) {
         List<TvVirtualCard> cards = mService.getTvCardsActive();
         return cards;
      }

      @Override
      protected void onPostExecute(List<TvVirtualCard> _result) {
         super.onPostExecute(_result);
         mListItems.clear();
         if (_result != null) {
            for (TvVirtualCard c : _result) {
               mListItems.addItem(new VirtualCardStateAdapterItem(mContext, c));
            }
         }
         mListItems.notifyDataSetChanged();
      }
   }

   private class StartTimeshiftTask extends AsyncTask<TvChannel, Integer, String> {
      Context mContext;

      public StartTimeshiftTask(Context _context) {
         mContext = _context;
      }

      @Override
      protected String doInBackground(TvChannel... _params) {
         if (_params != null) {
            String url = mService.startTimeshift(_params[0].getIdChannel(), "Android2");
            return url;
         }
         return null;
      }

      @Override
      protected void onPostExecute(String _result) {
         if (_result != null) {
            Util.showToast(mContext, _result);
         } else {
            Util.showToast(mContext, "Couldn't start timeshift");
         }
         refreshActiveCards();
      }
   }

   private class StopTimeshiftTask extends AsyncTask<String, Integer, Boolean> {
      Context mContext;

      public StopTimeshiftTask(Context _context) {
         mContext = _context;
      }

      @Override
      protected Boolean doInBackground(String... _params) {
         boolean result = mService.stopTimeshift(_params[0]);

         return result;
      }

      @Override
      protected void onPostExecute(Boolean _result) {
         if (_result) {
            Util.showToast(mContext, "Stop timeshift");
         } else {
            Util.showToast(mContext, "Couldn't stop timeshift");
         }
         refreshActiveCards();
      }
   }

   @Override
   public void onCreate(Bundle _savedInstanceState) {
      setTitle(R.string.title_tvserver_state);
      super.onCreate(_savedInstanceState);
      setContentView(R.layout.tvserverstateactivity);
      mListView = (ListView) findViewById(R.id.ListViewCards);
      mStartTimeshift = (Button) findViewById(R.id.ButtonStartTimeshift);
      mStartRecording = (Button) findViewById(R.id.ButtonStartRecording);
      mChannels = (Spinner) findViewById(R.id.SpinnerChannels);
      mGroups = (Spinner) findViewById(R.id.SpinnerGroups);

      mGroups.setOnItemSelectedListener(new OnItemSelectedListener() {

         @Override
         public void onItemSelected(AdapterView<?> _adapter, View _view, int _position, long _id) {
            Object selected = mGroups.getItemAtPosition(_position);
            fillChannelList((TvChannelGroup) selected);
         }

         @Override
         public void onNothingSelected(AdapterView<?> _adapter) {

         }
      });

      mListView.setOnItemClickListener(new OnItemClickListener() {
         @Override
         public void onItemClick(AdapterView<?> _adapter, View _view, int _pos, long _id) {
            ILoadingAdapterItem selected = (ILoadingAdapterItem) mListView.getItemAtPosition(_pos);
            TvVirtualCard card = (TvVirtualCard) selected.getItem();
            Util.showToast(_view.getContext(), card.getRTSPUrl());
         }
      });

      mListView.setOnItemLongClickListener(new OnItemLongClickListener() {
         @Override
         public boolean onItemLongClick(AdapterView<?> _item, View _view, final int _position,
               long _id) {
            final QuickAction qa = new QuickAction(_view);
            ActionItem sdCardAction = new ActionItem();

            sdCardAction.setTitle("Stop Timeshift");
            sdCardAction.setIcon(getResources().getDrawable(R.drawable.bubble_del));

            VirtualCardStateAdapterItem selected = (VirtualCardStateAdapterItem) mListView
                  .getItemAtPosition(_position);
            final TvVirtualCard card = (TvVirtualCard) selected.getItem();

            sdCardAction.setOnClickListener(new OnClickListener() {
               @Override
               public void onClick(View _view) {
                  stopTimeshift(card.getUser().getName());
                  qa.dismiss();
               }
            });
            qa.addActionItem(sdCardAction);

            ActionItem playOnDeviceAction = new ActionItem();
            playOnDeviceAction.setTitle("Play on Device");
            playOnDeviceAction.setIcon(getResources().getDrawable(R.drawable.quickaction_play));
            playOnDeviceAction.setOnClickListener(new OnClickListener() {
               @Override
               public void onClick(View _view) {
                  String playingUrl = card.getRTSPUrl();
                  playingUrl = playingUrl.replace("bagga-server", "10.1.0.166");

                  Intent i = new Intent(Intent.ACTION_VIEW);
                  i.setDataAndType(Uri.parse(playingUrl), "video/*");
                  i.setPackage("me.abitno.vplayer");
                  startActivityForResult(i, 1);

                  qa.dismiss();
               }
            });
            qa.addActionItem(playOnDeviceAction);

            qa.setAnimStyle(QuickAction.ANIM_AUTO);

            qa.show();
            return true;
         }
      });

      mStartTimeshift.setOnClickListener(new OnClickListener() {
         @Override
         public void onClick(View v) {
            startTimeshift();
         }
      });

      mStartRecording.setOnClickListener(new OnClickListener() {
         @Override
         public void onClick(View v) {
            startRecording();
         }
      });

      mService = DataHandler.getCurrentRemoteInstance();
      mStatusBarHandler = new StatusBarActivityHandler(this, mService);
      mStatusBarHandler.setHome(false);

      mListItems = new LazyLoadingAdapter(this);
      mListView.setAdapter(mListItems);

      mChannelItems = new ArrayAdapter<TvChannel>(this, android.R.layout.simple_spinner_item);
      mChannelItems.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
      mChannels.setAdapter(mChannelItems);

      mGroupsItems = new ArrayAdapter<TvChannelGroup>(this, android.R.layout.simple_spinner_item);
      mGroupsItems.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
      mGroups.setAdapter(mGroupsItems);

      SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
      mShowAllGroup = prefs.getBoolean("tvserver_showall", true);

      refreshActiveCards();

      refreshGroups();
   }

   private void refreshGroups() {
      mLoadingDialog = ProgressDialog.show(TvServerStateActivity.this, " Loading Groups ",
            " Loading. Please wait ... ", true);
      mLoadingDialog.setCancelable(true);

      mGroupsUpdater = new UpdateGroupsTask();
      mGroupsUpdater.execute(0);
   }

   @Override
   protected void onStart() {
      super.onStart();
   }

   private void startTimeshift() {
      TvChannel channel = (TvChannel) mChannels.getSelectedItem();

      mTimeshiftStarter = new StartTimeshiftTask(this);
      mTimeshiftStarter.execute(channel);
   }

   private void stopTimeshift(String _name) {
      mTimeshiftStopper = new StopTimeshiftTask(this);
      mTimeshiftStopper.execute(_name);
   }

   private void startRecording() {
      Util.showToast(this, "Not implemented yet...");
   }

   private void fillChannelList(TvChannelGroup _group) {
      mLoadingDialog.cancel();
      mLoadingDialog = ProgressDialog.show(TvServerStateActivity.this, " Loading Channels ",
            " Loading. Please wait ... ", true);
      mLoadingDialog.setCancelable(true);

      mChannelUpdater = new UpdateChannelsTask();
      mChannelUpdater.execute(_group);
   }

   private void refreshActiveCards() {
      mCardsUpdater = new UpdateCardsTask(this);
      mCardsUpdater.execute(0);
   }

   @Override
   public boolean onCreateOptionsMenu(Menu _menu) {
      MenuItem settingsItem = _menu.add(0, Menu.FIRST, Menu.NONE, "Refresh");
      settingsItem.setOnMenuItemClickListener(new OnMenuItemClickListener() {
         @Override
         public boolean onMenuItemClick(MenuItem item) {
            refreshActiveCards();
            return true;
         }
      });

      return true;
   }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.