Ejemplo n.º 1
0
void CPartFileConvertDlg::UpdateJobInfo(ConvertInfo& info)
{
	if (s_convertgui) {
		// search jobitem in listctrl
		long itemnr = s_convertgui->m_joblist->FindItem(-1, info.id);
		// if it does not exist, add it
		if (itemnr == -1) {
			itemnr = s_convertgui->m_joblist->InsertItem(s_convertgui->m_joblist->GetItemCount(), info.folder.GetPrintable());
			if (itemnr != -1) {
				s_convertgui->m_joblist->SetItemData(itemnr, info.id);
			}
		}
		// update columns
		if (itemnr != -1) {
			s_convertgui->m_joblist->SetItem(itemnr, 0, info.filename.IsOk() ? info.folder.GetPrintable() : info.filename.GetPrintable() );
			s_convertgui->m_joblist->SetItem(itemnr, 1, GetConversionState(info.state) );
			if (info.size > 0) {
				s_convertgui->m_joblist->SetItem(itemnr, 2, CFormat(_("%s (Disk: %s)")) % CastItoXBytes(info.size) % CastItoXBytes(info.spaceneeded));
			} else {
				s_convertgui->m_joblist->SetItem(itemnr, 2, wxEmptyString);
			}
			s_convertgui->m_joblist->SetItem(itemnr, 3, info.filehash);
		}
	}
}
Ejemplo n.º 2
0
wxThread::ExitCode CPartFileConvert::Entry()
{
    int imported = 0;

    for (;;)
    {
        // search next queued job and start it
        {
            wxMutexLocker lock(s_mutex);
            s_pfconverting = NULL;
            for (std::list<ConvertJob*>::iterator it = s_jobs.begin(); it != s_jobs.end(); ++it) {
                if ((*it)->state == CONV_QUEUE) {
                    s_pfconverting = *it;
                    break;
                }
            }
        }

        if (s_pfconverting) {
            {
                wxMutexLocker lock(s_mutex);
                s_pfconverting->state = CONV_INPROGRESS;
            }

            Notify_ConvertUpdateJobInfo(s_pfconverting);

            ConvStatus convertResult = performConvertToeMule(s_pfconverting->folder);
            {
                wxMutexLocker lock(s_mutex);
                s_pfconverting->state = convertResult;
            }

            if (s_pfconverting->state == CONV_OK) {
                ++imported;
            }

            Notify_ConvertUpdateJobInfo(s_pfconverting);

            AddLogLineC(CFormat(_("Importing %s: %s")) % s_pfconverting->folder % GetConversionState(s_pfconverting->state));

            if (TestDestroy()) {
                wxMutexLocker lock(s_mutex);
                DeleteContents(s_jobs);
                break;
            }
        } else {
            break; // nothing more to do now
        }
    }

    // clean up
    Notify_ConvertClearInfos();

    if (imported) {
        theApp->sharedfiles->PublishNextTurn();
    }

    AddDebugLogLineN(logPfConvert, wxT("No more jobs on queue, exiting from thread."));

    s_convertPfThread = NULL;

    return NULL;
}