[Offscreengecko-commits] SF.net SVN: offscreengecko:[86] trunk
Status: Pre-Alpha
Brought to you by:
res2002
|
From: <re...@us...> - 2008-11-02 01:56:17
|
Revision: 86
http://offscreengecko.svn.sourceforge.net/offscreengecko/?rev=86&view=rev
Author: res2002
Date: 2008-11-02 01:56:08 +0000 (Sun, 02 Nov 2008)
Log Message:
-----------
Add progress querying
Modified Paths:
--------------
trunk/include/OffscreenGecko/browser.h
trunk/src/libosgk/browser.cpp
trunk/src/libosgk/browser.h
Modified: trunk/include/OffscreenGecko/browser.h
===================================================================
--- trunk/include/OffscreenGecko/browser.h 2008-11-02 01:53:12 UTC (rev 85)
+++ trunk/include/OffscreenGecko/browser.h 2008-11-02 01:56:08 UTC (rev 86)
@@ -343,6 +343,40 @@
unsigned int key, void** data);
/** @} */
+/**\name Progress queries
+ * @{ */
+
+/// URI loading state
+typedef enum OSGK_LoadState
+{
+ /// Loading is in progress
+ loadLoading,
+ /// Loading is completed
+ loadFinished
+} OSGK_LoadState;
+
+/**
+ * Poll the loading state.
+ * \param browser The browser object.
+ * \return The loading state (loading or completed).
+ */
+OSGK_EXTERN_C OSGK_API OSGK_LoadState osgk_browser_query_load_state (
+ OSGK_Browser* browser);
+
+/**
+ * Poll the loading progress.
+ * \param browser The browser object.
+ * \return A float value between 0 and 1 where 0 means loading did not
+ * progress and 1 means loading is completed.
+ * \remarks This function is intended for feedback display. To programmatically
+ * check whether a URI was loaded completely use
+ * osgk_brower_query_load_state().
+ */
+OSGK_EXTERN_C OSGK_API float osgk_browser_query_load_progress (
+ OSGK_Browser* browser);
+
+/** @} */
+
#ifdef __cplusplus
namespace OSGK
{
@@ -556,7 +590,33 @@
return osgk_browser_get_user_data (GetObject(), key, &data) != 0;
}
/** @} */
- };
+
+ /**\name Progress queries
+ * @{ */
+
+ /**
+ * Poll the loading state.
+ * \return The loading state (loading or completed).
+ */
+ OSGK_LoadState QueryLoadState ()
+ {
+ return osgk_browser_query_load_state (GetObject());
+ }
+
+ /**
+ * Poll the loading progress.
+ * \return A float value between 0 and 1 where 0 means loading did not
+ * progress and 1 means loading is completed.
+ * \remarks This function is intended for feedback display. To programmatically
+ * check whether a URI was loaded completely use QueryLoadState().
+ */
+ float QueryLoadProgress ()
+ {
+ return osgk_browser_query_load_progress (GetObject());
+ }
+
+ /** @} */
+ };
} // namespace OSGK
#endif
Modified: trunk/src/libosgk/browser.cpp
===================================================================
--- trunk/src/libosgk/browser.cpp 2008-11-02 01:53:12 UTC (rev 85)
+++ trunk/src/libosgk/browser.cpp 2008-11-02 01:56:08 UTC (rev 86)
@@ -192,7 +192,17 @@
return static_cast<OSGK::Impl::Browser*> (browser)->GetUserData (key, *data);
}
+OSGK_LoadState osgk_browser_query_load_state (OSGK_Browser* browser)
+{
+ return static_cast<OSGK::Impl::Browser*> (browser)->QueryLoadState ();
+}
+float osgk_browser_query_load_progress (OSGK_Browser* browser)
+{
+ return static_cast<OSGK::Impl::Browser*> (browser)->QueryLoadProgress ();
+}
+
+
namespace OSGK
{
namespace Impl
@@ -205,6 +215,9 @@
{
nsIWebBrowser* webBrowser;
PRUint32 chromeFlags;
+
+ OSGK_LoadState loadState;
+ float loadProgress;
public:
Container ();
virtual ~Container ();
@@ -215,6 +228,8 @@
NS_DECL_NSIEMBEDDINGSITEWINDOW
NS_DECL_NSIINTERFACEREQUESTOR
+ OSGK_LoadState QueryLoadState () { return loadState; }
+ float QueryLoadProgress () { return loadProgress; }
};
Browser::Browser (OSGK_GeckoResult& result, Embedding* embedding,
@@ -517,6 +532,20 @@
return true;
}
+ OSGK_LoadState Browser::QueryLoadState ()
+ {
+ if (!container) return loadFinished;
+ ProcessToolkitEvents ();
+ return container->QueryLoadState();
+ }
+
+ float Browser::QueryLoadProgress ()
+ {
+ if (!container) return 1.0f;
+ ProcessToolkitEvents ();
+ return container->QueryLoadProgress();
+ }
+
//-----------------------------------------------------------------------
NS_IMPL_ADDREF(Container)
@@ -531,7 +560,7 @@
NS_INTERFACE_MAP_ENTRY(nsIInterfaceRequestor)
NS_INTERFACE_MAP_END
- Container::Container ()
+ Container::Container () : loadState (loadFinished), loadProgress (1.0f)
{
}
@@ -699,24 +728,29 @@
PRInt32 curTotalProgress, PRInt32 maxTotalProgress)
{
//WebBrowserChromeUI::UpdateProgress(this, curTotalProgress, maxTotalProgress);
+ loadProgress = (float)curTotalProgress/(float)maxTotalProgress;
return NS_OK;
}
NS_IMETHODIMP Container::OnStateChange(nsIWebProgress *progress, nsIRequest *request,
PRUint32 progressStateFlags, nsresult status)
{
- /*if ((progressStateFlags & STATE_START) && (progressStateFlags & STATE_IS_DOCUMENT))
+ if ((progressStateFlags & STATE_START) && (progressStateFlags & STATE_IS_DOCUMENT))
{
- WebBrowserChromeUI::UpdateBusyState(this, PR_TRUE);
+ //WebBrowserChromeUI::UpdateBusyState(this, PR_TRUE);
+ if (loadState != loadLoading) loadProgress = 0.0f;
+ loadState = loadLoading;
}
if ((progressStateFlags & STATE_STOP) && (progressStateFlags & STATE_IS_DOCUMENT))
{
- WebBrowserChromeUI::UpdateBusyState(this, PR_FALSE);
+ /*WebBrowserChromeUI::UpdateBusyState(this, PR_FALSE);
WebBrowserChromeUI::UpdateProgress(this, 0, 100);
WebBrowserChromeUI::UpdateStatusBarText(this, nsnull);
- ContentFinishedLoading();
- }*/
+ ContentFinishedLoading();*/
+ loadState = loadFinished;
+ loadProgress = 1.0f;
+ }
return NS_OK;
}
Modified: trunk/src/libosgk/browser.h
===================================================================
--- trunk/src/libosgk/browser.h 2008-11-02 01:53:12 UTC (rev 85)
+++ trunk/src/libosgk/browser.h 2008-11-02 01:56:08 UTC (rev 86)
@@ -151,6 +151,9 @@
bool SetUserData (unsigned int key, void* data, bool overrideData);
bool GetUserData (unsigned int key, void*& data);
+
+ OSGK_LoadState QueryLoadState ();
+ float QueryLoadProgress ();
gfxASurface* GetSurface() { return surface; }
enum
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|