Increasing responsiveness for phones.

This commit is contained in:
sergiotarxz 2024-07-05 00:04:20 +02:00
parent bea2908f03
commit 7df253bb89
1 changed files with 28 additions and 45 deletions

View File

@ -47,6 +47,7 @@ Glib::Object::Introspection->setup(
has _counter => ( is => 'rw', );
has _headerbar => ( is => 'rw', );
has _on_resize_lesson => ( is => 'rw', );
has _gresources_path => ( is => 'lazy', );
@ -124,46 +125,6 @@ sub _new_challenge_generic_code( $self, $window, $type, $show, $guess ) {
}
}
);
# my $dialog = Adw::Dialog->new;
# $dialog->set_content_width(460);
# $dialog->set_content_height(400);
# my $main_box = Gtk::Box->new('vertical', 0);
# $main_box->set_vexpand(1);
# my $grid = Gtk::Grid->new;
# my $headerbar = Adw::HeaderBar->new;
# $main_box->append($headerbar);
# my $label = Gtk::Label->new('You are about to exit the lesson');
# $main_box->append($label);
# $label->set_property('height_request', 250);
# $label->set_valign('center');
# $label->set_halign('center');
# my $attr_list = Pango::AttrList->new;
# my $size = Pango::AttrSize->new(18 * PANGO_SCALE);
# $attr_list->insert($size);
# $label->set_attributes($attr_list);
# my $button_box = Gtk::Box->new('horizontal', 15);
# $button_box->set_halign('center');
# $button_box->set_property('height_request', 50);
# $button_box->set_valign('end');
# my $button_accept = Gtk::Button->new_with_label('Lose all progress');
# my $button_reject = Gtk::Button->new_with_label('Continue the lesson');
# $button_accept->signal_connect('clicked', sub {
# $dialog->close;
# $self->_create_main_menu($window);
# });
# $button_reject->signal_connect('clicked', sub {
# $dialog->close;
# });
# $button_accept->set_valign('end');
# $button_reject->set_valign('end');
# $button_accept->add_css_class('destructive-action');
# $button_reject->add_css_class('suggested-action');
# $main_box->append($button_box);
# $button_box->append($button_accept);
# $button_box->append($button_reject);
# $dialog->set_child($main_box);
# $dialog->present($window);
}
);
$self->_headerbar->pack_start($back_button);
@ -206,13 +167,26 @@ sub _new_challenge_generic_code( $self, $window, $type, $show, $guess ) {
my $box = Gtk::Box->new( 'horizontal', 10 );
$box->set_valign('center');
$box->set_halign('center');
my $resize_buttons = sub {
my $window_size = $window->get_property('default-width');
# $box->set_spacing(20 * $window_size / 420);
for my $button (@buttons) {
my $attr_list = Pango::AttrList->new;
my $size_number = 60 * $window_size;
my $size_pango_number = PANGO_SCALE * 60;
my $size = Pango::AttrSize->new( $size_number );
if ($size_pango_number < $size_number) {
$size = Pango::AttrSize->new( $size_pango_number );
}
$attr_list->insert($size);
$button->get_child->set_attributes($attr_list);
}
};
$resize_buttons->();
for my $button (@buttons) {
my $attr_list = Pango::AttrList->new;
my $size = Pango::AttrSize->new( 42 * PANGO_SCALE );
$attr_list->insert($size);
$button->get_child->set_attributes($attr_list);
$box->append($button);
}
$self->_on_resize_lesson($resize_buttons);
my $first_press_continue = 1;
$continue_button->signal_connect(
'clicked',
@ -237,8 +211,9 @@ sub _new_challenge_generic_code( $self, $window, $type, $show, $guess ) {
$char->fail;
}
my $attr_list = Pango::AttrList->new;
my $size = Pango::AttrSize->new( 18 * PANGO_SCALE );
my $size = Pango::AttrSize->new( 23 * $window->get_property('default-width') );
$attr_list->insert($size);
$label_feedback->set_halign('center');
$label_feedback->set_attributes($attr_list);
$grid->attach( $label_feedback, 0, 2, 7, 1 );
}
@ -278,6 +253,7 @@ sub _create_main_menu( $self, $window ) {
my $grid = Gtk::Grid->new;
my $button_start_basic_lesson =
Gtk::Button->new_with_label('Basic Characters');
$self->_on_resize_lesson(undef);
$button_start_basic_lesson->signal_connect(
'clicked',
sub {
@ -335,6 +311,13 @@ sub _window_set_child( $self, $window, $child ) {
sub _application_start( $self, $app ) {
my $main_window = Adw::ApplicationWindow->new($app);
$main_window->set_default_size( 600, 600 );
$main_window->signal_connect(notify => sub($object, $param) {
if ($param->{name} eq 'default-width') {
if (defined $self->_on_resize_lesson) {
$self->_on_resize_lesson->();
}
}
});
my $display = $main_window->get_property('display');
$self->_create_main_menu($main_window);
$main_window->present;