bool MtpDevice::GetSupportedFiletypes(QList<Song::FileType>* ret) { QMutexLocker l(&db_busy_); MtpConnection connection(url_); if (!connection.is_valid()) { qLog(Warning) << "Error connecting to MTP device, couldn't get list of " "supported filetypes"; return false; } return GetSupportedFiletypes(ret, connection.device()); }
bool GPodDevice::StartCopy(QList<Song::FileType>* supported_filetypes) { { // Wait for the database to be loaded QMutexLocker l(&db_mutex_); if (!db_) db_wait_cond_.wait(&db_mutex_); } // Ensure only one "organise files" can be active at any one time db_busy_.lock(); if (supported_filetypes) GetSupportedFiletypes(supported_filetypes); return true; }
bool MtpDevice::StartCopy(QList<Song::FileType>* supported_types) { // Ensure only one "organise files" can be active at any one time db_busy_.lock(); // Connect to the device connection_.reset(new MtpConnection(url_)); // Did the caller want a list of supported types? if (supported_types) { if (!GetSupportedFiletypes(supported_types, connection_->device())) { FinishCopy(false); return false; } } return true; }
bool WmdmDevice::StartCopy(QList<Song::FileType>* supported_types) { // Ensure only one "organise files" can be active at any one time db_busy_.lock(); // This initialises COM and gets a connection to the device thread_.reset(new WmdmThread); if (!thread_->manager()) return false; // Find a place to put the files. We default to the root folder for now, but // could look for a "Music" folder in the future? WmdmLister* wmdm_lister = static_cast<WmdmLister*>(lister()); QString canonical_name = wmdm_lister->DeviceCanonicalName(unique_id()); IWMDMStorage* destination = thread_->GetRootStorage(canonical_name); // Get the control interface destination->QueryInterface(IID_IWMDMStorageControl3, (void**)&storage_control_); // Get the storage3 interface for CreateEmptyMetadataObject later destination->QueryInterface(IID_IWMDMStorage3, (void**)&storage_); destination->Release(); // Did the caller want a list of supported filetypes? if (supported_types) { IWMDMDevice* device = thread_->GetDeviceByCanonicalName(canonical_name); if (!GetSupportedFiletypes(supported_types, device)) { device->Release(); FinishCopy(false); return false; } device->Release(); } return true; }