diff --git a/src/calculations/calculations_milky_way.c b/src/calculations/calculations_milky_way.c index f8fbd2f..3dd6f66 100644 --- a/src/calculations/calculations_milky_way.c +++ b/src/calculations/calculations_milky_way.c @@ -4,16 +4,16 @@ double *picplanner_get_coordinates_rotational_milky_way (void) { - double *coordinates = malloc (sizeof (double) * 2); double right_ascension = 266.417; double declination = -29.008; + double *coordinates_rotational = malloc (sizeof (double) * 2); /* Coordinates are nearly fixed compared to the non rotating coordinate system of the earth. * Values taken from Wikipedia? TODO*/ - coordinates[0] = right_ascension; - coordinates[1] = declination; + coordinates_rotational[0] = right_ascension; + coordinates_rotational[1] = declination; - return coordinates; + return coordinates_rotational; } @@ -24,7 +24,7 @@ double { double siderial_time; double *coordinates_milky_way; - double *coordinates_horizontal_milky_way = malloc (sizeof (double) * 2 * 288); + double *coordinates_horizontal_milky_way = malloc (sizeof (double) * 2 * NUM_DATA_POINTS); coordinates_milky_way = picplanner_get_coordinates_rotational_milky_way (); siderial_time = time_jd_to_sidereal_time (longitude, date_time); @@ -32,6 +32,8 @@ double latitude, siderial_time); + g_free (coordinates_milky_way); + return coordinates_horizontal_milky_way; } @@ -56,6 +58,8 @@ double array_coordinates_milky_way[2*i+1] = coordinates_milky_way[1]; iteration_time = g_date_time_add_minutes (iteration_time, 24*60/NUM_DATA_POINTS); } + g_date_time_unref (iteration_time); + g_free (coordinates_milky_way); return array_coordinates_milky_way; } diff --git a/src/calculations/calculations_milky_way.h b/src/calculations/calculations_milky_way.h index 32f0a29..cc8ef5e 100644 --- a/src/calculations/calculations_milky_way.h +++ b/src/calculations/calculations_milky_way.h @@ -2,14 +2,13 @@ double -*picplanner_get_coordinates_rotational_milky_way (void); +*picplanner_get_coordinates_rotational_milky_way (); double *picplanner_get_coordinates_milky_way (GDateTime *date_time, double longitude, double latitude); - double *picplanner_get_array_coordinates_milky_way (GDateTime *date_time, double longitude, diff --git a/src/calculations/calculations_moon.c b/src/calculations/calculations_moon.c index 91873f7..461ffab 100644 --- a/src/calculations/calculations_moon.c +++ b/src/calculations/calculations_moon.c @@ -62,6 +62,8 @@ double latitude, siderial_time); + g_free (coordinates_moon); + return coordinates_horizontal_moon; } @@ -87,5 +89,8 @@ double iteration_time = g_date_time_add_minutes (iteration_time, 24*60/NUM_DATA_POINTS); } + g_date_time_unref (iteration_time); + g_free (coordinates_moon); + return array_coordinates_moon; } diff --git a/src/calculations/calculations_sun.c b/src/calculations/calculations_sun.c index 73708a6..bbdba6f 100644 --- a/src/calculations/calculations_sun.c +++ b/src/calculations/calculations_sun.c @@ -48,11 +48,13 @@ double double *coordinates_sun; double *coordinates_horizontal_sun = malloc (sizeof (double) * 2 * 288); + coordinates_sun = picplanner_get_coordinates_rotational_sun (date_time); siderial_time = time_jd_to_sidereal_time (longitude, date_time); coordinates_horizontal_sun = picplanner_transform_rotational_to_horizontal (coordinates_sun, latitude, siderial_time); + g_free (coordinates_sun); return coordinates_horizontal_sun; } @@ -67,6 +69,7 @@ double double *coordinates_sun; double *array_coordinates_sun = malloc (sizeof (double) * 2 * NUM_DATA_POINTS); + iteration_time = g_date_time_add_hours (date_time, -12); for (int i=0; i combining all of this leads to the above formula. */ + g_date_time_unref (date_time_utc); + return time_jd; } @@ -158,7 +160,8 @@ double double x, y; double azimuth, elevation; double right_ascension, declination; - double *coordinates_hor = malloc (sizeof (double) * 2); + double *coordinates_horizontal = malloc (sizeof (double) * 2); + latitude = calc_deg_to_rad (latitude); time_sidereal = calc_deg_to_rad (time_sidereal); @@ -186,20 +189,22 @@ double elevation = asin (sin (latitude) * sin (declination) + cos (latitude) * cos (declination) * cos (time_sidereal - right_ascension)); + /* TODO * explanation missing!! * */ /* g_print("Latitude %f, RA %f, dec %f, time_sidereal %f, azimuth %f, elevation %f\n", latitude, right_ascension, declination, time_sidereal, azimuth, elevation); */ + azimuth = calc_rad_to_deg (azimuth); elevation = calc_rad_to_deg (elevation); - coordinates_hor [0] = azimuth; - coordinates_hor [1] = elevation; + coordinates_horizontal [0] = azimuth; + coordinates_horizontal [1] = elevation; /*g_print("Azimuth: %f, Elevation: %f\n", azimuth, elevation);*/ - return coordinates_hor; + return coordinates_horizontal; } diff --git a/src/meson.build b/src/meson.build index 3cfd59f..e2f5fb3 100644 --- a/src/meson.build +++ b/src/meson.build @@ -15,7 +15,10 @@ picplanner_sources = [ picplanner_deps = [ dependency('gtk4'), + dependency('libadwaita-1'), dependency('shumate-1.0'), + dependency('libsoup-2.4'), + dependency('json-glib-1.0'), meson.get_compiler('c').find_library('m', required: false), ] diff --git a/src/picplanner-application.c b/src/picplanner-application.c index 8b0d42a..bb0b0d1 100644 --- a/src/picplanner-application.c +++ b/src/picplanner-application.c @@ -27,7 +27,7 @@ struct _PicplannerApplication }; -G_DEFINE_TYPE (PicplannerApplication, picplanner_application, GTK_TYPE_APPLICATION) +G_DEFINE_TYPE (PicplannerApplication, picplanner_application, ADW_TYPE_APPLICATION) void @@ -41,6 +41,8 @@ first_run_set_timezone (PicplannerApplication *application) g_settings_set_int (application->settings, "time-zone", timezone/3600/1000/1000); g_settings_set_boolean (application->settings, "first-run", false); + + g_date_time_unref (date_time); } @@ -78,7 +80,7 @@ picplanner_application_activate (GApplication *app) window = g_object_new (PICPLANNER_TYPE_WINDOW, "application", app, "default-width", 600, - "default-height", 800, + "default-height", 850, NULL); /* Ask the window manager/compositor to present the window. */ diff --git a/src/picplanner-application.h b/src/picplanner-application.h index 0e3e99f..d73bffc 100644 --- a/src/picplanner-application.h +++ b/src/picplanner-application.h @@ -19,12 +19,13 @@ #pragma once #include +#include G_BEGIN_DECLS #define PICPLANNER_TYPE_APPLICATION (picplanner_application_get_type()) -G_DECLARE_FINAL_TYPE (PicplannerApplication, picplanner_application, PICPLANNER, APPLICATION, GtkApplication) +G_DECLARE_FINAL_TYPE (PicplannerApplication, picplanner_application, PICPLANNER, APPLICATION, AdwApplication) PicplannerApplication *picplanner_application_new (gchar *application_id, GApplicationFlags flags); diff --git a/src/window/milky-way-page/milky-way-view.c b/src/window/milky-way-page/milky-way-view.c index d07623b..38f5237 100644 --- a/src/window/milky-way-page/milky-way-view.c +++ b/src/window/milky-way-page/milky-way-view.c @@ -23,9 +23,9 @@ picplanner_milky_way_set_rise_upper_set (GDateTime *date_time, date_time_upper = g_date_time_add_minutes (date_time, index_rise_upper_set[1]*24*60/NUM_DATA_POINTS-12*60); date_time_set = g_date_time_add_minutes (date_time, index_rise_upper_set[2]*24*60/NUM_DATA_POINTS-12*60); - (void) date_time_rise; - (void) date_time_upper; - (void) date_time_set; + g_date_time_unref (date_time_rise); + g_date_time_unref (date_time_upper); + g_date_time_unref (date_time_set); } diff --git a/src/window/moon-page/moon-view.c b/src/window/moon-page/moon-view.c index 2e96796..0995240 100644 --- a/src/window/moon-page/moon-view.c +++ b/src/window/moon-page/moon-view.c @@ -23,9 +23,9 @@ picplanner_moon_set_rise_upper_set (GDateTime *date_time, date_time_upper = g_date_time_add_minutes (date_time, index_rise_upper_set[1]*24*60/NUM_DATA_POINTS-12*60); date_time_set = g_date_time_add_minutes (date_time, index_rise_upper_set[2]*24*60/NUM_DATA_POINTS-12*60); - (void) date_time_rise; - (void) date_time_upper; - (void) date_time_set; + g_date_time_unref (date_time_rise); + g_date_time_unref (date_time_upper); + g_date_time_unref (date_time_set); } diff --git a/src/window/overview-page/overview-view.c b/src/window/overview-page/overview-view.c index 4366181..be4e01b 100644 --- a/src/window/overview-page/overview-view.c +++ b/src/window/overview-page/overview-view.c @@ -133,6 +133,8 @@ change_date_time_position (PicplannerOverview *overview) * Emit a signal that the user changed the input. */ g_signal_emit (overview, signal_input_changed, 0, NULL); + + g_date_time_unref (date_selected); } @@ -232,6 +234,9 @@ day_selected (GtkCalendar *self, PicplannerOverview *overview) */ popover = GTK_POPOVER(overview->calendar_popover); gtk_popover_popdown (popover); + + g_free (button_text); + g_date_time_unref (date_selected); } diff --git a/src/window/picplanner-window.c b/src/window/picplanner-window.c index b5f3b13..68d9875 100644 --- a/src/window/picplanner-window.c +++ b/src/window/picplanner-window.c @@ -32,6 +32,8 @@ struct _PicplannerWindow /* Template widgets */ GtkHeaderBar *header_bar; + GtkWidget *box_main; + GtkWidget *stack; GtkWidget *search_bar; /* Search bar for the location */ GtkWidget *search_entry; /* The search entry inside the search bar */ GtkWidget *search_button; /* The search button in the header bar so show the search bar */ @@ -47,14 +49,53 @@ struct _PicplannerWindow guint search_timeout_id; }; -G_DEFINE_TYPE (PicplannerWindow, picplanner_window, GTK_TYPE_APPLICATION_WINDOW) +G_DEFINE_TYPE (PicplannerWindow, picplanner_window, ADW_TYPE_APPLICATION_WINDOW) static void websearch (PicplannerWindow *window) { - (void) window; g_print("Searching...\n"); + char uri_string[200]; + const gchar *nominatim_url = "https://nominatim.openstreetmap.org/search?q="; + const gchar *search_location = gtk_editable_get_text (GTK_EDITABLE (window->search_entry)); + const gchar *nominatim_settings = "&format=geojson"; + sprintf (uri_string, "%s%s%s", nominatim_url, search_location, nominatim_settings); + GUri *uri = g_uri_parse (uri_string, G_URI_FLAGS_NONE, NULL); + g_print ("%s\n", g_uri_to_string (uri)); + + SoupSession *session = soup_session_new_with_options (SOUP_SESSION_USER_AGENT, "testagent", + NULL); + SoupMessage *msg = soup_message_new (SOUP_METHOD_GET,g_uri_to_string(uri)); + soup_session_send_message (session, msg); + + JsonParser *parser; + JsonNode *root; + JsonObject *features; + JsonArray *array; + + parser = json_parser_new (); + json_parser_load_from_data (parser, msg->response_body->data, -1, NULL); + root = json_parser_get_root (parser); + features = json_node_get_object (root); + array = json_object_get_array_member (features, "features"); + + for (uint i = 0; i < json_array_get_length (array); i++) + { + JsonNode *node; + JsonObject *object; + JsonNode *node_properties; + JsonObject *object_properties; + const gchar *char_display_name; + + node = json_array_get_element (array, i); + object = json_node_get_object (node); + node_properties = json_object_get_member (object, "properties"); + object_properties = json_node_get_object (node_properties); + char_display_name = json_object_get_string_member (object_properties, "display_name"); + g_print ("%s\n", char_display_name); + + } } @@ -118,6 +159,7 @@ input_changed (GtkWidget *self, date_time = picplanner_overview_get_date_time (PICPLANNER_OVERVIEW (window->overview_box)); /* Sun */ + array_coordinates_sun = picplanner_get_array_coordinates_sun (date_time, longitude, latitude); @@ -132,7 +174,9 @@ input_changed (GtkWidget *self, (void) dark_blue_golden_index; + /* Moon */ + /* array_coordinates_moon = picplanner_get_array_coordinates_moon (date_time, longitude, latitude); @@ -140,8 +184,9 @@ input_changed (GtkWidget *self, picplanner_moon_set_rise_upper_set (date_time, array_coordinates_sun, rise_upper_set_index_moon); - + */ /* Milky Way */ + /* array_coordinates_milky_way = picplanner_get_array_coordinates_milky_way (date_time, longitude, latitude); @@ -149,6 +194,14 @@ input_changed (GtkWidget *self, picplanner_milky_way_set_rise_upper_set (date_time, array_coordinates_sun, rise_upper_set_index_milky_way); + */ + g_free (rise_upper_set_index_sun); + //g_free (rise_upper_set_index_moon); + //g_free (rise_upper_set_index_milky_way); + g_free (dark_blue_golden_index); + g_free (array_coordinates_sun); + //g_free (array_coordinates_moon); + //g_free (array_coordinates_milky_way); } @@ -163,6 +216,8 @@ picplanner_window_class_init (PicplannerWindowClass *klass) g_type_ensure (PICPLANNER_MILKYWAY_TYPE); gtk_widget_class_set_template_from_resource (widget_class, "/de/zwarf/picplanner/window/picplanner-window.ui"); + gtk_widget_class_bind_template_child (widget_class, PicplannerWindow, box_main); + gtk_widget_class_bind_template_child (widget_class, PicplannerWindow, stack); gtk_widget_class_bind_template_child (widget_class, PicplannerWindow, header_bar); gtk_widget_class_bind_template_child (widget_class, PicplannerWindow, search_bar); gtk_widget_class_bind_template_child (widget_class, PicplannerWindow, search_entry); diff --git a/src/window/picplanner-window.h b/src/window/picplanner-window.h index 597f7f3..2d3269e 100644 --- a/src/window/picplanner-window.h +++ b/src/window/picplanner-window.h @@ -19,6 +19,9 @@ #pragma once #include +#include +#include +#include #include "picplanner-config.h" #include "picplanner-application.h" @@ -28,7 +31,7 @@ G_BEGIN_DECLS #define PICPLANNER_TYPE_WINDOW picplanner_window_get_type() -G_DECLARE_FINAL_TYPE (PicplannerWindow, picplanner_window, PICPLANNER, WINDOW, GtkApplicationWindow) +G_DECLARE_FINAL_TYPE (PicplannerWindow, picplanner_window, PICPLANNER, WINDOW, AdwApplicationWindow) PicplannerWindow *picplanner_window_new (PicplannerApplication *app); void picplanner_window_open (PicplannerWindow *win, GFile *file); diff --git a/src/window/picplanner-window.ui b/src/window/picplanner-window.ui index 11cbf3c..1e0a372 100644 --- a/src/window/picplanner-window.ui +++ b/src/window/picplanner-window.ui @@ -17,105 +17,122 @@ vertical -