Example #1
0
bool CGUIWindowMusicSongs::OnContextButton(int itemNumber, CONTEXT_BUTTON button)
{
  CFileItemPtr item;
  if (itemNumber >= 0 && itemNumber < m_vecItems->Size())
    item = m_vecItems->Get(itemNumber);
  if ( m_vecItems->IsVirtualDirectoryRoot() && item)
  {
    if (CGUIDialogContextMenu::OnContextButton("music", item, button))
    {
      if (button == CONTEXT_BUTTON_REMOVE_SOURCE)
        OnRemoveSource(itemNumber);

      Update("");
      return true;
    }
  }

  switch (button)
  {
  case CONTEXT_BUTTON_SCAN:
    OnScan(itemNumber);
    return true;

  case CONTEXT_BUTTON_RIP_TRACK:
    OnRipTrack(itemNumber);
    return true;

  case CONTEXT_BUTTON_RIP_CD:
    OnRipCD();
    return true;

#ifdef HAS_CDDA_RIPPER
  case CONTEXT_BUTTON_CANCEL_RIP_CD:
    CCDDARipper::GetInstance().CancelJobs();
    return true;
#endif

  case CONTEXT_BUTTON_CDDB:
    if (m_musicdatabase.LookupCDDBInfo(true))
      Refresh();
    return true;

  case CONTEXT_BUTTON_DELETE:
    OnDeleteItem(itemNumber);
    return true;

  case CONTEXT_BUTTON_RENAME:
    OnRenameItem(itemNumber);
    return true;

  case CONTEXT_BUTTON_SWITCH_MEDIA:
    CGUIDialogContextMenu::SwitchMedia("music", m_vecItems->GetPath());
    return true;
  default:
    break;
  }
  return CGUIWindowMusicBase::OnContextButton(itemNumber, button);
}
Example #2
0
void RTPSources::BYETimeout(const RTPTime &curtime, const RTPTime &timeoutdelay)
{
    int newtotalcount = 0;
    int newsendercount = 0;
    int newactivecount = 0;
    RTPTime checktime = curtime;
    checktime -= timeoutdelay;

    sourcelist.GotoFirstElement();
    while (sourcelist.HasCurrentElement())
    {
        RTPInternalSourceData *srcdat = sourcelist.GetCurrentElement();

        if (srcdat->ReceivedBYE())
        {
            RTPTime byetime = srcdat->GetBYETime();

            if ((srcdat != owndata) && (checktime > byetime))
            {
                totalcount--;
                if (srcdat->IsSender())
                    sendercount--;
                if (srcdat->IsActive())
                    activecount--;
                sourcelist.DeleteCurrentElement();
                OnBYETimeout(srcdat);
                OnRemoveSource(srcdat);
                delete srcdat;
            }
            else
            {
                newtotalcount++;
                if (srcdat->IsSender())
                    newsendercount++;
                if (srcdat->IsActive())
                    newactivecount++;
                sourcelist.GotoNextElement();
            }
        }
        else
        {
            newtotalcount++;
            if (srcdat->IsSender())
                newsendercount++;
            if (srcdat->IsActive())
                newactivecount++;
            sourcelist.GotoNextElement();
        }
    }

    totalcount = newtotalcount; // just to play it safe
    sendercount = newsendercount;
    activecount = newactivecount;
}
Example #3
0
void RTPSources::Timeout(const RTPTime &curtime, const RTPTime &timeoutdelay)
{
    int newtotalcount = 0;
    int newsendercount = 0;
    int newactivecount = 0;
    RTPTime checktime = curtime;
    checktime -= timeoutdelay;

    sourcelist.GotoFirstElement();
    while (sourcelist.HasCurrentElement())
    {
        RTPInternalSourceData *srcdat = sourcelist.GetCurrentElement();
        RTPTime lastmsgtime = srcdat->INF_GetLastMessageTime();

        // we don't want to time out ourselves
        if ((srcdat != owndata) && (lastmsgtime < checktime)) // timeout
        {

            totalcount--;
            if (srcdat->IsSender())
                sendercount--;
            if (srcdat->IsActive())
                activecount--;

            sourcelist.DeleteCurrentElement();

            OnTimeout(srcdat);
            OnRemoveSource(srcdat);
            delete srcdat;
        }
        else
        {
            newtotalcount++;
            if (srcdat->IsSender())
                newsendercount++;
            if (srcdat->IsActive())
                newactivecount++;
            sourcelist.GotoNextElement();
        }
    }

    totalcount = newtotalcount; // just to play it safe
    sendercount = newsendercount;
    activecount = newactivecount;
}
Example #4
0
bool CGUIWindowJukeboxSongs::OnContextButton(CFileItemPtr pItem, CONTEXT_BUTTON button) {
  if (m_vecItems->IsVirtualDirectoryRoot() && pItem) {
    if (CGUIDialogContextMenu::OnContextButton("music", pItem, button)) {
      if (button == CONTEXT_BUTTON_REMOVE_SOURCE)
        OnRemoveSource(pItem);

      Update("");
      return true;
    }
  }

  switch (button) {
    case CONTEXT_BUTTON_SCAN:
      OnScan(pItem);
      return true;

    case CONTEXT_BUTTON_RIP_TRACK:
      OnRipTrack(pItem);
      return true;

    case CONTEXT_BUTTON_RIP_CD:
      OnRipCD();
      return true;

    case CONTEXT_BUTTON_CDDB:
      if (m_musicdatabase.LookupCDDBInfo(true))
        Update(m_vecItems->GetPath());
      return true;

    case CONTEXT_BUTTON_DELETE:
      OnDeleteItem(pItem);
      return true;

    case CONTEXT_BUTTON_RENAME:
      OnRenameItem(pItem);
      return true;

    case CONTEXT_BUTTON_SWITCH_MEDIA:
      CGUIDialogContextMenu::SwitchMedia("music", m_vecItems->GetPath());
      return true;
    default:
      break;
  }
  return CGUIWindowJukeboxBase::OnContextButton(pItem, button);
}
Example #5
0
int RTPSources::DeleteOwnSSRC()
{
    if (owndata == 0)
        return ERR_RTP_SOURCES_DONTHAVEOWNSSRC;

    uint32_t ssrc = owndata->GetSSRC();

    sourcelist.GotoElement(ssrc);
    sourcelist.DeleteCurrentElement();

    totalcount--;
    if (owndata->IsSender())
        sendercount--;
    if (owndata->IsActive())
        activecount--;

    OnRemoveSource(owndata);

    delete owndata;
    owndata = 0;
    return 0;
}
Example #6
0
void RTPSources::MultipleTimeouts(const RTPTime &curtime, const RTPTime &sendertimeout, const RTPTime &byetimeout, const RTPTime &generaltimeout, const RTPTime &notetimeout)
{
    int newtotalcount = 0;
    int newsendercount = 0;
    int newactivecount = 0;
    RTPTime senderchecktime = curtime;
    RTPTime byechecktime = curtime;
    RTPTime generaltchecktime = curtime;
    RTPTime notechecktime = curtime;
    senderchecktime -= sendertimeout;
    byechecktime -= byetimeout;
    generaltchecktime -= generaltimeout;
    notechecktime -= notetimeout;

    sourcelist.GotoFirstElement();
    while (sourcelist.HasCurrentElement())
    {
        RTPInternalSourceData *srcdat = sourcelist.GetCurrentElement();
        bool deleted, issender, isactive;
        bool byetimeout, normaltimeout, notetimeout;

        std::size_t notelen;

        issender = srcdat->IsSender();
        isactive = srcdat->IsActive();
        deleted = false;
        byetimeout = false;
        normaltimeout = false;
        notetimeout = false;

        srcdat->SDES_GetNote(&notelen);
        if (notelen != 0) // Note has been set
        {
            RTPTime notetime = srcdat->INF_GetLastSDESNoteTime();

            if (notechecktime > notetime)
            {
                notetimeout = true;
                srcdat->ClearNote();
            }
        }

        if (srcdat->ReceivedBYE())
        {
            RTPTime byetime = srcdat->GetBYETime();

            if ((srcdat != owndata) && (byechecktime > byetime))
            {
                sourcelist.DeleteCurrentElement();
                deleted = true;
                byetimeout = true;
            }
        }

        if (!deleted)
        {
            RTPTime lastmsgtime = srcdat->INF_GetLastMessageTime();

            if ((srcdat != owndata) && (lastmsgtime < generaltchecktime))
            {
                sourcelist.DeleteCurrentElement();
                deleted = true;
                normaltimeout = true;
            }
        }

        if (!deleted)
        {
            newtotalcount++;

            if (issender)
            {
                RTPTime lastrtppacktime = srcdat->INF_GetLastRTPPacketTime();

                if (lastrtppacktime < senderchecktime)
                {
                    srcdat->ClearSenderFlag();
                    sendercount--;
                }
                else
                    newsendercount++;
            }

            if (isactive)
                newactivecount++;

            if (notetimeout)
                OnNoteTimeout(srcdat);

            sourcelist.GotoNextElement();
        }
        else // deleted entry
        {
            if (issender)
                sendercount--;
            if (isactive)
                activecount--;
            totalcount--;

            if (byetimeout)
                OnBYETimeout(srcdat);
            if (normaltimeout)
                OnTimeout(srcdat);
            OnRemoveSource(srcdat);
            delete srcdat;
        }
    }

    totalcount = newtotalcount; // just to play it safe
    sendercount = newsendercount;
    activecount = newactivecount;
}