~ubuntu-branches/ubuntu/utopic/unity-greeter/utopic

« back to all changes in this revision

Viewing changes to .pc/02_use_remote_login_hint.patch/src/user-list.vala

  • Committer: Package Import Robot
  • Author(s): Michael Terry
  • Date: 2012-09-17 13:31:13 UTC
  • mfrom: (1.1.18)
  • Revision ID: package-import@ubuntu.com-20120917133113-sdfw9yiutq0omdgf
Tags: 12.10.3-0ubuntu1
* New upstream release
  - Rearrange some UI bits (LP: #1049231, LP: #1049235, LP: #1049236,
    LP: #1049239)
  - After a remote login error, do not use cache when trying same user
    again
  - When no users and no manual entry, force manual entry to appear
    (LP: #1044251)
  - When switching between monitors, re-adjust user names (LP: #1043604)
  - Center remote login help dialog
  - Use the xsettings plugin to apply icons-in-menus gsetting
    (LP: #927236)
* debian/unity-greeter.pkla:
  - Fix policykit file to not be order-dependent and spell out the
    NetworkManager permissions instead of using a wildcard.
    LP: #1048522
* debian/control:
  - Add some Build-Depends for new test suite
* debian/patches/01_add_remote_login_help_icon.patch:
  - Drop, remote login help icon is included upstream
* debian/patches/02_use_remote_login_hint.patch:
  - Update to apply again

Show diffs side-by-side

added added

removed removed

Lines of Context:
129
129
 
130
130
        connect_to_lightdm ();
131
131
 
132
 
        if (!UnityGreeter.test_mode && UGSettings.get_boolean (UGSettings.KEY_ENABLE_REMOTE_LOGIN))
 
132
        if (!UnityGreeter.singleton.test_mode && UGSettings.get_boolean (UGSettings.KEY_ENABLE_REMOTE_LOGIN))
133
133
            remote_login_service_watch = Bus.watch_name (BusType.SESSION,
134
134
                                            "com.canonical.RemoteLogin",
135
135
                                            BusNameWatcherFlags.AUTO_START,
304
304
                    remote_login_service.servers_updated.connect (set_remote_directory_servers);
305
305
                    remote_login_service.login_servers_updated.connect (remote_login_servers_updated);
306
306
                    remote_login_service.login_changed.connect (remote_login_changed);
307
 
                    query_directory_servers ();
 
307
                    query_directory_servers.begin ();
308
308
                }
309
309
                catch (IOError e)
310
310
                {
364
364
        {
365
365
            will_clear = true;
366
366
            show_message (_("Please enter a complete e-mail address"), true);
367
 
            create_remote_fields_for_current_item (remote_directory_server_list);
 
367
            create_remote_fields_for_current_item.begin (remote_directory_server_list);
368
368
        }
369
369
        else
370
370
        {
372
372
            try
373
373
            {
374
374
                var url = url_from_remote_loding_server_list_name (selected_entry.id);
375
 
                if (UnityGreeter.test_mode)
 
375
                if (UnityGreeter.singleton.test_mode)
376
376
                {
377
377
                    if (password_field.text == "password")
378
378
                    {
401
401
                else
402
402
                {
403
403
                    string data_type;
404
 
                    yield remote_login_service.get_servers_for_login (url, email, password_field.text, true, out login_success, out data_type, out server_list);
 
404
                    bool allowcache = true;
 
405
                    // If we had an error and are retrying the same user and server, do not use the cache on R-L-S
 
406
                    if (selected_entry.has_errors && currently_browsing_server_email == email && currently_browsing_server_url == url)
 
407
                        allowcache = false;
 
408
                    yield remote_login_service.get_servers_for_login (url, email, password_field.text, allowcache, out login_success, out data_type, out server_list);
405
409
                }
406
410
                currently_browsing_server_url = url;
407
411
                currently_browsing_server_email = email;
435
439
            {
436
440
                will_clear = true;
437
441
                show_message (_("Incorrect e-mail address or password"), true);
438
 
                create_remote_fields_for_current_item (remote_directory_server_list);
 
442
                create_remote_fields_for_current_item.begin (remote_directory_server_list);
439
443
            }
440
444
        }
441
445
    }
445
449
        sensitive = false;
446
450
        will_clear = true;
447
451
        greeter_authenticating_user = selected_entry.id;
448
 
        if (UnityGreeter.test_mode)
 
452
        if (UnityGreeter.singleton.test_mode)
449
453
        {
450
454
            Gtk.Entry field = current_remote_fields.get ("password") as Gtk.Entry;
451
455
            test_is_authenticated = field.text == "password";
456
460
        }
457
461
        else
458
462
        {
459
 
            UnityGreeter.greeter.authenticate_remote (get_lightdm_session (), null);
460
 
            remote_login_service.set_last_used_server (currently_browsing_server_url, url_from_remote_loding_server_list_name (selected_entry.id));
 
463
            UnityGreeter.singleton.authenticate_remote (get_lightdm_session (), null);
 
464
            remote_login_service.set_last_used_server.begin (currently_browsing_server_url, url_from_remote_loding_server_list_name (selected_entry.id));
461
465
        }
462
466
    }
463
467
 
464
468
    private void show_remote_account_dialog ()
465
469
    {
466
470
        var dialog = new Gtk.MessageDialog (null, 0, Gtk.MessageType.OTHER, Gtk.ButtonsType.NONE, "");
 
471
        dialog.set_position (Gtk.WindowPosition.CENTER_ALWAYS);
467
472
        dialog.secondary_text = _("If you have an account on an RDP or Citrix server, Remote Login lets you run applications from that server.");
468
473
        if (offer_guest)
469
474
        {
487
492
                if (is_supported_remote_session (config_session))
488
493
                {
489
494
                    greeter_authenticating_user = selected_entry.id;
490
 
                    UnityGreeter.greeter.authenticate_remote (config_session, null);
 
495
                    UnityGreeter.singleton.authenticate_remote (config_session, null);
491
496
                }
492
497
            }
493
498
            dialog.destroy ();
546
551
 
547
552
    private void entry_selected_cb (string? username)
548
553
    {
549
 
        UnityGreeter.set_state ("last-user", username);
 
554
        UnityGreeter.singleton.set_state ("last-user", username);
550
555
        if (selected_entry is UserPromptBox)
551
556
            session = (selected_entry as UserPromptBox).session;
552
557
        else
566
571
        if (selected_entry.id.has_prefix ("*remote_directory"))
567
572
        {
568
573
            prompted = true;
569
 
            create_remote_fields_for_current_item (remote_directory_server_list);
 
574
            create_remote_fields_for_current_item.begin (remote_directory_server_list);
570
575
        }
571
576
        else if (selected_entry.id.has_prefix ("*remote_login"))
572
577
        {
573
578
            prompted = true;
574
 
            create_remote_fields_for_current_item (remote_login_server_list);
 
579
            create_remote_fields_for_current_item.begin (remote_login_server_list);
575
580
        }
576
581
        else
577
582
            base.start_authentication ();
680
685
                        string[] email_domains;
681
686
                        try
682
687
                        {
683
 
                            if (UnityGreeter.test_mode)
 
688
                            if (UnityGreeter.singleton.test_mode)
684
689
                                email_domains = { "canonical.com", "ubuntu.org", "candy.com", "urban.net" };
685
690
                            else
686
691
                                yield remote_login_service.get_cached_domains_for_server (url, out email_domains);
791
796
 
792
797
        foreach (var response in responses)
793
798
        {
794
 
            if (UnityGreeter.test_mode)
 
799
            if (UnityGreeter.singleton.test_mode)
795
800
                test_respond (response);
796
801
            else
797
 
                UnityGreeter.greeter.respond (response);
 
802
                UnityGreeter.singleton.respond (response);
798
803
        }
799
804
    }
800
805
 
803
808
        debug ("Start session for %s", selected_entry.id);
804
809
 
805
810
        var is_authenticated = false;
806
 
        if (UnityGreeter.test_mode)
 
811
        if (UnityGreeter.singleton.test_mode)
807
812
            is_authenticated = test_is_authenticated;
808
813
        else
809
 
            is_authenticated = UnityGreeter.greeter.is_authenticated;
 
814
            is_authenticated = UnityGreeter.singleton.is_authenticated();
810
815
 
811
816
        /* Finish authentication (again) or restart it */
812
817
        if (is_authenticated)
822
827
    {
823
828
        var session_chooser = new SessionList (background, menubar, session, default_session);
824
829
        session_chooser.session_clicked.connect (session_clicked_cb);
825
 
        UnityGreeter.push_list (session_chooser);
 
830
        UnityGreeter.singleton.push_list (session_chooser);
826
831
    }
827
832
 
828
833
    private void session_clicked_cb (string session)
829
834
    {
830
835
        this.session = session;
831
 
        UnityGreeter.pop_list ();
 
836
        UnityGreeter.singleton.pop_list ();
 
837
    }
 
838
 
 
839
    private bool should_show_session_badge ()
 
840
    {
 
841
        if (UnityGreeter.singleton.test_mode)
 
842
            return get_selected_id () != "no-badge";
 
843
        else
 
844
            return LightDM.get_sessions ().length () > 1;
832
845
    }
833
846
 
834
847
    private Gdk.Pixbuf? get_badge ()
835
848
    {
836
849
        if (selected_entry is UserPromptBox)
837
850
        {
838
 
            if (session == null)
 
851
            if (!should_show_session_badge ())
 
852
                return null;
 
853
            else if (session == null)
839
854
                return SessionList.get_badge (default_session);
840
855
            else
841
856
                return SessionList.get_badge (session);
851
866
 
852
867
    private bool is_supported_remote_session (string session_internal_name)
853
868
    {
854
 
        if (UnityGreeter.test_mode)
 
869
        if (UnityGreeter.singleton.test_mode)
855
870
            return session_internal_name == "rdp";
856
871
 
857
872
        var found = false;
893
908
 
894
909
    private void fill_list ()
895
910
    {
896
 
        if (UnityGreeter.test_mode)
 
911
        if (UnityGreeter.singleton.test_mode)
897
912
            test_fill_list ();
898
913
        else
899
914
        {
900
 
            default_session = UnityGreeter.greeter.default_session_hint;
901
 
            always_show_manual = UnityGreeter.greeter.show_manual_login_hint;
902
 
            if (!UnityGreeter.greeter.hide_users_hint)
 
915
            default_session = UnityGreeter.singleton.default_session_hint ();
 
916
            always_show_manual = UnityGreeter.singleton.show_manual_login_hint ();
 
917
            if (!UnityGreeter.singleton.hide_users_hint ())
903
918
            {
904
919
                var users = LightDM.UserList.get_instance ();
905
920
                users.user_added.connect (user_added_cb);
909
924
                    user_added_cb (user);
910
925
            }
911
926
 
912
 
            if (UnityGreeter.greeter.has_guest_account_hint)
 
927
            if (UnityGreeter.singleton.has_guest_account_hint ())
913
928
            {
914
929
                debug ("Adding guest account entry");
915
930
                offer_guest = true;
916
931
            }
917
932
 
918
 
            var last_user = UnityGreeter.get_state ("last-user");
919
 
            if (UnityGreeter.greeter.select_user_hint != null)
920
 
                set_active_entry (UnityGreeter.greeter.select_user_hint);
 
933
            /* If we have no entries at all, we should show manual */
 
934
            if (!have_entries () && !always_show_manual)
 
935
                add_manual_entry ();
 
936
 
 
937
            var last_user = UnityGreeter.singleton.get_state ("last-user");
 
938
            if (UnityGreeter.singleton.select_user_hint () != null)
 
939
                set_active_entry (UnityGreeter.singleton.select_user_hint ());
921
940
            else if (last_user != null)
922
941
                set_active_entry (last_user);
923
942
        }
956
975
            {
957
976
                Gtk.Entry field = current_remote_fields.get ("username") as Gtk.Entry;
958
977
                var answer = field != null ? field.text : "";
959
 
                UnityGreeter.greeter.respond (answer);
 
978
                UnityGreeter.singleton.respond (answer);
960
979
            }
961
980
            else if (text == "password:")
962
981
            {
963
982
                Gtk.Entry field = current_remote_fields.get ("password") as Gtk.Entry;
964
983
                var answer = field != null ? field.text : "";
965
 
                UnityGreeter.greeter.respond (answer);
 
984
                UnityGreeter.singleton.respond (answer);
966
985
            }
967
986
            else if (text == "remote host:")
968
987
            {
969
988
                var answer = url_from_remote_loding_server_list_name (selected_entry.id);
970
 
                UnityGreeter.greeter.respond (answer);
 
989
                UnityGreeter.singleton.respond (answer);
971
990
            }
972
991
            else if (text == "domain:")
973
992
            {
974
993
                Gtk.Entry field = current_remote_fields.get ("domain") as Gtk.Entry;
975
994
                var answer = field != null ? field.text : "";
976
 
                UnityGreeter.greeter.respond (answer);
 
995
                UnityGreeter.singleton.respond (answer);
977
996
            }
978
997
        }
979
998
        else
1021
1040
        { "four-layouts",       "Four Layouts",      "*",              "de\tdvorak;ca;gb;fr\toss", false, false, null },
1022
1041
        { "hy-layout",          "Layout Is 'hy'",    "*",              "am\teastern-alt", false, false, null }, /* inherits parent layout's short_desc */
1023
1042
        { "no-response",        "No Response",       "*",              null,    false, false, null },
 
1043
        { "no-badge",           "No Badge",          "*",              null,    false, false, null },
1024
1044
        { "",                   "",                  null,             null,    false, false, null }
1025
1045
    };
1026
1046
    private List<string> test_backgrounds;
1074
1094
            return false;
1075
1095
        });
1076
1096
 
1077
 
        var last_user = UnityGreeter.get_state ("last-user");
 
1097
        var last_user = UnityGreeter.singleton.get_state ("last-user");
1078
1098
        if (last_user != null)
1079
1099
            set_active_entry (last_user);
1080
1100