diff options
Diffstat (limited to 'mdkapplet_gui.pm')
-rw-r--r-- | mdkapplet_gui.pm | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/mdkapplet_gui.pm b/mdkapplet_gui.pm index 66131c61..65181e8a 100644 --- a/mdkapplet_gui.pm +++ b/mdkapplet_gui.pm @@ -23,6 +23,7 @@ package mdkapplet_gui; ################################################################################ use strict; +use feature 'state'; use lib qw(/usr/lib/libDrakX); use common; @@ -40,9 +41,13 @@ our @EXPORT = qw( setVar ); +our @EXPORT_OK = qw(run_ask_credentials_dialog); use mygtk2 qw(gtknew); #- do not import gtkadd which conflicts with ugtk2 version use ugtk2 qw(:all); +use mdkonline qw(); # you don't want to polute the namespace +use interactive; +use interactive::gtk; use lib qw(/usr/lib/libDrakX/drakfirsttime); ugtk2::add_icon_path("/usr/share/mdkonline/pixmaps/"); @@ -54,6 +59,12 @@ our $localfile = "$localdir/mdkonline"; mkdir_p($localdir) if !-d $localdir; -e "$ENV{HOME}/.mdkonline" and system("mv", "$ENV{HOME}/.mdkonline", $localfile); +# make it work on 2008.X: +eval { interactive::gtk::add_padding(Gtk2::Label->new) }; +if ($@) { + *interactive::gtk::add_padding = sub { $_[0] }; +} + our %local_config; read_local_config(); @@ -130,3 +141,71 @@ sub iso8601_date_to_locale { POSIX::strftime("%x", 0, 0, 0, $3, $2-1, $1-1900); } +sub run_ask_credentials_dialog { + my ($title, $description, $callback) = @_; + + my $w = new_portable_dialog($title); + my $password_text; + state $email_text; + my $password_w = gtknew('Entry'); + my $email_w = gtknew('Entry', text => $email_text); + my $ok_clicked; + + $password_w->set_visibility(0); + + $w->{ok_clicked} = sub { + $password_text = $password_w->get_text; + $email_text = $email_w->get_text; + $ok_clicked = 1; + Gtk2->main_quit; + }; + + my @widgets = ( + mdkonline::get_banner($title), + gtknew('Label_Left', + text => $description, + @common), + gtknew('HButtonBox', + layout => 'start', + children_tight => [ + interactive::gtk::add_padding( + new_link_button( + 'https://my.mandriva.com/info', + N("More information on your user account") + ) + ) + ]), + gtknew('Table', + col_spacings => 5, + row_spacings => 5, + children => [ [ N("Your email"), $email_w ], + [ N("Your password"), $password_w ] ]), + gtknew('HButtonBox', + layout => 'start', + children_tight => [ + interactive::gtk::add_padding( + new_link_button( + 'https://my.mandriva.com/reset/password/', + N("Forgotten password") + ) + ) + ]), + ugtk2::create_okcancel($w, N("Next"), N("Cancel")), + ); + + fill_n_run_portable_dialog($w, \@widgets); + + if ($ok_clicked) { + $ok_clicked = 0; + if ($email_text && $password_text) { + $callback->($email_text, $password_text); + } + else { + interactive->vnew->ask_warn( + N("Error"), + N("Password and email cannot be empty.") + ); + goto &authentication_dialog; + } + } +} |