NS_IMETHODIMP nsImportGenericAddressBooks::WantsProgress(PRBool *_retval) { NS_PRECONDITION(_retval != nsnull, "null ptr"); if (!_retval) return NS_ERROR_NULL_POINTER; if (m_pThreadData) { m_pThreadData->DriverAbort(); m_pThreadData = nsnull; } GetDefaultLocation(); GetDefaultBooks(); PRUint32 totalSize = 0; PRBool result = PR_FALSE; if (m_pBooks) { PRUint32 count = 0; nsresult rv = m_pBooks->Count( &count); PRUint32 i; PRBool import; PRUint32 size; for (i = 0; i < count; i++) { nsCOMPtr<nsIImportABDescriptor> book = do_QueryElementAt(m_pBooks, i); if (book) { import = PR_FALSE; size = 0; rv = book->GetImport( &import); if (import) { rv = book->GetSize( &size); result = PR_TRUE; } totalSize += size; } } m_totalSize = totalSize; } m_doImport = result; *_retval = result; return( NS_OK); }
NS_IMETHODIMP nsImportGenericAddressBooks::WantsProgress(bool *_retval) { NS_PRECONDITION(_retval != nullptr, "null ptr"); NS_ENSURE_ARG_POINTER(_retval); GetDefaultLocation(); GetDefaultBooks(); bool result = false; if (m_Books) { uint32_t count = 0; uint32_t i; bool import; uint32_t size; uint32_t totalSize = 0; m_Books->GetLength(&count); for (i = 0; i < count; i++) { nsCOMPtr<nsIImportABDescriptor> book = do_QueryElementAt(m_Books, i); if (book) { import = false; size = 0; nsresult rv = book->GetImport(&import); if (NS_SUCCEEDED(rv) && import) { (void) book->GetSize(&size); result = true; } totalSize += size; } } m_totalSize = totalSize; } m_doImport = result; *_retval = result; return NS_OK; }
NS_IMETHODIMP nsImportGenericAddressBooks::GetData(const char *dataId, nsISupports **_retval) { NS_PRECONDITION(_retval != nullptr, "null ptr"); if (!_retval) return NS_ERROR_NULL_POINTER; nsresult rv; *_retval = nullptr; if (!PL_strcasecmp(dataId, "addressInterface")) { *_retval = m_pInterface; NS_IF_ADDREF(m_pInterface); } if (!PL_strcasecmp(dataId, "addressLocation")) { if (!m_pLocation) GetDefaultLocation(); NS_IF_ADDREF(*_retval = m_pLocation); } if (!PL_strcasecmp(dataId, "addressBooks")) { if (!m_pLocation) GetDefaultLocation(); if (!m_Books) GetDefaultBooks(); *_retval = m_Books; } if (!PL_strcasecmp(dataId, "addressDestination")) { if (m_pDestinationUri) { nsCOMPtr<nsISupportsCString> abString = do_CreateInstance(NS_SUPPORTS_CSTRING_CONTRACTID, &rv); NS_ENSURE_SUCCESS(rv, rv); abString->SetData(nsDependentCString(m_pDestinationUri)); NS_IF_ADDREF(*_retval = abString); } } if (!PL_strcasecmp(dataId, "fieldMap")) { if (m_pFieldMap) { *_retval = m_pFieldMap; m_pFieldMap->AddRef(); } else { if (m_pInterface && m_pLocation) { bool needsIt = false; m_pInterface->GetNeedsFieldMap(m_pLocation, &needsIt); if (needsIt) { GetDefaultFieldMap(); if (m_pFieldMap) { *_retval = m_pFieldMap; m_pFieldMap->AddRef(); } } } } } if (!PL_strncasecmp(dataId, "sampleData-", 11)) { // extra the record number const char *pNum = dataId + 11; int32_t rNum = 0; while (*pNum) { rNum *= 10; rNum += (*pNum - '0'); pNum++; } IMPORT_LOG1("Requesting sample data #: %ld\n", (long)rNum); if (m_pInterface) { nsCOMPtr<nsISupportsString> data = do_CreateInstance(NS_SUPPORTS_STRING_CONTRACTID, &rv); if (NS_FAILED(rv)) return rv; char16_t * pData = nullptr; bool found = false; rv = m_pInterface->GetSampleData(rNum, &found, &pData); if (NS_FAILED(rv)) return rv; if (found) { data->SetData(nsDependentString(pData)); *_retval = data; NS_ADDREF(*_retval); } NS_Free(pData); } } return NS_OK; }