From 666a8290b0434e34ecf0e3a86ea3c627024f8b71 Mon Sep 17 00:00:00 2001 From: Pierre Pronchery Date: Sun, 10 Feb 2013 03:01:35 +0100 Subject: [PATCH] Added an interface to change passwords (not functional yet) --- Makefile | 1 + src/plugins/Makefile | 16 +++- src/plugins/password.c | 171 +++++++++++++++++++++++++++++++++++++++ src/plugins/project.conf | 9 ++- 4 files changed, 193 insertions(+), 4 deletions(-) create mode 100644 src/plugins/password.c diff --git a/Makefile b/Makefile index 05a0171..d7699da 100644 --- a/Makefile +++ b/Makefile @@ -104,6 +104,7 @@ dist: $(PACKAGE)-$(VERSION)/src/plugins/openmoko.c \ $(PACKAGE)-$(VERSION)/src/plugins/oss.c \ $(PACKAGE)-$(VERSION)/src/plugins/panel.c \ + $(PACKAGE)-$(VERSION)/src/plugins/password.c \ $(PACKAGE)-$(VERSION)/src/plugins/profiles.c \ $(PACKAGE)-$(VERSION)/src/plugins/smscrypt.c \ $(PACKAGE)-$(VERSION)/src/plugins/systray.c \ diff --git a/src/plugins/Makefile b/src/plugins/Makefile index b32b575..4a724f9 100644 --- a/src/plugins/Makefile +++ b/src/plugins/Makefile @@ -1,5 +1,5 @@ SUBDIRS = 16x16 24x24 32x32 48x48 -TARGETS = blacklist.so debug.so engineering.so gprs.so gps.so locker.so n900.so notify.so openmoko.so oss.so panel.so profiles.so smscrypt.so systray.so template.so ussd.so video.so +TARGETS = blacklist.so debug.so engineering.so gprs.so gps.so locker.so n900.so notify.so openmoko.so oss.so panel.so password.so profiles.so smscrypt.so systray.so template.so ussd.so video.so PREFIX = /usr/local DESTDIR = LIBDIR = $(PREFIX)/lib @@ -99,6 +99,13 @@ panel_LDFLAGS = $(LDFLAGSF) $(LDFLAGS) `pkg-config --libs libDesktop` panel.so: $(panel_OBJS) $(CCSHARED) -o panel.so $(panel_OBJS) $(panel_LDFLAGS) +password_OBJS = password.o +password_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CFLAGSF) $(CFLAGS) +password_LDFLAGS = $(LDFLAGSF) $(LDFLAGS) + +password.so: $(password_OBJS) + $(CCSHARED) -o password.so $(password_OBJS) $(password_LDFLAGS) + profiles_OBJS = profiles.o profiles_CFLAGS = $(CPPFLAGSF) $(CPPFLAGS) $(CFLAGSF) $(CFLAGS) `pkg-config --cflags libpulse` profiles_LDFLAGS = $(LDFLAGSF) $(LDFLAGS) `pkg-config --libs libpulse` @@ -174,6 +181,9 @@ oss.o: oss.c ../../include/Phone.h panel.o: panel.c ../../include/Phone.h $(CC) $(panel_CFLAGS) -c panel.c +password.o: password.c ../../include/Phone.h + $(CC) $(password_CFLAGS) -c password.c + profiles.o: profiles.c ../../include/Phone.h $(CC) $(profiles_CFLAGS) -c profiles.c @@ -194,11 +204,11 @@ video.o: video.c ../../include/Phone.h clean: @for i in $(SUBDIRS); do (cd $$i && $(MAKE) clean) || exit; done - $(RM) -- $(blacklist_OBJS) $(debug_OBJS) $(engineering_OBJS) $(gprs_OBJS) $(gps_OBJS) $(locker_OBJS) $(n900_OBJS) $(notify_OBJS) $(openmoko_OBJS) $(oss_OBJS) $(panel_OBJS) $(profiles_OBJS) $(smscrypt_OBJS) $(systray_OBJS) $(template_OBJS) $(ussd_OBJS) $(video_OBJS) + $(RM) -- $(blacklist_OBJS) $(debug_OBJS) $(engineering_OBJS) $(gprs_OBJS) $(gps_OBJS) $(locker_OBJS) $(n900_OBJS) $(notify_OBJS) $(openmoko_OBJS) $(oss_OBJS) $(panel_OBJS) $(password_OBJS) $(profiles_OBJS) $(smscrypt_OBJS) $(systray_OBJS) $(template_OBJS) $(ussd_OBJS) $(video_OBJS) distclean: @for i in $(SUBDIRS); do (cd $$i && $(MAKE) distclean) || exit; done - $(RM) -- $(blacklist_OBJS) $(debug_OBJS) $(engineering_OBJS) $(gprs_OBJS) $(gps_OBJS) $(locker_OBJS) $(n900_OBJS) $(notify_OBJS) $(openmoko_OBJS) $(oss_OBJS) $(panel_OBJS) $(profiles_OBJS) $(smscrypt_OBJS) $(systray_OBJS) $(template_OBJS) $(ussd_OBJS) $(video_OBJS) + $(RM) -- $(blacklist_OBJS) $(debug_OBJS) $(engineering_OBJS) $(gprs_OBJS) $(gps_OBJS) $(locker_OBJS) $(n900_OBJS) $(notify_OBJS) $(openmoko_OBJS) $(oss_OBJS) $(panel_OBJS) $(password_OBJS) $(profiles_OBJS) $(smscrypt_OBJS) $(systray_OBJS) $(template_OBJS) $(ussd_OBJS) $(video_OBJS) $(RM) -- $(TARGETS) install: $(TARGETS) diff --git a/src/plugins/password.c b/src/plugins/password.c new file mode 100644 index 0000000..cc8b04d --- /dev/null +++ b/src/plugins/password.c @@ -0,0 +1,171 @@ +/* $Id$ */ +/* Copyright (c) 2013 Pierre Pronchery */ +/* This file is part of DeforaOS Desktop Phone */ +/* 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, version 3 of the License. + * + * 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, see . */ + + + +#include +#include +#include "Phone.h" + + +/* Password */ +/* private */ +/* types */ +typedef struct _PhonePlugin +{ + PhonePluginHelper * helper; + + /* password */ + GtkWidget * window; + GtkWidget * entry; + GtkWidget * oldpassword; + GtkWidget * newpassword; +} PasswordPhonePlugin; + + +/* prototypes */ +/* plug-in */ +static PasswordPhonePlugin * _password_init(PhonePluginHelper * helper); +static void _password_destroy(PasswordPhonePlugin * password); +static int _password_event(PasswordPhonePlugin * password, PhoneEvent * event); +static void _password_settings(PasswordPhonePlugin * password); + + +/* public */ +/* variables */ +PhonePluginDefinition plugin = +{ + "Password", + "stock_lock", + NULL, + _password_init, + _password_destroy, + _password_event, + _password_settings +}; + + +/* private */ +/* functions */ +/* password_init */ +static PasswordPhonePlugin * _password_init(PhonePluginHelper * helper) +{ + PasswordPhonePlugin * password; + + if((password = object_new(sizeof(*password))) == NULL) + return NULL; + password->helper = helper; + password->window = NULL; + return password; +} + + +/* password_destroy */ +static void _password_destroy(PasswordPhonePlugin * password) +{ + object_delete(password); +} + + +/* password_event */ +static int _password_event(PasswordPhonePlugin * password, PhoneEvent * event) +{ + switch(event->type) + { + default: + break; + } + return 0; +} + + +/* password_settings */ +static gboolean _on_settings_closex(gpointer data); + +static void _password_settings(PasswordPhonePlugin * password) +{ + GtkSizeGroup * group; + GtkWidget * vbox; + GtkWidget * hbox; + GtkWidget * widget; + + if(password->window != NULL) + { + gtk_window_present(GTK_WINDOW(password->window)); + return; + } + group = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); + password->window = gtk_window_new(GTK_WINDOW_TOPLEVEL); + gtk_container_set_border_width(GTK_CONTAINER(password->window), 4); + gtk_window_set_default_size(GTK_WINDOW(password->window), 200, 300); +#if GTK_CHECK_VERSION(2, 6, 0) + /* XXX find something more appropriate */ + gtk_window_set_icon_name(GTK_WINDOW(password->window), "stock_lock"); +#endif + gtk_window_set_title(GTK_WINDOW(password->window), "Password"); + g_signal_connect_swapped(password->window, "delete-event", G_CALLBACK( + _on_settings_closex), password); + vbox = gtk_vbox_new(FALSE, 4); + /* entry */ + hbox = gtk_hbox_new(FALSE, 0); + widget = gtk_label_new("Name: "); + gtk_misc_set_alignment(GTK_MISC(widget), 0.0, 0.5); + gtk_size_group_add_widget(group, widget); + gtk_box_pack_start(GTK_BOX(hbox), widget, FALSE, TRUE, 0); + password->entry = gtk_entry_new(); + gtk_box_pack_start(GTK_BOX(hbox), password->entry, TRUE, TRUE, 0); + gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, TRUE, 0); + /* old password */ + hbox = gtk_hbox_new(FALSE, 0); + widget = gtk_label_new("Old password: "); + gtk_misc_set_alignment(GTK_MISC(widget), 0.0, 0.5); + gtk_size_group_add_widget(group, widget); + gtk_box_pack_start(GTK_BOX(hbox), widget, FALSE, TRUE, 0); + password->oldpassword = gtk_entry_new(); + gtk_entry_set_visibility(GTK_ENTRY(password->oldpassword), FALSE); + gtk_box_pack_start(GTK_BOX(hbox), password->oldpassword, TRUE, TRUE, 0); + gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, TRUE, 0); + /* new password */ + hbox = gtk_hbox_new(FALSE, 0); + widget = gtk_label_new("New password: "); + gtk_misc_set_alignment(GTK_MISC(widget), 0.0, 0.5); + gtk_size_group_add_widget(group, widget); + gtk_box_pack_start(GTK_BOX(hbox), widget, FALSE, TRUE, 0); + password->newpassword = gtk_entry_new(); + gtk_entry_set_visibility(GTK_ENTRY(password->newpassword), FALSE); + gtk_box_pack_start(GTK_BOX(hbox), password->newpassword, TRUE, TRUE, 0); + gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, TRUE, 0); + /* buttons */ + hbox = gtk_hbutton_box_new(); + gtk_button_box_set_layout(GTK_BUTTON_BOX(hbox), GTK_BUTTONBOX_END); + gtk_button_box_set_spacing(GTK_BUTTON_BOX(hbox), 4); + widget = gtk_button_new_from_stock(GTK_STOCK_CANCEL); + /* FIXME implement the callback */ + gtk_container_add(GTK_CONTAINER(hbox), widget); + widget = gtk_button_new_from_stock(GTK_STOCK_OK); + /* FIXME implement the callback */ + gtk_container_add(GTK_CONTAINER(hbox), widget); + gtk_box_pack_end(GTK_BOX(vbox), hbox, FALSE, TRUE, 0); + gtk_container_add(GTK_CONTAINER(password->window), vbox); + gtk_widget_show_all(password->window); +} + +static gboolean _on_settings_closex(gpointer data) +{ + PasswordPhonePlugin * password = data; + + gtk_widget_hide(password->window); + return TRUE; +} diff --git a/src/plugins/project.conf b/src/plugins/project.conf index 391f17a..d3b17d3 100644 --- a/src/plugins/project.conf +++ b/src/plugins/project.conf @@ -1,5 +1,5 @@ subdirs=16x16,24x24,32x32,48x48 -targets=blacklist,debug,engineering,gprs,gps,locker,n900,notify,openmoko,oss,panel,profiles,smscrypt,systray,template,ussd,video +targets=blacklist,debug,engineering,gprs,gps,locker,n900,notify,openmoko,oss,panel,password,profiles,smscrypt,systray,template,ussd,video cppflags_force=-I ../../include cppflags= cflags_force=-W `pkg-config --cflags libSystem gtk+-2.0` @@ -101,6 +101,13 @@ install=$(LIBDIR)/Phone/plugins [panel.c] depends=../../include/Phone.h +[password] +type=plugin +sources=password.c + +[password.c] +depends=../../include/Phone.h + [profiles] type=plugin sources=profiles.c