Ejemplo n.º 1
0
static GtkTreeModel *
audit_build_model (GvaAuditData *data,
                   GError **error)
{
    GtkTreeModel *model;
    GtkTreeIter iter;
    gboolean iter_valid;

    model = gva_game_store_new_from_query (SQL_SELECT_BAD_GAMES, error);
    if (model == NULL)
        return NULL;

    iter_valid = gtk_tree_model_get_iter_first (model, &iter);

    while (iter_valid)
    {
        GtkTreeIter child;
        guint index;
        gchar *name;

        gtk_tree_model_get (model, &iter, 0, &name, -1);
        index = GPOINTER_TO_UINT (g_hash_table_lookup (
                                      data->output_index, name));

        while (index > 0)
        {
            const gchar *line;

            line = g_ptr_array_index (data->output, --index);

            if (!g_str_has_prefix (line, name))
                break;

            gtk_tree_store_prepend (
                GTK_TREE_STORE (model), &child, &iter);
            gtk_tree_store_set (
                GTK_TREE_STORE (model), &child,
                GVA_GAME_STORE_COLUMN_DESCRIPTION, line, -1);
        }

        g_free (name);

        iter_valid = gtk_tree_model_iter_next (model, &iter);
    }

    gtk_tree_sortable_set_sort_column_id (
        GTK_TREE_SORTABLE (model),
        GVA_GAME_STORE_COLUMN_DESCRIPTION, GTK_SORT_ASCENDING);

    return model;
}
Ejemplo n.º 2
0
static gboolean
audit_build_model (GtkTreeStore *tree_store,
                   GvaAuditData *data,
                   GError **error)
{
        GtkTreeModel *game_store;
        GtkTreeIter iter;
        gboolean iter_valid;

        game_store = gva_game_store_new_from_query (
                SQL_SELECT_BAD_GAMES, error);
        if (game_store == NULL)
                return FALSE;

        gtk_tree_store_clear (tree_store);

        iter_valid = gtk_tree_model_get_iter_first (game_store, &iter);

        while (iter_valid)
        {
                GtkTreeIter parent;
                GtkTreeIter child;
                guint index;
                gchar *name;
                gchar *description;

                gtk_tree_model_get (
                        game_store, &iter,
                        GVA_GAME_STORE_COLUMN_NAME, &name,
                        GVA_GAME_STORE_COLUMN_DESCRIPTION, &description,
                        -1);

                gtk_tree_store_append (tree_store, &parent, NULL);
                gtk_tree_store_set (tree_store, &parent, 0, description, -1);

                index = GPOINTER_TO_UINT (g_hash_table_lookup (
                        data->output_index, name));

                while (index > 0)
                {
                        const gchar *line;

                        line = g_ptr_array_index (data->output, --index);

                        if (!g_str_has_prefix (line, name))
                                break;

                        gtk_tree_store_prepend (tree_store, &child, &parent);
                        gtk_tree_store_set (tree_store, &child, 0, line, -1);
                }

                g_free (name);
                g_free (description);

                iter_valid = gtk_tree_model_iter_next (game_store, &iter);
        }

        gtk_tree_sortable_set_sort_column_id (
                GTK_TREE_SORTABLE (tree_store), 0, GTK_SORT_ASCENDING);

        g_object_unref (game_store);

        return TRUE;
}