summaryrefslogtreecommitdiff
path: root/amiga/login.c
diff options
context:
space:
mode:
Diffstat (limited to 'amiga/login.c')
-rwxr-xr-xamiga/login.c122
1 files changed, 122 insertions, 0 deletions
diff --git a/amiga/login.c b/amiga/login.c
index 47e708e58..3c42ad4c8 100755
--- a/amiga/login.c
+++ b/amiga/login.c
@@ -17,8 +17,130 @@
*/
#include "desktop/401login.h"
+#include "amiga/gui.h"
+#include "amiga/object.h"
+#include "amiga/login.h"
+#include <proto/exec.h>
+#include <proto/intuition.h>
+#include <proto/utility.h>
+#include "utils/url.h"
+#include "content/urldb.h"
+#include "utils/messages.h"
+
+#include <proto/window.h>
+#include <proto/layout.h>
+#include <proto/string.h>
+#include <proto/button.h>
+#include <proto/label.h>
+#include <classes/window.h>
+#include <gadgets/layout.h>
+#include <gadgets/string.h>
+#include <gadgets/button.h>
+#include <images/label.h>
+#include <reaction/reaction_macros.h>
void gui_401login_open(struct browser_window *bw, struct content *c,
const char *realm)
{
+ struct gui_login_window *lw = AllocVec(sizeof(struct gui_login_window),MEMF_CLEAR);
+ char *host;
+
+ url_host(c->url, &host);
+ lw->host = host;
+ lw->url = c->url;
+ lw->realm = (char *)realm;
+ lw->bw = bw;
+
+ lw->objects[OID_MAIN] = WindowObject,
+ WA_ScreenTitle,nsscreentitle,
+ WA_Title,lw->url,
+ WA_Activate, TRUE,
+ WA_DepthGadget, TRUE,
+ WA_DragBar, TRUE,
+ WA_CloseGadget, FALSE,
+ WA_SizeGadget, TRUE,
+ WA_CustomScreen,scrn,
+ WINDOW_IconifyGadget, FALSE,
+ WINDOW_LockHeight,TRUE,
+ WINDOW_Position, WPOS_CENTERSCREEN,
+ WINDOW_ParentGroup, lw->gadgets[GID_MAIN] = VGroupObject,
+ LAYOUT_AddChild, StringObject,
+ STRINGA_TextVal,lw->host,
+ GA_ReadOnly,TRUE,
+ StringEnd,
+ CHILD_Label, LabelObject,
+ LABEL_Text,messages_get("Host"),
+ LabelEnd,
+ CHILD_WeightedHeight,0,
+ LAYOUT_AddChild, StringObject,
+ STRINGA_TextVal,lw->realm,
+ GA_ReadOnly,TRUE,
+ StringEnd,
+ CHILD_Label, LabelObject,
+ LABEL_Text,messages_get("Realm"),
+ LabelEnd,
+ CHILD_WeightedHeight,0,
+ LAYOUT_AddChild, lw->gadgets[GID_USER] = StringObject,
+ GA_ID,GID_USER,
+ GA_TabCycle,TRUE,
+ StringEnd,
+ CHILD_Label, LabelObject,
+ LABEL_Text,messages_get("Username"),
+ LabelEnd,
+ CHILD_WeightedHeight,0,
+ LAYOUT_AddChild, lw->gadgets[GID_PASS] = StringObject,
+ GA_ID,GID_PASS,
+ STRINGA_HookType,SHK_PASSWORD,
+ GA_TabCycle,TRUE,
+ StringEnd,
+ CHILD_Label, LabelObject,
+ LABEL_Text,messages_get("Password"),
+ LabelEnd,
+ CHILD_WeightedHeight,0,
+ LAYOUT_AddChild, HGroupObject,
+ LAYOUT_AddChild, lw->gadgets[GID_LOGIN] = ButtonObject,
+ GA_ID,GID_LOGIN,
+ GA_RelVerify,TRUE,
+ GA_Text,messages_get("Login"),
+ GA_TabCycle,TRUE,
+ ButtonEnd,
+ CHILD_WeightedHeight,0,
+ LAYOUT_AddChild, lw->gadgets[GID_CANCEL] = ButtonObject,
+ GA_ID,GID_CANCEL,
+ GA_RelVerify,TRUE,
+ GA_Text,messages_get("Cancel"),
+ GA_TabCycle,TRUE,
+ ButtonEnd,
+ LayoutEnd,
+ CHILD_WeightedHeight,0,
+ EndGroup,
+ EndWindow;
+
+ lw->win = (struct Window *)RA_OpenWindow(lw->objects[OID_MAIN]);
+
+ lw->node = AddObject(window_list,AMINS_LOGINWINDOW);
+ lw->node->objstruct = lw;
+}
+
+void ami_401login_close(struct gui_login_window *lw)
+{
+ DisposeObject(lw->objects[OID_MAIN]);
+ free(lw->host);
+ DelObject(lw->node);
+}
+
+void ami_401login_login(struct gui_login_window *lw)
+{
+ ULONG *user,*pass;
+ STRPTR userpass;
+
+ GetAttr(STRINGA_TextVal,lw->gadgets[GID_USER],(ULONG *)&user);
+ GetAttr(STRINGA_TextVal,lw->gadgets[GID_PASS],(ULONG *)&pass);
+
+ userpass = ASPrintf("%s:%s",user,pass);
+ urldb_set_auth_details(lw->url,lw->realm,userpass);
+ FreeVec(userpass);
+ browser_window_go(lw->bw,lw->url,0,true);
+
+ ami_401login_close(lw);
}