1
/* Copyright 2016 Software Freedom Conservancy Inc.
3
* This software is licensed under the GNU Lesser General Public License
4
* (version 2.1 or later). See the COPYING file in this distribution.
7
// A custom entry for e-mail addresses
8
public class EmailEntry : Gtk.Entry {
9
// Whether this entry contains a valid email address
10
public bool valid { get; set; default = false; }
12
public bool empty { get; set; default = true; }
14
public bool modified = false;
16
// null or valid addresses
17
public Geary.RFC822.MailboxAddresses? addresses { get; set; default = null; }
19
private weak ComposerWidget composer;
21
private bool updating = false;
23
public EmailEntry(ComposerWidget composer) {
24
changed.connect(on_changed);
25
key_press_event.connect(on_key_press);
26
this.composer = composer;
28
notify["addresses"].connect(() => {
35
text = (addresses == null) ? "" : addresses.to_full_display();
42
private void on_changed() {
47
ContactEntryCompletion? completion = get_completion() as ContactEntryCompletion;
48
if (completion != null) {
49
completion.reset_selection();
52
if (Geary.String.is_empty(text.strip())) {
62
addresses = new Geary.RFC822.MailboxAddresses.from_rfc822_string(text);
66
private void validate_addresses() {
67
if (addresses == null || addresses.size == 0) {
74
foreach (Geary.RFC822.MailboxAddress address in addresses) {
75
if (!address.is_valid()) {
83
private bool on_key_press(Gtk.Widget widget, Gdk.EventKey event) {
84
if (event.keyval == Gdk.Key.Tab) {
85
((ContactEntryCompletion) get_completion()).trigger_selection();
86
composer.child_focus(Gtk.DirectionType.TAB_FORWARD);