So, On the my tryto make the world better and separate the logic of the
profiles I'v come to this:

The DiveProfilePlot method will be changed to something similar to this:

void DiveDepthTimeModel::setDive(dive* d,const plot_info& pInfo)
{
    // We need a way to find out if the dive setted is the same old dive,
but pointers change,
    // and there's no UUID, for now, just repopulate everything.
    clear();
    struct divecomputer *dc = NULL;

    if (d)
        dc = select_dc(&d->dc);
    populate_plot_entries(dive, dc, pInfo);
    sampleCount = pInfo.nr;
    dcSamples = pInfo.entry;
    beginInsertRows(QModelIndex(), 0, sampleCount-1);
    endInsertRows();
}

The last two lines are magic-lines to tell Qt "Hey, data's ready, show it."
But on the create_plot_data method, there's a     return
analyze_plot_info(pi);
call that I didn't really understood.

So, Linus, Dirk, Anyone that understand the internals of the profile.c code:

Can I separate the calls like that?

There was a call to

    /* Create the new plot data */
    if (last_pi_entry)
        free((void *)last_pi_entry);
    last_pi_entry = populate_plot_entries(dive, dc, pInfo);

but that seems a bit wrong ( why should I keep a pointer to the
last_pi_entry?

For now, those are the doubts.

Tomaz
_______________________________________________
subsurface mailing list
subsurface@hohndel.org
http://lists.hohndel.org/cgi-bin/mailman/listinfo/subsurface

Reply via email to