void ThemeChooser::itemChanged(MythUIButtonListItem *item) { ThemeInfo *info = qVariantValue<ThemeInfo*>(item->GetData()); if (!info) return; QFileInfo preview(info->GetPreviewPath()); QHash<QString, QString> infomap; info->ToMap(infomap); SetTextFromMap(infomap); if (m_preview) { if (preview.exists()) { m_preview->SetFilename(info->GetPreviewPath()); m_preview->Load(); } else m_preview->Reset(); } if (m_fullPreviewShowing && m_fullPreviewStateType) { if (m_fullScreenPreview) { if (preview.exists()) { m_fullScreenPreview->SetFilename(info->GetPreviewPath()); m_fullScreenPreview->Load(); } else m_fullScreenPreview->Reset(); } if (m_fullScreenName) m_fullScreenName->SetText(info->GetName()); } MythUIStateType *themeLocation = dynamic_cast<MythUIStateType*>(GetChild("themelocation")); if (themeLocation) { if (info->GetDownloadURL().isEmpty()) themeLocation->DisplayState("local"); else themeLocation->DisplayState("remote"); } MythUIStateType *aspectState = dynamic_cast<MythUIStateType*>(GetChild("aspectstate")); if (aspectState) aspectState->DisplayState(info->GetAspect()); }
void ThemeChooser::saveAndReload(MythUIButtonListItem *item) { ThemeInfo *info = qVariantValue<ThemeInfo *>(item->GetData()); if (!info) return; if (!info->GetDownloadURL().isEmpty()) { QString downloadURL = info->GetDownloadURL(); QFileInfo qfile(downloadURL); QString baseName = qfile.fileName(); if (!gCoreContext->GetSetting("ThemeDownloadURL").isEmpty()) { QStringList tokens = gCoreContext->GetSetting("ThemeDownloadURL") .split(";", QString::SkipEmptyParts); QString origURL = downloadURL; downloadURL.replace(tokens[0], tokens[1]); LOG(VB_FILE, LOG_WARNING, LOC + QString("Theme download URL overridden from %1 to %2.") .arg(origURL).arg(downloadURL)); } OpenBusyPopup(tr("Downloading %1 Theme").arg(info->GetName())); m_downloadTheme = info; m_downloadFile = RemoteDownloadFile(downloadURL, "Temp", baseName); m_downloadState = dsDownloadingOnBackend; } else { gCoreContext->SaveSetting("Theme", info->GetDirectoryName()); GetMythMainWindow()->JumpTo("Reload Theme"); } }
void ThemeChooser::Init(void) { QString curTheme = gCoreContext->GetSetting("Theme"); ThemeInfo *themeinfo = NULL; ThemeInfo *curThemeInfo = NULL; MythUIButtonListItem *item = NULL; m_themes->Reset(); for( QFileInfoList::iterator it = m_infoList.begin(); it != m_infoList.end(); ++it ) { QFileInfo &theme = *it; if (!m_themeFileNameInfos.contains(theme.filePath())) continue; themeinfo = m_themeFileNameInfos[theme.filePath()]; if (!themeinfo) continue; QString buttonText = QString("%1 %2.%3") .arg(themeinfo->GetName()) .arg(themeinfo->GetMajorVersion()) .arg(themeinfo->GetMinorVersion()); item = new MythUIButtonListItem(m_themes, buttonText); if (item) { if (themeinfo->GetDownloadURL().isEmpty()) item->DisplayState("local", "themelocation"); else item->DisplayState("remote", "themelocation"); item->DisplayState(themeinfo->GetAspect(), "aspectstate"); item->DisplayState(m_themeStatuses[themeinfo->GetName()], "themestatus"); QHash<QString, QString> infomap; themeinfo->ToMap(infomap); item->SetTextFromMap(infomap); item->SetData(qVariantFromValue(themeinfo)); QString thumbnail = themeinfo->GetPreviewPath(); QFileInfo fInfo(thumbnail); // Downloadable themeinfos have thumbnail copies of their preview images if (!themeinfo->GetDownloadURL().isEmpty()) thumbnail = thumbnail.append(".thumb.jpg"); item->SetImage(thumbnail); if (curTheme == themeinfo->GetDirectoryName()) curThemeInfo = themeinfo; } else delete item; } SetFocusWidget(m_themes); if (curThemeInfo) m_themes->SetValueByData(qVariantFromValue(curThemeInfo)); MythUIButtonListItem *current = m_themes->GetItemCurrent(); if (current) itemChanged(current); }