nim_duilib/examples/multi_browser/browser/browser_box.h

126 lines
3.1 KiB
C
Raw Normal View History

2019-04-19 17:19:57 +08:00
/** @file browser_box.h
* @brief <EFBFBD><EFBFBD>ǩҳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @copyright (c) 2016, NetEase Inc. All rights reserved
* @author Redrain
* @date 2019/3/20
*/
#pragma once
class TaskbarTabItem;
class MultiBrowserForm;
class BrowserBox : public ui::VBox
{
public:
friend class MultiBrowserForm;
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] id <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD>Ψһ<EFBFBD><EFBFBD>ʶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֲ<EFBFBD>ͬ<EFBFBD>ı<EFBFBD>ǩҳ
*/
BrowserBox(std::string id);
~BrowserBox() { };
/**
* <EFBFBD><EFBFBD>ȡid
* @return string <EFBFBD><EFBFBD>ʶid
*/
std::string GetId() const { return browser_id_; }
/**
* <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
* @return MultiBrowserForm* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
MultiBrowserForm* GetBrowserForm() const;
/**
* <EFBFBD><EFBFBD>ȡCef<EFBFBD>ؼ<EFBFBD>ָ<EFBFBD><EFBFBD>
* @return ui::CefControlBase* Cef<EFBFBD>ؼ<EFBFBD>
*/
nim_comp::CefControlBase* GetCefControl();
2019-04-19 17:19:57 +08:00
/**
* <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>ҳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return std::wstring& <EFBFBD><EFBFBD>ҳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
std::wstring& GetTitle();
/**
* <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] url <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>URL
* @return void <EFBFBD>޷<EFBFBD><EFBFBD><EFBFBD>ֵ
*/
virtual void InitBrowserBox(const std::wstring &url);
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return void <EFBFBD>޷<EFBFBD><EFBFBD><EFBFBD>ֵ
*/
virtual void UninitBrowserBox();
/**
* <EFBFBD><EFBFBD><EFBFBD>ݿؼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؼ<EFBFBD>
* @param[in] pstrClass <EFBFBD>ؼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return Control* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀؼ<EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
*/
ui::Control* CreateControl(const std::wstring& pstrClass);
//////////////////////////////////////////////////////////////////////////
//<2F><><EFBFBD>ںϲ<DABA><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>صIJ<D8B5><C4B2><EFBFBD>
public:
/**
* <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӱ󶨵<EFBFBD>Tabָ<EFBFBD><EFBFBD>
* @return TaskbarItem* Tabָ<EFBFBD><EFBFBD>
*/
TaskbarTabItem* GetTaskbarItem();
/**
* <EFBFBD><EFBFBD><EFBFBD>Ǹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؼ<EFBFBD><EFBFBD><EFBFBD>Ϣ
* @param[in] pManager <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
* @param[in] pParent <EFBFBD><EFBFBD><EFBFBD>ؼ<EFBFBD>ָ<EFBFBD><EFBFBD>
* @param[in] bInit <EFBFBD>Ƿ<EFBFBD>Ҫ<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؼ<EFBFBD>
* @return void <EFBFBD>޷<EFBFBD><EFBFBD><EFBFBD>ֵ
*/
virtual void SetWindow(ui::Window* pManager, ui::Box* pParent, bool bInit) override;
/**
* <EFBFBD><EFBFBD><EFBFBD>ǻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD>Ԥ<EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿؼ<EFBFBD>SetInternVisible<EFBFBD><EFBFBD><EFBFBD>Ե<EFBFBD><EFBFBD>߼<EFBFBD>
* @param[in] bVisible <EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD>ʾ
* @return void <EFBFBD>޷<EFBFBD><EFBFBD><EFBFBD>ֵ
*/
virtual void SetInternVisible(bool bVisible = true) override;
/**
* <EFBFBD><EFBFBD><EFBFBD>ǻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ػ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ
* @return void <EFBFBD>޷<EFBFBD><EFBFBD><EFBFBD>ֵ
*/
virtual void Invalidate() override;
/**
* <EFBFBD><EFBFBD><EFBFBD>ǻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ػ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ
* @param[in] rc Ҫ<EFBFBD><EFBFBD><EFBFBD>õĿؼ<EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>
* @return void <EFBFBD>޷<EFBFBD><EFBFBD><EFBFBD>ֵ
*/
virtual void SetPos(ui::UiRect rc) override;
private:
void OnBeforeMenu(CefRefPtr<CefContextMenuParams> params, CefRefPtr<CefMenuModel> model);
bool OnMenuCommand(CefRefPtr<CefContextMenuParams> params, int command_id, CefContextMenuHandler::EventFlags event_flags);
void OnTitleChange(const std::wstring& title);
void OnUrlChange(const std::wstring& url);
bool OnLinkClick(const std::wstring& url);
CefRequestHandler::ReturnValue OnBeforeNavigate(CefRefPtr<CefRequest> request, bool is_redirect);
void OnLoadingStateChange(bool isLoading, bool canGoBack, bool canGoForward);
void OnLoadStart();
void OnLoadEnd(int httpStatusCode);
void OnLoadError(CefLoadHandler::ErrorCode errorCode, const CefString& errorText, const CefString& failedUrl);
private:
nim_comp::CefControlBase *cef_control_;
2019-04-19 17:19:57 +08:00
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>
TaskbarTabItem *taskbar_item_;
MultiBrowserForm *browser_form_;
std::string browser_id_;
std::wstring url_;
std::wstring title_;
};