/**
  * Reads the current cursorposition to a Channel.
  *
  * @param c the c
  * @return the Channel
  * @author RayBa
  * @date 13.05.2012
  */
 private Channel cursorToChannel(Cursor c) {
   Channel channel = new Channel();
   channel.setId(c.getLong(c.getColumnIndex(ChannelTbl._ID)));
   channel.setChannelID(c.getLong(c.getColumnIndex(ChannelTbl.CHANNEL_ID)));
   channel.setEpgID(c.getLong(c.getColumnIndex(ChannelTbl.EPG_ID)));
   channel.setLogoUrl(c.getString(c.getColumnIndex(ChannelTbl.LOGO_URL)));
   String name = c.getString(c.getColumnIndex(ChannelTbl.NAME));
   channel.setName(name);
   channel.setPosition(c.getInt(c.getColumnIndex(ChannelTbl.POSITION)));
   return channel;
 }
  /*
   * (non-Javadoc)
   *
   * @see
   * android.support.v4.app.Fragment#onContextItemSelected(android.view.MenuItem
   * )
   */
  public boolean onContextItemSelected(MenuItem item) {
    if (item.getMenuInfo() != null) {
      AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
      selectedPosition = info.position;
    }
    Cursor c = mAdapter.getCursor();
    c.moveToPosition(selectedPosition);
    Channel chan = cursorToChannel(c);
    Timer timer;
    switch (item.getItemId()) {
      case R.id.menuTimer:
        timer = cursorToTimer(c);
        if (UIUtils.isTablet(getActivity())) {
          TimerDetails timerdetails = TimerDetails.newInstance();
          Bundle args = new Bundle();
          args.putString(TimerDetails.EXTRA_TITLE, timer.getTitle());
          args.putString(TimerDetails.EXTRA_CHANNEL_NAME, timer.getChannelName());
          args.putLong(TimerDetails.EXTRA_CHANNEL_ID, timer.getChannelId());
          args.putLong(TimerDetails.EXTRA_START, timer.getStart().getTime());
          args.putLong(TimerDetails.EXTRA_END, timer.getEnd().getTime());
          args.putInt(TimerDetails.EXTRA_ACTION, timer.getTimerAction());
          args.putBoolean(TimerDetails.EXTRA_ACTIVE, true);
          timerdetails.setArguments(args);
          timerdetails.show(
              getSherlockActivity().getSupportFragmentManager(), TimerDetails.class.getName());
        } else {
          Intent timerIntent = new Intent(getActivity(), TimerDetailsActivity.class);
          timerIntent.putExtra(TimerDetails.EXTRA_TITLE, timer.getTitle());
          timerIntent.putExtra(TimerDetails.EXTRA_CHANNEL_NAME, timer.getChannelName());
          timerIntent.putExtra(TimerDetails.EXTRA_CHANNEL_ID, timer.getChannelId());
          timerIntent.putExtra(TimerDetails.EXTRA_START, timer.getStart().getTime());
          timerIntent.putExtra(TimerDetails.EXTRA_END, timer.getEnd().getTime());
          timerIntent.putExtra(TimerDetails.EXTRA_ACTION, timer.getTimerAction());
          timerIntent.putExtra(TimerDetails.EXTRA_ACTIVE, !timer.isFlagSet(Timer.FLAG_DISABLED));
          startActivity(timerIntent);
        }
        return true;
      case R.id.menuStream:
        if (UIUtils.isTablet(getActivity())) {
          StreamConfig cfg = StreamConfig.newInstance();
          Bundle arguments = new Bundle();
          arguments.putInt(StreamConfig.EXTRA_FILE_ID, chan.getPosition());
          arguments.putInt(StreamConfig.EXTRA_FILE_TYPE, StreamConfig.FILE_TYPE_LIVE);
          arguments.putInt(StreamConfig.EXTRA_DIALOG_TITLE_RES, R.string.streamConfig);
          cfg.setArguments(arguments);
          cfg.show(getSherlockActivity().getSupportFragmentManager(), StreamConfig.class.getName());
        } else {
          Intent streamConfig = new Intent(getActivity(), StreamConfigActivity.class);
          streamConfig.putExtra(StreamConfig.EXTRA_FILE_ID, chan.getPosition());
          streamConfig.putExtra(StreamConfig.EXTRA_FILE_TYPE, StreamConfig.FILE_TYPE_LIVE);
          streamConfig.putExtra(StreamConfig.EXTRA_DIALOG_TITLE_RES, R.string.streamConfig);
          startActivity(streamConfig);
        }
        return true;
      case R.id.menuSwitch:
        String switchRequest = ServerConsts.URL_SWITCH_COMMAND + chan.getPosition();
        DVBViewerCommand command = new DVBViewerCommand(switchRequest);
        Thread exexuterTHread = new Thread(command);
        exexuterTHread.start();
        return true;
      case R.id.menuRecord:
        timer = cursorToTimer(c);
        String url =
            timer.getId() < 0l ? ServerConsts.URL_TIMER_CREATE : ServerConsts.URL_TIMER_EDIT;
        String title = timer.getTitle();
        String days = String.valueOf(DateUtils.getDaysSinceDelphiNull(timer.getStart()));
        String start = String.valueOf(DateUtils.getMinutesOfDay(timer.getStart()));
        String stop = String.valueOf(DateUtils.getMinutesOfDay(timer.getEnd()));
        String endAction = String.valueOf(timer.getTimerAction());
        List<NameValuePair> params = new ArrayList<NameValuePair>();
        params.add(new BasicNameValuePair("ch", String.valueOf(timer.getChannelId())));
        params.add(new BasicNameValuePair("dor", days));
        params.add(new BasicNameValuePair("encoding", "255"));
        params.add(new BasicNameValuePair("enable", "1"));
        params.add(new BasicNameValuePair("start", start));
        params.add(new BasicNameValuePair("stop", stop));
        params.add(new BasicNameValuePair("title", title));
        params.add(new BasicNameValuePair("endact", endAction));
        if (timer.getId() >= 0) {
          params.add(new BasicNameValuePair("id", String.valueOf(timer.getId())));
        }

        String query = URLEncodedUtils.format(params, "utf-8");
        String request = url + query;
        RecordingServiceGet rsGet = new RecordingServiceGet(request);
        Thread executionThread = new Thread(rsGet);
        executionThread.start();
        return true;

      default:
        break;
    }
    return false;
  }