// File: /workspace/github_cpp_makefile_star2_O3/eiskalteschatten[P]developersnotebook/src/views/ProjectsView.cpp
// Function: ProjectsView::setup_list_view()
void ProjectsView::setup_list_view() {
    setup_list_store();

    list_view = gtk_tree_view_new_with_model(GTK_TREE_MODEL(list_store));

    list_scrolled_window = gtk_scrolled_window_new(NULL, NULL);
    g_object_set(list_scrolled_window, "hexpand", TRUE, NULL);
    g_object_set(list_scrolled_window, "vexpand", TRUE, NULL);
    gtk_widget_set_halign(list_scrolled_window, GTK_ALIGN_FILL);
    gtk_widget_set_valign(list_scrolled_window, GTK_ALIGN_FILL);
    gtk_container_add(GTK_CONTAINER(list_scrolled_window), list_view);

    GtkCellRenderer *text_renderer = gtk_cell_renderer_text_new();
    GtkCellRenderer *toggle_renderer = gtk_cell_renderer_toggle_new();

    // ID Column
    {
        GtkTreeViewColumn *id_column = gtk_tree_view_column_new_with_attributes("Id", text_renderer, "text", ID_COLUMN, NULL);
        gtk_tree_view_append_column(GTK_TREE_VIEW(list_view), id_column);
        gtk_tree_view_column_set_visible(id_column, FALSE);
    }

    // Is Complete Column
    {
        GtkTreeViewColumn *is_complete_column = gtk_tree_view_column_new_with_attributes("", toggle_renderer, "active", IS_COMPLETE_COLUMN, NULL);
        gtk_tree_view_append_column(GTK_TREE_VIEW(list_view), is_complete_column);
        gtk_tree_view_column_set_sort_column_id(is_complete_column, SORT_IS_COMPLETE_COLUMN);
        gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(list_store), SORT_IS_COMPLETE_COLUMN, sort_by_boolean, GINT_TO_POINTER(IS_COMPLETE_COLUMN), NULL);
    }

    // Name Column
    {
        GtkTreeViewColumn *name_column = gtk_tree_view_column_new_with_attributes("Name", text_renderer, "text", NAME_COLUMN, NULL);
        gtk_tree_view_append_column(GTK_TREE_VIEW(list_view), name_column);
        gtk_tree_view_column_set_sort_column_id(name_column, SORT_NAME_COLUMN);
        gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(list_store), SORT_NAME_COLUMN, sort_by_string, GINT_TO_POINTER(NAME_COLUMN), NULL);
    }

    // Start Date Column
    {
        GtkTreeViewColumn *start_date_column = gtk_tree_view_column_new_with_attributes("Start Date", text_renderer, "text", START_DATE_COLUMN, NULL);
        gtk_tree_view_append_column(GTK_TREE_VIEW(list_view), start_date_column);
        gtk_tree_view_column_set_sort_column_id(start_date_column, SORT_START_DATE_COLUMN);
        gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(list_store), SORT_START_DATE_COLUMN, sort_by_date, GINT_TO_POINTER(START_DATE_COLUMN), NULL);
    }

    // End Date Column
    {
        GtkTreeViewColumn *end_date_column = gtk_tree_view_column_new_with_attributes("End Date", text_renderer, "text", END_DATE_COLUMN, NULL);
        gtk_tree_view_append_column(GTK_TREE_VIEW(list_view), end_date_column);
        gtk_tree_view_column_set_sort_column_id(end_date_column, SORT_END_DATE_COLUMN);
        gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(list_store), SORT_END_DATE_COLUMN, sort_by_date, GINT_TO_POINTER(END_DATE_COLUMN), NULL);
    }

    // Date Completed Column
    {
        GtkTreeViewColumn *date_completed_column = gtk_tree_view_column_new_with_attributes("Completion Date", text_renderer, "text", DATE_COMPLETED_COLUMN, NULL);
        gtk_tree_view_append_column(GTK_TREE_VIEW(list_view), date_completed_column);
        gtk_tree_view_column_set_sort_column_id(date_completed_column, SORT_DATE_COMPLETED_COLUMN);
        gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(list_store), SORT_DATE_COMPLETED_COLUMN, sort_by_date, GINT_TO_POINTER(DATE_COMPLETED_COLUMN), NULL);
    }

    // URL Column
    {
        GtkTreeViewColumn *url_column = gtk_tree_view_column_new_with_attributes("URL", text_renderer, "text", URL_COLUMN, NULL);
        gtk_tree_view_append_column(GTK_TREE_VIEW(list_view), url_column);
        gtk_tree_view_column_set_sort_column_id(url_column, SORT_URL_COLUMN);
        gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(list_store), SORT_URL_COLUMN, sort_by_string, GINT_TO_POINTER(URL_COLUMN), NULL);
    }

    // Notes Column
    {
        GtkTreeViewColumn *notes_column = gtk_tree_view_column_new_with_attributes("Notes", text_renderer, "text", NOTES_COLUMN, NULL);
        gtk_tree_view_append_column(GTK_TREE_VIEW(list_view), notes_column);
        gtk_tree_view_column_set_sort_column_id(notes_column, SORT_NOTES_COLUMN);
        gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(list_store), SORT_NOTES_COLUMN, sort_by_string, GINT_TO_POINTER(NOTES_COLUMN), NULL);
    }

    gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(list_store), SORT_IS_COMPLETE_COLUMN, GTK_SORT_ASCENDING);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
