uint BubbleManager::Notify(const QString &appName, uint replacesId, const QString &appIcon, const QString &summary, const QString &body, const QStringList &actions, const QVariantMap hints, int expireTimeout) { #ifdef QT_DEBUG qDebug() << "a new Notify:" << "appName:" + appName << "replaceID:" + QString::number(replacesId) << "appIcon:" + appIcon << "summary:" + summary << "body:" + body << "actions:" << actions << "hints:" << hints << "expireTimeout:" << expireTimeout; #endif NotificationEntity *notification = new NotificationEntity(appName, QString(), appIcon, summary, removeHTML(body), actions, hints, QString::number(QDateTime::currentMSecsSinceEpoch()), QString::number(replacesId), QString::number(expireTimeout), this); if (!m_currentNotify.isNull() && replacesId != 0 && (m_currentNotify->id() == QString::number(replacesId) || m_currentNotify->replacesId() == QString::number(replacesId))) { m_bubble->setEntity(notification); m_currentNotify->deleteLater(); m_currentNotify = notification; } else { m_entities.enqueue(notification); } m_persistence->addOne(notification); if (!m_bubble->isVisible()) { consumeEntities(); } // If replaces_id is 0, the return value is a UINT32 that represent the notification. // If replaces_id is not 0, the returned value is the same value as replaces_id. return replacesId == 0 ? notification->id().toUInt() : replacesId; }
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 } }
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); } } }