21
21
22
22
#include "exm-detail-view.h"
23
23
24
- #include "exm-screenshot.h"
25
- #include "exm-screenshot-view.h"
26
- #include "exm-info-bar.h"
27
- #include "exm-comment-tile.h"
24
+ #include "exm-config.h"
28
25
#include "exm-comment-dialog.h"
26
+ #include "exm-comment-tile.h"
27
+ #include "exm-enums.h"
29
28
#include "exm-install-button.h"
30
29
#include "exm-screenshot.h"
31
-
30
+ #include "exm-screenshot-view.h"
31
+ #include "exm-types.h"
32
+ #include "exm-versions-dialog.h"
33
+ #include "local/exm-manager.h"
34
+ #include "web/exm-comment-provider.h"
32
35
#include "web/exm-data-provider.h"
33
36
#include "web/exm-image-resolver.h"
34
- #include "web/exm-comment-provider.h"
35
- #include "web/model/exm-shell-version-map.h"
36
37
#include "web/model/exm-comment.h"
37
- #include "local/exm-manager.h"
38
-
39
- #include "exm-types.h"
40
- #include "exm-enums.h"
41
-
42
- #include "exm-config.h"
38
+ #include "web/model/exm-shell-version-map.h"
43
39
44
40
#include <glib/gi18n.h>
45
41
@@ -69,7 +65,9 @@ struct _ExmDetailView
69
65
ExmScreenshot * ext_screenshot ;
70
66
GtkOverlay * ext_screenshot_container ;
71
67
GtkButton * ext_screenshot_popout_button ;
72
- ExmInfoBar * ext_info_bar ;
68
+ GtkLabel * downloads_label ;
69
+ GtkLabel * version_label ;
70
+ ExmVersionsDialog * ext_versions_dialog ;
73
71
GtkScrolledWindow * scroll_area ;
74
72
GtkStack * comment_stack ;
75
73
GtkFlowBox * comment_box ;
@@ -447,7 +445,7 @@ on_data_loaded (GObject *source,
447
445
gtk_label_set_label (self -> ext_title , name );
448
446
gtk_label_set_label (self -> ext_author , creator );
449
447
gtk_label_set_label (self -> ext_description , description );
450
- g_object_set (self -> ext_info_bar , "downloads " , downloads , NULL );
448
+ gtk_label_set_label (self -> downloads_label , g_strdup_printf ( "%'d " , downloads ) );
451
449
452
450
if (self -> resolver_cancel )
453
451
{
@@ -506,7 +504,14 @@ on_data_loaded (GObject *source,
506
504
adw_action_row_set_subtitle (self -> link_homepage , self -> uri_homepage );
507
505
adw_action_row_set_subtitle (self -> link_extensions , self -> uri_extensions );
508
506
509
- g_object_set (self -> ext_info_bar , "version" , 0.0 , NULL );
507
+ gtk_label_set_label (self -> version_label , _ ("Unsupported" ));
508
+
509
+ if (self -> ext_versions_dialog )
510
+ {
511
+ g_object_unref (self -> ext_versions_dialog );
512
+ self -> ext_versions_dialog = NULL ;
513
+ }
514
+ self -> ext_versions_dialog = exm_versions_dialog_new ();
510
515
511
516
for (version_iter = version_map -> map ;
512
517
version_iter != NULL ;
@@ -522,10 +527,17 @@ on_data_loaded (GObject *source,
522
527
else
523
528
version = g_strdup_printf ("%s.0" , entry -> shell_major_version );
524
529
525
- if (version != NULL && self -> shell_version != NULL &&
526
- (strcmp (version , self -> shell_version ) == 0 ||
527
- strncmp (version , self -> shell_version , strchr (version , '.' ) - version ) == 0 ))
528
- g_object_set (self -> ext_info_bar , "version" , entry -> extension_version , NULL );
530
+ if (version != NULL && self -> shell_version != NULL )
531
+ {
532
+ exm_versions_dialog_add_version (self -> ext_versions_dialog , entry -> shell_minor_version
533
+ ? version
534
+ : entry -> shell_major_version );
535
+
536
+ if (strcmp (version , self -> shell_version ) == 0 ||
537
+ strncmp (version , self -> shell_version , strchr (version , '.' ) - version ) == 0 )
538
+ gtk_label_set_label (self -> version_label ,
539
+ g_strdup_printf ("%.f" , entry -> extension_version ));
540
+ }
529
541
530
542
g_free (version );
531
543
}
@@ -578,6 +590,20 @@ exm_detail_view_update (ExmDetailView *self)
578
590
g_object_set (self -> ext_install , "state" , EXM_INSTALL_BUTTON_STATE_INSTALLED , NULL );
579
591
}
580
592
593
+ static void
594
+ show_versions (GtkWidget * widget ,
595
+ const char * action_name G_GNUC_UNUSED ,
596
+ GVariant * parameter G_GNUC_UNUSED )
597
+ {
598
+ ExmDetailView * self ;
599
+ GtkWidget * toplevel ;
600
+
601
+ self = EXM_DETAIL_VIEW (widget );
602
+ toplevel = GTK_WIDGET (gtk_widget_get_root (GTK_WIDGET (self )));
603
+
604
+ adw_dialog_present (ADW_DIALOG (g_object_ref (self -> ext_versions_dialog )), toplevel );
605
+ }
606
+
581
607
static void
582
608
open_link (ExmDetailView * self ,
583
609
const char * action_name ,
@@ -708,7 +734,8 @@ exm_detail_view_class_init (ExmDetailViewClass *klass)
708
734
gtk_widget_class_bind_template_child (widget_class , ExmDetailView , ext_screenshot );
709
735
gtk_widget_class_bind_template_child (widget_class , ExmDetailView , ext_screenshot_container );
710
736
gtk_widget_class_bind_template_child (widget_class , ExmDetailView , ext_screenshot_popout_button );
711
- gtk_widget_class_bind_template_child (widget_class , ExmDetailView , ext_info_bar );
737
+ gtk_widget_class_bind_template_child (widget_class , ExmDetailView , downloads_label );
738
+ gtk_widget_class_bind_template_child (widget_class , ExmDetailView , version_label );
712
739
gtk_widget_class_bind_template_child (widget_class , ExmDetailView , link_homepage );
713
740
gtk_widget_class_bind_template_child (widget_class , ExmDetailView , links_donations );
714
741
gtk_widget_class_bind_template_child (widget_class , ExmDetailView , link_extensions );
@@ -722,6 +749,7 @@ exm_detail_view_class_init (ExmDetailViewClass *klass)
722
749
gtk_widget_class_bind_template_callback (widget_class , screenshot_view_cb );
723
750
gtk_widget_class_bind_template_callback (widget_class , install_remote );
724
751
752
+ gtk_widget_class_install_action (widget_class , "detail.show-versions" , NULL , show_versions );
725
753
gtk_widget_class_install_action (widget_class , "detail.open-extensions" , NULL , (GtkWidgetActionActivateFunc ) open_link );
726
754
gtk_widget_class_install_action (widget_class , "detail.open-homepage" , NULL , (GtkWidgetActionActivateFunc ) open_link );
727
755
gtk_widget_class_install_action (widget_class , "detail.open-donation" , "i" , (GtkWidgetActionActivateFunc ) open_link );
@@ -734,7 +762,6 @@ exm_detail_view_init (ExmDetailView *self)
734
762
735
763
g_type_ensure (EXM_TYPE_INSTALL_BUTTON );
736
764
g_type_ensure (EXM_TYPE_SCREENSHOT );
737
- g_type_ensure (EXM_TYPE_INFO_BAR );
738
765
739
766
gtk_widget_init_template (GTK_WIDGET (self ));
740
767
0 commit comments