123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400 |
- // Engine/Source/Runtime/WebBrowser/Private/SWebBrowser.cpp
- #include "SWebInterfaceBrowser.h"
- #include "Widgets/Text/STextBlock.h"
- #include "Widgets/Input/SEditableTextBox.h"
- #include "Widgets/Input/SButton.h"
- #include "Widgets/Images/SThrobber.h"
- #define LOCTEXT_NAMESPACE "WebInterfaceBrowser"
- SWebInterfaceBrowser::SWebInterfaceBrowser()
- {
- }
- SWebInterfaceBrowser::~SWebInterfaceBrowser()
- {
- }
- void SWebInterfaceBrowser::Construct(const FArguments& InArgs, const TSharedPtr<IWebInterfaceBrowserWindow>& BrowserWindow)
- {
- OnLoadCompleted = InArgs._OnLoadCompleted;
- OnLoadError = InArgs._OnLoadError;
- OnLoadStarted = InArgs._OnLoadStarted;
- OnTitleChanged = InArgs._OnTitleChanged;
- OnUrlChanged = InArgs._OnUrlChanged;
- OnBeforeNavigation = InArgs._OnBeforeNavigation;
- OnLoadUrl = InArgs._OnLoadUrl;
- OnShowDialog = InArgs._OnShowDialog;
- OnDismissAllDialogs = InArgs._OnDismissAllDialogs;
- OnBeforePopup = InArgs._OnBeforePopup;
- OnConsoleMessage = InArgs._OnConsoleMessage;
- OnCreateWindow = InArgs._OnCreateWindow;
- OnCloseWindow = InArgs._OnCloseWindow;
- bShowInitialThrobber = InArgs._ShowInitialThrobber;
-
- ChildSlot
- [
- SNew(SVerticalBox)
- +SVerticalBox::Slot()
- .AutoHeight()
- [
- SNew(SHorizontalBox)
- .Visibility((InArgs._ShowControls || InArgs._ShowAddressBar) ? EVisibility::Visible : EVisibility::Collapsed)
- + SHorizontalBox::Slot()
- .Padding(0, 5)
- .AutoWidth()
- [
- SNew(SHorizontalBox)
- .Visibility(InArgs._ShowControls ? EVisibility::Visible : EVisibility::Collapsed)
- +SHorizontalBox::Slot()
- .AutoWidth()
- [
- SNew(SButton)
- .Text(LOCTEXT("Back","Back"))
- .IsEnabled(this, &SWebInterfaceBrowser::CanGoBack)
- .OnClicked(this, &SWebInterfaceBrowser::OnBackClicked)
- ]
- +SHorizontalBox::Slot()
- .AutoWidth()
- [
- SNew(SButton)
- .Text(LOCTEXT("Forward", "Forward"))
- .IsEnabled(this, &SWebInterfaceBrowser::CanGoForward)
- .OnClicked(this, &SWebInterfaceBrowser::OnForwardClicked)
- ]
- +SHorizontalBox::Slot()
- .AutoWidth()
- [
- SNew(SButton)
- .Text(this, &SWebInterfaceBrowser::GetReloadButtonText)
- .OnClicked(this, &SWebInterfaceBrowser::OnReloadClicked)
- ]
- +SHorizontalBox::Slot()
- .FillWidth(1.0f)
- .VAlign(VAlign_Center)
- .HAlign(HAlign_Right)
- .Padding(5)
- [
- SNew(STextBlock)
- .Visibility(InArgs._ShowAddressBar ? EVisibility::Collapsed : EVisibility::Visible )
- .Text(this, &SWebInterfaceBrowser::GetTitleText)
- .Justification(ETextJustify::Right)
- ]
- ]
- +SHorizontalBox::Slot()
- .VAlign(VAlign_Center)
- .HAlign(HAlign_Fill)
- .Padding(5.f, 5.f)
- [
- // @todo: A proper addressbar widget should go here, for now we use a simple textbox.
- SAssignNew(InputText, SEditableTextBox)
- .Visibility(InArgs._ShowAddressBar ? EVisibility::Visible : EVisibility::Collapsed)
- .OnTextCommitted(this, &SWebInterfaceBrowser::OnUrlTextCommitted)
- .Text(this, &SWebInterfaceBrowser::GetAddressBarUrlText)
- .SelectAllTextWhenFocused(true)
- .ClearKeyboardFocusOnCommit(true)
- .RevertTextOnEscape(true)
- ]
- ]
- +SVerticalBox::Slot()
- [
- SNew(SOverlay)
- + SOverlay::Slot()
- [
- SAssignNew(BrowserView, SWebInterfaceBrowserView, BrowserWindow)
- .ParentWindow(InArgs._ParentWindow)
- .InitialURL(InArgs._InitialURL)
- .ContentsToLoad(InArgs._ContentsToLoad)
- .ShowErrorMessage(InArgs._ShowErrorMessage)
- .SupportsTransparency(InArgs._SupportsTransparency)
- .SupportsThumbMouseButtonNavigation(InArgs._SupportsThumbMouseButtonNavigation)
- .BackgroundColor(InArgs._BackgroundColor)
- .PopupMenuMethod(InArgs._PopupMenuMethod)
- .ViewportSize(InArgs._ViewportSize)
- .OnLoadCompleted(OnLoadCompleted)
- .OnLoadError(OnLoadError)
- .OnLoadStarted(OnLoadStarted)
- .OnTitleChanged(OnTitleChanged)
- .OnUrlChanged(OnUrlChanged)
- .OnBeforePopup(OnBeforePopup)
- .OnCreateWindow(OnCreateWindow)
- .OnCloseWindow(OnCloseWindow)
- .OnBeforeNavigation(OnBeforeNavigation)
- .OnLoadUrl(OnLoadUrl)
- .OnShowDialog(OnShowDialog)
- .OnDismissAllDialogs(OnDismissAllDialogs)
- .Visibility(this, &SWebInterfaceBrowser::GetViewportVisibility)
- .OnSuppressContextMenu(InArgs._OnSuppressContextMenu)
- .OnDragWindow(InArgs._OnDragWindow)
- .OnConsoleMessage(OnConsoleMessage)
- .BrowserFrameRate(InArgs._BrowserFrameRate)
- ]
- + SOverlay::Slot()
- .HAlign(HAlign_Center)
- .VAlign(VAlign_Center)
- [
- SNew(SCircularThrobber)
- .Radius(10.0f)
- .ToolTipText(LOCTEXT("LoadingThrobberToolTip", "Loading page..."))
- .Visibility(this, &SWebInterfaceBrowser::GetLoadingThrobberVisibility)
- ]
- ]
- ];
- }
- void SWebInterfaceBrowser::LoadURL(FString NewURL)
- {
- if (BrowserView.IsValid())
- {
- BrowserView->LoadURL(NewURL);
- }
- }
- void SWebInterfaceBrowser::LoadString(FString Contents, FString DummyURL)
- {
- if (BrowserView.IsValid())
- {
- BrowserView->LoadString(Contents, DummyURL);
- }
- }
- void SWebInterfaceBrowser::Reload()
- {
- if (BrowserView.IsValid())
- {
- BrowserView->Reload();
- }
- }
- void SWebInterfaceBrowser::StopLoad()
- {
- if (BrowserView.IsValid())
- {
- BrowserView->StopLoad();
- }
- }
- FText SWebInterfaceBrowser::GetTitleText() const
- {
- if (BrowserView.IsValid())
- {
- return BrowserView->GetTitleText();
- }
- return LOCTEXT("InvalidWindow", "Browser Window is not valid/supported");
- }
- FString SWebInterfaceBrowser::GetUrl() const
- {
- if (BrowserView.IsValid())
- {
- return BrowserView->GetUrl();
- }
- return FString();
- }
- FText SWebInterfaceBrowser::GetAddressBarUrlText() const
- {
- if(BrowserView.IsValid())
- {
- return BrowserView->GetAddressBarUrlText();
- }
- return FText::GetEmpty();
- }
- bool SWebInterfaceBrowser::IsLoaded() const
- {
- if (BrowserView.IsValid())
- {
- return BrowserView->IsLoaded();
- }
- return false;
- }
- bool SWebInterfaceBrowser::IsLoading() const
- {
- if (BrowserView.IsValid())
- {
- return BrowserView->IsLoading();
- }
- return false;
- }
- bool SWebInterfaceBrowser::CanGoBack() const
- {
- if (BrowserView.IsValid())
- {
- return BrowserView->CanGoBack();
- }
- return false;
- }
- void SWebInterfaceBrowser::GoBack()
- {
- if (BrowserView.IsValid())
- {
- BrowserView->GoBack();
- }
- }
- FReply SWebInterfaceBrowser::OnBackClicked()
- {
- GoBack();
- return FReply::Handled();
- }
- bool SWebInterfaceBrowser::CanGoForward() const
- {
- if (BrowserView.IsValid())
- {
- return BrowserView->CanGoForward();
- }
- return false;
- }
- void SWebInterfaceBrowser::GoForward()
- {
- if (BrowserView.IsValid())
- {
- BrowserView->GoForward();
- }
- }
- FReply SWebInterfaceBrowser::OnForwardClicked()
- {
- GoForward();
- return FReply::Handled();
- }
- FText SWebInterfaceBrowser::GetReloadButtonText() const
- {
- static FText ReloadText = LOCTEXT("Reload", "Reload");
- static FText StopText = LOCTEXT("StopText", "Stop");
- if (BrowserView.IsValid())
- {
- if (BrowserView->IsLoading())
- {
- return StopText;
- }
- }
- return ReloadText;
- }
- FReply SWebInterfaceBrowser::OnReloadClicked()
- {
- if (IsLoading())
- {
- StopLoad();
- }
- else
- {
- Reload();
- }
- return FReply::Handled();
- }
- void SWebInterfaceBrowser::OnUrlTextCommitted( const FText& NewText, ETextCommit::Type CommitType )
- {
- if(CommitType == ETextCommit::OnEnter)
- {
- LoadURL(NewText.ToString());
- }
- }
- EVisibility SWebInterfaceBrowser::GetViewportVisibility() const
- {
- if (!bShowInitialThrobber || BrowserView->IsInitialized())
- {
- return EVisibility::Visible;
- }
- return EVisibility::Hidden;
- }
- EVisibility SWebInterfaceBrowser::GetLoadingThrobberVisibility() const
- {
- if (bShowInitialThrobber && !BrowserView->IsInitialized())
- {
- return EVisibility::Visible;
- }
- return EVisibility::Hidden;
- }
- void SWebInterfaceBrowser::ExecuteJavascript(const FString& ScriptText)
- {
- if (BrowserView.IsValid())
- {
- BrowserView->ExecuteJavascript(ScriptText);
- }
- }
- void SWebInterfaceBrowser::GetSource(TFunction<void (const FString&)> Callback) const
- {
- if (BrowserView.IsValid())
- {
- BrowserView->GetSource(Callback);
- }
- }
- void SWebInterfaceBrowser::BindUObject(const FString& Name, UObject* Object, bool bIsPermanent)
- {
- if (BrowserView.IsValid())
- {
- BrowserView->BindUObject(Name, Object, bIsPermanent);
- }
- }
- void SWebInterfaceBrowser::UnbindUObject(const FString& Name, UObject* Object, bool bIsPermanent)
- {
- if (BrowserView.IsValid())
- {
- BrowserView->UnbindUObject(Name, Object, bIsPermanent);
- }
- }
- void SWebInterfaceBrowser::BindAdapter(const TSharedRef<IWebInterfaceBrowserAdapter>& Adapter)
- {
- if (BrowserView.IsValid())
- {
- BrowserView->BindAdapter(Adapter);
- }
- }
- void SWebInterfaceBrowser::UnbindAdapter(const TSharedRef<IWebInterfaceBrowserAdapter>& Adapter)
- {
- if (BrowserView.IsValid())
- {
- BrowserView->UnbindAdapter(Adapter);
- }
- }
- void SWebInterfaceBrowser::BindInputMethodSystem(ITextInputMethodSystem* TextInputMethodSystem)
- {
- if (BrowserView.IsValid())
- {
- BrowserView->BindInputMethodSystem(TextInputMethodSystem);
- }
- }
- void SWebInterfaceBrowser::UnbindInputMethodSystem()
- {
- if (BrowserView.IsValid())
- {
- BrowserView->UnbindInputMethodSystem();
- }
- }
- void SWebInterfaceBrowser::SetParentWindow(TSharedPtr<SWindow> Window)
- {
- if (BrowserView.IsValid())
- {
- BrowserView->SetParentWindow(Window);
- }
- }
- #undef LOCTEXT_NAMESPACE
|