diff options
author | Timothy Pearson <kb9vqf@pearsoncomputing.net> | 2013-01-27 21:04:28 -0600 |
---|---|---|
committer | Timothy Pearson <kb9vqf@pearsoncomputing.net> | 2013-01-27 21:04:28 -0600 |
commit | c5bee2a602f3b6a9ca58c247df52b834ea50d0ed (patch) | |
tree | d1c0ded0cabb3d4fdb2ad0e9e68697282eee0dc4 /kmobile/tdeioslave/kio_mobile.cpp | |
parent | b94985f2c07570910ceecd8a0e544460a0de190b (diff) | |
download | tdepim-c5bee2a602f3b6a9ca58c247df52b834ea50d0ed.tar.gz tdepim-c5bee2a602f3b6a9ca58c247df52b834ea50d0ed.zip |
Rename kiobuffer and KHTML
Diffstat (limited to 'kmobile/tdeioslave/kio_mobile.cpp')
-rw-r--r-- | kmobile/tdeioslave/kio_mobile.cpp | 636 |
1 files changed, 0 insertions, 636 deletions
diff --git a/kmobile/tdeioslave/kio_mobile.cpp b/kmobile/tdeioslave/kio_mobile.cpp deleted file mode 100644 index bb70b264e..000000000 --- a/kmobile/tdeioslave/kio_mobile.cpp +++ /dev/null @@ -1,636 +0,0 @@ -/* This file is part of the KDE KMobile library - Copyright (C) 2003 Helge Deller <deller@kde.org> - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License version 2 as published by the Free Software Foundation. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. - -*/ - -#include <sys/types.h> -#include <sys/stat.h> - -#include <sys/types.h> -#include <unistd.h> -#include <time.h> - -#include <tqregexp.h> - -#include <kdebug.h> -#include <klocale.h> -#include <kinstance.h> -#include <kabc/vcardconverter.h> - -#include "tdeio_mobile.h" - -#include <tdepimmacros.h> - -using namespace TDEIO; - -#define KIO_MOBILE_DEBUG_AREA 7126 -#define PRINT_DEBUG kdDebug(KIO_MOBILE_DEBUG_AREA) << "tdeio_mobile: " - -extern "C" { KDE_EXPORT int kdemain(int argc, char **argv); } - -/** - * The main program. - */ -int kdemain(int argc, char **argv) -{ - TDEInstance instance( "tdeio_mobile" ); - - PRINT_DEBUG << "Starting " << getpid() << endl; - - if (argc != 4) { - fprintf(stderr, "Usage tdeio_mobile protocol pool app\n"); - return -1; - } - // let the protocol class do its work - KMobileProtocol slave(argv[2], argv[3]); - - slave.dispatchLoop(); - - PRINT_DEBUG << "Done" << endl; - return 0; -} - - -/** - * Initialize the mobile slave - */ -KMobileProtocol::KMobileProtocol(const TQCString &pool, const TQCString &app) - : SlaveBase( "mobile", pool, app) -{ -} - -KMobileProtocol::~KMobileProtocol() -{ -} - -/* - * getDeviceAndRessource("mobile:/<devicename>/<resource>/...") - split - */ -int KMobileProtocol::getDeviceAndRessource(const TQString &_path, - TQString &devName, TQString &resource, TQString &devPath, - KMobileDevice::Capabilities &devCaps) -{ -// PRINT_DEBUG << TQString("###getDeviceAndRessource### %1\n").arg(_path); - TQStringList path = TQStringList::split('/', _path, false); - - devName = resource = devPath = TQString(); - devCaps = KMobileDevice::hasNothing; - - if (path.count() >= 1) { devName = path[0]; path.pop_front(); }; - if (path.count() >= 1) { resource = path[0]; path.pop_front(); }; - if (path.count() >= 1) devPath = path.join("/"); - - if (devName.isEmpty()) - return 0; - - int _caps = m_dev.capabilities(devName); - - if (resource.isEmpty()) { - devCaps = (KMobileDevice::Capabilities) _caps; - return 0; - } - - for (int i=0; i<31; i++) { - int cap = 1UL << i; - if ((_caps & cap) == 0) - continue; - TQString capname = m_dev.nameForCap(devName,cap); - if (capname != resource) - continue; - devCaps = (KMobileDevice::Capabilities) cap; - return 0; - } - - return TDEIO::ERR_DOES_NOT_EXIST; -} - - -static -void addAtom(TDEIO::UDSEntry& entry, unsigned int ID, long l, const TQString& s = TQString()) -{ - TDEIO::UDSAtom atom; - atom.m_uds = ID; - atom.m_long = l; - atom.m_str = s; - entry.append(atom); -} - -static -void createDirEntry(TDEIO::UDSEntry& entry, const TQString& name, const TQString& url, const TQString& mime) -{ - entry.clear(); - addAtom(entry, TDEIO::UDS_NAME, 0, name); - addAtom(entry, TDEIO::UDS_FILE_TYPE, S_IFDIR); - addAtom(entry, TDEIO::UDS_ACCESS, 0500); - addAtom(entry, TDEIO::UDS_MIME_TYPE, 0, mime); - addAtom(entry, TDEIO::UDS_URL, 0, url); - addAtom(entry, TDEIO::UDS_USER, 0, getenv("USER")); - addAtom(entry, TDEIO::UDS_GROUP, 0, getenv("USER")); - PRINT_DEBUG << TQString("createDirEntry: File: %1 MIME: %2 URL: %3\n").arg(name).arg(mime).arg(url); -// addAtom(entry, TDEIO::UDS_SIZE, 0); - addAtom(entry, TDEIO::UDS_GUESSED_MIME_TYPE, 0, mime); -} - -static -void createFileEntry(TDEIO::UDSEntry& entry, const TQString& name, const TQString& url, const TQString& mime, - const unsigned long size = 0) -{ - entry.clear(); - addAtom(entry, TDEIO::UDS_NAME, 0, name); - addAtom(entry, TDEIO::UDS_FILE_TYPE, S_IFREG); - addAtom(entry, TDEIO::UDS_URL, 0, url); - addAtom(entry, TDEIO::UDS_ACCESS, 0400); - addAtom(entry, TDEIO::UDS_USER, 0, getenv("USER")); - addAtom(entry, TDEIO::UDS_GROUP, 0, getenv("USER")); - addAtom(entry, TDEIO::UDS_MIME_TYPE, 0, mime); - if (size) addAtom(entry, TDEIO::UDS_SIZE, size); - addAtom(entry, TDEIO::UDS_GUESSED_MIME_TYPE, 0, mime); - PRINT_DEBUG << TQString("createFileEntry: File: %1, Size: %2, MIME: %3\n").arg(name).arg(size).arg(mime); -} - - -/** - * Get the information contained in the URL. - */ -void KMobileProtocol::get(const KURL &url) -{ - PRINT_DEBUG << "###############################\n"; - PRINT_DEBUG << TQString("get(%1)\n").arg(url.path()); - - KMobileDevice::Capabilities devCaps; - TQString devName, resource, devPath; - - int err = getDeviceAndRessource(url.path(), devName, resource, devPath, devCaps); - if (err) { - error(err, url.path()); - return; - } - - if (devName.isEmpty() || resource.isEmpty()) { - error(TDEIO::ERR_DOES_NOT_EXIST, url.path()); - return; - } - - // collect the result - TQCString result; - TQString mime; - switch (devCaps) { - case KMobileDevice::hasAddressBook: err = getVCard(devName, result, mime, devPath); - break; - case KMobileDevice::hasCalendar: err = getCalendar(devName, result, mime, devPath); - break; - case KMobileDevice::hasNotes: err = getNote(devName, result, mime, devPath); - break; - case KMobileDevice::hasFileStorage: err = getFileStorage(devName, result, mime, devPath); - break; - default: err = TDEIO::ERR_CANNOT_ENTER_DIRECTORY; /* TODO */ - } - - if (err) { - error(err, url.path()); - return; - } - - // tell the mimetype - mimeType(mime); - - // tell the length - TDEIO::filesize_t processed_size = result.length(); - totalSize(processed_size); - - // tell the contents of the URL - TQByteArray array; - array.setRawData( result.data(), result.length() ); - data(array); - array.resetRawData( result.data(), result.length() ); - processedSize( processed_size ); - // tell we are finished - data(TQByteArray()); - - // tell we are finished - finished(); -} - - -/* - * listRoot() - gives listing of all devices - */ -void KMobileProtocol::listRoot(const KURL& url) -{ - PRINT_DEBUG << TQString("########## listRoot(%1) for %2:/\n").arg(url.path()).arg(url.protocol()); - - TDEIO::UDSEntry entry; - - TQStringList deviceNames = m_dev.deviceNames(); - unsigned int dirs = deviceNames.count(); - totalSize(dirs); - - int classMask = KMobileDevice::Unclassified; - /* handle all possible protocols here and just add a <protocol>.protocol file */ - if (url.protocol() == "cellphone") // cellphone:/ - classMask = KMobileDevice::Phone; - if (url.protocol() == "organizer" || // organizer:/ - url.protocol() == "pda") // pda:/ - classMask = KMobileDevice::Organizer; - if (url.protocol() == "phonecamera") // camera:/ - classMask = KMobileDevice::Camera; - - for (unsigned int i=0; i<dirs; i++) { - - TQString devName = deviceNames[i]; - - if (classMask != KMobileDevice::Unclassified && - m_dev.classType(devName) != classMask) - continue; - - createDirEntry(entry, devName, "mobile:/"+devName, - KMOBILE_MIMETYPE_DEVICE_KONQUEROR(devName)); - listEntry(entry, false); - - processedSize(i+1); - } - listEntry(entry, true); - finished(); -} - - -/* - * folderMimeType() - returns mimetype of the folder itself - */ -TQString KMobileProtocol::folderMimeType(int cap) -{ - TQString mimetype; - switch (cap) { - case KMobileDevice::hasAddressBook: mimetype = KMOBILE_MIMETYPE_INODE "addressbook"; - break; - case KMobileDevice::hasCalendar: mimetype = KMOBILE_MIMETYPE_INODE "calendar"; - break; - case KMobileDevice::hasNotes: mimetype = KMOBILE_MIMETYPE_INODE "notes"; - break; - case KMobileDevice::hasFileStorage: - default: mimetype = "inode/directory"; - } - return mimetype; -} - -/* - * entryMimeType() - returns mimetype of the entries in the given folder - */ -TQString KMobileProtocol::entryMimeType(int cap) -{ - TQString mimetype; - switch (cap) { - case KMobileDevice::hasAddressBook: mimetype = "text/x-vcard"; - break; - case KMobileDevice::hasCalendar: mimetype = "text/x-vcalendar"; - break; - case KMobileDevice::hasNotes: mimetype = "text/plain"; - break; - case KMobileDevice::hasFileStorage: - default: mimetype = "text/plain"; - } - return mimetype; -} - -/* - * listTopDeviceDir("mobile:/<devicename>") - sub-directory of a devices - */ - -void KMobileProtocol::listTopDeviceDir(const TQString &devName) -{ - PRINT_DEBUG << TQString("listTopDeviceDir(%1)\n").arg(devName); - - TDEIO::UDSEntry entry; - unsigned int caps = m_dev.capabilities(devName); - - for (int i=0; i<31; i++) { - unsigned int cap = 1UL<<i; - if ((caps & cap) == 0) - continue; - - TQString filename = m_dev.nameForCap(devName, cap); - TQString mimetype = folderMimeType(cap); - - createDirEntry(entry, filename, TQString("mobile:/%1/%2/").arg(devName).arg(filename), mimetype); - listEntry(entry, false); - } - listEntry(entry, true); - finished(); -} - - -/* - * listEntries("mobile:/<devicename>/<resource>") - resources of a device - */ -void KMobileProtocol::listEntries(const TQString &devName, - const TQString &resource, const TQString &devPath, - const KMobileDevice::Capabilities devCaps) -{ - PRINT_DEBUG << TQString("listEntries(%1,%2,%3)\n").arg(devName).arg(resource).arg(devPath); - switch (devCaps) { - case KMobileDevice::hasAddressBook: listAddressBook(devName, resource); - break; - case KMobileDevice::hasCalendar: listCalendar(devName, resource); - break; - case KMobileDevice::hasNotes: listNotes(devName, resource); - break; - case KMobileDevice::hasFileStorage: listFileStorage(devName, resource, devPath); - break; - default: error( ERR_CANNOT_ENTER_DIRECTORY, - TQString("/%1/%2").arg(devName).arg(resource) ); - } -} - -/* - * listAddressBook("mobile:/<devicename>/Addressbook) - list the addressbook - */ -void KMobileProtocol::listAddressBook(const TQString &devName, const TQString &resource) -{ - PRINT_DEBUG << TQString("listAddressBook(%1)\n").arg(devName); - - TDEIO::UDSEntry entry; - - int fieldwidth; - int entries = m_dev.numAddresses(devName); - if (entries>=1000) fieldwidth=4; else - if (entries>=100) fieldwidth=3; else - if (entries>=10) fieldwidth=2; else fieldwidth=1; - totalSize(entries); -// TQRegExp rx; rx.setPattern( ".*FN:([\\w\\s]*)[\\n\\r]{2}.*" ); - TQString name; - for (int i=0; i<entries; i++) { - -#if 0 - TQString content = m_dev.readAddress(devName, i); - if ( rx.search( content ) < 0 ) - name = TQString(); - else - name = "_" + rx.cap(1); -#endif - - TQString filename = TQString("%1%2.vcf").arg(i,fieldwidth).arg(name); - for (int p=0; p<fieldwidth; p++) { - if (filename[p]==' ') filename[p]='0'; else break; - } - TQString url = TQString("mobile:/%1/%2/%3").arg(devName).arg(resource).arg(filename); - - createFileEntry(entry, filename, url, entryMimeType(KMobileDevice::hasAddressBook), - 400 /*content.utf8().length()*/ ); - listEntry(entry, false); - - processedSize(i+1); - } - listEntry(entry, true); - finished(); -} - -/* - * getVCard() - gives the vCard of the given file - */ -int KMobileProtocol::getVCard( const TQString &devName, TQCString &result, TQString &mime, const TQString &path ) -{ - PRINT_DEBUG << TQString("getVCard(%1)\n").arg(path); - - int index = path.find('.'); - if (index>0) - index = path.left(index).toInt(); - if (index<0 || index>=m_dev.numAddresses(devName)) - return TDEIO::ERR_DOES_NOT_EXIST; - - TQString str = m_dev.readAddress(devName, index); - if (str.isEmpty()) - return TDEIO::ERR_INTERNAL; - result = str.utf8(); - mime = entryMimeType(KMobileDevice::hasAddressBook); -// setMetaData("plugin", "const TQString &key, const TQString &value); - return 0; -} - -/* - * listCalendar("mobile:/<devicename>/Calendar) - list the calendar entries - */ -void KMobileProtocol::listCalendar( const TQString &devName, const TQString &resource) -{ - PRINT_DEBUG << TQString("listCalendar(%1)\n").arg(devName); - - TDEIO::UDSEntry entry; - - int entries = m_dev.numCalendarEntries(devName); - totalSize(entries); - for (int i=0; i<entries; i++) { - - TQString filename = TQString("%1_%2.vcs").arg(i).arg(i18n("calendar")); - TQString url = TQString("mobile:/%1/%2/%3").arg(devName).arg(resource).arg(filename); - - createFileEntry(entry, filename, url, entryMimeType(KMobileDevice::hasCalendar)); - listEntry(entry, false); - - processedSize(i+1); - } - listEntry(entry, true); - finished(); -} - -/* - * getCalendar() - reads a calendar entry - */ -int KMobileProtocol::getCalendar( const TQString &devName, TQCString &result, TQString &mime, const TQString &path) -{ - PRINT_DEBUG << TQString("getCalendar(%1, #%2)\n").arg(devName).arg(path); - - /* TODO */ - Q_UNUSED(result); - Q_UNUSED(mime); - return TDEIO::ERR_CANNOT_ENTER_DIRECTORY; -} - - -/* - * listNotes("mobile:/<devicename>/Notes) - list the notes - */ -void KMobileProtocol::listNotes( const TQString &devName, const TQString &resource) -{ - PRINT_DEBUG << TQString("listNotes(%1)\n").arg(devName); - - TDEIO::UDSEntry entry; - - int entries = m_dev.numNotes(devName); - totalSize(entries); - for (int i=0; i<entries; i++) { - - TQString note /*= m_dev.readNote(devName, i)*/; - - TQString filename = TQString("%1_%2.txt").arg(i).arg(i18n("note")); - TQString url = TQString("mobile:/%1/%2/%3").arg(devName).arg(resource).arg(filename); - - createFileEntry(entry, filename, url, entryMimeType(KMobileDevice::hasNotes), - 0 /*note.utf8().length()*/); - listEntry(entry, false); - - processedSize(i+1); - } - listEntry(entry, true); - finished(); -} - -/* - * getNote() - gives the Note of the given file - */ -int KMobileProtocol::getNote( const TQString &devName, TQCString &result, TQString &mime, const TQString &path ) -{ - PRINT_DEBUG << TQString("getNote(%1)\n").arg(path); - - int index = path.find('_'); - if (index>0) - index = path.left(index).toInt(); - if (index<0 || index>=m_dev.numNotes(devName)) - return TDEIO::ERR_DOES_NOT_EXIST; - - TQString note = m_dev.readNote(devName, index); - if (note.isEmpty()) - return TDEIO::ERR_DOES_NOT_EXIST; - - result = note.utf8(); - mime = entryMimeType(KMobileDevice::hasNotes); - return 0; -} - -/* - * listFileStorage("mobile:/<devicename>/Files) - list the files on the device - */ -void KMobileProtocol::listFileStorage(const TQString &devName, const TQString &resource, const TQString &devPath) -{ - PRINT_DEBUG << TQString("listFileStorage(%1,%2)\n").arg(devName).arg(devPath); - - /* TODO */ - error( TDEIO::ERR_DOES_NOT_EXIST, TQString("/%1/%2/%3").arg(devName).arg(resource).arg(devPath) ); -} - -/* - * getFileStorage() - gives the file contents of the given file - */ -int KMobileProtocol::getFileStorage(const TQString &devName, TQCString &result, TQString &mime, const TQString &path) -{ - PRINT_DEBUG << TQString("getFileStorage(%1)\n").arg(path); - - /* TODO */ - Q_UNUSED(devName); - Q_UNUSED(result); - Q_UNUSED(mime); - return TDEIO::ERR_CANNOT_ENTER_DIRECTORY; -} - - -/** - * Test if the url contains a directory or a file. - */ -void KMobileProtocol::stat( const KURL &url ) -{ - PRINT_DEBUG << "###############################\n"; - PRINT_DEBUG << TQString("stat(%1)\n").arg(url.path()); - - KMobileDevice::Capabilities devCaps; - TQString devName, resource, devPath; - - int err = getDeviceAndRessource(url.path(), devName, resource, devPath, devCaps); - if (err) { - error(err, url.path()); - return; - } - - TQStringList path = TQStringList::split('/', url.path(), false); - TQString filename = (path.count()>0) ? path[path.count()-1] : "/"; - TQString fullPath = path.join("/"); - TQString fullUrl = TQString("mobile:/%1").arg(fullPath); - - UDSEntry entry; - - bool isDir = devPath.isEmpty(); - - if (isDir) { - createDirEntry(entry, filename, fullUrl, folderMimeType(devCaps)); - } else { - createFileEntry(entry, filename, fullUrl, entryMimeType(devCaps)); - } - - statEntry(entry); - finished(); -} - -/** - * Get the mimetype. - */ -void KMobileProtocol::mimetype(const KURL &url) -{ - PRINT_DEBUG << "###############################\n"; - PRINT_DEBUG << TQString("mimetype(%1)\n").arg(url.path()); - - KMobileDevice::Capabilities devCaps; - TQString devName, resource, devPath; - - int err = getDeviceAndRessource(url.path(), devName, resource, devPath, devCaps); - if (err) { - error(err, url.path()); - return; - } - - // tell the mimetype - mimeType(entryMimeType(devCaps)); - finished(); -} - -/** - * List the contents of a directory. - */ -void KMobileProtocol::listDir(const KURL &url) -{ - PRINT_DEBUG << "###############################\n"; - PRINT_DEBUG << TQString("listDir(%1)\n").arg(url.path()); - - if (!m_dev.isKMobileAvailable()) { - error( TDEIO::ERR_CONNECTION_BROKEN, i18n("TDE Mobile Device Manager") ); - return; - } - - KMobileDevice::Capabilities devCaps; - TQString devName, resource, devPath; - - int err = getDeviceAndRessource(url.path(), devName, resource, devPath, devCaps); - if (err) { - error(err, url.path()); - return; - } - - if (devName.isEmpty()) { - listRoot(url); - return; - } - -#if 0 - if (!dev) { - error( TDEIO::ERR_DOES_NOT_EXIST, TQString("/%1").arg(devName) ); - return; - } -#endif - - if (resource.isEmpty()) { - listTopDeviceDir(devName); - return; - } - - listEntries(devName, resource, devPath, devCaps); -} |