Add label for time

This commit is contained in:
daleclack 2022-01-09 12:33:06 +08:00
parent 2baabb3ee9
commit b74138df04
1 changed files with 66 additions and 33 deletions

View File

@ -1,6 +1,8 @@
#include "MainWin.h"
#include <ctime>
struct _MainWin{
struct _MainWin
{
GtkApplicationWindow parent_instance;
GtkWidget *overlay;
GtkWidget *background;
@ -8,7 +10,23 @@ struct _MainWin{
G_DEFINE_TYPE(MainWin, main_win, GTK_TYPE_APPLICATION_WINDOW)
static void main_win_init(MainWin * win){
static gboolean label_timer(gpointer data)
{
// Get Local Time
time_t t;
t = time(NULL);
struct tm *local;
local = localtime(&t);
// Set Label time
char buf[57];
sprintf(buf, "%d:%d %d/%d/%d", local->tm_hour,
local->tm_min, local->tm_year + 1900, local->tm_mon + 1, local->tm_mday);
gtk_label_set_label(GTK_LABEL(data), buf);
}
static void main_win_init(MainWin *win)
{
// Initalize window
gtk_window_set_title(GTK_WINDOW(win), "My GtkUI Flos Version");
gtk_window_set_default_size(GTK_WINDOW(win), 800, 450);
@ -39,6 +57,20 @@ static void main_win_init(MainWin * win){
gtk_css_provider_load_from_resource(GTK_CSS_PROVIDER(provider), "/org/gtk/daleclack/style.css");
gtk_style_context_add_provider(gtk_widget_get_style_context(menubar), provider, G_MAXINT);
// Add Label for time
GtkWidget *time_label = gtk_label_new("12:21 2022/1/9");
g_timeout_add(1000, label_timer, time_label);
gtk_widget_set_halign(time_label, GTK_ALIGN_END);
gtk_widget_set_valign(time_label, GTK_ALIGN_START);
// Set Position of the label
gtk_widget_set_margin_bottom(time_label, 3);
gtk_widget_set_margin_start(time_label, 3);
gtk_widget_set_margin_end(time_label, 10);
gtk_widget_set_margin_top(time_label, 3);
gtk_overlay_add_overlay(GTK_OVERLAY(win->overlay), time_label);
// Add widgets
gtk_overlay_set_child(GTK_OVERLAY(win->overlay), win->background);
gtk_window_set_child(GTK_WINDOW(win), win->overlay);
@ -46,6 +78,7 @@ static void main_win_init(MainWin * win){
static void main_win_class_init(MainWinClass *klass) {}
MainWin * main_win_new(GtkApplication * app){
MainWin *main_win_new(GtkApplication *app)
{
return (MainWin *)g_object_new(main_win_get_type(), "application", app, NULL);
}