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>
&gt; Hi,<br>
&gt;<br>
&gt; I cannot comment on the rest of your changes, but the following doesn'=
t<br>
&gt; make much sense. Even if it works it's so obfuscated that it should be=
<br>
&gt; written in another way.<br>
&gt;<br>
&gt; On Saturday 03 January 2009, Jakub Stachowski wrote:<br>
&gt; &gt; @@ -938,7 +938,7 @@<br>
&gt; &gt; =C2=A0 =C2=A0 =C2=A0if ( !d-&gt;m_bIsLocalUrl )<br>
&gt; &gt; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0return false;<br>
&gt; &gt; =C2=A0<br>
&gt; &gt; - =C2=A0 =C2=A0if ( mimetype() =3D=3D "application/x-desktop")<br>
&gt; &gt; + =C2=A0 =C2=A0if ( mimetype() =3D=3D "application/x-desktop",<br>
&gt; &gt; KMimeType::DontResolveAlias) return true;<br>
&gt; &gt; =C2=A0<br>
&gt; &gt; =C2=A0 =C2=A0 =C2=A0// Executable, shell script ... ?<br>
&gt;<br>
&gt; Regards,<br>
&gt; 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--