diff options
author | Felipe Kinoshita <kinofhek@gmail.com> | 2023-03-20 20:11:03 +0000 |
---|---|---|
committer | Marcus Lundblad <ml@dfupdate.se> | 2023-03-20 20:11:03 +0000 |
commit | f770faed34ef9397328fb9d3bca025a2ac06c049 (patch) | |
tree | 62ae5ce7402568c1667ffc383964b60aa721b68c | |
parent | f88b6bd3e52d5f0e8ec741ab56afe1e0dcdf546b (diff) | |
download | gnome-maps-f770faed34ef9397328fb9d3bca025a2ac06c049.tar.gz |
Make use of Adw.Toast
-rw-r--r-- | data/ui/main-window.ui | 53 | ||||
-rw-r--r-- | data/ui/osm-account-dialog.ui | 420 | ||||
-rw-r--r-- | data/ui/osm-edit-dialog.ui | 345 | ||||
-rw-r--r-- | data/ui/send-to-dialog.ui | 188 | ||||
-rw-r--r-- | src/application.js | 9 | ||||
-rw-r--r-- | src/mainWindow.js | 10 | ||||
-rw-r--r-- | src/mapView.js | 20 | ||||
-rw-r--r-- | src/osmAccountDialog.js | 5 | ||||
-rw-r--r-- | src/osmEditDialog.js | 6 | ||||
-rw-r--r-- | src/placeEntry.js | 9 | ||||
-rw-r--r-- | src/sendToDialog.js | 6 | ||||
-rw-r--r-- | src/utils.js | 16 |
12 files changed, 550 insertions, 537 deletions
diff --git a/data/ui/main-window.ui b/data/ui/main-window.ui index 2cd3a09b..881a3608 100644 --- a/data/ui/main-window.ui +++ b/data/ui/main-window.ui @@ -42,28 +42,39 @@ </object> </child> <child> - <object class="GtkGrid" id="grid"> - <child> - <object class="GtkBox" id="placeBarContainer"> - <layout> - <property name="column">0</property> - <property name="row">1</property> - </layout> + <object class="AdwToastOverlay" id="overlay"> + <property name="child"> + <object class="GtkBox"> + <property name="orientation">vertical</property> + <property name="hexpand">true</property> + <property name="vexpand">true</property> + <child> + <object class="GtkGrid" id="grid"> + <child> + <object class="GtkBox" id="placeBarContainer"> + <layout> + <property name="column">0</property> + <property name="row">1</property> + </layout> + </object> + </child> + <child> + <object class="GtkRevealer" id="actionBarRevealer"> + <property name="transition-type">slide-up</property> + <property name="child"> + <object class="GtkActionBar" id="actionBar"/> + </property> + <layout> + <property name="column">0</property> + <property name="row">2</property> + <property name="column-span">2</property> + </layout> + </object> + </child> + </object> + </child> </object> - </child> - <child> - <object class="GtkRevealer" id="actionBarRevealer"> - <property name="transition-type">slide-up</property> - <property name="child"> - <object class="GtkActionBar" id="actionBar"/> - </property> - <layout> - <property name="column">0</property> - <property name="row">2</property> - <property name="column-span">2</property> - </layout> - </object> - </child> + </property> </object> </child> </template> diff --git a/data/ui/osm-account-dialog.ui b/data/ui/osm-account-dialog.ui index 46ee8787..019f4409 100644 --- a/data/ui/osm-account-dialog.ui +++ b/data/ui/osm-account-dialog.ui @@ -5,222 +5,226 @@ <property name="width_request">500</property> <property name="title" translatable="1">OpenStreetMap Account</property> <child> - <object class="GtkBox" id="contentArea"> + <object class="AdwToastOverlay" id="overlay"> <child> - <object class="GtkStack" id="stack"> - <property name="transition-type">slide-right</property> + <object class="GtkBox" id="contentArea"> <child> - <object class="GtkStackPage"> - <property name="name">sign-in</property> - <property name="child"> - <object class="GtkGrid"> - <property name="row-spacing">10</property> - <property name="margin-start">20</property> - <property name="margin-end">20</property> - <property name="margin-top">20</property> - <property name="margin-bottom">20</property> - <child> - <object class="GtkLabel"> - <property name="label" translatable="1"><span weight="bold" size="x-large">Sign in to edit maps</span></property> - <property name="use_markup">1</property> - <property name="hexpand">1</property> - <property name="halign">center</property> - <property name="justify">center</property> - <layout> - <property name="column">0</property> - <property name="row">0</property> - <property name="column-span">3</property> - </layout> + <object class="GtkStack" id="stack"> + <property name="transition-type">slide-right</property> + <child> + <object class="GtkStackPage"> + <property name="name">sign-in</property> + <property name="child"> + <object class="GtkGrid"> + <property name="row-spacing">10</property> + <property name="margin-start">20</property> + <property name="margin-end">20</property> + <property name="margin-top">20</property> + <property name="margin-bottom">20</property> + <child> + <object class="GtkLabel"> + <property name="label" translatable="1"><span weight="bold" size="x-large">Sign in to edit maps</span></property> + <property name="use_markup">1</property> + <property name="hexpand">1</property> + <property name="halign">center</property> + <property name="justify">center</property> + <layout> + <property name="column">0</property> + <property name="row">0</property> + <property name="column-span">3</property> + </layout> + </object> + </child> + <child> + <object class="GtkLabel"> + <property name="label" translatable="1">Help to improve the map, using an + OpenStreetMap account.</property> + <property name="hexpand">1</property> + <property name="halign">center</property> + <property name="justify">center</property> + <layout> + <property name="column">0</property> + <property name="row">1</property> + <property name="column-span">3</property> + </layout> + </object> + </child> + <child> + <object class="GtkLabel"> + <property name="label" translatable="1">Sign in to authorize access in a web browser. + Then fill in the obtained verification code here in the next step.</property> + <property name="hexpand">1</property> + <property name="wrap">1</property> + <property name="halign">center</property> + <property name="justify">center</property> + <layout> + <property name="column">0</property> + <property name="row">2</property> + <property name="column-span">3</property> + </layout> + </object> + </child> + <child> + <object class="GtkLinkButton"> + <property name="focusable">1</property> + <property name="label" translatable="1">Sign up</property> + <property name="uri">https://www.openstreetmap.org/user/new</property> + <property name="halign">end</property> + <property name="hexpand">1</property> + <layout> + <property name="column">0</property> + <property name="row">3</property> + </layout> + </object> + </child> + <child> + <object class="GtkButton" id="signInButton"> + <property name="halign">end</property> + <property name="label" translatable="1">Sign In</property> + <style> + <class name="suggested-action"/> + </style> + <layout> + <property name="column">1</property> + <property name="row">3</property> + </layout> + </object> + </child> + <child> + <object class="GtkLabel" id="errorLabel"> + <property name="visible">0</property> + <property name="focusable">1</property> + <property name="use-markup">1</property> + <style> + <class name="warning"/> + </style> + <layout> + <property name="column">0</property> + <property name="row">4</property> + </layout> + </object> + </child> </object> - </child> - <child> - <object class="GtkLabel"> - <property name="label" translatable="1">Help to improve the map, using an -OpenStreetMap account.</property> - <property name="hexpand">1</property> - <property name="halign">center</property> - <property name="justify">center</property> - <layout> - <property name="column">0</property> - <property name="row">1</property> - <property name="column-span">3</property> - </layout> - </object> - </child> - <child> - <object class="GtkLabel"> - <property name="label" translatable="1">Sign in to authorize access in a web browser. -Then fill in the obtained verification code here in the next step.</property> - <property name="hexpand">1</property> - <property name="wrap">1</property> - <property name="halign">center</property> - <property name="justify">center</property> - <layout> - <property name="column">0</property> - <property name="row">2</property> - <property name="column-span">3</property> - </layout> - </object> - </child> - <child> - <object class="GtkLinkButton"> - <property name="focusable">1</property> - <property name="label" translatable="1">Sign up</property> - <property name="uri">https://www.openstreetmap.org/user/new</property> - <property name="halign">end</property> - <property name="hexpand">1</property> - <layout> - <property name="column">0</property> - <property name="row">3</property> - </layout> - </object> - </child> - <child> - <object class="GtkButton" id="signInButton"> - <property name="halign">end</property> - <property name="label" translatable="1">Sign In</property> - <style> - <class name="suggested-action"/> - </style> - <layout> - <property name="column">1</property> - <property name="row">3</property> - </layout> - </object> - </child> - <child> - <object class="GtkLabel" id="errorLabel"> - <property name="visible">0</property> - <property name="focusable">1</property> - <property name="use-markup">1</property> - <style> - <class name="warning"/> - </style> - <layout> - <property name="column">0</property> - <property name="row">4</property> - </layout> - </object> - </child> + </property> </object> - </property> - </object> - </child> - <child> - <object class="GtkStackPage"> - <property name="name">verify</property> - <property name="child"> - <object class="GtkGrid"> - <property name="row-spacing">10</property> - <property name="column-spacing">10</property> - <property name="margin-start">20</property> - <property name="margin-end">20</property> - <property name="margin-top">20</property> - <property name="margin-bottom">20</property> - <child> - <object class="GtkLabel"> - <property name="wrap">1</property> - <property name="label" translatable="1">Copy verification code shown when authorizing access in the browser</property> - <layout> - <property name="column">0</property> - <property name="row">0</property> - <property name="column-span">2</property> - </layout> - </object> - </child> - <child> - <object class="GtkEntry" id="verificationEntry"> - <property name="placeholder-text" translatable="1">Verification code</property> - <property name="hexpand">1</property> - <layout> - <property name="column">0</property> - <property name="row">1</property> - </layout> + </child> + <child> + <object class="GtkStackPage"> + <property name="name">verify</property> + <property name="child"> + <object class="GtkGrid"> + <property name="row-spacing">10</property> + <property name="column-spacing">10</property> + <property name="margin-start">20</property> + <property name="margin-end">20</property> + <property name="margin-top">20</property> + <property name="margin-bottom">20</property> + <child> + <object class="GtkLabel"> + <property name="wrap">1</property> + <property name="label" translatable="1">Copy verification code shown when authorizing access in the browser</property> + <layout> + <property name="column">0</property> + <property name="row">0</property> + <property name="column-span">2</property> + </layout> + </object> + </child> + <child> + <object class="GtkEntry" id="verificationEntry"> + <property name="placeholder-text" translatable="1">Verification code</property> + <property name="hexpand">1</property> + <layout> + <property name="column">0</property> + <property name="row">1</property> + </layout> + </object> + </child> + <child> + <object class="GtkButton" id="verifyButton"> + <property name="sensitive">0</property> + <property name="label" translatable="1">Verify</property> + <property name="hexpand">0</property> + <property name="halign">end</property> + <style> + <class name="suggested-action"/> + </style> + <layout> + <property name="column">1</property> + <property name="row">1</property> + </layout> + </object> + </child> </object> - </child> - <child> - <object class="GtkButton" id="verifyButton"> - <property name="sensitive">0</property> - <property name="label" translatable="1">Verify</property> - <property name="hexpand">0</property> - <property name="halign">end</property> - <style> - <class name="suggested-action"/> - </style> - <layout> - <property name="column">1</property> - <property name="row">1</property> - </layout> - </object> - </child> + </property> </object> - </property> - </object> - </child> - <child> - <object class="GtkStackPage"> - <property name="name">logged-in</property> - <property name="child"> - <object class="GtkGrid"> - <property name="row-spacing">10</property> - <property name="margin-start">20</property> - <property name="margin-end">20</property> - <property name="margin-top">20</property> - <property name="margin-bottom">20</property> - <child> - <object class="GtkLabel"> - <property name="label" translatable="1"><span weight="bold" size="x-large">Signed In</span></property> - <property name="use_markup">1</property> - <property name="hexpand">1</property> - <property name="halign">center</property> - <layout> - <property name="column">0</property> - <property name="row">0</property> - </layout> - </object> - </child> - <child> - <object class="GtkLabel"> - <property name="label" translatable="1">Your OpenStreetMap account is active.</property> - <property name="hexpand">1</property> - <property name="halign">center</property> - <layout> - <property name="column">0</property> - <property name="row">1</property> - </layout> - </object> - </child> - <child> - <object class="GtkImage"> - <property name="icon-name">avatar-default-symbolic</property> - <property name="pixel-size">64</property> - <property name="opacity">0.33</property> - <layout> - <property name="column">0</property> - <property name="row">2</property> - </layout> - </object> - </child> - <child> - <object class="GtkLabel" id="signedInUserLabel"> - <layout> - <property name="column">0</property> - <property name="row">3</property> - </layout> - </object> - </child> - <child> - <object class="GtkButton" id="signOutButton"> - <property name="label" translatable="1">Sign Out</property> - <property name="halign">center</property> - <layout> - <property name="column">0</property> - <property name="row">4</property> - </layout> + </child> + <child> + <object class="GtkStackPage"> + <property name="name">logged-in</property> + <property name="child"> + <object class="GtkGrid"> + <property name="row-spacing">10</property> + <property name="margin-start">20</property> + <property name="margin-end">20</property> + <property name="margin-top">20</property> + <property name="margin-bottom">20</property> + <child> + <object class="GtkLabel"> + <property name="label" translatable="1"><span weight="bold" size="x-large">Signed In</span></property> + <property name="use_markup">1</property> + <property name="hexpand">1</property> + <property name="halign">center</property> + <layout> + <property name="column">0</property> + <property name="row">0</property> + </layout> + </object> + </child> + <child> + <object class="GtkLabel"> + <property name="label" translatable="1">Your OpenStreetMap account is active.</property> + <property name="hexpand">1</property> + <property name="halign">center</property> + <layout> + <property name="column">0</property> + <property name="row">1</property> + </layout> + </object> + </child> + <child> + <object class="GtkImage"> + <property name="icon-name">avatar-default-symbolic</property> + <property name="pixel-size">64</property> + <property name="opacity">0.33</property> + <layout> + <property name="column">0</property> + <property name="row">2</property> + </layout> + </object> + </child> + <child> + <object class="GtkLabel" id="signedInUserLabel"> + <layout> + <property name="column">0</property> + <property name="row">3</property> + </layout> + </object> + </child> + <child> + <object class="GtkButton" id="signOutButton"> + <property name="label" translatable="1">Sign Out</property> + <property name="halign">center</property> + <layout> + <property name="column">0</property> + <property name="row">4</property> + </layout> + </object> + </child> </object> - </child> + </property> </object> - </property> + </child> </object> </child> </object> diff --git a/data/ui/osm-edit-dialog.ui b/data/ui/osm-edit-dialog.ui index db1d0cbd..2de35e10 100644 --- a/data/ui/osm-edit-dialog.ui +++ b/data/ui/osm-edit-dialog.ui @@ -6,206 +6,211 @@ <property name="height_request">500</property> <property name="use-header-bar">True</property> <property name="title" translatable="True" context="dialog title">Edit on OpenStreetMap</property> + <child> - <object class="GtkBox" id="contentArea"> + <object class="AdwToastOverlay" id="overlay"> <child> - <object class="GtkStack" id="stack"> - <property name="transition_type">crossfade</property> + <object class="GtkBox" id="contentArea"> <child> - <object class="GtkStackPage"> - <property name="name">loading</property> - <property name="child"> - <object class="GtkGrid" id="loadingGrid"> - <child> - <object class="GtkSpinner" id="loadingSpinner"> - <property name="height_request">32</property> - <property name="hexpand">1</property> - <property name="vexpand">1</property> - <property name="valign">GTK_ALIGN_CENTER</property> - <property name="spinning">True</property> - <layout> - <property name="column">0</property> - <property name="row">0</property> - </layout> - </object> - </child> - </object> - </property> - </object> - </child> - <child> - <object class="GtkStackPage"> - <property name="name">editor</property> - <property name="child"> - <object class="GtkGrid"> - <property name="orientation">vertical</property> - <property name="margin-start">20</property> - <property name="margin-end">20</property> - <property name="margin-top">20</property> - <property name="margin-bottom">20</property> - <child> - <object class="GtkGrid" id="editorGrid"> - <property name="row-spacing">12</property> - <property name="column-spacing">6</property> - <property name="margin-bottom">12</property> + <object class="GtkStack" id="stack"> + <property name="transition_type">crossfade</property> + <child> + <object class="GtkStackPage"> + <property name="name">loading</property> + <property name="child"> + <object class="GtkGrid" id="loadingGrid"> <child> - <object class="GtkLabel" id="typeLabel"> - <property name="visible">0</property> - <property name="label" translatable="1">Type</property> - <property name="halign">end</property> - <style> - <class name="dim-label"/> - </style> + <object class="GtkSpinner" id="loadingSpinner"> + <property name="height_request">32</property> + <property name="hexpand">1</property> + <property name="vexpand">1</property> + <property name="valign">GTK_ALIGN_CENTER</property> + <property name="spinning">True</property> <layout> <property name="column">0</property> <property name="row">0</property> </layout> </object> </child> + </object> + </property> + </object> + </child> + <child> + <object class="GtkStackPage"> + <property name="name">editor</property> + <property name="child"> + <object class="GtkGrid"> + <property name="orientation">vertical</property> + <property name="margin-start">20</property> + <property name="margin-end">20</property> + <property name="margin-top">20</property> + <property name="margin-bottom">20</property> <child> - <object class="GtkButton" id="typeButton"> - <property name="visible">0</property> - <property name="focusable">1</property> - <property name="hexpand">1</property> + <object class="GtkGrid" id="editorGrid"> + <property name="row-spacing">12</property> + <property name="column-spacing">6</property> + <property name="margin-bottom">12</property> <child> - <object class="GtkGrid"> - <property name="row-spacing">5</property> - <property name="column-spacing">5</property> - <child> - <object class="GtkLabel" id="typeValueLabel"> - <property name="label" translatable="1">None</property> - </object> - </child> + <object class="GtkLabel" id="typeLabel"> + <property name="visible">0</property> + <property name="label" translatable="1">Type</property> + <property name="halign">end</property> + <style> + <class name="dim-label"/> + </style> + <layout> + <property name="column">0</property> + <property name="row">0</property> + </layout> + </object> + </child> + <child> + <object class="GtkButton" id="typeButton"> + <property name="visible">0</property> + <property name="focusable">1</property> + <property name="hexpand">1</property> <child> - <object class="GtkImage"> - <property name="halign">end</property> - <property name="hexpand">1</property> - <property name="icon-name">go-next-symbolic</property> + <object class="GtkGrid"> + <property name="row-spacing">5</property> + <property name="column-spacing">5</property> + <child> + <object class="GtkLabel" id="typeValueLabel"> + <property name="label" translatable="1">None</property> + </object> + </child> + <child> + <object class="GtkImage"> + <property name="halign">end</property> + <property name="hexpand">1</property> + <property name="icon-name">go-next-symbolic</property> + </object> + </child> </object> </child> + <layout> + <property name="column">1</property> + <property name="row">0</property> + </layout> </object> </child> + </object> + </child> + <child> + <object class="GtkGrid"> + <property name="vexpand">1</property> + <property name="valign">end</property> + <child> + <object class="GtkMenuButton" id="addFieldButton"> + <property name="focusable">1</property> + <property name="popover">addFieldPopover</property> + <property name="direction">up</property> + <property name="label" translatable="1">Add Field</property> + <property name="always-show-arrow">True</property> + </object> + </child> + </object> + </child> + </object> + </property> + </object> + </child> + <child> + <object class="GtkStackPage"> + <property name="name">upload</property> + <property name="child"> + <object class="GtkGrid" id="uploadGrid"> + <property name="margin_start">15</property> + <property name="margin_end">15</property> + <property name="margin_top">15</property> + <property name="margin_bottom">15</property> + <property name="row-spacing">5</property> + <child> + <object class="GtkLabel" id="commentLabel"> + <property name="label" translatable="1">Comment</property> + <property name="halign">start</property> + <style> + <class name="dim-label"/> + </style> <layout> - <property name="column">1</property> - <property name="row">0</property> + <property name="column">0</property> + <property name="row">1</property> </layout> </object> </child> - </object> - </child> - <child> - <object class="GtkGrid"> - <property name="vexpand">1</property> - <property name="valign">end</property> <child> - <object class="GtkMenuButton" id="addFieldButton"> - <property name="focusable">1</property> - <property name="popover">addFieldPopover</property> - <property name="direction">up</property> - <property name="label" translatable="1">Add Field</property> - <property name="always-show-arrow">True</property> + <object class="GtkFrame"> + <property name="child"> + <object class="GtkTextView" id="commentTextView"> + <property name="focusable">1</property> + <property name="hexpand">1</property> + <property name="vexpand">1</property> + </object> + </property> + <layout> + <property name="column">0</property> + <property name="row">2</property> + </layout> + </object> + </child> + <child> + <object class="GtkLabel" id="uploadInfoLabel"> + <property name="label" translatable="1">Map changes will be visible on all maps that use + OpenStreetMap data.</property> + <property name="halign">start</property> + <style> + <class name="dim-label"/> + </style> + <layout> + <property name="column">0</property> + <property name="row">3</property> + </layout> </object> </child> </object> - </child> + </property> </object> - </property> - </object> - </child> - <child> - <object class="GtkStackPage"> - <property name="name">upload</property> - <property name="child"> - <object class="GtkGrid" id="uploadGrid"> - <property name="margin_start">15</property> - <property name="margin_end">15</property> - <property name="margin_top">15</property> - <property name="margin_bottom">15</property> - <property name="row-spacing">5</property> - <child> - <object class="GtkLabel" id="commentLabel"> - <property name="label" translatable="1">Comment</property> - <property name="halign">start</property> - <style> - <class name="dim-label"/> - </style> - <layout> - <property name="column">0</property> - <property name="row">1</property> - </layout> - </object> - </child> - <child> - <object class="GtkFrame"> - <property name="child"> - <object class="GtkTextView" id="commentTextView"> + </child> + <child> + <object class="GtkStackPage"> + <property name="name">select-type</property> + <property name="child"> + <object class="GtkGrid" id="typeSearchGrid"> + <property name="margin_start">60</property> + <property name="margin_end">60</property> + <property name="margin_top">15</property> + <property name="margin_bottom">30</property> + <property name="row-spacing">5</property> + <child> + <object class="GtkLabel" id="recentTypesLabel"> + <property name="label" translatable="1">Recently Used</property> + <property name="halign">start</property> + <style> + <class name="dim-label"/> + </style> + <layout> + <property name="column">0</property> + <property name="row">1</property> + </layout> + </object> + </child> + <child> + <object class="GtkListBox" id="recentTypesListBox"> <property name="focusable">1</property> - <property name="hexpand">1</property> - <property name="vexpand">1</property> + <property name="selection-mode">none</property> + <style> + <class name="frame"/> + </style> + <layout> + <property name="column">0</property> + <property name="row">2</property> + </layout> </object> - </property> - <layout> - <property name="column">0</property> - <property name="row">2</property> - </layout> - </object> - </child> - <child> - <object class="GtkLabel" id="uploadInfoLabel"> - <property name="label" translatable="1">Map changes will be visible on all maps that use -OpenStreetMap data.</property> - <property name="halign">start</property> - <style> - <class name="dim-label"/> - </style> - <layout> - <property name="column">0</property> - <property name="row">3</property> - </layout> - </object> - </child> - </object> - </property> - </object> - </child> - <child> - <object class="GtkStackPage"> - <property name="name">select-type</property> - <property name="child"> - <object class="GtkGrid" id="typeSearchGrid"> - <property name="margin_start">60</property> - <property name="margin_end">60</property> - <property name="margin_top">15</property> - <property name="margin_bottom">30</property> - <property name="row-spacing">5</property> - <child> - <object class="GtkLabel" id="recentTypesLabel"> - <property name="label" translatable="1">Recently Used</property> - <property name="halign">start</property> - <style> - <class name="dim-label"/> - </style> - <layout> - <property name="column">0</property> - <property name="row">1</property> - </layout> - </object> - </child> - <child> - <object class="GtkListBox" id="recentTypesListBox"> - <property name="focusable">1</property> - <property name="selection-mode">none</property> - <style> - <class name="frame"/> - </style> - <layout> - <property name="column">0</property> - <property name="row">2</property> - </layout> + </child> </object> - </child> + </property> </object> - </property> + </child> </object> </child> </object> diff --git a/data/ui/send-to-dialog.ui b/data/ui/send-to-dialog.ui index 0c474d26..ff65f692 100644 --- a/data/ui/send-to-dialog.ui +++ b/data/ui/send-to-dialog.ui @@ -19,120 +19,124 @@ <action-widget response="cancel">cancelButton</action-widget> </action-widgets> <child> - <object class="GtkBox" id="contentArea"> - <property name="orientation">vertical</property> - <property name="margin-start">18</property> - <property name="margin-end">18</property> - <property name="margin-top">18</property> - <property name="margin-bottom">18</property> - <property name="spacing">12</property> + <object class="AdwToastOverlay" id="overlay"> <child> - <object class="GtkBox"> + <object class="GtkBox" id="contentArea"> <property name="orientation">vertical</property> + <property name="margin-start">18</property> + <property name="margin-end">18</property> + <property name="margin-top">18</property> + <property name="margin-bottom">18</property> <property name="spacing">12</property> <child> <object class="GtkBox"> <property name="orientation">vertical</property> + <property name="spacing">12</property> <child> - <object class="GtkLabel" id="summaryLabel"> - <property name="selectable">1</property> - <property name="label">…</property> - <property name="halign">start</property> - <property name="wrap">1</property> - <property name="xalign">0</property> + <object class="GtkBox"> + <property name="orientation">vertical</property> + <child> + <object class="GtkLabel" id="summaryLabel"> + <property name="selectable">1</property> + <property name="label">…</property> + <property name="halign">start</property> + <property name="wrap">1</property> + <property name="xalign">0</property> + </object> + </child> + <child> + <object class="GtkLabel" id="summaryUrl"> + <property name="selectable">1</property> + <property name="use-markup">1</property> + <property name="label">…</property> + <property name="xalign">0</property> + <property name="width-request">0</property> + <property name="ellipsize">end</property> + </object> + </child> </object> </child> <child> - <object class="GtkLabel" id="summaryUrl"> - <property name="selectable">1</property> - <property name="use-markup">1</property> - <property name="label">…</property> - <property name="xalign">0</property> - <property name="width-request">0</property> - <property name="ellipsize">end</property> + <object class="GtkBox"> + <property name="spacing">6</property> + <child> + <object class="GtkButton" id="copyButton"> + <property name="label" translatable="1">Copy</property> + <property name="hexpand">1</property> + </object> + </child> + <child> + <object class="GtkButton" id="emailButton"> + <property name="label" translatable="1">Send To…</property> + <property name="hexpand">1</property> + </object> + </child> </object> </child> </object> </child> <child> - <object class="GtkBox"> - <property name="spacing">6</property> - <child> - <object class="GtkButton" id="copyButton"> - <property name="label" translatable="1">Copy</property> - <property name="hexpand">1</property> - </object> - </child> - <child> - <object class="GtkButton" id="emailButton"> - <property name="label" translatable="1">Send To…</property> - <property name="hexpand">1</property> - </object> - </child> - </object> - </child> - </object> - </child> - <child> - <object class="GtkScrolledWindow" id="scrolledWindow"> - <property name="hscrollbar_policy">never</property> - <property name="vexpand">1</property> - <property name="child"> - <object class="GtkListBox" id="list"> - <child> - <object class="GtkListBoxRow" id="weatherRow"> - <property name="focusable">1</property> - <property name="child"> - <object class="GtkGrid" id="weatherGrid"> - <property name="column_spacing">12</property> - <property name="margin-start">6</property> - <property name="margin-end">6</property> - <property name="margin-top">6</property> - <property name="margin-bottom">6</property> - <child> - <object class="GtkImage" id="weatherIcon"> - <property name="pixel_size">32</property> - <property name="halign">start</property> - </object> - </child> - <child> - <object class="GtkLabel" id="weatherLabel"> - <property name="margin-end">10</property> + <object class="GtkScrolledWindow" id="scrolledWindow"> + <property name="hscrollbar_policy">never</property> + <property name="vexpand">1</property> + <property name="child"> + <object class="GtkListBox" id="list"> + <child> + <object class="GtkListBoxRow" id="weatherRow"> + <property name="focusable">1</property> + <property name="child"> + <object class="GtkGrid" id="weatherGrid"> + <property name="column_spacing">12</property> + <property name="margin-start">6</property> + <property name="margin-end">6</property> + <property name="margin-top">6</property> + <property name="margin-bottom">6</property> + <child> + <object class="GtkImage" id="weatherIcon"> + <property name="pixel_size">32</property> + <property name="halign">start</property> + </object> + </child> + <child> + <object class="GtkLabel" id="weatherLabel"> + <property name="margin-end">10</property> + </object> + </child> </object> - </child> + </property> </object> - </property> - </object> - </child> - <child> - <object class="GtkListBoxRow" id="clocksRow"> - <property name="focusable">1</property> - <property name="child"> - <object class="GtkGrid" id="clocksGrid"> - <property name="column_spacing">12</property> - <property name="margin-start">6</property> - <property name="margin-end">6</property> - <property name="margin-top">6</property> - <property name="margin-bottom">6</property> - <child> - <object class="GtkImage" id="clocksIcon"> - <property name="pixel_size">32</property> - <property name="halign">start</property> - </object> - </child> - <child> - <object class="GtkLabel" id="clocksLabel"> - <property name="margin-end">10</property> + </child> + <child> + <object class="GtkListBoxRow" id="clocksRow"> + <property name="focusable">1</property> + <property name="child"> + <object class="GtkGrid" id="clocksGrid"> + <property name="column_spacing">12</property> + <property name="margin-start">6</property> + <property name="margin-end">6</property> + <property name="margin-top">6</property> + <property name="margin-bottom">6</property> + <child> + <object class="GtkImage" id="clocksIcon"> + <property name="pixel_size">32</property> + <property name="halign">start</property> + </object> + </child> + <child> + <object class="GtkLabel" id="clocksLabel"> + <property name="margin-end">10</property> + </object> + </child> </object> - </child> + </property> </object> - </property> + </child> </object> - </child> + </property> </object> - </property> + </child> </object> - </child> + </child>" </object> </child> </template> diff --git a/src/application.js b/src/application.js index d787dea3..d6a0cf50 100644 --- a/src/application.js +++ b/src/application.js @@ -249,8 +249,7 @@ export class Application extends Adw.Application { GeocodeFactory.getGeocoder().search(query, null, null, cancellable, (places, error) => { if (error) { - Utils.showDialog(_("An error has occurred"), - Gtk.MessageType.ERROR, this._mainWindow); + this._mainWindow.showToast(_("An error has occurred")); } else { // clear search entry this._mainWindow.placeEntry.text = ''; @@ -272,16 +271,14 @@ export class Application extends Adw.Application { false); } } else { - Utils.showDialog(_("No results found"), - Gtk.MessageType.INFO, this._mainWindow); + this._mainWindow.showToast(_("No results found")); } } }); } _invalidMapsUri(uri) { - Utils.showDialog(_("Invalid maps: URI: %s").format(uri), - Gtk.MessageType.ERROR, this._mainWindow); + this._mainWindow.showToast(_("Invalid maps: URI: %s").format(uri)); } vfunc_open(files) { diff --git a/src/mainWindow.js b/src/mainWindow.js index c9466248..e99a1414 100644 --- a/src/mainWindow.js +++ b/src/mainWindow.js @@ -134,6 +134,10 @@ export class MainWindow extends Gtk.ApplicationWindow { this.title = _("Maps"); } + showToast(message) { + Utils.showToastInOverlay(message, this._overlay); + } + _createPlaceEntry() { let placeEntry = new PlaceEntry({ mapView: this._mapView, visible: true, @@ -439,8 +443,7 @@ export class MainWindow extends Gtk.ApplicationWindow { Application.geoclue.start(() => { switch(Application.geoclue.state) { case Geoclue.State.FAILED: - message = _("Failed to connect to location service"); - Utils.showDialog(message, Gtk.MessageType.ERROR, this); + this.showToast(_("Failed to connect to location service")); break; case Geoclue.State.DENIED: @@ -634,5 +637,6 @@ GObject.registerClass({ 'grid', 'actionBar', 'actionBarRevealer', - 'placeBarContainer'] + 'placeBarContainer', + 'overlay'] }, MainWindow); diff --git a/src/mapView.js b/src/mapView.js index cc459d29..d7f91e5f 100644 --- a/src/mapView.js +++ b/src/mapView.js @@ -457,7 +457,7 @@ export class MapView extends Gtk.Overlay { } catch(e) { this.setMapType(MapView.MapType.STREET); Application.application.local_tile_path = false; - Utils.showDialog(e.message, Gtk.MessageType.ERROR, this._mainWindow); + this._mainWindow.showToast(e.message); return; } } @@ -498,8 +498,7 @@ export class MapView extends Gtk.Overlay { _onShapeLoad(error, bbox, layer) { if (error) { - let msg = _("Failed to open layer"); - Utils.showDialog(msg, Gtk.MessageType.ERROR, this._mainWindow); + this._mainWindow.showToast(_("Failed to open layer")); } else { bbox.compose(layer.bbox); } @@ -558,8 +557,7 @@ export class MapView extends Gtk.Overlay { } } catch (e) { Utils.debug(e); - let msg = _("Failed to open layer"); - Utils.showDialog(msg, Gtk.MessageType.ERROR, this._mainWindow); + this._mainWindow.showToast(_("Failed to open layer")); } } } @@ -590,8 +588,7 @@ export class MapView extends Gtk.Overlay { this._placeLayer.add_marker(marker); marker.goToAndSelect(true); } catch(e) { - let msg = _("Failed to open GeoURI"); - Utils.showDialog(msg, Gtk.MessageType.ERROR, this._mainWindow); + this._mainWindow.showToast(_("Failed to open GeoURI")); Utils.debug("failed to open GeoURI: %s".format(e.message)); } } @@ -605,7 +602,7 @@ export class MapView extends Gtk.Overlay { this._placeLayer.add_marker(marker); marker.goToAndSelect(true); } else { - Utils.showDialog(error, Gtk.MessageType.ERROR, this._mainWindow); + this._mainWindow.showToast(error); } }); } @@ -1030,9 +1027,7 @@ export class MapView extends Gtk.Overlay { if (place) { this.showPlace(place, true); } else { - let msg = _("Nothing found here!"); - - Utils.showDialog(msg, Gtk.MessageType.INFO, this._mainWindow); + this._mainWindow.showToast(_("Nothing found here!")); } }); } @@ -1091,8 +1086,7 @@ export class MapView extends Gtk.Overlay { dialog.connect('response', (dialog, response) => { dialog.destroy(); if (response === OSMEditDialog.Response.UPLOADED) { - Utils.showDialog(_("Location was added to the map, note that it may take a while before it shows on the map and in search results."), - Gtk.MessageType.INFO, this._mainWindow); + this._mainWindow.showToast(_("Location was added in OpenStreetMap")); } }); } diff --git a/src/osmAccountDialog.js b/src/osmAccountDialog.js index 1e83835d..b7359a40 100644 --- a/src/osmAccountDialog.js +++ b/src/osmAccountDialog.js @@ -126,7 +126,7 @@ export class OSMAccountDialog extends Gtk.Dialog { } } else { if (errorMessage) - Utils.showDialog(errorMessage, Gtk.MessageType.ERROR, this); + Utils.showToastInOverlay(errorMessage, this._overlay); /* switch back to the sign-in view, and show a label indicating that verification failed */ this._errorLabel.visible = true; @@ -154,5 +154,6 @@ GObject.registerClass({ 'verifyButton', 'errorLabel', 'signedInUserLabel', - 'signOutButton'], + 'signOutButton', + 'overlay'], }, OSMAccountDialog); diff --git a/src/osmEditDialog.js b/src/osmEditDialog.js index 32890c5e..82912aa3 100644 --- a/src/osmEditDialog.js +++ b/src/osmEditDialog.js @@ -838,8 +838,7 @@ export class OSMEditDialog extends Gtk.Dialog { this._cancellable, (wikidata) => { if (!wikidata) { - Utils.showDialog(_("Couldn't find Wikidata tag for article"), - Gtk.MessageType.ERROR, this); + Utils.showToastInOverlay(_("Couldn't find Wikidata tag for article"), this._overlay); return; } @@ -996,6 +995,7 @@ GObject.registerClass({ 'typeValueLabel', 'recentTypesLabel', 'recentTypesListBox', - 'headerBar'], + 'headerBar', + 'overlay'], }, OSMEditDialog); diff --git a/src/placeEntry.js b/src/placeEntry.js index 77df0837..19e6024c 100644 --- a/src/placeEntry.js +++ b/src/placeEntry.js @@ -264,8 +264,7 @@ export class PlaceEntry extends Gtk.SearchEntry { location.set_from_uri(this.text); this.place = new Place({ location: location }); } catch(e) { - let msg = _("Failed to parse Geo URI"); - Utils.showDialog(msg, Gtk.MessageType.ERROR, this.get_toplevel()); + this.root.showToast(_("Failed to parse Geo URI")); } parsed = true; @@ -277,8 +276,7 @@ export class PlaceEntry extends Gtk.SearchEntry { if (query) { this.text = query; } else { - let msg = _("Failed to parse Maps URI"); - Utils.showDialog(msg, Gtk.MessageType.ERROR, this.get_toplevel()); + this.root.showToast(_("Failed to parse Maps URI")); } parsed = true; @@ -306,8 +304,7 @@ export class PlaceEntry extends Gtk.SearchEntry { if (place) this.place = place; else - Utils.showDialog(error, - Gtk.MessageType.ERROR, this.get_toplevel()); + this.root.showToast(error); }); /* don't cancel ongoing search, as we have started an async diff --git a/src/sendToDialog.js b/src/sendToDialog.js index f2665417..257df649 100644 --- a/src/sendToDialog.js +++ b/src/sendToDialog.js @@ -178,8 +178,7 @@ export class SendToDialog extends Gtk.Dialog { try { Gio.app_info_launch_default_for_uri(uri, this._getAppLaunchContext()); } catch(e) { - Utils.showDialog(_("Failed to open URI"), Gtk.MessageType.ERROR, - this); + Utils.showToastInOverlay(_("Failed to open URI"), this._overlay); Utils.debug('failed to open URI: %s'.format(e.message)); } @@ -235,7 +234,8 @@ GObject.registerClass({ 'summaryUrl', 'copyButton', 'emailButton', - 'scrolledWindow' ] + 'scrolledWindow', + 'overlay'] }, SendToDialog); export class OpenWithRow extends Gtk.ListBoxRow { diff --git a/src/utils.js b/src/utils.js index 65057b6e..70b74caa 100644 --- a/src/utils.js +++ b/src/utils.js @@ -28,6 +28,7 @@ import GdkPixbuf from 'gi://GdkPixbuf'; import GeocodeGlib from 'gi://GeocodeGlib'; import Gio from 'gi://Gio'; import Gtk from 'gi://Gtk'; +import Adw from 'gi://Adw'; import GWeather from 'gi://GWeather'; const _ = gettext.gettext; @@ -453,17 +454,12 @@ export function isUsingHighContrastTheme() { return themeName === 'HighContrast' || themeName === 'HighContrastInverse'; } -export function showDialog(msg, type, transientFor) { - let messageDialog = - new Gtk.MessageDialog({ transient_for: transientFor, - destroy_with_parent: true, - message_type: type, - buttons: Gtk.ButtonsType.OK, - modal: true, - text: msg }); +export function showToastInOverlay(message, overlay) { + let toast = new Adw.Toast({ + title: message, + }); - messageDialog.connect('response', () => messageDialog.destroy()); - messageDialog.show(); + overlay.add_toast(toast); } let decoder = new TextDecoder('utf-8'); |