bool CGUIWindowPictures::Update(const CStdString &strDirectory, bool updateFilterPath /* = true */)
{
  if (m_thumbLoader.IsLoading())
    m_thumbLoader.StopThread();

  if (!CGUIMediaWindow::Update(strDirectory, updateFilterPath))
    return false;

  m_vecItems->SetArt("thumb", "");
  if (CSettings::Get().GetBool("pictures.generatethumbs"))
    m_thumbLoader.Load(*m_vecItems);

  CPictureThumbLoader thumbLoader;
  CStdString thumb = thumbLoader.GetCachedImage(*m_vecItems, "thumb");
  m_vecItems->SetArt("thumb", thumb);

  return true;
}
Example #2
0
std::string CGUIWindowSlideShow::GetPicturePath(CFileItem *item)
{
  bool isVideo = item->IsVideo();
  std::string picturePath = item->GetPath();
  if (isVideo)
  {
    picturePath = item->GetArt("thumb");
    if (picturePath.empty() && !item->HasProperty("nothumb"))
    {
      CPictureThumbLoader thumbLoader;
      thumbLoader.LoadItem(item);
      picturePath = item->GetArt("thumb");
      if (picturePath.empty())
        item->SetProperty("nothumb", true);
    }
  }
  return picturePath;
}
Example #3
0
bool CGUIWindowPictures::Update(const std::string &strDirectory, bool updateFilterPath /* = true */)
{
  if (m_thumbLoader.IsLoading())
    m_thumbLoader.StopThread();

  if (!CGUIMediaWindow::Update(strDirectory, updateFilterPath))
    return false;

  m_vecItems->SetArt("thumb", "");
  if (CSettings::GetInstance().GetBool(CSettings::SETTING_PICTURES_GENERATETHUMBS))
    m_thumbLoader.Load(*m_vecItems);

  CPictureThumbLoader thumbLoader;
  std::string thumb = thumbLoader.GetCachedImage(*m_vecItems, "thumb");
  m_vecItems->SetArt("thumb", thumb);

  return true;
}
Example #4
0
void CBackgroundInfoLoader::LoadItemLinks(CFileItem* pItem, bool bCanBlock)
{
  if (pItem->HasLinksList())
  {
    const CFileItemList* linksList = pItem->GetLinksList();

    if (linksList)
    {
      int numOfLinks = linksList->Size();

      for (int i=0;i<numOfLinks;i++)
      {
        CFileItemPtr linkFileItem = linksList->Get(i);

        CPictureThumbLoader loader;
        loader.LoadItem(linkFileItem.get(), bCanBlock);
      }
    }
  }
}
Example #5
0
void CBackgroundInfoLoader::LoadImageProperty(CFileItem* pItem, const CStdString& imagePropertyName, bool bCanBlock)
{
  CStdString thumbPath = pItem->GetProperty(imagePropertyName);
  
  CFileItem tmpItem(thumbPath,false);
  
  CPictureThumbLoader picThumbLoader;
  if(picThumbLoader.LoadItem(&tmpItem,bCanBlock))
  {
    if((tmpItem.GetThumbnailImage()).IsEmpty())
    {
      CLog::Log(LOGERROR,"CBackgroundInfoLoader::LoadImageProperty - Call to CPictureThumbLoader::LoadItem() with item [path=%s][label=%s] FAILED (an empty thumbnail path was returned), therefore preperty [%s=%s] WASN'T updated. [%s=%s] (custb)",(tmpItem.m_strPath).c_str(),(tmpItem.GetLabel()).c_str(),imagePropertyName.c_str(),thumbPath.c_str(),imagePropertyName.c_str(),(pItem->GetProperty(imagePropertyName)).c_str());
    }
    else
    {
      CStdString thumbLocalPath = tmpItem.GetThumbnailImage();
      pItem->SetProperty(imagePropertyName, thumbLocalPath);          
    }
  }
  else
  {
    CLog::Log(LOGERROR,"CBackgroundInfoLoader::LoadImageProperty - Call to CPictureThumbLoader::LoadItem() with item [path=%s][label=%s] FAILED, therefore preperty [%s=%s] WASN'T updated. [%s=%s] (custb)",(tmpItem.m_strPath).c_str(),(tmpItem.GetLabel()).c_str(),imagePropertyName.c_str(),thumbPath.c_str(),imagePropertyName.c_str(),(pItem->GetProperty(imagePropertyName)).c_str());
  }  
}
Example #6
0
bool CBoxeeFeedItemsLoader::LoadItem(CFileItem* pItem, bool bCanBlock)
{
  if (!bCanBlock)
    return false;
  
  if (!pItem) 
  {
    CLog::Log(LOGDEBUG, "CBoxeeFeedItemsLoader::LoadItem, item is null (feedloader) (ri)");
    return false;
  }

  //CLog::Log(LOGDEBUG, "CBoxeeFeedItemsLoader::LoadItem, going to resolve item label =%s (feedloader) (ri)", pItem->GetLabel().c_str());

  bool succeeded = true;

  if (pItem->HasProperty("boxeeId"))
  {
    CFileItemList items;
    CStdString strBoxeeId = pItem->GetProperty("boxeeId");

    succeeded = BoxeeUtils::BuildItemInfo(*pItem,items,true);//BoxeeUtils::ResolveItem(strBoxeeId, items);

    //CLog::Log(LOGDEBUG, "CBoxeeFeedItemsLoader::LoadItem, going to resolve item for boxee id = %s, label =%s (feedloader) (ri)", strBoxeeId.c_str(), pItem->GetLabel().c_str());
    if (succeeded)
    {
      //CLog::Log(LOGDEBUG, "CBoxeeFeedItemsLoader::LoadItem, resolved item for boxee id = %s, label =%s (feedloader) (ri)", strBoxeeId.c_str(), pItem->GetLabel().c_str());

      CFileItemPtr resolvedItem = items.Get(0);

      //////////////////////////////////////////////////////////
      // Save important properties to copy them to a new item //
      //////////////////////////////////////////////////////////

      CStdString controlId = pItem->GetProperty("controlId");
      CStdString windowId = pItem->GetProperty("windowId");
      CStdString directoryPath = pItem->GetProperty("directoryPath");
      CStdString itemId = pItem->GetProperty("itemId");
      CStdString parentPath = pItem->GetProperty("parentPath");
      CStdString feedDesc = pItem->GetProperty("feeddesc");
      CStdString formattedDesc = pItem->GetProperty("formatteddesc");
      CStdString originalDesc = pItem->GetProperty("originaldesc");
      CStdString userId = pItem->GetProperty("user_id");
      CStdString userName = pItem->GetProperty("user_name");
      CStdString userThumb = pItem->GetProperty("user_thumb");
      CStdString thumbsUp = pItem->GetProperty("thumbsUp");
      CStdString userMessage = pItem->GetProperty("user_message");
      CStdString referral = pItem->GetProperty("referral");
      CStdString feedSource = pItem->GetProperty("feedsource");
      CStdString itemThumb = pItem->GetThumbnailImage();
      CFileItemPtr nextItem = pItem->GetNextItem();
      CStdString nextItemLabel = pItem->GetProperty("NextItemLabel");
      CStdString nextItemLabel2 = pItem->GetProperty("NextItemLabel2");
      CStdString nextItemPath = pItem->GetProperty("NextItemPath");
      CStdString hasNextItem = pItem->GetProperty("HasNextItem");
      CFileItemPtr prevItem = pItem->GetPrevItem();
      CStdString prevItemLabel = pItem->GetProperty("PrevItemLabel");
      CStdString prevItemLabel2 = pItem->GetProperty("PrevItemLabel2");
      CStdString prevItemPath = pItem->GetProperty("PrevItemPath");
      CStdString hasPrevItem = pItem->GetProperty("HasPrevItem");
      CStdString addToDiscoverDesc = pItem->GetProperty("addToDiscoverDesc");
      CStdString addToQueueDesc = pItem->GetProperty("addToQueueDesc");
      CStdString isSubscribe = pItem->GetProperty("IsSubscribe");
      CStdString isFeedItem = pItem->GetProperty("IsFeedItem");
      CStdString feedTypeItem = pItem->GetProperty("FeedTypeItem");

      CStdString label = "";
      CStdString thumb = "";
      CStdString desc = "";
      CStdString Plot = "";
      CStdString PlotOutline = "";
      bool isFeaturedItem = (feedTypeItem == MSG_ACTION_TYPE_FEATURED);
      if (isFeaturedItem)
      {
        label = pItem->GetLabel();
        thumb = pItem->GetThumbnailImage();
        desc = pItem->GetProperty("description");

        CVideoInfoTag* videoInfoTag = pItem->GetVideoInfoTag();
        if (videoInfoTag)
        {
          Plot = videoInfoTag->m_strPlot;
          PlotOutline = videoInfoTag->m_strPlotOutline;
        }
      }

      *pItem = *(resolvedItem.get());

      ///////////////////////////
      // copy saved properties //
      ///////////////////////////

      if (!controlId.IsEmpty())
      {
        pItem->SetProperty("controlId", controlId);
      }

      if (!windowId.IsEmpty())
      {
        pItem->SetProperty("windowId", windowId);
      }

      if (!directoryPath.IsEmpty())
      {
        pItem->SetProperty("directoryPath", directoryPath);
      }

      if (!itemId.IsEmpty())
      {
        pItem->SetProperty("itemId", itemId);
      }

      if (!parentPath.IsEmpty())
      {
        pItem->SetProperty("parentPath", parentPath);
      }

      if (!feedDesc.IsEmpty())
      {
      pItem->SetProperty("feeddesc", feedDesc);
      }

      if (!formattedDesc.IsEmpty())
      {
      pItem->SetProperty("formatteddesc", formattedDesc);
      }

      if (!originalDesc.IsEmpty())
      {
        pItem->SetProperty("originaldesc", originalDesc);
      }

      if (!userId.IsEmpty())
      {
        pItem->SetProperty("user_id", userId);
      }

      if (!userName.IsEmpty())
      {
        pItem->SetProperty("user_name", userName);
      }

      if (!userThumb.IsEmpty())
      {
        pItem->SetProperty("user_thumb", userThumb);
      }

      if (!thumbsUp.IsEmpty())
      {
        pItem->SetProperty("thumbsUp", thumbsUp);
      }

      if (!userMessage.IsEmpty())
      {
        pItem->SetProperty("user_message", userMessage);
      }

      if (!referral.IsEmpty())
      {
        pItem->SetProperty("referral", referral);
      }

      if (!feedSource.IsEmpty())
      {
        pItem->SetProperty("feedsource", feedSource);
        pItem->SetProperty("feedsource-lower",feedSource.ToLower());
      }

      // in case after resolve there is no thumb and the original feed item had a thumb -> set the the original feed item thumb
      if (pItem->GetThumbnailImage().IsEmpty() && !itemThumb.IsEmpty())
      {
        pItem->SetThumbnailImage(itemThumb);
      }

      if (nextItem.get())
      {
        pItem->SetNextItem(nextItem);
      }

      if (!nextItemLabel.IsEmpty())
      {
        pItem->SetProperty("NextItemLabel", nextItemLabel);
      }

      if (!nextItemLabel2.IsEmpty())
      {
        pItem->SetProperty("NextItemLabel2", nextItemLabel2);
      }

      if (!nextItemPath.IsEmpty())
      {
        pItem->SetProperty("NextItemPath", nextItemPath);
      }

      if (!hasNextItem.IsEmpty())
      {
        pItem->SetProperty("HasNextItem", hasNextItem);
      }

      if (prevItem.get())
      {
        pItem->SetPrevItem(prevItem);
      }

      if (!prevItemLabel.IsEmpty())
      {
        pItem->SetProperty("PrevItemLabel", prevItemLabel);
      }

      if (!prevItemLabel2.IsEmpty())
      {
        pItem->SetProperty("PrevItemLabel2", prevItemLabel2);
      }

      if (!prevItemPath.IsEmpty())
      {
        pItem->SetProperty("PrevItemPath", prevItemPath);
      }

      if (!hasPrevItem.IsEmpty())
      {
        pItem->SetProperty("HasPrevItem", hasPrevItem);
      }

      if (!addToDiscoverDesc.IsEmpty())
      {
        pItem->SetProperty("addToDiscoverDesc", addToDiscoverDesc);
      }

      if (!addToQueueDesc.IsEmpty())
      {
        pItem->SetProperty("addToQueueDesc", addToQueueDesc);
      }

      if (!isSubscribe.IsEmpty())
      {
        pItem->SetProperty("IsSubscribe", isSubscribe);
      }

      if (!isFeedItem.IsEmpty())
      {
        pItem->SetProperty("IsFeedItem", isFeedItem);
      }

      if (!feedTypeItem.IsEmpty())
      {
        pItem->SetProperty("FeedTypeItem", feedTypeItem);
      }

      if (isFeaturedItem)
      {
        if (!label.IsEmpty())
        {
          pItem->SetLabel(label);
        }

        if (!thumb.IsEmpty())
        {
          pItem->SetProperty("ResolveThumb",pItem->GetThumbnailImage());
          pItem->SetThumbnailImage(thumb);
        }

        if (!desc.IsEmpty())
        {
          pItem->SetProperty("description",desc);
        }

        CVideoInfoTag* videoInfoTag = pItem->GetVideoInfoTag();
        if (!Plot.IsEmpty() && videoInfoTag)
        {
          videoInfoTag->m_strPlot = Plot;
        }

        if (!PlotOutline.IsEmpty() && videoInfoTag)
        {
          videoInfoTag->m_strPlotOutline = PlotOutline;
        }
      }
    }
    else
    {
      CLog::Log(LOGERROR, "CBoxeeFeedItemsLoader::LoadItem - FAILED to resolve item with [boxeeId=%s] (feedloader)(ri)", strBoxeeId.c_str());
    }
  }
  else if (pItem->HasProperty("isfeedalbum"))
  {
    HandleAlbum(pItem, bCanBlock);
  }
  else
  {
    CLog::Log(LOGDEBUG,"CBoxeeFeedItemsLoader::LoadItem - Not handling item [label=%s][showid=%s][boxeeid=%s][isfeedalbum=%s][referral=%s] (feedloader)(ri)",pItem->GetLabel().c_str(),pItem->GetProperty("showId").c_str(),pItem->GetProperty("boxeeId").c_str(),pItem->GetProperty("isfeedalbum").c_str(),pItem->GetProperty("referral").c_str());
  }

  if (succeeded)
  {
    // In case the item has CustomButtons we want to load the remote thumb
    // and replace the path to the loaded one (local)
    LoadCustomButtons(pItem,true);
  }

  // In any case, activate the picture loader to retreive the thumb
  CPictureThumbLoader loader;
  succeeded &= loader.LoadItem(pItem, bCanBlock);
  return succeeded;
};