From a66adbbfefcc61f4f577b80398a9a0d8941b8441 Mon Sep 17 00:00:00 2001 From: François Revel Date: Thu, 22 Mar 2012 21:48:24 +0000 Subject: Rename BeOS frontend files to strip the useless beos_ prefix. Fix includes and the rest so it builds. svn path=/trunk/netsurf/; revision=13554 --- beos/login.cpp | 199 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 199 insertions(+) create mode 100644 beos/login.cpp (limited to 'beos/login.cpp') diff --git a/beos/login.cpp b/beos/login.cpp new file mode 100644 index 000000000..32860de20 --- /dev/null +++ b/beos/login.cpp @@ -0,0 +1,199 @@ +/* + * Copyright 2008 François Revol + * + * This file is part of NetSurf, http://www.netsurf-browser.org/ + * + * NetSurf is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * NetSurf is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#define __STDBOOL_H__ 1 +#include +#include +#include +#include +#include +#include +#include +#include +#include +extern "C" { +#include "utils/log.h" +#include "content/content.h" +#include "content/urldb.h" +#include "desktop/browser.h" +#include "desktop/401login.h" +#include "desktop/gui.h" +#include "utils/messages.h" +#include "utils/url.h" +#include "utils/utils.h" +} +#include "beos/gui.h" +#include "beos/scaffolding.h" +#include "beos/window.h" + +class LoginAlert : public BAlert { +public: + LoginAlert(nserror (*callback)(bool proceed, void *pw), + void *callbaclpw, + const char *url, + const char *host, + const char *realm, + const char *text); + virtual ~LoginAlert(); + void MessageReceived(BMessage *message); + +private: + BString fUrl; /**< URL being fetched */ + BString fHost; /**< Host for user display */ + BString fRealm; /**< Authentication realm */ + nserror (*fCallback)(bool proceed, void *pw); + void *fCallbackPw; + + BTextControl *fUserControl; + BTextControl *fPassControl; +}; + +static void create_login_window(const char *host, + const char *realm, const char *fetchurl, + nserror (*cb)(bool proceed, void *pw), void *cbpw); + + +#define TC_H 25 +#define TC_MARGIN 10 + +LoginAlert::LoginAlert(nserror (*callback)(bool proceed, void *pw), + void *callbackpw, + const char *url, + const char *host, + const char *realm, + const char *text) + : BAlert("Login", text, "Cancel", "Ok", NULL, + B_WIDTH_AS_USUAL, B_WARNING_ALERT) +{ + fCallback = callback; + fCallbackPw = callbackpw; + fUrl = url; + fHost = host; + fRealm = realm; + + SetFeel(B_MODAL_SUBSET_WINDOW_FEEL); + /* + // XXX: can't do that anymore + nsbeos_scaffolding *s = nsbeos_get_scaffold(bw->window); + if (s) { + NSBrowserWindow *w = nsbeos_get_bwindow_for_scaffolding(s); + if (w) + AddToSubset(w); + }*/ + + // make space for controls + ResizeBy(0, 2 * TC_H); + MoveTo(AlertPosition(Frame().Width() + 1, + Frame().Height() + 1)); + + + BTextView *tv = TextView(); + BRect r(TC_MARGIN, tv->Bounds().bottom - 2 * TC_H, + tv->Bounds().right - TC_MARGIN, tv->Bounds().bottom - TC_H); + + fUserControl = new BTextControl(r, "user", "Username", "", + new BMessage(), B_FOLLOW_BOTTOM | B_FOLLOW_RIGHT); + fUserControl->SetDivider(60); + tv->AddChild(fUserControl); + + r.OffsetBySelf(0, TC_H); + + fPassControl = new BTextControl(r, "pass", "Password", "", + new BMessage(), B_FOLLOW_BOTTOM | B_FOLLOW_RIGHT); + fPassControl->TextView()->HideTyping(true); + fPassControl->SetDivider(60); + tv->AddChild(fPassControl); + + SetShortcut(0, B_ESCAPE); +} + +LoginAlert::~LoginAlert() +{ +} + +void +LoginAlert::MessageReceived(BMessage *message) +{ + switch (message->what) { + case 'ALTB': + { + int32 which; + if (message->FindInt32("which", &which) < B_OK) + break; + // not 'Ok' + if (which != 1) + break; + BMessage *m = new BMessage(*message); + m->what = 'nsLO'; + m->AddString("URL", fUrl.String()); + m->AddString("Host", fHost.String()); + m->AddString("Realm", fRealm.String()); + m->AddPointer("callback", (void *)fCallback); + m->AddPointer("callback_pw", (void *)fCallbackPw); + m->AddString("User", fUserControl->Text()); + m->AddString("Pass", fPassControl->Text()); + BString auth(fUserControl->Text()); + auth << ":" << fPassControl->Text(); + m->AddString("Auth", auth.String()); + + // notify the main thread + // the event dispatcher will handle it + nsbeos_pipe_message(m, NULL, NULL); + } + break; + default: + break; + } + BAlert::MessageReceived(message); +} + + +void gui_401login_open(const char *url, const char *realm, + nserror (*cb)(bool proceed, void *pw), void *cbpw) +{ + char *host; + url_func_result res; + + res = url_host(url, &host); + assert(res == URL_FUNC_OK); + + create_login_window(url, host, realm, cb, cbpw); + + free(host); +} + +//void create_login_window(struct browser_window *bw, const char *host, +// const char *realm, const char *fetchurl) +static void create_login_window(const char *url, const char *host, + const char *realm, nserror (*cb)(bool proceed, void *pw), + void *cbpw) +{ + BString r("Secure Area"); + if (realm) + r = realm; + BString text(/*messages_get(*/"Please login\n"); + text << "Realm: " << r << "\n"; + text << "Host: " << host << "\n"; + //text << "\n"; + + LoginAlert *a = new LoginAlert(cb, cbpw, url, host, r.String(), + text.String()); + // asynchronously + a->Go(NULL); + +} -- cgit v1.2.3