diff --git a/src/disks/gdu-benchmark-dialog.c b/src/disks/gdu-benchmark-dialog.c index b53906ecda47449c57b334abc61ff627617af862..2895508caa2aac571216740ceebfeb78f6c41793 100644 --- a/src/disks/gdu-benchmark-dialog.c +++ b/src/disks/gdu-benchmark-dialog.c @@ -29,7 +29,7 @@ typedef struct struct _GduBenchmarkDialog { - AdwWindow parent_instance; + AdwDialog parent_instance; GCancellable *cancellable; @@ -47,10 +47,10 @@ struct _GduBenchmarkDialog /* Results Page */ GtkWidget *drawing_area; - GtkWidget *sample_size_label; - GtkWidget *read_rate_label; - GtkWidget *write_rate_label; - GtkWidget *access_time_label; + GtkWidget *sample_size_action_row; + GtkWidget *read_rate_row; + GtkWidget *write_rate_row; + GtkWidget *access_time_row; /* must hold bm_lock when reading/writing these */ GError *bm_error; @@ -67,16 +67,18 @@ struct _GduBenchmarkDialog UDisksClient *client; UDisksObject *object; UDisksBlock *block; + + GtkWindow *parent_window; }; -G_DEFINE_TYPE (GduBenchmarkDialog, gdu_benchmark_dialog, ADW_TYPE_WINDOW) +G_DEFINE_TYPE (GduBenchmarkDialog, gdu_benchmark_dialog, ADW_TYPE_DIALOG) G_LOCK_DEFINE (bm_lock); static gpointer gdu_benchmark_dialog_get_window (GduBenchmarkDialog *self) { - return gtk_widget_get_ancestor (GTK_WIDGET (self), GTK_TYPE_WINDOW); + return self->parent_window; } static void @@ -144,29 +146,15 @@ get_max_min_avg (GArray *array) return ret; } -static gdouble -measure_width (cairo_t *cr, - const gchar *s) -{ - cairo_text_extents_t te; - cairo_text_extents (cr, s, &te); - return te.width; -} - -static gdouble -measure_height (cairo_t *cr, - const gchar *s) -{ - cairo_text_extents_t te; - cairo_text_extents (cr, s, &te); - return te.height; -} - static gboolean -on_drawing_area_draw (GtkWidget *widget, +on_drawing_area_draw (GtkDrawingArea *widget, cairo_t *cr, + int width, + int height, gpointer user_data) -{} +{ + /* gtk4 todo fill this function */ +} /* ---------------------------------------------------------------------------------------------------- */ @@ -192,7 +180,6 @@ format_stats (gdouble stat, static void update_dialog (GduBenchmarkDialog *self) { - GdkSurface *window = NULL; g_autoptr(GError) error = NULL; BMStats read_stats; BMStats write_stats; @@ -215,10 +202,10 @@ update_dialog (GduBenchmarkDialog *self) s = g_strdup ("–"); - gtk_label_set_text (GTK_LABEL (self->sample_size_label), s); - gtk_label_set_text (GTK_LABEL (self->read_rate_label), s); - gtk_label_set_text (GTK_LABEL (self->write_rate_label), s); - gtk_label_set_text (GTK_LABEL (self->access_time_label), s); + adw_action_row_set_subtitle (ADW_ACTION_ROW (self->sample_size_action_row), s); + adw_action_row_set_subtitle (ADW_ACTION_ROW (self->read_rate_row), s); + adw_action_row_set_subtitle (ADW_ACTION_ROW (self->write_rate_row), s); + adw_action_row_set_subtitle (ADW_ACTION_ROW (self->access_time_row), s); return; } @@ -231,29 +218,25 @@ update_dialog (GduBenchmarkDialog *self) if (read_stats.avg != 0.0) { s = format_stats (read_stats.avg, self->read_samples->len, FALSE); - gtk_label_set_markup (GTK_LABEL (self->read_rate_label), s); + adw_action_row_set_subtitle (ADW_ACTION_ROW (self->read_rate_row), s); g_free (s); } if (write_stats.avg != 0.0) { s = format_stats (write_stats.avg, self->write_samples->len, FALSE); - gtk_label_set_markup (GTK_LABEL (self->write_rate_label), s); + adw_action_row_set_subtitle (ADW_ACTION_ROW (self->write_rate_row), s); g_free (s); } if (atime_stats.avg != 0.0) { s = format_stats (atime_stats.avg, self->atime_samples->len, TRUE); - gtk_label_set_markup (GTK_LABEL (self->access_time_label), s); + adw_action_row_set_subtitle (ADW_ACTION_ROW (self->access_time_row), s); g_free (s); } - /* gtk4 todo - window = gtk_widget_get_window (self->drawing_area); - if (window != NULL) - gdk_window_invalidate_rect (window, NULL, TRUE); - */ + gtk_widget_queue_draw (self->drawing_area); } /* called on main / UI thread */ @@ -579,7 +562,7 @@ benchmark_thread (gpointer user_data) sample_size_mib = g_settings_get_int (self->settings, "sample-size-mib"); inhibit_cookie = gtk_application_inhibit ((gpointer)g_application_get_default (), - GTK_WINDOW (self), + self->parent_window, GTK_APPLICATION_INHIBIT_SUSPEND | GTK_APPLICATION_INHIBIT_LOGOUT, /* Translators: Reason why suspend/logout is being inhibited */ @@ -655,7 +638,7 @@ start_benchmark (GduBenchmarkDialog *self) if (sample_size != 0) { s = g_format_size_full (sample_size, G_FORMAT_SIZE_IEC_UNITS | G_FORMAT_SIZE_LONG_FORMAT); - gtk_label_set_markup (GTK_LABEL (self->sample_size_label), s); + adw_action_row_set_subtitle (ADW_ACTION_ROW (self->sample_size_action_row), s); } g_thread_new ("benchmark-thread", @@ -759,18 +742,14 @@ gdu_benchmark_dialog_class_init (GduBenchmarkDialogClass *klass) gtk_widget_class_bind_template_child (widget_class, GduBenchmarkDialog, write_bench_switch); gtk_widget_class_bind_template_child (widget_class, GduBenchmarkDialog, drawing_area); - gtk_widget_class_bind_template_child (widget_class, GduBenchmarkDialog, sample_size_label); - gtk_widget_class_bind_template_child (widget_class, GduBenchmarkDialog, read_rate_label); - gtk_widget_class_bind_template_child (widget_class, GduBenchmarkDialog, write_rate_label); - gtk_widget_class_bind_template_child (widget_class, GduBenchmarkDialog, access_time_label); + gtk_widget_class_bind_template_child (widget_class, GduBenchmarkDialog, sample_size_action_row); + gtk_widget_class_bind_template_child (widget_class, GduBenchmarkDialog, read_rate_row); + gtk_widget_class_bind_template_child (widget_class, GduBenchmarkDialog, write_rate_row); + gtk_widget_class_bind_template_child (widget_class, GduBenchmarkDialog, access_time_row); gtk_widget_class_bind_template_callback (widget_class, set_sample_size_unit_cb); gtk_widget_class_bind_template_callback (widget_class, on_start_clicked_cb); gtk_widget_class_bind_template_callback (widget_class, on_cancel_clicked_cb); - - gtk_widget_class_add_binding_action (widget_class, - GDK_KEY_Escape, 0, "window.close", - NULL); } void @@ -790,6 +769,8 @@ gdu_benchmark_dialog_init (GduBenchmarkDialog *self) self->atime_samples = g_array_new (FALSE, /* zero-terminated */ FALSE, /* clear */ sizeof (BMSample)); + + gtk_drawing_area_set_draw_func (GTK_DRAWING_AREA (self->drawing_area), (GtkDrawingAreaDrawFunc) on_drawing_area_draw, NULL, NULL); } void @@ -799,10 +780,9 @@ gdu_benchmark_dialog_show (GtkWindow *parent_window, { GduBenchmarkDialog *self; - self = g_object_new (GDU_TYPE_BENCHMARK_DIALOG, - "transient-for", parent_window, - NULL); + self = g_object_new (GDU_TYPE_BENCHMARK_DIALOG, NULL); self->object = g_object_ref (object); + self->parent_window = g_object_ref (parent_window); self->block = udisks_object_peek_block (self->object); self->client = client; @@ -824,5 +804,5 @@ gdu_benchmark_dialog_show (GtkWindow *parent_window, adw_switch_row_set_active (ADW_SWITCH_ROW (self->write_bench_switch), FALSE); } - gtk_window_present (GTK_WINDOW (self)); + adw_dialog_present (ADW_DIALOG (self), GTK_WIDGET (parent_window)); } diff --git a/src/disks/gdu-benchmark-dialog.h b/src/disks/gdu-benchmark-dialog.h index 69e07ff19a78266b33dfb0f74ed949bdad12165a..b8b3df00ba521e8bbf0f752eab548d31d882f2ac 100644 --- a/src/disks/gdu-benchmark-dialog.h +++ b/src/disks/gdu-benchmark-dialog.h @@ -14,7 +14,7 @@ G_BEGIN_DECLS #define GDU_TYPE_BENCHMARK_DIALOG (gdu_benchmark_dialog_get_type ()) -G_DECLARE_FINAL_TYPE (GduBenchmarkDialog, gdu_benchmark_dialog, GDU, BENCHMARK_DIALOG, AdwWindow) +G_DECLARE_FINAL_TYPE (GduBenchmarkDialog, gdu_benchmark_dialog, GDU, BENCHMARK_DIALOG, AdwDialog) void gdu_benchmark_dialog_show (GtkWindow *window, UDisksObject *object, diff --git a/src/disks/ui/gdu-benchmark-dialog.ui b/src/disks/ui/gdu-benchmark-dialog.ui index 2d84b3f8a0da56aea11f0fff6cfae9ba34672a4f..c2ec3bdec862b1b5a7fbcaa21b452602c376f89a 100644 --- a/src/disks/ui/gdu-benchmark-dialog.ui +++ b/src/disks/ui/gdu-benchmark-dialog.ui @@ -1,9 +1,8 @@ -