QString MimetypeModel::formatMimeTypeInfo(const QMimeType &t) { QString result; QTextStream str(&result); str << "<html><head/><body><h3><center>" << t.name() << "</center></h3><br><table>"; const QStringList &aliases = t.aliases(); if (!aliases.isEmpty()) str << "<tr><td>Aliases:</td><td>" << " (" << aliases << ')'; str << "</td></tr>" << "<tr><td>Comment:</td><td>" << t.comment() << "</td></tr>" << "<tr><td>Icon name:</td><td>" << t.iconName() << "</td></tr>" << "<tr><td>Generic icon name</td><td>" << t.genericIconName() << "</td></tr>"; const QString &filter = t.filterString(); if (!filter.isEmpty()) str << "<tr><td>Filter:</td><td>" << t.filterString() << "</td></tr>"; const QStringList &patterns = t.globPatterns(); if (!patterns.isEmpty()) str << "<tr><td>Glob patterns:</td><td>" << patterns << "</td></tr>"; const QStringList &parentMimeTypes = t.parentMimeTypes(); if (!parentMimeTypes.isEmpty()) str << "<tr><td>Parent types:</td><td>" << t.parentMimeTypes() << "</td></tr>"; QStringList suffixes = t.suffixes(); if (!suffixes.isEmpty()) { str << "<tr><td>Suffixes:</td><td>"; const QString &preferredSuffix = t.preferredSuffix(); if (!preferredSuffix.isEmpty()) { suffixes.removeOne(preferredSuffix); str << "<b>" << preferredSuffix << "</b> "; } str << suffixes << "</td></tr>"; } str << "</table></body></html>"; return result; }
void NoteEditorUtils::insertImage(QTextDocument *doc, QTextCursor &cursor, QTextEdit *par) { QString imageFileName = QFileDialog::getOpenFileName(par, i18n("Select image file"), QLatin1String("."), QLatin1String("Images (*.png *.bmp *.jpg *.jpeg *.jpe)")); if (!imageFileName.isEmpty()) { QFileInfo qfio = QFileInfo(imageFileName); QImage imgRes(imageFileName); if (!imgRes.isNull()) { QMimeDatabase mimedb; QByteArray imageData; QBuffer buffer(&imageData); QMimeType filemime = mimedb.mimeTypeForFile(qfio); QString filetype = filemime.name(); QByteArray formatChars = filemime.preferredSuffix().toUpper().toLatin1(); buffer.open(QIODevice::WriteOnly); imgRes.save(&buffer, formatChars.data()); QString Base64Image = QString::fromLatin1(imageData.toBase64().data());//is null par->insertHtml(QLatin1String("<img src=\"data:") + filetype + QLatin1String(";base64,") + Base64Image + QLatin1String("\" />")); } } }
QList<ApplicationInformation> WindowsPlatformIntegration::getApplicationsForMimeType(const QMimeType &mimeType) { QList<ApplicationInformation> applications; const QString suffix(mimeType.preferredSuffix()); if (suffix.isEmpty()) { Console::addMessage(tr("No valid suffix for given MIME type: %1").arg(mimeType.name()), OtherMessageCategory, ErrorMessageLevel); return QList<ApplicationInformation>(); } if (suffix == QLatin1String("exe")) { return QList<ApplicationInformation>(); } if (m_cleanupTimer != 0) { killTimer(m_cleanupTimer); m_cleanupTimer = 0; } if (m_environment.isEmpty()) { m_environment = QProcessEnvironment::systemEnvironment(); } // Vista+ applications const QSettings defaultAssociation(QLatin1String("HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\FileExts\\.") + suffix, QSettings::NativeFormat); QString defaultApplication(defaultAssociation.value(QLatin1String("."), QString()).toString()); QStringList associations; if (defaultApplication.isEmpty()) { const QSettings defaultAssociation(QLatin1String("HKEY_LOCAL_MACHINE\\Software\\Classes\\.") + suffix, QSettings::NativeFormat); defaultApplication = defaultAssociation.value(QLatin1String("."), QString()).toString(); } if (!defaultApplication.isEmpty()) { associations.append(defaultApplication); } const QSettings modernAssociations(QLatin1String("HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\FileExts\\.") + suffix + QLatin1String("\\OpenWithProgids"), QSettings::NativeFormat); associations.append(modernAssociations.childKeys()); associations.removeAt(associations.indexOf(QLatin1String("."))); associations.removeDuplicates(); for (int i = 0; i < associations.count(); ++i) { const QString value(associations.at(i)); if (m_registrationIdentifier == value) { continue; } ApplicationInformation information; const QSettings applicationPath(QLatin1String("HKEY_LOCAL_MACHINE\\Software\\Classes\\") + value + QLatin1String("\\shell\\open\\command"), QSettings::NativeFormat); information.command = applicationPath.value(QLatin1String("."), QString()).toString().remove(QLatin1Char('"')); if (information.command.contains(QLatin1String("explorer.exe"), Qt::CaseInsensitive)) { information.command = information.command.left(information.command.indexOf(QLatin1String(".exe"), 0, Qt::CaseInsensitive) + 4); information.command += " %1"; } if (information.command.isEmpty()) { Console::addMessage(tr("Failed to load a valid application path for MIME type %1: %2").arg(suffix).arg(value), OtherMessageCategory, ErrorMessageLevel); continue; } getApplicationInformation(information); applications.append(information); } // Win XP applications const QSettings legacyAssociations(QLatin1String("HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\FileExts\\.") + suffix + QLatin1String("\\OpenWithList"), QSettings::NativeFormat); const QString order(legacyAssociations.value(QLatin1String("MRUList"), QString()).toString()); const QString applicationFileName(QFileInfo(QCoreApplication::applicationFilePath()).fileName()); associations = legacyAssociations.childKeys(); associations.removeAt(associations.indexOf(QLatin1String("MRUList"))); for (int i = 0; i < associations.count(); ++i) { ApplicationInformation information; const QString value(legacyAssociations.value(order.at(i)).toString()); if (applicationFileName == value) { continue; } const QSettings applicationPath(QLatin1String("HKEY_CURRENT_USER\\SOFTWARE\\Classes\\Applications\\") + value + QLatin1String("\\shell\\open\\command"), QSettings::NativeFormat); information.command = applicationPath.value(QLatin1String("."), QString()).toString().remove(QLatin1Char('"')); if (information.command.isEmpty()) { const QSettings applicationPath(QLatin1String("HKEY_LOCAL_MACHINE\\SOFTWARE\\Classes\\Applications\\") + value + QLatin1String("\\shell\\open\\command"), QSettings::NativeFormat); information.command = applicationPath.value(QLatin1String("."), QString()).toString().remove(QLatin1Char('"')); if (information.command.isEmpty()) { const QSettings applicationPath(QLatin1String("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\") + value, QSettings::NativeFormat); information.command = applicationPath.value(QLatin1String("."), QString()).toString(); if (!information.command.isEmpty()) { information.command.append(QLatin1String(" %1")); } else { Console::addMessage(tr("Failed to load a valid application path for MIME type %1: %2").arg(suffix).arg(value), OtherMessageCategory, ErrorMessageLevel); continue; } } } getApplicationInformation(information); bool exclude(false); for (int j = 0; j < applications.count(); ++j) { if (applications.at(j).name == information.name) { exclude = true; break; } } if (!exclude) { applications.append(information); } } m_cleanupTimer = startTimer(5 * 60000); return applications; }