callq 0x11512
movq 0x38(%rbx), %r14
callq 0x8520
movq %r14, %rdi
movq %rax, %rsi
callq 0x8150
movq %rax, %rdi
callq 0x9080
movq %rax, 0x20(%rbx)
xorl %edi, %edi
xorl %esi, %esi
callq 0x8920
movq %rax, 0x18(%rbx)
leaq 0x18c47(%rip), %rsi     # 0x29226
movq %rax, %rdi
movl $0x1, %edx
xorl %ecx, %ecx
xorl %eax, %eax
callq 0x8f30
movq 0x18(%rbx), %rdi
leaq 0x18c33(%rip), %rsi     # 0x2922e
movl $0x1, %edx
xorl %ecx, %ecx
xorl %eax, %eax
callq 0x8f30
movq 0x18(%rbx), %rdi
xorl %esi, %esi
callq 0x8d10
movq 0x18(%rbx), %rdi
xorl %esi, %esi
callq 0x8e90
movq 0x18(%rbx), %r14
callq 0x89c0
movq %r14, %rdi
movq %rax, %rsi
callq 0x8150
movq 0x20(%rbx), %rsi
movq %rax, %rdi
callq 0x8ef0
callq 0x8360
movq %rax, %r14
callq 0x8750
movq %rax, %r13
leaq 0x18be0(%rip), %rdi     # 0x29236
leaq 0x18bdc(%rip), %rdx     # 0x29239
movq %r14, %rsi
xorl %ecx, %ecx
xorl %r8d, %r8d
xorl %eax, %eax
callq 0x8ba0
movq %rax, %rbp
movq 0x20(%rbx), %r15
callq 0x8de0
movq %rax, %r12
movq %r15, %rdi
movq %rax, %rsi
callq 0x8150
movq %rax, %rdi
movq %rbp, %rsi
callq 0x8b10
movq %rbp, %rdi
xorl %esi, %esi
callq 0x8b60
leaq 0x192b3(%rip), %rdi     # 0x29955
leaq 0x18b95(%rip), %rdx     # 0x2923e
movq %r13, %rsi
movl $0x6, %ecx
xorl %r8d, %r8d
xorl %eax, %eax
callq 0x8ba0
movq %rax, %r15
movq 0x20(%rbx), %rdi
movq %r12, %rsi
callq 0x8150
movq %rax, %rdi
movq %r15, %rsi
callq 0x8b10
movq %r15, %rdi
movl $0x5, %esi
callq 0x8900
movq 0x38(%rbx), %r15
callq 0x8230
movq %rax, %r13
movq %r15, %rdi
movq %rax, %rsi
callq 0x8150
leaq 0x15a8(%rip), %rdx      # 0x11ca8
movl $0x6, %ecx
movq %rax, %rdi
movl $0x5, %esi
xorl %r8d, %r8d
callq 0x8b50
leaq 0x18a43(%rip), %rdi     # 0x2915f
movq %r14, %rsi
leaq 0x18b13(%rip), %rbp     # 0x29239
movq %rbp, %rdx
movl $0x1, %ecx
xorl %r8d, %r8d
xorl %eax, %eax
callq 0x8ba0
movq %rax, %r15
movq 0x20(%rbx), %rdi
movq %r12, %rsi
callq 0x8150
movq %rax, %rdi
movq %r15, %rsi
callq 0x8b10
movq %r15, %rdi
xorl %esi, %esi
callq 0x8900
movq 0x38(%rbx), %rdi
movq %r13, %rsi
callq 0x8150
leaq 0x148f(%rip), %rdx      # 0x11bfe
movl $0x1, %ecx
movq %rax, %rdi
xorl %esi, %esi
xorl %r8d, %r8d
callq 0x8b50
leaq 0x18abd(%rip), %rdi     # 0x29245
movq %r14, %rsi
movq %rbp, %rdx
movl $0x2, %ecx
xorl %r8d, %r8d
xorl %eax, %eax
callq 0x8ba0
movq %rax, %r15
movq 0x20(%rbx), %rdi
movq %r12, %rsi
callq 0x8150
movq %rax, %rdi
movq %r15, %rsi
callq 0x8b10
movq %r15, %rdi
movl $0x1, %esi
callq 0x8900
movq 0x38(%rbx), %rdi
movq %r13, %rsi
callq 0x8150
leaq 0x1555(%rip), %rdx      # 0x11d2c
movl $0x2, %ecx
movq %rax, %rdi
movl $0x1, %esi
xorl %r8d, %r8d
callq 0x8b50
leaq 0x18a5d(%rip), %rdi     # 0x29250
movq %r14, %rsi
movq %rbp, %rdx
movl $0x3, %ecx
xorl %r8d, %r8d
xorl %eax, %eax
callq 0x8ba0
movq %rax, %r15
movq 0x20(%rbx), %rdi
movq %r12, %rsi
callq 0x8150
movq %rax, %rdi
movq %r15, %rsi
callq 0x8b10
movq %r15, %rdi
movl $0x2, %esi
callq 0x8900
movq 0x38(%rbx), %rdi
movq %r13, %rsi
callq 0x8150
movl $0x3, %ecx
movq %rax, %rdi
movl $0x2, %esi
leaq 0x14dd(%rip), %rdx      # 0x11d2c
xorl %r8d, %r8d
callq 0x8b50
leaq 0x189fb(%rip), %rdi     # 0x29259
movq %r14, %rsi
movq %rbp, %rdx
movl $0x7, %ecx
xorl %r8d, %r8d
xorl %eax, %eax
callq 0x8ba0
movq %rax, %r15
movq 0x20(%rbx), %rdi
movq %r12, %rsi
callq 0x8150
movq %rax, %rdi
movq %r15, %rsi
callq 0x8b10
movq %r15, %rdi
movl $0x6, %esi
callq 0x8900
movq 0x38(%rbx), %rdi
movq %r13, %rsi
callq 0x8150
movl $0x7, %ecx
movq %rax, %rdi
movl $0x6, %esi
leaq 0x1472(%rip), %rdx      # 0x11d2c
xorl %r8d, %r8d
callq 0x8b50
leaq 0x189a0(%rip), %rdi     # 0x29269
movq %r14, %rsi
movq %rbp, %rdx
movl $0x4, %ecx
xorl %r8d, %r8d
xorl %eax, %eax
callq 0x8ba0
movq %rax, %r15
movq 0x20(%rbx), %rdi
movq %r12, %rsi
callq 0x8150
movq %rax, %rdi
movq %r15, %rsi
callq 0x8b10
movq %r15, %rdi
movl $0x3, %esi
callq 0x8900
movq 0x38(%rbx), %rdi
movq %r13, %rsi
callq 0x8150
movl $0x4, %ecx
movq %rax, %rdi
movl $0x3, %esi
leaq 0x12d9(%rip), %r15      # 0x11bfe
movq %r15, %rdx
xorl %r8d, %r8d
callq 0x8b50
leaq 0x18d63(%rip), %rdi     # 0x2969a
movq %r14, %rsi
movq %rbp, %rdx
movl $0x5, %ecx
xorl %r8d, %r8d
xorl %eax, %eax
callq 0x8ba0
movq %rax, %r14
movq 0x20(%rbx), %rdi
movq %r12, %rsi
callq 0x8150
movq %rax, %rdi
movq %r14, %rsi
callq 0x8b10
movq %r14, %rdi
movl $0x4, %esi
callq 0x8900
movq 0x38(%rbx), %rdi
movq %r13, %rsi
callq 0x8150
movl $0x5, %ecx
movq %rax, %rdi
movl $0x4, %esi
movq %r15, %rdx
xorl %r8d, %r8d
callq 0x8b50
movq 0x38(%rbx), %rdi
movq %r13, %rsi
callq 0x8150
movq %rax, %rdi
movl $0x5, %esi
xorl %edx, %edx
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x8650