Re: KFileItem optimization
Jakub Stachowski <[email protected]> Sat, 3 Jan 2009 16:45:02 +0100
| Newsgroups | gmane.comp.kde.devel.optimize |
|---|---|
| Message-ID | <[email protected]> |
--Boundary-00=_+f4XJl+obIYPtwM
Content-Type: multipart/alternative;
boundary="Boundary-00=_+f4XJDcH11nD15Y"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
--Boundary-00=_+f4XJDcH11nD15Y
Content-Type: text/plain;
charset="utf-8"
Content-Transfer-Encoding: quoted-printable
That actually is copy/paste error which compiles only by accident
Attached fixed patch.
Dnia Saturday 03 January 2009, Ingo Kl=C3=B6cker napisa=C5=82:
> Hi,
>
> I cannot comment on the rest of your changes, but the following doesn't
> make much sense. Even if it works it's so obfuscated that it should be
> written in another way.
>
> On Saturday 03 January 2009, Jakub Stachowski wrote:
> > @@ -938,7 +938,7 @@
> > =C2=A0 =C2=A0 =C2=A0if ( !d->m_bIsLocalUrl )
> > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return false;
> > =C2=A0
> > - =C2=A0 =C2=A0if ( mimetype() =3D=3D "application/x-desktop")
> > + =C2=A0 =C2=A0if ( mimetype() =3D=3D "application/x-desktop",
> > KMimeType::DontResolveAlias) return true;
> > =C2=A0
> > =C2=A0 =C2=A0 =C2=A0// Executable, shell script ... ?
>
> Regards,
> Ingo
--Boundary-00=_+f4XJDcH11nD15Y
Content-Type: text/html;
charset="utf-8"
Content-Transfer-Encoding: quoted-printable
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-=
html40/strict.dtd"><html><head><meta name=3D"qrichtext" content=3D"1" /><st=
yle type=3D"text/css">p, li { white-space: pre-wrap; }</style></head><body =
style=3D" font-family:'Sans Serif'; font-size:10pt; font-weight:400; font-s=
tyle:normal;">That actually is copy/paste error which compiles only by acci=
dent<br>
Attached fixed patch.<br>
<p style=3D"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; ma=
rgin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-u=
ser-state:0;"><br></p><p style=3D"-qt-paragraph-type:empty; margin-top:0px;=
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; =
text-indent:0px; -qt-user-state:0;"><br></p>Dnia Saturday 03 January 2009, =
Ingo Kl=C3=B6cker napisa=C5=82:<br>
> Hi,<br>
><br>
> I cannot comment on the rest of your changes, but the following doesn'=
t<br>
> make much sense. Even if it works it's so obfuscated that it should be=
<br>
> written in another way.<br>
><br>
> On Saturday 03 January 2009, Jakub Stachowski wrote:<br>
> > @@ -938,7 +938,7 @@<br>
> > =C2=A0 =C2=A0 =C2=A0if ( !d->m_bIsLocalUrl )<br>
> > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return false;<br>
> > =C2=A0<br>
> > - =C2=A0 =C2=A0if ( mimetype() =3D=3D "application/x-desktop")<br>
> > + =C2=A0 =C2=A0if ( mimetype() =3D=3D "application/x-desktop",<br>
> > KMimeType::DontResolveAlias) return true;<br>
> > =C2=A0<br>
> > =C2=A0 =C2=A0 =C2=A0// Executable, shell script ... ?<br>
><br>
> Regards,<br>
> Ingo<br>
<p style=3D"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; ma=
rgin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-u=
ser-state:0;"><br></p><p style=3D"-qt-paragraph-type:empty; margin-top:0px;=
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; =
text-indent:0px; -qt-user-state:0;"><br></p></body></html>
--Boundary-00=_+f4XJDcH11nD15Y--
--Boundary-00=_+f4XJl+obIYPtwM
Content-Type: text/x-patch;
charset="UTF-8";
name="kfileitem2.patch"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="kfileitem2.patch"
Index: kio/kio/kfileitem.cpp
===================================================================
--- kio/kio/kfileitem.cpp (wersja 902836)
+++ kio/kio/kfileitem.cpp (kopia robocza)
@@ -673,7 +673,7 @@
KUrl url = mostLocalUrl(isLocalUrl);
KMimeType::Ptr mime = mimeTypePtr();
- if (isLocalUrl && mime->is("application/x-desktop")) {
+ if (isLocalUrl && mime->is("application/x-desktop", KMimeType::DontResolveAlias)) {
KDesktopFile cfg( url.path() );
QString comment = cfg.desktopGroup().readEntry( "Comment" );
if (!comment.isEmpty())
@@ -739,7 +739,7 @@
KUrl url = mostLocalUrl(isLocalUrl);
KMimeType::Ptr mime = mimeTypePtr();
- if (isLocalUrl && mime->is("application/x-desktop")) {
+ if (isLocalUrl && mime->is("application/x-desktop", KMimeType::DontResolveAlias)) {
d->m_iconName = iconFromDesktopFile(url.path());
if (!d->m_iconName.isEmpty()) {
d->m_useIconNameCache = d->m_bMimeTypeKnown;
@@ -1396,6 +1396,6 @@
return false;
// return true if desktop file
- return determineMimeType()->is("application/x-desktop");
+ return determineMimeType()->is("application/x-desktop", KMimeType::DontResolveAlias);
}
Index: kdecore/services/kmimetype.cpp
===================================================================
--- kdecore/services/kmimetype.cpp (wersja 902836)
+++ kdecore/services/kmimetype.cpp (kopia robocza)
@@ -597,9 +597,9 @@
return QString();
}
-bool KMimeTypePrivate::inherits(KMimeType::Ptr mime) const
+bool KMimeTypePrivate::inherits(const QString& mime) const
{
- if (mime && m_strName == mime->d_func()->m_strName) {
+ if (m_strName == mime) {
return true;
}
foreach( const QString& parent, parentMimeTypes() ) {
@@ -612,15 +612,23 @@
return false;
}
-bool KMimeType::is( const QString& mimeTypeName ) const
+bool KMimeType::is( const QString& mimeTypeName, FindByNameOption options ) const
{
Q_D(const KMimeType);
if (name() == mimeTypeName)
return true;
- KMimeType::Ptr mime = KMimeTypeFactory::self()->findMimeTypeByName(mimeTypeName, KMimeType::ResolveAliases);
- return d->inherits(mime);
+ if (options == ResolveAliases) {
+ KMimeType::Ptr mime = KMimeTypeFactory::self()->findMimeTypeByName(mimeTypeName, KMimeType::ResolveAliases);
+ return mime ? d->inherits(mime->d_func()->m_strName) : false;
+ } else
+ return d->inherits(mimeTypeName);
}
+bool KMimeType::is( const QString& mimeTypeName ) const
+{
+ return is(mimeTypeName, ResolveAliases);
+}
+
QStringList KMimeType::parentMimeTypes() const
{
Q_D(const KMimeType);
Index: kdecore/services/kmimetype_p.h
===================================================================
--- kdecore/services/kmimetype_p.h (wersja 902836)
+++ kdecore/services/kmimetype_p.h (kopia robocza)
@@ -49,7 +49,7 @@
return icon;
}
- bool inherits(KMimeType::Ptr mime) const;
+ bool inherits(const QString& mime) const;
QString fallbackParent() const;
QStringList parentMimeTypes() const;
void collectParentMimeTypes(QStringList&) const;
Index: kdecore/services/kmimetype.h
===================================================================
--- kdecore/services/kmimetype.h (wersja 902836)
+++ kdecore/services/kmimetype.h (kopia robocza)
@@ -328,8 +328,14 @@
* Do not use name()=="somename" anymore, to check for a given mimetype.
* For mimetype inheritance to work, use is("somename") instead.
* Warning, do not use inherits(), that's the servicetype inheritance concept!
- * is() also supports mimetype aliases.
+ * Disabling support for aliases makes this function much faster.
+ * @since 4.2
*/
+ bool is( const QString& mimeTypeName, FindByNameOption options ) const;
+
+ /**
+ * Works like is(mimeTypeName, ResolveAliases)
+ */
bool is( const QString& mimeTypeName ) const;
/**
Index: kdecore/tests/kmimetypetest.cpp
===================================================================
--- kdecore/tests/kmimetypetest.cpp (wersja 902836)
+++ kdecore/tests/kmimetypetest.cpp (kopia robocza)
@@ -514,6 +514,10 @@
QSKIP("kdelibs not installed", SkipAll);
QVERIFY(mrml->is("text/plain"));
QVERIFY(mrml->is("application/octet-stream"));
+
+ const KMimeType::Ptr svg=KMimeType::mimeType("image/svg+xml");
+ QVERIFY(svg->is("text/xml"));
+ QVERIFY(!svg->is("text/xml",KMimeType::DontResolveAlias));
}
// Helper method for all the trader tests
--Boundary-00=_+f4XJl+obIYPtwM
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
_______________________________________________
Kde-optimize mailing list
[email protected]
https://mail.kde.org/mailman/listinfo/kde-optimize
--Boundary-00=_+f4XJl+obIYPtwM--