#include "Empower.h"

void display_window(int argc, char** argv)
{	
	if(!ewl_init(&argc, argv))
	{
		printf("Unable to init ewl\n");
		return;
	}
	
	Ewl_Widget *entry = NULL;
	Ewl_Widget *ok_button = NULL;
	Ewl_Widget *cancel_button = NULL;
	Ewl_Widget *progtext = NULL;
	Ewl_Widget *vbox = NULL, *hbox = NULL;
	Ewl_Widget *image = NULL;
	uid_t user;
	struct passwd *user_name;
	char username[256];
	
	user = getuid();
	if ((user_name = getpwuid(user)) != NULL)
		snprintf(username, 256, "%s's password", user_name->pw_name);
	else
		snprintf(username, 256, "Your Password");
	
	win = ewl_dialog_new();
	ewl_window_title_set(EWL_WINDOW(win), "Empower!");
	ewl_window_name_set(EWL_WINDOW(win), "Empower!");
	ewl_window_class_set(EWL_WINDOW(win), "Empower!");
	ewl_window_dialog_set(EWL_WINDOW(win), 1);
	ewl_window_keyboard_grab_set(EWL_WINDOW(win), 1);
	ewl_callback_append(win, EWL_CALLBACK_DELETE_WINDOW, destroy_cb, NULL);
	ewl_callback_prepend(win, EWL_CALLBACK_REVEAL, reveal_cb, NULL);
	ewl_callback_append(win, EWL_CALLBACK_KEY_DOWN, key_down_cb, NULL);
	ewl_widget_show(win);
	
	ewl_dialog_active_area_set(EWL_DIALOG(win), EWL_POSITION_TOP);

	hbox = ewl_hbox_new();
	ewl_container_child_append(EWL_CONTAINER(win), hbox);
	ewl_object_alignment_set(EWL_OBJECT(hbox), EWL_FLAG_ALIGN_CENTER);
	ewl_object_padding_set(EWL_OBJECT(hbox), 15, 15, 15, 5);
	ewl_widget_show(hbox);

	image = ewl_image_new();
	ewl_image_file_set(EWL_IMAGE(image), 
		ewl_icon_theme_icon_path_get(EWL_ICON_SYSTEM_LOCK_SCREEN, 46), 
		EWL_ICON_SYSTEM_LOCK_SCREEN);
	ewl_container_child_append(EWL_CONTAINER(hbox), image);
	ewl_object_padding_set(EWL_OBJECT(image), 5, 20, 0, 0);
	ewl_widget_show(image);

	vbox = ewl_vbox_new();
	ewl_container_child_append(EWL_CONTAINER(hbox), vbox);
	ewl_object_fill_policy_set(EWL_OBJECT(vbox), EWL_FLAG_FILL_HFILL);
	ewl_widget_show(vbox);

	progtext = ewl_text_new();
	ewl_container_child_append(EWL_CONTAINER(vbox), progtext);
	ewl_text_font_size_set(EWL_TEXT(progtext), 12);
	ewl_object_alignment_set(EWL_OBJECT(progtext), EWL_FLAG_ALIGN_CENTER);
	ewl_object_fill_policy_set(EWL_OBJECT(progtext), EWL_FLAG_FILL_NONE);
	ewl_text_text_set(EWL_TEXT(progtext), username);
	ewl_widget_show(progtext);
	
	entry = ewl_password_new();
	ewl_container_child_append(EWL_CONTAINER(vbox), entry);
	ewl_callback_append(entry, EWL_CALLBACK_VALUE_CHANGED, pipe_to_sudo_cb, 
					    entry);
	ewl_widget_focus_send(entry);
	ewl_widget_show(entry);

	ewl_dialog_active_area_set(EWL_DIALOG(win), EWL_POSITION_BOTTOM);

	ok_button = ewl_button_new();
	ewl_stock_type_set(EWL_STOCK(ok_button), EWL_STOCK_OK);
	ewl_object_fill_policy_set(EWL_OBJECT(ok_button), EWL_FLAG_FILL_NONE
					| EWL_FLAG_FILL_HFILL);
	ewl_container_child_append(EWL_CONTAINER(win), ok_button);
	ewl_callback_append(ok_button, EWL_CALLBACK_CLICKED, pipe_to_sudo_cb, 
	                    entry);
	ewl_widget_show(ok_button);
	
	cancel_button = ewl_button_new();
	ewl_stock_type_set(EWL_STOCK(cancel_button), EWL_STOCK_CANCEL);
	ewl_object_fill_policy_set(EWL_OBJECT(cancel_button), 
	                           EWL_FLAG_FILL_NONE | EWL_FLAG_FILL_HFILL);
	ewl_container_child_append(EWL_CONTAINER(win), cancel_button);
	ewl_callback_append(cancel_button, EWL_CALLBACK_CLICKED, destroy_cb, 
				NULL);
	ewl_widget_show(cancel_button);
	
	ewl_main();	
}


syntax highlighted by Code2HTML, v. 0.9.1