Fix multimedia directory copy from pc.
This commit is contained in:
@@ -93,6 +93,7 @@ void CmaClient::connectWireless()
|
||||
setActive(true);
|
||||
|
||||
do {
|
||||
qDebug("Waiting for wireless connection");
|
||||
if((vita = VitaMTP_Get_First_Wireless_Vita(&host, 0, CC::deviceRegistered, CC::generatePin, CC::registrationComplete)) != NULL) {
|
||||
qDebug("Starting new wireless connection");
|
||||
processNewConnection(vita);
|
||||
|
@@ -265,9 +265,46 @@ void CmaEvent::vitaEventSendCopyConfirmationInfo(vita_event_t *event, int eventI
|
||||
|
||||
QMutexLocker locker(&m_db->mutex);
|
||||
|
||||
qint64 size;
|
||||
qint64 total_size = 0;
|
||||
|
||||
// check if the item is a single folder
|
||||
if(info->count == 1) {
|
||||
metadata_t meta;
|
||||
if(m_db->getObjectMetadata(info->ohfi[0], meta)) {
|
||||
// got a folder
|
||||
if(meta.dataType & Folder) {
|
||||
metadata_t *meta_list = NULL;
|
||||
if(m_db->getObjectList(info->ohfi[0], &meta_list)) {
|
||||
int count = 0;
|
||||
metadata_t *meta = meta_list;
|
||||
// count files
|
||||
while(meta) {
|
||||
if(meta->dataType & File) {
|
||||
count++;
|
||||
}
|
||||
meta = meta->next_metadata;
|
||||
}
|
||||
// create struct to hold all the file identifiers
|
||||
info = (copy_confirmation_info_t *)malloc(sizeof(uint32_t) * count + sizeof(copy_confirmation_info_t));
|
||||
meta = meta_list;
|
||||
info->count = 0;
|
||||
// copy all the file ohfi
|
||||
while(meta) {
|
||||
if(meta->dataType & File) {
|
||||
info->ohfi[info->count] = meta->ohfi;
|
||||
total_size += meta->size;
|
||||
info->count++;
|
||||
}
|
||||
meta = meta->next_metadata;
|
||||
}
|
||||
|
||||
}
|
||||
m_db->freeMetadata(meta_list);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
qint64 size;
|
||||
|
||||
for(quint32 i = 0; i < info->count; i++) {
|
||||
if((size = m_db->getObjectSize(info->ohfi[i])) < 0) {
|
||||
qWarning("Cannot find OHFI %d", info->ohfi[i]);
|
||||
@@ -277,6 +314,7 @@ void CmaEvent::vitaEventSendCopyConfirmationInfo(vita_event_t *event, int eventI
|
||||
|
||||
total_size += size;
|
||||
}
|
||||
}
|
||||
|
||||
if(VitaMTP_SendCopyConfirmationInfo(device, eventId, info, total_size) != PTP_RC_OK) {
|
||||
qWarning("Error sending copy confirmation");
|
||||
@@ -440,7 +478,7 @@ void CmaEvent::vitaEventSendObject(vita_event_t *event, int eventId)
|
||||
|
||||
// send the data over
|
||||
qDebug("Sending %s of %lu bytes to device", metadata->name, len);
|
||||
qDebug("OHFI %d with handle 0x%08X", ohfi, parentHandle);
|
||||
qDebug("OHFI %d with handle 0x%08X", metadata->ohfi, parentHandle);
|
||||
|
||||
VitaMTP_RegisterCancelEventId(eventId);
|
||||
quint16 ret = VitaMTP_SendObject_Callback(device, &parentHandle, &handle, metadata, &CmaEvent::readCallback);
|
||||
|
@@ -49,10 +49,11 @@ void CMARootObject::initObject(const QString &path)
|
||||
case VITA_OHFI_PHOTO:
|
||||
metadata.dataType = Photo;
|
||||
this->path = path;
|
||||
num_filters = 2;
|
||||
filters = new metadata_t[2];
|
||||
createFilter(&filters[0], "Folders", VITA_DIR_TYPE_MASK_PHOTO | VITA_DIR_TYPE_MASK_ROOT | VITA_DIR_TYPE_MASK_REGULAR);
|
||||
createFilter(&filters[1], "All", VITA_DIR_TYPE_MASK_PHOTO | VITA_DIR_TYPE_MASK_ROOT | VITA_DIR_TYPE_MASK_ALL);
|
||||
num_filters = 3;
|
||||
filters = new metadata_t[3];
|
||||
createFilter(&filters[0], "All", VITA_DIR_TYPE_MASK_PHOTO | VITA_DIR_TYPE_MASK_ROOT | VITA_DIR_TYPE_MASK_ALL);
|
||||
createFilter(&filters[1], "Month", VITA_DIR_TYPE_MASK_PHOTO | VITA_DIR_TYPE_MASK_ROOT | VITA_DIR_TYPE_MASK_MONTH);
|
||||
createFilter(&filters[2], "Folders", VITA_DIR_TYPE_MASK_PHOTO | VITA_DIR_TYPE_MASK_ROOT | VITA_DIR_TYPE_MASK_REGULAR);
|
||||
break;
|
||||
|
||||
case VITA_OHFI_VIDEO:
|
||||
@@ -60,8 +61,8 @@ void CMARootObject::initObject(const QString &path)
|
||||
this->path = path;
|
||||
num_filters = 2;
|
||||
filters = new metadata_t[2];
|
||||
createFilter(&filters[0], "Folders", VITA_DIR_TYPE_MASK_VIDEO | VITA_DIR_TYPE_MASK_ROOT | VITA_DIR_TYPE_MASK_REGULAR);
|
||||
createFilter(&filters[1], "All", VITA_DIR_TYPE_MASK_VIDEO | VITA_DIR_TYPE_MASK_ROOT | VITA_DIR_TYPE_MASK_ALL);
|
||||
createFilter(&filters[0], "All", VITA_DIR_TYPE_MASK_VIDEO | VITA_DIR_TYPE_MASK_ROOT | VITA_DIR_TYPE_MASK_ALL);
|
||||
createFilter(&filters[1], "Folders", VITA_DIR_TYPE_MASK_VIDEO | VITA_DIR_TYPE_MASK_ROOT | VITA_DIR_TYPE_MASK_REGULAR);
|
||||
break;
|
||||
|
||||
case VITA_OHFI_VITAAPP:
|
||||
|
@@ -327,13 +327,16 @@ int QListDB::acceptFilteredObject(const CMAObject *parent, const CMAObject *curr
|
||||
result = (current->metadata.dataType & Music);
|
||||
}
|
||||
|
||||
if(type == (VITA_DIR_TYPE_MASK_MUSIC | VITA_DIR_TYPE_MASK_ROOT | VITA_DIR_TYPE_MASK_ARTISTS)) {
|
||||
if(MASK_SET(type, VITA_DIR_TYPE_MASK_ARTISTS)) {
|
||||
// unimplemented
|
||||
return 0;
|
||||
} else if(type == (VITA_DIR_TYPE_MASK_MUSIC | VITA_DIR_TYPE_MASK_ROOT | VITA_DIR_TYPE_MASK_GENRES)) {
|
||||
} else if(MASK_SET(type, VITA_DIR_TYPE_MASK_GENRES)) {
|
||||
// unimplemented
|
||||
return 0;
|
||||
} else if(type == (VITA_DIR_TYPE_MASK_MUSIC | VITA_DIR_TYPE_MASK_ROOT | VITA_DIR_TYPE_MASK_PLAYLISTS)) {
|
||||
} else if(MASK_SET(type, VITA_DIR_TYPE_MASK_PLAYLISTS)) {
|
||||
// unimplemented
|
||||
return 0;
|
||||
} else if(MASK_SET(type, VITA_DIR_TYPE_MASK_MONTH)) {
|
||||
// unimplemented
|
||||
return 0;
|
||||
} else if(type & (VITA_DIR_TYPE_MASK_ALL | VITA_DIR_TYPE_MASK_SONGS)) {
|
||||
|
Reference in New Issue
Block a user