From 9aa5741e1a53f0343c5eb7f1a342afb18a4e2c41 Mon Sep 17 00:00:00 2001 From: Zoe Moore Date: Sun, 18 Dec 2022 23:13:52 -0800 Subject: [PATCH] Lots of style improvements --- data/ui/main.blp | 21 ++++++++++++++------- data/ui/templates.blp | 24 +++++++++++++----------- src/modules/templates/businessrow.cr | 24 ++++++++++++++---------- src/modules/views/main.cr | 15 ++++++++++----- src/wince.cr | 2 ++ 5 files changed, 53 insertions(+), 33 deletions(-) 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