mirror of
https://bitbucket.org/smil3y/kde-workspace.git
synced 2025-02-23 10:22:49 +00:00
generic: adjust to KFileItem changes
the camera slave is on the chopping block, libtmp is supposed to be able to handle PTP too Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
This commit is contained in:
parent
76023a50a7
commit
e16eb8e85d
14 changed files with 55 additions and 41 deletions
|
@ -198,7 +198,7 @@ void InformationPanel::slotFolderStatFinished(KJob* job)
|
||||||
{
|
{
|
||||||
m_folderStatJob = 0;
|
m_folderStatJob = 0;
|
||||||
const KIO::UDSEntry entry = static_cast<KIO::StatJob*>(job)->statResult();
|
const KIO::UDSEntry entry = static_cast<KIO::StatJob*>(job)->statResult();
|
||||||
m_content->showItem(KFileItem(entry, m_shownUrl));
|
m_content->showItem(KFileItem(entry));
|
||||||
}
|
}
|
||||||
|
|
||||||
void InformationPanel::slotInfoTimeout()
|
void InformationPanel::slotInfoTimeout()
|
||||||
|
|
|
@ -2145,7 +2145,7 @@ bool KateDocument::saveFile()
|
||||||
KIO::UDSEntry fentry;
|
KIO::UDSEntry fentry;
|
||||||
if (KIO::NetAccess::stat (url(), fentry, QApplication::activeWindow())) {
|
if (KIO::NetAccess::stat (url(), fentry, QApplication::activeWindow())) {
|
||||||
// do a evil copy which will overwrite target if possible
|
// do a evil copy which will overwrite target if possible
|
||||||
KFileItem item (fentry, url());
|
KFileItem item (fentry);
|
||||||
KIO::FileCopyJob *job = KIO::file_copy ( url(), u, item.permissions(), KIO::Overwrite );
|
KIO::FileCopyJob *job = KIO::file_copy ( url(), u, item.permissions(), KIO::Overwrite );
|
||||||
backupSuccess = KIO::NetAccess::synchronousRun(job, QApplication::activeWindow());
|
backupSuccess = KIO::NetAccess::synchronousRun(job, QApplication::activeWindow());
|
||||||
}
|
}
|
||||||
|
|
|
@ -344,7 +344,7 @@ void DesktopPathConfig::slotEntries(KIO::Job*, const KIO::UDSEntryList& list)
|
||||||
{
|
{
|
||||||
QListIterator<KIO::UDSEntry> it(list);
|
QListIterator<KIO::UDSEntry> it(list);
|
||||||
while (it.hasNext()) {
|
while (it.hasNext()) {
|
||||||
KFileItem file(it.next(), m_copyFromSrc);
|
KFileItem file(it.next());
|
||||||
kDebug() << file.url();
|
kDebug() << file.url();
|
||||||
if (file.url() == m_copyFromSrc || file.url().fileName() == "..") {
|
if (file.url() == m_copyFromSrc || file.url().fileName() == "..") {
|
||||||
continue;
|
continue;
|
||||||
|
|
|
@ -113,7 +113,7 @@ void KQuery::slotListEntries(KIO::Job*, const KIO::UDSEntryList& list)
|
||||||
const KIO::UDSEntryList::ConstIterator end = list.constEnd();
|
const KIO::UDSEntryList::ConstIterator end = list.constEnd();
|
||||||
|
|
||||||
for (KIO::UDSEntryList::ConstIterator it = list.constBegin(); it != end; ++it)
|
for (KIO::UDSEntryList::ConstIterator it = list.constBegin(); it != end; ++it)
|
||||||
m_fileItems.enqueue(KFileItem(*it, m_url));
|
m_fileItems.enqueue(KFileItem(*it));
|
||||||
|
|
||||||
checkEntries();
|
checkEntries();
|
||||||
}
|
}
|
||||||
|
|
|
@ -382,6 +382,7 @@ void KameraProtocol::statRoot(void)
|
||||||
{
|
{
|
||||||
KIO::UDSEntry entry;
|
KIO::UDSEntry entry;
|
||||||
entry.insert(KIO::UDSEntry::UDS_NAME, QString::fromLatin1("/"));
|
entry.insert(KIO::UDSEntry::UDS_NAME, QString::fromLatin1("/"));
|
||||||
|
entry.insert(KIO::UDSEntry::UDS_URL, "camera:/");
|
||||||
entry.insert(KIO::UDSEntry::UDS_FILE_TYPE, S_IFDIR);
|
entry.insert(KIO::UDSEntry::UDS_FILE_TYPE, S_IFDIR);
|
||||||
entry.insert(KIO::UDSEntry::UDS_ACCESS, (S_IRUSR | S_IRGRP | S_IROTH));
|
entry.insert(KIO::UDSEntry::UDS_ACCESS, (S_IRUSR | S_IRGRP | S_IROTH));
|
||||||
entry.insert(KIO::UDSEntry::UDS_MIME_TYPE, QString::fromLatin1("inode/directory"));
|
entry.insert(KIO::UDSEntry::UDS_MIME_TYPE, QString::fromLatin1("inode/directory"));
|
||||||
|
@ -392,7 +393,7 @@ void KameraProtocol::statRoot(void)
|
||||||
idletime = MAXIDLETIME;
|
idletime = MAXIDLETIME;
|
||||||
}
|
}
|
||||||
|
|
||||||
void KameraProtocol::split_url2camerapath(QString url, QString &directory, QString &file) {
|
void KameraProtocol::split_url2camerapath(const QString &url, QString &directory, QString &file) {
|
||||||
QStringList components, camarr;
|
QStringList components, camarr;
|
||||||
QString cam, camera, port;
|
QString cam, camera, port;
|
||||||
|
|
||||||
|
@ -436,6 +437,7 @@ void KameraProtocol::statRegular(const KUrl &xurl)
|
||||||
|
|
||||||
QString xname = current_camera + "@" + current_port;
|
QString xname = current_camera + "@" + current_port;
|
||||||
entry.insert(KIO::UDSEntry::UDS_NAME, path_quote(xname));
|
entry.insert(KIO::UDSEntry::UDS_NAME, path_quote(xname));
|
||||||
|
entry.insert(KIO::UDSEntry::UDS_URL, xurl.url());
|
||||||
entry.insert(KIO::UDSEntry::UDS_DISPLAY_NAME, current_camera);
|
entry.insert(KIO::UDSEntry::UDS_DISPLAY_NAME, current_camera);
|
||||||
entry.insert(KIO::UDSEntry::UDS_FILE_TYPE, S_IFDIR);
|
entry.insert(KIO::UDSEntry::UDS_FILE_TYPE, S_IFDIR);
|
||||||
entry.insert(KIO::UDSEntry::UDS_ACCESS, (S_IRUSR | S_IRGRP | S_IROTH));
|
entry.insert(KIO::UDSEntry::UDS_ACCESS, (S_IRUSR | S_IRGRP | S_IROTH));
|
||||||
|
@ -539,12 +541,12 @@ void KameraProtocol::del(const KUrl &url, bool isFile)
|
||||||
}
|
}
|
||||||
|
|
||||||
// The KIO slave "listDir" function.
|
// The KIO slave "listDir" function.
|
||||||
void KameraProtocol::listDir(const KUrl &yurl)
|
void KameraProtocol::listDir(const KUrl &xurl)
|
||||||
{
|
{
|
||||||
QString directory, file;
|
QString directory, file;
|
||||||
kDebug(7123) << "KameraProtocol::listDir(" << yurl.path() << ")";
|
kDebug(7123) << "KameraProtocol::listDir(" << xurl.path() << ")";
|
||||||
|
|
||||||
split_url2camerapath(yurl.path(), directory, file);
|
split_url2camerapath(xurl.path(), directory, file);
|
||||||
|
|
||||||
if (!file.isEmpty()) {
|
if (!file.isEmpty()) {
|
||||||
if (directory == "/") {
|
if (directory == "/") {
|
||||||
|
@ -554,8 +556,7 @@ void KameraProtocol::listDir(const KUrl &yurl)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (yurl.path() == "/") {
|
if (xurl.path() == "/") {
|
||||||
KUrl xurl;
|
|
||||||
// List the available cameras
|
// List the available cameras
|
||||||
QStringList groupList = m_config->groupList();
|
QStringList groupList = m_config->groupList();
|
||||||
kDebug(7123) << "Found cameras: " << groupList.join(", ");
|
kDebug(7123) << "Found cameras: " << groupList.join(", ");
|
||||||
|
@ -640,6 +641,7 @@ void KameraProtocol::listDir(const KUrl &yurl)
|
||||||
entry.insert(KIO::UDSEntry::UDS_ACCESS,(S_IRUSR | S_IRGRP | S_IROTH |S_IWUSR | S_IWGRP | S_IWOTH));
|
entry.insert(KIO::UDSEntry::UDS_ACCESS,(S_IRUSR | S_IRGRP | S_IROTH |S_IWUSR | S_IWGRP | S_IWOTH));
|
||||||
xname = (*it) + "@" + m_cfgPath;
|
xname = (*it) + "@" + m_cfgPath;
|
||||||
entry.insert(KIO::UDSEntry::UDS_NAME, path_quote(xname));
|
entry.insert(KIO::UDSEntry::UDS_NAME, path_quote(xname));
|
||||||
|
// TODO: entry.insert(KIO::UDSEntry::UDS_URL, xurl.url());
|
||||||
// do not confuse regular users with the @usb...
|
// do not confuse regular users with the @usb...
|
||||||
entry.insert(KIO::UDSEntry::UDS_DISPLAY_NAME, *it);
|
entry.insert(KIO::UDSEntry::UDS_DISPLAY_NAME, *it);
|
||||||
listEntry(entry, false);
|
listEntry(entry, false);
|
||||||
|
@ -648,10 +650,11 @@ void KameraProtocol::listDir(const KUrl &yurl)
|
||||||
QMap<QString,QString>::iterator portsit;
|
QMap<QString,QString>::iterator portsit;
|
||||||
for (portsit = ports.begin(); portsit != ports.end(); portsit++) {
|
for (portsit = ports.begin(); portsit != ports.end(); portsit++) {
|
||||||
entry.clear();
|
entry.clear();
|
||||||
entry.insert(KIO::UDSEntry::UDS_FILE_TYPE,S_IFDIR);
|
entry.insert(KIO::UDSEntry::UDS_FILE_TYPE, S_IFDIR);
|
||||||
// do not confuse regular users with the @usb...
|
// do not confuse regular users with the @usb...
|
||||||
entry.insert(KIO::UDSEntry::UDS_DISPLAY_NAME,portsit.value());
|
entry.insert(KIO::UDSEntry::UDS_DISPLAY_NAME, portsit.value());
|
||||||
entry.insert(KIO::UDSEntry::UDS_NAME, path_quote(portsit.value() + "@" + portsit.key()));
|
entry.insert(KIO::UDSEntry::UDS_NAME, path_quote(portsit.value() + "@" + portsit.key()));
|
||||||
|
// TODO: entry.insert(KIO::UDSEntry::UDS_URL, xurl.url());
|
||||||
|
|
||||||
entry.insert(KIO::UDSEntry::UDS_ACCESS,(S_IRUSR | S_IRGRP | S_IROTH |S_IWUSR | S_IWGRP | S_IWOTH));
|
entry.insert(KIO::UDSEntry::UDS_ACCESS,(S_IRUSR | S_IRGRP | S_IROTH |S_IWUSR | S_IWGRP | S_IWOTH));
|
||||||
listEntry(entry, false);
|
listEntry(entry, false);
|
||||||
|
@ -663,7 +666,7 @@ void KameraProtocol::listDir(const KUrl &yurl)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (directory.isEmpty()) {
|
if (directory.isEmpty()) {
|
||||||
KUrl rooturl(yurl);
|
KUrl rooturl(xurl);
|
||||||
|
|
||||||
kDebug(7123) << "redirecting to /";
|
kDebug(7123) << "redirecting to /";
|
||||||
if (!current_camera.isEmpty() && !current_port.isEmpty()) {
|
if (!current_camera.isEmpty() && !current_port.isEmpty()) {
|
||||||
|
@ -677,7 +680,7 @@ void KameraProtocol::listDir(const KUrl &yurl)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!openCamera()) {
|
if (!openCamera()) {
|
||||||
error(KIO::ERR_COULD_NOT_READ, yurl.path());
|
error(KIO::ERR_COULD_NOT_READ, xurl.path());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -860,8 +863,9 @@ void KameraProtocol::translateTextToUDS(KIO::UDSEntry &udsEntry, const QString &
|
||||||
udsEntry.clear();
|
udsEntry.clear();
|
||||||
|
|
||||||
udsEntry.insert(KIO::UDSEntry::UDS_FILE_TYPE, S_IFREG);
|
udsEntry.insert(KIO::UDSEntry::UDS_FILE_TYPE, S_IFREG);
|
||||||
udsEntry.insert(KIO::UDSEntry::UDS_NAME,path_quote(fn));
|
udsEntry.insert(KIO::UDSEntry::UDS_NAME, path_quote(fn));
|
||||||
udsEntry.insert(KIO::UDSEntry::UDS_DISPLAY_NAME,fn);
|
// TODO: udsEntry.insert(KIO::UDSEntry::UDS_URL, path_quote(fn));
|
||||||
|
udsEntry.insert(KIO::UDSEntry::UDS_DISPLAY_NAME, fn);
|
||||||
udsEntry.insert(KIO::UDSEntry::UDS_SIZE,strlen(text));
|
udsEntry.insert(KIO::UDSEntry::UDS_SIZE,strlen(text));
|
||||||
udsEntry.insert(KIO::UDSEntry::UDS_ACCESS,(S_IRUSR | S_IRGRP | S_IROTH));
|
udsEntry.insert(KIO::UDSEntry::UDS_ACCESS,(S_IRUSR | S_IRGRP | S_IROTH));
|
||||||
}
|
}
|
||||||
|
@ -874,6 +878,7 @@ void KameraProtocol::translateFileToUDS(KIO::UDSEntry &udsEntry, const CameraFil
|
||||||
|
|
||||||
udsEntry.insert(KIO::UDSEntry::UDS_FILE_TYPE, S_IFREG);
|
udsEntry.insert(KIO::UDSEntry::UDS_FILE_TYPE, S_IFREG);
|
||||||
udsEntry.insert(KIO::UDSEntry::UDS_NAME, path_quote(name));
|
udsEntry.insert(KIO::UDSEntry::UDS_NAME, path_quote(name));
|
||||||
|
// TODO: udsEntry.insert(KIO::UDSEntry::UDS_URL, path_quote(fn));
|
||||||
udsEntry.insert(KIO::UDSEntry::UDS_DISPLAY_NAME, name);
|
udsEntry.insert(KIO::UDSEntry::UDS_DISPLAY_NAME, name);
|
||||||
|
|
||||||
if (info.file.fields & GP_FILE_INFO_SIZE) {
|
if (info.file.fields & GP_FILE_INFO_SIZE) {
|
||||||
|
@ -907,6 +912,7 @@ void KameraProtocol::translateDirectoryToUDS(KIO::UDSEntry &udsEntry, const QStr
|
||||||
|
|
||||||
udsEntry.insert(KIO::UDSEntry::UDS_FILE_TYPE, S_IFDIR);
|
udsEntry.insert(KIO::UDSEntry::UDS_FILE_TYPE, S_IFDIR);
|
||||||
udsEntry.insert(KIO::UDSEntry::UDS_NAME, path_quote(dirname));
|
udsEntry.insert(KIO::UDSEntry::UDS_NAME, path_quote(dirname));
|
||||||
|
// TODO: udsEntry.insert(KIO::UDSEntry::UDS_URL, path_quote(dirname));
|
||||||
udsEntry.insert(KIO::UDSEntry::UDS_DISPLAY_NAME, dirname);
|
udsEntry.insert(KIO::UDSEntry::UDS_DISPLAY_NAME, dirname);
|
||||||
udsEntry.insert(KIO::UDSEntry::UDS_ACCESS,S_IRUSR | S_IRGRP | S_IROTH |S_IWUSR | S_IWGRP | S_IWOTH | S_IXUSR | S_IXOTH | S_IXGRP);
|
udsEntry.insert(KIO::UDSEntry::UDS_ACCESS,S_IRUSR | S_IRGRP | S_IROTH |S_IWUSR | S_IWGRP | S_IWOTH | S_IXUSR | S_IXOTH | S_IXGRP);
|
||||||
udsEntry.insert(KIO::UDSEntry::UDS_MIME_TYPE, QString("inode/directory"));
|
udsEntry.insert(KIO::UDSEntry::UDS_MIME_TYPE, QString("inode/directory"));
|
||||||
|
|
|
@ -52,7 +52,7 @@ private:
|
||||||
|
|
||||||
GPContext *m_context;
|
GPContext *m_context;
|
||||||
|
|
||||||
void split_url2camerapath(QString url, QString &directory, QString &file);
|
void split_url2camerapath(const QString &url, QString &directory, QString &file);
|
||||||
void setCamera(const QString &cam, const QString &port);
|
void setCamera(const QString &cam, const QString &port);
|
||||||
void reparseConfiguration(void);
|
void reparseConfiguration(void);
|
||||||
bool openCamera(QString& str);
|
bool openCamera(QString& str);
|
||||||
|
|
|
@ -262,7 +262,7 @@ void MTPSlave::listDir(const KUrl& url)
|
||||||
{
|
{
|
||||||
LIBMTP_mtpdevice_t *device = cachedDevice->getDevice();
|
LIBMTP_mtpdevice_t *device = cachedDevice->getDevice();
|
||||||
|
|
||||||
getEntry(entry, device);
|
getEntry(entry, device, url.url());
|
||||||
|
|
||||||
listEntry(entry, false);
|
listEntry(entry, false);
|
||||||
entry.clear();
|
entry.clear();
|
||||||
|
@ -289,7 +289,7 @@ void MTPSlave::listDir(const KUrl& url)
|
||||||
|
|
||||||
if (storages.size() > 0) {
|
if (storages.size() > 0) {
|
||||||
foreach (const QString &storageName, storages.keys()) {
|
foreach (const QString &storageName, storages.keys()) {
|
||||||
getEntry(entry, storages.value(storageName));
|
getEntry(entry, storages.value(storageName), url.url());
|
||||||
|
|
||||||
listEntry(entry, false);
|
listEntry(entry, false);
|
||||||
entry.clear();
|
entry.clear();
|
||||||
|
@ -327,7 +327,7 @@ void MTPSlave::listDir(const KUrl& url)
|
||||||
QString filePath = url.path(KUrl::AddTrailingSlash).append(it.key());
|
QString filePath = url.path(KUrl::AddTrailingSlash).append(it.key());
|
||||||
fileCache->addPath(filePath, file->item_id);
|
fileCache->addPath(filePath, file->item_id);
|
||||||
|
|
||||||
getEntry(entry, file);
|
getEntry(entry, file, url.url());
|
||||||
|
|
||||||
listEntry(entry, false);
|
listEntry(entry, false);
|
||||||
entry.clear();
|
entry.clear();
|
||||||
|
@ -380,18 +380,19 @@ void MTPSlave::stat(const KUrl& url)
|
||||||
// Root
|
// Root
|
||||||
if (pathItems.size() < 1) {
|
if (pathItems.size() < 1) {
|
||||||
entry.insert(UDSEntry::UDS_NAME, QLatin1String("mtp:///"));
|
entry.insert(UDSEntry::UDS_NAME, QLatin1String("mtp:///"));
|
||||||
|
entry.insert(UDSEntry::UDS_URL, QLatin1String("mtp:///"));
|
||||||
entry.insert(UDSEntry::UDS_FILE_TYPE, S_IFDIR );
|
entry.insert(UDSEntry::UDS_FILE_TYPE, S_IFDIR );
|
||||||
entry.insert(UDSEntry::UDS_ACCESS, S_IRUSR | S_IRGRP | S_IROTH | S_IXUSR | S_IXGRP | S_IXOTH);
|
entry.insert(UDSEntry::UDS_ACCESS, S_IRUSR | S_IRGRP | S_IROTH | S_IXUSR | S_IXGRP | S_IXOTH);
|
||||||
entry.insert(UDSEntry::UDS_MIME_TYPE, QLatin1String("inode/directory"));
|
entry.insert(UDSEntry::UDS_MIME_TYPE, QLatin1String("inode/directory"));
|
||||||
// Device
|
// Device
|
||||||
} else if (pathItems.size() < 2) {
|
} else if (pathItems.size() < 2) {
|
||||||
getEntry(entry, pair.second);
|
getEntry(entry, pair.second, url.url());
|
||||||
// Storage
|
// Storage
|
||||||
} else if (pathItems.size() < 3) {
|
} else if (pathItems.size() < 3) {
|
||||||
getEntry (entry, (LIBMTP_devicestorage_t*)pair.first);
|
getEntry (entry, (LIBMTP_devicestorage_t*)pair.first, url.url());
|
||||||
// Folder/File
|
// Folder/File
|
||||||
} else {
|
} else {
|
||||||
getEntry(entry, (LIBMTP_file_t*)pair.first);
|
getEntry(entry, (LIBMTP_file_t*)pair.first, url.url());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
statEntry(entry);
|
statEntry(entry);
|
||||||
|
|
|
@ -292,7 +292,7 @@ QMap<QString, LIBMTP_file_t*> getFiles(LIBMTP_mtpdevice_t *&device, uint32_t sto
|
||||||
return fileMap;
|
return fileMap;
|
||||||
}
|
}
|
||||||
|
|
||||||
void getEntry(UDSEntry &entry, LIBMTP_mtpdevice_t* device)
|
void getEntry(UDSEntry &entry, LIBMTP_mtpdevice_t* device, const QString &url)
|
||||||
{
|
{
|
||||||
char *charName = LIBMTP_Get_Friendlyname(device);
|
char *charName = LIBMTP_Get_Friendlyname(device);
|
||||||
char *charModel = LIBMTP_Get_Modelname(device);
|
char *charModel = LIBMTP_Get_Modelname(device);
|
||||||
|
@ -306,13 +306,14 @@ void getEntry(UDSEntry &entry, LIBMTP_mtpdevice_t* device)
|
||||||
}
|
}
|
||||||
|
|
||||||
entry.insert(UDSEntry::UDS_NAME, deviceName);
|
entry.insert(UDSEntry::UDS_NAME, deviceName);
|
||||||
|
entry.insert(UDSEntry::UDS_URL, url);
|
||||||
entry.insert(UDSEntry::UDS_ICON_NAME, QLatin1String("multimedia-player"));
|
entry.insert(UDSEntry::UDS_ICON_NAME, QLatin1String("multimedia-player"));
|
||||||
entry.insert(UDSEntry::UDS_FILE_TYPE, S_IFDIR);
|
entry.insert(UDSEntry::UDS_FILE_TYPE, S_IFDIR);
|
||||||
entry.insert(UDSEntry::UDS_ACCESS, S_IRUSR | S_IRGRP | S_IROTH | S_IXUSR | S_IXGRP | S_IXOTH);
|
entry.insert(UDSEntry::UDS_ACCESS, S_IRUSR | S_IRGRP | S_IROTH | S_IXUSR | S_IXGRP | S_IXOTH);
|
||||||
entry.insert(UDSEntry::UDS_MIME_TYPE, QLatin1String("inode/directory"));
|
entry.insert(UDSEntry::UDS_MIME_TYPE, QLatin1String("inode/directory"));
|
||||||
}
|
}
|
||||||
|
|
||||||
void getEntry(UDSEntry &entry, const LIBMTP_devicestorage_t* storage)
|
void getEntry(UDSEntry &entry, const LIBMTP_devicestorage_t* storage, const QString &url)
|
||||||
{
|
{
|
||||||
// char *charIdentifier = storage->VolumeIdentifier;
|
// char *charIdentifier = storage->VolumeIdentifier;
|
||||||
char *charDescription = storage->StorageDescription;
|
char *charDescription = storage->StorageDescription;
|
||||||
|
@ -325,15 +326,17 @@ void getEntry(UDSEntry &entry, const LIBMTP_devicestorage_t* storage)
|
||||||
// }
|
// }
|
||||||
|
|
||||||
entry.insert(UDSEntry::UDS_NAME, storageName);
|
entry.insert(UDSEntry::UDS_NAME, storageName);
|
||||||
|
entry.insert(UDSEntry::UDS_URL, url);
|
||||||
entry.insert(UDSEntry::UDS_ICON_NAME, QLatin1String("drive-removable-media"));
|
entry.insert(UDSEntry::UDS_ICON_NAME, QLatin1String("drive-removable-media"));
|
||||||
entry.insert(UDSEntry::UDS_FILE_TYPE, S_IFDIR );
|
entry.insert(UDSEntry::UDS_FILE_TYPE, S_IFDIR );
|
||||||
entry.insert(UDSEntry::UDS_ACCESS, S_IRUSR | S_IRGRP | S_IROTH | S_IXUSR | S_IXGRP | S_IXOTH);
|
entry.insert(UDSEntry::UDS_ACCESS, S_IRUSR | S_IRGRP | S_IROTH | S_IXUSR | S_IXGRP | S_IXOTH);
|
||||||
entry.insert(UDSEntry::UDS_MIME_TYPE, QLatin1String("inode/directory"));
|
entry.insert(UDSEntry::UDS_MIME_TYPE, QLatin1String("inode/directory"));
|
||||||
}
|
}
|
||||||
|
|
||||||
void getEntry(UDSEntry &entry, const LIBMTP_file_t* file)
|
void getEntry(UDSEntry &entry, const LIBMTP_file_t* file, const QString &url)
|
||||||
{
|
{
|
||||||
entry.insert(UDSEntry::UDS_NAME, QString::fromUtf8(file->filename));
|
entry.insert(UDSEntry::UDS_NAME, QString::fromUtf8(file->filename));
|
||||||
|
entry.insert(UDSEntry::UDS_URL, url);
|
||||||
if (file->filetype == LIBMTP_FILETYPE_FOLDER) {
|
if (file->filetype == LIBMTP_FILETYPE_FOLDER) {
|
||||||
entry.insert(UDSEntry::UDS_FILE_TYPE, S_IFDIR);
|
entry.insert(UDSEntry::UDS_FILE_TYPE, S_IFDIR);
|
||||||
entry.insert(UDSEntry::UDS_ACCESS, S_IRWXU | S_IRWXG | S_IRWXO);
|
entry.insert(UDSEntry::UDS_ACCESS, S_IRWXU | S_IRWXG | S_IRWXO);
|
||||||
|
|
|
@ -38,9 +38,9 @@ LIBMTP_filetype_t getFiletype(const QString &filename);
|
||||||
QMap<QString, LIBMTP_devicestorage_t*> getDevicestorages(LIBMTP_mtpdevice_t *&device);
|
QMap<QString, LIBMTP_devicestorage_t*> getDevicestorages(LIBMTP_mtpdevice_t *&device);
|
||||||
QMap<QString, LIBMTP_file_t*> getFiles(LIBMTP_mtpdevice_t *&device, uint32_t storage_id, uint32_t parent_id = 0xFFFFFFFF);
|
QMap<QString, LIBMTP_file_t*> getFiles(LIBMTP_mtpdevice_t *&device, uint32_t storage_id, uint32_t parent_id = 0xFFFFFFFF);
|
||||||
|
|
||||||
void getEntry(UDSEntry &entry, LIBMTP_mtpdevice_t* device);
|
void getEntry(UDSEntry &entry, LIBMTP_mtpdevice_t* device, const QString &url);
|
||||||
void getEntry(UDSEntry &entry, const LIBMTP_devicestorage_t* storage);
|
void getEntry(UDSEntry &entry, const LIBMTP_devicestorage_t* storage, const QString &url);
|
||||||
void getEntry(UDSEntry &entry, const LIBMTP_file_t* file);
|
void getEntry(UDSEntry &entry, const LIBMTP_file_t* file, const QString &url);
|
||||||
|
|
||||||
void resetDeviceStack(LIBMTP_mtpdevice_t* device);
|
void resetDeviceStack(LIBMTP_mtpdevice_t* device);
|
||||||
|
|
||||||
|
|
|
@ -102,6 +102,7 @@ void NetworkSlave::stat(const KUrl &url)
|
||||||
// fake the root entry, whenever listed it will list all services
|
// fake the root entry, whenever listed it will list all services
|
||||||
KIO::UDSEntry kioudsentry;
|
KIO::UDSEntry kioudsentry;
|
||||||
kioudsentry.insert(KIO::UDSEntry::UDS_NAME, ".");
|
kioudsentry.insert(KIO::UDSEntry::UDS_NAME, ".");
|
||||||
|
kioudsentry.insert(KIO::UDSEntry::UDS_URL, "network:/");
|
||||||
kioudsentry.insert(KIO::UDSEntry::UDS_FILE_TYPE, S_IFDIR);
|
kioudsentry.insert(KIO::UDSEntry::UDS_FILE_TYPE, S_IFDIR);
|
||||||
kioudsentry.insert(KIO::UDSEntry::UDS_ACCESS, S_IRWXU | S_IRWXG | S_IRWXO);
|
kioudsentry.insert(KIO::UDSEntry::UDS_ACCESS, S_IRWXU | S_IRWXG | S_IRWXO);
|
||||||
kioudsentry.insert(KIO::UDSEntry::UDS_MIME_TYPE, "inode/directory");
|
kioudsentry.insert(KIO::UDSEntry::UDS_MIME_TYPE, "inode/directory");
|
||||||
|
@ -123,12 +124,11 @@ void NetworkSlave::stat(const KUrl &url)
|
||||||
const QString serviceurl = urlForService(kdnssdservice);
|
const QString serviceurl = urlForService(kdnssdservice);
|
||||||
KIO::UDSEntry kioudsentry;
|
KIO::UDSEntry kioudsentry;
|
||||||
kioudsentry.insert(KIO::UDSEntry::UDS_NAME, kdnssdservice.name);
|
kioudsentry.insert(KIO::UDSEntry::UDS_NAME, kdnssdservice.name);
|
||||||
|
kioudsentry.insert(KIO::UDSEntry::UDS_URL, serviceurl);
|
||||||
kioudsentry.insert(KIO::UDSEntry::UDS_FILE_TYPE, S_IFLNK);
|
kioudsentry.insert(KIO::UDSEntry::UDS_FILE_TYPE, S_IFLNK);
|
||||||
kioudsentry.insert(KIO::UDSEntry::UDS_ACCESS, S_IRWXU | S_IRWXG | S_IRWXO);
|
kioudsentry.insert(KIO::UDSEntry::UDS_ACCESS, S_IRWXU | S_IRWXG | S_IRWXO);
|
||||||
kioudsentry.insert(KIO::UDSEntry::UDS_ICON_NAME, iconForService(servicemimetype));
|
kioudsentry.insert(KIO::UDSEntry::UDS_ICON_NAME, iconForService(servicemimetype));
|
||||||
kioudsentry.insert(KIO::UDSEntry::UDS_MIME_TYPE, servicemimetype);
|
kioudsentry.insert(KIO::UDSEntry::UDS_MIME_TYPE, servicemimetype);
|
||||||
// NOTE: UDS_URL is set because KFileItem concats UDS_NAME with itself otherwise
|
|
||||||
kioudsentry.insert(KIO::UDSEntry::UDS_URL, serviceurl);
|
|
||||||
kioudsentry.insert(KIO::UDSEntry::UDS_TARGET_URL, serviceurl);
|
kioudsentry.insert(KIO::UDSEntry::UDS_TARGET_URL, serviceurl);
|
||||||
statEntry(kioudsentry);
|
statEntry(kioudsentry);
|
||||||
finished();
|
finished();
|
||||||
|
@ -163,11 +163,11 @@ void NetworkSlave::listDir(const KUrl &url)
|
||||||
const QString serviceurl = urlForService(kdnssdservice);
|
const QString serviceurl = urlForService(kdnssdservice);
|
||||||
kioudsentry.clear();
|
kioudsentry.clear();
|
||||||
kioudsentry.insert(KIO::UDSEntry::UDS_NAME, kdnssdservice.name);
|
kioudsentry.insert(KIO::UDSEntry::UDS_NAME, kdnssdservice.name);
|
||||||
|
kioudsentry.insert(KIO::UDSEntry::UDS_URL, serviceurl);
|
||||||
kioudsentry.insert(KIO::UDSEntry::UDS_FILE_TYPE, S_IFLNK);
|
kioudsentry.insert(KIO::UDSEntry::UDS_FILE_TYPE, S_IFLNK);
|
||||||
kioudsentry.insert(KIO::UDSEntry::UDS_ACCESS, S_IRWXU | S_IRWXG | S_IRWXO);
|
kioudsentry.insert(KIO::UDSEntry::UDS_ACCESS, S_IRWXU | S_IRWXG | S_IRWXO);
|
||||||
kioudsentry.insert(KIO::UDSEntry::UDS_ICON_NAME, iconForService(servicemimetype));
|
kioudsentry.insert(KIO::UDSEntry::UDS_ICON_NAME, iconForService(servicemimetype));
|
||||||
kioudsentry.insert(KIO::UDSEntry::UDS_MIME_TYPE, servicemimetype);
|
kioudsentry.insert(KIO::UDSEntry::UDS_MIME_TYPE, servicemimetype);
|
||||||
kioudsentry.insert(KIO::UDSEntry::UDS_URL, serviceurl);
|
|
||||||
kioudsentry.insert(KIO::UDSEntry::UDS_TARGET_URL, serviceurl);
|
kioudsentry.insert(KIO::UDSEntry::UDS_TARGET_URL, serviceurl);
|
||||||
listEntry(kioudsentry, false);
|
listEntry(kioudsentry, false);
|
||||||
}
|
}
|
||||||
|
|
|
@ -152,6 +152,7 @@ void RemoteImpl::createTopLevelEntry(KIO::UDSEntry &entry) const
|
||||||
{
|
{
|
||||||
entry.clear();
|
entry.clear();
|
||||||
entry.insert( KIO::UDSEntry::UDS_NAME, QString::fromLatin1("."));
|
entry.insert( KIO::UDSEntry::UDS_NAME, QString::fromLatin1("."));
|
||||||
|
entry.insert( KIO::UDSEntry::UDS_URL, QString::fromLatin1("remote:/"));
|
||||||
entry.insert( KIO::UDSEntry::UDS_FILE_TYPE, S_IFDIR);
|
entry.insert( KIO::UDSEntry::UDS_FILE_TYPE, S_IFDIR);
|
||||||
entry.insert( KIO::UDSEntry::UDS_ACCESS, 0777);
|
entry.insert( KIO::UDSEntry::UDS_ACCESS, 0777);
|
||||||
entry.insert( KIO::UDSEntry::UDS_MIME_TYPE, QString::fromLatin1("inode/directory"));
|
entry.insert( KIO::UDSEntry::UDS_MIME_TYPE, QString::fromLatin1("inode/directory"));
|
||||||
|
@ -187,8 +188,8 @@ bool RemoteImpl::createWizardEntry(KIO::UDSEntry &entry) const
|
||||||
}
|
}
|
||||||
|
|
||||||
entry.insert( KIO::UDSEntry::UDS_NAME, i18n("Add Network Folder"));
|
entry.insert( KIO::UDSEntry::UDS_NAME, i18n("Add Network Folder"));
|
||||||
entry.insert( KIO::UDSEntry::UDS_FILE_TYPE, S_IFREG);
|
|
||||||
entry.insert( KIO::UDSEntry::UDS_URL, QString::fromLatin1(WIZARD_URL) );
|
entry.insert( KIO::UDSEntry::UDS_URL, QString::fromLatin1(WIZARD_URL) );
|
||||||
|
entry.insert( KIO::UDSEntry::UDS_FILE_TYPE, S_IFREG);
|
||||||
entry.insert( KIO::UDSEntry::UDS_TARGET_URL, url.path());
|
entry.insert( KIO::UDSEntry::UDS_TARGET_URL, url.path());
|
||||||
entry.insert( KIO::UDSEntry::UDS_ACCESS, 0500);
|
entry.insert( KIO::UDSEntry::UDS_ACCESS, 0500);
|
||||||
entry.insert( KIO::UDSEntry::UDS_MIME_TYPE, QString::fromLatin1("application/x-desktop"));
|
entry.insert( KIO::UDSEntry::UDS_MIME_TYPE, QString::fromLatin1("application/x-desktop"));
|
||||||
|
|
|
@ -232,6 +232,7 @@ void TrashProtocol::createTopLevelDirEntry(KIO::UDSEntry& entry)
|
||||||
{
|
{
|
||||||
entry.clear();
|
entry.clear();
|
||||||
entry.insert( KIO::UDSEntry::UDS_NAME, QString::fromLatin1("."));
|
entry.insert( KIO::UDSEntry::UDS_NAME, QString::fromLatin1("."));
|
||||||
|
entry.insert( KIO::UDSEntry::UDS_URL, QString::fromLatin1("trash:/"));
|
||||||
entry.insert( KIO::UDSEntry::UDS_FILE_TYPE, S_IFDIR);
|
entry.insert( KIO::UDSEntry::UDS_FILE_TYPE, S_IFDIR);
|
||||||
entry.insert( KIO::UDSEntry::UDS_ACCESS, 0700);
|
entry.insert( KIO::UDSEntry::UDS_ACCESS, 0700);
|
||||||
entry.insert( KIO::UDSEntry::UDS_MIME_TYPE, QString::fromLatin1("inode/directory"));
|
entry.insert( KIO::UDSEntry::UDS_MIME_TYPE, QString::fromLatin1("inode/directory"));
|
||||||
|
@ -284,7 +285,7 @@ void TrashProtocol::stat(const KUrl& url)
|
||||||
TrashedFileInfo info;
|
TrashedFileInfo info;
|
||||||
ok = impl.infoForFile( trashId, fileId, info );
|
ok = impl.infoForFile( trashId, fileId, info );
|
||||||
if ( ok )
|
if ( ok )
|
||||||
ok = createUDSEntry( filePath, fileDisplayName, fileURL.fileName(), entry, info );
|
ok = createUDSEntry( filePath, fileDisplayName, fileURL.fileName(), url.url(), entry, info );
|
||||||
|
|
||||||
if ( !ok ) {
|
if ( !ok ) {
|
||||||
error( KIO::ERR_COULD_NOT_STAT, url.prettyUrl() );
|
error( KIO::ERR_COULD_NOT_STAT, url.prettyUrl() );
|
||||||
|
@ -373,7 +374,8 @@ void TrashProtocol::listDir(const KUrl& url)
|
||||||
infoForItem.origPath += QLatin1Char('/');
|
infoForItem.origPath += QLatin1Char('/');
|
||||||
infoForItem.origPath += fileName;
|
infoForItem.origPath += fileName;
|
||||||
|
|
||||||
if (createUDSEntry(filePath, fileName, fileName, entry, infoForItem)) {
|
const QString fileUrl = url.url(KUrl::AddTrailingSlash) + fileName;
|
||||||
|
if (createUDSEntry(filePath, fileName, fileName, fileUrl, entry, infoForItem)) {
|
||||||
listEntry( entry, false );
|
listEntry( entry, false );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -382,7 +384,9 @@ void TrashProtocol::listDir(const KUrl& url)
|
||||||
finished();
|
finished();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TrashProtocol::createUDSEntry( const QString& physicalPath, const QString& displayFileName, const QString& internalFileName, KIO::UDSEntry& entry, const TrashedFileInfo& info )
|
bool TrashProtocol::createUDSEntry( const QString& physicalPath, const QString& displayFileName,
|
||||||
|
const QString& internalFileName, const QString& compeleteUrl,
|
||||||
|
KIO::UDSEntry& entry, const TrashedFileInfo& info )
|
||||||
{
|
{
|
||||||
QByteArray physicalPath_c = QFile::encodeName( physicalPath );
|
QByteArray physicalPath_c = QFile::encodeName( physicalPath );
|
||||||
KDE_struct_stat buff;
|
KDE_struct_stat buff;
|
||||||
|
@ -416,10 +420,9 @@ bool TrashProtocol::createUDSEntry( const QString& physicalPath, const QString&
|
||||||
access &= 07555; // make it readonly, since it's in the trashcan
|
access &= 07555; // make it readonly, since it's in the trashcan
|
||||||
Q_ASSERT(!internalFileName.isEmpty());
|
Q_ASSERT(!internalFileName.isEmpty());
|
||||||
entry.insert( KIO::UDSEntry::UDS_NAME, internalFileName ); // internal filename, like "0-foo"
|
entry.insert( KIO::UDSEntry::UDS_NAME, internalFileName ); // internal filename, like "0-foo"
|
||||||
|
entry.insert( KIO::UDSEntry::UDS_URL, compeleteUrl);
|
||||||
entry.insert( KIO::UDSEntry::UDS_DISPLAY_NAME, displayFileName ); // user-visible filename, like "foo"
|
entry.insert( KIO::UDSEntry::UDS_DISPLAY_NAME, displayFileName ); // user-visible filename, like "foo"
|
||||||
entry.insert( KIO::UDSEntry::UDS_FILE_TYPE, type );
|
entry.insert( KIO::UDSEntry::UDS_FILE_TYPE, type );
|
||||||
//if ( !url.isEmpty() )
|
|
||||||
// entry.insert( KIO::UDSEntry::UDS_URL, url );
|
|
||||||
|
|
||||||
KMimeType::Ptr mt = KMimeType::findByUrl( KUrl(physicalPath), buff.st_mode );
|
KMimeType::Ptr mt = KMimeType::findByUrl( KUrl(physicalPath), buff.st_mode );
|
||||||
if ( mt )
|
if ( mt )
|
||||||
|
@ -453,7 +456,7 @@ void TrashProtocol::listRoot()
|
||||||
origURL.setPath( (*it).origPath );
|
origURL.setPath( (*it).origPath );
|
||||||
entry.clear();
|
entry.clear();
|
||||||
const QString fileDisplayName = (*it).fileId;
|
const QString fileDisplayName = (*it).fileId;
|
||||||
if ( createUDSEntry( (*it).physicalPath, fileDisplayName, url.fileName(), entry, *it ) )
|
if ( createUDSEntry( (*it).physicalPath, fileDisplayName, url.fileName(), url.url(), entry, *it ) )
|
||||||
listEntry( entry, false );
|
listEntry( entry, false );
|
||||||
}
|
}
|
||||||
entry.clear();
|
entry.clear();
|
||||||
|
|
|
@ -61,7 +61,7 @@ private:
|
||||||
void copyOrMove( const KUrl& src, const KUrl& dest, bool overwrite, CopyOrMove action );
|
void copyOrMove( const KUrl& src, const KUrl& dest, bool overwrite, CopyOrMove action );
|
||||||
void createTopLevelDirEntry(KIO::UDSEntry& entry);
|
void createTopLevelDirEntry(KIO::UDSEntry& entry);
|
||||||
bool createUDSEntry( const QString& physicalPath, const QString& displayFileName, const QString& internalFileName,
|
bool createUDSEntry( const QString& physicalPath, const QString& displayFileName, const QString& internalFileName,
|
||||||
KIO::UDSEntry& entry, const TrashedFileInfo& info );
|
const QString &completeUrl, KIO::UDSEntry& entry, const TrashedFileInfo& info );
|
||||||
void listRoot();
|
void listRoot();
|
||||||
void restore( const KUrl& trashURL );
|
void restore( const KUrl& trashURL );
|
||||||
void enterLoop();
|
void enterLoop();
|
||||||
|
|
|
@ -767,7 +767,7 @@ void KonqOperations::slotStatResult( KJob * job )
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
KIO::StatJob * statJob = static_cast<KIO::StatJob*>(job);
|
KIO::StatJob * statJob = static_cast<KIO::StatJob*>(job);
|
||||||
KFileItem item( statJob->statResult(), statJob->url() );
|
KFileItem item( statJob->statResult() );
|
||||||
emit statFinished( item );
|
emit statFinished( item );
|
||||||
}
|
}
|
||||||
// If we're only here for a stat, we're done. But not if we used _statUrl internally
|
// If we're only here for a stat, we're done. But not if we used _statUrl internally
|
||||||
|
|
Loading…
Add table
Reference in a new issue