diff options
Diffstat (limited to 'src/widgets/platforms/mac/qmime_mac.cpp')
-rw-r--r-- | src/widgets/platforms/mac/qmime_mac.cpp | 185 |
1 files changed, 0 insertions, 185 deletions
diff --git a/src/widgets/platforms/mac/qmime_mac.cpp b/src/widgets/platforms/mac/qmime_mac.cpp index 0eaaaa8f2a..f2611585fa 100644 --- a/src/widgets/platforms/mac/qmime_mac.cpp +++ b/src/widgets/platforms/mac/qmime_mac.cpp @@ -965,188 +965,6 @@ QList<QByteArray> QMacPasteboardMimeVCard::convertFromMime(const QString &mime, return ret; } -#ifdef QT3_SUPPORT -class QMacPasteboardMimeQt3Any : public QMacPasteboardMime { -private: - int current_max; - QFile library_file; - QDateTime mime_registry_loaded; - QMap<QString, int> mime_registry; - int registerMimeType(const QString &mime); - bool loadMimeRegistry(); - -public: - QMacPasteboardMimeQt3Any() : QMacPasteboardMime(MIME_QT3_CONVERTOR) { - current_max = 'QT00'; - } - ~QMacPasteboardMimeQt3Any() { - } - QString convertorName(); - - QString flavorFor(const QString &mime); - QString mimeFor(QString flav); - bool canConvert(const QString &mime, QString flav); - QVariant convertToMime(const QString &mime, QList<QByteArray> data, QString flav); - QList<QByteArray> convertFromMime(const QString &mime, QVariant data, QString flav); -}; - -static bool qt_mac_openMimeRegistry(bool global, QIODevice::OpenMode mode, QFile &file) -{ - QString dir = QLatin1String("/Library/Qt"); - if(!global) - dir.prepend(QDir::homePath()); - file.setFileName(dir + QLatin1String("/.mime_types")); - if(mode != QIODevice::ReadOnly) { - if(!QFile::exists(dir)) { - // Do it with a system call as I don't see much worth in - // doing it with QDir since we have to chmod anyway. - bool success = ::mkdir(dir.toLocal8Bit().constData(), S_IRUSR | S_IWUSR | S_IXUSR) == 0; - if (success) - success = ::chmod(dir.toLocal8Bit().constData(), S_IRUSR | S_IWUSR | S_IXUSR - | S_IRGRP | S_IWGRP | S_IXGRP | S_IROTH | S_IWOTH | S_IXOTH) == 0; - if (!success) - return false; - } - if (!file.exists()) { - // Create the file and chmod it so that everyone can write to it. - int fd = ::open(file.fileName().toLocal8Bit().constData(), O_WRONLY | O_CREAT, S_IRUSR | S_IWUSR); - bool success = fd != -1; - if (success) - success = ::fchmod(fd, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH) == 0; - if (fd != -1) - ::close(fd); - if(!success) - return false; - } - } - return file.open(mode); -} - -static void qt_mac_loadMimeRegistry(QFile &file, QMap<QString, int> ®istry, int &max) -{ - file.reset(); - QTextStream stream(&file); - while(!stream.atEnd()) { - QString mime = stream.readLine(); - int mactype = stream.readLine().toInt(); - if(mactype > max) - max = mactype; - registry.insert(mime, mactype); - } -} - -bool QMacPasteboardMimeQt3Any::loadMimeRegistry() -{ - if(!library_file.isOpen()) { - if(!qt_mac_openMimeRegistry(true, QIODevice::ReadWrite, library_file)) { - QFile global; - if(qt_mac_openMimeRegistry(true, QIODevice::ReadOnly, global)) { - qt_mac_loadMimeRegistry(global, mime_registry, current_max); - global.close(); - } - if(!qt_mac_openMimeRegistry(false, QIODevice::ReadWrite, library_file)) { - qWarning("QMacPasteboardMimeAnyQt3Mime: Failure to open mime resources %s -- %s", library_file.fileName().toLatin1().constData(), - library_file.errorString().toLatin1().constData()); - return false; - } - } - } - - QFileInfo fi(library_file); - if(!mime_registry_loaded.isNull() && mime_registry_loaded == fi.lastModified()) - return true; - mime_registry_loaded = fi.lastModified(); - qt_mac_loadMimeRegistry(library_file, mime_registry, current_max); - return true; -} - -int QMacPasteboardMimeQt3Any::registerMimeType(const QString &mime) -{ - if(!mime_registry.contains(mime)) { - if(!loadMimeRegistry()) { - qWarning("QMacPasteboardMimeAnyQt3Mime: Internal error"); - return 0; - } - if(!mime_registry.contains(mime)) { - if(!library_file.isOpen()) { - if(!library_file.open(QIODevice::WriteOnly)) { - qWarning("QMacPasteboardMimeAnyQt3Mime: Failure to open %s -- %s", library_file.fileName().toLatin1().constData(), - library_file.errorString().toLatin1().constData()); - return false; - } - } - int ret = ++current_max; - mime_registry_loaded = QFileInfo(library_file).lastModified(); - QTextStream stream(&library_file); - stream << mime << endl; - stream << ret << endl; - mime_registry.insert(mime, ret); - library_file.flush(); //flush and set mtime - return ret; - } - } - return mime_registry[mime]; -} - -QString QMacPasteboardMimeQt3Any::convertorName() -{ - return QLatin1String("Qt3-Any-Mime"); -} - -QString QMacPasteboardMimeQt3Any::flavorFor(const QString &mime) -{ - const int os_flav = registerMimeType(mime); - QCFType<CFArrayRef> ids = UTTypeCreateAllIdentifiersForTag(0, kUTTagClassOSType, - QCFString(UTCreateStringForOSType(os_flav))); - if(ids) { - const int type_count = CFArrayGetCount(ids); - if(type_count) { - if(type_count > 1) - qDebug("Can't happen!"); - return QCFString::toQString((CFStringRef)CFArrayGetValueAtIndex(ids, 0)); - } - } - return QString(); -} - -QString QMacPasteboardMimeQt3Any::mimeFor(QString flav) -{ - loadMimeRegistry(); - const int os_flav = UTGetOSTypeFromString(UTTypeCopyPreferredTagWithClass(QCFString(flav), kUTTagClassOSType)); - for(QMap<QString, int>::const_iterator it = mime_registry.constBegin(); - it != mime_registry.constEnd(); ++it) { - if(it.value() == os_flav) - return QString::fromLatin1(it.key().toLatin1()); - } - return QString(); -} - -bool QMacPasteboardMimeQt3Any::canConvert(const QString &mime, QString flav) -{ - loadMimeRegistry(); - const int os_flav = UTGetOSTypeFromString(UTTypeCopyPreferredTagWithClass(QCFString(flav), kUTTagClassOSType)); - if(mime_registry.contains(mime) && mime_registry[mime] == os_flav) - return true; - return false; -} - -QVariant QMacPasteboardMimeQt3Any::convertToMime(const QString &, QList<QByteArray>, QString) -{ - qWarning("QMacPasteboardMimeAnyQt3Mime: Cannot write anything!"); - return QVariant(); -} - -QList<QByteArray> QMacPasteboardMimeQt3Any::convertFromMime(const QString &mime, QVariant data, QString) -{ - QList<QByteArray> ret; - if (mime == QLatin1String("text/plain")) { - ret.append(data.toString().toUtf8()); - } else { - ret.append(data.toByteArray()); - } - return ret; -} -#endif /*! \internal @@ -1175,9 +993,6 @@ void QMacPasteboardMime::initialize() new QMacPasteboardMimeVCard; //make sure our "non-standard" types are always last! --Sam new QMacPasteboardMimeAny; -#ifdef QT3_SUPPORT - new QMacPasteboardMimeQt3Any; -#endif } } |