summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--data/ui/style.css13
-rw-r--r--src/contacts-editor-property.vala48
2 files changed, 28 insertions, 33 deletions
diff --git a/data/ui/style.css b/data/ui/style.css
index 4e1c971..63be3c8 100644
--- a/data/ui/style.css
+++ b/data/ui/style.css
@@ -74,14 +74,6 @@ flowboxchild.circular {
margin: 12px 12px;
}
- .contacts-editor-property entry.contacts-editor-main-widget image {
- margin: 9px 12px;
- }
-
- .contacts-editor-property entry.contacts-editor-main-widget {
- padding: 4px 6px 4px 0; /* left padding is for the icon */
- }
-
.contacts-editor-property button.contacts-editor-main-widget {
padding: 10px 0;
}
@@ -92,11 +84,6 @@ flowboxchild.circular {
padding-bottom: 6px;
}
- .contacts-editor-address entry,
- .contacts-editor-role entry {
- padding: 6px 3px;
- }
-
/* Widget to edit a birthday (_not_ the row itself) */
.contacts-editor-birthday {
margin: 12px;
diff --git a/src/contacts-editor-property.vala b/src/contacts-editor-property.vala
index 3e0ea78..fe6aed6 100644
--- a/src/contacts-editor-property.vala
+++ b/src/contacts-editor-property.vala
@@ -17,6 +17,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+using Adw;
using Folks;
public class Contacts.BirthdayEditor : Gtk.Dialog {
@@ -339,30 +340,37 @@ public class Contacts.EditorPropertyRow : Adw.Bin {
}
/**
- * Wrapper around set_main_widget() with some extra styling for GtkEntries,
- * as well as making sure the "is-empty" property is updated.
+ * An alternative to set_main_widget() that creates and adds an AdwEntryRow
+ * to the list, and makes sure the "is-empty" property is updated.
*/
- public Gtk.Entry set_main_entry (string text, string? placeholder = null) {
- var entry = new Gtk.Entry ();
- entry.text = text;
- entry.placeholder_text = placeholder;
- entry.add_css_class ("flat");
-
- // Set the icon as part of the GtkEntry, to avoid it being outside of the
- // margin
+ public Adw.EntryRow set_main_entry_row(string text, string? placeholder = null) {
+ var row = new Adw.EntryRow();
+ row.title = placeholder;
+ row.text = text;
+
unowned var icon_name = Utils.get_icon_name_for_property (this.ptype);
if (icon_name != null) {
- entry.primary_icon_name = icon_name;
- entry.primary_icon_tooltip_text = Utils.get_display_name_for_property (this.ptype);
+ row.add_prefix(new Gtk.Image.from_icon_name (icon_name));
+ }
+
+ if (this.removable) {
+ var delete_button = new Gtk.Button.from_icon_name ("user-trash-symbolic");
+ delete_button.tooltip_text = _("Delete field");
+ this.bind_property ("is-empty", delete_button, "sensitive", BindingFlags.SYNC_CREATE | BindingFlags.INVERT_BOOLEAN);
+
+ delete_button.clicked.connect ((b) => { this.remove (); });
+
+ row.add_suffix (delete_button);
}
- this.set_main_widget (entry, false);
this.is_empty = (text == "");
- entry.changed.connect (() => {
- this.is_empty = (entry.text == "");
+ row.changed.connect (() => {
+ this.is_empty = (row.text == "");
});
- return entry;
+ this.listbox.append (row);
+
+ return row;
}
// Adds an extra row for a type combo, to choose between e.g. "Home" or "Work"
@@ -526,7 +534,7 @@ public class Contacts.EditorProperty : Object, ListModel {
var box = new EditorPropertyRow ("email-addresses");
box.sensitive = this.writeable;
- var entry = box.set_main_entry (details.value, _("Add email"));
+ var entry = box.set_main_entry_row (details.value, _("Add email"));
entry.set_input_purpose (Gtk.InputPurpose.EMAIL);
entry.changed.connect (() => {
details.value = entry.get_text ();
@@ -553,7 +561,7 @@ public class Contacts.EditorProperty : Object, ListModel {
var box = new EditorPropertyRow ("phone-numbers");
box.sensitive = this.writeable;
- var entry = box.set_main_entry (details.value, _("Add phone number"));
+ var entry = box.set_main_entry_row (details.value, _("Add phone number"));
entry.set_input_purpose (Gtk.InputPurpose.PHONE);
entry.changed.connect (() => {
details.value = entry.text;
@@ -581,7 +589,7 @@ public class Contacts.EditorProperty : Object, ListModel {
var box = new EditorPropertyRow ("urls");
box.sensitive = this.writeable;
- var entry = box.set_main_entry (details.value, _("https://example.com"));
+ var entry = box.set_main_entry_row (details.value, _("https://example.com"));
entry.set_input_purpose (Gtk.InputPurpose.URL);
entry.changed.connect (() => {
details.value = entry.get_text ();
@@ -597,7 +605,7 @@ public class Contacts.EditorProperty : Object, ListModel {
var box = new EditorPropertyRow ("nickname");
box.sensitive = this.writeable;
- var entry = box.set_main_entry (details.nickname, _("Nickname"));
+ var entry = box.set_main_entry_row (details.nickname, _("Nickname"));
entry.set_input_purpose (Gtk.InputPurpose.NAME);
entry.changed.connect (() => {
details.nickname = entry.text;