summaryrefslogtreecommitdiffstats
path: root/xrdp/xrdp_login_wnd.c
diff options
context:
space:
mode:
authorLaxmikant Rashinkar <LK.Rashinkar@gmail.com>2012-09-19 20:51:34 -0700
committerLaxmikant Rashinkar <LK.Rashinkar@gmail.com>2012-09-19 20:51:34 -0700
commit1123323fda6d128fb98b0427e0ea5f6a2dc9e632 (patch)
tree3407a3771a069f812554312ce7c36db625139cc2 /xrdp/xrdp_login_wnd.c
parent3cedfae76a2351bc8b1e5bd2ee33bbf8630dbacf (diff)
downloadxrdp-proprietary-1123323fda6d128fb98b0427e0ea5f6a2dc9e632.tar.gz
xrdp-proprietary-1123323fda6d128fb98b0427e0ea5f6a2dc9e632.zip
o moved from GNU General Public License to Apache License, Version 2.0
o applied new coding standards to all .c files o moved some files around
Diffstat (limited to 'xrdp/xrdp_login_wnd.c')
-rw-r--r--xrdp/xrdp_login_wnd.c995
1 files changed, 519 insertions, 476 deletions
diff --git a/xrdp/xrdp_login_wnd.c b/xrdp/xrdp_login_wnd.c
index 69d3721f..fc4cf125 100644
--- a/xrdp/xrdp_login_wnd.c
+++ b/xrdp/xrdp_login_wnd.c
@@ -1,24 +1,22 @@
-/*
- This program 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; either version 2 of the License, or
- (at your option) any later version.
-
- This program 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, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
- xrdp: A Remote Desktop Protocol server.
- Copyright (C) Jay Sorg 2004-2010
-
- main login window and login help window
-
-*/
+/**
+ * xrdp: A Remote Desktop Protocol server.
+ *
+ * Copyright (C) Jay Sorg 2004-2012
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * main login window and login help window
+ */
#include "xrdp.h"
#define ACCESS
@@ -27,571 +25,616 @@
/*****************************************************************************/
/* all login help screen events go here */
static int DEFAULT_CC
-xrdp_wm_login_help_notify(struct xrdp_bitmap* wnd,
- struct xrdp_bitmap* sender,
+xrdp_wm_login_help_notify(struct xrdp_bitmap *wnd,
+ struct xrdp_bitmap *sender,
int msg, long param1, long param2)
{
- struct xrdp_painter* p;
+ struct xrdp_painter *p;
- if (wnd == 0)
- {
- return 0;
- }
- if (sender == 0)
- {
- return 0;
- }
- if (wnd->owner == 0)
- {
- return 0;
- }
- if (msg == 1) /* click */
- {
- if (sender->id == 1) /* ok button */
+ if (wnd == 0)
{
- if (sender->owner->notify != 0)
- {
- wnd->owner->notify(wnd->owner, wnd, 100, 1, 0); /* ok */
- }
+ return 0;
+ }
+
+ if (sender == 0)
+ {
+ return 0;
+ }
+
+ if (wnd->owner == 0)
+ {
+ return 0;
+ }
+
+ if (msg == 1) /* click */
+ {
+ if (sender->id == 1) /* ok button */
+ {
+ if (sender->owner->notify != 0)
+ {
+ wnd->owner->notify(wnd->owner, wnd, 100, 1, 0); /* ok */
+ }
+ }
}
- }
- else if (msg == WM_PAINT) /* 3 */
- {
- p = (struct xrdp_painter*)param1;
- if (p != 0)
+ else if (msg == WM_PAINT) /* 3 */
{
- p->fg_color = wnd->wm->black;
- xrdp_painter_draw_text(p, wnd, 10, 30, "You must be authenticated \
+ p = (struct xrdp_painter *)param1;
+
+ if (p != 0)
+ {
+ p->fg_color = wnd->wm->black;
+ xrdp_painter_draw_text(p, wnd, 10, 30, "You must be authenticated \
before using this");
- xrdp_painter_draw_text(p, wnd, 10, 46, "session.");
- xrdp_painter_draw_text(p, wnd, 10, 78, "Enter a valid username in \
+ xrdp_painter_draw_text(p, wnd, 10, 46, "session.");
+ xrdp_painter_draw_text(p, wnd, 10, 78, "Enter a valid username in \
the username edit box.");
- xrdp_painter_draw_text(p, wnd, 10, 94, "Enter the password in \
+ xrdp_painter_draw_text(p, wnd, 10, 94, "Enter the password in \
the password edit box.");
- xrdp_painter_draw_text(p, wnd, 10, 110, "Both the username and \
+ xrdp_painter_draw_text(p, wnd, 10, 110, "Both the username and \
password are case");
- xrdp_painter_draw_text(p, wnd, 10, 126, "sensitive.");
- xrdp_painter_draw_text(p, wnd, 10, 158, "Contact your system \
+ xrdp_painter_draw_text(p, wnd, 10, 126, "sensitive.");
+ xrdp_painter_draw_text(p, wnd, 10, 158, "Contact your system \
administrator if you are");
- xrdp_painter_draw_text(p, wnd, 10, 174, "having problems \
+ xrdp_painter_draw_text(p, wnd, 10, 174, "having problems \
logging on.");
+ }
}
- }
- return 0;
+
+ return 0;
}
#if 0
/*****************************************************************************/
static int DEFAULT_CC
-xrdp_wm_popup_notify(struct xrdp_bitmap* wnd,
- struct xrdp_bitmap* sender,
+xrdp_wm_popup_notify(struct xrdp_bitmap *wnd,
+ struct xrdp_bitmap *sender,
int msg, int param1, int param2)
{
- return 0;
+ return 0;
}
#endif
/*****************************************************************************/
int APP_CC
-xrdp_wm_delete_all_childs(struct xrdp_wm* self)
+xrdp_wm_delete_all_childs(struct xrdp_wm *self)
{
- int index;
- struct xrdp_bitmap* b;
- struct xrdp_rect rect;
-
- for (index = self->screen->child_list->count - 1; index >= 0; index--)
- {
- b = (struct xrdp_bitmap*)list_get_item(self->screen->child_list, index);
- MAKERECT(rect, b->left, b->top, b->width, b->height);
- xrdp_bitmap_delete(b);
- xrdp_bitmap_invalidate(self->screen, &rect);
- }
- return 0;
+ int index;
+ struct xrdp_bitmap *b;
+ struct xrdp_rect rect;
+
+ for (index = self->screen->child_list->count - 1; index >= 0; index--)
+ {
+ b = (struct xrdp_bitmap *)list_get_item(self->screen->child_list, index);
+ MAKERECT(rect, b->left, b->top, b->width, b->height);
+ xrdp_bitmap_delete(b);
+ xrdp_bitmap_invalidate(self->screen, &rect);
+ }
+
+ return 0;
}
/*****************************************************************************/
static int APP_CC
-set_mod_data_item(struct xrdp_mod_data* mod, char* name, char* value)
+set_mod_data_item(struct xrdp_mod_data *mod, char *name, char *value)
{
- int index;
+ int index;
- for (index = 0; index < mod->names->count; index++)
- {
- if (g_strncmp(name, (char*)list_get_item(mod->names, index), 255) == 0)
+ for (index = 0; index < mod->names->count; index++)
{
- list_remove_item(mod->values, index);
- list_insert_item(mod->values, index, (long)g_strdup(value));
+ if (g_strncmp(name, (char *)list_get_item(mod->names, index), 255) == 0)
+ {
+ list_remove_item(mod->values, index);
+ list_insert_item(mod->values, index, (long)g_strdup(value));
+ }
}
- }
- return 0;
+
+ return 0;
}
/*****************************************************************************/
static int APP_CC
-xrdp_wm_help_clicked(struct xrdp_bitmap* wnd)
+xrdp_wm_help_clicked(struct xrdp_bitmap *wnd)
{
- struct xrdp_bitmap* help;
- struct xrdp_bitmap* but;
-
- /* create help screen */
- help = xrdp_bitmap_create(DEFAULT_WND_HELP_W, DEFAULT_WND_HELP_H, wnd->wm->screen->bpp,
- WND_TYPE_WND, wnd->wm);
- list_insert_item(wnd->wm->screen->child_list, 0, (long)help);
- help->parent = wnd->wm->screen;
- help->owner = wnd;
- wnd->modal_dialog = help;
- help->bg_color = wnd->wm->grey;
- help->left = wnd->wm->screen->width / 2 - help->width / 2;
- help->top = wnd->wm->screen->height / 2 - help->height / 2;
- help->notify = xrdp_wm_login_help_notify;
- set_string(&help->caption1, "Login help");
- /* ok button */
- but = xrdp_bitmap_create(DEFAULT_BUTTON_W, DEFAULT_BUTTON_H, wnd->wm->screen->bpp,
- WND_TYPE_BUTTON, wnd->wm);
- list_insert_item(help->child_list, 0, (long)but);
- but->parent = help;
- but->owner = help;
- but->left = ((DEFAULT_WND_HELP_W / 2) - (DEFAULT_BUTTON_W / 2)); /* center */
- but->top = DEFAULT_WND_HELP_H - DEFAULT_BUTTON_H - 15;
- but->id = 1;
- but->tab_stop = 1;
- set_string(&but->caption1, "OK");
- /* draw it */
- help->focused_control = but;
- help->default_button = but;
- help->esc_button = but;
- xrdp_bitmap_invalidate(help, 0);
- xrdp_wm_set_focused(wnd->wm, help);
- return 0;
+ struct xrdp_bitmap *help;
+ struct xrdp_bitmap *but;
+
+ /* create help screen */
+ help = xrdp_bitmap_create(DEFAULT_WND_HELP_W, DEFAULT_WND_HELP_H, wnd->wm->screen->bpp,
+ WND_TYPE_WND, wnd->wm);
+ list_insert_item(wnd->wm->screen->child_list, 0, (long)help);
+ help->parent = wnd->wm->screen;
+ help->owner = wnd;
+ wnd->modal_dialog = help;
+ help->bg_color = wnd->wm->grey;
+ help->left = wnd->wm->screen->width / 2 - help->width / 2;
+ help->top = wnd->wm->screen->height / 2 - help->height / 2;
+ help->notify = xrdp_wm_login_help_notify;
+ set_string(&help->caption1, "Login help");
+ /* ok button */
+ but = xrdp_bitmap_create(DEFAULT_BUTTON_W, DEFAULT_BUTTON_H, wnd->wm->screen->bpp,
+ WND_TYPE_BUTTON, wnd->wm);
+ list_insert_item(help->child_list, 0, (long)but);
+ but->parent = help;
+ but->owner = help;
+ but->left = ((DEFAULT_WND_HELP_W / 2) - (DEFAULT_BUTTON_W / 2)); /* center */
+ but->top = DEFAULT_WND_HELP_H - DEFAULT_BUTTON_H - 15;
+ but->id = 1;
+ but->tab_stop = 1;
+ set_string(&but->caption1, "OK");
+ /* draw it */
+ help->focused_control = but;
+ help->default_button = but;
+ help->esc_button = but;
+ xrdp_bitmap_invalidate(help, 0);
+ xrdp_wm_set_focused(wnd->wm, help);
+ return 0;
}
/*****************************************************************************/
static int APP_CC
-xrdp_wm_cancel_clicked(struct xrdp_bitmap* wnd)
+xrdp_wm_cancel_clicked(struct xrdp_bitmap *wnd)
{
- if (wnd != 0)
- {
- if (wnd->wm != 0)
+ if (wnd != 0)
{
- if (wnd->wm->pro_layer != 0)
- {
- g_set_wait_obj(wnd->wm->pro_layer->self_term_event);
- }
+ if (wnd->wm != 0)
+ {
+ if (wnd->wm->pro_layer != 0)
+ {
+ g_set_wait_obj(wnd->wm->pro_layer->self_term_event);
+ }
+ }
}
- }
- return 0;
+
+ return 0;
}
/*****************************************************************************/
static int APP_CC
-xrdp_wm_ok_clicked(struct xrdp_bitmap* wnd)
+xrdp_wm_ok_clicked(struct xrdp_bitmap *wnd)
{
- struct xrdp_bitmap* combo;
- struct xrdp_bitmap* label;
- struct xrdp_bitmap* edit;
- struct xrdp_wm* wm;
- struct xrdp_mod_data* mod_data;
- int i;
-
- wm = wnd->wm;
- combo = xrdp_bitmap_get_child_by_id(wnd, 6);
- if (combo != 0)
- {
- mod_data = (struct xrdp_mod_data*)
- list_get_item(combo->data_list, combo->item_index);
- if (mod_data != 0)
+ struct xrdp_bitmap *combo;
+ struct xrdp_bitmap *label;
+ struct xrdp_bitmap *edit;
+ struct xrdp_wm *wm;
+ struct xrdp_mod_data *mod_data;
+ int i;
+
+ wm = wnd->wm;
+ combo = xrdp_bitmap_get_child_by_id(wnd, 6);
+
+ if (combo != 0)
{
- /* get the user typed values */
- i = 100;
- label = xrdp_bitmap_get_child_by_id(wnd, i);
- edit = xrdp_bitmap_get_child_by_id(wnd, i + 1);
- while (label != 0 && edit != 0)
- {
- set_mod_data_item(mod_data, label->caption1, edit->caption1);
- i += 2;
- label = xrdp_bitmap_get_child_by_id(wnd, i);
- edit = xrdp_bitmap_get_child_by_id(wnd, i + 1);
- }
- list_delete(wm->mm->login_names);
- list_delete(wm->mm->login_values);
- wm->mm->login_names = list_create();
- wm->mm->login_names->auto_free = 1;
- wm->mm->login_values = list_create();
- wm->mm->login_values->auto_free = 1;
- /* gota copy these cause dialog gets freed */
- list_append_list_strdup(mod_data->names, wm->mm->login_names, 0);
- list_append_list_strdup(mod_data->values, wm->mm->login_values, 0);
- xrdp_wm_set_login_mode(wm, 2);
+ mod_data = (struct xrdp_mod_data *)
+ list_get_item(combo->data_list, combo->item_index);
+
+ if (mod_data != 0)
+ {
+ /* get the user typed values */
+ i = 100;
+ label = xrdp_bitmap_get_child_by_id(wnd, i);
+ edit = xrdp_bitmap_get_child_by_id(wnd, i + 1);
+
+ while (label != 0 && edit != 0)
+ {
+ set_mod_data_item(mod_data, label->caption1, edit->caption1);
+ i += 2;
+ label = xrdp_bitmap_get_child_by_id(wnd, i);
+ edit = xrdp_bitmap_get_child_by_id(wnd, i + 1);
+ }
+
+ list_delete(wm->mm->login_names);
+ list_delete(wm->mm->login_values);
+ wm->mm->login_names = list_create();
+ wm->mm->login_names->auto_free = 1;
+ wm->mm->login_values = list_create();
+ wm->mm->login_values->auto_free = 1;
+ /* gota copy these cause dialog gets freed */
+ list_append_list_strdup(mod_data->names, wm->mm->login_names, 0);
+ list_append_list_strdup(mod_data->values, wm->mm->login_values, 0);
+ xrdp_wm_set_login_mode(wm, 2);
+ }
}
- }
- else
- {
- log_message(LOG_LEVEL_ERROR,"Combo is 0 - potential programming error");
- }
- return 0;
+ else
+ {
+ log_message(LOG_LEVEL_ERROR, "Combo is 0 - potential programming error");
+ }
+
+ return 0;
}
/******************************************************************************/
static int APP_CC
-xrdp_wm_show_edits(struct xrdp_wm* self, struct xrdp_bitmap* combo)
+xrdp_wm_show_edits(struct xrdp_wm *self, struct xrdp_bitmap *combo)
{
- int count;
- int index;
- int insert_index;
- int username_set;
- char* name;
- char* value;
- struct xrdp_mod_data* mod;
- struct xrdp_bitmap* b;
-
- username_set = 0;
- /* free labels and edits, cause we gota create them */
- /* creation or combo changed */
- for (index = 100; index < 200; index++)
- {
- b = xrdp_bitmap_get_child_by_id(combo->parent, index);
- xrdp_bitmap_delete(b);
- }
-
- insert_index = list_index_of(self->login_window->child_list,
- (long)combo);
- insert_index++;
- mod = (struct xrdp_mod_data*)
- list_get_item(combo->data_list, combo->item_index);
- if (mod != 0)
- {
- count = 0;
- for (index = 0; index < mod->names->count; index++)
+ int count;
+ int index;
+ int insert_index;
+ int username_set;
+ char *name;
+ char *value;
+ struct xrdp_mod_data *mod;
+ struct xrdp_bitmap *b;
+
+ username_set = 0;
+
+ /* free labels and edits, cause we gota create them */
+ /* creation or combo changed */
+ for (index = 100; index < 200; index++)
{
- value = (char*)list_get_item(mod->values, index);
- if (g_strncmp("ask", value, 3) == 0)
- {
- /* label */
- b = xrdp_bitmap_create(95, DEFAULT_EDIT_H, self->screen->bpp,
- WND_TYPE_LABEL, self);
- list_insert_item(self->login_window->child_list, insert_index,
- (long)b);
- insert_index++;
- b->parent = self->login_window;
- b->owner = self->login_window;
- b->left = self->login_window->width >= DEFAULT_WND_LOGIN_W ? 155 : 5;
- b->top = DEFAULT_ELEMENT_TOP + DEFAULT_COMBO_H + 5 + (DEFAULT_EDIT_H+5) * count;
- b->id = 100 + 2 * count;
- name = (char*)list_get_item(mod->names, index);
- set_string(&b->caption1, name);
- /* edit */
- b = xrdp_bitmap_create(DEFAULT_EDIT_W, DEFAULT_EDIT_H, self->screen->bpp,
- WND_TYPE_EDIT, self);
- list_insert_item(self->login_window->child_list, insert_index,
- (long)b);
- insert_index++;
- b->parent = self->login_window;
- b->owner = self->login_window;
- b->left = self->login_window->width >= DEFAULT_WND_LOGIN_W ? DEFAULT_WND_LOGIN_W - DEFAULT_EDIT_W - 30 : 70;
- b->top = DEFAULT_ELEMENT_TOP + DEFAULT_COMBO_H + 5 + (DEFAULT_EDIT_H+5) * count;
- b->id = 100 + 2 * count + 1;
- b->pointer = 1;
- b->tab_stop = 1;
- b->caption1 = (char*)g_malloc(256, 1);
- g_strncpy(b->caption1, value + 3, 255);
- b->edit_pos = g_mbstowcs(0, b->caption1, 0);
- if (self->login_window->focused_control == 0)
- {
- self->login_window->focused_control = b;
- }
- if (g_strncmp(name, "username", 255) == 0)
- {
- g_strncpy(b->caption1, self->session->client_info->username, 255);
- b->edit_pos = g_mbstowcs(0, b->caption1, 0);
- if (b->edit_pos > 0)
- {
- username_set = 1;
- }
- }
-#ifdef ACCESS
- if ((g_strncmp(name, "password", 255) == 0) || (g_strncmp(name, "pampassword", 255) == 0))
-#else
- if (g_strncmp(name, "password", 255) == 0)
-#endif
+ b = xrdp_bitmap_get_child_by_id(combo->parent, index);
+ xrdp_bitmap_delete(b);
+ }
+
+ insert_index = list_index_of(self->login_window->child_list,
+ (long)combo);
+ insert_index++;
+ mod = (struct xrdp_mod_data *)
+ list_get_item(combo->data_list, combo->item_index);
+
+ if (mod != 0)
+ {
+ count = 0;
+
+ for (index = 0; index < mod->names->count; index++)
{
- b->password_char = '*';
- if (username_set)
- {
- if (b->parent != 0)
+ value = (char *)list_get_item(mod->values, index);
+
+ if (g_strncmp("ask", value, 3) == 0)
{
- b->parent->focused_control = b;
+ /* label */
+ b = xrdp_bitmap_create(95, DEFAULT_EDIT_H, self->screen->bpp,
+ WND_TYPE_LABEL, self);
+ list_insert_item(self->login_window->child_list, insert_index,
+ (long)b);
+ insert_index++;
+ b->parent = self->login_window;
+ b->owner = self->login_window;
+ b->left = self->login_window->width >= DEFAULT_WND_LOGIN_W ? 155 : 5;
+ b->top = DEFAULT_ELEMENT_TOP + DEFAULT_COMBO_H + 5 + (DEFAULT_EDIT_H + 5) * count;
+ b->id = 100 + 2 * count;
+ name = (char *)list_get_item(mod->names, index);
+ set_string(&b->caption1, name);
+ /* edit */
+ b = xrdp_bitmap_create(DEFAULT_EDIT_W, DEFAULT_EDIT_H, self->screen->bpp,
+ WND_TYPE_EDIT, self);
+ list_insert_item(self->login_window->child_list, insert_index,
+ (long)b);
+ insert_index++;
+ b->parent = self->login_window;
+ b->owner = self->login_window;
+ b->left = self->login_window->width >= DEFAULT_WND_LOGIN_W ? DEFAULT_WND_LOGIN_W - DEFAULT_EDIT_W - 30 : 70;
+ b->top = DEFAULT_ELEMENT_TOP + DEFAULT_COMBO_H + 5 + (DEFAULT_EDIT_H + 5) * count;
+ b->id = 100 + 2 * count + 1;
+ b->pointer = 1;
+ b->tab_stop = 1;
+ b->caption1 = (char *)g_malloc(256, 1);
+ g_strncpy(b->caption1, value + 3, 255);
+ b->edit_pos = g_mbstowcs(0, b->caption1, 0);
+
+ if (self->login_window->focused_control == 0)
+ {
+ self->login_window->focused_control = b;
+ }
+
+ if (g_strncmp(name, "username", 255) == 0)
+ {
+ g_strncpy(b->caption1, self->session->client_info->username, 255);
+ b->edit_pos = g_mbstowcs(0, b->caption1, 0);
+
+ if (b->edit_pos > 0)
+ {
+ username_set = 1;
+ }
+ }
+
+#ifdef ACCESS
+
+ if ((g_strncmp(name, "password", 255) == 0) || (g_strncmp(name, "pampassword", 255) == 0))
+#else
+ if (g_strncmp(name, "password", 255) == 0)
+#endif
+ {
+ b->password_char = '*';
+
+ if (username_set)
+ {
+ if (b->parent != 0)
+ {
+ b->parent->focused_control = b;
+ }
+ }
+ }
+
+ count++;
}
- }
}
- count++;
- }
}
- }
- return 0;
+
+ return 0;
}
/*****************************************************************************/
/* all login screen events go here */
static int DEFAULT_CC
-xrdp_wm_login_notify(struct xrdp_bitmap* wnd,
- struct xrdp_bitmap* sender,
+xrdp_wm_login_notify(struct xrdp_bitmap *wnd,
+ struct xrdp_bitmap *sender,
int msg, long param1, long param2)
{
- struct xrdp_bitmap* b;
- struct xrdp_rect rect;
- int i;
+ struct xrdp_bitmap *b;
+ struct xrdp_rect rect;
+ int i;
- if (wnd->modal_dialog != 0 && msg != 100)
- {
- return 0;
- }
- if (msg == 1) /* click */
- {
- if (sender->id == 1) /* help button */
+ if (wnd->modal_dialog != 0 && msg != 100)
{
- xrdp_wm_help_clicked(wnd);
+ return 0;
}
- else if (sender->id == 2) /* cancel button */
+
+ if (msg == 1) /* click */
{
- xrdp_wm_cancel_clicked(wnd);
+ if (sender->id == 1) /* help button */
+ {
+ xrdp_wm_help_clicked(wnd);
+ }
+ else if (sender->id == 2) /* cancel button */
+ {
+ xrdp_wm_cancel_clicked(wnd);
+ }
+ else if (sender->id == 3) /* ok button */
+ {
+ xrdp_wm_ok_clicked(wnd);
+ }
}
- else if (sender->id == 3) /* ok button */
+ else if (msg == 2) /* mouse move */
{
- xrdp_wm_ok_clicked(wnd);
}
- }
- else if (msg == 2) /* mouse move */
- {
- }
- else if (msg == 100) /* modal result is done */
- {
- i = list_index_of(wnd->wm->screen->child_list, (long)sender);
- if (i >= 0)
+ else if (msg == 100) /* modal result is done */
{
- b = (struct xrdp_bitmap*)
- list_get_item(wnd->wm->screen->child_list, i);
- list_remove_item(sender->wm->screen->child_list, i);
- MAKERECT(rect, b->left, b->top, b->width, b->height);
- xrdp_bitmap_invalidate(wnd->wm->screen, &rect);
- xrdp_bitmap_delete(sender);
- wnd->modal_dialog = 0;
- xrdp_wm_set_focused(wnd->wm, wnd);
+ i = list_index_of(wnd->wm->screen->child_list, (long)sender);
+
+ if (i >= 0)
+ {
+ b = (struct xrdp_bitmap *)
+ list_get_item(wnd->wm->screen->child_list, i);
+ list_remove_item(sender->wm->screen->child_list, i);
+ MAKERECT(rect, b->left, b->top, b->width, b->height);
+ xrdp_bitmap_invalidate(wnd->wm->screen, &rect);
+ xrdp_bitmap_delete(sender);
+ wnd->modal_dialog = 0;
+ xrdp_wm_set_focused(wnd->wm, wnd);
+ }
}
- }
- else if (msg == CB_ITEMCHANGE) /* combo box change */
- {
- xrdp_wm_show_edits(wnd->wm, sender);
- xrdp_bitmap_invalidate(wnd, 0); /* invalidate the whole dialog for now */
- }
- return 0;
+ else if (msg == CB_ITEMCHANGE) /* combo box change */
+ {
+ xrdp_wm_show_edits(wnd->wm, sender);
+ xrdp_bitmap_invalidate(wnd, 0); /* invalidate the whole dialog for now */
+ }
+
+ return 0;
}
/******************************************************************************/
static int APP_CC
-xrdp_wm_login_fill_in_combo(struct xrdp_wm* self, struct xrdp_bitmap* b)
+xrdp_wm_login_fill_in_combo(struct xrdp_wm *self, struct xrdp_bitmap *b)
{
- struct list* sections;
- struct list* section_names;
- struct list* section_values;
- int fd;
- int i;
- int j;
- char* p;
- char* q;
- char* r;
- char name[256];
- char cfg_file[256];
- struct xrdp_mod_data* mod_data;
-
- sections = list_create();
- sections->auto_free = 1;
- section_names = list_create();
- section_names->auto_free = 1;
- section_values = list_create();
- section_values->auto_free = 1;
- g_snprintf(cfg_file, 255, "%s/xrdp.ini", XRDP_CFG_PATH);
- fd = g_file_open(cfg_file); /* xrdp.ini */
- if (fd < 1)
- {
- log_message(LOG_LEVEL_ERROR,"Could not read xrdp ini file %s", cfg_file);
- }
- file_read_sections(fd, sections);
- for (i = 0; i < sections->count; i++)
- {
- p = (char*)list_get_item(sections, i);
- file_read_section(fd, p, section_names, section_values);
- if ((g_strncmp(p, "globals", 255) == 0)
- ||(g_strncmp(p, "channels", 255) == 0)
- ||(g_strncmp(p, "Logging", 255) == 0))
+ struct list *sections;
+ struct list *section_names;
+ struct list *section_values;
+ int fd;
+ int i;
+ int j;
+ char *p;
+ char *q;
+ char *r;
+ char name[256];
+ char cfg_file[256];
+ struct xrdp_mod_data *mod_data;
+
+ sections = list_create();
+ sections->auto_free = 1;
+ section_names = list_create();
+ section_names->auto_free = 1;
+ section_values = list_create();
+ section_values->auto_free = 1;
+ g_snprintf(cfg_file, 255, "%s/xrdp.ini", XRDP_CFG_PATH);
+ fd = g_file_open(cfg_file); /* xrdp.ini */
+
+ if (fd < 1)
{
+ log_message(LOG_LEVEL_ERROR, "Could not read xrdp ini file %s", cfg_file);
}
- else
+
+ file_read_sections(fd, sections);
+
+ for (i = 0; i < sections->count; i++)
{
- g_strncpy(name, p, 255);
- mod_data = (struct xrdp_mod_data*)
- g_malloc(sizeof(struct xrdp_mod_data), 1);
- mod_data->names = list_create();
- mod_data->names->auto_free = 1;
- mod_data->values = list_create();
- mod_data->values->auto_free = 1;
- for (j = 0; j < section_names->count; j++)
- {
- q = (char*)list_get_item(section_names, j);
- r = (char*)list_get_item(section_values, j);
- if (g_strncmp("name", q, 255) == 0)
+ p = (char *)list_get_item(sections, i);
+ file_read_section(fd, p, section_names, section_values);
+
+ if ((g_strncmp(p, "globals", 255) == 0)
+ || (g_strncmp(p, "channels", 255) == 0)
+ || (g_strncmp(p, "Logging", 255) == 0))
{
- g_strncpy(name, r, 255);
}
- list_add_item(mod_data->names, (long)g_strdup(q));
- list_add_item(mod_data->values, (long)g_strdup(r));
- }
- list_add_item(b->string_list, (long)g_strdup(name));
- list_add_item(b->data_list, (long)mod_data);
+ else
+ {
+ g_strncpy(name, p, 255);
+ mod_data = (struct xrdp_mod_data *)
+ g_malloc(sizeof(struct xrdp_mod_data), 1);
+ mod_data->names = list_create();
+ mod_data->names->auto_free = 1;
+ mod_data->values = list_create();
+ mod_data->values->auto_free = 1;
+
+ for (j = 0; j < section_names->count; j++)
+ {
+ q = (char *)list_get_item(section_names, j);
+ r = (char *)list_get_item(section_values, j);
+
+ if (g_strncmp("name", q, 255) == 0)
+ {
+ g_strncpy(name, r, 255);
+ }
+
+ list_add_item(mod_data->names, (long)g_strdup(q));
+ list_add_item(mod_data->values, (long)g_strdup(r));
+ }
+
+ list_add_item(b->string_list, (long)g_strdup(name));
+ list_add_item(b->data_list, (long)mod_data);
+ }
}
- }
- g_file_close(fd);
- list_delete(sections);
- list_delete(section_names);
- list_delete(section_values);
- return 0;
+
+ g_file_close(fd);
+ list_delete(sections);
+ list_delete(section_names);
+ list_delete(section_values);
+ return 0;
}
/******************************************************************************/
int APP_CC
-xrdp_login_wnd_create(struct xrdp_wm* self)
+xrdp_login_wnd_create(struct xrdp_wm *self)
{
- struct xrdp_bitmap* but;
- struct xrdp_bitmap* combo;
- char file_path[256];
- int log_width;
- int log_height;
- int regular;
-
- log_width = DEFAULT_WND_LOGIN_W;
- log_height = DEFAULT_WND_LOGIN_H;
- regular = 1;
- if (self->screen->width < log_width)
- {
- if (self->screen->width < 240)
- {
- log_width = self->screen->width - 4;
- }
- else
- {
- log_width = 240;
- }
- regular = 0;
- }
- /* draw login window */
- self->login_window = xrdp_bitmap_create(log_width, log_height, self->screen->bpp,
- WND_TYPE_WND, self);
- list_add_item(self->screen->child_list, (long)self->login_window);
- self->login_window->parent = self->screen;
- self->login_window->owner = self->screen;
- self->login_window->bg_color = self->grey;
- self->login_window->left = self->screen->width / 2 -
- self->login_window->width / 2;
- self->login_window->top = self->screen->height / 2 -
- self->login_window->height / 2;
- self->login_window->notify = xrdp_wm_login_notify;
- set_string(&self->login_window->caption1, "Login to xrdp");
- if (regular)
- {
- /* image */
- but = xrdp_bitmap_create(4, 4, self->screen->bpp, WND_TYPE_IMAGE, self);
- if (self->screen->bpp > 8)
- {
- g_snprintf(file_path, 255, "%s/xrdp24b.bmp", XRDP_SHARE_PATH);
- }
- else
+ struct xrdp_bitmap *but;
+ struct xrdp_bitmap *combo;
+ char file_path[256];
+ int log_width;
+ int log_height;
+ int regular;
+
+ log_width = DEFAULT_WND_LOGIN_W;
+ log_height = DEFAULT_WND_LOGIN_H;
+ regular = 1;
+
+ if (self->screen->width < log_width)
{
- g_snprintf(file_path, 255, "%s/xrdp256.bmp", XRDP_SHARE_PATH);
- }
- xrdp_bitmap_load(but, file_path, self->palette);
- but->parent = self->screen;
- but->owner = self->screen;
- but->left = self->screen->width - but->width;
- but->top = self->screen->height - but->height;
- list_add_item(self->screen->child_list, (long)but);
-
- /* image */
- but = xrdp_bitmap_create(4, 4, self->screen->bpp, WND_TYPE_IMAGE, self);
- if (self->screen->bpp > 8)
- {
- g_snprintf(file_path, 255, "%s/ad24b.bmp", XRDP_SHARE_PATH);
+ if (self->screen->width < 240)
+ {
+ log_width = self->screen->width - 4;
+ }
+ else
+ {
+ log_width = 240;
+ }
+
+ regular = 0;
}
- else
+
+ /* draw login window */
+ self->login_window = xrdp_bitmap_create(log_width, log_height, self->screen->bpp,
+ WND_TYPE_WND, self);
+ list_add_item(self->screen->child_list, (long)self->login_window);
+ self->login_window->parent = self->screen;
+ self->login_window->owner = self->screen;
+ self->login_window->bg_color = self->grey;
+ self->login_window->left = self->screen->width / 2 -
+ self->login_window->width / 2;
+ self->login_window->top = self->screen->height / 2 -
+ self->login_window->height / 2;
+ self->login_window->notify = xrdp_wm_login_notify;
+ set_string(&self->login_window->caption1, "Login to xrdp");
+
+ if (regular)
{
- g_snprintf(file_path, 255, "%s/ad256.bmp", XRDP_SHARE_PATH);
+ /* image */
+ but = xrdp_bitmap_create(4, 4, self->screen->bpp, WND_TYPE_IMAGE, self);
+
+ if (self->screen->bpp > 8)
+ {
+ g_snprintf(file_path, 255, "%s/xrdp24b.bmp", XRDP_SHARE_PATH);
+ }
+ else
+ {
+ g_snprintf(file_path, 255, "%s/xrdp256.bmp", XRDP_SHARE_PATH);
+ }
+
+ xrdp_bitmap_load(but, file_path, self->palette);
+ but->parent = self->screen;
+ but->owner = self->screen;
+ but->left = self->screen->width - but->width;
+ but->top = self->screen->height - but->height;
+ list_add_item(self->screen->child_list, (long)but);
+
+ /* image */
+ but = xrdp_bitmap_create(4, 4, self->screen->bpp, WND_TYPE_IMAGE, self);
+
+ if (self->screen->bpp > 8)
+ {
+ g_snprintf(file_path, 255, "%s/ad24b.bmp", XRDP_SHARE_PATH);
+ }
+ else
+ {
+ g_snprintf(file_path, 255, "%s/ad256.bmp", XRDP_SHARE_PATH);
+ }
+
+ xrdp_bitmap_load(but, file_path, self->palette);
+ but->parent = self->login_window;
+ but->owner = self->login_window;
+ but->left = 10;
+ but->top = 30;
+ list_add_item(self->login_window->child_list, (long)but);
}
- xrdp_bitmap_load(but, file_path, self->palette);
+
+ /* label */
+ but = xrdp_bitmap_create(60, DEFAULT_EDIT_H, self->screen->bpp, WND_TYPE_LABEL, self);
+ list_add_item(self->login_window->child_list, (long)but);
but->parent = self->login_window;
but->owner = self->login_window;
- but->left = 10;
- but->top = 30;
+ but->left = regular ? 155 : 5;
+ but->top = DEFAULT_ELEMENT_TOP;
+ set_string(&but->caption1, "Module");
+
+ /* combo */
+ combo = xrdp_bitmap_create(DEFAULT_COMBO_W, DEFAULT_COMBO_H, self->screen->bpp, WND_TYPE_COMBO, self);
+ list_add_item(self->login_window->child_list, (long)combo);
+ combo->parent = self->login_window;
+ combo->owner = self->login_window;
+ combo->left = regular ? DEFAULT_WND_LOGIN_W - DEFAULT_COMBO_W - 30 : 70;
+ combo->top = DEFAULT_ELEMENT_TOP;
+ combo->id = 6;
+ combo->tab_stop = 1;
+ xrdp_wm_login_fill_in_combo(self, combo);
+
+ /* button */
+ but = xrdp_bitmap_create(DEFAULT_BUTTON_W, DEFAULT_BUTTON_H, self->screen->bpp, WND_TYPE_BUTTON, self);
list_add_item(self->login_window->child_list, (long)but);
- }
-
- /* label */
- but = xrdp_bitmap_create(60, DEFAULT_EDIT_H, self->screen->bpp, WND_TYPE_LABEL, self);
- list_add_item(self->login_window->child_list, (long)but);
- but->parent = self->login_window;
- but->owner = self->login_window;
- but->left = regular ? 155 : 5;
- but->top = DEFAULT_ELEMENT_TOP;
- set_string(&but->caption1, "Module");
-
- /* combo */
- combo = xrdp_bitmap_create(DEFAULT_COMBO_W, DEFAULT_COMBO_H, self->screen->bpp, WND_TYPE_COMBO, self);
- list_add_item(self->login_window->child_list, (long)combo);
- combo->parent = self->login_window;
- combo->owner = self->login_window;
- combo->left = regular ? DEFAULT_WND_LOGIN_W - DEFAULT_COMBO_W - 30 : 70;
- combo->top = DEFAULT_ELEMENT_TOP;
- combo->id = 6;
- combo->tab_stop = 1;
- xrdp_wm_login_fill_in_combo(self, combo);
-
- /* button */
- but = xrdp_bitmap_create(DEFAULT_BUTTON_W, DEFAULT_BUTTON_H, self->screen->bpp, WND_TYPE_BUTTON, self);
- list_add_item(self->login_window->child_list, (long)but);
- but->parent = self->login_window;
- but->owner = self->login_window;
- but->left = regular ? DEFAULT_WND_LOGIN_W - ((DEFAULT_BUTTON_W+10)*3) - 10 : 30;
- but->top = DEFAULT_WND_LOGIN_H - DEFAULT_BUTTON_H - 15;
- but->id = 3;
- set_string(&but->caption1, "OK");
- but->tab_stop = 1;
- self->login_window->default_button = but;
-
- /* button */
- but = xrdp_bitmap_create(DEFAULT_BUTTON_W, DEFAULT_BUTTON_H, self->screen->bpp, WND_TYPE_BUTTON, self);
- list_add_item(self->login_window->child_list, (long)but);
- but->parent = self->login_window;
- but->owner = self->login_window;
- but->left = regular ? DEFAULT_WND_LOGIN_W - ((DEFAULT_BUTTON_W+10)*2) - 10 : ((log_width - 30) - DEFAULT_BUTTON_W);
- but->top = DEFAULT_WND_LOGIN_H - DEFAULT_BUTTON_H - 15;
- but->id = 2;
- set_string(&but->caption1, "Cancel");
- but->tab_stop = 1;
- self->login_window->esc_button = but;
-
- if (regular)
- {
+ but->parent = self->login_window;
+ but->owner = self->login_window;
+ but->left = regular ? DEFAULT_WND_LOGIN_W - ((DEFAULT_BUTTON_W + 10) * 3) - 10 : 30;
+ but->top = DEFAULT_WND_LOGIN_H - DEFAULT_BUTTON_H - 15;
+ but->id = 3;
+ set_string(&but->caption1, "OK");
+ but->tab_stop = 1;
+ self->login_window->default_button = but;
+
/* button */
but = xrdp_bitmap_create(DEFAULT_BUTTON_W, DEFAULT_BUTTON_H, self->screen->bpp, WND_TYPE_BUTTON, self);
list_add_item(self->login_window->child_list, (long)but);
but->parent = self->login_window;
but->owner = self->login_window;
- but->left = DEFAULT_WND_LOGIN_W - (DEFAULT_BUTTON_W+10) - 10;
+ but->left = regular ? DEFAULT_WND_LOGIN_W - ((DEFAULT_BUTTON_W + 10) * 2) - 10 : ((log_width - 30) - DEFAULT_BUTTON_W);
but->top = DEFAULT_WND_LOGIN_H - DEFAULT_BUTTON_H - 15;
- but->id = 1;
- set_string(&but->caption1, "Help");
+ but->id = 2;
+ set_string(&but->caption1, "Cancel");
but->tab_stop = 1;
- }
+ self->login_window->esc_button = but;
- /* labels and edits */
- xrdp_wm_show_edits(self, combo);
+ if (regular)
+ {
+ /* button */
+ but = xrdp_bitmap_create(DEFAULT_BUTTON_W, DEFAULT_BUTTON_H, self->screen->bpp, WND_TYPE_BUTTON, self);
+ list_add_item(self->login_window->child_list, (long)but);
+ but->parent = self->login_window;
+ but->owner = self->login_window;
+ but->left = DEFAULT_WND_LOGIN_W - (DEFAULT_BUTTON_W + 10) - 10;
+ but->top = DEFAULT_WND_LOGIN_H - DEFAULT_BUTTON_H - 15;
+ but->id = 1;
+ set_string(&but->caption1, "Help");
+ but->tab_stop = 1;
+ }
- return 0;
+ /* labels and edits */
+ xrdp_wm_show_edits(self, combo);
+
+ return 0;
}