Browse Source

Hide flash button when flash not available

Benjamin Schaaf 3 năm trước cách đây
mục cha
commit
e78bd99305
3 tập tin đã thay đổi với 11 bổ sung1 xóa
  1. 5 0
      src/camera_config.c
  2. 1 0
      src/camera_config.h
  3. 5 1
      src/main.c

+ 5 - 0
src/camera_config.c

@@ -208,8 +208,13 @@ config_ini_handler(void *user, const char *section, const char *name,
 			cc->iso_max = strtod(value, NULL);
 		} else if (strcmp(name, "flash-path") == 0) {
 			strcpy(cc->flash_path, value);
+			cc->has_flash = true;
 		} else if (strcmp(name, "flash-display") == 0) {
 			cc->flash_display = strcmp(value, "true") == 0;
+
+			if (cc->flash_display) {
+				cc->has_flash = true;
+			}
 		} else {
 			g_printerr("Unknown key '%s' in [%s]\n", name, section);
 			exit(1);

+ 1 - 0
src/camera_config.h

@@ -44,6 +44,7 @@ struct mp_camera_config {
 
 	char flash_path[260];
 	bool flash_display;
+	bool has_flash;
 };
 
 bool mp_load_config();

+ 5 - 1
src/main.c

@@ -76,6 +76,7 @@ GtkWidget *process_spinner;
 GtkWidget *scanned_codes;
 GtkWidget *preview_top_box;
 GtkWidget *preview_bottom_box;
+GtkWidget *flash_button;
 
 GSettings *settings;
 
@@ -113,6 +114,9 @@ update_io_pipeline()
 		.flash_enabled = flash_enabled,
 	};
 	mp_io_pipeline_update_state(&io_state);
+
+	// Make the right settings available for the camera
+	gtk_widget_set_visible(flash_button, camera->has_flash);
 }
 
 static bool
@@ -909,7 +913,7 @@ activate(GtkApplication *app, gpointer data)
 	GtkWidget *window = GTK_WIDGET(gtk_builder_get_object(builder, "window"));
 	GtkWidget *iso_button = GTK_WIDGET(gtk_builder_get_object(builder, "iso-controls-button"));
 	GtkWidget *shutter_button = GTK_WIDGET(gtk_builder_get_object(builder, "shutter-controls-button"));
-	GtkWidget *flash_button = GTK_WIDGET(gtk_builder_get_object(builder, "flash-controls-button"));
+	flash_button = GTK_WIDGET(gtk_builder_get_object(builder, "flash-controls-button"));
 	GtkWidget *setting_dng_button = GTK_WIDGET(gtk_builder_get_object(builder, "setting-raw"));
 	preview = GTK_WIDGET(gtk_builder_get_object(builder, "preview"));
 	main_stack = GTK_WIDGET(gtk_builder_get_object(builder, "main_stack"));