// File: /workspace/github_cpp_makefile_star2_O1/eiskalteschatten[P]developersnotebook/src/views/DashboardView.cpp
// Function: DashboardView::DashboardView(void*)
DashboardView::DashboardView(void *window_obj) {
    main_window_obj = window_obj;

    const int grid_spacing = 20;

    main_widget = gtk_grid_new();
    gtk_widget_set_halign(main_widget, GTK_ALIGN_FILL);
    gtk_widget_set_valign(main_widget, GTK_ALIGN_FILL);
    gtk_grid_set_column_spacing(GTK_GRID(main_widget), grid_spacing);
    gtk_grid_set_row_spacing(GTK_GRID(main_widget), grid_spacing);
    gtk_container_set_border_width(GTK_CONTAINER(main_widget), grid_spacing);

    gtk_grid_insert_row(GTK_GRID(main_widget), 0);
    gtk_grid_insert_row(GTK_GRID(main_widget), 1);
    gtk_grid_insert_column(GTK_GRID(main_widget), 0);

    // Setup grid for application title, logo, etc
    {
        GtkWidget *title_grid = gtk_grid_new();

        gtk_grid_insert_row(GTK_GRID(title_grid), 0);
        gtk_grid_insert_row(GTK_GRID(title_grid), 1);
        gtk_grid_insert_column(GTK_GRID(title_grid), 0);
        gtk_grid_insert_column(GTK_GRID(title_grid), 1);

        gtk_grid_set_column_spacing(GTK_GRID(title_grid), 10);

        // -- Logo
        GtkWidget *logo = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
        gtk_widget_set_size_request(logo, 100, 100);
        gtk_widget_set_name(logo, "dashboard-logo");
        gtk_grid_attach(GTK_GRID(title_grid), logo, 0, 0, 1, 2);

        gchar *markup = nullptr;

        // Title
        GtkWidget *title          = gtk_label_new(NULL);
        const gchar *app_name     = Constants::application_name.c_str();
        const gchar *format_title = "<span font_weight=\"heavy\" font_size=\"xx-large\">\%s</span>";
        markup                    = g_markup_printf_escaped(format_title, app_name);
        gtk_label_set_markup(GTK_LABEL(title), markup);

        g_object_set(title, "hexpand", TRUE, NULL);
        gtk_widget_set_halign(title, GTK_ALIGN_START);
        gtk_grid_attach(GTK_GRID(title_grid), title, 1, 0, 1, 1);

        // Slogan
        GtkWidget *slogan          = gtk_label_new(NULL);
        const gchar *app_slogan    = Constants::application_slogan.c_str();
        const gchar *format_slogan = "<span font_size=\"large\">\%s</span>";
        markup                     = g_markup_printf_escaped(format_slogan, app_slogan);
        gtk_label_set_markup(GTK_LABEL(slogan), markup);

        g_object_set(slogan, "hexpand", TRUE, NULL);
        gtk_widget_set_halign(slogan, GTK_ALIGN_START);
        gtk_widget_set_valign(slogan, GTK_ALIGN_START);
        gtk_grid_attach(GTK_GRID(title_grid), slogan, 1, 1, 1, 1);

        g_free(markup);

        gtk_grid_attach(GTK_GRID(main_widget), title_grid, 0, 0, 2, 1);
    }

    // Projects Ending Soon
    {
        GtkWidget *projects_ending_soon_grid = gtk_grid_new();
        gtk_grid_set_row_spacing(GTK_GRID(projects_ending_soon_grid), 10);

        gtk_grid_insert_row(GTK_GRID(projects_ending_soon_grid), 0);
        gtk_grid_insert_row(GTK_GRID(projects_ending_soon_grid), 1);
        gtk_grid_insert_column(GTK_GRID(projects_ending_soon_grid), 0);

        // Title
        GtkWidget *title          = gtk_label_new(NULL);
        const gchar *format_title = "<span font_weight=\"heavy\" font_size=\"x-large\">\%s</span>";
        const gchar *markup       = g_markup_printf_escaped(format_title, "Projects Ending Soon");
        gtk_label_set_markup(GTK_LABEL(title), markup);

        g_object_set(title, "hexpand", TRUE, NULL);
        gtk_widget_set_halign(title, GTK_ALIGN_START);
        gtk_grid_attach(GTK_GRID(projects_ending_soon_grid), title, 0, 0, 1, 1);

        // Tree View
        setup_projects_ending_soon();
        gtk_grid_attach(GTK_GRID(projects_ending_soon_grid), projects_ending_soon_scrolled_window, 0, 1, 1, 1);

        gtk_grid_attach(GTK_GRID(main_widget), projects_ending_soon_grid, 0, 1, 1, 1);
    }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rsi, %r14
movq %rdi, %rbx
callq 0x11bb4
movq %r14, 0x28(%rbx)
callq 0x8c10
movq %rax, 0x8(%rbx)
movq %rax, %rdi
xorl %esi, %esi
callq 0x8d10
movq 0x8(%rbx), %rdi
xorl %esi, %esi
callq 0x8e90
movq 0x8(%rbx), %r15
callq 0x89d0
movq %rax, %r14
movq %r15, %rdi
movq %rax, %rsi
callq 0x8150
movq %rax, %rdi
movl $0x14, %esi
callq 0x8200
movq 0x8(%rbx), %rdi
movq %r14, %rsi
callq 0x8150
movq %rax, %rdi
movl $0x14, %esi
callq 0x8460
movq 0x8(%rbx), %r15
callq 0x89c0
movq %r15, %rdi
movq %rax, %rsi
callq 0x8150
movq %rax, %rdi
movl $0x14, %esi
callq 0x9000
movq 0x8(%rbx), %rdi
movq %r14, %rsi
callq 0x8150
movq %rax, %rdi
xorl %esi, %esi
callq 0x82e0
movq 0x8(%rbx), %rdi
movq %r14, %rsi
callq 0x8150
movq %rax, %rdi
movl $0x1, %esi
callq 0x82e0
movq 0x8(%rbx), %rdi
movq %r14, %rsi
callq 0x8150
movq %rax, %rdi
xorl %esi, %esi
callq 0x8710
callq 0x8c10
movq %rax, %r15
movq %rax, %rdi
movq %r14, %rsi
callq 0x8150
movq %rax, %rdi
xorl %esi, %esi
callq 0x82e0
movq %r15, %rdi
movq %r14, %rsi
callq 0x8150
movq %rax, %rdi
movl $0x1, %esi
callq 0x82e0
movq %r15, %rdi
movq %r14, %rsi
callq 0x8150
movq %rax, %rdi
xorl %esi, %esi
callq 0x8710
movq %r15, %rdi
movq %r14, %rsi
callq 0x8150
movq %rax, %rdi
movl $0x1, %esi
callq 0x8710
movq %r15, %rdi
movq %r14, %rsi
callq 0x8150
movq %rax, %rdi
movl $0xa, %esi
callq 0x8200
xorl %edi, %edi
xorl %esi, %esi
callq 0x8f70
movq %rax, %r12
movq %rax, %rdi
movl $0x64, %esi
movl $0x64, %edx
callq 0x9070
leaq 0x16df1(%rip), %rsi     # 0x29413
movq %r12, %rdi
callq 0x8220
movq %r15, %rdi
movq %r14, %rsi
callq 0x8150
movq %rax, %rdi
movq %r12, %rsi
xorl %edx, %edx
xorl %ecx, %ecx
movl $0x1, %r8d
movl $0x2, %r9d
callq 0x8ac0
xorl %edi, %edi
callq 0x8800
movq %rax, %r13
movq 0x25cdf(%rip), %rsi     # 0x38340
leaq 0x16dba(%rip), %rdi     # 0x29422
xorl %eax, %eax
callq 0x8290
movq %rax, %rbp
callq 0x8dd0
movq %rax, %r12
movq %r13, %rdi
movq %rax, %rsi
callq 0x8150
movq %rax, %rdi
movq %rbp, %rsi
callq 0x8c60
leaq 0x16b8f(%rip), %rsi     # 0x29226
movq %r13, %rdi
movl $0x1, %edx
xorl %ecx, %ecx
xorl %eax, %eax
callq 0x8f30
movq %r13, %rdi
movl $0x1, %esi
callq 0x8d10
movq %r15, %rdi
movq %r14, %rsi
callq 0x8150
movq %rax, %rdi
movq %r13, %rsi
movl $0x1, %edx
xorl %ecx, %ecx
movl $0x1, %r8d
movl $0x1, %r9d
callq 0x8ac0
xorl %edi, %edi
callq 0x8800
movq %rax, %r13
movq 0x25cb1(%rip), %rsi     # 0x383a0
leaq 0x16d65(%rip), %rdi     # 0x2945b
xorl %eax, %eax
callq 0x8290
movq %rax, %rbp
movq %r13, %rdi
movq %r12, %rsi
callq 0x8150
movq %rax, %rdi
movq %rbp, %rsi
callq 0x8c60
leaq 0x16b09(%rip), %rsi     # 0x29226
movq %r13, %rdi
movl $0x1, %edx
xorl %ecx, %ecx
xorl %eax, %eax
callq 0x8f30
movq %r13, %rdi
movl $0x1, %esi
callq 0x8d10
movq %r13, %rdi
movl $0x1, %esi
callq 0x8e90
movq %r15, %rdi
movq %r14, %rsi
callq 0x8150
movq %rax, %rdi
movq %r13, %rsi
movl $0x1, %edx
movl $0x1, %ecx
movl $0x1, %r8d
movl $0x1, %r9d
callq 0x8ac0
movq %rbp, %rdi
callq 0x90c8
movq 0x8(%rbx), %rdi
movq %r14, %rsi
callq 0x8150
movq %rax, %rdi
movq %r15, %rsi
xorl %edx, %edx
xorl %ecx, %ecx
movl $0x2, %r8d
movl $0x1, %r9d
callq 0x8ac0
callq 0x8c10
movq %rax, %r15
movq %rax, %rdi
movq %r14, %rsi
callq 0x8150
movq %rax, %rdi
movl $0xa, %esi
callq 0x8460
movq %r15, %rdi
movq %r14, %rsi
callq 0x8150
movq %rax, %rdi
xorl %esi, %esi
callq 0x82e0
movq %r15, %rdi
movq %r14, %rsi
callq 0x8150
movq %rax, %rdi
movl $0x1, %esi
callq 0x82e0
movq %r15, %rdi
movq %r14, %rsi
callq 0x8150
movq %rax, %rdi
xorl %esi, %esi
callq 0x8710
xorl %edi, %edi
callq 0x8800
movq %rax, %r13
leaq 0x16c67(%rip), %rdi     # 0x2947d
leaq 0x16c98(%rip), %rsi     # 0x294b5
xorl %eax, %eax
callq 0x8290
movq %rax, %rbp
movq %r13, %rdi
movq %r12, %rsi
callq 0x8150
movq %rax, %rdi
movq %rbp, %rsi
callq 0x8c60
leaq 0x169e2(%rip), %rsi     # 0x29226
movq %r13, %rdi
movl $0x1, %edx
xorl %ecx, %ecx
xorl %eax, %eax
callq 0x8f30
movq %r13, %rdi
movl $0x1, %esi
callq 0x8d10
movq %r15, %rdi
movq %r14, %rsi
callq 0x8150
movq %rax, %rdi
movq %r13, %rsi
xorl %edx, %edx
xorl %ecx, %ecx
movl $0x1, %r8d
movl $0x1, %r9d
callq 0x8ac0
movq %rbx, %rdi
callq 0x12918
movq %r15, %rdi
movq %r14, %rsi
callq 0x8150
movq 0x18(%rbx), %rsi
movq %rax, %rdi
xorl %edx, %edx
movl $0x1, %ecx
movl $0x1, %r8d
movl $0x1, %r9d
callq 0x8ac0
movq 0x8(%rbx), %rdi
movq %r14, %rsi
callq 0x8150
movq %rax, %rdi
movq %r15, %rsi
xorl %edx, %edx
movl $0x1, %ecx
movl $0x1, %r8d
movl $0x1, %r9d
callq 0x8ac0
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x12905
jmp 0x12905
jmp 0x12905
jmp 0x12905
jmp 0x12905
jmp 0x12905
jmp 0x12905
jmp 0x12905
jmp 0x12905
movq %rax, %r14
movq %rbx, %rdi
callq 0x11bba
movq %r14, %rdi
callq 0x87b0