void CGUIWindowAddonBrowser::SetItemLabel2(CFileItemPtr item) { if (!item || item->m_bIsFolder) return; unsigned int percent; if (CAddonInstaller::GetInstance().GetProgress(item->GetProperty("Addon.ID").asString(), percent)) { std::string progress = StringUtils::Format(g_localizeStrings.Get(24042).c_str(), percent); item->SetProperty("Addon.Status", progress); item->SetProperty("Addon.Downloading", true); } else item->ClearProperty("Addon.Downloading"); item->SetLabel2(item->GetProperty("Addon.Status").asString()); // to avoid the view state overriding label 2 item->SetLabelPreformated(true); }
bool CGUIWindowEventLog::GetDirectory(const std::string &strDirectory, CFileItemList &items) { bool result = CGUIMediaWindow::GetDirectory(strDirectory, items); EventLevel currentLevel = CViewStateSettings::GetInstance().GetEventLevel(); bool showHigherLevels = CViewStateSettings::GetInstance().ShowHigherEventLevels(); CFileItemList filteredItems(items.GetPath()); for (int i = 0; i < items.Size(); i++) { CFileItemPtr item = items.Get(i); if (item->IsParentFolder()) { filteredItems.Add(item); continue; } if (!item->HasProperty(PROPERTY_EVENT_LEVEL)) continue; EventLevel level = CEventLog::GetInstance().EventLevelFromString(item->GetProperty(PROPERTY_EVENT_LEVEL).asString()); if (level == currentLevel || (level > currentLevel && showHigherLevels)) filteredItems.Add(item); } items.ClearItems(); items.Append(filteredItems); return result; }
void CGUIDialogPVRChannelManager::SetData(int iItem) { CGUIEditControl *pEdit; CGUIRadioButtonControl *pRadioButton; /* Check file item is in list range and get his pointer */ if (iItem < 0 || iItem >= (int)m_channelItems->Size()) return; CFileItemPtr pItem = m_channelItems->Get(iItem); if (!pItem) return; // CPVRChannel *infotag = pItem->GetPVRChannelInfoTag(); pEdit = (CGUIEditControl *)GetControl(EDIT_NAME); if (pEdit) { pEdit->SetLabel2(pItem->GetProperty("Name")); pEdit->SetInputType(CGUIEditControl::INPUT_TYPE_TEXT, 19208); } pRadioButton = (CGUIRadioButtonControl *)GetControl(RADIOBUTTON_ACTIVE); if (pRadioButton) pRadioButton->SetSelected(pItem->GetPropertyBOOL("ActiveChannel")); pRadioButton = (CGUIRadioButtonControl *)GetControl(RADIOBUTTON_USEEPG); if (pRadioButton) pRadioButton->SetSelected(pItem->GetPropertyBOOL("UseEPG")); }
bool CGUIDialogPVRChannelManager::OnClickButtonDeleteChannel(CGUIMessage &message) { CFileItemPtr pItem = m_channelItems->Get(m_iSelected); if (!pItem) return false; CGUIDialogYesNo* pDialog = (CGUIDialogYesNo*)g_windowManager.GetWindow(WINDOW_DIALOG_YES_NO); if (!pDialog) return true; pDialog->SetHeading(19211); pDialog->SetLine(0, ""); pDialog->SetLine(1, 750); pDialog->SetLine(2, ""); pDialog->DoModal(); if (pDialog->IsConfirmed()) { if (pItem->GetProperty("Virtual").asBoolean()) { pItem->GetPVRChannelInfoTag()->SetVirtual(true); m_channelItems->Remove(m_iSelected); m_viewControl.SetItems(*m_channelItems); Renumber(); return true; } CGUIDialogOK::ShowAndGetInput(19033,19038,0,0); } return true; }
bool CGUIControlListSetting::OnClick() { if (m_pButton == NULL) return false; CGUIDialogSelect *dialog = (CGUIDialogSelect*)g_windowManager.GetWindow(WINDOW_DIALOG_SELECT); if (dialog == NULL) return false; CFileItemList options; if (!GetItems(m_pSetting, options) || options.Size() <= 1) return false; const CSettingControlList *control = static_cast<const CSettingControlList*>(m_pSetting->GetControl()); dialog->Reset(); dialog->SetHeading(g_localizeStrings.Get(m_pSetting->GetLabel())); dialog->SetItems(&options); dialog->SetMultiSelection(control->CanMultiSelect()); dialog->DoModal(); if (!dialog->IsConfirmed()) return false; const CFileItemList &items = dialog->GetSelectedItems(); std::vector<CVariant> values; for (int index = 0; index < items.Size(); index++) { const CFileItemPtr item = items[index]; if (item == NULL || !item->HasProperty("value")) return false; values.push_back(item->GetProperty("value")); } bool ret = false; switch (m_pSetting->GetType()) { case SettingTypeInteger: if (values.size() > 1) return false; ret = ((CSettingInt *)m_pSetting)->SetValue((int)values.at(0).asInteger()); case SettingTypeString: if (values.size() > 1) return false; ret = ((CSettingString *)m_pSetting)->SetValue(values.at(0).asString()); case SettingTypeList: ret = CSettings::Get().SetList(m_pSetting->GetId(), values); default: break; } if (ret) Update(); return ret; }
bool CGUIDialogSubtitles::SetService(const std::string &service) { if (service != m_currentService) { m_currentService = service; CLog::Log(LOGDEBUG, "New Service [%s] ", m_currentService.c_str()); CFileItemPtr currentService = GetService(); // highlight this item in the skin for (int i = 0; i < m_serviceItems->Size(); i++) { CFileItemPtr pItem = m_serviceItems->Get(i); pItem->Select(pItem == currentService); } SET_CONTROL_LABEL(CONTROL_NAMELABEL, currentService->GetLabel()); std::string icon = URIUtils::AddFileToFolder(currentService->GetProperty("Addon.Path").asString(), "logo.png"); SET_CONTROL_FILENAME(CONTROL_NAMELOGO, icon); if (g_application.m_pPlayer->GetSubtitleCount() == 0) SET_CONTROL_HIDDEN(CONTROL_SUBSEXIST); else SET_CONTROL_VISIBLE(CONTROL_SUBSEXIST); return true; } return false; }
bool CGUIWindowAddonBrowser::OnContextButton(int itemNumber, CONTEXT_BUTTON button) { CFileItemPtr pItem = m_vecItems->Get(itemNumber); std::string addonId = pItem->GetProperty("Addon.ID").asString(); if (!addonId.empty()) { if (button == CONTEXT_BUTTON_INFO) { return CGUIDialogAddonInfo::ShowForItem(pItem); } else if (button == CONTEXT_BUTTON_SETTINGS) { AddonPtr addon; if (CAddonMgr::GetInstance().GetAddon(addonId, addon, ADDON_UNKNOWN, false)) return CGUIDialogAddonSettings::ShowAndGetInput(addon); } else if (button == CONTEXT_BUTTON_CHECK_FOR_UPDATES) { AddonPtr addon; if (CAddonMgr::GetInstance().GetAddon(addonId, addon, ADDON_REPOSITORY)) CRepositoryUpdater::GetInstance().CheckForUpdates(std::static_pointer_cast<CRepository>(addon), true); } } return CGUIMediaWindow::OnContextButton(itemNumber, button); }
bool CGUIDialogPVRChannelManager::OnPopupMenu(int iItem) { // popup the context menu // grab our context menu CContextButtons buttons; // mark the item if (iItem >= 0 && iItem < m_channelItems->Size()) m_channelItems->Get(iItem)->Select(true); else return false; CFileItemPtr pItem = m_channelItems->Get(iItem); if (!pItem) return false; buttons.Add(CONTEXT_BUTTON_MOVE, 116); /* Move channel up or down */ if (pItem->GetProperty("Virtual").asBoolean()) buttons.Add(CONTEXT_BUTTON_EDIT_SOURCE, 1027); /* Edit virtual channel URL */ int choice = CGUIDialogContextMenu::ShowAndGetChoice(buttons); // deselect our item if (iItem >= 0 && iItem < m_channelItems->Size()) m_channelItems->Get(iItem)->Select(false); if (choice < 0) return false; return OnContextButton(iItem, (CONTEXT_BUTTON)choice); }
void CAddonsDirectory::GenerateListing(CURL &path, VECADDONS& addons, CFileItemList &items, bool reposAsFolders) { CStdString xbmcPath = _P("special://xbmc/addons"); items.ClearItems(); for (unsigned i=0; i < addons.size(); i++) { AddonPtr addon = addons[i]; CFileItemPtr pItem; if (reposAsFolders && addon->Type() == ADDON_REPOSITORY) pItem = FileItemFromAddon(addon, "addons://", true); else pItem = FileItemFromAddon(addon, path.Get(), false); AddonPtr addon2; if (CAddonMgr::Get().GetAddon(addon->ID(),addon2)) pItem->SetProperty("Addon.Status",g_localizeStrings.Get(305)); else if ((addon->Type() == ADDON_PVRDLL) && (CStdString(pItem->GetProperty("Addon.Path").asString()).Left(xbmcPath.size()).Equals(xbmcPath))) pItem->SetProperty("Addon.Status",g_localizeStrings.Get(24023)); if (!addon->Props().broken.IsEmpty()) pItem->SetProperty("Addon.Status",g_localizeStrings.Get(24098)); if (addon2 && addon2->Version() < addon->Version()) { pItem->SetProperty("Addon.Status",g_localizeStrings.Get(24068)); pItem->SetProperty("Addon.UpdateAvail", true); } CAddonDatabase::SetPropertiesFromAddon(addon,pItem); items.Add(pItem); } }
void CGUIWindowGames::GetContextButtons(int itemNumber, CContextButtons &buttons) { CFileItemPtr item = m_vecItems->Get(itemNumber); if (item && !item->GetProperty("pluginreplacecontextitems").asBoolean()) { if (m_vecItems->IsVirtualDirectoryRoot() || m_vecItems->IsSourcesPath()) { // Context buttons for a sources path, like "Add source", "Remove Source", etc. CGUIDialogContextMenu::GetContextButtons("games", item, buttons); } else { if (item->IsGame()) { buttons.Add(CONTEXT_BUTTON_PLAY_ITEM, 208); // Play } if (CServiceBroker::GetSettings().GetBool(CSettings::SETTING_FILELISTS_ALLOWFILEDELETION) && !item->IsReadOnly()) { buttons.Add(CONTEXT_BUTTON_DELETE, 117); buttons.Add(CONTEXT_BUTTON_RENAME, 118); } } } CGUIMediaWindow::GetContextButtons(itemNumber, buttons); }
bool CGUIDialogPVRChannelManager::OnClickButtonChannelLogo(CGUIMessage &message) { CFileItemPtr pItem = m_channelItems->Get(m_iSelected); if (!pItem) return false; if (g_settings.GetCurrentProfile().canWriteSources() && !g_passwordManager.IsProfileLockUnlocked()) return false; else if (!g_passwordManager.IsMasterLockUnlocked(true)) return false; // setup our thumb list CFileItemList items; // add the current thumb, if available if (!pItem->GetProperty("Icon").asString().empty()) { CFileItemPtr current(new CFileItem("thumb://Current", false)); current->SetArt("thumb", pItem->GetPVRChannelInfoTag()->IconPath()); current->SetLabel(g_localizeStrings.Get(20016)); items.Add(current); } else if (pItem->HasArt("thumb")) { // already have a thumb that the share doesn't know about - must be a local one, so we mayaswell reuse it. CFileItemPtr current(new CFileItem("thumb://Current", false)); current->SetArt("thumb", pItem->GetArt("thumb")); current->SetLabel(g_localizeStrings.Get(20016)); items.Add(current); } // and add a "no thumb" entry as well CFileItemPtr nothumb(new CFileItem("thumb://None", false)); nothumb->SetIconImage(pItem->GetIconImage()); nothumb->SetLabel(g_localizeStrings.Get(20018)); items.Add(nothumb); CStdString strThumb; VECSOURCES shares; if (g_guiSettings.GetString("pvrmenu.iconpath") != "") { CMediaSource share1; share1.strPath = g_guiSettings.GetString("pvrmenu.iconpath"); share1.strName = g_localizeStrings.Get(19018); shares.push_back(share1); } g_mediaManager.GetLocalDrives(shares); if (!CGUIDialogFileBrowser::ShowAndGetImage(items, shares, g_localizeStrings.Get(1030), strThumb)) return false; if (strThumb == "thumb://Current") return true; if (strThumb == "thumb://None") strThumb = ""; pItem->SetProperty("Icon", strThumb); pItem->SetProperty("Changed", true); m_bContainsChanges = true; return true; }
bool CGUIDialogPVRChannelManager::OnClickButtonEditChannel(CGUIMessage &message) { CFileItemPtr pItem = m_channelItems->Get(m_iSelected); if (!pItem) return false; if (pItem->GetProperty("Virtual").asBoolean()) { CStdString strURL = pItem->GetProperty("StreamURL").asString(); if (CGUIKeyboardFactory::ShowAndGetInput(strURL, g_localizeStrings.Get(19214), false)) pItem->SetProperty("StreamURL", strURL); return true; } CGUIDialogOK::ShowAndGetInput(19033,19038,0,0); return true; }
void CGUIDialogPVRChannelManager::SetData(int iItem) { /* Check file item is in list range and get his pointer */ if (iItem < 0 || iItem >= (int)m_channelItems->Size()) return; CFileItemPtr pItem = m_channelItems->Get(iItem); if (!pItem) return; SET_CONTROL_LABEL2(EDIT_NAME, pItem->GetProperty("Name").asString()); CGUIMessage msg(GUI_MSG_SET_TYPE, GetID(), EDIT_NAME, CGUIEditControl::INPUT_TYPE_TEXT, 19208); OnMessage(msg); SET_CONTROL_SELECTED(GetID(), RADIOBUTTON_ACTIVE, pItem->GetProperty("ActiveChannel").asBoolean()); SET_CONTROL_SELECTED(GetID(), RADIOBUTTON_USEEPG, pItem->GetProperty("UseEPG").asBoolean()); SET_CONTROL_SELECTED(GetID(), RADIOBUTTON_PARENTAL_LOCK, pItem->GetProperty("ParentalLocked").asBoolean()); }
void CGUIDialogVideoBookmarks::GotoBookmark(int item) { if (item < 0 || item >= m_vecItems->Size() || !g_application.m_pPlayer->HasPlayer()) return; CFileItemPtr fileItem = m_vecItems->Get(item); int chapter = static_cast<int>(fileItem->GetProperty("chapter").asInteger()); if (chapter <= 0) { g_application.m_pPlayer->SetPlayerState(fileItem->GetProperty("playerstate").asString()); g_application.SeekTime(fileItem->GetProperty("resumepoint").asDouble()); } else g_application.m_pPlayer->SeekChapter(chapter); Close(); }
bool CGUIWindowAddonBrowser::OnClick(int iItem) { CFileItemPtr item = m_vecItems->Get(iItem); if (item->GetPath() == "addons://install/") { // pop up filebrowser to grab an installed folder VECSOURCES shares = *CMediaSourceSettings::Get().GetSources("files"); g_mediaManager.GetLocalDrives(shares); g_mediaManager.GetNetworkLocations(shares); CStdString path; if (CGUIDialogFileBrowser::ShowAndGetFile(shares, "*.zip", g_localizeStrings.Get(24041), path)) CAddonInstaller::Get().InstallFromZip(path); return true; } if (item->GetPath() == "addons://update_all/") { // fire off a threaded update of all addons UpdateAddons updater; if (CGUIDialogBusy::Wait(&updater)) return Update("addons://downloading/"); return true; } if (!item->m_bIsFolder) { // cancel a downloading job if (item->HasProperty("Addon.Downloading")) { if (CGUIDialogYesNo::ShowAndGetInput(g_localizeStrings.Get(24000), item->GetProperty("Addon.Name").asString(), g_localizeStrings.Get(24066),"")) { if (CAddonInstaller::Get().Cancel(item->GetProperty("Addon.ID").asString())) Refresh(); } return true; } CGUIDialogAddonInfo::ShowForItem(item); return true; } if (item->GetPath().Equals("addons://search/")) return Update(item->GetPath()); return CGUIMediaWindow::OnClick(iItem); }
bool CGUIDialogPVRChannelManager::OnContextButton(int itemNumber, CONTEXT_BUTTON button) { /* Check file item is in list range and get his pointer */ if (itemNumber < 0 || itemNumber >= (int)m_channelItems->Size()) return false; CFileItemPtr pItem = m_channelItems->Get(itemNumber); if (!pItem) return false; if (button == CONTEXT_BUTTON_MOVE) { m_bMovingMode = true; pItem->Select(true); } else if (button == CONTEXT_BUTTON_SETTINGS) { PVR_ERROR ret = CServiceBroker::GetPVRManager().Clients()->OpenDialogChannelSettings(pItem->GetPVRChannelInfoTag()); if (ret == PVR_ERROR_NOT_IMPLEMENTED) CGUIDialogOK::ShowAndGetInput(CVariant{19033}, CVariant{19038}); // "Information", "Not supported by the PVR backend." else if (ret != PVR_ERROR_NO_ERROR) CGUIDialogOK::ShowAndGetInput(CVariant{2103}, CVariant{16029}); // "Add-on error", "Check the log for more information about this message." } else if (button == CONTEXT_BUTTON_DELETE) { CGUIDialogYesNo* pDialog = g_windowManager.GetWindow<CGUIDialogYesNo>(WINDOW_DIALOG_YES_NO); if (!pDialog) return true; pDialog->SetHeading(CVariant{19211}); // Delete channel pDialog->SetText(CVariant{750}); // Are you sure? pDialog->Open(); if (pDialog->IsConfirmed()) { CPVRChannelPtr channel = pItem->GetPVRChannelInfoTag(); PVR_ERROR ret = CServiceBroker::GetPVRManager().Clients()->DeleteChannel(channel); if (ret == PVR_ERROR_NO_ERROR) { CServiceBroker::GetPVRManager().ChannelGroups()->GetGroupAll(channel->IsRadio())->RemoveFromGroup(channel); m_channelItems->Remove(m_iSelected); m_viewControl.SetItems(*m_channelItems); Renumber(); } else if (ret == PVR_ERROR_NOT_IMPLEMENTED) CGUIDialogOK::ShowAndGetInput(CVariant{19033}, CVariant{19038}); // "Information", "Not supported by the PVR backend." else CGUIDialogOK::ShowAndGetInput(CVariant{2103}, CVariant{16029}); // "Add-on error", "Check the log for more information about this message." } } else if (button == CONTEXT_BUTTON_EDIT_SOURCE) { std::string strURL = pItem->GetProperty("StreamURL").asString(); if (CGUIKeyboardFactory::ShowAndGetInput(strURL, CVariant{g_localizeStrings.Get(19214)}, false)) pItem->SetProperty("StreamURL", strURL); } return true; }
void CGUIWindowPictures::GetContextButtons(int itemNumber, CContextButtons &buttons) { CFileItemPtr item; if (itemNumber >= 0 && itemNumber < m_vecItems->Size()) item = m_vecItems->Get(itemNumber); if (item && !item->GetProperty("pluginreplacecontextitems").asBoolean()) { if ( m_vecItems->IsVirtualDirectoryRoot() && item) { CGUIDialogContextMenu::GetContextButtons("pictures", item, buttons); } else { if (item) { if (!m_vecItems->IsPlugin() && (item->IsPlugin() || item->IsScript())) buttons.Add(CONTEXT_BUTTON_INFO, 24003); // Add-on info if (!(item->m_bIsFolder || item->IsZIP() || item->IsRAR() || item->IsCBZ() || item->IsCBR() || item->IsScript())) buttons.Add(CONTEXT_BUTTON_INFO, 13406); // picture info buttons.Add(CONTEXT_BUTTON_VIEW_SLIDESHOW, item->m_bIsFolder ? 13317 : 13422); // View Slideshow if (item->m_bIsFolder) buttons.Add(CONTEXT_BUTTON_RECURSIVE_SLIDESHOW, 13318); // Recursive Slideshow if (!m_thumbLoader.IsLoading()) buttons.Add(CONTEXT_BUTTON_REFRESH_THUMBS, 13315); // Create Thumbnails if (g_guiSettings.GetBool("filelists.allowfiledeletion") && !item->IsReadOnly()) { buttons.Add(CONTEXT_BUTTON_DELETE, 117); buttons.Add(CONTEXT_BUTTON_RENAME, 118); } } if (item->IsPlugin() || item->IsScript() || m_vecItems->IsPlugin()) buttons.Add(CONTEXT_BUTTON_PLUGIN_SETTINGS, 1045); buttons.Add(CONTEXT_BUTTON_GOTO_ROOT, 20128); buttons.Add(CONTEXT_BUTTON_SWITCH_MEDIA, 523); } } CGUIMediaWindow::GetContextButtons(itemNumber, buttons); if (item && !item->GetProperty("pluginreplacecontextitems").asBoolean()) buttons.Add(CONTEXT_BUTTON_SETTINGS, 5); // Settings }
bool CGUIDialogAddonInfo::SetItem(const CFileItemPtr& item) { *m_item = *item; m_rollbackVersions.clear(); // grab the local addon, if it's available m_localAddon.reset(); m_addon.reset(); if (CAddonMgr::Get().GetAddon(item->GetProperty("Addon.ID").asString(), m_localAddon)) // sets m_addon if installed regardless of enabled state m_item->SetProperty("Addon.Enabled", "true"); else m_item->SetProperty("Addon.Enabled", "false"); m_item->SetProperty("Addon.Installed", m_addon ? "true" : "false"); CAddonDatabase database; database.Open(); database.GetAddon(item->GetProperty("Addon.ID").asString(),m_addon); if (TranslateType(item->GetProperty("Addon.intType").asString()) == ADDON_REPOSITORY) { CAddonDatabase database; database.Open(); VECADDONS addons; if (m_addon) database.GetRepository(m_addon->ID(), addons); else if (m_localAddon) // sanity database.GetRepository(m_localAddon->ID(), addons); int tot=0; for (int i = ADDON_UNKNOWN+1;i<ADDON_VIZ_LIBRARY;++i) { int num=0; for (unsigned int j=0;j<addons.size();++j) { if (addons[j]->Type() == (TYPE)i) ++num; } m_item->SetProperty(CStdString("Repo.") + TranslateType((TYPE)i), num); tot += num; } m_item->SetProperty("Repo.Addons", tot); } return true; }
void CGUIMediaWindow::GetContextButtons(int itemNumber, CContextButtons &buttons) { CFileItemPtr item = (itemNumber >= 0 && itemNumber < m_vecItems->Size()) ? m_vecItems->Get(itemNumber) : CFileItemPtr(); if (!item) return; // user added buttons CStdString label; CStdString action; for (int i = CONTEXT_BUTTON_USER1; i <= CONTEXT_BUTTON_USER10; i++) { label.Format("contextmenulabel(%i)", i - CONTEXT_BUTTON_USER1); if (item->GetProperty(label).IsEmpty()) break; action.Format("contextmenuaction(%i)", i - CONTEXT_BUTTON_USER1); if (item->GetProperty(action).IsEmpty()) break; buttons.Add((CONTEXT_BUTTON)i, item->GetProperty(label)); } if (item->IsPlugin() && item->IsFileFolder()) { if (CPluginSettings::SettingsExist(item->m_strPath)) buttons.Add(CONTEXT_BUTTON_PLUGIN_SETTINGS, 1045); } if (item->GetPropertyBOOL("pluginreplacecontextitems")) return; // TODO: FAVOURITES Conditions on masterlock and localisation if (!item->IsParentFolder() && !item->m_strPath.Equals("add") && !item->m_strPath.Equals("newplaylist://") && !item->m_strPath.Left(19).Equals("newsmartplaylist://")) { if (CFavourites::IsFavourite(item.get(), GetID())) buttons.Add(CONTEXT_BUTTON_ADD_FAVOURITE, 14077); // Remove Favourite else buttons.Add(CONTEXT_BUTTON_ADD_FAVOURITE, 14076); // Add To Favourites; } }
void CGUIDialogPVRChannelManager::RenameChannel(const CFileItemPtr &pItem) { std::string strChannelName = pItem->GetProperty("Name").asString(); if (strChannelName != pItem->GetPVRChannelInfoTag()->ChannelName()) { CPVRChannelPtr channel = pItem->GetPVRChannelInfoTag(); channel->SetChannelName(strChannelName); if (!CServiceBroker::GetPVRManager().Clients()->RenameChannel(channel)) CGUIDialogOK::ShowAndGetInput(CVariant{2103}, CVariant{16029}); // Add-on error;Check the log file for details. } }
bool CGUIWindowEventLog::OnDelete(CFileItemPtr item) { if (item == nullptr) return false; std::string eventIdentifier = item->GetProperty(PROPERTY_EVENT_IDENTIFIER).asString(); if (eventIdentifier.empty()) return false; CEventLog::GetInstance().Remove(eventIdentifier); return true; }
void CGUIDialogPVRChannelManager::RenameChannel(CFileItemPtr pItem) { std::string strChannelName = pItem->GetProperty("Name").asString(); if (strChannelName != pItem->GetPVRChannelInfoTag()->ChannelName()) { CPVRChannelPtr channel = pItem->GetPVRChannelInfoTag(); channel->SetChannelName(strChannelName); if (!g_PVRClients->RenameChannel(channel)) CGUIDialogOK::ShowAndGetInput(2103, 0, 16029, 0); // Add-on error;Check the log file for details. } }
virtual void DoBuildFileItem(CFileItemPtr& pItem, const string& parentPath, TiXmlElement& el) { pItem->SetLabel(GetLabel(el)); CVideoInfoTag tag; tag.m_strTitle = pItem->GetLabel(); // Summary. const char* summary = el.Attribute("summary"); if (summary) { pItem->SetProperty("description", summary); tag.m_strPlot = tag.m_strPlotOutline = summary; } CFileItemPtr newItem(new CFileItem(tag)); newItem->m_bIsFolder = true; newItem->m_strPath = pItem->m_strPath; newItem->SetProperty("description", pItem->GetProperty("description")); pItem = newItem; // Check for special directories. const char* search = el.Attribute("search"); const char* prompt = el.Attribute("prompt"); const char* settings = el.Attribute("settings"); // Check for search directory. if (search && strlen(search) > 0 && prompt) { string strSearch = search; if (strSearch == "1") { pItem->m_bIsSearchDir = true; pItem->m_strSearchPrompt = prompt; } } // Check for popup menus. const char* popup = el.Attribute("popup"); if (popup && strlen(popup) > 0) { string strPopup = popup; if (strPopup == "1") pItem->m_bIsPopupMenuItem = true; } // Check for preferences. if (settings && strlen(settings) > 0) { string strSettings = settings; if (strSettings == "1") pItem->m_bIsSettingsDir = true; } }
bool CBoxeeSocialUtilsManager::GetStatusFromServer() { int retCode; Job_Result jobResult = BoxeeUtils::GetShareServicesJson(m_jsonServiceList, retCode); CLog::Log(LOGDEBUG,"CBoxeeSocialUtilsManager::GetSocialServicesStatus - call to get SocialServices status from server returned [jobResult=%d] ",jobResult); if (jobResult != JOB_SUCCEEDED) { CLog::Log(LOGERROR,"CBoxeeSocialUtilsManager::GetSocialServicesStatus - FAILED to get SocialServices status from server. [jobResult=%d]",jobResult); return false; } m_servicesList.Clear(); m_serviceMap.clear(); BoxeeUtils::ParseJsonShareServicesToFileItems(m_jsonServiceList,m_servicesList); CLog::Log(LOGDEBUG,"CBoxeeSocialUtilsManager::GetSocialServicesStatus - after parse SocialServices to FIleItemList. [NumOfSocialServices=%d]",m_servicesList.Size()); for (int i = 0; i < m_servicesList.Size(); i++) { CFileItemPtr item = m_servicesList.Get(i); CStdString currentServiceId = item->GetProperty("serviceId"); if (currentServiceId == FACEBOOK_SERVICE_ID || currentServiceId == TWITTER_SERVICE_ID || currentServiceId == TUMBLR_SERVICE_ID) { m_serviceMap[currentServiceId].isConnected = item->GetPropertyBOOL("enable"); m_serviceMap[currentServiceId].requiresUpdate = item->GetPropertyBOOL("refresh"); m_serviceMap[currentServiceId].link = item->GetProperty("connect"); m_serviceMap[currentServiceId].disconnectLink = item->GetProperty("disconnect"); m_serviceMap[currentServiceId].externalLink = item->GetProperty("link"); } } return true; }
void CGUIWindowMusicBase::GetContextButtons(int itemNumber, CContextButtons &buttons) { CFileItemPtr item; if (itemNumber >= 0 && itemNumber < m_vecItems->Size()) item = m_vecItems->Get(itemNumber); if (item && !item->GetProperty("pluginreplacecontextitems").asBoolean()) { if (item && !item->IsParentFolder()) { if (!m_vecItems->IsPlugin() && (item->IsPlugin() || item->IsScript())) buttons.Add(CONTEXT_BUTTON_INFO,24003); // Add-on info if (item->GetExtraInfo().Equals("lastfmloved")) { buttons.Add(CONTEXT_BUTTON_LASTFM_UNLOVE_ITEM, 15295); //unlove } else if (item->GetExtraInfo().Equals("lastfmbanned")) { buttons.Add(CONTEXT_BUTTON_LASTFM_UNBAN_ITEM, 15296); //unban } else if (item->CanQueue() && !item->IsAddonsPath() && !item->IsScript()) { buttons.Add(CONTEXT_BUTTON_QUEUE_ITEM, 13347); //queue // allow a folder to be ad-hoc queued and played by the default player if (item->m_bIsFolder || (item->IsPlayList() && !g_advancedSettings.m_playlistAsFolders)) { buttons.Add(CONTEXT_BUTTON_PLAY_ITEM, 208); // Play } else { // check what players we have, if we have multiple display play with option VECPLAYERCORES vecCores; CPlayerCoreFactory::GetPlayers(*item, vecCores); if (vecCores.size() >= 1) buttons.Add(CONTEXT_BUTTON_PLAY_WITH, 15213); // Play With... } if (item->IsSmartPlayList()) { buttons.Add(CONTEXT_BUTTON_PLAY_PARTYMODE, 15216); // Play in Partymode } if (item->IsSmartPlayList() || m_vecItems->IsSmartPlayList()) buttons.Add(CONTEXT_BUTTON_EDIT_SMART_PLAYLIST, 586); else if (item->IsPlayList() || m_vecItems->IsPlayList()) buttons.Add(CONTEXT_BUTTON_EDIT, 586); } } } CGUIMediaWindow::GetContextButtons(itemNumber, buttons); }
bool CGUIDialogPVRChannelManager::OnContextButton(int itemNumber, CONTEXT_BUTTON button) { /* Check file item is in list range and get his pointer */ if (itemNumber < 0 || itemNumber >= (int)m_channelItems->Size()) return false; CFileItemPtr pItem = m_channelItems->Get(itemNumber); if (!pItem) return false; if (button == CONTEXT_BUTTON_MOVE) { m_bMovingMode = true; pItem->Select(true); } else if (button == CONTEXT_BUTTON_SETTINGS) { if (!g_PVRClients->OpenDialogChannelSettings(pItem->GetPVRChannelInfoTag())) CGUIDialogOK::ShowAndGetInput(2103, 0, 16029, 0); // Add-on error;Check the log file for details. } else if (button == CONTEXT_BUTTON_DELETE) { CGUIDialogYesNo* pDialog = (CGUIDialogYesNo*)g_windowManager.GetWindow(WINDOW_DIALOG_YES_NO); if (!pDialog) return true; pDialog->SetHeading(19211); // Delete channel pDialog->SetText(750); // Are you sure? pDialog->DoModal(); if (pDialog->IsConfirmed()) { CPVRChannelPtr channel = pItem->GetPVRChannelInfoTag(); if (g_PVRClients->DeleteChannel(channel)) { g_PVRChannelGroups->GetGroupAll(channel->IsRadio())->RemoveFromGroup(channel); m_channelItems->Remove(m_iSelected); m_viewControl.SetItems(*m_channelItems); Renumber(); } else CGUIDialogOK::ShowAndGetInput(2103, 0, 16029, 0); // Add-on error;Check the log file for details. } } else if (button == CONTEXT_BUTTON_EDIT_SOURCE) { std::string strURL = pItem->GetProperty("StreamURL").asString(); if (CGUIKeyboardFactory::ShowAndGetInput(strURL, g_localizeStrings.Get(19214), false)) pItem->SetProperty("StreamURL", strURL); } return true; }
bool CGUIWindowAddonBrowser::OnClick(int iItem, const std::string &player) { CFileItemPtr item = m_vecItems->Get(iItem); if (item->GetPath() == "addons://install/") { InstallFromZip(); return true; } if (item->GetPath() == "addons://update_all/") { UpdateAddons updater; CGUIDialogBusy::Wait(&updater, 100, true); return true; } if (!item->m_bIsFolder) { // cancel a downloading job if (item->HasProperty("Addon.Downloading")) { if (CGUIDialogYesNo::ShowAndGetInput(CVariant{24000}, item->GetProperty("Addon.Name"), CVariant{24066}, CVariant{""})) { if (CAddonInstaller::GetInstance().Cancel(item->GetProperty("Addon.ID").asString())) Refresh(); } return true; } CGUIDialogAddonInfo::ShowForItem(item); return true; } if (item->IsPath("addons://search/")) { Update(item->GetPath()); return true; } return CGUIMediaWindow::OnClick(iItem, player); }
void CGUIWindowAddonBrowser::UpdateStatus(const CFileItemPtr& item) { if (!item || item->m_bIsFolder) return; unsigned int percent; if (CAddonInstaller::GetInstance().GetProgress(item->GetProperty("Addon.ID").asString(), percent)) { std::string progress = StringUtils::Format(g_localizeStrings.Get(24042).c_str(), percent); item->SetProperty("Addon.Status", progress); item->SetProperty("Addon.Downloading", true); } else item->ClearProperty("Addon.Downloading"); }
void CPlayList::SetUnPlayable(int iItem) { if (iItem < 0 || iItem >= size()) { CLog::Log(LOGWARNING, "Attempt to set unplayable index %d", iItem); return; } CFileItemPtr item = m_vecItems[iItem]; if (!item->GetProperty("unplayable").asBoolean()) { item->SetProperty("unplayable", true); m_iPlayableItems--; } }
void CGUIWindowPictures::GetContextButtons(int itemNumber, CContextButtons &buttons) { CFileItemPtr item; if (itemNumber >= 0 && itemNumber < m_vecItems->Size()) item = m_vecItems->Get(itemNumber); if (item && !item->GetProperty("pluginreplacecontextitems").asBoolean()) { if ( m_vecItems->IsVirtualDirectoryRoot() || m_vecItems->GetPath() == "sources://pictures/" ) { CGUIDialogContextMenu::GetContextButtons("pictures", item, buttons); } else { if (item && !StringUtils::StartsWithNoCase(item->GetPath(), "addons://more/")) { if (!m_vecItems->IsPlugin() && (item->IsPlugin() || item->IsScript())) buttons.Add(CONTEXT_BUTTON_INFO, 24003); // Add-on info if (!(item->m_bIsFolder || item->IsZIP() || item->IsRAR() || item->IsCBZ() || item->IsCBR() || item->IsScript())) { buttons.Add(CONTEXT_BUTTON_INFO, 13406); // picture info buttons.Add(CONTEXT_BUTTON_VIEW_SLIDESHOW, item->m_bIsFolder ? 13317 : 13422); // View Slideshow } if (item->m_bIsFolder) buttons.Add(CONTEXT_BUTTON_RECURSIVE_SLIDESHOW, 13318); // Recursive Slideshow if (!m_thumbLoader.IsLoading()) buttons.Add(CONTEXT_BUTTON_REFRESH_THUMBS, 13315); // Create Thumbnails if (CSettings::GetInstance().GetBool(CSettings::SETTING_FILELISTS_ALLOWFILEDELETION) && !item->IsReadOnly()) { buttons.Add(CONTEXT_BUTTON_DELETE, 117); buttons.Add(CONTEXT_BUTTON_RENAME, 118); } } if (item->IsPlugin() || item->IsScript() || m_vecItems->IsPlugin()) buttons.Add(CONTEXT_BUTTON_PLUGIN_SETTINGS, 1045); else { buttons.Add(CONTEXT_BUTTON_GOTO_ROOT, 20128); buttons.Add(CONTEXT_BUTTON_SWITCH_MEDIA, 523); } } } CGUIMediaWindow::GetContextButtons(itemNumber, buttons); CContextMenuManager::GetInstance().AddVisibleItems(item, buttons); }