|
From: <bl...@us...> - 2008-02-27 21:21:14
|
Revision: 436
http://edu2.svn.sourceforge.net/edu2/?rev=436&view=rev
Author: blackhc
Date: 2008-02-27 13:21:09 -0800 (Wed, 27 Feb 2008)
Log Message:
-----------
Update the login state automatically.
Login now performs a facebook login, too.
Logout logs you out of facebook.
Reload campus and profile on logout.
Add menu_delayed_function/time to menu.qc/qh, which allows us to perform a delayed function call (useful for reloading webpages).
Modified Paths:
--------------
edu2/edu2/menu.dat
edu2/edu2/menu.lno
edu2/id1/qcsrc/menu/edu2/dialog_gamelist.c
edu2/id1/qcsrc/menu/edu2/dialog_infotabs.c
edu2/id1/qcsrc/menu/edu2/dialog_login.c
edu2/id1/qcsrc/menu/edu2/dialog_logout.c
edu2/id1/qcsrc/menu/edu2/dialog_profile.c
edu2/id1/qcsrc/menu/item/gecko.c
edu2/id1/qcsrc/menu/menu.qc
edu2/id1/qcsrc/menu/menu.qh
edu2/id1/qcsrc/menu/nexuiz/dialog_news.c
Modified: edu2/edu2/menu.dat
===================================================================
(Binary files differ)
Modified: edu2/edu2/menu.lno
===================================================================
(Binary files differ)
Modified: edu2/id1/qcsrc/menu/edu2/dialog_gamelist.c
===================================================================
--- edu2/id1/qcsrc/menu/edu2/dialog_gamelist.c 2008-02-27 19:27:34 UTC (rev 435)
+++ edu2/id1/qcsrc/menu/edu2/dialog_gamelist.c 2008-02-27 21:21:09 UTC (rev 436)
@@ -8,11 +8,11 @@
ATTRIB(GameListDialog, rows, float, 21)
ATTRIB(GameListDialog, columns, float, 5)
ATTRIB(GameListDialog, campaignBox, entity, NULL)
+ ATTRIB(GameListDialog, name, string, "GameListDialog")
ENDCLASS(GameListDialog)
#endif
#ifdef IMPLEMENTATION
-
void fillGameListDialog(entity me)
{
entity e;
Modified: edu2/id1/qcsrc/menu/edu2/dialog_infotabs.c
===================================================================
--- edu2/id1/qcsrc/menu/edu2/dialog_infotabs.c 2008-02-27 19:27:34 UTC (rev 435)
+++ edu2/id1/qcsrc/menu/edu2/dialog_infotabs.c 2008-02-27 21:21:09 UTC (rev 436)
@@ -15,11 +15,29 @@
void() Edu2InfoTabsDialog_onLoggedIn;
void() Edu2InfoTabsDialog_onLoggedOut;
+void() Edu2InfoTabsDialog_updateLoginState;
+
+entity loginout_browser;
#endif
#ifdef IMPLEMENTATION
entity Edu2InfoTabsDialog_logInOutButton;
+float Edu2InfoTabsDialog_isLoggedIn;
+void() Edu2InfoTabsDialog_updateLoginState = {
+ if( gamestatus & GAME_CONNECTED ) {
+ if( !Edu2InfoTabsDialog_isLoggedIn ) {
+ Edu2InfoTabsDialog_onLoggedIn();
+ }
+ Edu2InfoTabsDialog_isLoggedIn = true;
+ } else {
+ if( Edu2InfoTabsDialog_isLoggedIn ) {
+ Edu2InfoTabsDialog_onLoggedOut();
+ }
+ Edu2InfoTabsDialog_isLoggedIn = false;
+ }
+};
+
void() Edu2InfoTabsDialog_onLoggedIn = {
entity e;
e = Edu2InfoTabsDialog_logInOutButton;
@@ -78,3 +96,4 @@
me.TD(me, me.rows - 2, me.columns, mc);
}
#endif
+
Modified: edu2/id1/qcsrc/menu/edu2/dialog_login.c
===================================================================
--- edu2/id1/qcsrc/menu/edu2/dialog_login.c 2008-02-27 19:27:34 UTC (rev 435)
+++ edu2/id1/qcsrc/menu/edu2/dialog_login.c 2008-02-27 21:21:09 UTC (rev 436)
@@ -10,9 +10,9 @@
ATTRIB(LoginDialog, titleHeight, float, SKINFONTSIZE_NORMAL * SKINHEIGHT_NORMAL * 1.2 ) // pixels
ATTRIB(LoginDialog, titleFontSize, float, SKINFONTSIZE_NORMAL * 1.2 ) // pixels
- ATTRIB(LoginDialog, intendedWidth, float, 0.4)
- ATTRIB(LoginDialog, rows, float, 4)
- ATTRIB(LoginDialog, columns, float, 3)
+ ATTRIB(LoginDialog, intendedWidth, float, 0.4) // 0.4
+ ATTRIB(LoginDialog, rows, float, 4) // 4
+ ATTRIB(LoginDialog, columns, float, 3) // 3
ATTRIB(LoginDialog, name, string, "LoginDialog")
ATTRIB(LoginDialog, closable, float, 0)
@@ -25,21 +25,29 @@
#endif
#ifdef IMPLEMENTATION
-void LoginDialog_onOasdasdkClick(entity button, entity me)
+#define REG_EDU2_USERNAME "edu2/login/username"
+#define REG_EDU2_PASSWORD "edu2/login/password"
+
+void LoginDialog_ReloadProfile()
{
- // TODO: rewrite this to use gecko builtins but Im not sure whether its ok timing-wise
- localcmd( "gecko_create loginProcess; gecko_navigate loginProcess http://www.facebook.com; wait; wait; wait; wait;",
- "gecko_navigate loginProcess \"javascript:document.loginform.email.value=\\\"", me.username.text,
- "\\\"; document.loginform.pass.value=\\\"", me.password.text, "\\\"; login_form_change(); document.loginform.submit();\"\n");
+ profile_browser.goHome( profile_browser );
}
-#define REG_EDU2_USERNAME "edu2/login/username"
-#define REG_EDU2_PASSWORD "edu2/login/password"
-
void LoginDialog_onOkClick(entity button, entity me)
{
+ // TODO: delay the whole thing? Black
db_put( menu_registry, REG_EDU2_USERNAME, me.username.text );
db_put( menu_registry, REG_EDU2_PASSWORD, me.password.text );
+ loginout_browser.executeScript( loginout_browser,
+ strcat(
+"document.loginform.email.value%3D%22", me.username.text, "%22%3B%0Adocument.loginform.pass.value%3D%22", me.password.text,
+"%22%3B%0Adocument.loginform.persistent.checked%3Dtrue%3B%0Aif%28%20document.loginform.persistent.checked.dialog%20%21%3D%20null%20%29%0A%09document.loginform.persistent.checked.dialog.hide%28%29%3B%0Alogin_form_change%28%29%3B%0A%0Athis.disabled%3Dtrue%3B%20document.loginform.submit%28%29%3B%0Adocument.loginform.submit%28%29%3B"
+ ) );
+
+ // TODO: needs to be delayed Black!!
+ menu_delayed_time = time + 3.0;
+ menu_delayed_function = LoginDialog_ReloadProfile;
+
localcmd( "map test\n" );
Edu2InfoTabsDialog_onLoggedIn();
me.close( me );
@@ -82,6 +90,11 @@
me.TD( me, 1, 1, makeNexuizTextLabel( 0, _("Password:") ) );
me.TD( me, 1, 2, me.password );
me.TR( me );
+
+ loginout_browser = spawnGecko();
+ //me.TD( me, 16, 10, loginout_browser );
+ loginout_browser.configureBrowser( loginout_browser, "http://www.facebook.com", false );
+
me.TR( me );
me.TDempty( me, 1 );
me.TD( me, 1, 1, me.okButton );
Modified: edu2/id1/qcsrc/menu/edu2/dialog_logout.c
===================================================================
--- edu2/id1/qcsrc/menu/edu2/dialog_logout.c 2008-02-27 19:27:34 UTC (rev 435)
+++ edu2/id1/qcsrc/menu/edu2/dialog_logout.c 2008-02-27 21:21:09 UTC (rev 436)
@@ -15,7 +15,14 @@
#ifdef IMPLEMENTATION
void LogoutDialog_onYesClick(entity button, entity me)
{
+ loginout_browser.executeScript( loginout_browser,
+ "for%28%20var%20i%20%3D%200%20%3B%20i%20%3C%20document.links.length%20%3B%20i++%20%29%20%7B%0A%20%20%20%20var%20str%20%3D%20String%28%20document.links%5Bi%5D.href%20%29%3B%0A%20%20%20%20if%28%20str.search%28%20%22www.facebook.com/logout.php%22%20%29%20%21%3D%20-1%20%29%20%7B%0A%20%20%20%20%20%20%20%20location.assign%28%20str%20+%20%22%26confirm%3D1%22%20%29%3B%0A%0A%20%20%20%20%7D%0A%7D%0A"
+ );
+ profile_browser.goHome( profile_browser );
+ campus_browser.goHome( campus_browser );
+
localcmd( "disconnect\n" );
+
Edu2InfoTabsDialog_onLoggedOut();
me.close( me );
}
Modified: edu2/id1/qcsrc/menu/edu2/dialog_profile.c
===================================================================
--- edu2/id1/qcsrc/menu/edu2/dialog_profile.c 2008-02-27 19:27:34 UTC (rev 435)
+++ edu2/id1/qcsrc/menu/edu2/dialog_profile.c 2008-02-27 21:21:09 UTC (rev 436)
@@ -7,6 +7,7 @@
ATTRIB(Edu2ProfileDialog, rows, float, 24)
ATTRIB(Edu2ProfileDialog, columns, float, 1)
ENDCLASS(Edu2ProfileDialog)
+entity profile_browser;
#endif
#ifdef IMPLEMENTATION
@@ -22,7 +23,7 @@
{
entity e;
me.TR(me);
- me.TD(me, 24, 1, e = spawnGecko());
- e.configureBrowser( e, "http://www.facebook.com" );
+ me.TD(me, 24, 1, e = profile_browser = spawnGecko());
+ e.configureBrowser( e, "http://www.facebook.com", true );
}
#endif
Modified: edu2/id1/qcsrc/menu/item/gecko.c
===================================================================
--- edu2/id1/qcsrc/menu/item/gecko.c 2008-02-27 19:27:34 UTC (rev 435)
+++ edu2/id1/qcsrc/menu/item/gecko.c 2008-02-27 21:21:09 UTC (rev 436)
@@ -1,15 +1,19 @@
// Andreas Kirsch Gecko item (to test it)
#ifdef INTERFACE
CLASS(Gecko) EXTENDS(Item)
- METHOD( Gecko, configureBrowser, void( entity, string ) )
+ METHOD( Gecko, configureBrowser, void( entity, string, float ) )
+ METHOD( Gecko, navigate, void( entity, string, float ) )
+ METHOD( Gecko, goHome, void(entity) )
METHOD( Gecko, draw, void(entity))
METHOD( Gecko, keyDown, float(entity, float, float, float))
METHOD( Gecko, keyUp, float(entity, float, float, float))
+ METHOD( Gecko, executeScript, void(entity, string))
METHOD( Gecko, mouseMove, float(entity, vector))
METHOD( Gecko, mouseDrag, float(entity, vector))
METHOD( Gecko, resizeNotify, void(entity, vector, vector, vector, vector))
ATTRIB( Gecko, texturePath, string, string_null )
ATTRIB( Gecko, textureExtent, vector, '0 0 0')
+ ATTRIB( Gecko, homeURI, string, string_null )
ENDCLASS(Item)
#endif
@@ -17,7 +21,7 @@
// define static members
float _gecko_instanceNumber;
-void configureBrowserGecko( entity me, string URI ) {
+void configureBrowserGecko( entity me, string URI, float useTerminalBrowser ) {
me.focusable = 1;
//create a new gecko object if needed
@@ -27,11 +31,41 @@
// TODO: add error checks
gecko_create( me.texturePath );
}
- gecko_navigate( me.texturePath, strcat( "http://www.icculus.org/~black/stuff/terminalbrowser.html?", URI ) );
+ string lFullURI;
+ if( useTerminalBrowser ) {
+ lFullURI = strcat( "http://www.icculus.org/~black/stuff/terminalbrowser.html?", URI );
+ } else {
+ lFullURI = URI;
+ }
+ // TODO: FIXME possible leak!
+ me.homeURI = strzone( lFullURI );
+ gecko_navigate( me.texturePath, lFullURI);
//gecko_navigate( me.texturePath, "about:blank" );
//gecko_navigate( me.texturePath, "javascript:Darkplaces.query( 123 );" );
}
+void navigateGecko( entity me, string URI, float useTerminalBrowser) {
+ string lFullURI;
+ if( useTerminalBrowser ) {
+ lFullURI = strcat( "http://www.icculus.org/~black/stuff/terminalbrowser.html?", URI );
+ } else {
+ lFullURI = URI;
+ }
+ if not( me.homeURI ) {
+ strunzone( me.homeURI );
+ }
+ me.homeURI = strzone( lFullURI );
+ gecko_navigate( me.texturePath, lFullURI);
+}
+
+void goHomeGecko( entity me ) {
+ gecko_navigate( me.texturePath, me.homeURI );
+}
+
+void executeScriptGecko( entity me, string pCode ) {
+ gecko_navigate( me.texturePath, strcat( "javascript:", pCode ) );
+}
+
void drawGecko(entity me)
{
vector drawSize;
Modified: edu2/id1/qcsrc/menu/menu.qc
===================================================================
--- edu2/id1/qcsrc/menu/menu.qc 2008-02-27 19:27:34 UTC (rev 435)
+++ edu2/id1/qcsrc/menu/menu.qc 2008-02-27 21:21:09 UTC (rev 436)
@@ -279,7 +279,7 @@
//m_hide();
//}
}
-
+
if(cvar("cl_capturevideo"))
frametime = cvar("menu_slowmo") / cvar("cl_capturevideo_fps"); // make capturevideo work smoothly
@@ -331,6 +331,15 @@
if(menuAlpha > 0)
drawBackground(SKINGFX_BACKGROUND_INGAME, menuAlpha * SKINALPHA_BACKGROUND_INGAME);
}
+
+ // TODO: move this somewhere else - doesnt really make sense to have that here BlackHC
+ Edu2InfoTabsDialog_updateLoginState();
+
+ // TODO: move this somewhere else - Black
+ if( menu_delayed_time != -1 && menu_delayed_time < time ) {
+ menu_delayed_function();
+ menu_delayed_time = -1;
+ }
draw_reset();
preMenuDraw();
Modified: edu2/id1/qcsrc/menu/menu.qh
===================================================================
--- edu2/id1/qcsrc/menu/menu.qh 2008-02-27 19:27:34 UTC (rev 435)
+++ edu2/id1/qcsrc/menu/menu.qh 2008-02-27 21:21:09 UTC (rev 436)
@@ -60,5 +60,8 @@
string( float index ) MessageLog_Get;
+var void() menu_delayed_function = SUB_Null;
+var float menu_delayed_time = -1;
+
float menu_registry;
const string MENU_REGISTRY_FILE = "menu.registry";
Modified: edu2/id1/qcsrc/menu/nexuiz/dialog_news.c
===================================================================
--- edu2/id1/qcsrc/menu/nexuiz/dialog_news.c 2008-02-27 19:27:34 UTC (rev 435)
+++ edu2/id1/qcsrc/menu/nexuiz/dialog_news.c 2008-02-27 21:21:09 UTC (rev 436)
@@ -7,6 +7,7 @@
ATTRIB(NexuizNewsDialog, rows, float, 24)
ATTRIB(NexuizNewsDialog, columns, float, 1)
ENDCLASS(NexuizNewsDialog)
+entity campus_browser;
#endif
#ifdef IMPLEMENTATION
@@ -22,7 +23,7 @@
{
entity e;
me.TR(me);
- me.TD(me, 24, 1, e = spawnGecko());
- e.configureBrowser( e, "http://campus.edu-shooter.de" );
+ me.TD(me, 24, 1, e = campus_browser = spawnGecko());
+ e.configureBrowser( e, "http://campus.edu-shooter.de", true );
}
#endif
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|