STDMETHODIMP CFHtmlEventDispatcher::ShowAddLabelDlg(BSTR bstrLabel, BSTR* bstrRetVal) { USES_CONVERSION; FString StrRes = g_MainFrame->m_Container->m_pStatus->ShowAddLabelDlg(OLE2T(bstrLabel)); *bstrRetVal = StrRes.AllocSysString(); return S_OK; }
STDMETHODIMP CFHtmlEventDispatcher::BrowseForFolder(VARIANT vtFolder, BSTR* vtOutFolder) { USES_CONVERSION; FString FStrOut; int nRes = IDCANCEL; nRes = g_pAppManager->Conf_BrowseForFolder(OLE2T(vtFolder.bstrVal), FStrOut); if (nRes == -1) { //return initial path if user canceled the folder dialog FStrOut = OLE2T(vtFolder.bstrVal); } *vtOutFolder = FStrOut.AllocSysString(); return S_OK; }
STDMETHODIMP CFHtmlEventDispatcher::ExecCmd(BSTR bstrCmd, VARIANT vtParam1, VARIANT vtParam2, BSTR* bstrResult) { USES_CONVERSION; FString StrCmd = OLE2T(bstrCmd); FString StrResult; if (StrCmd == "GotoRSS") { g_MainFrame->GoToRSS(VariantToUINT(vtParam1)); } else if (StrCmd == "SelectServer") g_pAppManager->SelectServer(); else if (StrCmd == "SetFeedAutoDownload") g_Objects._RSSManager->SetChannelAutoDownload(VariantToUINT(vtParam1), VariantToUINT(vtParam2) == 0 ? FALSE: TRUE); else if (StrCmd == "SetFeedAsRead") g_Objects._RSSManager->MarkAsViewed(VariantToUINT(vtParam1)); else if (StrCmd == "PauseResumeAll") { if (g_Objects._DownloadManager.IsAllPaused()) { g_Objects._DownloadManager.ResumeAll(); StrResult = "0"; } else { g_Objects._DownloadManager.PauseAll(); StrResult = "1"; } } else if (StrCmd == "IsAllPaused") { StrResult = g_Objects._DownloadManager.IsAllPaused() ? "1" : "0"; } else if (StrCmd == "GetSelectedChannelId") { StrResult.Format("%u", g_AppSettings.m_dwLastChannelId); } else if (StrCmd == "RSSRemoveChannelByURL" && vtParam1.vt == VT_BSTR) { g_Objects._RSSManager->RemoveChannel(OLE2T(vtParam1.bstrVal)); StrResult = "1"; } else if (StrCmd == "SaveSubSize") { ULONG FontSize = VariantToUINT(vtParam1); if (FontSize > 0) { _RegSetStr("SubFontSize", ULongToStr(FontSize), PLAYER_REG_KEY); } } else if (StrCmd == "RSSSaveChannelSettings") { //param1 = channelID, param2 = object if (vtParam2.vt == VT_DISPATCH) { FDispObject pObj; pObj.SetDispatch(vtParam2.pdispVal); CComVariant vtMaxDownloads; CComVariant vtChannelName; pObj.GetProperty("maxDownloads", &vtMaxDownloads); pObj.GetProperty("channelName", &vtChannelName); ChannelOptions options; options.m_dwMaxDownloadsPerFeed = vtMaxDownloads.uintVal; options.m_ChannelName = vtChannelName.bstrVal; options.m_Filter.m_Contains = pObj.GetPropertyStr("filterContains"); options.m_Filter.m_NotContains = pObj.GetPropertyStr("filterNotContains"); g_Objects._RSSManager->SetChannelOptions(VariantToUINT(vtParam1), options); } } else if (StrCmd == "ShowCommentsWnd") { g_MainFrame->ShowCommentsWnd(); } else if (StrCmd == "GetLastLabel") { StrResult = _RegStr("LastLabelStr"); //Saved by SetLastLabel } else if (StrCmd == "SetLastLabel") //Used by GetLastLabel / CollectionWindow { _RegSetStr("LastLabelStr", OLE2T(vtParam1.bstrVal)); g_MainFrame->m_Container->m_pStatus->OnLabelChanged(OLE2T(vtParam1.bstrVal)); } else if (StrCmd == "SetCollectionFlags") //Show Queued/In progress, etc { g_MainFrame->m_Container->m_pStatus->OnFlagsChanged(VariantToUINT(vtParam1)); } else if (StrCmd == "SetCollectionSearchString") { g_MainFrame->m_Container->m_pStatus->OnSearchStringChanged(OLE2T(vtParam1.bstrVal)); } else if (StrCmd == "GetSplitterPosition") { StrResult = _RegStr("FeedsSplitterPos", LTV_REG_KEY); //saved in FFeedsDisplay::OnDestroy() } else if (StrCmd == "GetRSSItemsPerPage") { StrResult = "25"; } else if (StrCmd == "RSSChannelDetails") { FRSSFeed* pChannel = g_Objects._RSSManager->LockChannel(VariantToUINT(vtParam1)); FString NavURL; if (pChannel && PathIsURL(pChannel->m_DetailURL)) { NavURL = pChannel->m_DetailURL; } g_Objects._RSSManager->ReleaseChannelsLock(); g_MainFrame->NavigateToDetails(NavURL); } else if (StrCmd == "RSSStreamItem") { g_Objects._RSSManager->DownloadItem(VariantToUINT(vtParam1), TRUE); } else if (StrCmd == "GetItemImageURL") { StrResult = g_Objects._ImageCache.GetImageURL(OLE2T(vtParam1.bstrVal)); } else if (StrCmd == "CycleCollectionView") { ULONG ulVal = VariantToUINT(vtParam1); if (ulVal < 3) { g_MainFrame->m_Container->m_pStatus->SetView(ulVal); } StrResult = LongToStr(_RegDword("LastCollectionView")); //saved by FCollection::SetView() } if (*bstrResult == NULL) *bstrResult = StrResult.AllocSysString(); return S_OK; }