diff --git a/data/ui/main.blp b/data/ui/main.blp
index 812999e..6073a2c 100644
--- a/data/ui/main.blp
+++ b/data/ui/main.blp
@@ -3,7 +3,7 @@ using Adw 1;
Adw.ApplicationWindow mainWindow {
title: "Wince";
- default-width: 400;
+ default-width: 600;
default-height: 500;
Gtk.Box {
@@ -15,7 +15,9 @@ Adw.ApplicationWindow mainWindow {
orientation: horizontal;
margin-top: 10;
margin-start: 14;
+ margin-bottom: 14;
margin-end: 14;
+ halign: center;
styles ["linked"]
@@ -30,14 +32,19 @@ Adw.ApplicationWindow mainWindow {
}
}
- Gtk.ScrolledWindow {
+ Gtk.ScrolledWindow scrollWindow {
vexpand: true;
+ visible: false;
- Gtk.ListBox searchResults {
- margin-top: 14;
- margin-start: 14;
- margin-end: 14;
- }
+ Gtk.ListBox searchResults {}
+ }
+
+ Gtk.Label poweredByText {
+ halign: center;
+ valign: center;
+ vexpand: true;
+ use-markup: true;
+ label: "Wince is powered by Yelp";
}
}
}
diff --git a/data/ui/templates.blp b/data/ui/templates.blp
index e584633..e7f6ebf 100644
--- a/data/ui/templates.blp
+++ b/data/ui/templates.blp
@@ -2,26 +2,28 @@ using Gtk 4.0;
using Adw 1;
template Wince-BusinessRow : Gtk.ListBoxRow {
- styles ["card"]
- margin-bottom: 14;
Gtk.Box {
orientation: vertical;
- margin-start: 8;
- margin-top: 8;
+ margin-start: 24;
+ margin-top: 12;
+ margin-bottom: 12;
Gtk.Label businessName {
styles ["heading"]
xalign: 0;
}
- Gtk.Label businessRating {
- xalign: 0;
- }
- Gtk.Label businessHours {
- xalign: 0;
- }
- Gtk.LinkButton businessWebsite {
+ Gtk.Box {
+ orientation: horizontal;
halign: start;
+ spacing: 12;
+
+ Gtk.Label businessOpen {
+ }
+ Gtk.Label businessRating {
+ }
+ Gtk.Label businessDistance {
+ }
}
}
}
\ No newline at end of file
diff --git a/src/modules/templates/businessrow.cr b/src/modules/templates/businessrow.cr
index 0f16c09..ff26894 100644
--- a/src/modules/templates/businessrow.cr
+++ b/src/modules/templates/businessrow.cr
@@ -1,26 +1,30 @@
module Wince
- @[Gtk::UiTemplate(resource: "/wince/ui/compiled/templates.ui", children: %w(businessName businessRating businessHours businessWebsite))]
+ @[Gtk::UiTemplate(resource: "/wince/ui/compiled/templates.ui", children: %w(businessName businessRating businessOpen businessDistance))]
class BusinessRow < Gtk::ListBoxRow
include Gtk::WidgetTemplate
@name : Gtk::Label
@rating : Gtk::Label
- @hours : Gtk::Label
- @website : Gtk::LinkButton
+ @open : Gtk::Label
+ @distance : Gtk::Label
- def initialize(name : String, rating : String, hours : String, website : String)
+ def initialize(name : String, rating : Float32, open : Bool, distance : Float32)
super()
@name = Gtk::Label.cast(template_child("businessName"))
@rating = Gtk::Label.cast(template_child("businessRating"))
- @hours = Gtk::Label.cast(template_child("businessHours"))
- @website = Gtk::LinkButton.cast(template_child("businessWebsite"))
+ @open = Gtk::Label.cast(template_child("businessOpen"))
+ @distance = Gtk::Label.cast(template_child("businessDistance"))
@name.text = name
- @rating.text = rating
- @hours.text = hours
- @website.uri = website
- @website.label = "view on yelp"
+ @rating.text = rating.round(2).to_s
+ if open
+ @open.markup = "open"
+ else
+ @open.markup = "closed"
+ end
+ distance_miles = distance / 1609.344
+ @distance.text = distance_miles.round(2).to_s + "mi"
end
end
end
\ No newline at end of file
diff --git a/src/modules/views/main.cr b/src/modules/views/main.cr
index 25474e7..98807e3 100644
--- a/src/modules/views/main.cr
+++ b/src/modules/views/main.cr
@@ -28,11 +28,11 @@ module Wince
businesses.map do |business|
name = business["name"].as_s? || ""
- rating = business["rating"].as_f.to_s
- hours = business["is_closed"].as_bool.to_s
- website = business["url"].as_s? || ""
+ rating = business["rating"].as_f32
+ open = business["is_closed"].as_bool
+ distance = business["distance"].as_f32
- BusinessRow.new(name, rating, hours, website)
+ BusinessRow.new(name, rating, open, distance)
end
end
@@ -44,10 +44,15 @@ module Wince
search = SEARCH_ENTRY.buffer.text
location = LOCATION_ENTRY.buffer.text
- if !search || !location
+ if search.blank? || location.blank?
+ SCROLL_VIEW.visible = false
+ POWERD_BY_TEXT.visible = true
return
end
+ SCROLL_VIEW.visible = true
+ POWERD_BY_TEXT.visible = false
+
response = Yelp.search_businesses(search, location)
if response.status_code != 200
diff --git a/src/wince.cr b/src/wince.cr
index 38589d4..bcbd520 100644
--- a/src/wince.cr
+++ b/src/wince.cr
@@ -10,6 +10,8 @@ module Wince
LOCATION_ENTRY = Gtk::Entry.cast(B_UI["locationEntry"])
SEARCH_BUTTON = Gtk::Button.cast(B_UI["searchButton"])
BUSINESS_LIST = Gtk::ListBox.cast(B_UI["searchResults"])
+ POWERD_BY_TEXT = Gtk::Label.cast(B_UI["poweredByText"])
+ SCROLL_VIEW = Gtk::ScrolledWindow.cast(B_UI["scrollWindow"])
APP = Adw::Application.new("dev.wince", Gio::ApplicationFlags::None)
end