本文整理汇总了C++中kmimetype::Ptr::name方法的典型用法代码示例。如果您正苦于以下问题:C++ Ptr::name方法的具体用法?C++ Ptr::name怎么用?C++ Ptr::name使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类kmimetype::Ptr
的用法示例。
在下文中一共展示了Ptr::name方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: testFindByUrl
void KMimeTypeTest::testFindByUrl()
{
// Tests with local files are already done in testFindByPath,
// here we test for remote urls only.
KMimeType::Ptr mime;
mime = KMimeType::findByUrl(KUrl("http://foo/bar.png"));
QVERIFY(mime);
QCOMPARE(mime->name(), QString::fromLatin1("application/octet-stream")); // HTTP can't know before downloading
mime = KMimeType::findByUrl(KUrl("http://foo/s0/"));
QCOMPARE(mime->name(), QString::fromLatin1("application/octet-stream")); // HTTP can't know before downloading
#if 0 // no such logic in QMimeType, we get default mimetype, KRun will figure it out
if (!KProtocolInfo::isKnownProtocol(KUrl("man:/"))) {
QSKIP("man protocol not installed");
}
mime = KMimeType::findByUrl(KUrl("man:/ls"));
QVERIFY(mime);
QCOMPARE(mime->name(), QString::fromLatin1("text/html"));
mime = KMimeType::findByUrl(KUrl("man:/ls/"));
QVERIFY(mime);
QCOMPARE(mime->name(), QString::fromLatin1("text/html"));
#endif
mime = KMimeType::findByUrl(KUrl("fish://host/test1")); // like fish does, to test for known extensions
QVERIFY(mime);
QCOMPARE(mime->name(), QString::fromLatin1("application/octet-stream"));
}
示例2: testFindByUrl
void KMimeTypeTest::testFindByUrl()
{
// Tests with local files are already done in testFindByPath,
// here we test for remote urls only.
KMimeType::Ptr mime;
QVERIFY( KProtocolInfo::isKnownProtocol(KUrl("http:/")) );
QVERIFY( KProtocolInfo::isKnownProtocol(KUrl("file:/")) );
mime = KMimeType::findByUrl( KUrl("http://foo/bar.png") );
QVERIFY( mime );
QCOMPARE( mime->name(), QString::fromLatin1( "application/octet-stream" ) ); // HTTP can't know before downloading
if ( !KProtocolInfo::isKnownProtocol(KUrl("man:/")) )
QSKIP( "man protocol not installed", SkipSingle );
mime = KMimeType::findByUrl( KUrl("man:/ls") );
QVERIFY( mime );
QCOMPARE( mime->name(), QString::fromLatin1("text/html") );
mime = KMimeType::findByUrl( KUrl("man:/ls/") );
QVERIFY( mime );
QCOMPARE( mime->name(), QString::fromLatin1("text/html") );
mime = KMimeType::findByUrl(KUrl("fish://host/test1")); // like fish does, to test for known extensions
QVERIFY(mime);
QCOMPARE(mime->name(), QString::fromLatin1("application/octet-stream"));
}
示例3: testAllMimeTypes
void KMimeTypeTest::testAllMimeTypes()
{
const KMimeType::List lst = KMimeType::allMimeTypes(); // does NOT include aliases
QVERIFY(!lst.isEmpty());
for (KMimeType::List::ConstIterator it = lst.begin();
it != lst.end(); ++it) {
const KMimeType::Ptr mime = (*it);
const QString name = mime->name();
//qDebug( "%s", qPrintable( name ) );
QVERIFY(!name.isEmpty());
QCOMPARE(name.count('/'), 1);
const KMimeType::Ptr lookedupMime = KMimeType::mimeType(name);
QVERIFY(lookedupMime); // not null
if (name != "application/vnd.ms-word" && name != "application/x-pkcs7-certificates"
&& name != "application/x-x509-ca-cert"
&& name != "application/x-vnd.kde.kexi" // due to /usr/share/mime/packages/kde.xml from KDE4
&& name != "application/x-kexiproject-sqlite" // due to /usr/share/mime/packages/kde.xml from KDE4
&& name != "application/vnd.sun.xml.base" // libreoffice.xml messing things up yet again
) {
QCOMPARE(lookedupMime->name(), name);
// if this fails, you have an alias defined as a real mimetype too!
//
// Note: this also happens with x-win-lnk when your kde.xml defines it as an alias, while
// /usr/share/mime/packages/kde.xml defines it as a real mimetype. This is a false positive,
// remove one of the kde.xml files.
//
// It also happens with application/x-pkcs7-certificates due to
// /usr/share/mime/packages/gcr-crypto-types.xml. Remove that file and run
// `update-mime-database /usr/share/mime`.
}
}
}
示例4: matchingMimeActions
void URLGrabber::matchingMimeActions(const QString& clipData)
{
KUrl url(clipData);
KConfigGroup cg(KGlobal::config(), "Actions");
if(!cg.readEntry("EnableMagicMimeActions",true)) {
//kDebug() << "skipping mime magic due to configuration";
return;
}
if(!url.isValid()) {
//kDebug() << "skipping mime magic due to invalid url";
return;
}
if(url.isRelative()) { //openinng a relative path will just not work. what path should be used?
//kDebug() << "skipping mime magic due to relative url";
return;
}
if(url.isLocalFile()) {
if ( clipData == "//") {
//kDebug() << "skipping mime magic due to C++ comment //";
return;
}
if(!QFile::exists(url.toLocalFile())) {
//kDebug() << "skipping mime magic due to nonexistent localfile";
return;
}
}
// try to figure out if clipData contains a filename
KMimeType::Ptr mimetype = KMimeType::findByUrl( url, 0,
false,
true /*fast mode*/ );
// let's see if we found some reasonable mimetype.
// If we do we'll populate menu with actions for apps
// that can handle that mimetype
// first: if clipboard contents starts with http, let's assume it's "text/html".
// That is even if we've url like "http://www.kde.org/somescript.pl", we'll
// still treat that as html page, because determining a mimetype using kio
// might take a long time, and i want this function to be quick!
if ( ( clipData.startsWith( QLatin1String("http://") ) || clipData.startsWith( QLatin1String("https://") ) )
&& mimetype->name() != "text/html" )
{
// use a fake path to create a mimetype that corresponds to "text/html"
mimetype = KMimeType::findByPath( "/tmp/klipper.html", 0, true /*fast mode*/ );
}
if ( !mimetype->isDefault() ) {
ClipAction* action = new ClipAction( QString(), mimetype->comment() );
KService::List lst = KMimeTypeTrader::self()->query( mimetype->name(), "Application" );
foreach( const KService::Ptr &service, lst ) {
QHash<QChar,QString> map;
map.insert( 'i', "--icon " + service->icon() );
map.insert( 'c', service->name() );
QString exec = service->exec();
exec = KMacroExpander::expandMacros( exec, map ).trimmed();
action->addCommand( ClipCommand( exec, service->name(), true, service->icon() ) );
}
示例5: slotClicked
void ProjectView::slotClicked(QTreeWidgetItem *item)
{
if(!item) {
item = currentItem();
}
ProjectViewItem *itm = static_cast<ProjectViewItem*>(item);
if(itm) {
if(itm->type() == KileType::File) {
emit(fileSelected(itm->url()));
}
else if(itm->type() == KileType::ProjectItem) {
emit(fileSelected(itm->projectItem()));
}
else if(itm->type() != KileType::Folder) {
// don't open project configuration files (*.kilepr)
if(itm->url().toLocalFile().right(7) != ".kilepr") {
//determine mimeType and open file with preferred application
KMimeType::Ptr pMime = KMimeType::findByUrl(itm->url());
if(pMime->name().startsWith("text/")) {
emit(fileSelected(itm->url()));
}
else {
KRun::runUrl(itm->url(), pMime->name(), this);
}
}
}
clearSelection();
}
}
示例6: testFindByNameAndContent
void KMimeTypeTest::testFindByNameAndContent()
{
KMimeType::Ptr mime;
QByteArray textData = "Hello world";
// textfile -> text/plain. No extension -> mimetype is found from the contents.
mime = KMimeType::findByNameAndContent("textfile", textData);
QVERIFY(mime);
QCOMPARE(mime->name(), QString::fromLatin1("text/plain"));
// textfile.foo -> text/plain. Unknown extension -> mimetype is found from the contents.
mime = KMimeType::findByNameAndContent("textfile.foo", textData);
QVERIFY(mime);
QCOMPARE(mime->name(), QString::fromLatin1("text/plain"));
// textfile.doc -> text/plain. We added this to the mimetype database so that it can be handled.
mime = KMimeType::findByNameAndContent("textfile.doc", textData);
QVERIFY(mime);
QCOMPARE(mime->name(), QString::fromLatin1("text/plain"));
// mswordfile.doc -> application/msword. Found by contents, because of the above case.
// Note that it's application/msword, not application/vnd.ms-word, since it's the former that is registered to IANA.
QByteArray mswordData = "\320\317\021\340\241\261\032\341";
mime = KMimeType::findByNameAndContent("mswordfile.doc", mswordData);
QVERIFY(mime);
if (mime->name() == "application/vnd.ms-word") { // this comes from /usr/share/mime/packages/libreoffice.xml....
QEXPECT_FAIL("", "libreoffice.xml is messing with us", Continue);
}
// If you get powerpoint instead, then you're hit by https://bugs.freedesktop.org/show_bug.cgi?id=435 - upgrade to shared-mime-info >= 0.22
QCOMPARE(mime->name(), QString::fromLatin1("application/msword"));
// excelfile.xls -> application/vnd.ms-excel. Found by extension.
mime = KMimeType::findByNameAndContent("excelfile.xls", mswordData /*same magic*/);
QVERIFY(mime);
QCOMPARE(mime->name(), QString::fromLatin1("application/vnd.ms-excel"));
// textfile.xls -> application/vnd.ms-excel. Found by extension. User shouldn't rename a text file to .xls ;)
mime = KMimeType::findByNameAndContent("textfile.xls", textData);
QVERIFY(mime);
QCOMPARE(mime->name(), QString::fromLatin1("application/vnd.ms-excel"));
#if 0 // needs shared-mime-info >= 0.20
QByteArray tnefData = "\x78\x9f\x3e\x22";
mime = KMimeType::findByNameAndContent("tneffile", mswordData);
QVERIFY(mime);
QCOMPARE(mime->name(), QString::fromLatin1("application/vnd.ms-tnef"));
#endif
QByteArray pdfData = "%PDF-";
mime = KMimeType::findByNameAndContent("foo", pdfData);
QVERIFY(mime);
QCOMPARE(mime->name(), QString::fromLatin1("application/pdf"));
// High-priority rule (80)
QByteArray phpData = "<?php";
mime = KMimeType::findByNameAndContent("foo", phpData);
QVERIFY(mime);
QCOMPARE(mime->name(), QString::fromLatin1("application/x-php"));
}
示例7: testMimeTypeParent
void KMimeTypeTest::testMimeTypeParent()
{
// All file-like mimetypes inherit from octet-stream
const KMimeType::Ptr wordperfect = KMimeType::mimeType("application/vnd.wordperfect");
QVERIFY(wordperfect);
QCOMPARE(wordperfect->parentMimeTypes().join(","), QString("application/octet-stream"));
QVERIFY(wordperfect->is("application/octet-stream"));
QVERIFY(KMimeType::mimeType("image/svg+xml-compressed")->is("application/x-gzip"));
// Check that msword derives from ole-storage [it didn't in 0.20, but we added it to kde.xml]
const KMimeType::Ptr msword = KMimeType::mimeType("application/msword");
QVERIFY(msword);
const KMimeType::Ptr olestorage = KMimeType::mimeType("application/x-ole-storage");
QVERIFY(olestorage);
QVERIFY(msword->is(olestorage->name()));
QVERIFY(msword->is("application/octet-stream"));
const KMimeType::Ptr directory = KMimeType::mimeType("inode/directory");
QVERIFY(directory);
QCOMPARE(directory->parentMimeTypes().count(), 0);
QVERIFY(!directory->is("application/octet-stream"));
// Check that text/x-patch knows that it inherits from text/plain (it says so explicitly)
const KMimeType::Ptr plain = KMimeType::mimeType("text/plain");
const KMimeType::Ptr derived = KMimeType::mimeType("text/x-patch");
QVERIFY(derived);
QCOMPARE(derived->parentMimeTypes().join(","), plain->name());
QVERIFY(derived->is("text/plain"));
QVERIFY(derived->is("application/octet-stream"));
// Check that application/x-shellscript inherits from application/x-executable
// (Otherwise KRun cannot start shellscripts...)
// This is a test for multiple inheritance...
const KMimeType::Ptr shellscript = KMimeType::mimeType("application/x-shellscript");
QVERIFY(shellscript);
QVERIFY(shellscript->is("text/plain"));
QVERIFY(shellscript->is("application/x-executable"));
const QStringList shellParents = shellscript->parentMimeTypes();
QVERIFY(shellParents.contains("text/plain"));
QVERIFY(shellParents.contains("application/x-executable"));
QCOMPARE(shellParents.count(), 2); // only the above two
const QStringList allShellParents = shellscript->allParentMimeTypes();
QVERIFY(allShellParents.contains("text/plain"));
QVERIFY(allShellParents.contains("application/x-executable"));
QVERIFY(allShellParents.contains("application/octet-stream"));
// Must be least-specific last, i.e. breadth first.
QCOMPARE(allShellParents.last(), QString("application/octet-stream"));
// Check that text/x-mrml knows that it inherits from text/plain (implicitly)
const KMimeType::Ptr mrml = KMimeType::mimeType("text/x-mrml");
if (!mrml) {
QSKIP("kdelibs not installed");
}
QVERIFY(mrml->is("text/plain"));
QVERIFY(mrml->is("application/octet-stream"));
}
示例8: openFile
void FileManager::openFile( const QString& fileName, const QString& name, const QString& title, const QString& partName, const QVariantList& partParams )
{
if( fileName.isEmpty() )
return;
QString fullName = name.isEmpty() ? KUrl( fileName ).fileName() : name;
QString fullTitle = title.isEmpty() ? fullName : title;
if( d->parts.contains( fullName ) )
{
emit newPart( fullName, fullTitle );
return;
}
KMimeType::Ptr mime = KMimeType::findByPath( fileName );
KParts::ReadOnlyPart* part = 0;
KService::List parts;
if( !partName.isEmpty() )
{
KService::Ptr service = KService::serviceByDesktopName( partName );
if( !service.isNull() )
parts.append( service );
}
if( parts.count() == 0 )
{
parts.append( KMimeTypeTrader::self()->query( mime->name(), "KParts/ReadWritePart" ) );
parts.append( KMimeTypeTrader::self()->query( mime->name(), "KParts/ReadOnlyPart" ) );
if( mime->name().contains( "audio" ) && parts.count() == 0 )
parts.append( KService::serviceByStorageId( "dragonplayer_part.desktop" ) );
}
if( parts.count() > 0 )
{
part = parts.first()->createInstance<KParts::ReadWritePart>( 0, partParams );
if( !part )
part = parts.first()->createInstance<KParts::ReadOnlyPart>( 0, partParams );
}
if( part )
{
// Add the part if it is found
KUrl url( fileName );
part->openUrl( url );
d->parts.insert( fullName, part );
d->partManager->addPart( part, true );
emit newPart( fullName, fullTitle );
return;
}
// There really is no part that can be used.
// Instead, just open it in an external application.
// KRun* runner = new KRun( KUrl( fileName ), qApp->activeWindow() );
}
示例9: testFindByPathWithContent
// All the simple tests for findByPath are in testFindByPathUsingFileName_data.
// In here we do the tests that need some content in a temporary file.
void KMimeTypeTest::testFindByPathWithContent()
{
KMimeType::Ptr mime;
// Test a real PDF file.
// If we find x-matlab because it starts with '%' then we are not ordering by priority.
KTemporaryFile tempFile;
QVERIFY(tempFile.open());
QString tempFileName = tempFile.fileName();
tempFile.write("%PDF-");
tempFile.close();
mime = KMimeType::findByPath( tempFileName );
QVERIFY( mime );
QCOMPARE( mime->name(), QString::fromLatin1( "application/pdf" ) );
// fast mode cannot find the mimetype
mime = KMimeType::findByPath( tempFileName, 0, true );
QVERIFY( mime );
QCOMPARE(mime->name(), QString::fromLatin1("application/octet-stream"));
// Test the case where the extension doesn't match the contents: extension wins
{
KTemporaryFile txtTempFile;
txtTempFile.setSuffix(".txt");
QVERIFY(txtTempFile.open());
txtTempFile.write("%PDF-");
QString txtTempFileName = txtTempFile.fileName();
txtTempFile.close();
mime = KMimeType::findByPath( txtTempFileName );
QVERIFY( mime );
QCOMPARE( mime->name(), QString::fromLatin1( "text/plain" ) );
// fast mode finds the same
mime = KMimeType::findByPath( txtTempFileName, 0, true );
QVERIFY( mime );
QCOMPARE( mime->name(), QString::fromLatin1( "text/plain" ) );
}
// Now the case where extension differs from contents, but contents has >80 magic rule
// XDG spec says: contents wins. But we can't sniff all files...
{
KTemporaryFile txtTempFile;
txtTempFile.setSuffix(".txt");
QVERIFY(txtTempFile.open());
txtTempFile.write("<smil");
QString txtTempFileName = txtTempFile.fileName();
txtTempFile.close();
mime = KMimeType::findByPath( txtTempFileName );
QVERIFY( mime );
QCOMPARE( mime->name(), QString::fromLatin1( "text/plain" ) );
}
}
示例10: installNewTheme
void ThemesDlg::installNewTheme(const QString &newTheme)
{
// The created signal is already emitted before the file is
// completely written, so wait until the new theme exists
KMimeType::Ptr result;
do {
result = KMimeType::findByUrl(newTheme);
} while (result->name() == "application/x-zerosize");
if (result->name() == "application/x-gzip" ||
result->name() == "application/x-compressed-tar" ||
result->name() == "application/x-bzip" ||
result->name() == "application/x-bzip" ||
result->name() == "application/x-bzip-compressed-tar" ||
result->name() == "application/x-bzip-compressed-tar2" ||
result->name() == "application/x-tar" ||
result->name() == "application/x-tarz") {
kDebug() << "SKNewStuff::install() gzip/bzip2 mimetype encountered" << endl;
KTar archive(newTheme);
if (!archive.open(QIODevice::ReadOnly)) {
return;
}
QString destDir = KStandardDirs::locateLocal("appdata", "themes/");
const KArchiveDirectory *archiveDir = archive.directory();
archiveDir->copyTo(destDir);
//Add the theme to the Theme Dialog
addThemeToDialog(archiveDir, destDir);
archive.close();
} else if (result->name() == "application/zip" ||
result->name() == "application/x-superkaramba") {
kDebug() << "SKNewStuff::install() zip mimetype encountered" << endl;
//TODO: write a routine to check if this is a valid .skz file
//otherwise we need to unpack it like it is an old theme that was packaged
//as a .zip instead of .bz2 or .tar.gz
//Add the skz theme to the Theme Dialog
addSkzThemeToDialog(newTheme);
} else if (result->name() == "plain/text") {
kDebug() << "SKNewStuff::install() plain text" << endl;
} else if (result->name() == "text/html" ||
result->name() == "application/x-php") {
kDebug() << "SKNewStuff::install() text/html" << endl;
KRun::runUrl(newTheme, "text/html", 0);
} else {
kDebug() << "SKNewStuff::install() Error no compatible mimetype encountered to install" << endl;
return;
}
}
示例11: setMimeFilter
void KFileFilterCombo::setMimeFilter(const QStringList &types, const QString &defaultType)
{
clear();
filters.clear();
QString delim = QString::fromLatin1(", ");
d->hasAllSupportedFiles = false;
m_allTypes = defaultType.isEmpty() && (types.count() > 1);
QString allComments, allTypes;
int i = 0;
for(QStringList::ConstIterator it = types.begin(); it != types.end(); ++it, ++i)
{
if(m_allTypes && it != types.begin())
{
allComments += delim;
allTypes += ' ';
}
kdDebug(kfile_area) << *it << endl;
KMimeType::Ptr type = KMimeType::mimeType(*it);
filters.append(type->name());
if(m_allTypes)
{
allTypes += type->name();
allComments += type->comment();
}
insertItem(type->comment());
if(type->name() == defaultType)
setCurrentItem(i);
}
if(m_allTypes)
{
if(i < 3) // show the mime-comments of at max 3 types
insertItem(allComments, 0);
else
{
insertItem(i18n("All Supported Files"), 0);
d->hasAllSupportedFiles = true;
}
filters.prepend(allTypes);
}
d->lastFilter = currentText();
d->isMimeFilter = true;
}
示例12: setData
void BinaryWidget::setData( const QByteArray &data )
{
delete mMainWidget;
QString mimetype;
KMimeType::Ptr mime = KMimeType::findByContent( data );
if ( mime && !mime->isDefault() )
mimetype = mime->name();
if ( !mimetype.isEmpty() ) {
KParts::ReadOnlyPart *part = KParts::ComponentFactory::createPartInstanceFromQuery<KParts::ReadOnlyPart>( mimetype, QString(), this, this );
if ( part ) {
KTemporaryFile file;
file.setAutoRemove(false);
file.open();
file.write( data );
file.flush();
part->openUrl( KUrl( file.fileName() ) );
mMainWidget = part->widget();
} else {
mMainWidget = new QLabel( i18n( "No part found for visualization of mimetype %1", mimetype ), this );
}
mData = data;
mSaveButton->setEnabled( true );
} else {
mMainWidget = new QLabel( i18n( "Got data of unknown mimetype" ), this );
}
mLayout->addWidget( mMainWidget, 0, 0, 3, 1);
mMainWidget->show();
}
示例13: slotFixOpenWithMenu
void KateFileTree::slotFixOpenWithMenu()
{
QMenu *menu = (QMenu*)sender();
menu->clear();
KTextEditor::Document *doc = model()->data(m_indexContextMenu, KateFileTreeModel::DocumentRole).value<KTextEditor::Document *>();
if (!doc) return;
// get a list of appropriate services.
KMimeType::Ptr mime = KMimeType::mimeType(doc->mimeType());
//kDebug(13001) << "mime type: " << mime->name();
QAction *a = 0;
KService::List offers = KMimeTypeTrader::self()->query(mime->name(), "Application");
// for each one, insert a menu item...
for(KService::List::Iterator it = offers.begin(); it != offers.end(); ++it)
{
KService::Ptr service = *it;
if (service->name() == "Kate") continue;
a = menu->addAction(KIcon(service->icon()), service->name());
a->setData(service->entryPath());
}
// append "Other..." to call the KDE "open with" dialog.
a = menu->addAction(i18n("&Other..."));
a->setData(QString());
}
示例14: mimeComment
QString KFileItem::mimeComment() const
{
const QString displayType = d->m_entry.stringValue( KIO::UDSEntry::UDS_DISPLAY_TYPE );
if (!displayType.isEmpty())
return displayType;
KMimeType::Ptr mType = determineMimeType();
bool isLocalUrl;
KUrl url = mostLocalUrl(isLocalUrl);
KMimeType::Ptr mime = mimeTypePtr();
// This cannot move to kio_file (with UDS_DISPLAY_TYPE) because it needs
// the mimetype to be determined, which is done here, and possibly delayed...
if (isLocalUrl && mime->is("application/x-desktop")) {
KDesktopFile cfg( url.toLocalFile() );
QString comment = cfg.desktopGroup().readEntry( "Comment" );
if (!comment.isEmpty())
return comment;
}
QString comment = mType->comment( url );
//kDebug() << "finding comment for " << url.url() << " : " << d->m_pMimeType->name();
if (!comment.isEmpty())
return comment;
else
return mType->name();
}
示例15: addFile
bool MPForm::addFile(const QString& name, const QString& path)
{
KMimeType::Ptr ptr = KMimeType::findByUrl(path);
QString mime = ptr->name();
if (mime.isEmpty())
return false;
QFile imageFile(path);
if (!imageFile.open(QIODevice::ReadOnly))
return false;
QByteArray imageData = imageFile.readAll();
//QString file_size = QString::number(imageFile.size());
imageFile.close();
QByteArray str;
str += "--";
str += m_boundary;
str += "\r\n";
str += "Content-Disposition: form-data; filename=\"";
str += QFile::encodeName(name);
str += "\"\r\n";
//str += "Content-Length: ";
//str += file_size.toAscii();
//str += "\r\n";
str += "Content-Type: ";
str += mime.toAscii();
str += "\r\n\r\n";
m_buffer.append(str);
m_buffer.append(imageData);
m_buffer.append("\r\n");
return true;
}