Пример #1
0
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());
}
Пример #2
0
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;
}
Пример #3
0
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;
}
Пример #4
0
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;
}