void MythNews::updateInfoView(MythUIButtonListItem *selected) { QMutexLocker locker(&m_lock); if (!selected) return; NewsSite *site = NULL; NewsArticle article; if (GetFocusWidget() == m_articlesList) { article = m_articles[selected]; if (m_sitesList->GetItemCurrent()) site = qVariantValue<NewsSite*> (m_sitesList->GetItemCurrent()->GetData()); } else { site = qVariantValue<NewsSite*>(selected->GetData()); if (m_articlesList->GetItemCurrent()) article = m_articles[m_articlesList->GetItemCurrent()]; } if (GetFocusWidget() == m_articlesList) { if (!article.title().isEmpty()) { if (m_titleText) m_titleText->SetText(article.title()); if (m_descText) { QString artText = article.description(); // replace a few HTML characters artText.replace("
", ""); // LSEP artText.replace("
", ""); // PSEP artText.replace("£", "£"); // POUND artText.replace("­", ""); // ? artText.replace("–", "-"); // EN-DASH artText.replace("“", """"); // LEFT-DOUBLE-QUOTE artText.replace("”", """"); // RIGHT-DOUBLE-QUOTE artText.replace("‘", "'"); // LEFT-SINGLE-QUOTE artText.replace("’", "'"); // RIGHT-SINGLE-QUOTE // Replace paragraph and break HTML with newlines if( artText.indexOf(QRegExp("</(p|P)>")) ) { artText.replace( QRegExp("<(p|P)>"), ""); artText.replace( QRegExp("</(p|P)>"), "\n\n"); } else { artText.replace( QRegExp("<(p|P)>"), "\n\n"); artText.replace( QRegExp("</(p|P)>"), ""); } artText.replace( QRegExp("<(br|BR|)/>"), "\n"); artText.replace( QRegExp("<(br|BR|)>"), "\n"); // These are done instead of simplifyWhitespace // because that function also strips out newlines // Replace tab characters with nothing artText.replace( QRegExp("\t"), ""); // Replace double space with single artText.replace( QRegExp(" "), ""); // Replace whitespace at beginning of lines with newline artText.replace( QRegExp("\n "), "\n"); // Remove any remaining HTML tags QRegExp removeHTML(QRegExp("</?.+>")); removeHTML.setMinimal(true); artText.remove((const QRegExp&) removeHTML); artText = artText.trimmed(); m_descText->SetText(artText); } if (!article.thumbnail().isEmpty()) { QString fileprefix = GetConfDir(); QDir dir(fileprefix); if (!dir.exists()) dir.mkdir(fileprefix); fileprefix += "/MythNews/tcache"; dir = QDir(fileprefix); if (!dir.exists()) dir.mkdir(fileprefix); QString url = article.thumbnail(); QString sFilename = QString("%1/%2") .arg(fileprefix) .arg(qChecksum(url.toLocal8Bit().constData(), url.toLocal8Bit().size())); #if QT_VERSION < 0x050000 bool exists = QFile::exists(sFilename); if (!exists) HttpComms::getHttpFile(sFilename, url, 20000, 1, 2); #else #warning MythNews::updateInfoView() has not yet been ported to Qt5 #endif if (m_thumbnailImage) { m_thumbnailImage->SetFilename(sFilename); m_thumbnailImage->Load(); if (!m_thumbnailImage->IsVisible()) m_thumbnailImage->Show(); } } else { if (m_thumbnailImage) m_thumbnailImage->Hide(); if (site && !site->imageURL().isEmpty()) { QString fileprefix = GetConfDir(); QDir dir(fileprefix); if (!dir.exists()) dir.mkdir(fileprefix); fileprefix += "/MythNews/scache"; dir = QDir(fileprefix); if (!dir.exists()) dir.mkdir(fileprefix); QString url = site->imageURL(); QString extension = url.section('.', -1); QString sitename = site->name(); QString sFilename = QString("%1/%2.%3").arg(fileprefix) .arg(sitename) .arg(extension); #if QT_VERSION < 0x050000 bool exists = QFile::exists(sFilename); if (!exists) HttpComms::getHttpFile(sFilename, url, 20000, 1, 2); #else #warning MythNews::updateInfoView() has not yet been ported to Qt5 #endif if (m_thumbnailImage) { m_thumbnailImage->SetFilename(sFilename); m_thumbnailImage->Load(); if (!m_thumbnailImage->IsVisible()) m_thumbnailImage->Show(); } } } if (m_downloadImage) { if (!article.enclosure().isEmpty()) { if (!m_downloadImage->IsVisible()) m_downloadImage->Show(); } else m_downloadImage->Hide(); } if (m_enclosureImage) { if (!article.enclosure().isEmpty()) { if (!m_enclosureImage->IsVisible()) m_enclosureImage->Show(); } else m_enclosureImage->Hide(); } if (m_podcastImage) m_podcastImage->Hide(); } } else { if (m_downloadImage) m_downloadImage->Hide(); if (m_enclosureImage) m_enclosureImage->Hide(); if (m_podcastImage) m_podcastImage->Hide(); if (site) { if (m_titleText) m_titleText->SetText(site->name()); if (m_descText) m_descText->SetText(site->description()); if (m_thumbnailImage && m_thumbnailImage->IsVisible()) m_thumbnailImage->Hide(); if (m_podcastImage && site->podcast() == 1) m_podcastImage->Show(); if (!site->imageURL().isEmpty()) { QString fileprefix = GetConfDir(); QDir dir(fileprefix); if (!dir.exists()) dir.mkdir(fileprefix); fileprefix += "/MythNews/scache"; dir = QDir(fileprefix); if (!dir.exists()) dir.mkdir(fileprefix); QString url = site->imageURL(); QString extension = url.section('.', -1); QString sitename = site->name(); QString sFilename = QString("%1/%2.%3").arg(fileprefix) .arg(sitename) .arg(extension); #if QT_VERSION < 0x050000 bool exists = QFile::exists(sFilename); if (!exists) HttpComms::getHttpFile(sFilename, url, 20000, 1, 2); #else #warning MythNews::updateInfoView() has not yet been ported to Qt5 #endif if (m_thumbnailImage) { m_thumbnailImage->SetFilename(sFilename); m_thumbnailImage->Load(); if (!m_thumbnailImage->IsVisible()) m_thumbnailImage->Show(); } } } } if (m_updatedText) { if (site) { QString text(tr("Updated") + " - "); QDateTime updated(site->lastUpdated()); if (updated.toTime_t() != 0) { text += MythDate::toString(site->lastUpdated(), MythDate::kDateTimeFull | MythDate::kSimplify); } else text += tr("Unknown"); m_updatedText->SetText(text); } #if QT_VERSION < 0x050000 if (m_httpGrabber != NULL) { int progress = m_httpGrabber->getProgress(); int total = m_httpGrabber->getTotal(); if ((progress > 0) && (total > 0) && (progress < total)) { float fProgress = (float)progress/total; QString text = tr("%1 of %2 (%3 percent)") .arg(formatSize(progress, 2)) .arg(formatSize(total, 2)) .arg(floor(fProgress*100)); m_updatedText->SetText(text); } } #else #warning MythNews::updateInfoView() has not yet been ported to Qt5 #endif } }
// does not need locking void MythNews::playVideo(const NewsArticle &article) { GetMythMainWindow()->HandleMedia("Internal", article.enclosure(), article.description(), article.title()); }
void MythNews::updateInfoView(MythUIButtonListItem *selected) { QMutexLocker locker(&m_lock); if (!selected) return; NewsSite *site = NULL; NewsArticle article; if (GetFocusWidget() == m_articlesList) { article = m_articles[selected]; if (m_sitesList->GetItemCurrent()) site = m_sitesList->GetItemCurrent()->GetData().value<NewsSite*>(); } else { site = selected->GetData().value<NewsSite*>(); if (m_articlesList->GetItemCurrent()) article = m_articles[m_articlesList->GetItemCurrent()]; } if (GetFocusWidget() == m_articlesList) { if (!article.title().isEmpty()) { if (m_titleText) m_titleText->SetText(article.title()); if (m_descText) { QString artText = article.description(); // replace a few HTML characters artText.replace("
", ""); // LSEP artText.replace("
", ""); // PSEP artText.replace("£", "£"); // POUND artText.replace("­", ""); // ? artText.replace("–", "-"); // EN-DASH artText.replace("“", """"); // LEFT-DOUBLE-QUOTE artText.replace("”", """"); // RIGHT-DOUBLE-QUOTE artText.replace("‘", "'"); // LEFT-SINGLE-QUOTE artText.replace("’", "'"); // RIGHT-SINGLE-QUOTE // Replace paragraph and break HTML with newlines if( artText.indexOf(QRegExp("</(p|P)>")) ) { artText.replace( QRegExp("<(p|P)>"), ""); artText.replace( QRegExp("</(p|P)>"), "\n\n"); } else { artText.replace( QRegExp("<(p|P)>"), "\n\n"); artText.replace( QRegExp("</(p|P)>"), ""); } artText.replace( QRegExp("<(br|BR|)/>"), "\n"); artText.replace( QRegExp("<(br|BR|)>"), "\n"); // These are done instead of simplifyWhitespace // because that function also strips out newlines // Replace tab characters with nothing artText.replace( QRegExp("\t"), ""); // Replace double space with single artText.replace( QRegExp(" "), ""); // Replace whitespace at beginning of lines with newline artText.replace( QRegExp("\n "), "\n"); // Remove any remaining HTML tags QRegExp removeHTML(QRegExp("</?.+>")); removeHTML.setMinimal(true); artText.remove((const QRegExp&) removeHTML); artText = artText.trimmed(); m_descText->SetText(artText); } if (!article.thumbnail().isEmpty()) { if (m_thumbnailImage) { m_thumbnailImage->SetFilename(article.thumbnail()); m_thumbnailImage->Load(); if (!m_thumbnailImage->IsVisible()) m_thumbnailImage->Show(); } } else { if (site && !site->imageURL().isEmpty()) { if (m_thumbnailImage) { m_thumbnailImage->SetFilename(site->imageURL()); m_thumbnailImage->Load(); if (!m_thumbnailImage->IsVisible()) m_thumbnailImage->Show(); } } else { if (m_thumbnailImage) m_thumbnailImage->Hide(); } } if (m_downloadImage) { if (!article.enclosure().isEmpty()) { if (!m_downloadImage->IsVisible()) m_downloadImage->Show(); } else m_downloadImage->Hide(); } if (m_enclosureImage) { if (!article.enclosure().isEmpty()) { if (!m_enclosureImage->IsVisible()) m_enclosureImage->Show(); } else m_enclosureImage->Hide(); } if (m_podcastImage) m_podcastImage->Hide(); } } else { if (m_downloadImage) m_downloadImage->Hide(); if (m_enclosureImage) m_enclosureImage->Hide(); if (m_podcastImage) m_podcastImage->Hide(); if (site) { if (m_titleText) m_titleText->SetText(site->name()); if (m_descText) m_descText->SetText(site->description()); if (m_thumbnailImage && m_thumbnailImage->IsVisible()) m_thumbnailImage->Hide(); if (m_podcastImage && site->podcast() == 1) m_podcastImage->Show(); if (!site->imageURL().isEmpty()) { if (m_thumbnailImage) { m_thumbnailImage->SetFilename(site->imageURL()); m_thumbnailImage->Load(); if (!m_thumbnailImage->IsVisible()) m_thumbnailImage->Show(); } } } } if (m_updatedText) { if (site) { QString text(tr("Updated") + " - "); QDateTime updated(site->lastUpdated()); if (updated.toTime_t() != 0) { text += MythDate::toString(site->lastUpdated(), MythDate::kDateTimeFull | MythDate::kSimplify); } else text += tr("Unknown"); m_updatedText->SetText(text); } } }