Add yacos_scanner object
This commit is contained in:
		
							parent
							
								
									795bc1a4e5
								
							
						
					
					
						commit
						c7dbe01c22
					
				
							
								
								
									
										37
									
								
								src/main.c
									
									
									
									
									
								
							
							
						
						
									
										37
									
								
								src/main.c
									
									
									
									
									
								
							| @ -1,27 +1,46 @@ | ||||
| #include <gtk/gtk.h> | ||||
| #include "main_window.h" | ||||
| #include "scanner.h" | ||||
| 
 | ||||
| // TODO: For testing only
 | ||||
| #include "cart_item.h" | ||||
| 
 | ||||
| struct app_state { | ||||
| 	struct mainWindow *mainWindow; | ||||
| }; | ||||
| 
 | ||||
| static void newtag(YacosScanner *scanner, struct mainWindow *mainWindow) | ||||
| { | ||||
| 	// TODO: For testing only
 | ||||
| 	gtk_stack_set_visible_child(mainWindow->stack_main, mainWindow->page_cart.box); | ||||
| 	GtkWidget *le = yacos_cart_item_new(); | ||||
| 	gtk_list_box_insert(mainWindow->page_cart.list, le, -1); | ||||
| 	gtk_widget_show(le); | ||||
| } | ||||
| 
 | ||||
| static void activate(GtkApplication* app, gpointer user_data) | ||||
| { | ||||
| 	struct app_state *app_state = user_data; | ||||
| 	struct mainWindow **mainWindow = &(app_state->mainWindow); | ||||
| 
 | ||||
| 	*mainWindow = mainWindow_new(app); | ||||
| 	if (*mainWindow) { | ||||
| 		gtk_application_add_window(GTK_APPLICATION(app), GTK_WINDOW((*mainWindow)->main_window)); | ||||
| 		gtk_widget_show_all((*mainWindow)->main_window); | ||||
| 	YacosScanner *scanner; | ||||
| 
 | ||||
| 		// For testing only
 | ||||
| 		gtk_stack_set_visible_child((*mainWindow)->stack_main, (*mainWindow)->page_cart.box); | ||||
| 		GtkWidget *le = yacos_cart_item_new(); | ||||
| 		gtk_list_box_insert((*mainWindow)->page_cart.list, le, -1); | ||||
| 		gtk_widget_show(le); | ||||
| 	*mainWindow = mainWindow_new(app); | ||||
| 	if (!(*mainWindow)) { | ||||
| 		g_error("Error initializing mainWindow."); | ||||
| 		return; | ||||
| 	} | ||||
| 
 | ||||
| 	gtk_application_add_window(GTK_APPLICATION(app), GTK_WINDOW((*mainWindow)->main_window)); | ||||
| 	gtk_widget_show_all((*mainWindow)->main_window); | ||||
| 
 | ||||
| 	scanner = yacos_scanner_new(); | ||||
| 	if (!scanner) { | ||||
| 		g_error("Error initializing scanner."); | ||||
| 	} | ||||
| 
 | ||||
| 	g_signal_connect(scanner, "newtag", | ||||
| 			 (GCallback) newtag, (*mainWindow)); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										60
									
								
								src/scanner.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								src/scanner.c
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,60 @@ | ||||
| #include "scanner.h" | ||||
| 
 | ||||
| struct _YacosScanner { | ||||
| 	GObject parent_instance; | ||||
| 
 | ||||
| 	// TODO: Private data goes here
 | ||||
| }; | ||||
| 
 | ||||
| G_DEFINE_TYPE(YacosScanner, yacos_scanner, G_TYPE_OBJECT) | ||||
| 
 | ||||
| enum { | ||||
| 	SIGNAL_NEWTAG = 0, | ||||
| 	SIGNAL_COUNT | ||||
| }; | ||||
| guint yacos_scanner_signals[SIGNAL_COUNT]; | ||||
| 
 | ||||
| static gboolean *yacos_scanner_read (gpointer user_data) | ||||
| { | ||||
| 	YacosScanner *self = YACOS_SCANNER(user_data); | ||||
| 
 | ||||
| 	// TODO: Scan for tags
 | ||||
| 	g_signal_emit(self, yacos_scanner_signals[SIGNAL_NEWTAG], 0); | ||||
| 
 | ||||
| 	return G_SOURCE_CONTINUE; | ||||
| } | ||||
| 
 | ||||
| static void yacos_scanner_finalize(GObject *gobject) | ||||
| { | ||||
| 	YacosScanner *obj = yacos_scanner_get_instance_private(YACOS_SCANNER(gobject)); | ||||
| 
 | ||||
| 	// TODO: clean up
 | ||||
| 
 | ||||
| 	G_OBJECT_CLASS(yacos_scanner_parent_class)->finalize(gobject); | ||||
| } | ||||
| 
 | ||||
| static void yacos_scanner_class_init(YacosScannerClass *klass) | ||||
| { | ||||
| 	GObjectClass *object_class = G_OBJECT_CLASS(klass); | ||||
| 
 | ||||
| 	yacos_scanner_signals[SIGNAL_NEWTAG] = | ||||
| 			g_signal_newv("newtag", | ||||
| 				      G_TYPE_FROM_CLASS(object_class), | ||||
| 				      G_SIGNAL_RUN_LAST | G_SIGNAL_NO_RECURSE | G_SIGNAL_NO_HOOKS, | ||||
| 				      NULL, NULL, NULL, NULL, | ||||
| 				      G_TYPE_NONE, | ||||
| 				      0, | ||||
| 				      NULL); | ||||
| 
 | ||||
| 	object_class->finalize = yacos_scanner_finalize; | ||||
| } | ||||
| 
 | ||||
| static void yacos_scanner_init(YacosScanner *self) | ||||
| { | ||||
| 	g_timeout_add(1000, G_SOURCE_FUNC(yacos_scanner_read), self); | ||||
| } | ||||
| 
 | ||||
| YacosScanner *yacos_scanner_new(void) | ||||
| { | ||||
| 	return g_object_new(YACOS_TYPE_SCANNER, 0); | ||||
| } | ||||
							
								
								
									
										15
									
								
								src/scanner.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								src/scanner.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,15 @@ | ||||
| #ifndef SCANNER_H | ||||
| #define SCANNER_H | ||||
| 
 | ||||
| #include <glib-object.h> | ||||
| 
 | ||||
| G_BEGIN_DECLS | ||||
| 
 | ||||
| #define YACOS_TYPE_SCANNER yacos_scanner_get_type() | ||||
| G_DECLARE_FINAL_TYPE(YacosScanner, yacos_scanner, YACOS, SCANNER, GObject) | ||||
| 
 | ||||
| YacosScanner *yacos_scanner_new(void); | ||||
| 
 | ||||
| G_END_DECLS | ||||
| 
 | ||||
| #endif // SCANNER_H
 | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user