Hi, folks.  I'm currently using QT 2.3 Non-Commercial to write a small application to download web comics.  I managed to get the write function working, but I can't seem to get the progress callback to work.  I've got a QProgressBar widget in my main application widget that I'm trying to use inside of my progress callback.  As far as I can tell, the progress callback isn't being called at all. 

Relevant code:

int progressFunction(void *ptr, size_t downTotalIn, size_t downNowIn, size_t upTotalOut, size_t upNowOut)
{
    static int first_time = 1;

    QProgressBar *progressBar = (QProgressBar *)ptr;
    int downloadTotal = static_cast< int >(downTotalIn);
    
   if(first_time == 1)
   {
       first_time = 0;
        progressBar->setTotalSteps(2500);
        progressBar->setProgress(0);
   }

      progressBar->setProgress(1250);    // Just to prove the function's being called

return 1;
}

size_t write_data(void *ptr, size_t size, size_t nmemb, FILE *stream)
{
    static int first_time=1;
    static FILE *outfile = stream;
    size_t written;

    if (outfile == NULL)
    {
       return -1;
    }

    written = fwrite(ptr,size,nmemb,outfile);
    return written;
}

void windowimpl::downloadSequence()
{
    ...

    curl_global_init(1<<1);
    curlHandle = curl_easy_init();

    curl_easy_setopt(curlHandle, CURLOPT_WRITEFUNCTION, &write_data);
    curl_easy_setopt(curlHandle, CURLOPT_PROGRESSFUNCTION,
                   &progressFunction);
    curl_easy_setopt(curlHandle, CURLOPT_PROGRESSDATA, ProgressBar3);  // ProgressBar3 is a QProgressBar*
    
    prepareDownload(currentDate);
    downloadFiles(currentDate, curlHandle);
    curl_easy_cleanup(curlHandle);
    curl_global_cleanup();
}


Comments: While the write_date function works as-is, I can't get progressFunction to work at all.  I've tried prototyping it in my extern "C" block, passing a reference, not passing a reference, etc.  I'm stuck.  It all compiles fine, but it does NOTHING.  VC++ recognizes if, say, I change my cast from a QProgressBar to a QLineEdit, as it promptly informs me that those aren't member functions, so at least the compiler says I'm on the right track.  But yeah, the progress function isn't getting called as far as I can tell.  Any ideas?

Mark Erikson