Skip to content
Commits on Source (64)
......@@ -5,12 +5,13 @@ sources, providing a centralized place for managing your contacts.
## Building
You can build and install Contacts using [Meson](http://mesonbuild.com/):
You can build, test and install Contacts using [Meson](http://mesonbuild.com/):
```sh
meson build
ninja -C build
ninja -C build install
meson setup _build
meson compile -C _build
meson test -C _build
meson install -C _build
```
## Contributing
......
<?xml version="1.0" encoding="UTF-8"?>
<gresources>
<gresource prefix="/org/gnome/Contacts">
<file compressed="true">ui/style.css</file>
<file compressed="true">style.css</file>
<file preprocess="xml-stripblanks">icons/scalable/actions/birthday-symbolic.svg</file>
<file preprocess="xml-stripblanks">icons/scalable/actions/building-symbolic.svg</file>
......@@ -18,9 +18,9 @@
<file compressed="true" preprocess="xml-stripblanks">ui/contacts-avatar-selector.ui</file>
<file compressed="true" preprocess="xml-stripblanks">ui/contacts-contact-pane.ui</file>
<file compressed="true" preprocess="xml-stripblanks">ui/contacts-crop-dialog.ui</file>
<file compressed="true" preprocess="xml-stripblanks">ui/contacts-editable-avatar.ui</file>
<file compressed="true" preprocess="xml-stripblanks">ui/contacts-editor-menu.ui</file>
<file compressed="true" preprocess="xml-stripblanks">ui/contacts-link-suggestion-grid.ui</file>
<file compressed="true" preprocess="xml-stripblanks">ui/contacts-linked-personas-dialog.ui</file>
<file compressed="true" preprocess="xml-stripblanks">ui/contacts-main-window.ui</file>
<file compressed="true" preprocess="xml-stripblanks">ui/contacts-preferences-window.ui</file>
<file compressed="true" preprocess="xml-stripblanks">ui/contacts-qr-code-dialog.ui</file>
......
......@@ -41,10 +41,32 @@
</screenshots>
<releases>
<release date="2023-03-05" version="44~rc" type="development">
<description>
<p>
This is the release candidate for GNOME Contacts 44, with the following
improvements since the beta:
</p>
<ul>
<li>
Unsetting and editing an avatar for a contact is now a bit more
intuitive with the dedicated overlayed buttons
</li>
<li>Several changes to comply better with the GNOME HIG</li>
<li>Added unit tests will now help us guarantee correctness</li>
<li>We now parse the first TITLE/ORG vCard properties</li>
<li>
Fix a bug which made it impossible to add more than one address for
a contact
</li>
</ul>
<p>This release also updates translations in several languages.</p>
</description>
</release>
<release date="2023-02-13" version="44~beta" type="development">
<description>
<p>
This is the beta release for GNOME Contacts 43, with the following
This is the beta release for GNOME Contacts 44, with the following
improvements:
</p>
<ul>
......
......@@ -31,9 +31,11 @@
font-size: 20px;
}
flowboxchild.circular {
padding: 4px;
/* Used to provide a little cutout around an overlayed circular button */
.contacts-cutout-button {
background-color: @window_bg_color;
border-radius: 9999px;
padding: 2px;
}
/* Contact Sheet/Editor common */
......@@ -41,7 +43,12 @@ flowboxchild.circular {
.contacts-sheet-container,
.contacts-contact-editor-container {
margin: 36px 12px 24px 12px;
margin: 24px 12px 24px 12px;
}
.contacts-sheet-header,
.contacts-editor-header {
margin: 0 0 12px 0;
}
.contacts-sheet-property,
......@@ -55,10 +62,6 @@ flowboxchild.circular {
.contacts-sheet {
}
.contacts-sheet-header {
margin: 0 0 12px 0;
}
.contacts-sheet-property {
}
......@@ -66,6 +69,12 @@ flowboxchild.circular {
/* Contact Editor-related CSS classes */
/* ---------------------------------- */
.contacts-editor-header-name {
/* The name in the sheet gets some margin from .title-1,
* so do something similar here to prevent the name "jumping" */
margin: 6px 0;
}
/* Common class for all widgets editing a property */
.contacts-editor-property {
}
......@@ -97,4 +106,3 @@ flowboxchild.circular {
.favorite-button {
font-weight: normal;
}
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<template class="ContactsAvatarSelector" parent="GtkDialog">
<template class="ContactsAvatarSelector" parent="GtkWindow">
<property name="modal">True</property>
<property name="default_width">400</property>
<property name="default_height">400</property>
<property name="title" translatable="yes">Select a new avatar</property>
<binding name="title">
<lookup name="title">title_widget</lookup>
</binding>
<child type="action">
<object class="GtkButton" id="cancel_button">
<property name="label" translatable="yes">Cancel</property>
<property name="receives_default">True</property>
<child>
<object class='GtkShortcutController'>
<child>
<object class='GtkShortcut'>
<property name='trigger'>Escape</property>
<property name='action'>action(window.close)</property>
</object>
</child>
</object>
</child>
<child type="action">
<object class="GtkButton" id="done_button">
<property name="label" translatable="yes">Done</property>
<style>
<class name="suggested-action"/>
</style>
<child type="titlebar">
<object class="GtkHeaderBar">
<property name="show-title-buttons">False</property>
<child type="start">
<object class="GtkButton">
<property name="label" translatable="yes">_Cancel</property>
<property name="use-underline">True</property>
<property name="receives-default">True</property>
<property name="action-name">window.close</property>
</object>
</child>
<property name="title-widget">
<object class="AdwWindowTitle" id="title_widget">
<property name="title" translatable="yes">Select a new avatar</property>
</object>
</property>
<child type="end">
<object class="GtkButton" id="done_button">
<property name="label" translatable="yes">_Done</property>
<property name="use-underline">True</property>
<property name="action-name">set-avatar</property>
<style>
<class name="suggested-action"/>
</style>
</object>
</child>
</object>
</child>
<action-widgets>
<action-widget response="cancel">cancel_button</action-widget>
<action-widget response="accept" default="true">done_button</action-widget>
</action-widgets>
<child internal-child="content_area">
<child>
<object class="GtkBox">
<property name="orientation">vertical</property>
<child>
......
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<template class="ContactsCropDialog" parent="GtkDialog">
<template class="ContactsCropDialog" parent="GtkWindow">
<property name="modal">True</property>
<property name="default-width">400</property>
<property name="default-height">400</property>
<property name="destroy-with-parent">True</property>
<property name="title"></property>
<child type="action">
<object class="GtkButton" id="cancel_button">
<property name="label" translatable="yes">Cancel</property>
<child>
<object class='GtkShortcutController'>
<child>
<object class='GtkShortcut'>
<property name='trigger'>Escape</property>
<property name='action'>action(window.close)</property>
</object>
</child>
</object>
</child>
<child type="action">
<object class="GtkButton" id="done_button">
<property name="label" translatable="yes">Done</property>
<style>
<class name="suggested-action"/>
</style>
</object>
</child>
<action-widgets>
<action-widget response="cancel">cancel_button</action-widget>
<action-widget response="accept" default="true">done_button</action-widget>
</action-widgets>
<child internal-child="content_area">
<object class="GtkBox" id="box">
<property name="orientation">vertical</property>
<child type="titlebar">
<object class="GtkHeaderBar">
<property name="show-title-buttons">False</property>
<child type="start">
<object class="GtkButton">
<property name="label" translatable="yes">_Cancel</property>
<property name="use-underline">True</property>
<property name="receives-default">True</property>
<property name="action-name">window.close</property>
</object>
</child>
<property name="title-widget">
<object class="AdwWindowTitle" id="title_widget">
<property name="title"></property>
</object>
</property>
<child type="end">
<object class="GtkButton" id="done_button">
<property name="label" translatable="yes">_Done</property>
<property name="use-underline">True</property>
<property name="action-name">crop</property>
<style>
<class name="suggested-action"/>
</style>
</object>
</child>
</object>
</child>
</template>
......
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<template class="ContactsEditableAvatar" parent="GtkWidget">
<child>
<object class="GtkOverlay" id="overlay">
<child type="overlay">
<object class="AdwBin">
<property name="halign">end</property>
<property name="valign">start</property>
<style>
<class name="contacts-cutout-button"/>
</style>
<child>
<object class="GtkButton">
<property name="action-name">edit-avatar</property>
<property name="icon-name">document-edit-symbolic</property>
<property name="tooltip-text" translatable="yes">Change Avatar</property>
<style>
<class name="circular"/>
</style>
</object>
</child>
</object>
</child>
<child type="overlay">
<object class="AdwBin">
<property name="halign">end</property>
<property name="valign">end</property>
<style>
<class name="contacts-cutout-button"/>
</style>
<child>
<object class="GtkButton">
<property name="action-name">delete-avatar</property>
<property name="icon-name">user-trash-symbolic</property>
<property name="tooltip-text" translatable="yes">Remove Avatar</property>
<style>
<class name="circular"/>
</style>
</object>
</child>
</object>
</child>
</object>
</child>
</template>
</interface>
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<template class="ContactsLinkedPersonasDialog" parent="GtkDialog">
<property name="modal">True</property>
<property name="default_width">600</property>
<property name="default_height">400</property>
<child type="titlebar">
<object class="GtkHeaderBar">
<property name="subtitle" translatable="yes">Linked Accounts</property>
</object>
</child>
<child internal-child="vbox">
<object class="GtkBox">
<property name="orientation">vertical</property>
<child>
<object class="GtkGrid">
<property name="orientation">vertical</property>
<property name="column_spacing">8</property>
<property name="row_spacing">12</property>
<child>
<object class="GtkScrolledWindow">
<property name="hscrollbar_policy">never</property>
<property name="vscrollbar_policy">automatic</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="shadow_type">in</property>
<child>
<object class="GtkViewport">
<property name="scroll-to-focus">True</property>
<child>
<object class="GtkListBox" id="linked_accounts_view">
<property name="selection_mode">none</property>
</object>
</child>
</object>
</child>
</object>
</child>
<child>
<object class="GtkLabel">
<property name="halign">center</property>
<property name="label" translatable="yes">You can link contacts by selecting them from the contacts list</property>
</object>
</child>
</object>
</child>
</object>
</child>
</template>
</interface>
......@@ -120,7 +120,7 @@
<child type="start">
<object class="GtkButton" id="add_button">
<property name="tooltip-text" translatable="yes">Create new contact</property>
<property name="tooltip-text" translatable="yes">Add New Contact</property>
<property name="icon-name">list-add-symbolic</property>
<property name="action-name">win.new-contact</property>
</object>
......@@ -143,7 +143,7 @@
<child type="end">
<object class="GtkButton" id="selection_button">
<property name="icon-name">selection-mode-symbolic</property>
<property name="tooltip-text" translatable="yes">Select Items</property>
<property name="tooltip-text" translatable="yes">Select Contacts</property>
<signal name="clicked" handler="on_selection_button_clicked"/>
</object>
</child>
......@@ -189,7 +189,7 @@
<property name="orientation">vertical</property>
<child>
<object class="GtkSearchEntry" id="filter_entry">
<property name="placeholder-text" translatable="yes">Type to search</property>
<property name="placeholder-text" translatable="yes">Search contacts</property>
<signal name="search-changed" handler="filter_entry_changed"/>
<style>
<class name="contacts-filter-entry"/>
......@@ -304,7 +304,6 @@
<child type="end">
<object class="GtkMenuButton" id="contact_hamburger_menu_button">
<property name="menu-model">contact_hamburger_menu_popover</property>
<property name="primary">True</property>
<property name="tooltip_text" translatable="yes">More Contact Actions</property>
<property name="icon-name">open-menu-symbolic</property>
</object>
......
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<template class="ContactsQrCodeDialog" parent="AdwPreferencesWindow">
<property name="modal">True</property>
<template class="ContactsQrCodeDialog" parent="GtkWindow">
<property name="default-width">400</property>
<property name="default-height">600</property>
<property name="height-request">600</property>
<property name="default-height">550</property>
<property name="height-request">550</property>
<property name="modal">True</property>
<property name="destroy-with-parent">True</property>
<property name="search-enabled">False</property>
<property name="can-navigate-back">False</property>
<property name="title" translatable="yes">Share Contact</property>
<child type="titlebar">
<object class="GtkHeaderBar">
<property name="show-title-buttons">True</property>
<style>
<class name="flat" />
</style>
</object>
</child>
<child>
<object class="AdwPreferencesPage">
<property name="margin-top">18</property>
<property name="margin-bottom">18</property>
<property name="margin-start">18</property>
<property name="margin-end">18</property>
<object class="AdwClamp">
<child>
<object class="AdwPreferencesGroup">
<object class="GtkBox">
<property name="spacing">24</property>
<property name="orientation">vertical</property>
<property name="margin-top">32</property>
<property name="margin-bottom">32</property>
<property name="margin-start">32</property>
<property name="margin-end">32</property>
<child>
<object class="GtkPicture" id="qr_image">
<property name="alternative-text">QR Code</property>
<property name="halign">center</property>
<property name="width-request">300</property>
<property name="height-request">300</property>
<property name="can-shrink">True</property>
<property name="alternative-text" translatable="yes">QR Code</property>
<style>
<class name="frame"/>
<class name="card"/>
<class name="contacts-qr-code-dialog-qr-image"/>
</style>
</object>
</child>
</object>
</child>
<child>
<object class="AdwPreferencesGroup">
<child>
<object class="GtkLabel" id="qr_title">
<property name="label" translatable="yes">Scan to Save</property>
<property name="css-classes">title-1</property>
</object>
</child>
<child>
<object class="GtkLabel" id="qr_subtitle">
<property name="wrap">True</property>
<property name="halign">center</property>
<property name="justify">center</property>
<property name="natural-wrap-mode">none</property>
</object>
</child>
</object>
</child>
<child>
<object class="AdwPreferencesGroup">
<object class='GtkShortcutController'>
<property name='scope'>global</property>
<child>
<object class="GtkLabel" id="qr_subtitle">
<property name="halign">center</property>
<property name="wrap">true</property>
<object class='GtkShortcut'>
<property name='trigger'>Escape</property>
<property name='action'>action(window.close)</property>
</object>
</child>
</object>
</child>
</object>
</child>
</template>
......
project('gnome-contacts', [ 'vala', 'c' ],
version: '44.beta',
version: '44.rc',
license: 'GPL-2.0-or-later',
meson_version: '>= 0.59',
)
......
......@@ -7,7 +7,7 @@ data/ui/contacts-avatar-selector.ui
data/ui/contacts-contact-pane.ui
data/ui/contacts-crop-dialog.ui
data/ui/contacts-editor-menu.ui
data/ui/contacts-linked-personas-dialog.ui
data/ui/contacts-editable-avatar.ui
data/ui/contacts-link-suggestion-grid.ui
data/ui/contacts-main-window.ui
data/ui/contacts-preferences-window.ui
......@@ -23,9 +23,9 @@ src/contacts-contact-pane.vala
src/contacts-contact-sheet.vala
src/contacts-crop-dialog.vala
src/contacts-delete-operation.vala
src/contacts-editable-avatar.vala
src/contacts-esd-setup.vala
src/contacts-im-service.vala
src/contacts-linked-personas-dialog.vala
src/contacts-link-operation.vala
src/contacts-link-suggestion-grid.vala
src/contacts-main-window.vala
......
......@@ -12,9 +12,9 @@ src/contacts-contact-pane.c
src/contacts-contact-sheet.c
src/contacts-crop-dialog.c
src/contacts-delete-operation.c
src/contacts-editable-avatar.c
src/contacts-esd-setup.c
src/contacts-im-service.c
src/contacts-linked-personas-dialog.c
src/contacts-link-operation.c
src/contacts-link-suggestion-grid.c
src/contacts-main-window.c
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.