summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelipe Kinoshita <kinofhek@gmail.com>2023-03-20 20:11:03 +0000
committerMarcus Lundblad <ml@dfupdate.se>2023-03-20 20:11:03 +0000
commitf770faed34ef9397328fb9d3bca025a2ac06c049 (patch)
tree62ae5ce7402568c1667ffc383964b60aa721b68c
parentf88b6bd3e52d5f0e8ec741ab56afe1e0dcdf546b (diff)
downloadgnome-maps-f770faed34ef9397328fb9d3bca025a2ac06c049.tar.gz
Make use of Adw.Toast
-rw-r--r--data/ui/main-window.ui53
-rw-r--r--data/ui/osm-account-dialog.ui420
-rw-r--r--data/ui/osm-edit-dialog.ui345
-rw-r--r--data/ui/send-to-dialog.ui188
-rw-r--r--src/application.js9
-rw-r--r--src/mainWindow.js10
-rw-r--r--src/mapView.js20
-rw-r--r--src/osmAccountDialog.js5
-rw-r--r--src/osmEditDialog.js6
-rw-r--r--src/placeEntry.js9
-rw-r--r--src/sendToDialog.js6
-rw-r--r--src/utils.js16
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">&lt;span weight=&quot;bold&quot; size=&quot;x-large&quot;&gt;Sign in to edit maps&lt;/span&gt;</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">&lt;span weight=&quot;bold&quot; size=&quot;x-large&quot;&gt;Sign in to edit maps&lt;/span&gt;</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">&lt;span weight=&quot;bold&quot; size=&quot;x-large&quot;&gt;Signed In&lt;/span&gt;</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">&lt;span weight=&quot;bold&quot; size=&quot;x-large&quot;&gt;Signed In&lt;/span&gt;</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');