Project

General

Profile

Js and Cpp: Browser Viewport size » main.cpp

Source Code - Plug Gulp, 05/29/2013 01:00 AM

 
#include <Wt/WJavaScript>
#include <Wt/WApplication>
#include <Wt/WBootstrapTheme>
#include <Wt/WContainerWidget>

using namespace Wt;

class TestJsCpp : public WApplication
{
public:
TestJsCpp(const WEnvironment& env)
: WApplication(env), m_jsBrowserSizeChanged(this, "BrowserSizeChanged")
{
setTheme(new WBootstrapTheme());

addMetaHeader("viewport", "width=device-width, initial-scale=1");

root()->addStyleClass("container-fluid");

m_jsBrowserSizeChanged.connect(this, &TestJsCpp::PrintBrowserSize);

declareJavaScriptFunction("jsBrowserSize",
"function() {" +
m_jsBrowserSizeChanged.createCall("$(window).width()", "$(window).height()") + ";"
" }"
);

//#define LAZY_SET_WINDOW_RESIZE
#ifdef LAZY_SET_WINDOW_RESIZE
log("##### TestJsCpp #####") << "Assign window resize handler after load.";

declareJavaScriptFunction("jsOnLoad",
"function() {"
"$(window).resize(" + javaScriptClass() + ".jsBrowserSize);" +
javaScriptClass() + ".jsBrowserSize();"
"}"
);

doJavaScript(
"$(document).ready(" + javaScriptClass() + ".jsOnLoad);"
);
#else
log("##### TestJsCpp #####") << "Assign window resize handler before load.";

doJavaScript(
"$(document).ready(" + javaScriptClass() + ".jsBrowserSize);"
"$(window).resize(" + javaScriptClass() + ".jsBrowserSize);"
);
#endif
}

protected:
void PrintBrowserSize(int iWidth, int iHeight)
{
log("##### TestJsCpp #####") << "Browser Size: w = " << iWidth << " h = " << iHeight;
}

private:
JSignal<int, int> m_jsBrowserSizeChanged;
};

WApplication* CreateApplication(const WEnvironment& env)
{
return new TestJsCpp(env);
}

int main(int iArgCount, char **ppArgs)
{
return WRun(iArgCount, ppArgs, &CreateApplication);
}

(2-2/2)