void Core::Handle (Entity e) { if (e.Mime_ == "x-leechcraft/browser-import-data") { std::auto_ptr<ImportEntityHandler> eh (new ImportEntityHandler (this)); eh->Import (e); } else if (e.Entity_.canConvert<QUrl> ()) { QUrl url = e.Entity_.toUrl (); NewURL (url, true); } }
CustomWebView* Core::MakeWebView (bool invert) { if (!Initialized_) return 0; bool raise = true; if (XmlSettingsManager::Instance ()->property ("BackgroundNewTabs").toBool ()) raise = false; if (invert) raise = !raise; return NewURL (QUrl (), raise)->GetView (); }
void Core::handleUnclose () { QAction *action = qobject_cast<QAction*> (sender ()); UncloseData ud = action->data ().value<UncloseData> (); BrowserWidget *bw = NewURL (ud.URL_); QDataStream str (ud.History_); str >> *bw->GetView ()->page ()->history (); bw->SetOnLoadScrollPoint (ud.SPoint_); Unclosers_.removeAll (action); action->deleteLater (); }
void Core::restorePages () { for (QList<int>::const_iterator i = RestoredURLs_.begin (), end = RestoredURLs_.end (); i != end; ++i) { int idx = *i; NewURL (SavedSessionState_.at (idx).second)-> SetWidgetSettings (SavedSessionSettings_.at (idx)); } SavedSessionState_.clear (); SavedSessionSettings_.clear (); saveSession (); }
BrowserWidget* Core::NewURL (const QString& str, bool raise) { return NewURL (MakeURL (str), raise); }
int CHttpRequest::GetHTTP10(CUrl& iUrl, const CString& iE, inetSocket& Sock){ /* attempt a retrieval of HTTP/1.0 */ CString Request; if (ProxyURL.StrLength() && Proxy.isValid()) { if (RLimit) Request += "GET "; else Request+="HEAD "; Request += iUrl.GetScheme(); Request+="://"; Request += iUrl.GetHost(); if (iUrl.GetPortValue() != 80) { Request+=":"; Request += iUrl.GetPort(); } Request += iUrl.GetUrlPath(); Request += " HTTP/1.0"; Request+=iE; } else { if (RLimit) Request += "GET "; else Request+="HEAD "; Request += iUrl.GetUrlPath(); Request += " HTTP/1.0"; Request+=iE; Request += "Host: "; Request += iUrl.GetHost(); Request+=iE; } for (int i=0;i<RHeaderParams.entries_count();i++) { Request+=RHeaderParams.get_name(i); Request+=": "; Request+=RHeaderParams.get_value(i); Request += iE; } Request += iE; #ifdef _U_DEBUG cout << "# HTTP Request: =====" << endl; cout << Request; cout << "=====================" << endl; #endif /* issue request */ CString RLoc; if (!Send(Sock, Request)) return 0; ProcessHeader(Sock); ProcessData(Sock); switch(RStatusValue) { case 200: return 1; case 301: case 302: case 303: case 307: if (!FollowRedirections) return RStatusValue; RLoc = RHeaderResponse.get_value("Location"); if (RLoc.StrLength()) { /* HTTP 1.1 - Temporary Redirect is 302 and 307 RedirectVector is relevant for final URL address that could be retrieved */ if (!RedirectVector.Contains(RLoc)) { RedirectVector+=RLoc; CUrl NewURL(RLoc); if (!Proxy.isValid()) { inetSocket Sock2(NewURL.GetPortValue(), NewURL.GetHost()); return GetHTTP10(NewURL, iE, Sock2); } else { Sock.Reopen(); return GetHTTP10(NewURL, iE, Sock); } } } return RStatusValue; case 305: /* use proxy */ RLoc = RHeaderResponse.get_value("Location"); if (RLoc.StrLength()) { CUrl ProxyURL(RLoc); if (ProxyURL.isValid()) { inetSocket ProxySock(ProxyURL.GetPortValue(), ProxyURL.GetHost()); if (wsLastError.StrLength()) return RStatusValue; return GetHTTP10(iUrl, iE, ProxySock); } } return RStatusValue; default: return RStatusValue; } }