void InternalLink::uploadMCF(DesuraId id) { gcRefPtr<UserCore::Item::ItemInfoI> item = GetUserCore()->getItemManager()->findItemInfo( id ); if (!item && !GetUserCore()->isAdmin()) { //cant upload show prompt gcMessageBox(g_pMainApp->getMainWindow(), Managers::GetString(L"#MF_NONDEV_ERROR"), Managers::GetString(L"#MF_PERMISSION_ERRTITLE")); return; } //create new create from UploadMCFForm* form = new UploadMCFForm(m_pParent); form->setInfo(id); form->Show(true); form->Raise(); form->run(); m_vSubForms.push_back(form); }
DesuraControl::~DesuraControl() { auto userCore = GetUserCore(); if (userCore) { userCore->getNewAvatarEvent() -= guiDelegate(this, &DesuraControl::onNewAvatar); userCore->getAppUpdateProgEvent() -= guiDelegate(this, &DesuraControl::onDesuraUpdate); } }
std::vector<MapElementI*> DesuraJSSettings::getAllCIPItems() { std::vector<UserCore::Misc::CIPItem> list; if (GetUserCore()) GetUserCore()->getCIPManager()->getItemList(list); std::vector<MapElementI*> ret; for (size_t x=0; x<list.size(); x++) { std::map<gcString, gcString> map; map["name"] = list[x].name; map["id"] = list[x].id.toString(); ret.push_back(new MapElement<std::map<gcString, gcString>>(map)); } return ret; }
gcRefPtr<UserCore::ItemManagerI> DesuraJSBinding::getItemManager() { if (!gs_pItemManager) { auto uc = GetUserCore(); if (uc) gs_pItemManager = uc->getItemManager(); } return gs_pItemManager; }
void ComplexPrompt::setInfo(DesuraId id) { UserCore::Item::ItemInfoI *item = GetUserCore()->getItemManager()->findItemInfo(id); if (!item) { EndModal(wxID_CANCEL); return; } m_labInfo->SetLabel(gcWString(Managers::GetString(L"#IF_CONFLICT"), item->getName())); m_labInfo->Wrap( 350 ); }
void DesuraControl::onButtonClicked( wxCommandEvent& event ) { if (m_bOffline) return; auto userCore = GetUserCore(); if (event.GetId() == m_pAvatar->GetId()) { if (userCore) g_pMainApp->loadUrl(GetUserCore()->getProfileEditUrl(), COMMUNITY); } else if (event.GetId() == m_pUsernameBox->GetId()) { if (userCore) g_pMainApp->loadUrl(GetUserCore()->getProfileUrl(), COMMUNITY); } else { setActivePage_ID(event.GetId()); } }
void CDKProgress::run() { if (!m_ProgressProxy) m_ProgressProxy = gcRefPtr<CDKProgressProxy>::create(this); auto userCore = GetUserCore(); if (!userCore) return; userCore->getCDKeyManager()->getCDKeyForCurrentBranch(getItemId(), m_ProgressProxy); m_bOutstandingRequest = true; }
void InternalLink::resumeUploadMCF(DesuraId id, LinkArgs args) { std::string key = args.getArgValue("key"); std::string uid = args.getArgValue("uid"); auto pForm = findForm<UploadMCFForm>([key, uid](UploadMCFForm* pForm){ return (!key.empty() && pForm->getKey() == key) || (!uid.empty() && pForm->getUid() == uid); }, m_vSubForms); if (pForm) { pForm->Raise(); return; } gcRefPtr<UserCore::Item::ItemInfoI> item = GetUserCore()->getItemManager()->findItemInfo( id ); if (!item && !GetUserCore()->isAdmin()) { //cant upload show prompt gcMessageBox(g_pMainApp->getMainWindow(), Managers::GetString(L"#MF_NONDEV_ERROR"), Managers::GetString(L"#MF_PERMISSION_ERRTITLE")); return; } //create new create from UploadMCFForm* form = new UploadMCFForm(m_pParent); if (!key.empty()) form->setInfo_key(id, key.c_str()); else if (!uid.empty()) form->setInfo_uid(id, uid.c_str()); else form->setInfo(id); form->Show(true); form->Raise(); form->run(); m_vSubForms.push_back(form); }
ItemToolBarControl::~ItemToolBarControl() { auto userCore = GetUserCore(); if (userCore) { userCore->getItemsAddedEvent() -= guiDelegate(this, &ItemToolBarControl::onItemsAdded); userCore->getLoginItemsLoadedEvent() -= guiDelegate(this, &ItemToolBarControl::onLoginItemsLoaded); } if (GetUploadMng()) GetUploadMng()->getUpdateEvent() -= guiDelegate(this, &ItemToolBarControl::onUploadItemsAdded); }
void InternalLink::onUploadTrigger(ut& info) { gcTrace("Id: {0}", info.id); FINDFORM(info.id, UploadMCFForm); gcRefPtr<UserCore::Item::ItemInfoI> item = GetUserCore()->getItemManager()->findItemInfo( info.id ); if (!item && !GetUserCore()->isAdmin()) { //cant upload show prompt gcMessageBox(g_pMainApp->getMainWindow(), Managers::GetString(L"#MF_NONDEV_ERROR"), Managers::GetString(L"#MF_PERMISSION_ERRTITLE")); return; } if (item && !HasAllFlags(item->getStatus(), UserCore::Item::ItemInfoI::STATUS_DEVELOPER) && !GetUserCore()->isAdmin()) { //cant upload show prompt gcMessageBox(g_pMainApp->getMainWindow(), Managers::GetString(L"#MF_UPERMISSION_ERROR"), Managers::GetString(L"#MF_PERMISSION_ERRTITLE")); return; } //create new create from UploadMCFForm* form = new UploadMCFForm(m_pParent); form->setInfo_path(info.id, info.path.c_str()); if (info.caller) { wxPoint pos = info.caller->GetScreenPosition(); form->SetPosition(pos); } form->Show(true); form->Raise(); form->run(); m_vSubForms.push_back(form); }
void InternalLink::showPreorderPrompt(DesuraId id, bool isPreload) { UserCore::Item::ItemInfoI* item = GetUserCore()->getItemManager()->findItemInfo( id ); if (!item) return; UserCore::Item::BranchInfoI* bi = item->getCurrentBranch(); if (!bi) { for (size_t x=0; x<item->getBranchCount(); x++) { UserCore::Item::BranchInfoI *temp = item->getBranch(x); if (temp->isPreOrder()) { bi = temp; break; } } } if (!bi) return; const char* str = bi->getPreOrderExpDate(); uint32 days; uint32 hours; std::string time_available = UTIL::MISC::dateTimeToDisplay(str); UTIL::MISC::getTimeDiffFromNow(str, days, hours); gcString title(Managers::GetString("#IF_PRELOADLAUNCH_TITLE"), item->getName()); gcString msg(Managers::GetString("#IF_PRELOADLAUNCH"), item->getName(), days, Managers::GetString(isPreload?"#IF_PRELOADLAUNCH_PRELOADED":"#IF_PRELOADLAUNCH_PREORDERED"), time_available, Managers::GetString(days == 1 ? "#IF_PRELOADLAUNCH_WORD_DAY":"#IF_PRELOADLAUNCH_WORD_DAYS")); PreloadButtonHelper pobh(id); if (pobh.m_bOtherBranches) msg += gcString(Managers::GetString("#IF_PRELOADLAUNCH_INSTALLOTHER_INFO"), item->getName()); gcMessageBox(g_pMainApp->getMainWindow(), msg, title, wxICON_EXCLAMATION|wxCLOSE, &pobh); }
void InternalLink::showUpdateLog(DesuraId id) { UserCore::Item::ItemInfoI* item = GetUserCore()->getItemManager()->findItemInfo( id ); if (!item) { //cant upload show prompt gcMessageBox(g_pMainApp->getMainWindow(), Managers::GetString(L"#MF_UPDATELOG_ITEMERROR"), Managers::GetString(L"#MF_ERRTITLE") ); return; } ChangeLogForm* form = new ChangeLogForm(m_pParent); regForm(id, form); form->setInfo(item); form->Show(true); form->Raise(); }
void CDKeyForm::setInfo(DesuraId id) { m_ItemId = id; UserCore::Item::ItemInfoI *item = GetUserCore()->getItemManager()->findItemInfo(id); if (!item) { Close(); return; } this->SetTitle(gcString("{0}: CD Key", item->getName())); m_pPage->setInfo(m_ItemId); m_pPage->run(); }
void UninstallForm::setInfo(DesuraId id) { m_uiInternId = id; UserCore::Item::ItemInfoI *item = GetUserCore()->getItemManager()->findItemInfo(id); if (!item) { Warning("Item was null for uninstall!"); Close(); } gcWString name(item->getName()); gcWString title(255, L"{0} {0}", GETSTRING(L"#UNF_TITLE"), name.c_str()); this->SetTitle(title.c_str()); showInfo(); }
void InternalLink::showExeSelect(DesuraId id, bool hasSeenCDKey) { FINDFORM(id, ExeSelectForm); UserCore::Item::ItemInfoI* item = GetUserCore()->getItemManager()->findItemInfo(id); if (!item) { Warning(gcString("Cant find item for show exe select [{0}].\n", id.toInt64())); return; } ExeSelectForm* form = new ExeSelectForm(m_pParent, hasSeenCDKey); m_vSubForms.push_back(form); form->setInfo(id); form->Show(true); }
void InternalLink::showGameDisk(DesuraId id, const char* exe, bool cdkey) { FINDFORM(id, GameDiskForm); UserCore::Item::ItemInfoI* item = GetUserCore()->getItemManager()->findItemInfo( id ); if (!item) { Warning(gcString("Cant find item for show game disk [{0}].\n", id.toInt64())); return; } GameDiskForm* form = new GameDiskForm(m_pParent, exe, cdkey); m_vSubForms.push_back(form); form->setInfo(id); form->Show(true); }
void InternalLink::showEULA(DesuraId id) { gcRefPtr<UserCore::Item::ItemInfoI> item = GetUserCore()->getItemManager()->findItemInfo( id ); if (!item) { //cant upload show prompt gcMessageBox(g_pMainApp->getMainWindow(), Managers::GetString(L"#MF_NAMERESOLVE"), Managers::GetString(L"#MF_ERRTITLE") ); return; } EULAForm* form = new EULAForm(m_pParent); regForm(id, form); if (form->setInfo(id)) { form->Show(true); form->Raise(); } }
bool InternalLink::checkForPreorder(DesuraId id) { UserCore::Item::ItemInfoI* item = GetUserCore()->getItemManager()->findItemInfo( id ); if (!item) return false; if (item->getCurrentBranch()) return item->getCurrentBranch()->isPreOrderAndNotPreload(); for (size_t x=0; x<item->getBranchCount(); x++) { if (item->getBranch(x)->isPreOrderAndNotPreload()) return true; } return false; }
void CreateProgPage::run() { if (!getItemInfo() && !GetUserCore()->isAdmin()) return; Show(true); Raise(); if (m_pThread) return; m_pThread = GetThreadManager()->newCreateMCFThread(getItemId(), m_szFolderPath.c_str()); *m_pThread->getMcfProgressEvent() += guiDelegate(this, &CreateProgPage::onProgress); *m_pThread->getErrorEvent() += guiDelegate(this, &CreateProgPage::onError); *m_pThread->getCompleteStringEvent() += guiDelegate(this, &CreateProgPage::onComplete); m_pThread->start(); }
void InternalLink::showUpdateForm(DesuraId id, Args args) { UserCore::Item::ItemInfoI* item = GetUserCore()->getItemManager()->findItemInfo( id ); if (!item) return; if (!HasAllFlags(item->getStatus(), UserCore::Item::ItemInfoI::STATUS_UPDATEAVAL)) return; std::string reminder = args.getArgValue("reminder"); //create new gather info form from UpdateInfoForm* form = new UpdateInfoForm(m_pParent); regForm(id, form); form->setInfo(id, reminder == "true"); form->Show(true); }
UI::Forms::ItemForm* InternalLink::showItemForm(DesuraId id, UI::Forms::INSTALL_ACTION action, MCFBranch branch, MCFBuild build, bool showForm) { UserCore::Item::ItemInfoI* item = GetUserCore()->getItemManager()->findItemInfo( id ); if (!item && action != UI::Forms::INSTALL_ACTION::IA_INSTALL && action != UI::Forms::INSTALL_ACTION::IA_INSTALL_TESTMCF) return nullptr; UI::Forms::ItemForm *form = findForm<UI::Forms::ItemForm>(id, m_vSubForms); if (!form) { form = new UI::Forms::ItemForm(m_pParent); form->setItemId(id); regForm(id, form); } form->newAction(action, branch, build, showForm); return form; }
void InstallPrompt::setInfo(DesuraId id, const char* path) { UserCore::Item::ItemInfoI *item = GetUserCore()->getItemManager()->findItemInfo(id); if (!item || !path) { Close(); return; } m_szPath = gcWString(path); gcWString title(L"{0} {1}", Managers::GetString(L"#IF_INSTALL"), item->getName()); gcWString quest(Managers::GetString(L"#IF_EXISTINGFILES"), item->getName()); SetTitle(title); m_labQuestion->SetLabel(quest); }
void UploadInfoPage::resetAllValues() { m_butUpload->Enable(false); gcString filePath; gcString cachePath; auto userCore = GetUserCore(); if (userCore) cachePath = userCore->getMcfCachePath(); if (!m_pItemInfo) filePath = gcString("{0}{1}temp{1}", cachePath, DIRS_STR); else filePath = gcString("{0}{2}{1}", cachePath, m_pItemInfo->getId().getFolderPathExtension().c_str(), DIRS_STR); gcWString wfilePath(filePath); m_tbItemFile->SetValue(wfilePath.c_str()); }
void MainApp::offlineMode() { if (m_iMode == APP_MODE::MODE_OFFLINE) return; if (m_bLoggedIn) logOut(false); closeMainForm(); { std::lock_guard<std::mutex> a(m_UserLock); gcString path = UTIL::OS::getAppDataPath(); if (g_pUserHandle) g_pUserHandle->destroy(); g_pUserHandle = (UserCore::UserI*)UserCore::FactoryBuilderUC(USERCORE); g_pUserHandle->init(path.c_str()); try { g_pUserHandle->getNeedCvarEvent() += delegate(this, &MainApp::onNeedCvar); g_pUserHandle->getItemManager()->loadItems(); } catch (gcException &) { g_pUserHandle->getNeedCvarEvent() -= delegate(this, &MainApp::onNeedCvar); g_pUserHandle->logOut(); g_pUserHandle->destroy(); throw; } } GetCVarManager()->loadUser(GetUserCore()->getUserId()); m_iMode = APP_MODE::MODE_OFFLINE; showMainWindow(); m_pInternalLink = new InternalLink(this); }
void TBIUpdateMenu::calcUpdates() { UserCore::UserI* user = GetUserCore(); if (!user) { messageCount = 0; updateCount = 0; cartCount = 0; } else { messageCount = user->getPmCount(); updateCount = user->getUpCount(); cartCount = user->getCartCount(); } gameUpdateCount = 0; modUpdateCount = 0; std::vector<UserCore::Item::ItemInfoI*> gList; user->getItemManager()->getGameList(gList); for (size_t x=0; x<gList.size(); x++) { if (HasAnyFlags(gList[x]->getStatus(), UserCore::Item::ItemInfoI::STATUS_UPDATEAVAL)) gameUpdateCount++; std::vector<UserCore::Item::ItemInfoI*> mList; user->getItemManager()->getModList(gList[x]->getId(), mList); for (size_t y=0; y<mList.size(); y++) { if (HasAnyFlags(mList[y]->getStatus(), UserCore::Item::ItemInfoI::STATUS_UPDATEAVAL)) gameUpdateCount++; } } uint32 numUpdates = messageCount + updateCount + gameUpdateCount + modUpdateCount; m_szMenuName = gcWString(L"{0} ({1})", Managers::GetString(L"#TB_STATUS"), numUpdates); }
bool CDKInfo::checkForArma(DesuraId id, const char* key) { if (id.getType() != DesuraId::TYPE_GAME) return false; size_t x=0; while (g_CDKeySpecial[x].item) { if (g_CDKeySpecial[x].item == id.getItem()) { unsigned char binkey[255] = {0}; DecodeMsgAMAR2CDKey(binkey, key); GetUserCore()->updateBinaryRegKey(g_CDKeySpecial[x].reg, (char*)binkey, 15); break; } x++; }; if (g_CDKeySpecial[x].item == 14558 || g_CDKeySpecial[x].item == 0) //take on heli needs the cd key to be entered as well return false; if (m_bLaunch) { wxCommandEvent e(wxEVT_NULL, m_butLaunch->GetId()); onButtonClicked(e); GetParent()->Close(); } else { m_tbCdKey->SetLabel(Managers::GetString(L"#CDK_REGKEY")); m_tbCdKey->SetToolTip(Managers::GetString(L"#CDK_REGKEY_TOOLTIP")); m_imgCopyPart->Disable(); m_imgCopyAll->Disable(); } return true; }
void InternalLink::showPrompt(DesuraId id, LinkArgs args) { std::string prompt = args.getArgValue("prompt"); gcRefPtr<UserCore::Item::ItemInfoI> item = GetUserCore()->getItemManager()->findItemInfo( id ); if (prompt == "update") { args.push_back("reminder=true"); showUpdateForm(id, args); } else if (prompt == "launch") { LaunchItemDialog* form = new LaunchItemDialog(m_pParent); regForm(id, form); form->setInfo(item); form->Show(true); form->Raise(); } else if (prompt == "eula") { showEULA(id); } else if (prompt == "preload") { showPreorderPrompt(id, true); } else if (prompt == "needtorunfirst") { std::string parentId = args.getArgValue("parentid"); DesuraId pid(parentId.c_str(), "games"); showNeedToRun(id, pid); } else { gcAssert(false); } }
HtmlTabPage::HtmlTabPage(wxWindow* parent, gcString homePage, PAGE area) : BaseTabPage(parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL|wxNO_BORDER ) , m_szHomePage(homePage) , m_pBSBrowserSizer(new wxBoxSizer(wxVERTICAL)) , m_SearchArea(area) { SetBackgroundColour(wxColour( 0, 0, 0 )); m_pControlBar = std::shared_ptr<HtmlToolBarControl>(new HtmlToolBarControl(parent), [this](HtmlToolBarControl *pControl){ pControl->onSearchEvent -= guiDelegate(this, &HtmlTabPage::onSearch); pControl->onFullSearchEvent -= guiDelegate(this, &HtmlTabPage::onFullSearch); pControl->onButtonClickedEvent -= guiDelegate(this, &HtmlTabPage::onButtonClicked); if (m_pControlBar) { m_pWebControl->onPageStartEvent -= delegate(&pControl->onPageStartLoadingEvent); m_pWebControl->onPageLoadEvent -= delegate(&pControl->onPageEndLoadingEvent); } pControl->Destroy(); }); m_pControlBar->onSearchEvent += guiDelegate(this, &HtmlTabPage::onSearch); m_pControlBar->onFullSearchEvent += guiDelegate(this, &HtmlTabPage::onFullSearch); m_pControlBar->onButtonClickedEvent += guiDelegate(this, &HtmlTabPage::onButtonClicked); this->SetSizer( m_pBSBrowserSizer ); this->Layout(); auto userCore = GetUserCore(); if (userCore) { auto cip = userCore->getCIPManager(); if (cip) cip->getItemsUpdatedEvent() += guiDelegate(this, &HtmlTabPage::onCIPUpdate); } }
void InternalLink::showCDKey(DesuraId id, Args args) { FINDFORM(id, CDKeyForm); UserCore::Item::ItemInfoI* item = GetUserCore()->getItemManager()->findItemInfo( id ); if (!item) { Warning(gcString("Cant find item for show cd key [{0}].\n", id.toInt64())); return; } std::string launch = args.getArgValue("launch"); std::string exe = args.getArgValue("exe"); CDKeyForm* form = new CDKeyForm(m_pParent, exe.c_str(), launch == "true"); m_vSubForms.push_back(form); form->setInfo(id); form->Show(true); }
CDKeyForm::CDKeyForm(wxWindow* parent, const char* exe, bool launch, UserCore::ItemManagerI* pItemManager) : gcFrame(parent, wxID_ANY, Managers::GetString("#CDK_TITLE"), wxDefaultPosition, wxSize(370,140), wxCAPTION|wxCLOSE_BOX|wxSYSTEM_MENU|wxTAB_TRAVERSAL) , m_pItemManager(pItemManager) { if (!m_pItemManager) m_pItemManager = GetUserCore()->getItemManager(); m_bLaunch = launch; m_szExe = exe; m_pPage = new CDKProgress(this, m_bLaunch); m_bsSizer = new wxBoxSizer( wxVERTICAL ); m_bsSizer->Add(m_pPage, 1, wxEXPAND, 0); this->SetSizer( m_bsSizer ); this->Layout(); this->Centre( wxBOTH ); Bind(wxEVT_CLOSE_WINDOW, &CDKeyForm::onFormClose, this); centerOnParent(); }