added custom event flag logic

This commit is contained in:
FelixKratz 2021-08-23 21:15:15 +02:00
parent d82d21eae5
commit 7aefb7c823
6 changed files with 25 additions and 8 deletions

View file

@ -99,6 +99,7 @@ void bar_manager_init(struct bar_manager *bar_manager)
bar_manager->padding_right = 20;
bar_item_init(&bar_manager->default_item, NULL);
custom_events_init(&bar_manager->custom_events);
int shell_refresh_frequency = 1;
@ -159,11 +160,6 @@ struct bar_item* bar_manager_get_item_by_point(struct bar_manager* bar_manager,
return NULL;
}
uint32_t bar_manager_get_event_flag(struct bar_manager* bar_manager, char* event) {
return 0;
}
void bar_manager_handle_front_app_switch(struct bar_manager* bar_manager) {
bar_manager_check_bar_items_for_update_pattern(bar_manager, UPDATE_FRONT_APP_SWITCHED);
}

View file

@ -26,7 +26,6 @@ struct bar_manager
};
int bar_manager_get_item_index_for_name(struct bar_manager* bar_manager, char* name);
uint32_t bar_manager_get_event_flag(struct bar_manager* bar_manager, char* event);
struct bar_item* bar_manager_create_item(struct bar_manager* bar_manager);

19
src/custom_events.c Normal file
View file

@ -0,0 +1,19 @@
void custom_events_init(struct custom_events* custom_events) {
custom_events->flag_offset = 4;
custom_events->count = 0;
}
void custom_event_append(struct custom_events* custom_events, char *name) {
custom_events->count++;
custom_events->names = (char**) realloc(custom_events->names, sizeof(char*) * custom_events->count);
custom_events->names[custom_events->count - 1] = name;
}
uint32_t custom_events_get_flag_for_name(struct custom_events* custom_events, char* name) {
for (int i = 0; i < custom_events->count; i++) {
if (strcmp(name, custom_events->names[i])) {
return 1 << (i + custom_events->flag_offset);
}
}
return 0;
}

View file

@ -9,5 +9,7 @@ struct custom_events {
char** names;
};
void custom_event_append(char* name);
void custom_events_init(struct custom_events* custom_events);
void custom_events_append(struct custom_events* custom_events, char* name);
uint32_t custom_events_get_flag_for_name(struct custom_events* custom_events, char* name);
#endif

View file

@ -57,6 +57,7 @@
#include "bar.c"
#include "graph_data.c"
#include "bar_item.c"
#include "custom_events.c"
#include "bar_manager.c"
#include "sketchybar.c"

View file

@ -180,7 +180,7 @@ static void handle_domain_subscribe(FILE* rsp, struct token domain, char* messag
} else if (token_equals(event, COMMAND_SUBSCRIBE_FRONT_APP_SWITCHED)) {
bar_item->update_mask |= UPDATE_FRONT_APP_SWITCHED;
} else {
bar_item->update_mask |= bar_manager_get_event_flag(&g_bar_manager, token_to_string(event));
bar_item->update_mask |= custom_events_get_flag_for_name(&g_bar_manager.custom_events, token_to_string(event));
}
}